自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 c++函数对象

1.可调用对象需要重载operator()class G {public: int operator()(int i, int j) { return i + j; }};调用方式一定是一个G的对象,然后参数为两个int。 G g; cout << g(40, 50) << endl; cout << G()(30, 40) << endl; cout << greater<int>()(11,

2021-08-11 19:51:04 118

原创 函数,类模板全特化,偏特化

以一个普通函数模板为例:template <typename A, typename B>void f(A a, B b) {}template <typename A>void f(A a, int b) {} //这个写法有点奇怪,我认为这里是重载,跟偏特化有迷惑性void f(char a, int b) {} //普通的函数template <>void f(char a, int b) {} //这跟上面的f是同一个意思,不属于全特

2020-12-30 11:48:22 296

原创 c++ 默认移动构造函数

class Test {public: Test(int v, const string& str) { p = new int(v); s = str; cout << "test()" << endl; } ~Test() { cout << "~Test()" << endl; delete p; p = nullptr;

2020-12-28 18:01:21 3774 2

原创 数据库事务的4种隔离级别

数据库事务的隔离级别有4种,为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。试验验证,假设有两个sql客户端开启事务。sql1和sql2:假设存在account表:1.Read uncommitted (set session transaction isolation level read uncommitted;) sql1 update以后,select是中间状态username='lily'...

2020-12-21 14:45:19 257

原创 同步异步,阻塞非阻塞,多线程,线程池的理解

网上关于这些的说法太多,这里记录一下个人的理解。结合unix I/O 模型图和windows的一些API。1.何为同步,异步?同步,异步是针对I/O而言的,其实理解就是不同的API,用了同步API的调用,就是同步,用了异步的API调用,就是异步。举例:windows:_ACRTIMP int __cdecl read( _In_ int _FileHandle, _Out_writes_byte

2020-12-15 20:35:26 598

原创 TCP问题记录

1.recv多次调用问题记录一下今天突然想到的一个recv多次调用问题,如下:server代码:...char buf[100] = { 0 };cout << "start recv " << endl;int rc = recv(sockConn, buf, 100, 0);cout << "has recv " << rc << endl;...client端代码:char buf[10] = { "1234

2020-12-10 13:53:30 337

原创 windows异步之APC验证

using namespace std;HANDLE hfile;OVERLAPPED ov = { 0 };void __stdcall apc(DWORD dwErrorCode, DWORD dwNumberOfBytesTransfered, LPOVERLAPPED lpOverlapped) { cout << "enter apc" << endl; cout << dwErrorCode << ", " << dwNu.

2020-12-04 21:36:52 195

原创 windows线程用户模式同步测试

1.利用Interlocked序列函数,原子同步俩个线程,不停的对gl_num进行修改,gl_num = 5 认为是未加锁的状态,6是加锁状态调用InterlockedExchange(&gl_num, 6)以后:返回的值是5,表明是该线程拿到了“锁”,可以执行代码,同时执行完成后置为5.返回的不是5,而是6,则说明这个线程未拿到锁,需要sleep。等拿到锁的释放后再次竞争。#include <Windows.h>#include <iostream>#i

2020-12-04 15:57:09 114

原创 https双向认证试验

双向校验流程见:https://www.cnblogs.com/baihuitestsoftware/articles/7097389.html1.利用xca工具生成CA,client,server端证书创建CA证书:1)使用模板创建新证书CA ,点击 应用模板所有信息。2)主体里填写国家等信息,commonName随便填一个ca名称。3)创建一个ca的密钥。把x509v3 的extended key usage的TLS web client..选上,其余的有些也不...

2020-11-30 11:57:06 654 1

原创 reserver_iterator 失效问题

真是蛋疼啊,今天打开牛客网,准备写一道生成Gray码的题目,结果居然发现了一个坑。题目:在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。给定一个整数n,请返回n位的格雷码,顺序为从0开始。测试样例:1返回:["0","1"]要求用递归,我的想法:1位: 0,12位:00,01,11,103位: 000, 001 ,011, 010 , 110 ,...

2020-11-25 21:07:23 187

原创 智力题记录

1.已知两个数字为1~30之间的数字,甲知道两数之和,乙知道两数之积,甲问乙:“你知道是哪两个数吗?”乙说:“不知道”。乙问甲:“你知道是哪两个数吗?”甲说:“也不 知道”。于是,乙说:“那我知道了”,随后甲也说:“那我也知道了”,这两个数是什么?个人想法:甲,乙都有一个可能的结果集合。1.甲不知道,说明从甲的集合里删除只有唯一的结果, 比如2,3,59,60。同时乙也要删除对应的结果2.乙不知道,同理,从乙的集合里删除只有唯一的结果,同时甲也要删除对应的结果3.甲又不知道,从甲的集合里

2020-11-23 10:53:46 289

原创 &重载 ,std::ref

今天研究了半天。&既可以是取地址符的重载,也可以引用的重载。如下:class Test {public: int operator & () { //取地址符&的重载 return 122; } operator int& () { //int& 引用的重载 return v; } operator float& () { return vf; }pr...

2020-11-20 20:17:44 190

原创 vs2019 进入库函数源码调试

默认F11不会进入一些标准库源码,把这个选项改一下就可以了。

2020-11-19 15:57:31 3579 3

原创 std::thread 中的一些问题理解

class bak_task {public: void operator()() { cout << "bak task run" << endl; }};int main() { thread t { bak_task() }; t.join(); // t.detach(); return 0;}1.std::thread 对象t创建完成以后,内部调用_beginthreadex创建底层线程,称之为_Thr。_Thr实际是包含 线程的句柄和i..

2020-11-19 13:06:43 1402

原创 fsteam in out ate app理解

这里的放的不是很好,个人理解,以fstream为例子:1.以in方式打开时,可以搭配ate,binary2.以out方式打开时,可以搭配app,ate,trunc,binary。默认out是out | trunc,会清空。如果不想清空,则用out | app。3.以in|out同时打开,可以搭配app,ate,trunc,binary(与out一样)。app与ate的区别:1.app只能搭配out,ate in|out都可以2.单独out|ate没啥大用处,会清空文件,也不能seekp。3.

2020-11-18 19:13:28 899

原创 GBK UTF-8 UTF-16 宽字符,中文输出

1.GBK是中国标准,每个汉字2个字节2.Unicode是国际标准,每个汉字分配一个unicode编码。3.unicode的编码实现有多种表示形式,比如UTF-8,UTF-16…。UTF-8有的汉字是3个字节。4.定义 const char m[] = “你好”; 时,"你好"所占的字节与cpp文件的格式(GBK,UTF-8,UTF-16…)有关。例如string s = “你好”;默认这里是GBK,s.size() = 4如果把文件格式改成UTF-8,则每个汉字为3个字节,s.size() =

2020-11-18 12:10:20 792 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除