自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 个人编码习惯——C++(持续更新)

private/protected函数使用小驼峰,如createWindow public函数使用大驼峰,如CreateWindow 时间变量前缀,tmXXX表示time_t类型,ulXXX表示uint64_t类型,uXXX表示uint32_t类型 命名空间无特殊情况统一小写 分层设计时,某一层的门面头文件不可包含另一层的门面头文件,如ui/ui.h不可包含dao/dao.h 代码段推荐注释方法 头文件#ifndef定义方式推荐如下,VS“菜单-工具”自带了GUID生成工具 当无法确定一个函数

2021-11-23 13:46:53 616

原创 如何用Qt实现一个无标题栏、半透明、置顶(悬浮)的窗口

在Qt框架中,要实现一个无标题栏、半透明、置顶(悬浮)的窗口,需要一些特定的设置和技巧。废话不多说,下面我将以DrawClient软件为例,介绍一下实现这种效果的四个要点。在窗口的构造函数中设置窗口的样式,在强调一下,一定要找构造函数中设置,否则有些平台可能无效。

2024-02-17 12:36:47 1492

转载 Windows GTK+ 环境搭建(详解)

Windows GTK+ 环境搭建最近要做界面的一些东西,但是对微软提供的类库MFC不是很熟悉,里面封装了大量的Windows API比较麻烦,然后就想着其他方式吧!Qt、GTK+原本想学学Qt的,Qt跨平台、文档也多点,使用也更广泛。但是Qt的插件一直没有下载下来,然后就先学习学习GTK+吧!在网上搜了好多关于Windows GTK+环境搭建的方法,但是很多说的都不是很清楚,所以自己就参考了一些文档,在官网上下载了所需的环境文件,自己搭建了GTK+的环境。并进行了详细的记录,以下是主要内容。好了,言归正传

2022-06-14 23:02:26 2082 1

原创 初学python必掌握的三个内置函数

dir:列出包、对象的所有成员;help:打印包、函数、对象的帮助文档;type:查看对象的数据类型

2022-06-07 15:29:38 135

原创 对六大设计原则的理解

我是野路子出身,因此教科书式的知识我接触的相对较晚,二十三种设计模式可能是在2017年首次接触的,而六大设计原则是2020年才首次听闻。这么久以来,我一直对这六种设计原则理解的比较浅显,因为我总觉得他们之间的界限不够明确,存在很多重叠的规则。 ̄□ ̄||但从个人的项目实践经验上,我还是有一些个人的理解,在此记录,也作为分享。对于一个多模块系统软件,大致上可以理解为:模块之间应尽可能采用接口调用方式,即面向接口编程,这样可以在一个模块改动时对另一个模块影响最小; 模块里类的业务功能设计,遵循单

2022-04-26 09:08:52 177

原创 x2lib——一个C++基础库(整合了一些工具类、框架类、轻量开源库)

x2lib: 一个C++基础库(整合了一些工具类、框架类、轻量开源库)

2022-04-19 17:16:01 134

原创 如何关闭WinDefender(亲测有效)

Windows自带杀毒软件经常会出现MsMpEng.exe占用CPU高,且无法结束进程的问题。该方法理论上适用于任何windows版本,甚至适用任何不想让其启动的程序。方法(以MsMpEng.exe为例):Step1:系统运行状态下记录下MsMpEng.exe的路径。Step2:关机重启进入PE系统。Step3:找到MsMpEng.exe文件,右键使用记事本打开,随便删除一段内容,保存。Step4:重启系统,搞定!下图是我更改后的MsMpEng.exe,为防止意外做了备份Ms

2022-04-16 12:47:45 5183

原创 几种避免死锁的思路

总原则:仅可能的精细化使用锁。1. 使用原子操作;2. 使用读写锁或递归锁,代替互斥锁;3. 借鉴双缓冲原理,比如在释放一个中的元素时,通过原子操作先将其放入一个缓冲区容器,在该缓冲区统一进行释放。暂时只想到这些...

2022-04-06 22:26:22 316

原创 一个增强版单例模板(介绍看注释)

namespace x2lib{ namespace xUtils { /** * @brief 增强版单例模板,三个特点: * 1.代码精炼,仅需一个.h文件; * 2.支持对单例对象进行初始化和反初始化; * 3.支持在初始化时向单例对象传参; * @param[in] T 欲设为单例的类 * @param[in] Args 构造函数参数类型 * @author xktesla */ templ.

2022-03-25 14:34:14 322

原创 DrawClient技术总结(不定期更新)

前言DrawClient是前段时间刚发布的一个windows看盘助手,融合了我这些年的技术积累,也是我个人兴趣与技术的结合。我将努力保证这个软件体积永远不会超过10M,即便第一个版本就已经9.7M——软件体积不能过大是我对一个软件的第一要求!这篇文章用于记录该软件所用到的技术点以及软件架构。另外,软件服务端也采用纯C++编写,支持windows/linux跨平台。主要技术点【个人编写】x2lib::AppLoad 模块加载框架类(同步/异步,进度通知);x2lib::StrUt.

2022-02-10 20:13:56 485

原创 将带捕获的lambda转换为函数指针

如果你和我一样,曾经苦苦寻找一种“lambda转换为函数指针”的方法,结果在你使尽浑身解数搜索后,发现网上的答案基本都是针对“不带捕获”的lambda。但是当你看到这篇文章的时候,恭喜你!找到了。将“带捕获的lambda”转换为函数指针的方法很简单,如下图:但是!!!这种方法可能存在隐患,具体什么隐患?我暂时也说不清,不过可以告诉你的是,之所以编译器默认可以将不带捕获的lambda转为函数指针,而不能将带捕获的lambda转为函数指针,是因为从根本上讲,带捕获的lambda被编译器解释成了对

2022-02-09 18:43:21 3970 8

原创 派生类对象无法访问基类同名函数

标题即本文结论,但关键点在“同名”二字。关于“同名函数”这四个字,在学习C++继承时可能会在两个地方遇到,一个是函数重载,一个便是继承重写。在学习重载时,课本应该有类似表述:函数名相同,但参数列表不同;在学习继承时,课本应该有类似表述:派生类会隐藏基类的同名函数;又由于一般都是先学重载,后学继承,因此很多人会将这两处的“同名函数”的含义搞混淆。而实际上,继承中的“同名函数”,指的仅仅是函数名相同,而参数列表可同可不同,也就是说,只要派生类中出现了同名函数,那么基类中的同名函数都将被隐藏,老规矩,上图

2022-01-24 14:47:46 543

原创 你怕不是对unordered_map有误解吧?(附插入顺序和读出顺序相同的maplist)

早期接触stl容器时,都知道std::map有自动排序的特点,有时候业务恰巧需要避免这种排序,便认识了std::unordered_map,正如它的名字——“无序map”。然而,此“无序”可能并非彼“无序”。正确的理解应该是“胡乱排序map”,因为该容器不保证插入顺序与读取顺序一致。如下图所示:怎样?如果颠覆了您的认真,麻烦给本文点个赞。暂时未找到stl有能保证插入顺序和读取顺序一致的键值对容器,迫于无奈,我使用std::list和std::pair实现了一个简易顺序键值对容器(即用例中的map

2022-01-20 17:02:39 1811

原创 (C++11)std::regex确实存在bug

最近半年已经是第三次碰到。第一次碰到时没仔细深究,换做boost结果可以了,然后就过去了;第二次又碰到匹配失败,结果发现是宽窄字符的原因,改过之后发现可以了,当时我还告诫自己“不要轻易怀疑权威!”但是抱歉,今天又遇到了,而且这次排除了各种可能的原因,千真万确定位到是stl的问题!编译环境: VS2010工具集(根据资料显示支持不完整的C++11); boost_v1.59; win10_x64;第三方网址匹配结果也是true,唯有stl匹配为false

2022-01-19 21:07:20 725

原创 程序猿炒股

今年是我入市的第四年,战绩如下图。简单总结一下,第一年凭本事亏掉50%,第二年第三年凭运气赚了40%,第四年凭实力赚了10%,现在基本上盈亏平衡。我一直将炒股认作是少有的几种合理的“不劳而获”的赚钱方式之一。我一直很坚信股市可以赚钱,即便是亏损50%的时候。这几年我一直在钻研炒股技巧,并且自认为已经有一些有效成果。另外,我还在开发一款自动炒股软件,由于是业余时间开发,效率并不高,已经持续了一年时间,但我的策略一直很清晰,预计2022年年中可以达到初步上线标准。同志们请拭目以待...

2021-12-31 20:37:14 335

原创 C++如何限制模板类的类型

在使用泛型编程时,有时候会有类似需求:要求T只能为某个类,或某几个类,那应该如何实现?据我所知有3中:使用模板函数; 使用typeid函数; 巧用static_cast;前两种学习理解起来都比较复杂,以后有空了再更,暂时只介绍第3种,示例和方法如图:...

2021-12-29 13:59:56 3933

原创 一个好用的C++ string Format“函数”

我这个人总是喜欢在写代码时追求极致,比如总是纠结于变量的命名,内存的消耗,执行的效率,接口的便捷性,代码的可扩展性。。。但很多时候需要在他们之间做取舍,这就导致我在编码时经常陷入僵局,唉。。。真是程序员的可悲,为此几年前我还专门将自己的CSDN签名改成了现在这样。今天我又带来一个函数,挺不起眼的,但是也分享一下const std::string& StrUtil::Format(const char* pszFmt, ...){ va_list body; va_start(body

2021-12-26 12:01:26 1744

原创 我们的研发项目B现状及问题

基本情况(截止2021-12-08):开发环境:VS2010工具集代码量(.c;.h;.cpp,不含第三方库和基础库):285万行工程个数(不含第三方库和基础库):200个SVN分支数:107个让人诟病的问题:VS2010工具集对C++11不够友好。但由于个别项目依赖了旧版本lib,一直没有升级工具集。 编译环境搭建过于复杂。以至于同事们都只能从官网下载之前的安装包,解压后覆盖到生成目录,才能保证编译出的程序能正常启动。【离谱...

2021-12-26 10:09:31 498

原创 C++实现Split

/*** @brief 分割字符串,使用方法如下:* std::vector<std::string> vecFiled;* Split("1,2,3,4", ",", vecFiled);* @param[in] str 欲分割的字符串* @param[in] div 分隔符* @param[out] vecFiled 存储子串* @return 失败返回-1,否则返回子串个数* @author xktesla@2..

2021-12-23 20:29:11 1508

原创 纯C实现的高效好用的Split

先上效果图,代码在最后/*** @brief 分割字符串,并将其保存到pStrs。使用方法如下:* int nStrs = Split("1,2,3,4", ",", nullptr);* char** pStrs = (char**)malloc(nStrs); // 或 char pStrs[m][n]; 只要保证m*n>=nStrs即可* nStrs = Split(str, div, pStrs);* free(pStr.

2021-12-23 19:50:28 716

原创 从2345离职的原因

不知不觉已经从2345离职近一年。2345是我目前为止待过的最有名气,市值最高的一家公司,也可谓是我的职业巅峰了。可惜我只待了半年。当初离职并非我的主观意愿,而是在三重因素的叠加下,不得已离职。第一件事,是我和一位同事在一个项目的协同开发中发生了严重意见分歧,我们在一个星期内连吵了4次架。他是P5的老员工,我是P3,当时新开了一个项目,他作为业务层主力开发兼项目负责人,我作为ui层的主力开发。在涉及到模块间对接时,发生了分歧,我要求他向我提供模块之间的调用接口,调用流程,调用方法。得到了他直截了当的拒

2021-12-16 22:34:23 124

原创 迪米特原则与需求变动的较量——类中函数设计

作为一个开发,最头疼的莫过于需求频繁变动,遇到一个高水平的产品还好,但如果你家产品总是靠着拍脑袋写需求,那简直是噩梦。我在刚毕业时遇到过一个,现如今又遇到一个……六大设计原则中的迪米特原则,提倡的是暴露最少接口,适用于系统与系统对接,模块与模块对接,类与类对接,甚至类中的函数互调。当我们预判到需求可能会发生变动时,在不便沟通时,如何在迪米特原则和可能变动的需求之间取折中解?——需求变动后代码改动最小,且改动对类的内部结构影响最小。首先要具备由顶层设计思维(本文指由类中设计),然后我的方法您才会觉得有

2021-12-11 12:04:04 165

原创 一种更合理的面试方案

我是个“个性鲜明”的人,我指的是做事风格,并非社交性格。有个成语可以一定程度上形容我——愤世妒俗。我讨厌一些传统制度,主要有:统考制,传统婚俗,传统面试。毫无疑问与制度对抗的人基本都没有好下场,我也一样。暂且不讨论我在面对统考制和传统婚俗时的做法。传统的程序员面试,一般分为三阶段:面技术,面管理,面人品。我总觉得面试和统考很像,我指的是,两者在筛选人才上都同样极具盲目性。有三个问题我想问问用人单位或教育部:所有人都一样吗?并不是。所有人都将一样吗?也并不是。所有人都应该一样吗?当然也不是。

2021-11-23 08:52:13 210

原创 对sqlite3二次封装——提供更人性化的接口

先看一段使用方法:另外,关于代码中的字符串动态加密,可使用x2lib中的MixPool类SqliteDB.h#ifndef _20266D69_1291_4C2A_8708_56BE03DB0B74#define _20266D69_1291_4C2A_8708_56BE03DB0B74#include "depends/incfile.h"#include "../../../sqlite3xx/include/sqlite3xx.h"#include "xCores.h"

2021-11-09 09:13:24 438

原创 链表性迭代器不会因为元素个数变化而失效

2021-11-04 14:49:57 59

原创 怎样能做好公司——个人见解

我没开过公司,只是一个履历较多

2021-11-04 13:15:01 180

原创 git是个神器

2021-08-03 16:22:24 57

原创 一种优雅的单例写法(三个特点)

该方法从订阅器(Mailer)中抽提出来,详情查看 https://blog.csdn.net/xk641018299/article/details/111461454// 特点:// 1. 可免去创建一个cpp文件:假如单例类比较简单,只需要一个.h文件,通过设计一个_get_static_ptr_()可以免去专门为初始化一个静态成员变量(如s_pInstance)而创建一个cpp文件。// 2. 可在需要的时候对单例对象进行释放:可通过UnInitialize()在必要

2021-05-13 10:05:48 117

原创 一个基于消息循环的定时器——TimerCall

之前写过一个TaskRunner,里面有对Timer的支持,但是是基于时间戳的定时器。这次的TimerCall是一个基于消息循环的纯定时器。/*************************************************************************** Copyright(c) 2016-2021 hicker** All rights reserved.** Name : TimerCall.h** Desc : 一个基于消息循环的定时器**.

2021-01-16 09:10:14 296

原创 C++奇技淫巧之一——通过static_cast做编译时模版类型限定检查

2020-12-29 09:05:10 328

原创 Mailer——一个优雅的订阅器(支持多线程),接口简单且强大

/*************************************************************************** Copyright(c) 2016-2025 faker** All rights reserved.** Name : Mailer.h** Desc : 一个高级订阅器,接口简单但强大。** 主要特点:** 1.可满足类级[通过继承INotifier/IReceiver]和函

2020-12-20 19:44:08 217 1

原创 DataCacher——一个数据缓冲器,支持多种底层传输协议(Socket、管道等)

#ifndef _E5295BC9_8074_44E9_A754_2B8ADCCB3004#define _E5295BC9_8074_44E9_A754_2B8ADCCB3004#include "depends/incfile.h"#include "CFunc.h"#include "xCores.h"#include "SysUtil.h"namespace x2lib{ /*************************************************.

2020-12-18 09:23:15 309

原创 两种获取桌面图标的方法,以及查看几个系统图标隐藏状态的方法

通过跨进程读取SysListView32获取// 主要流程// 初始化OleInitialize(NULL);// 获取IShellFolder对象CComPtr<IShellFolder> pShellFolder;SHGetDesktopFolder(&pShellFolder));// 获取item集合IEnumIDListCComPtr<IEnumIDList> pIds;pShellFolder->EnumObjects(0, .

2020-12-11 14:03:37 872

原创 简单好用的轻量C++ JSON库MemJson

开源(地址见文末),只有一个类MemJson,主要成员函数有:1.Put:向当前DatX对象添加一个KV,当K已存在时会进行值替换,返回当前DatX的引用;2.Get(s):从当前DatX对象获取K==s的KV对,仅支持有键名的元素;用XTY包装并返回;3.Get(i):从当前DatX对象获取第i个KV对,支持所有类型元素;用XTY包装并返回;4.Put:向当前DatX添加一个有键名元素,一般用于添加键值对元素,返回当前DatX的引用;5.Add:向当前DatX添加一个无键名元素,一般用于添加

2020-11-28 14:50:34 287

原创 一种触发vs链接事件的机制

如下图,在“生成后事件”中加上一个命令,删除某个ilk文件,我写的是生成的目标文件对应的ilk,这样影响最小

2020-11-24 11:24:47 96

原创 x2lib——一个C++工具库,包含文件操作、字符串工具、系统工具、网络工具、PE工具、管道、线程池、任务机、广播器、数据缓冲器等。剥离出一些类开源,持续更新

https://github.com/fakerXue/TaskRunner

2020-10-21 14:14:36 543

原创 两个比较屌的vs插件

再加个Web Browser

2020-09-17 17:53:21 97

原创 强制把成员函数指针当成一般函数指针用

class A{public: int func(void *p) { return 0; }};int main(){ A a; typedef int(*pfunc)(void *); typedef int(A::*pfunc2)(void *); pfunc2 f2 = &A::func; int b = *(int*)&f2; //__asm //{ ...

2020-09-17 13:46:42 148

原创 新手的神奇bug——ImportError: cannot import name XXX

99%的概率是自己项目的文件名与系统文件名重名。一张图解释

2020-06-05 08:32:08 466

原创 小程序自定义弹框组件popWindow,支持text,input,radio,check,详情看演示

主要功能:1.可以自定义四种格式:text,input,radio,check;2.可以自定义按钮个数【0~n】,并可以为每个按钮增加自定义回调;3.支持下部显示tip;4.主要方法:popWindow.showText,showEdit,showRadio,showCheck;接下来看效果:代码如下:popWindow.jsconst util ...

2020-02-14 15:55:07 434

C# ListView中添加多种自定义控件源码

C#的ListView添加各种自定义控件,CheckBox,ComboBox等

2018-01-15

系统音量控制源代码 支持win7和xp

win7和xp的系统音量调节源码

2016-12-22

DAEMONToolsLite虚拟光驱免安装破解版

DAEMONToolsLite是一款很受欢迎的虚拟光驱软件,此为绿色免安装,破解版,直接点击active即可

2016-12-22

123播放器 V2.0

采用WIN-API编写,对1.0版增加了一些功能

2012-03-11

123播放器 V1.0

用纯WIN-API编写,有播放,暂停,停止,下一曲,上一曲,打开文件,双击列表播放。相信对初学API编程的同仁有一定帮助。还有一版2.0是改进版

2012-03-11

空空如也

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

TA关注的人

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