- 博客(62)
- 资源 (4)
- 收藏
- 关注
原创 vm linux网络配置
vmware NET模式网络配置注意 问题 配置好了网络后,怎么主机和虚拟机linux怎么也连接不上。 如果网络配置没有问题,复位vimware的网络配置功能 参考 https://blog.youkuaiyun.com/axing2015/article/details/81516627 ...
2021-01-30 14:31:03
382
原创 Bug定位体会
有的时候,当出现一些自己不认为不可能出现的错误的时候,在反复检查代码的过程中,也没有发现问题,这个时候,就不用太纠结在自己的代码上。 要知道,你认为的代码没有问题,那只是你认为,有的时候,一些显而易见的错误,自己检查代码的时候,可能定位一整天也定位不到,但是其实是一个很小的问题。 这个时候,就需要实际运行调试,在出现错误的机器上面调试,问题复现的时候,就会很简单的找到错误,比起自己埋头检查代码要好很多。 复现问题,打日志调试,调试!!!! 不要老是埋在代码找问题,有时候很简单的错误就是找不到,.
2020-10-26 16:06:18
330
原创 POCO网络库
最近研究如何将POCO网络库应用在高并发项目中,发现POCO在windows下面使用select模型,不适合做高并发的TCP服务器。 当然用作HTTP服务器是可以的,因为HTTP服务器实现是这样的。 通过线程池来管理多个HTTP连接,当并发连接超过最大的线程池数量的时候,连接排队等待线程处理中,只要处理速度足够块,高并发请求也可以响应,因为HTTP连接处理完成后,就断开了。 但是如果是需要长连接,这种处理过程就无法满足了,而提供的select模型也不能应用,当然在linux下面可以使用epull.
2020-10-13 23:28:04
1188
原创 C++继承中析构资源注意点
问题 在使用自己实现的线程类的时候,偶尔会出现奔溃 virtual ~thread() BOOST_NOEXCEPT { try { ensure_thread_over(); } catch (…) { //avoid exception; } } class MyThread : public utils::thread { public: void run() { _run(); } std::function<void() > _run; }; 这里, _run会析构掉,然后 ~thr
2020-09-16 11:09:43
303
原创 STL condition_variable一个bug
测试STL的 condition_variable 发现一个BUG VS2019运行如下代码时 // condition_variable::wait_for example #include <iostream> // std::cout #include <thread> // std::thread #include <chrono> // std::chrono::seconds #inclu.
2020-09-09 21:43:37
468
原创 有关内存分配,赋值的时间测试
有关内存分配,赋值的时间测试 #include <iostream> #include <common/utils.h> #include <common/TimeSpan.h> using namespace std; void Test(int mem_size) { cout << "========================" << endl; cout << "Test mem size = "; if (me
2020-08-21 00:27:15
421
原创 关于boost log库
最近使用glog遇到一些问题,想着尝试使用boost log,然后开始研究源码,在使用一个库之前,我必须能对源码有掌控,但是研究了几天后发现,实在是太复杂了,代码量很庞大,很多东西都是自己实现,包括ostream 都是自己实现的,让看的人很痛苦,比起 stl 源码,stl源码是很简单易懂的,所以放弃使用, 当然boost也有简单的,比如pool, 代码量就很小,也简单,所有针对boost,那些用途广泛,会纳入到标准的,要研究透,然后使用它,比如bind,functional,有些没有必要研究,只是一个日志,
2020-08-15 00:22:02
360
原创 Android APP调试备忘
Android APP调试备忘 安装签名不一致,提示无法运行,安装不上问题等 检查 AndroidMainfest.xm 中 package=“com.example.whsarmclient” 和 build.grade 中 applicationId “com.example.whsarmclient” 是否一致 命令行卸载 adb uninstall com.example.whsarmclient 或者 adb uninstall com.example, 保证能卸载干净 日志文件不能生成
2020-08-13 10:30:42
212
原创 linux问题备忘
#库路径加载不到 vi /etc/ld.so.conf 编辑后如下: include ld.so.conf.d/*.conf /usr/lib
2020-07-02 21:02:03
225
原创 C++流扩展 streambuff-转载
C++流扩展 streambuff结合socket流的扩展参考链接 结合socket流的扩展 #include <WinSock2.h> ///// out //no buffer class SocketOutStreamBuf : public std::streambuf { public: SocketOutStreamBuf(SOC...
2019-10-12 10:55:17
847
转载 github访问慢
1. 到https://www.ipaddress.com网站查询对应的域名的ip,然后添加到hosts文件即可 2. 将以下代码复制到C:\Windows\System32\drivers\etc的hosts文件中 #解决git clone 速度慢的问题 192.30.253.112 github.com 151.101.185.194 github.global.ssl.fastly.n...
2019-09-19 13:51:38
844
原创 map和hashmap性能测试
测试代码 #include "stdafx.h" #include <set> #include <hash_set> #include <ctime> #include <iostream> #include <fstream> #include <common\TimeSpan.h> #include <win...
2019-08-24 17:00:35
785
原创 MFC文件的一个链接错误
记录遇到的一个诡异的编译问题 使用ButtonST的时候,一个工程没有问题,当一个新的工程使用的时候,提示找不到CreateFile 和GetObject函数, 但是这个两个函数在WINDOWS.H头文件里面肯定有的,花了好长时间,发现是链接到 POCO库里面去了,POCO的 头文件污染了MFC的WINDOWS头文件 所有在使用外部三方库或者类的时候,尽量不要在C源文件里面引用,不要...
2019-07-23 23:42:25
278
转载 编写Makefile
参考 https://www.cnblogs.com/prettyshuang/p/5552328.html 阅读目录 1、生成可执行文件的makefile 2、生成静态链接库的makefile 3、生成动态链接库的makefile 本文把makefile分成了三份:生成可执行文件的makefile,生成静态链接库的makefile,生成动态链接库的makefil...
2019-04-29 20:58:20
346
转载 boost库的编译总结
Boost官网的《Geting Started On Windows》(http://www.boost.org/doc/libs/1_38_0/more/getting_started/windows.html)提到了Boost库的命名,摘录如下: 以 libboost_regex-vc71-mt-d-1_34.lib 为例: lib 前缀:除了Microsoft Windows之...
2015-01-19 22:20:18
1265
原创 explicit
class test { private: int _a; public: explicit test(int a) :_a(a) { } void print() { cout<<_a<<endl; } }; int _tmain(int argc, _TCHAR* argv[]) { test a = 4; // ERROR test a(3); //必须
2014-09-17 23:42:54
600
原创 CTRLLIST用法
m_ctlList.EnableGroupView(TRUE); LVCOLUMN lv; lv.mask = LVCF_WIDTH | LVCF_TEXT; lv.cx = 300; lv.pszText = L"xxx"; m_ctlList.InsertColumn(0, &lv); m_ctlList.InsertColumn(1, &lv); UINT nG
2014-08-14 00:29:47
2014
原创 log4cxx类的使用(简单封装)
Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下: %m 输出代码中指定的消息 %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL %r 输出自应用启动到输出该log信息耗费的毫秒数 %c 输出所属的类目,通常就是所在类的全名 %t 输出产生该日志事件的线程名 %n 输出一个回车换行符,Windows平台为“rn”,Un
2014-07-31 12:27:50
3064
转载 Ubuntu下搭建FTP服务器
后台一直提示wordperss版本和插件有更新,看着碍眼,决定把它们全都更新。不过更新文件需要服务器提供FTP服务,linode也没有提供到FTP,只能自己装一个了。我装的服务器系统是Ubuntu 12.04 LTS,FTP软件当然是选择大名鼎鼎的vsftpd(very secure FTP daemon), 用系统自带的FTP还好Ubuntu装vsftpd还是很简单,一句命令就行: sud
2014-06-24 23:28:39
773
转载 do...while(0)的妙用
转自 http://www.cnblogs.com/flying_bat/archive/2008/01/18/1044693.html
2014-05-12 21:04:08
608
原创 TEMP
OnOpenNdiskIndex() 有ON_COMMAND和ON_MESSAGE进行同一个消息的响应,不知道有什么区别 boost::bind函数说明 BOOST_FOREACH 和 for_each的区别 thread_param_wrapper >* p = (thread_param_wrapper >*)lpParameter; LRESULT CSLabelT
2014-04-28 17:35:49
841
转载 原型模式(prototype)
一、概述: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。其中有一个词很重要,那就是拷贝。可以说,拷贝是原型模式的精髓所在。举个现实中的例子来介绍原型模式。找工作的时候,我们需要准备简历。假设没有打印设备,因此需手写简历,这些简历的内容都是一样的。这样有个缺陷,如果要修改简历中的某项,那么所有已写好的简历都要修改,工作量很大。随着科技的进步,出现了打印设备。我们只需手写
2014-03-27 16:24:22
749
转载 装饰者模式(Decorator)
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍装饰模式的实现。 装饰模式:动态
2014-03-21 17:43:54
854
原创 软件设计重要原则
单一职责原则(SRP):就一个类而言,应该仅有一个引起它变化的原因。 如何一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这个耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。 典型的情况,就是界面与逻辑要进行分离。 开放-封闭原则:软件实体应该是可以扩展的,但是不可修改。两个特征:对于扩展是开
2014-03-21 15:52:45
798
原创 简单工厂模式(Static Factory Method
概念讲解 聚合(Aggregation):聚合表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分【DPE】合成(Composition),组合:表示一种强的‘拥有’关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样【DPE】 简单工程模式 基本介绍 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又
2014-03-21 11:53:06
1123
原创 字符串反转问题
#include /* Funtion: 字符串的反转操作 例如 “I am a student”反转为" student a am I"; */ void translate(const char* src, char* des) { int len = strlen(src); char* p = (char*)src + len - 1; int count = 0; whi
2014-03-10 00:04:29
821
转载 二叉树的深度排序算法
int depth(BTree root) { int ldepth, rdepth; if (!root) { return 0; } else { ldepth = depth(root->lchild); rdepth = depth(root->rchild); return ldepth > rdepth ? ldepth + 1; rdepth + 1;
2014-02-26 10:49:53
1249
原创 一道有趣的面试题————待解决的问题
先贴代码 #include #include #include using namespace std; class Y { public: Y() { cout<<"Y()"<<endl; } Y(const Y& y) { cout<<"Y(Y&)"<<endl; } ~Y() { cout<<"~Y()"<<endl; } void operato
2014-02-26 10:44:44
757
转载 快速排序算法_C++
快速排序使用分治的方法,把数列按基准为界,分为左小右大两个子数列。然后按递归的思路,对两个子数列再进行快速排序,最终把整个数列有序排列。 #include using namespace std; template void exchange(T arr[], int i, int j) { T temp = arr[i]; arr[i] = arr[j]; arr[j] =
2014-02-19 10:35:24
861
转载 UML类图关系大全
UML类图关系大全 1、关联 双向关联: C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法。 在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因为在设计阶段关联关系必须被映射为对象引用或指针。对象引用本身就是有向的,更适合表达我们所讨论的那种关系。所以这种关系在设计的时候比较少用到
2014-02-18 16:09:05
916
原创 Effective C++读书笔记(一)
类和函数:实现 条款29:避免返回内部数据的句柄。 条款30:避免这样的成员函数,其返回值是指向成员函数的非const指针或引用,也不要返回函数内部用new初始化的指针的引用 条款31:千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用 条款32:尽可能的推迟变量的定义 条款33:明智的使用内联 条款34:将文件间的编译依赖性降至最低
2013-12-31 17:49:25
624
原创 成员函数的静态变量
成员函数的静态变量与类的静态变量 相同点: 都是属于类本身,而不是类的对象。 不同点: 类的静态变量需要初始化,可以设置访问权限,供外部调用,而成员函数的静态变量的初始化是在第一次调用函数时发生,外部也不能访问。 测试代码 #include using namespace std; class A { public: void test(int n) { static
2013-11-27 17:25:41
845
原创 OpenThread中的condition和barrier
condition应用 condition源码 #ifndef _WIN32CONDITIONPRIVATEDATA_H_ #define _WIN32CONDITIONPRIVATEDATA_H_ #ifndef _WINDOWS_ #define WIN32_LEAN_AND_MEAN #include #endif #define InterlockedGet(x) Interlo
2013-11-25 19:34:50
3111
转载 D3D显示FreeType读取的TFF字库
网上COPY的一段代码,进行了修改,效率有所提升,比IDirectFont显示字符的效率提高3-4倍,需要继续优化。 1.纹理淘汰算法需要修改,LRU算法不错。 #pragma once #include #include #include #include #include #include // 顶点数据结构 struct FontVertex { FontVerte
2013-11-08 18:34:31
3297
原创 操作注册表,关闭计算机
MSDN代码 BOOL MySystemShutdown() { HANDLE hToken; TOKEN_PRIVILEGES tkp; // Get a token for this process. if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES
2013-10-29 13:25:54
919
原创 虚函数在类继承中的用法
// TestConsole.cpp : 定义控制台应用程序的入口点。 // #include using namespace std; //class A class A { public: A() { cout<<"A Constructed"<<endl; } virtual ~A() { cout<<"A Destructed"<<endl; } void f
2013-10-17 17:47:20
929
转载 C++ 智能指针详解
C++ 智能指针详解 一、简介 由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。 用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_p
2013-10-14 12:55:56
736
原创 C++内存泄露的问题
遇到一个很头疼的内存泄露的问题,调试的大半天才发现的,指针指向的对象1被delete了两次,而在VS2005中,debug中断的位置不是这个被多次delete的对象1,而是另外一个对象2,在释放它的时候,提示访问了未知的堆栈。 虽然没有在内存中仔细进行调试,不过可以揣测出问题原因是,在多次释放对象1的时候,释放掉了对象2的资源,导致在释放对象2的资源的时候,访问未知的堆内存异常,而对象2在代码中
2013-09-04 00:59:27
830
转载 SendMessage和PostMessage 的区别,以及消息循环路由
一、下面示例函数func()中有PostMessage和SendMessage int MainWnd(...) { MSG msg; while(1) { //当没有消息时,GetMessage不返回,程序就停在这里 GetMessage(&msg,NULL,0,0) TranslateMessage(&msg); DispatchMessage(&
2013-08-22 20:06:04
4011
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅