- 博客(99)
- 资源 (1)
- 收藏
- 关注
原创 std::map 自定义key类型,重写operator<() 没有严格弱序引起的“invalid comparator”,具体case分析
该case一般在多个字段时出现,如果两个字段相互小于则100%必现,也是日常工作碰到的case,在此记录下。可以看到 ,SortKey结构的逻辑明显错误。
2024-03-25 14:23:04
172
原创 godot常用的一些概念、组件(整理于官方教程)
调整游戏的分辨率项目,项目设置,display,windows,设置width&height另外,滚动到该小节的底部,在“Stretch”(拉伸)选项中,将 Mode 设置为“2d”、Aspect 设置为“keep”。这样就可以保证在不同大小的屏幕上,游戏都能够进行一致的比例缩放。检测A,B的碰撞,使用Area2D,其子对象必须要有CollisionShape2D精灵动画:AnimatedSprite-> SpriteFrames 一个精灵动画下可以包含多种动作,每一种动作会包含一系列的动画添加碰撞:C
2022-07-10 15:20:35
3129
原创 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
298
原创 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
262
原创 windows下golang的交叉编译linux
cmd: 1 2 3 setGOARCH=amd64 setGOOS=linux go build xxx.go powershell: 1 2 3 $env:GOOS="linux" $env:GOARCH="amd64" go build xxx.go
2021-02-05 20:08:37
361
原创 记录一次dart-grpc通过ipv6访问grpc服务器的坑
突然发现我们家的网络是通ipv6的,手机也可以ping同,以及ssh。然后就想搭建一个服务器看看,用grpc-client-server访问试试。但是弄了好久都不好,最后找到解决办法了。1.服务器的监听,必须加上地址"::",如果不加,只能以ipv4的地址访问2.客户端填上地址就可以了,ipv4,v6均可...
2021-01-28 01:29:05
1138
原创 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
2232
原创 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
221
原创 如何像go语言那样优雅的组织c++项目结构【cmake】
一直依赖,对于C++的项目构成,新手总是特别郁闷,特别是遇到.a,.so等静态库,看着别的语言golang用model好香,自己却到处报错,就很难受。我用了一个最简单的项目来说明这个问题。这样的项目结构适合多人开发,特别是一些基础库的代码可以放在lib里面,这样并行开发就不会有问题了代码地址:https://download.csdn.net/download/dyyzlzc/12941731...
2020-10-16 22:31:59
395
原创 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
619
原创 Unity3d 常用的一些代码
Time.timeScale = 0 ; 暂停游戏,常用于菜单调出通常情况下,public的属性是会在游戏面板中显示的,添加这个属性以后,就可以不在游戏面板显示[HideInInspector]public xxxxx;如何画线?1.在某个GameObject上添加LineRender组件2.在某个函数中,获取到这个LineRender组件【可以用public来获取,也可以用GetComponent获取】3.开始画画,设定线的点就可以了right.SetPosit..
2020-10-07 20:03:37
1875
原创 c++ 数据结构 图 part2.邻接多重表的实现
https://gitee.com/dyexlzc/GraphCPP其实我觉得邻接多重表要难一点
2020-06-16 20:23:53
203
原创 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
326
转载 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
2140
原创 win7您需要来自Administrators 的权限、无法删除文件等
cmdnet user administrator /active:yes重启
2020-05-08 00:39:46
1039
原创 flex_制作中缀计算器
1+(2*3),这样的一个式子就是中缀的形式calc.y%{#include <stdio.h>void yyerror(const char* msg) {}%}%token T_NUM T_WS %left '+' '-'%left '*' '/' %% S : S E '\n' { printf(" ans = %d\n...
2020-04-22 01:24:43
155
原创 flex_改造中缀计算器为后缀计算器
后缀和中缀的区别就在于:其符号位置的不同一个是 $$ = 1 + 2一个是 $$ = 1 2 +所以可以根据这样来修改我们的程序,进一步理解flex的作用calc.l%{#include "y.tab.h" %}WHITESPACE ([ \t]*)%%[0-9]+ { yylval = atoi(yytext); return T_N...
2020-04-22 01:22:51
118
原创 flex_统计文件里有多少行代码
随后使用flex+gcc就可以编译了具体效果是这样:dyexlzc@m4600-vm:~/flex$ ./countLine < 1_replaceNum.lall line:12dyexlzc@m4600-vm:~/flex$可以看到成功输出了行数因为每一行都是以\n结尾,所以很简单的只用统计\n的个数就知道有多少行了...
2020-04-10 22:05:54
329
原创 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
159
原创 C++ 的并发学习:CAS,SPIN和MUTEX
众所周知,多线程环境下如果不使用“锁”来对非原子数据进行操作的话,将会导致数据错误,轻则数值错误,重则公司破产(秒杀系统超卖)在C++中,有两种锁,一种是MUTEX,互斥锁,即当某个线程调用锁时,其他线程将会阻塞等待那个线程释放锁,是最简单的并发控制,另一种则是用atomic类型变量实现的cas自旋锁,只需要耗费一点CPU时间即可完成快速的加锁解锁,具体的性能差距我们看看代码和数据就知道了。...
2020-04-04 00:04:06
1647
原创 自己动手写BRPC——多个RPC
我们在上一篇文章https://blog.csdn.net/dyyzlzc/article/details/105199457已经大概学习了BRPC的流程,现在我们尝试能不能编写多个RPC来进行远程调用。我们现在假设有这样一种需求:服务器有4个函数,加减乘除,分别会对客户端发送的两个数进行计算服务器有一个登陆函数,会判断用户名和密码是否正确根据上面的模型,我们知道可以抽象出:1个函......
2020-03-31 23:05:40
1081
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
2546
6
原创 ios/android/pc多端共享文件
使用python3中的updog模块在ubutnu上使用pip3 install updog安装后,运行python3 -m updog即可看到已经开启服务在0.0.0.0:9090端口手机和电脑只要在一个网络,就可以通过这个软件来互传文件了...
2020-03-31 14:28:31
580
2
原创 CMAKE学习——编译多个文件 & 多个目录
大型工程会有很多文件,包括类的实现和定义,各种不同的模块交叉在一起,我们怎么用cmake方便的编译呢?例如有这么一个工程:我们现在想要编译的话,如果只选择了main.cpp,则会提示”未定义的引用“,因为我们头文件和实现分离,但我们只包含了头文件,所以是一定找不到实现的。我们这时候就要把所有源文件都添加到add_executable中:保存以后使用cmake . &...
2020-03-29 23:44:27
20982
3
原创 CMAKE的学习笔记——初始CMAKE
CMAKE是一个很强大的编译工具最近在看BRPC,发现其中的编译部分都是CMAKE来完成的,在囫囵吞枣编译出第一个demo后,我觉得自己该学习一下cmake了。1、及其简单的例子任何东西都是从hello world开始的,cmake也不例外,这里就是一个非常简单的cmake:【请注意,文件名必须是CMakeLists.txt】现在的cmakelists很简单,一共就三句话:...
2020-03-29 23:14:53
418
原创 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
210
原创 C++中ABI的问题——1.ABI问题的产生
春招结束,发现面试的后面几面,会闻到c++的abi问题,大致问题就是,gcc编译的库,clang能用吗,或者在升级so文件的时候要注意什么,当时不知道,现在来总结一下。这个abi问题,网上资料不是很多,有一些零零散散的,最后自己总结了一下以后,在这里做个笔记。一般的软件为了模块分割,思路都是这样的:模块写在so/dll文件中,使用exe加载并执行功能,更新只用更新dll、so就可以了。...
2020-03-15 23:18:09
5796
转载 QT与php交互,QT上传到PHP文件
找到一个,牛人写的QT 5.6.2 编译通过https://blog.csdn.net/songjinshi/article/details/11806773/
2020-03-10 00:45:31
947
原创 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
298
原创 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
1262
原创 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
410
原创 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
378
原创 C++ 一致性缓存的测试
关于一致性hash网上的例子很多,原理在网上也能找得到,随便实现了一个,没有虚拟节点的。为了图方便也只是用的list和sort,如果真的要写的很好的话就要自己写一个环状的数据结构#include <iostream>#include <functional> //hash#include <vector>#include <map>#...
2020-03-04 19:21:48
289
原创 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
698
原创 C++ 递归与非递归的前序中序后序遍历
这写的是前序,中序和后序只需要把cout放在中间,后面即可#include <iostream>#include <vector>#include <list>#include <queue>#include <stack>using namespace std;struct node{ int val; ...
2020-02-28 12:24:43
189
原创 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
996
原创 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
153
原创 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
199
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人