- 博客(33)
- 资源 (17)
- 收藏
- 关注
原创 关于单件模式
一个类只有一个实例,并为之提供一个全局的访问点。如果对内存要求没那么高,可以在多线程未创建时,用懒汉模式在主线程初始化单件实例,以避免使用线程锁。
2022-12-31 20:16:10
360
原创 MSS和MTU的区别
MSS(最大报文长度),是传输层TCP协议报文的选项之一,它表示报文段发送方可以处理的最大报文段(不包括TCP头部和IP头部)。MTU(最大传输单元),是用来限制数据链路上能传数据包的大小,并无协议指定,它包括数据包+TCP头部+IP头部。
2022-12-22 09:58:33
471
原创 关于右值引用
什么是右值引用右值引用是在c++11标准中提出的,在此之前我们讲的引用都是左值引用。要想搞明白左值引用和右值引用,首先要区分左值和右值。在c++11中,右值又分为纯右值和将亡值,纯右值指的是临时变量和不跟对象关联的字面量值,将亡值指的是和右值引用相关的表达式,这样的表达式通常表示将要被移动的对象。简单一点讲:可以用&去地址的表达式或变量是左值,不能用&取地址的变量或表达式是右值。
2022-11-30 15:07:16
404
原创 innodb与myisam的区别
innodb和myisam是mysql比较常用的存储引擎。在mysql5.5之前,默认引擎是myisam,之后默认引擎是innodb。
2022-11-30 10:24:00
1180
原创 关于智能指针
auto_ptr是c++98库中提供的智能指针,该指针对于上面的问题,采取的解决方案是:将原指针拷贝或赋值给新指针时,将原指针设置为nullptr,此时就只有新指针指向目标对象。智能指针的本质是一个类模板,它可以创建任何类型的指针对象,当该指针对象的生命周期结束时,会自动调用析构函数释放其对应的资源。
2022-09-23 15:44:36
756
原创 macOS安装brew
国内用户直接执行命令:/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"如果过程中下载速度太慢,可以尝试换个源。
2022-05-27 18:15:34
86
原创 通过设置资源的轴心点来改变渲染先后顺序
Unity中,Spriter Renderer默认将Spriter的中心点作为渲染先后的参照坐标。有时我们需要改变渲染的参照点位置,让画面显得更真实。首先将场景对象Sprite Renderer插件中的Sprite Sort Point参数设置为Pivot。然后在资源文件中将Pivot参数改为想要的点位。...
2022-05-09 12:08:43
436
原创 关于mac下vscode无法自动补全unity代码的问题
环境:系统:macOS BigSur版本:11.2.3芯片:apple M1untiy版本: 2021.3.1vscode版本:1.66.2vscode插件:C#、C# Extensions、Debug for Unity、Unity Code Snippets、Unity Tools问题:在macos系统下,vscode编辑unity代码时,无法自动补全。解决过程:网上很多这种情况,提供的解决方案基本这几个:检查unity项目设置里面framework的版本
2022-05-03 15:03:38
5004
4
原创 关于数据库性能消耗过高的问题
场景:ro东南亚服人数:50w同时在线问题:交易所服mysql占用cpu稳定60%,高峰阶段100%。影响:玩家操作交易所经常出现延时。原因:玩家上线时会查询一张表,搜索的字段未添加索引。解决方案:给对应表的搜索字段添加索引。结果:稳定状况下cpu使用率下降至6%。...
2018-12-04 21:50:47
402
原创 Linux命令——free
控制台输入free -m命令: total used free shared buff/cache availableMem: 64267 33905 22704 286 7658 29509Swap: 32416 ...
2018-02-09 16:27:42
981
原创 内存检测工具——addressSanitizer
Sanitizer系列是LLVM下的用来检测内存的工具,gcc4.8以上兼容。个人测试在某些方面兼容的不是很好,所以建议还是用clang。通过-fsanitize=address 来启动,也可设置为memory、leak,后面两个笔者未尝试过。asan可以检测很多内存使用上的bug,比如:内存越界、野指针、两次释放同一片内存、内存泄漏等问题。clang++ -fsanitize=address -
2018-01-18 17:22:52
4545
原创 lambda(c++11)
lambda表达式是c++11的新特性,可以使编程更简洁、更灵活。我们先来看一段代码:vector vec;class A{ public: bool operator () (int i) const { return i >=100;}};int main(){ auto it = find_if(vec.begin(), vec.end(), A());
2017-12-07 20:42:03
234
原创 关于互斥锁
顾名思义,在多线程下,用来锁定资源使用权限。我们先看一段代码:#include#include#include#includeint count =0;void *func(void* argc){ for(int i=0; i<3; i++) { printf("[before] tid:%d count:%d\n", pthread_self(), co
2017-12-02 15:01:00
274
原创 关于git的撤销
一般有以下几种情况需要撤销操作:1.修改完本地文件状态:所在位置:本地工作区撤销指令:git checkout filename2.git add状态:所在位置:本地stage区撤销指令:git reset HEAD filename3.git commit状态:所在位置:本地版本库撤销指令:git reset commitId (回退到对应版本,撤销之前版本记
2017-11-24 19:04:42
207
原创 自我反省(一)
近来状态不佳,工作虽然不忙,但并没有好好利用这段时间学点东西,却又为了虚度光阴而唏嘘不已。总结一下原因:主要是想法多且乱,啥都想学,啥都没学好,遇到困难就暂时搁置,真心有点三天打鱼两天晒网的感觉。很多时候努力只是努力的样子,每天早出晚归、勤勤恳恳、任劳任怨,但这些并不能证明你真的是在努力。雷军说,我们总是用战术上的努力去掩饰战略上的懒惰。所以,还是应该让自己放空一下,好好想想自己要
2017-10-19 15:16:17
288
原创 关于浅拷贝合深拷贝(二)
之前写过一次关于浅拷贝和省拷贝的帖子,当时是在用C#过程中遇到问题,然后简单总结了一下。这次是在写C++过程中遇到的问题,先上代码:#include #include #include using namespace std;class A{ public: A(const char* b, int l) { if(!b || !l) retu
2017-09-20 19:02:51
176
原创 关于C++中的placement new操作符
最近无意中看到一段代码,感觉很有趣,和大家分享一下。#include class A(){};void f(){ char buf[sizeof(A)]; new (buf)A();}int main(){ f(); return 1;}代码可以看出,f()中在栈上申请了一块sizeof(A)大小的内存,new (buf)A(); 这句代码其实是重载ope
2017-08-24 20:31:52
270
原创 #define中#和##的作用
#define中#表示将传入参数字符串化,##表示将两个字符串连在一起。例如:#define PASTER( n ) printf( "token"#n" = %d\n ", token##n )所以PASTER(11);相当于 printf("token11 = %d\n",token11);
2017-08-24 14:23:00
771
原创 关于C++中的类型转换(显式转换)
1> static_caststatic_cast(expression)运行时没有检查安全类型。父类与子类之间转换,上行安全,下行不安全。其他类型转换为void类型。void类型转换为其他类型(不安全)。int与enum之间转换。2> dynamic_cast主要用于类层次之间的类型转换,上行与static_cast一致,下行有类型安全检测,比static
2017-08-15 12:29:06
239
原创 关于C++中的类型转换(隐式转换)
1> 算术转换例:int I = 3; double d = 2.232; double x = I+d;2> 一种类型的表达式赋值给另一类型对象例:int* p = 0; I = d;3> 一种类型的实参传递给不同类型形参的函数例:extern double sqrt(double); sqrt(2); 4> 一种类型的表达式返回给不同返回类型的函数例:double
2017-08-15 12:19:18
236
原创 操作系统(一)
前段时间在找开发资料,囫囵吞枣的看了下,觉得还是维基的OSDev更专业一些,不过都是英文的,进展很慢。最近事比较多,个人状态也不是很好,项目计划搁浅了几天。希望可以早点恢复斗志,坚持下去。立足之地深挖下去,必有清泉涌出!
2017-05-23 12:14:23
224
原创 自制操作系统(序幕)
打算在两个月内写一个自制的操作系统,之前已经陆陆续续翻看了一些相关的书,不过现在还是一头雾水,不知该从何入手。万事开头难,后面会把开发过程中遇到的问题以及心得一一记录在博客里,每周至少更新一次。ok !lets go!!!
2017-05-11 09:59:53
179
原创 关于浅拷贝与深拷贝
1.如果目标对象为值类型,浅拷贝与深拷贝没有区别。2.如果目标对象为引用类型,浅拷贝只会拷贝目标对象的引用,即两边引用的是同一个对象,修改一边是会影响另一边的值;而深拷贝会构造一个新的对象,产生两个对象,修改一个对象不会影响另一个对象。
2017-02-15 10:49:01
194
原创 多字节字符串转宽字节字符串(windows)
windows函数 MultiByteToWideChar提供将多字节字符串转换为宽字节字符串的功能(参考windows核心编程2.8)。int MultiByteToWideChar(UINT uCodePage,DWORD dwFlags,PCSTR pMultiByteStr,int cbMultiByte,PWSTR pWideCharStr,int c
2016-12-27 20:00:05
939
原创 vs2010添加lib库的方法
1.直接在工程文件中添加lib文件。右键工程文件 -> 添加现有项 -> 选中指定lib文件。2.直接在工程中引用程序集。右键工程文件 -> 引用 -> 添加新引用 -> 选中项目。ps:适用于本地项目的lib文件。3.通过链接器输入lib文件。右键工程文件 -> 属性 -> 链接器 -> 输入 -> 指定的lib文件名。ps:需要在C++附加包含目录中输入.h文件的路
2016-12-22 11:10:33
2016
原创 关于jira安装过程中Sen和ServerID申请的问题
在jira的破解过程中遇到一个关于申请Sen和Server ID问题,花了我好长时间。在网上没有找到详细介绍这个过程的帖子,这里标记一下,可以给大家做的参考,也备以后再次用到。首先要到www.atlassian.com注册一个账号,这里有两点问题:一个是注册使用的邮箱126和163的都不能用。另一个问题是需要翻墙才能注册成功。注册成功后,登录账号便可以拿到Sen和Server ID。
2016-12-12 14:48:00
4133
2
原创 TCP粘包
前几天写了一个网络通讯接口,用的是.net的Socket库。昨天调试的时候出了个问题,发送端发送若干个数据包,接收端接收的时候发现少了一个。用wireshark截包发现发送端把其中的两个包合并成了一个发送。网上查了资料,这是由于tcp优化算法引起的粘包机制。接收端用的是BeginReceive接口,EndReceive返回的长度已经是多个包合并在一起产生的一个包的长度了。如果还
2016-12-02 11:18:05
330
原创 关于动态申请二位数组的问题
#include int n = 10;int **a; // 定义一个二维指针a = (int**)malloc(sizeof(int*)*n); // 申请一个大小为n个整形指针数组的内存空间,并赋给afor(int i = 0; i{ a[i] = (int*)malloc(sizeof(int)*n); // 申请一个大小为n个整形数组的内存空间,
2016-11-20 15:21:45
267
原创 Converter
泛型委托,由Array类的ConvertAll方法和List类的ConvertAll方法使用,将集合中每个元素从一种类型转换为另一种类型。例子:将由字符分隔的字串转为对应类型的liststatic List ToList(this string str, char spilt, Converter handler){if("" == str){return new Li
2016-11-17 10:56:35
303
原创 压缩字符串
命名空间:using System.IO;using System.IO.Compression;// 压缩 public static byte[] Compress(byte[] data) { try { MemoryStream ms = new M
2016-11-15 10:36:53
249
原创 获取模块句柄/基址
#include HMODULE h = GetModuleHandle(NULL);// 传入对应模块名,NULL表示取当前模块PS:可在属性->链接->高级->基址:修改基址
2016-11-12 17:12:16
9297
原创 wireshark简单过滤规则
1过滤源ip、目的ip。在wireshark的过滤规则框Filter中输入过滤条件。如查找目的地址为192.168.101.8的包,ip.dst==192.168.101.8;查找源地址为ip.src==1.1.1.1;2端口过滤。如过滤80端口,在Filter中输入,tcp.port==80,这条规则是把源端口和目的端口为80的都过滤出来。使用tcp.dstport==80只
2016-10-14 13:58:35
265
Go语言实战
2017-10-09
GO语言程序设计(中文版)
2017-10-09
Unity3D游戏引擎 脚本入门
2017-09-26
unix环境高级编程第2版
2017-09-10
炉石传说源码
2017-09-06
GDI+ SDK 参考.chm
2017-05-05
《深入理解计算机系统》第四章小实验Y86体系的实现
2017-05-05
UNIX源代码分析
2017-04-26
编译器是如何限制局部静态变量作用域的?
2023-03-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人