- 博客(88)
- 资源 (8)
- 收藏
- 关注
原创 线程控制
1. 线程相关函数: 1.1 CreateThread:windows系统函数 _beginthread:C/C++运行库提供的创建线程函数,如果要在多线程中使用C/C++运行库,需要使用该函数进行创建线程,该函数内部会初始化某些C运行时变量,并在内部调用CreateThread,里面会分配一个对象空间,用于保证c运行库部分接口的线程安全(如错误码),所以
2016-10-10 09:25:32
404
原创 win32进程
1. 进程间通信 1.1 剪贴板(Clip Board) 1.2 动态数据交换(Dynamic Data Exchange) 1.3 部件对象模型(Component Object Model) 1.4 文件映射(File Mapping) 1.5 邮件槽(Mail Slots) 1.6 管道(Pipes) 1.7 wi
2016-10-10 09:23:32
495
原创 windows网络编程-几种模式
堵塞模式1、tcp服务端socket初始化:socketbind ip地址,端口信息listen 启用监听accept:等待连接send,recv数据2、tcp客户端socket初始化 socketconnect服务端:ip地址,端口信息send,recv数据3、udp服务端与tcp服务度类似,不存在accept等待连接的过程,直接rec
2016-10-10 09:16:31
3993
原创 windows网络编程-结构体说明
1、sockaddr_instruct sockaddr_in { short sin_family; u_short sin_port; // 端口 struct in_addr sin_addr; // IP地址,long类型,4字节 char sin_zero[8];};struct i
2016-10-10 09:14:12
479
原创 python关键字
第一章:基础知识1/2, 1.0/2, 1//2, 1%22**3100000L,0xAF,010print,input,raw_inputimport mathfrom math import *#u,str,repr第二章:列表和元组test_lst=[''a", 1]test_tuple=("a", 1)listtuplele
2016-10-10 09:13:06
364
原创 c调用python
void printDict(PyObject* obj) { if (!PyDict_Check(obj)) return; PyObject *k, *keys; keys = PyDict_Keys(obj); for (int i = 0; i { k = PyList_GET_ITEM(key
2016-10-10 09:12:38
435
原创 python调用c
导入from ctypes import *#import ctypes类class Bag: def __init__(self, iIn): self.data = []; def add(self, x): self.data.append(x) self.k = 20; self.m
2016-10-10 09:11:28
281
原创 程序的机器级表示
硬着头皮来看一遍深入理解计算机系统,对其中章节进行做个笔记,其中有些一知半解的希望这次是真的懂来1、程序的过程:从源文件到目标文件的过程1.1 hello.c1.2 hello.i 预处理阶段,将#开头的头文件进行展开,宏定义替换1.3 hello.s 编译阶段,将hello.i文件翻译成汇编程序1.4 hello.o 通过汇编器as将程序生成为可重定位的二进制的目标程序1
2016-05-15 22:59:45
966
原创 排序算法-堆排序
归并排序需要我们多一份空间出来,算法复杂度为O(nlgn)堆排序也能做到算法复杂度为O(nlgn),但是不占用空间堆:有点像二叉树,它有left孩子和right孩子对任意节点i,它的left的值的下标为2*i + 1,right下标为2*i + 2比如0,它的left是1,right是2.parent的下标值是i/2 - 1最大堆特点:parent总比child
2016-05-11 15:19:59
298
原创 排序算法-冒泡排序
这个方法比较有名,但也是最笨的方法了比如n个数,就是先找到最小的,放好,在剩余的里面再找最小的。依次下去,复杂度就是1+2+3+4+....n平均的比较复杂度都是n^2了算法实现中,当然不能找到最小的放到数组里面去了,这样占用了内存数组比如为1~n。从n开始与n-1对比,小的往上冒(交换),再把n-1与n-2对比,一样就不用交换,继续对比n-2与n-3,最后把最小的放在了1
2016-05-07 13:43:12
344
原创 排序算法-归并排序
将n个数分成n/2组,排序好,再两两合并,分成n/4组,再依次上去,因为已经排序好了,合并起来很快。每次需要对比的次数为n次比如n=64时当n/4时,每队有4个数,总共有16组,第一队的4个数与第二队的4个数对比,需要最多8次。总共有8组(每组2对)需要对比,即对比64次,也就是n即分解后都需要对比n次,那需要分解多少次呢?64/2, 64/2/2, 64/2/2/2
2016-05-07 13:42:45
436
原创 排序算法-插入排序
排序1.插入排序(增量方法)将已排序的定义在最左端,将未排序的部分取最左边第一个元素,插入在已经排序部分的最合适的位置当然,也可以将已排序的定义在最右端,从未排序的部分取最右边的一个元素,插入到最右边最合适的位置 // 从最左到最右边,从第二个元素开始,对比第一个元素。再从第三个元素开始,与前面两个元素对比,依次下去// 第n个元素作为key,前面1~n-1已经排序
2016-05-07 13:42:05
428
原创 windows下vc进行内存泄露终结版
1、在mai函数中增加了_CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF);在debug下程序退出时,输出会打印很多内存泄露情况。 我们根据这个特性,原理可以实现更强大的代码级检测机制。_CRTDBG_LEAK_CHECK_DF标记的含义比较简单,就是在程序退出时调用函数_CrtDumpMemoryLeaks,该函数从内存分配的队列里面获取,还有
2016-05-04 09:44:22
1939
原创 大型网站技术架构--读书笔记
讲解了一些常用的概念及方法,讲的比较浅显,但是知识点还是比较全的,里面有些重复内容。读书笔记第一章:大型网络架构演化初步架构:应用程序+文件+数据库应用程序处理逻辑,文件存储数据,如录像文件,图片信息。数据库存储逻辑数据改善方案步骤,根据业务发展不断改善,最初只需要部署在一台服务器上即可1.各个程序分离到不同pc上2.使用缓存改善3.使用集群改善(集群:
2016-05-04 09:41:09
385
原创 CRT输入和输出(文件)
1、fopen打开文件2、feof测试流中的文件尾3、ferror测试流中的错误4、fflush存储流到文件中5、fgetc从流中读取字符6、fgetpos获取流的文件位置指示器7、fgets从流中获取字符串8、_fileno获取与流关联的文件句柄9、fprintf将格式化数据打印到流中10、fputc将字符写入到流中
2016-03-31 21:18:43
2746
原创 crt系统调用与文件处理
系统调用1、_findfirst查找文件信息,返回句柄例_finddata_t find_result;intptr_t a1 = _findfirst("F:\\*.txt", &find_result);int anext = _findnext(a1, &find_result);2、_findnext查找下一个匹配信息3、_findclose关闭句柄
2016-03-31 16:19:45
459
原创 CRT进程和环境-错误处理-参数访问
参数访问va_argva_endva_start##__VA_ARGS__错误处理1、assert:发布版本下也可以用_ASSERT:发布版本不可用_ASSERTE:会打印出增加了表达式2、_RPT0~RPT4:_RPTF0~RPTF4:会打印文件及行信息_CRT_WARN,_CRT_ERROR,_CRT_ASSERT3、clearerr
2016-03-31 15:46:20
1148
原创 CRT目录与时间
目录控制,只列出非w的函数,宽字节函数换成w即可1、_getdirve获取当前磁盘驱动器,A为1,B为2,依次类推2、_getdirves获取当前可用的磁盘驱动器的位掩码位置0为a,位置1为b,依次类推,进行右移,最后一位&1可用得到所有可用的驱动器3、_mkdir创建目录,目录已经存在返回false4、_rmdir删除目录,删除的目录必须为空,否则失败5、
2016-03-30 22:15:53
1202
原创 CRT内存泄露检测
方法太多,工具的就不细说了,umdh,windbg都可以,说说代码的几个函数调试的两个windows的头文件#include #include1、内存状态比较_CrtMemCheckpoint_CrtMemCheckpoint_CrtMemDifference_CrtMemDumpAllObjectsSince2、设置内存泄露报告_CrtSetDbg
2016-03-19 22:59:33
1555
原创 MySQL命令介绍
1、mysql -h host -u user -p例如mysql -h 10.25.18.34 -u root -pEnter password:xxxxx一般root不能被远程用户使用,只有localhost才能用2、show databases;显示有哪些数据库3、use test;切换到test这个数据库,也可以直接再启动时指定到希望操作的数据库上mysql -h
2016-03-14 19:23:19
382
原创 第1部分(必备知识)
1、错误处理GetLastError,SetLastError,这两个函数与线程相关的。参数DWORD有分段的含义,比如第29位为0表示Microsoft定义的错误码,为1表示客户端定义的错误码错误翻译FormatMessage,参数里面也可以指定语言版本2、字符和字符串2.1 字符编码:Unicode,ANSI实现Unicode的方式也有UTF8,UTF16,UTF3
2016-01-07 09:54:59
448
原创 再说内存池
根据>文章描述,对内存池各种情况进行了改写和对比一下在vs2013下实践得到的数据需要分配的内存class CRational{public: CRational(int a = 0, int b = 1) : n_(a), d_(b) { }private: int n_; // 分子
2015-11-04 10:07:25
497
原创 bind及function的简单举例
当时想着一个带参数的函数,如何将参数指定好,然后保存到一个对象中,后续直接调用这个对象即可而不用再这个对象中再传入参数。function的使用就需要再传参数,比如void GlobalFunction(int& i){ ++i;}使用function的效果int j = 10;function fun1 = GlobalFunction;fun1(j);
2015-10-10 09:17:51
437
原创 Lambda使用
1、Lambda的各种调用void CTestA5::TestLambda(){ [](){cout auto testNoParam = [](){cout testNoParam(); auto test = [](int k){ cout test(10); // 调用 // 无参数但是有返回类型的调用
2015-10-08 12:53:02
399
原创 Qss学习之一(属性设置)
qss通过/*selector:declaration*/设置其属性参数等我们在本地创建一个qss文件,然后在代码中加载即可QFile qss("testqss.qss");qss.open(QFile::ReadOnly);qApp->setStyleSheet(qss.readAll());qss.close();qss语法/*设置QWidget且obe
2015-09-08 22:52:53
5579
原创 QVariant源码解析
QVariant可以支持任意类型的存储,功能有点类似于boost中的any,但是实现却完全不同,它同样是类型安全的,而且代价更小要熟悉QVariant,我们需要先看下qRegisterMetaType的源码先简单看下如何使用QVariantvoid CTestVariant::Test(){int iNewType = qRegisterMetaType("CVariantHe
2015-08-27 22:41:47
2374
原创 第一部分(基本规则)
1、内部链接,外部链接内部链接:只在本编译单元(.obj)能访问和使用的,反之,其它obj文件能访问到该变量或则该接口,那么就是外部链接了比如a.cpp中void Test(){}在b.cpp中看似访问不到Test,我们只需要在b.h中定义一个void Test();然后在b.cpp中就能够访问到了,链接的时候编译器会链接到a.cpp的Test函数的能够申明为内部链
2015-08-18 23:02:23
510
原创 第六章(隔离)
都在说解耦合,但是如何解,哪些情况下有偶尔呢?看看前人的总结总是好的此处都是针对编译时的解偶尔,不涉及链接和最后发布。1、编译时耦合1.1 IsA的关系继承:class D: public B不管继承方式,B的变化都将影响D的重新编译。D的重新编译将会继续递归下去1.2 Has A
2015-08-02 23:13:53
707
原创 书籍介绍
书名都是这样了,大规模了小规模的就不用这么较真去写了,反而会增加代码量了针对大规模代码级别的一个规范,解耦之类技术介绍,目前刚开始看,看后再做介绍吧。
2015-08-02 18:14:47
291
原创 书籍介绍
模板深入学习的好书讲解很多c++组件的实现,并且一步一步教你如何实现书中代码不全的,可以参考loki库文件。看完此书会感觉C++模板原来可以如此强大。自己真的会C++吗?需要有较好c++基础,对模板有一定基础。
2015-08-02 18:12:03
336
原创 书籍介绍
介绍STL的一些比较特别的地方,注意事项等。需要先了解STL的基本用法并且此书并没有对STL所有特性进行讲解,如果想对STL所有功能了解,看看C++标准库更好对STL一些比较有意思的地方的讲解,类似effective c++等。
2015-08-02 18:10:40
307
原创 boost之variant使用
variant有点类似于C++的联合体union,但是它比union强大,union只能容纳原始类型,variant可以容纳任意类型源代码看了蛮久,没太看懂,这就是模板的坏处了简单看下使用举例class CTest{ char szTest_[40];};typedef variant var_t;var_t也相当于一个联合体,可以容纳三个中的一个,当然内存大是
2015-07-18 21:43:06
1087
原创 boost之any源码解析
any是一个特殊的容器,它只能容纳一个元素,但元素类型是任意的使用也比较简单内部是通过typeinfo的概念实现的。void CAnyTest::Test1(){ CTest1 t1; any any1(t1); try { CTest1 a1 = any_cast(any1); // any_cast内部就是用了typeinfo的概念实现的 } ca
2015-07-16 21:44:29
492
原创 环形内存circular_buffer
boost中支持环形内存。该内存在一些地方还是蛮实用的。简单看下具体使用及部分源码,使用和源码相对来说都还是比较简单,易于理解的与STL接口基本一致void CCircularBufferTest::TestCircularBuffer(){ circular_buffer aa(5); // 预先分配5个sizeof(CTest)的大小空间 aa.push_back
2015-07-13 22:20:18
5189
1
原创 ScopeGuard
目前看到的ScopeGuard的有个比较能用的上的地方就是,如果需要退出时执行某个操作,可以和方便的使用,而不需要用try finally。不管里面是否抛出异常,都会执行到我们必须执行的函数实现也是利用了构造和析构函数,在构造函数中,将需要调用的函数地址传入,在析构时调用class ScopeGuardImplBase { /// Copy-assi
2015-07-11 19:04:12
542
原创 OrderedStatic
OrderedStatic实现了对象的生命期控制,根据对象寿命Longevity控制析构顺序。默认情况下,全局变量和static全局变量的析构顺序是根据初始化顺序反着析构。OrderedStatic代码几个比较有意思值得学习的地方贴出来一下,其它有些与单件模式的一样不再重述。1、退出函数atexit通过设置该接口,控制exit后,C++调用的用户自己设置的全局退出函数s
2015-07-11 17:55:07
384
原创 DefaultAlloc
loki库中DefaultAlloc中介绍了c++目前支持的new 和 delete相关的操作我们知道new操作实际包含两个步骤:operator new:分配内存,构造函数调用。而operator new我们是可以重载的相对的delete操作也包含两个步骤,析构函数调用,析构内存.另外简单了解下分配内存过程:vs实现中会调用C的mallo,再调用操作系统的HeapAlloc,操作
2015-07-11 15:28:25
309
原创 第四章(同步并发操作)
1、条件变量线程1完成后,通知其它线程它执行完成了。通过条件变量实现void CTestThreadCondition::Preparation_Thread(){ while (true) { long ldata = clock(); std::lock_guard guard(dataMutex_); if
2015-07-10 09:03:12
810
原创 CheckReturn(检查返回值)
Loki库提供了一种方法,要求函数返回后,使用者必须对其进行检查或则赋值。以必须判断指针为例进行说明。自己写的代码简化了很多CheckReturn.h#pragma once#include templatestruct TriggerAssert{ static void run(const T&) { assert( 0 ); }};//
2015-07-09 22:49:44
4947
boost 静态链接库
2015-07-12
3G基础教材
2012-03-08
棋盘覆盖问题源码
2012-03-08
N(8)皇后问题
2012-03-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人