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