1、操作符重载
C++可以通过operator
实现重载操作符,格式如下:类型T operator 操作符 ()
,比如重载+
,比如下面这个例子
1 | template<typename T> class A |
1 | // 双检锁方式 |
Flutter最基础的空程序
官方用法: https://docs.phpcomposer.com/01-basic-usage.html
安装包:https://getcomposer.org/Composer-Setup.exe
在项目中创建 composer.json
,填入对应的包名,然后命令行输入:php composer.phar install
安装。
实测无法使用相对路径,通过绝对路径
php C:\ProgramData\ComposerSetup\bin\composer.phar install
来安装。
文件示例:
1
2
3
4
5
6 > {
> "require": {
> "riverslei/payment": "*"
> }
> }
>
一行命令的格式:
1 | composer require xhat/payjs |
为什么需要三次握手,两次不行吗?
弄清这个问题,我们需要先弄明白三次握手的目的是什么,能不能只用两次握手来达到同样的目的。
第一次握手:客户端发送网络包,服务端收到了。 这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。
第二次握手:服务端发包,客户端收到了。 这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常。
第三次握手:客户端发包,服务端收到了。 这样服务端就能得出结论:客户端的接收、发送能力正常,服务器自己的发送、接收能力也正常。
因此,需要三次握手才能确认双方的接收与发送能力是否正常。
在做LazyKey的时候,遇见了一个场景,光标在括号右边,需要获取改括号前面的函数名。虽然用堆栈写个语法分析器很方便,但是我就想着用正则表达式是不是更简单?
1 | SELECT |
VSCode打开文件夹,新建.vscode
文件夹(资源管理器不允许用户建立.
开头的文件夹)
在平时编程中,构建对象最常用的方式是 new 一个对象。乍一看这种做法没什么不好,而实际上这也属于一种硬编码。每 new 一个对象,相当于调用者多知道了一个类,增加了类与类之间的联系,不利于程序的松耦合。其实构建过程可以被封装起来,工厂模式便是用于封装对象的设计模式。
单例模式非常常见,某个对象全局只需要一个实例时,就可以使用单例模式。它的优点也显而易见:
单例模式有两种实现方式:饿汉式和懒汉式。
moo
cowsay 你要说的话
xcowsay 你要说的话
sl
蒸汽机oneko
小猫cmatrix
数据流雨aafire
代码火xeyes
两只眼睛echo "要说的话" | pv -qL 10
toilet Hello!
字母组成文字图toilet -f mono12 -F metal Hello!
另一个风格bb
外太空音乐ASCIIquarium
水族箱asciiview 图片路径
字符图(需要PNG图标)you-get "网址"
下载网址中的视频比如针对一些sql查询较慢,更新不频繁的数据进行缓存。
1 |
|
gcc和g++都是GNU(组织)的一个编译器。
误区一:gcc只能编译c代码,g++只能编译c++代码
两者都可以,但是请注意:
1.后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的。C++的语法规则更加严谨一些。
2.编译阶段,g++会调用gcc,对于c++代码,两者是等价的,但是因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接,为了统一起见,干脆编译/链接统统用g++了,这就给人一种错觉,好像cpp程序只能用g++似的。
将pro文件转换成vcxproj,可通过VS打开:
1 | qmake -tp vc |
我的电脑上qmake路径:D:\IDE\Qt5.11.3\5.11.3\msvc2017_64\bin\qmake.exe
如果报Can not run cl
之类的错误,把 cl 加到环境变量中:
D:\IDE\Visual Studio 2017 Enterprise\VC\Tools\MSVC\14.10.25017\bin\HostX64\x64
type function(type arg1, ...) { }
应用场景:10亿个数中取前1000大的数