自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (5)
  • 收藏
  • 关注

原创 求最大公约数,最小公倍数(c++)

最大公约数, 最小公倍数

2022-06-16 10:55:30 352 1

原创 Win平台高精度Sleep实现

获取时间戳GetTickCountWindows平台, 可通过GetTickCount和GetTickCount64获取时间戳。它们底层实现是一样的, 返回值的位宽不同。GetTickCount返回uint32_t,最大值2^32,单位毫秒, 系统运行49.71天必定发生绕回的现象,程序处理不好很容易出问题,不建议使用。 GetTickCount64返回的是uint64_t,5.8亿年左右才绕回,更加直观安全。QueryPerformanceCounter (QPC)Windows平台,可通过Que

2021-12-28 15:52:54 1992

原创 Win平台高精度Sleep实现

获取时间戳GetTickCountWindows平台, 可通过GetTickCount和GetTickCount64获取时间戳。它们底层实现是一样的, 返回值的位宽不同。GetTickCount返回uint32_t,最大值2^32,单位毫秒, 系统运行49.71天必定发生绕回的现象,程序处理不好很容易出问题,不建议使用。 GetTickCount64返回的是uint64_t,5.8亿年左右才绕回,更加直观安全。QueryPerformanceCounter (QPC)Windows平台,可通过Que

2021-12-28 15:47:26 1697 1

原创 Windows实现主进程退出,子进程自动关闭功能

需求:软件功能用多进程实现, 由主进程创建若干子进程, 当主进程崩溃时,创建出来的子进程需要能够自动关闭。方法1:进程通信,子进程检查心跳包,一段时间没心跳包则退出进程。缺点:1.实现起来麻烦。2.不支持第三方的程序,因为别人并未实现这些心跳机制。3.依然存在可能程序有BUG, 子进程卡死不退出的现象。方法2:通过作业对象(Job Object来实现), 作业对象是Windows系统提供的对加入作业的进程做特定限制的内核对象,可以对作业中的进程组统一做时间片分配,

2021-12-27 12:26:50 2827

原创 Windows 进程在指定CPU上运行

Windows系统 让进程在指定CPU上运行; 进程CPU group, affinity设置; JobObject的使用;主进程退出,子进程自动结束的实现

2021-12-27 12:14:24 2795

原创 C++11函数重载最佳实践

参数修饰情形在C++11里,一个类型std::string有以下4种情形。std::string s= "123";// 值const std::string s_c= "456"; // 不可修改的值std::string& s_ref = s; // 引用const std::string& s_cref = s; // 不可修改的引用假如我们实现一个Test函数传入std::string作为参数,我们会遇到以下情形的调用:Test(s);Tes...

2021-08-27 10:48:21 243

原创 c++11 std::enable_if在模板偏特化的妙用

1.模板自动推导功能。先看个例子:在调用TestTemplate函数时, 我们可以在函数后面加上<类型>无歧义地指定调用的版本。结果如下:由于模板参数在函数参数中的位置是固定的,编译器其实可以推导出参数的类型, 这样程序员们就可以不指定模板的类型来调用,代码更加简洁清晰通用,不会出现写错模板类型的错误,如下:模板自动推导是如此的美好,我们要好好地利用它。 在应用过程中, 也引入了一些问题, 有些情况, 编译器发现某些代码满足多个同名函数模板,无法决定特化成哪...

2021-08-06 15:15:58 4904 3

原创 C/C++移位操作

C/C++移位操作1.无符号数移位2.有符号数移位总结1.无符号数移位a.规定移动的位数必须是正整数,并且不得大于或者等于类型的位宽,否则行为不确定。例如:unsigned char移动的位数必须是[0,7]unsigned short移动位数必须是[0,15]unsigned long移动位数必须是[0,31]…b.无论左移还是右移,移出位数范围的丢掉,然后补0. 移动的位数可以是0,结果与原值相同。左移n位等价于乘以2的n次方。 右移n位等价于除以2的n次方。当左移丢掉最左边的1时,在

2021-07-30 15:53:34 2008

原创 C/C++除法与取模运算

1.除法运算。a.全是正数时,截断取整,去掉小数部分。128 / 10 = 12;120 / 10 = 12;119 / 10 = 11;b.当被除数或者除数出现负数时,可以理解成把负号提取出来,再采取上面一样的做法。(-128) / 10 = -(128 / 10) = -12;(128) / (-10) = -(128 / 10) = -12;(-128) / (-10) = - -(128 / 10) = 128 / 10 = 12;2.取模运算。a.全是正

2021-07-30 10:57:42 2441

原创 PTP精确时间协议

Precision Time Protocol (PTP) IEEE 1588PTP 是一种高精度时间同步协议, 在网络通过同步信号周期性对所有节点时钟校正。PTP一般在硬件级实现的,精度更高,常见的是直接在 MAC 层嵌入时间戳, 1588v1能达到亚毫秒级精度,1588v2能达到亚微秒级精度。1588v2本只用于设备间高精度时间同步,随着技术的发展,1588v2也具备频率同步功能。NTP是在应用层软件实现.精度在毫秒级别。同步过程:参考上图,同步过程有以下步骤:sync.

2021-05-04 16:21:56 3346 1

原创 c++数组初始化

c++数组初始化写法1.buf[size] = {0};char buf[4] = {0};上述代码执行以后,整个buf都初始化为0,跟我们大部分人的预想是一样。2.buf[size] = {value}; // value != 0char buf[4] = {1};上述代码执行以后, buf里的值是[0x1, 0x0, 0x0, 0x0]。 可能很多人会认为整个数组都会初始化成0x1,但是实际上不是的。3. 那么我们要把buf初始化成全是0x1, 该怎么写。c...

2021-04-27 11:10:55 6711

原创 sprintf, snprintf, _snprintf, sprintf_s 等的区别

1. int sprintf( char *buffer, const char *format [, argument] ... );如果成功,则返回写入的字符总数,不包括字符串追加在字符串末尾的空字符。如果失败,则返回一个负数。例子A:缓冲区足够放下整个字符串char buf[4];int sp_ret;sp_ret = sprintf(buf, "12%d", 3);成功, 返回3, 并且buf里的内容是"123\0" 一共4个字节。例子B:缓冲区不足cha..

2021-04-27 00:32:01 3891 2

原创 std::function用法

1.概述 std::function从c++11开始引入, 主要作用就是把任意的函数调用包装到一个对象里,并且这个对象,可以保存,传递,复制,然后在合适时间地点调用。 std::function是动态绑定的,函数或者类可以通过它实现,不改变任何代码,只需改变构造或者执行时传入的std::function对象就改变行为,类似多态的效果。 2.用法1.声明 std::function<int(int)> fn_half; std::function<int(in

2021-03-16 13:34:56 3817

原创 Ubantu搭建FTP服务器

安装vsftpd : sudo apt-get install vsftpd 配置vsftpd : sudo gedit /etc/vsftpd.conf 默认ubantu里面的每个用户都可以登录ftp服务器,并且每个用户登录进去以后,进入的是各自的home目录。可以添加一行local_root=/home/user/my_ftp_root 强制指定各用户登录进去统一的根目录。 可以通过命令sudo adduser test_ftp增加系统用户来增加ftp登录账户,并且可以设置目录权...

2021-03-04 11:45:00 161 1

原创 Ubantu Windows共享文件夹

新版本的Ubantu与Windows共享文件还是十分方便,只需要在桌面系统右键目录即可实现。 右键目录,属性。弹出以下对话框,有一个Local Network Share项,点击进去就有共享的设置参数。 选择共享此目录,以及是否允许访问者创建删除文件等选项。确认即可。 设置完成后,目录的图标会有所变化,右下角有个绿色圈的共享标志。 完成后,在Windows输入\\ip_address _of_ubantu 即可像访问Windows共享目录一...

2021-03-03 10:12:41 139

原创 Ubantu开机启动QT GUI

打开终端,运行gnome-session-properties命令。弹出以下界面,添加指定路径的qt程序即可。通常开机启动的程序,都伴随着程序崩溃自动重启的需求,gnome-session-properties不支持。因此,使用此方法,需要自己去实现进程监测。 可以添加一个命令行的程序(一般没人去退出它),功能就是简单的打开一个QT GUI程序,并且监测该进程,当进程退出或者崩溃时,自动再启动。...

2021-03-02 21:13:01 718

原创 Ubantu QtCreater生成程序无法双击运行

通过lsb_release -a 命令获取系统版本信息,得知我的系统版本是Ubantu 19.10 编译出来的QT程序,默认是shared library类型,因此不能双击打开,但是在terminal里运行是可以的。 在QT后缀为.pro的项目工程文件里增加一行 QMAKE_LFLAGS += -no-pie 重新编译程序,类型变成executable类型了,这时候双击也可以运行。 ...

2021-03-02 11:10:05 567

原创 Visual Studio 2017 Python开发

Visual Studio 2017开发python程序

2021-01-18 22:44:35 445 3

原创 好用的批处理

当我们做了一系列的操作,并且可预见我们以后还会重复,那么我们最好以脚本的形式保留下来。在Windows系统批处理通用几乎没有依赖成本的,拷贝就能用。

2021-01-15 15:18:00 905

转载 读写锁实现参考

import java.util.concurrent.Semaphore;public class ReaderWriterLock { public ReaderWriterLock() { readers = 0; readLock = new Semaphore(1); readWriteLock = new Semaphore(1); } public void writeLock() throws InterruptedException {...

2020-06-17 16:21:26 104

转载 GetAdaptersInfo返回错误码998

转载From:http://www.educity.cn/wenda/351190.htmlGetAdaptersInfo函数在64位系统下返回ERROR_NOACCESS的问题  实际应用中一个程序在长时间运行后内存占用较高时发生崩溃,从dump信息中,发现GetAdaptersInfo函数返回了一个奇怪的错误码998(ERROR_NOACCESS),百度搜索不到相关的信息。MSDN上GetAdaptersInfo函数的错误码正常情况下只有5种。并且一共发生的两次崩溃都出现在一台Win7 64位机器

2020-06-16 16:08:54 1203

原创 visual studio 远程调试

在开发的工程中,不可避免地遇到需要远程调试。例如我们只有目标机才有需要的硬件,又或者只有目标机才有足够性能等。Visual自身的远程调试功能十分强大,几乎与在本地调试没什么区别。你还在反复地改代码,加打印,重新编译,拷贝到目标机,运行看结果,再改代码改打印,重新编译...吗?重复是程序员的万恶之源,快来加入我们远程调试吧! 1.先在visual studio的安装目录搜索 Remote Debugger,找到远程调试工具。如下图。默认应该是C:\Program Files (...

2020-05-18 16:47:19 1648

原创 逐渐摆脱拖延

像你这么出色的男人,躲避是没有用的!这段时间越来越感觉自己的注意力有限,每天疲于奔命,依然是一堆问题等待处理,感觉效率很低,每天都因此过得不快乐。然后不断地去想,问题出在哪,该如何应对。 然后我发现,问题不处理本身可能不是大问题,真正值得我们重视的大问题是,未处理的问题,它会一直占据你的脑海,拖着你,一直吃掉你的注意力和意志力,导致你做其他事情的效率大幅降低,无法...

2020-04-03 11:47:58 105

原创 VS2015编译protobuf3

下载了protobuf3的源码,想在vs2015里使用。里面没有visual studio的工程。 上网了解了一下,可以用CMake工具来生成指定编译器的工程,CMake是一款开源跨平台的软件,写好一份平台编译器无关的配置文件,然后在具体的平台里,自动生成本地的makefile或者项目工程。 下载好CMake, 在Windows有gui界面,选定...

2020-03-31 00:19:31 381

原创 Windows CPU 分组问题

当Windows的CPU核数超过64以后, Windows会自动分组。以下是我在Windows 2016系统测试到的行为:1.一个进程只能绑定一个CPU分组, 线程则没有限制。2.进程设置CPU分组,取决于第一个线程所绑定的CPU分组,这个系统是有一定的记忆但是也是随机分配的, 如果要设置进程到某固定分组,则需要改变第一个线程分组,再设置进程affinitity。3.当设置...

2020-03-26 12:11:13 4360

原创 好记性不如烂笔头-开始记录吧少年

记忆力是有限是事实,很多当时搞得很熟,以为自己能记住的事情,一段时间后照样会忘记,这是人的特性,我们无法回避它。我决定接受它,为了弥补大脑的缺陷,通过做笔记的方法,让一些我们认为重要的知识,理解,记录下来,以后能随时在短间里翻出来,这样达到跟我们完全记住比较相近的结果,也是很不错。 之前我有记录一些东西到电脑上,最近经过了一台电脑中了加密病毒,一台电脑无法开机以后...

2020-03-26 11:21:22 135

转载 如何跟踪MFC源码

PDB文件,英文全称:Program Database File。保存着调试和项目状态信息,并且使用这些信息可以对程序的调试配置进行增量链接。当在Visual stido使用 /ZI 或者/Zi方式编译c/c++程序时,将会生成一个以该项目命名的.PDB文件。    如果没有PDB文件,将无法查看堆栈里的具体信息,以及查看源码的功能。    如果我们想跟踪MFC的源码,必须要有相应的P

2013-04-26 01:39:50 1327

原创 Visuals studio 2005项目属性配置要点

要编程开发产品,除了对编程语言的运用外,还需要一个协助你编程的环境。现代的开发工具功能异常强大,方便地重构,代码自动补全,各种调试神器,让你做起事来事半功倍。我是用Visual studio 2005来做开发的,今天猛地发现,原来对这个环境还有很多东西值得我们去探究。Debug 和 Release的区别    Debug顾名思义就是调试版,生成的程序没有经过优化并且包含跟踪需要的调

2012-10-10 15:39:53 926

原创 Windows socket之最简单的socket程序

最简单的服务器的socket程序流程如下(面向连接的TCP连接 ):1. WSAStartup(); 初始化网络库的使用。2. socket(); 获得一个socket。3. bind(); 把获得的socket绑定到一个ip 和端口。既然作为服务器, ip通常为本地IP127.0.0.1。4. listen(); 监听已经绑定了指定端口的socket。5. accept();

2012-02-03 16:17:54 10602

原创 在Windows下配置apache跑fcgi程序

FastCGI程序可以用c++语言来写,使得我们在动态生成一个网站的时候可以更加灵活,除了调用c++库之外,还可以加入平台的API,本来在linux下跑起来的fastCGI程序,没想到移植到Windows平台下还是会出现很多问题,当你抓破脑袋都想不出问题所在的时候,非常打击人的。

2011-10-13 16:51:01 3938 2

原创 实现类似路由器那样通过WEB页面配置设备

实现通过web来与其他进程交互        要像路由器那样,通过访问一个网页就能配置设备,实质上是web服务器与其他进程的通信问题。关键在于,我们的web服务器收到浏览器的请求时能够通知另外一个进程来处理。通常配置一个设备的程序可以用高级或者低级语言来实现,但是苦于不知

2011-08-19 14:04:52 14963 3

原创 QT多线程

Qt多线程1.QThread类           QThread类并不是代表一个新的线程,而是QT提供的一个接口,用于控制一个子线程。每个QThread的实例就代表着对一个新线程的一个控制类。对于第一次使用QT多线程的人,或许就会很迷惑很不适应。        QThread提

2011-07-26 16:39:43 10777 5

原创 JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础

<br />这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考。<br />为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问题,特别是乱码问题,我觉得组成一个系列来描述和分析更好一些,包括三篇文章:<br />第一篇:JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础<br />第二篇:JAVA字符编码系列二:Unicode,ISO-8859,GBK,UTF-8编码及相互转换<br

2010-11-03 18:32:00 652

原创 QT文本编码

QT中的QString内容使用Unicode作为文本编码。但是实际系统中通常采用的是其他编码,例如GBK,utf8等。为了便于兼容这些格式,QT中还设置了两个字符串类型:QCString类: C类型字符串,必须以0结尾,也就是中间不能含有0. 例如GBK编码的字符串QByteArray类: 中间可以含有0.例如utf8编码的字符串为了便于编码转换,QT还提供了一套具备扩展性的编码转换器:QTextCodec这个类定义了编码转换器的接口,可以以插件方式继承这个类,实现各种编码转换器。当然,QT也内置了多种编码

2010-11-03 11:20:00 6262 1

原创 Qt Creator使用体会与小技巧(转)

<br />     Qt Creator是Qt官方的IDE,这个IDE为Qt编程人员提供了一个完整的开发环境。当然了,这个IDE是用Qt写的,也是免费的。这个IDE真正的编译部分使用了MinGW gcc compiler。也就是说,这个IDE主要的作用是协助开发人员编写代码,并以更加友好的图形界面方式(而不是命令行)使用MinGW。下面我以MS Visual Studio作为参照,讲一些在Windows平台上Qt Creator的使用体会与小技巧。<br /> <br />1.       工程文件与项目

2010-11-03 10:18:00 895

原创 如何使用VC2005编译“真正”的静态Qt应用程序(转)

如何使用VC2005编译“真正”的静态Qt应用程序(转)2009-10-10 10:30<br />原帖位置: http://www.qtcn.org/bbs/read.php?tid=13825<br />如何使用VC2005编译“真正”的静态Qt应用程序<br />(我非常讨厌引用或者转载别人的文章的时候不注明地址或者作者,希望读者能够改变我这个观点 :) —— 夏威夷雪人)<br /><br />(下文只涉及windows,不谈及linux、unix等,另外,这里说的VC2005,是因为我用的是200

2010-11-03 09:41:00 874

原创 开始实习了

真好。。。要把自己埋进去才行。

2010-11-03 09:39:00 446

Win平台高精度Sleep实现.pdf

Win平台高精度Sleep实现.pdf

2021-12-29

Qt设置窗口图标以及程序图标

Qt程序设置窗口图标以及程序图标 开发环境 Windows + vs2005(已集成Qt) + qt designer 设置应用程序还没打开时,显示的图标。 以及应用程序窗口打开后,窗口显示的图标

2013-04-24

VC 访问MYSQL 示例

一个例子分别用ODBC 、ADO 、和CAPI 连接MYSQL。 要有一点的VC基础。

2010-04-27

汇编语言简单教学 要有C基础

介绍汇编语言基础 并有2个汇编的源代码让你分析。 比较简单话,也不够详细,只是把一些重点的部分写出来,给大家更容易的了解汇编而已!

2010-01-07

把一个数转化为d进制的数

输入任意一个数,输出该数的d进制的数 d的范围在2~32 参考参考

2010-01-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除