
C/C++
文章平均质量分 80
数据结构与算法
星江月
士不分心终有志,工能用力必成功!
展开
-
C++简单问题搞复杂之构造函数与初始化(模板类)
就好像枚举,如果两个枚举的项的名称相同,就会出现重名错误,而C++11新增的强枚举类型则可以重名;越扯越长,我们还是说说构造函数吧那是我对小姐姐,呸呸,对C++最感兴趣的部分原创 2022-07-15 00:02:27 · 1557 阅读 · 3 评论 -
C++简单问题搞复杂之构造函数与初始化(普通类)
行数多就多呗,语法简约就是效率、直观、自由;没错,然而人之初,性本惰,那些厌倦了malloc和calloc的人,外加其它原因,开始转向C++程序设计,于是有此文使用calloc分配内存后初始化为零,不是初始化吗?是,结构体的初始值,并非都是一样的,如:...原创 2022-07-14 22:26:38 · 549 阅读 · 0 评论 -
【经验分享】编译Python静态库嵌入C/C++程序之一直踩坑一直爽
很多年没写文章,一是太忙,二是反正也没多少人看(不过亿)既然三月是学雷锋活动月,那就分享一点什么吧~人工智能莫名其妙的把Python给点燃了,于是一个软件计划用Python脚本作为配置这样甚至很多中学生都可以写配置脚本来设置软件相关参数了Python本身是C/C++编写的,至于如何编译Python为静态库,这里不再赘述(如要求强烈我再另文详解)清单:Python 2.7....原创 2020-03-10 10:05:52 · 1781 阅读 · 0 评论 -
无聊,只发两张图……
文章没有200字,就不要提取了,已经够明白的了,要写程序的调用FindWindow/FindWindowEx;GetWindowThreadProcessId;OpenProcess;然后Read/WriteProcessMemory即可%%%原创 2013-09-09 23:40:05 · 1034 阅读 · 0 评论 -
勘误:HidRegisterMinidriver应在hidclass.lib而非hid.lib
参考msdn:http://msdn.microsoft.com/en-us/library/ff539835VersionAvailable in Windows 2000 and later versions of Windows.HeaderHidport.h (include Hidport.h)Library原创 2014-11-24 03:46:44 · 2161 阅读 · 1 评论 -
关于IOCTL_HID_GET_STRING和ProbeForWrite
用户模式也就是通常说的应用程序调用以下函数:HidD_GetManufacturerStringHidD_GetProductStringHidD_GetSerialNumberString会生成对应IRP给内核模式的hidclass.sys,其CTL_CODE分别为IOCTL_HID_GET_MANUFACTURER_STRINGIOCTL_HID_GET_PRODUCT原创 2014-12-01 01:55:26 · 2319 阅读 · 0 评论 -
致佳音: 推箱子游戏自动求解算法设计(一)
本来酷爱音乐, 老衲也想谱一曲之类, 通俗又有境界的曲子, 奈何没有那个水平, 也不是一个程序员做的勾当,于是就有了本文.希望莲花妹妹跟着思路走,能遗忘那些太多的忧伤……本文分以下四个小节:一、平面寻路算法(Alpha Star)二、闭合图形填充算法(扫描线种子填充)三、推箱子求解四、执行效率的优化日本人有个程序叫Sokuban Automatic So原创 2015-03-14 21:57:54 · 8512 阅读 · 2 评论 -
致佳音: 推箱子游戏自动求解算法设计(三)
这一节我们说说闭合曲线的填充,为什么会有这个东西呢当我们递归一个场景时,我们以推动箱子为标志,如果不推动箱子,那么跑到哪里都白跑,而出现重复的判别最好就是所有坐标相同包括这些坐标互换位置(排序结果相同),而后一个场景搬运工坐标能移动到另一个场景搬运工的位置(求解算法部分再详细说)由于场景有多个箱子,每个箱子可以有几个方向移动,反复的寻路效率不高,起初我想删除路径部分,只检测能否原创 2015-03-14 23:16:26 · 2476 阅读 · 0 评论 -
致佳音: 推箱子游戏自动求解算法设计(四)
这一节是本文的核心内容,即推箱子游戏求解算法的设计思路过程前面已经说过过,判断局面重复的最好标准不是局面完全一致,而是坐标排序相同且角色坐标通行如下图,角色无论怎么移动,不推动箱子的时候,都能回到原来的位置,算作同一个局面:再如下图,两个箱子互换位置,结果与没有移动箱子是一样的,所以排序箱子坐标以后一致,还是相同局面问:有必要判断局面重复吗?是不是只是提升一原创 2015-03-14 23:56:50 · 6029 阅读 · 0 评论 -
致佳音: 推箱子游戏自动求解算法设计(五)
说了这么多,这一节是本文最后一节啦,就是程序的进一步优化。这一节呢,还分那么几个小意思,- -!1.程序逻辑和机制的优化2.源码级代码的优化3.针对CPU和操作系统的编译优化问:大侠,我是过来人,排序哈希我渐渐习惯了,不痛了,还有哪些地方可以更刺激的答:前面我们提到检测局面重复,不要让后面的局面有跟走过的局面一样,导致无限的堕落,无法自拔,还有一样是可以算作原创 2015-03-15 00:35:13 · 3880 阅读 · 5 评论 -
关于编译型语言函数的调用(二)
接上文: http://blog.youkuaiyun.com/prsniper/article/details/40652451上文中提到的局部变量的地址,第一个是[ebp-4],由于32位内存对齐的原因,第二个是[ebp-8],对于VC7以上的版本,这个地址可能会不一样比如第一个可能是[ebp-8],第二个飞到[ebp-14],这是VS.NET的VC编译器在每个局部变量前后都加一个DW原创 2014-10-31 14:45:32 · 1666 阅读 · 0 评论 -
关于编译型语言函数的调用(一)
最终真是团团转,真可以说是好事做尽,坏事做绝,然而想想写点东西既有助于记忆,又有利于他人参考,所以还是决定抽点时间草书此文以前在有关破解的博文中也稍微提到这个问题,现在就深入一点去考究它吧狭义的编译一般指的是将程序语言代码转为CPU能执行的机器码,比如C++(VC++)VB6的主程序也是切实编译的,然而大部分却类似java,生成了中间代码,由虚拟机在运行时解释为机器码这原创 2014-10-31 13:29:11 · 1542 阅读 · 0 评论 -
关于编译型语言函数的调用(三)
接上文:http://blog.youkuaiyun.com/prsniper/article/details/40653235类delete就不说了,有兴趣的朋友自己跟踪看看吧,提示一下:析构函数也有参数和返回值.下面我们看下裸函数,裸函数从执行效率上是可以与汇编语言媲美的,然而它不太好逆过来说,我们就顺着说吧前面说得构造函数的临时堆栈,恢复寄存器等等,有人给了个名称叫prolog和ep原创 2014-10-31 23:29:59 · 1206 阅读 · 0 评论 -
关于控件的背景透明
世界上总是有些东西让你不得不用,因为别人都在用,比如钱和OLE世界上总有些东西让你很不想用,因为用起来很纠结,比如钱和OLE世界上总有问题时让你废寝忘食,以期解决它,还是他妈的钱和OLE 开发一个背景透明的控件,有很多方法了,比如很多用MFC的会重载对话框的OnCtlColor来透明子控件,效果不错但是这种方法仅限于MFC,即便扩展到其他C++编译平台,都可能不适用,更不用说转原创 2013-09-18 13:16:34 · 2241 阅读 · 0 评论 -
关于RECT结构体
先看看MSDN的说明:RECT StructureThe RECT data structure has the following form:typedef struct tagRECT { LONG left; LONG top; LONG right; LONG bottom;} RECT;The RECT structure de原创 2013-09-23 20:15:06 · 5158 阅读 · 2 评论 -
设计中的手写识别(输入法)笔画--中篇
之所以有此篇是因为上篇中的算法在不同人测试时得到不同的识别率,一个人的书法适应之后对另一个人的书法进行识别又降低当学习大量的写法之后,发现对单一写法的识别率反而总体降低了,因此需要借笔画识别来进行辅助,以大幅提高识别率当然,路不可能走QQ拼音的路 具体的算法就不写出来了,标题也没说我要公布算法,这里只提供DLL的输出函数说明,相关的动态库和DEMO源码在我的下载那里可以下载到不原创 2013-10-24 12:55:53 · 2525 阅读 · 0 评论 -
纯代码,你懂的
1. dump.h#ifndef __SPIDER_DUMP_H_#define __SPIDER_DUMP_H_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000typedef struct _CARDINFO{ DWORD dwIndex; // 牌的序号 _CARDINFO *pPrev;原创 2013-11-25 22:50:28 · 2788 阅读 · 0 评论 -
用C语言编写 Windows 服务程序的五个步骤
原文:http://www.vckbase.com/index.php/wv/1193Windows 服务被设计用于需要在后台运行的应用程序以及实现没有用户交互的任务。为了学习这种控制台应用程序的基础知识,C(不是C++)是最佳选择。本文将建立并实现一个简单的服务程序,其功能是查询系统中可用物理内存数量,然后将结果写入一个文本文件。最后,你可以用所学知识编写自己的 Windows 服务。转载 2013-12-10 05:54:23 · 1411 阅读 · 0 评论 -
发布一个图片抽奖程序
本来也不是什么特别高深的技术, 不过经常有网友问我要,很多年前在大学的时候用VB写过一个后来去深圳以后跟很多写过的程序都丢失了,于是用C/C++和GDI+重新写了一个这里发个介绍给下载站记录... 民主时代投票是解决问题的主要方式,然而很多情况下以1:1票数对立是还是需要随机解决。如:本公司是50人的小公司举行元旦晚会,公司做外贸,没有艺术专业的评委等。这就是石头剪刀布一直原创 2013-12-04 05:19:55 · 3272 阅读 · 3 评论 -
关于TextBox.Locked属性
几个月了,突然才发现草稿箱有篇翻译文章70%这样了没发表,干脆不管了.有时候真的发现时间就像乳沟,怎么挤还是那么一点突然写个小程序, 用文物级的VB6随便写两行代码, 又回忆起坑爹的TextBox, 虽然你设置了Locked为True, 不能编辑但是右键->粘贴仍然可以在光标处粘贴文字,,,当然啦,这里TextBox主要用于输出,其实地球人都知道TextBox就是Windows原创 2014-09-05 14:33:33 · 3180 阅读 · 0 评论 -
EM_SETLIMITTEXT(MSDN)
EM_SETLIMITTEXTAn application sends the EM_SETLIMITTEXT message to set the text limit for an edit control. The text limit is the maximum amount of text, in bytes, that the edit control can contain.转载 2014-10-24 15:45:16 · 1939 阅读 · 0 评论 -
关于推箱子自动求解源码的若干问题
1.当前的代码调整已经将工程重构为Venus,修正了几个无关痛痒的BUG,比如不能编辑等, 把两个Y改为一个X和一个Y而已,需要代码的新手可以直接联系我, 不重新上传了2.算法的缺陷如果解一个十分复杂的关卡,可能耗时较久,比如stage239一关:用日本人的工具可以在一分钟之内解完:不过也有一个问题, 消耗139次推动,628次移动.而使用我的算法的原创 2015-04-19 23:52:17 · 4401 阅读 · 14 评论 -
如何判断一个数是否是2的N次方
今天写一个小程序, 一个功能是用二进制位代表某种属性, 而程序则是图形化的配置这个功能于是, 就遇到了如何检测配置值是否是2的N次方形式的检测, 解决方法目前想到的有如下几种1.定义法由于N次方(幂)为N个数相乘,那么反过来一直除以这个数最终的结果将为1,且余数总是零int IsPower2(int n){ while(n) { if(n % 2) return原创 2015-10-16 18:22:18 · 2605 阅读 · 0 评论 -
Visual Studio 2012 IDE 对C/C++显示混乱
移植一个项目的代码到VS2012, 发现C语言文件居然内置定义了__cplusplus,编译无误, 但是IDE显示很多命名空间里的变量, 一大堆红色下划线因为命名空间是这样的:#ifdef __cplusplusnamespace XXX{#endif下面是IDE截图:编译不触发#error行, 但是在IDE下是卵了, 此外造成原创 2016-04-26 20:29:26 · 1002 阅读 · 0 评论 -
VS2012内联汇编异常
写一段代码,要获取CPU的时间戳计数,结果爆出ESP异常,代码如下: union { struct { UINT32 dwKey1; UINT32 dwKey2; }; UINT32 dwKey[2]; UINT64 nSeed; }; #if defined __arm__ || defined __mips__ nSeed = 0; #e原创 2016-12-05 10:14:52 · 1057 阅读 · 0 评论 -
VC6不支持强类型枚举
所谓的强类型枚举就是让枚举继承基础类型,比如枚举一年的月份,一年12个月,加上七七八八的附属说明不会超过一个字节typedef enum tagMonthEnum : char{ January = 0, February, ... MaxMonth = 0xFF} MONTH_ENUM;这样的好处就是,当枚举作为结构体或类的成员时,就可以限定占用1个字节原创 2016-12-28 10:52:31 · 877 阅读 · 0 评论 -
关于消息循环
最近尝试在多线程里使用消息队列代替事件和临界区原因很简单,内核对象太多维护复杂,虽然处理消息队列的逻辑也很复杂,但相对维护一堆内核对象句柄要容易得多而且,不影响执行效率(消息队列自动销毁,创建只要调用一次相关的API即可,比如user32.dll的函数)然而奇怪的事情出现了,在几个线程空闲时CPU占用率很高代码诸如此类: while(True) { // 获原创 2016-12-28 11:16:32 · 798 阅读 · 0 评论 -
从C到C++奇妙之旅(二)--结构体和类
其实用C++编译器,对C的结构体仍然可以添加成员函数都说类的魔法就是派生,结构体包含子结构体也一样,构造和析构和手动调用成员函数所以C++是没有必要的从某种程度来说,上面的说法是正确的就算是虚函数,也可以使用 fn1(),fn2(),fn3()...模拟重载感觉就像是类更方便而已,而结构体在内存管理上更让人心里踏实方便,易维护就是一种强大,如果你写一次代原创 2017-01-31 14:55:22 · 498 阅读 · 0 评论 -
从C到C++奇妙之旅(一)--宏和模板
一直以来很多人都有个误区执行效率和空间节省: 汇编 > C > C++ > 伪编译 > 脚本而可读性和工程维护则相反曾几何时,我也在这个误区中徘徊C性能比C++好的原理很简单,就是C是结构体和函数调用结构体的成员是直接访问的,而C++要通过接口,也就是成员函数事实上C++并不比C慢,甚至比C快,而且更好维护工程这也是为什么2012年以后我自己做了个游侠基础类库,原创 2017-01-31 14:35:54 · 1057 阅读 · 0 评论 -
一段代码,演示高速缓存命中的效率提升
#include <Windows.h>inline void demo_proc(int index){ for (int i = 1; i <= 10000000; i++) { demo_acc[index] += (float)(((i % 2) * -1) * 2 + 1); }}DWORD WINAPI DispProc0(LPVOID lpVo...原创 2018-03-02 00:09:11 · 581 阅读 · 0 评论 -
飞信聊天记录文件解密
前段时间,财务部的同事突然说飞信登录不了,经查发现飞信已经下线而和飞信既无聊天记录导入,也无导出功能,联系中国移动未解决建议不再使用此平台发送短信,然而数据还是要恢复的,因此... 注意:数据无价,执行代码前先对消息记录文件备份(位置:我的文档) 代码如下:// szKeyName 为密码, 微信账号(文件夹名称)int __stdcall FectionHist...原创 2019-01-17 11:51:02 · 2118 阅读 · 6 评论 -
变态的C/C++混合编程中的超自然现象
一句话说清楚的是 new 和 calloc 分配的内存重叠,然后直接上代码:// entryint main(int argc, char **argv){ class dummy { public: char *data; }; class dummy2 { public: int k; }; dummy *d = new dummy; d->data...原创 2019-03-21 21:03:09 · 444 阅读 · 0 评论 -
从此C/C++再无其他语法的脚本
一直以来,对于需要频繁改动或调整的功能部分,C/C++工程都使用如下方式完成:1.脚本扩展2.插件模块3.更新优点:脚本有着无可比拟的灵活性,可以在最终用户端修改代码,功能调整或BUG修复都可以插件拥有执行效率优势,毕竟是编译后的结果更新可以更好的保密自己的工程缺点:脚本的执行效率低下,且语法往往不与C/C++兼容,要求开发人员多才多原创 2016-07-30 13:32:51 · 1488 阅读 · 0 评论 -
体外诊断(POCT)之软件入口配置修改
世界上不存在完全相同的两片叶子,也不存在完全相同的两个软件,乃至不存在两个完全相同的产品实例为了软件能符合自身的实际情况去执行,需要修改一些配置文件,本节主要讲解如何配置入口配置文件入口配置文件的选择过程:软件运行时,会搜索主模块(VDE.exe)所在的目录(文件夹)中所有SettingsX.ini文件其中X代表数值,比如1,2,3,1000,9527等.(不同版本原创 2016-06-14 16:10:38 · 2612 阅读 · 0 评论 -
一段代码,演示Win32下超大文件读写
一段代码,演示在win32下读写4G以上的超大文件上限为unsigned __int64,4G的平方字节// ****************************************************************************************************// 文件: fs32demo\\main.cpp// 作者: 虎胆游侠(bl原创 2015-12-30 16:25:15 · 2523 阅读 · 0 评论 -
VS2012中C语言不支持匿名联合,导出函数不界定范围
不太懂新的编译器在编一个导出Free函数的DLL时遇到了莫名其妙的错误(Win7 x64,RAM 16G)文件main.cpp代码:#ifdef UNICODE#undef UNICODE#endif#include #include BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_ca原创 2016-01-24 01:17:02 · 1648 阅读 · 2 评论 -
关于BAT(CMD命令行批处理)如何获得返回值(进程退出码)的问题
在很多情况下,我们运行批处理只是执行一个例程,比如cls然而在某些情况下,我们需要知道程序执行的确切结果,比如安装补丁,驱动等等在WIN32编程中,可以使用CreateProcess得到进程的退出码多线程编程可以使用GetExitCodeThread等获得线程退出码,不再赘述而CMD命令行及其BAT批处理中,多数的文档只介绍了参数,而不太注重结果我们该如何得到批处理执行某个原创 2016-01-09 20:34:16 · 32743 阅读 · 0 评论 -
关于PEiD 0.95在Win7 Ultimate x64下崩溃的解决
最终逼不得已还是安装了Win7 64位 旗舰版在完成了虚拟机安装后,发现PEiD不能运行,无论兼容XP SP3还是管理员权限,一致崩溃于是写了个程序加载PEiD的插件,主要演示DLL的加载、目录遍历和控制台程序颜色的控制,代码如下:#ifdef UNICODE#pragma message("UNICODE defined!")#undef UNICODE#endif#原创 2016-01-15 06:33:04 · 2477 阅读 · 0 评论 -
循环冗余校验中的Adler32算法并没有所说的那么可靠
Adler32已经在很多地方替代了CRC32, 比如Zip宣称跟CRC32一样可靠而且速度快很多速度快是可以说得过去,不过使用余式表的CRC32速度也慢不到哪里去,而重要的是可靠性先看下Adler32的算法(选自V32.dll,游侠基础类库)V32NAKED VIU V32CALL V32Adler(PCRC32 lpEnv, PVI0 lpVoid, VIU dwSize原创 2016-06-24 13:44:51 · 3597 阅读 · 2 评论 -
体外诊断(POCT)之配置文件模块
对于.ini文件的读写, Windows API中有GetPrivateProfileString()函数可以直接使用然而,该函数是为16位应用程序兼容而保留的接口, 16位时代CPU性能差, 内存小到1M甚至只有64K, 在跟踪分析也发现该函数频繁的移动指针, 进行文件IO, 对于32位和64位平台来说, 性能很差, 于是基于基础类库开发这个模块功能特点:1.一次性将.i原创 2016-06-12 16:49:58 · 736 阅读 · 0 评论