- 博客(44)
- 资源 (1)
- 收藏
- 关注
原创 C++使用istringstream对string进行分割
getline()LeetCode71link_egclass Solution {private: map<string,int>cases{{"",0},{".",1},{"..",2}};public: string simplifyPath(string path) { vector<string>spaces; istringstream iss(path); string buffer;
2022-01-07 00:09:53
1871
原创 IO复用技术epoll poll select
IO复用技术epoll poll selectIO复用技术定义selectpollepollIO复用技术定义I/O多路复用 I/O就是指的我们网络I/O,多路指多个TCP连接(或多个Channel),复用指复用一个或少量线程。=>很多个网络I/O复用一个或少量的线程来处理这些连接。selectselect 方法是多个 UNIX 平台支持的非常常见的 I/O 多路复用技术,它通过描述符集合来表示检测的 I/O 对象,通过三个不同的描述符集合来描述 I/O 事件 :可读、可写和异常。但是 sel
2021-12-29 17:39:19
433
原创 基于小根堆实现的定时器
基于小根堆实现的定时器最小堆定义插入节点删除节点最小堆的实现vector+unordered_map具体功能std::function< void() > 和 std::bind()最小堆定义每个节点的值都小于或等于其子节点的值的完全二叉树插入节点将元素X插入最小堆,可以在树的下一个空闲位置创建一个空穴。如果X可以放在空穴之中而不破坏堆的序,则插入完成。否则就执行交换空穴和他的父节点上的元素的操作,不断的执行该操作,直到X可以被放入空穴;删除节点删除其根节点上面的元素,然后去调整整
2021-12-29 16:57:32
2108
原创 单例模式与阻塞队列实现异步的日志系统
单例模式与阻塞队列实现异步的日志系统阻塞队列定义实现(c++11)单例模式定义类型懒汉式(编程使用)饿汉式C++中static对象的初始化non-local static对象(函数外)local static 对象(函数内)异步写日志阻塞队列定义在多线程编程中阻塞队列是一种常用于实现生产者和消费者模型的数据结构。其与普通的队列区别在于,当队列为空时,从队列获取元素的操作将会被阻塞,直到队列中被放入了元素;当队列满时,往队列里存放元素的操作也会被阻塞,直到有元素被从队列中取出在c++标准库STL中常用
2021-12-28 22:19:30
2070
原创 使用触发器/管理事务处理
使用触发器/管理事务处理使用触发器触发器创建触发器删除触发器使用触发器insert触发器delete触发器update触发器管理事务处理事务处理核心控制事务处理标识事务处理开始RollbackCommit使用保留点使用触发器触发器类似信号触发器触发器是MySQL响应以下任意语句而自动执行的一条MySQL语句(或者位于begin和end之间的一组语句);deleteinsertupdate创建触发器Create Trigger newproduct//触发器姓名After Insert
2021-11-26 16:42:54
855
原创 创建表和操作表
创建表和操作表创建表和操作表创建表CREATE TABLE表创建基础使用NULL值主键使用auto_increment指定默认值引擎类型更新表ALTER TABLE删除表DROP TABLE重命名表名RENAME TABLE创建表和操作表创建表CREATE TABLE表创建基础两种方法,一种是使用MySQL语句;一种是使用交互式工具;创建表时,指定的表名必须不存在,否则会出错;要防止意外覆盖已有的表;如果仅仅想在一个 表不存在时创建它,应该在表名之后给出IF NOT EXISTS使用N
2021-11-22 16:57:09
995
原创 MySQL插入/更新/删除数据
MySQL插入/更新/删除数据插入insert插入完整行法1法2注意(优先级)插入多个行法1(使用多个insert)法2(推荐使用,使用的insert越少,性能越高)插入select出的数据更新update删除delete注意插入insert插入完整行法1语法简单,但是不安全,应该避免使用;高度依赖表中列的定义次序;即使可以保证获得次序信息,但是不能保证下一次表结构变化之后各列保持完全相同的次序;Insert Info customers//给表customers加入新列Value(Nu
2021-11-20 15:44:53
838
原创 组合查询union/全文本搜索
组合查询union/全文本搜索组合查询创建组合查询(union)union规则包含或取消重复的行对组合查询结果排序全文本搜索启用全文本搜索支持进行全文本搜索扩展查询(with query expansion)布尔文本搜索(in boolean mode)组合查询别称:并(union)或者 复合查询;组合查询和多个where条件:任何具有多个where子句的select语句都可作为一个查询语句给出;创建组合查询(union)union规则uninon必须由两条或者两条以上的select语句组成
2021-11-18 17:08:46
1041
原创 MySql基础
MySql基础使用MySql检索数据检索所有列检索不同行(distinct使返回结果都是不同的)限制结果(limit)排序检索数据排序检索过滤数据where子句操作符空值检查(null)AND OR IN (NOT IN)通配符过滤like%表示任意字符出现任意次数_下划线,总是匹配一个字符,不多不少正则表达式regexp----regular expressionlike和regexp区别区分大小写binaryor匹配匹配几个字符之一 [ ]^ 否定匹配范围匹配特殊字符(mysql必知必会p57)匹配字符
2021-11-17 21:24:03
813
原创 MySql联结的基本使用
MySql基本使用联结表关系表联结创建联结Where的重要性内部联结联结多个表高级联结表别名3种其他联结自联结自然联结(使用概率低)外部联结例子使用带有聚集函数的联结总结联结表关系表关系表的设计就是要保证把信息分解成多个表,一类数据一个表;外键:是某个表的一列,它包含另一个表的主键值,定义了两个表之间的关系;联结联结:一种机制,用来在一条select语句中关联表;注意 1.联结由MySql根据需要建立,存在于查询的执行中;2.仅仅在关系列之中插入合法的数据非常重要。创建联结Where的重
2021-11-17 16:22:23
1061
原创 Linux MySQL安装完毕的开启和登录
MySQL安装完毕的开启和登录开启/关闭登录/退出开启/关闭如果service mysqld start出错要到 “/usr/local/mysql/support-files” 目录下 ./mysql.server start执行启动相关文章链接登录/退出相关文章链接
2021-11-17 11:48:04
1003
原创 四次挥手和Time_wait
四次挥手和Time_wait四次挥手挥手过程为什么需要四次挥手?TIME_WAIT最长分节生命期 MSLTIME_WAIT 的作用2MSL 的时间是从主机 1 接收到 FIN 后发送 ACK 开始计时的TIME_WAIT 的危害四次挥手挥手过程刚开始双方都处于ESTABLISHED 状态,假如是客户端先发起关闭请求。四次挥手的过程如下:第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于 FIN_WAIT1 状态。即发出连接释放报文段(FIN=1,序号seq=u),
2021-10-08 21:59:09
394
原创 原子操作 中断 锁 信号量
进程和线程同理原子操作共享数据是单体变量时,可以尝试使用原子操作指令;如:a++中断单个CPU中多个进程并发执行,使用中断进行切换,关闭中断后,只有一个进程在执行这块临界区代码,其他进程无法切换执行,执行完这块代码后,再打开中断,再去切换到别的进程执行;注意解决CPU中断关闭/开启的嵌套调用问题;自旋锁自旋锁解决多个CPU,多个进程并行执行的情况;多个进程对同一个物理内存地址进行访问,先访问并判断为0的进程,进程加锁设置为1,执行临界区代码;其他的进程陷入访问,判断为1的流程中,死循环;
2021-08-24 20:22:12
184
原创 strpbrk() strspn()
strpbrk() std::string str1 = "GET https://www.baidu.com HTTP/1.1"; char *url = strpbrk(const_cast<char *>(str1.c_str()), " \t"); *url++ = '\0'; std::cout << url << std::endl;结果:strbprk(str1,str2)函数在源字符串(str1)中找出最先含有搜索
2021-08-16 17:03:41
254
原创 char[]越界问题
c语言里面字符串结束符’\0’的值就是0,所以buf[buf_len] = 0相当于buf[buf_len] = ‘\0’;const int buf_len=1024;char buf[buf_len+1];buf[buf_len]=0;//这样就没越界 const int buf_len=1024;char buf[buf_len];buf[buf_len]=0;//这样就越界了...
2021-07-23 17:35:18
364
转载 cmake中的link_directories, LINK_LIBRARIES, target_link_libraries的区别
**转载:**链接: link.
2021-07-19 11:04:26
1967
原创 进程概念及应用
进程概念及应用进程(process)进程IDCPU核数和进程数进程(process)定义:占用内存空间的正在运行的程序;从操作系统的角度看,进程是程序流的基本单位,若创建多个进程,则操作系统将同时运行。进程ID无论进程是如何创建的,所有的进程都会从操作系统分配到ID。此数成为进程ID。其值为大于2的整数。1要分配给操作系统启动之后的首个进程(该进程协助操作系统)。CPU核数和进程数拥有2个运算设备的CPU称为双核(Daul)CPU。也就是说1个CPU内部可能包含多个运算设备(核)。核的个
2021-07-15 21:30:29
779
原创 最大公约数&&判断点是否在一条直线
最大公约数原理辗转相除法有两整数a和b: ① a%b得余数c ② 若c=0,则b即为两数的最大公约数 ③ 若c≠0,则a=b,b=c,再回去执行①例如: 求25和15的最大公约数过程为: 25÷15 余10 15÷10余5 10÷5余0。因此,5即为最大公约数Codeint gcd(int a,int b){ while(b){ int temp=a%b; a=b; b=t
2021-06-24 11:01:34
89
原创 const引用的思考
const 引用非const的引用参数只能是相同类型const的引用参数可以传相关类型的参数进来C++语言禁止为非常量引用产生临时对象。一个const引用满足非const引用的特性的同时,还有很重要的一点,const引用可以引用一个与其类型完全不相同的类型(因为编译器会生成一个转换后可引用的临时对象),前提是被引用的类型可以转换为引用的类型const &是可以重新构造临时对象,非const &不可以...
2021-06-23 11:31:31
116
原创 计算返回数字的二进制中1的个数
内建函数(cpp)__builtin_popcount()返回值是1的个数手动实现int getCount(int n){ int result=0; while(n){ result++; n=n&(n-1); } return result;}
2021-06-21 10:36:38
113
原创 计算整数二进制的第i位
计算整数二进制的第i位(num>>i)&1)汉明距离class Solution {public: int hammingDistance(int x, int y) { int XOR=x^y;//XOR运算 int num=0; while(XOR!=0){ if(XOR%2==1) num++; XOR=XOR>>1;//等价于XOR/=2;
2021-05-28 10:52:19
571
原创 二进制与、或、异或运算法则
1、与 (&)0 & 0 = 0、0 & 1 = 0、1 & 0 = 0、1 & 1 = 1两者全部为true则结果为true,否则为false;2、或(|)0 | 0 = 0、0 | 1 = 1、1 | 0 = 1、1 | 1 = 1两者有一个为true则结果为true,否则为false;3、异或(^)0 ^ 0 = 0、0 ^ 1 = 1、1 ^ 0 = 1、1 ^ 1 = 0两者相同为false,不同为true;可以使用交换律;0和任何数^,
2021-05-11 10:52:43
5782
原创 LNK1104: 无法打开文件“xx.lib”
LNK1104: 无法打开文件“xx.lib”原因lib文件没包含进去检查方法1.检查库目录是否有lib文件所在的文件目录2.检查附加依赖项中是否有lib的完整名称。解决方法如不设置某一头文件的包含目录,也可直接#include绝对路径,如#include“xx/opencv/opencv.hpp”如果不在附加依赖项中添加lib名称,也可直接用#pragma comment包含,如#pragma comment(lib,“xxx.lib”) // “xxx.lib” 可以是全路径.
2021-05-08 22:22:17
3054
1
原创 无法打开文件“XX.lib”
无法打开文件“XX.lib”问题原因可能是附加依赖项添加之后,代码在编译阶段未找到该lib])解决方法:1.在附加依赖项之中删除该项2.在库目录之中导入该XX.lib
2021-04-28 21:11:27
1316
原创 unordered_map
将pair作为unordered_map的key,需要重写hash struct pair_hash{ template<class T1,class T2> size_t operator()(const pair<T1,T2> &pair) const{ return hash<T1>()(pair.first)^hash<T2>()(pair.second); }
2021-04-16 12:06:02
278
原创 使用osg时的gl.h文件错误
OSG使用时gl.h的文件错误解决方法添加#include <Windows.h>示例#include <Windows.h>#include <osgViewer/Viewer>#include <osgDB/ReadFile>int main(){ osgViewer::Viewer viewer; viewer.setSceneData(osgDB::readNodeFile("cow.osg")); retu
2021-04-12 15:58:04
357
原创 二分法详解
二分法本质「二分」不是单纯指从有序数组中快速找某个数,这只是「二分」的一个应用。「二分」的本质是二段性,并非单调性。只要一段满足某个性质,另外一段不满足某个性质,就可以用「二分」自己写二分法详解引用博主M小马M的文章STL内置的二分查找算法binary_search //stl的内置二分查找的算法其搜索空间为[left,right) //返回值为bool型 return binary_search(nums.begin()+left,nums.begin()+right,targe
2021-04-07 17:19:32
560
原创 2021-04-02
面试题 17.21. 直方图的水量题目给定一个直方图(也称柱状图),假设有人从上面源源不断地倒水,最后直方图能存多少水量?直方图的宽度为 1。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的直方图,在这种情况下,可以接 6 个单位的水(蓝色部分表示水)。感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/vo
2021-04-02 21:15:09
80
原创 15. 三数之和(回溯法超时,使用双指针)
15. 三数之和题目给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,
2021-04-01 20:22:27
299
原创 2. 两数相加(链表)
2. 两数相加题目给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-two-numbers著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。示例1输入:l1 = [2,4,3]
2021-04-01 17:28:50
127
原创 回溯思想
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/permutations著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。LeetCode78 子集给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。你可以按任意顺序返回解集。示例一输入:nums = [1,2,3]输出:[[ ],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3].
2021-03-31 19:05:59
125
vcglib-master.rar
2020-04-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人