Posted onEdited onInUbuntuWord count in article: 201Reading time ≈1 mins.
[toc]
What’s zoom
Zoom offers communications software that combines video conferencing, online meetings, chat, and mobile collaboration. Zoom can be installed on Windows and Linux desktops and mobile devices.
Zoom’s Linux client allows you to start or join Zoom meetings on Ubuntu, Fedora and many other Linux distributions.
How to install zoom
The following commands would download the Zoom package for Debian system and install it using the apt package manager.
Install wget if not installed
1
sudo apt -y install wget
Download the latest Zoom package
1
wget https://zoom.us/client/latest/zoom_amd64.deb
Install the zoom package
1
sudo apt install ./zoom_amd64.deb
Check zoom is installed successfully
1
apt-cache policy zoom
apt-cache queries and displays available information about installed and installable packages, in which policy shows policy settings. The output information has demonstrated the downloaded package has installed successfully.
Boost.Geometry (aka Generic Geometry Library, GGL), part of collection of the Boost C++ Libraries, defines concepts, primitives and algorithms for solving geometry problems. / Boost.Geometry 用于解决几何问题的概念、原语和算法。
Calculates the buffer (a polygon being the spatial point set collection within a specified maximum distance from a geometry) of a geometry. / 通俗点,在原有形状的外围加上指定距离的边界,形成新的几何形状。
# Star rating support to each article. # To get your ID visit https://widgetpack.com rating: enable: false id: #<app_id> color: fc6423 # ---------------------------------------------------------------
总体而言,NexT 已经默认集成了 WidgetPack 的 Ratingwidget,要启用 Ratingwidget,只需要在 WidgetPack.com 注册后添加站点,获得 ID 后,修改 NexT 主题配置文件 rating 字段内容即可。目前,WidgetPack 对个人用户提供了部分免费功能,可以满足个人博客网站的需求。
什么是 WidgetPack
Widget Pack makes it easy to add website widgets like comments, reviews, rating to your Blog, Online Shop or Website in minutes.
While using this Site, you may need to feed-in personal information that can be used to contact or identify you (“Personal Information”). Personal Information may include, but is not limited to, some unique characteristics that disclose your personality, such as: name, email, photo, likes and dislikes.
WidgetPack web-servers automatically track and store Site usage data. This information is liable to include, but is not limited to, your computer’s IP. Along other sites, WidgetPack also uses “cookies” to collect such information. A cookie is an essential data file that is stored on your computer hard drive for record-keeping purposes allowing saving your registration ID and login password for prospective logins to WidgetPack Site; “session ID cookies” enable certain features of the Site providing authentication, identification of a user session, session contents and some other preferences.
You can tweak your browser by changing its options to stop accepting cookies or to prompt you before accepting a cookie from the websites you visit. If you do not accept cookies, however, you may not be able to use some of the Site’s features or all the functionalities of our services.
intmain(){ int max_int = std::numeric_limits<int>::max(); int min_int = std::numeric_limits<int>::min(); int lowest_int = std::numeric_limits<int>::lowest(); std::cout << "max int is " << max_int << std::endl; std::cout << "min int is " << min_int << std::endl; std::cout << "lowest int is " << lowest_int << std::endl;
// output is // max int is 2147483647 // min int is -2147483648 // lowest int is -2147483648
Two ranges are considered equal if they have the same number of elements and, for every iterator i in the range [first1, last1), *i equals *(first2 + (i - first1)).
要求按位置一致
std::equal should not be used to compare the ranges formed by the iterators from std::unordered_set/map
int const* is equivalent to const int* 指向常量 int 的指针
This means that the variable being declared is a pointer, pointing to a constant integer. Effectively, this implies that the pointer is pointing to a value that should not be changed. Const qualifier doesn’t affect the pointer in this scenario so the pointer is allowed to point to some other address.
int *const 指向 int 的常量指针
This means that the variable being declared is a constant pointer pointing to an integer. Effectively, this implies that the pointer shouldn’t point to some other address. Const qualifier doesn’t affect the value of integer in this scenario so the value being stored in the address is allowed to change.
const int* const is equivalent to int const* const 指向常量 int 的常量指针
This means that the variable being declared is a constant pointer pointing to a constant integer. Effectively, this implies that a constant pointer is pointing to a constant value. Hence, neither the pointer should point to a new address nor the value being pointed to should be changed.
Memory Map
One way to remember the syntax (according to Bjarne Stroustrup) is the spiral rule -
The rule says, start from the name of the variable and move clockwise to the next pointer or type. Repeat until expression ends.
Using this rule, even complex declarations can be decoded like, int ** const is a const pointer to pointer to an int.
以 * 为界, 在 * 前后的 const 可以和同侧的 data type 调换位置,不影响变量表达的含义。
lowest: Returns the lowest finite value representable by the numeric type T, that is, a finite value x such that there is no other finite value y where y < x.
min:For floating-point types with denormalization, min returns the minimum positive normalized value.
也就是说,
如果 T 属于 int 型,則 min 和 lowest 会返回一样的值,皆为该类型的最小值(负数或 0)。
When the criteria for elision of a copy operation are met or would be met save for the fact that the source object is a function parameter, and the object to be copied is designated by an lvalue, overload resolution to select the constructor for the copy is first performed as if the object were designated by an rvalue.
To answer the question in the title, use std::move on a return value when you want it to be moved and it would not get moved anyway. That is:
you want it to be moved, and
it is an lvalue, and
it is not eligible for copy elision, and
it is not the name of a by-value function parameter.
at returns a reference to the element at position n in the vector, which automatically checks whether n is within the bounds of valid elements in the vector, throwing an out_of_range exception if it is not.
operator[] returns a reference to the element at position n in the vector container. Portable programs should never call this function with an argument n that is out of range, since this causes undefined behavior.
operator[] has the same behavior as at, except that vector::at is bound-checked and signals if the requested position is out of range by throwing an out_of_range exception.
It is sometimes helpful to think of optional as a value-and-pointer mixed together. There is a possibly null pointer to an owned buffer of memory that may, or may not hold a copy of the type.
// Just show me the code! // 构造函数初始化列表 (constructor initialize list) ClassA::ClassA(conststd::string& name_in):name_(name_in) { // 只调用了默认构造函数,不会再调用拷贝构造函数。 }
For uniform initialization syntax,大括号初始化 (Brace Initialization) 的潜在问题:
“uniform” is a stretch: there are cases where ambiguity still exists.
This syntax is not exactly intuitive: no other common language uses something like it.
For uniform initialization syntax, we don’t believe in general that the benefits outweigh the drawbacks.
Best Practices for Initialization
Use assignment syntax when initializing directly with the intended literal value (for example: int, float, or std::string values), with smart pointers such as std::shared_ptr, std::unique_ptr, with containers (std::vector, std::map, etc), when performing struct initialization, or doing copy construction.
Use the traditional constructor syntax (with parentheses) when the initialization is performing some active logic, rather than simply composing values together.
Use {} initialization without the = only if the above options don’t compile.
Never mix {}s and auto.
For the language lawyers: prefer copy-initialization over direct-initialization when available, and use parentheses over curly braces when resorting to direct-initialization.
Hemingway makes your writing bold and clear. It’s like a spellchecker, but for style. It makes sure that your reader will focus on your message, not your prose.
nothing to commit, working directory clean The previous cherry-pick is now empty, possibly due to conflict resolution. If you wish to commit it anyway, use:
git commit –allow-empty
It’s exactly what it says: the changes you’re trying to cherry-pick are already wholly already integrated/cherry-picked in the branch you’re on. I.e. the result of the cherry-pick is no changes. You can create an empty commit with the --allow-empty flag to indicate that you attempted to cherry-pick, but there were no changes to pull in.
// You can specifically apply an out-of-date diff or a diff which was never attached to a revision by using this flag. arc patch --diff diff_id --nobranch