学习c++
十年..
这个作者很懒,什么都没留下…
展开
-
c++多线程无锁原子编程
1:多线程共享据数据会有什么问题。如上图,我们的本意时线程A.B各自执行当余额大于100的时候扣掉100,是不会出现负数情况。但是当 cpu 按 1,2,3,4 的顺序执行的话,就造成钱出现负数情况,这就是多线程对共享数据操作会造成数据混乱的原因。2:用锁解决数据共享问题为了解决数据问题,我们必须保证 1,3 执行完成之后 2,4 才会执行,因此引入锁。使用互斥量保护共享数据访问数据的时候,将数据上锁,直到结束才解锁,其他线程访问时,如果已经上锁必须等待到解锁std::mute原创 2022-03-01 21:58:21 · 579 阅读 · 0 评论 -
网络编程的三种方式
BIO,NIO,AIO的区别:BIO是传统的通信,使用的是TCP的三次握手,也就是传统的socket编程,接入一个客户端,就新建一个线程。是同步阻塞的方式。NIO是同步非阻塞的方式实现的,其中最关键的是使用了selector注册器进行通道的注册。AIO是异步非阻塞的方式实现的,其中是使用了线程池和通道的配合,并且一直反复的调用,来实现这种异步非阻塞的实现方式。...原创 2020-12-11 15:31:23 · 594 阅读 · 0 评论 -
websocket数据解包
websocket和TCP/IP多了一个握手协议1握手的过程是1==》A连接B会发送 固定格式GET / HTTP/1.1Upgrade: websocketConnection: UpgradeHost: 127.0.0.1:5504Origin: http://127.0.0.1:5504Sec-WebSocket-Key: KDON8mAMGOuBcAsxnNKysQ=...原创 2019-05-23 14:27:07 · 2179 阅读 · 0 评论 -
c++编码风格
类的命名规则1:类名前缀C,成员前缀m_,静态成员前缀 sm_ 纯虚类 前缀I/*Describe:简单的描述*/#ifndef __XXXX__#define __XXXX__class CDog{int m_nMyLife;};#endif2:全局变量 g_ int g_i5MyLife;3:全局静态变量 sg_ static int...原创 2019-05-22 14:39:57 · 197 阅读 · 0 评论 -
几个遇到的设计模式
1:代理模式A:客户, B:中介, C:委托对象A需要对C进行操作的时候,通过B进行B是静态代码,不存在实际数据业务,他的实现是调用 C提供的接口来实现的。2:单列模式整个程序,只实例化一次,只有一个对象,一般全局类型的管理器,都要写成单例。常见的实现方式:懒汉式单例class CSingletonDemo{private: static CSingleton...原创 2019-05-20 18:22:42 · 174 阅读 · 0 评论 -
c++,注意点
目录1:将析构设置成私有2:防止sql注入3:WIndow下类或函数给其他dll,ext使用4:sprintf 格式化,整形注意5:函数不确定参数(纯c实现的),实现printf1:将析构设置成私有// 一旦析构函数设置成protected,private,那么该类只能// 通过new 和 delete 实例,删除,// A a; 会报错#include "i...原创 2019-05-10 15:39:30 · 226 阅读 · 0 评论 -
linux下 shell
#!/bin/sh 或 #!/bin/bash告诉系统这个shell 脚本,1:打印#!/bin/shecho "hello world!"2:键盘输入#!/bin/sh#read 表示键盘输入赋值给 numread numecho "${num}"3:赋值# 等号的前后不能有空格a=10b="hello world!"echo "...原创 2019-05-07 11:51:44 · 167 阅读 · 0 评论 -
C++内存泄漏
c++常用的检查方法@1:在window下A:静态代码检查可以使用 使用教程https://blog.csdn.net/liweibin812/article/details/84544750 TscanCode 腾讯开发 ,是一个工具,直接打开就可以使用B:动态检查可以是用 vld 插件 可以安装在 vs上@2:在linux上...转载 2019-04-16 10:22:38 · 165 阅读 · 0 评论 -
c++学习:指针
1:指针1:指针的简单预防(指标不治本)#include using namespace std;#define KEY_VALUES 1234321 //用来避免野指针#define IF_OK()class A{public: A(){ this->nKey = KEY_VALUES; } void fun(){ cout << "ssssssssss原创 2017-11-28 10:01:22 · 165 阅读 · 0 评论 -
STL-容器
STL常用容器简介常用的成员函数使用方法注意事项2:常用成员函数1.元素插入: insert(a)是否为空:empty();2.中序遍历:std::set::interator it;3.反向遍历: 利用反向迭代器 std::set::reverse_interator it;3:使用方法===============原创 2017-08-16 11:30:11 · 194 阅读 · 0 评论