C++
啊罗罗
这个作者很懒,什么都没留下…
展开
-
c++ 简易生命游戏
// function::operator bool example#include <iostream> // std::cout#include <functional> // std::function, std::plus#include <ctime>#include <set>#include <thread>#include <mutex>#include <vector>#include.原创 2021-08-26 16:38:19 · 346 阅读 · 0 评论 -
c++ boost 状态机简单case:模拟下载文件
也算备忘录吧,看了一段时间的状态机,记录一下#include <iostream>#include <boost/statechart/state_machine.hpp>#include <boost/statechart/simple_state.hpp>#include <boost/statechart/transition.hpp>#include <boost/statechart/custom_react...原创 2021-08-04 21:40:47 · 296 阅读 · 0 评论 -
c++的unordered map 和map的查找效率,别找了,在这里看吧
利用了https://quick-bench.com/q/ltY3bIBRcsiFc9TAstyCxaPw5KQ的benchstatic void um_count(benchmark::State& state) { std::unordered_map<int,std::string> map; for(int i=0;i<1000;i++) map.emplace(i,"111111111111111111"); for(auto _.原创 2020-12-25 18:29:01 · 2274 阅读 · 0 评论 -
LINUX下完整的TCP epoll 服务器和客户端代码,用作备份
epoll服务器#include <iostream>#include <sys/socket.h>#include <sys/epoll.h>#include <netinet/in.h>#include <arpa/inet.h>#include <fcntl.h>#include <unistd.h>#include <stdio.h>#include <errno.h>.原创 2020-11-13 22:12:46 · 240 阅读 · 0 评论 -
如何像go语言那样优雅的组织c++项目结构【cmake】
一直依赖,对于C++的项目构成,新手总是特别郁闷,特别是遇到.a,.so等静态库,看着别的语言golang用model好香,自己却到处报错,就很难受。我用了一个最简单的项目来说明这个问题。这样的项目结构适合多人开发,特别是一些基础库的代码可以放在lib里面,这样并行开发就不会有问题了代码地址:https://download.csdn.net/download/dyyzlzc/12941731...原创 2020-10-16 22:31:59 · 424 阅读 · 0 评论 -
C++中数字转字符串的性能测试
https://quick-bench.com/q/FSad0UZOAsc92h2fx59eKnqG2L8基于本网站的测试,发现stringstream复用的情况下比std::to_string更快,而std::to_string比Sprintf更快总结:如果可以复用stringstream,那么就复用否则,如果是单次调用,那么就用std::to_string...原创 2020-10-15 19:33:40 · 659 阅读 · 0 评论 -
c++ 数据结构 图 part2.邻接多重表的实现
https://gitee.com/dyexlzc/GraphCPP其实我觉得邻接多重表要难一点原创 2020-06-16 20:23:53 · 221 阅读 · 0 评论 -
python清空屏幕
import os os.system('cls')原创 2018-02-04 17:52:15 · 27150 阅读 · 4 评论 -
c++ 数据结构 图 part1.邻接表的十字链表实现
来自《大话数据结构》第七章 p274 图效果graph 文件450 31 02 01 22 1graph.h#pragma once#include<vector>#include<string>using namespace std;struct Sidetable{//边表 int from,to; Sidetable *headlink,*taillink; Sidetable(int f...原创 2020-06-15 17:06:05 · 345 阅读 · 0 评论 -
git合并修改
A先写了一个aa.txt文件,push了B拉取以后,修改aa.txt文件,加了两行,B同样的push了A现在没有pull最新的aa.txt,直接在aa.txt下面又加了两行,这时候push提示冲突,就需要下面的操作。git stashgit pullgit stash pop就可以将远程和本地的合并git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。git pull:拉.转载 2020-06-07 16:14:08 · 2163 阅读 · 0 评论 -
C++ —— 句柄类的实现方式 —— 类实现的隐藏
原创 2020-06-06 19:06:05 · 290 阅读 · 0 评论 -
flex_统计文件里有多少行代码
随后使用flex+gcc就可以编译了具体效果是这样:dyexlzc@m4600-vm:~/flex$ ./countLine < 1_replaceNum.lall line:12dyexlzc@m4600-vm:~/flex$可以看到成功输出了行数因为每一行都是以\n结尾,所以很简单的只用统计\n的个数就知道有多少行了...原创 2020-04-10 22:05:54 · 347 阅读 · 0 评论 -
flex编写一个简单的文本替换程序
%%[0-9]+ {printf("数字为 %s,长度为:%d ",yytext,yyleng);}exit return 1;. ECHO;%%int main(){ yylex(); return 0;}int yywrap(){ return 1;}当输入为数字的时候,会替换数字输入exit就会退出否则就原样输出...原创 2020-04-10 03:15:01 · 175 阅读 · 0 评论 -
C++ 的并发学习:CAS,SPIN和MUTEX
众所周知,多线程环境下如果不使用“锁”来对非原子数据进行操作的话,将会导致数据错误,轻则数值错误,重则公司破产(秒杀系统超卖)在C++中,有两种锁,一种是MUTEX,互斥锁,即当某个线程调用锁时,其他线程将会阻塞等待那个线程释放锁,是最简单的并发控制,另一种则是用atomic类型变量实现的cas自旋锁,只需要耗费一点CPU时间即可完成快速的加锁解锁,具体的性能差距我们看看代码和数据就知道了。...原创 2020-04-04 00:04:06 · 1714 阅读 · 0 评论 -
自己动手写BRPC——多个RPC
我们在上一篇文章https://blog.csdn.net/dyyzlzc/article/details/105199457已经大概学习了BRPC的流程,现在我们尝试能不能编写多个RPC来进行远程调用。我们现在假设有这样一种需求:服务器有4个函数,加减乘除,分别会对客户端发送的两个数进行计算服务器有一个登陆函数,会判断用户名和密码是否正确根据上面的模型,我们知道可以抽象出:1个函......原创 2020-03-31 23:05:40 · 1110 阅读 · 4 评论 -
自己动手写BRPC——简单的echo服务
cmake用了一天入门,今天来学习下BRPC的写法。echo的例子在brpc官方例子里有,但是本着学习的精神,我还是想自己总结一份经验。1、建立proto文件,定义消息格式proto文件定义了客户端和服务端的请求、相应的消息格式。syntax="proto2"; //指定proto版本option cc_generic_services = true; //设置为生成C...原创 2020-03-31 18:25:58 · 2660 阅读 · 6 评论 -
CMAKE学习——编译多个文件 & 多个目录
大型工程会有很多文件,包括类的实现和定义,各种不同的模块交叉在一起,我们怎么用cmake方便的编译呢?例如有这么一个工程:我们现在想要编译的话,如果只选择了main.cpp,则会提示”未定义的引用“,因为我们头文件和实现分离,但我们只包含了头文件,所以是一定找不到实现的。我们这时候就要把所有源文件都添加到add_executable中:保存以后使用cmake . &...原创 2020-03-29 23:44:27 · 21679 阅读 · 3 评论 -
CMAKE的学习笔记——初始CMAKE
CMAKE是一个很强大的编译工具最近在看BRPC,发现其中的编译部分都是CMAKE来完成的,在囫囵吞枣编译出第一个demo后,我觉得自己该学习一下cmake了。1、及其简单的例子任何东西都是从hello world开始的,cmake也不例外,这里就是一个非常简单的cmake:【请注意,文件名必须是CMakeLists.txt】现在的cmakelists很简单,一共就三句话:...原创 2020-03-29 23:14:53 · 439 阅读 · 0 评论 -
C++中单例模式的总结——operater new & private construct
#include <iostream>//单例模式/* C++中的单例模式通常是通过对构造函数设置为private来实现*/using namespace std;class world{ world() { //私有的构造函数,只能由类的成员函数来获取实例 }public: static world *g...原创 2020-03-25 14:44:24 · 224 阅读 · 0 评论 -
C++中ABI的问题——1.ABI问题的产生
春招结束,发现面试的后面几面,会闻到c++的abi问题,大致问题就是,gcc编译的库,clang能用吗,或者在升级so文件的时候要注意什么,当时不知道,现在来总结一下。这个abi问题,网上资料不是很多,有一些零零散散的,最后自己总结了一下以后,在这里做个笔记。一般的软件为了模块分割,思路都是这样的:模块写在so/dll文件中,使用exe加载并执行功能,更新只用更新dll、so就可以了。...原创 2020-03-15 23:18:09 · 5933 阅读 · 0 评论 -
QT与php交互,QT上传到PHP文件
找到一个,牛人写的QT 5.6.2 编译通过https://blog.csdn.net/songjinshi/article/details/11806773/转载 2020-03-10 00:45:31 · 981 阅读 · 0 评论 -
C++ 和 Python 的“交易” —— win+python 和 linux+c++的通信
通信嘛,那自然就是TCP UDP,不过有个框架,ZEROMQ,实现了在不同操作系统上的网络层绑定,十分十分十分好用采用的req-rep 应答模式,外加多帧消息,第一帧发送消息长度,服务器动态对客户端的消息扩容linux+c+++zmqg++ python-server.cpp -o pss -lzmq#include<iostream>#include<zm...原创 2020-03-07 15:35:57 · 315 阅读 · 0 评论 -
libgo & zeromq —— C++下的协程与消息队列的配合
libgo通过hook了网络阻塞函数来实现协程的调度,但是zeromq只需要原生的函数,如果hook则会报错,Assertion failed: pfd.revents & POLLIN (src/signaler.cpp:261),这时候我们只想要libgo的线程调度功能怎么办?只要重新编译一次libgo,把disable_hook打开就可以,如果使用hook版本的,则会出现这个问...原创 2020-03-06 00:01:37 · 1287 阅读 · 0 评论 -
ZeroMQ 学习笔记 —— PUB SUB 订阅模式
/* ZeroMQ的订阅服务器*/#include<zmq.h>#include<iostream>#include<unistd.h>using namespace std;int main(){ void *ctx=zmq_ctx_new(); void *socket=zmq_socket(ctx,ZMQ_PUB);/...原创 2020-03-05 16:09:03 · 428 阅读 · 0 评论 -
ZeroMQ 学习笔记 —— REQ REQ 应答模式
因为ZEROMQ底层是C,有些C++的绑定其实不太好用,所以我个人用的都是C语言的版本,因为C/CPP也可以混写服务器#include<iostream>#include<zmq.h>#include<string>using namespace std;int main(){ void *context=zmq_ctx_new(...原创 2020-03-05 00:16:55 · 396 阅读 · 0 评论 -
C++ 一致性缓存的测试
关于一致性hash网上的例子很多,原理在网上也能找得到,随便实现了一个,没有虚拟节点的。为了图方便也只是用的list和sort,如果真的要写的很好的话就要自己写一个环状的数据结构#include <iostream>#include <functional> //hash#include <vector>#include <map>#...原创 2020-03-04 19:21:48 · 311 阅读 · 0 评论 -
linux 如何产生孤儿进程和僵尸进程
孤儿进程,会被 init接管后正常退出#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <unistd.h> int main(){ pid_t pid; //创建一个进程 pid = fork(); //创建失败 ...原创 2020-02-29 17:04:44 · 732 阅读 · 0 评论 -
C++ 11 无锁,使用atomic实现的生产者消费者模型
#include<iostream>#include<future>#include<atomic>#include<chrono>#include<list>#include<thread>using namespace std;//使用锁int main(){ atomic<bool>...原创 2020-02-27 20:03:10 · 1035 阅读 · 0 评论 -
leetcode 16.26 计算器 C++解法
这个代码是参考了评论区的题解,一变读取一遍计算,使用prev_op来实现减号的变化。比之前的中缀转后缀再计算要快得多这个是之前的版本https://blog.csdn.net/dyyzlzc/article/details/104337379class Solution{public: int calculate(string s) { s+="#...原创 2020-02-26 17:23:04 · 174 阅读 · 0 评论 -
C++ leetcode 字符串乘法
参考于这篇博客https://www.cnblogs.com/wmx24/p/9064134.html相较于我之前的版本https://blog.csdn.net/dyyzlzc/article/details/103239509,这个非常简洁,确实是算法的精髓,我之前的那个有点拖沓,虽然原理是对的,并且这个复杂度只有O(n*m)#include<iostream>#...原创 2020-02-25 23:54:11 · 215 阅读 · 0 评论 -
C++ 四则运算器
leetcode上的题,只有+-*/,空格,计算所给表达式的数值我现在用的办法是:中缀表达式转后缀表达式,然后计算但是leetcode最后一个示例是长度为20w的表达式,直接给我弄超时了,先把代码放在这里吧//计算器#include <iostream>#include <list>#include <sstream>#include&l...原创 2020-02-16 01:13:43 · 1114 阅读 · 0 评论 -
红黑树的插入策略
2、插入规则新插入的节点都为红色3、红黑树插入的4种情形(1)新节点位于根节点,其没有父节点时,处理思路:将该节点直接设为黑色即可(2)新节点的父节点已然是黑色时,处理思路:不用动,这已然是一颗红黑树(3)父节点和叔节点都是红色时,处理思路:a.将父节点和叔节点设为黑色;b.将祖父节点设为红色;c.将祖父节点设为当前节点,并继续对新当前节点进行操作(4)父节点是红色,叔节点...转载 2020-02-03 00:13:25 · 247 阅读 · 0 评论 -
C++ 实现的红黑树的插入
正在学习红黑树,目前把插入学完理解,做个笔记//main.cpp//尝试自己写红黑树#include<iostream>#include"rbtree-class.hpp"using namespace std;int main(){ RBTree<string> tree; /*int key=0; string val; ...原创 2020-02-02 18:08:36 · 219 阅读 · 0 评论 -
C++ —— 字符串查找算法(leetcode中速度最快的一种)
class Solution {public: int strStr(string haystack, string needle) { if(needle.empty()) return 0; int i=0,j=0; while(haystack[i]!='\0'&&needl...原创 2020-01-30 19:43:18 · 1700 阅读 · 1 评论 -
C++ ——一个标准的KMP的makeNext的算法
int len = strlen(str); int next[len]; next[0]=0; for(int i=1,k=0;i<len;i++) { while(k>0 && str[k]!=str[i]) k=next[k-1]; if(str[k]==str[i]...原创 2020-01-30 16:12:22 · 207 阅读 · 0 评论 -
C++常用库
标准库C++标准库,包括了STL容器,算法和函数等。C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。 Standard Template Library:标准模板库 C POSIX library : POSIX系统的C标准库规范 ISO C++ Standards Committee :C++标准委员会框...原创 2020-01-30 15:36:29 · 3864 阅读 · 0 评论 -
C++ 一个简单的 +-*计算机
#include <iostream>#include <stack>using namespace std;int cal(const string& str){ stack<int> num; stack<char> tok; int result=0; for(int i=0;i<str.s...原创 2019-12-19 20:15:18 · 480 阅读 · 0 评论 -
C++ 一个简单的二分法查找
#include <iostream>#include <vector>using namespace std;int findBin(vector<int>& arr,int target){ int l=0,r=arr.size()-1; int mid; while(l<=r){ mid=(l+...原创 2019-12-18 22:31:07 · 175 阅读 · 0 评论 -
C++自己造轮子项目——Linux下动态加载so库的一个小工具
gitee地址:https://gitee.com/dyexlzc/CppdynamicLoad/tree/master欢迎一起更新+找BUGCppDynamicLoad —— Linux下cpp动态加载so库主要文件dload.hpp 主要的实现文件interface.h 定义统一的接口example:可以clone下来后使用make so,make两条指令分别生成so...原创 2019-12-10 22:33:47 · 620 阅读 · 0 评论 -
Leetcode 142&141 - 环形链表2 and 环形链表1
这个题目是在141-环形链表的基础上发展而来的。141环形链表:速度比较快的就是双指针,快慢,如果有环就会重合。速度比较慢的就是用C++的unordered_map来做142环形链表2,要求找出相交的那个点。方法1:unordered_map的方法,储存每个节点,当发现map中已经有这个节点的是就就返回true【有相交】方法2:官方题解的第二个方法,速度和空间都挺小...原创 2019-12-04 21:42:55 · 104 阅读 · 0 评论