自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(242)
  • 资源 (2)
  • 收藏
  • 关注

原创 博文博客推荐汇总

突然发现csdn官方博客上有这样一个分类,自己也保存下

2014-06-21 15:10:19 1300

原创 用Debug Diagnostic诊断内存泄露问题

用Debug Diagnostic诊断内存泄露问题调试一个MFC的程序,发现解决内存泄露问题,用Debug Diagnostic Tool1.2 1. 在定位的时候,需要注意多跑几次,多诊断几次,线程很多的话,每次的结果可能不一样,给的Call stack sample也可能不一样,不行就多跑一会。 2. 即使多跑几次,堆栈信息也可能不足以一次定位到问题。给了一些分配内存大小的信息“Top

2017-04-14 15:06:12 1332

原创 《Google-Bigtable》读书笔记

“Bigtable为客户提供了简单的数据模型,利用这个模型,客户可以动态控制数据的分布和格式,用户也可以自己推测底层存储数据的位置相关性。”这也就要求,表的结构是与业务紧密相关的,写代码的人,不得不去了解是如何存储的,否则查询效率会很低。“Bigtable通过行关键字的字典顺序来组织数据”,这个与关系数据库看似一致,关系数据库不是有索引么,表呈现的时候也是按照字典序的,但是Bittable中的“组

2016-11-09 22:53:08 1360

原创 随笔(2016.11)

使用新的库函数和方法的时候也要考虑下其异常情况与使用情况,例如对于内存的操作,使用memcpy、memset等操作比使用不熟悉的第三方库给可靠。 ps:任何方法都有使用的情况,如果不区分其使用的背景和上下文,可能与期望差之千里。代码的可测试性与健壮性一样,是一个非常重要的指标。而且不光是整个功能的测试,最好能够从类的方法、到功能、到模块,都有测试的代码与之对应。设计交底。开发前,应对系统设计相

2016-11-09 22:51:29 587

原创 《罗辑思维》笔记

1000小时理论 2016-06-23罗辑思维第4季第17期:王煜全:创新,认知升级与摆脱窘境中,提出了一个1000小时理论,任何一个企业,与最先进的企业可能相差的只是1000小时。理论有一个前提,资源共享,举得例子就是阿尔法狗的蒙特卡洛算法公开后,迅速世界上很多公司几个月时间内,很快就掌握了此种算法,应用到自己的产品中。当然这里的“相差”只是从技术层面上来讲,从模型到产品生产,在到批量生产的差距还

2016-10-12 16:28:14 1823

原创 《我的互联网方法论》读书笔记

不是平台,而是解决用户问题 老周比较不喜欢平台化,在没有用户基础上直接做平台最后投资挺大,可能用户一点也不感兴趣。最最重要的问题是,解决用户问题。布局,路线图,都是演化而来 与架构一样,什么布局,什么路线图,过早规划意义不大。不仅开发要短迭代,企业的调整也要短迭代,一下子就规划个5年10年的,谁知道10年后世界什么样子呢。即使能知道10年后是什么样子,自己的用户规模有多少,用户群特征也是非常难

2016-10-12 16:26:18 595

原创 Radis

概述1.Redis不会尝试去解决关于数据的所有事情。 2.值(Values)是一段任意的字节序列,Redis不会关注它们实质上是什么,Redis不允许你通过值来进行查询。(PS:印证了第一点) 3.对于那些值与值间的索引和引用,我们都必须手动的去管理 4.每一个Redis命令都具有原子性,包括那些一次处理多项事情的命令。此外,对于使用多个命令,Redis支持事务功能。Redis实际上是单

2016-10-12 16:25:07 1496

原创 初识大数据

初识大数据大数据已经火了有两年了,第一篇相关的博客,实在是有些懒散,虽然工作中没有用到,但这是一个趋势,不仅仅是搞IT的,各行各业在未来都会与大数据有关系。去年已经读过《大数据时代》这本书,印象中比较深的还有几点: 1. 大数据时代人们不一定点找到因果关系,大数据会挖掘出事物之间的相关关系。这一点是思维方法的一个根本的转变,在一些情况下,只需要知道相关关系就能够创造价值。 2. 不是抽样调查,而

2016-09-18 23:36:52 699

原创 短迭代、演化、螺旋上升、多维数据

演化是一个长期的过程,螺旋上升是说事务发展的普遍规律,同时蕴含着否定之否定的过程。一开始说演化,最开始想到是恒星的演化,时间漫长。一个大的系统通常说是“演化”,例如淘宝网站的架构,不是一开始就这么复杂,而是从简单的模型慢慢演化而来。“凡事都有一个过程”,对于软件来说,还挺靠谱。对于软件来说,演化一般是说的大的版本的演化。往往受制于用户需求(满足即可)、硬件配置、网络等因素。对于软件,演化还有另外一层

2016-08-05 16:49:10 753

原创 NASA 的 10 大编程规则

第 1 条规则 — 简单的控制流用非常简单的控制流结构体来编写程序 — 不要用 setjmp 或者 longjmp 结构体,goto 语句,以及直接或间接的递归调用。理由:简单的控制流能够提高代码的清晰度以及拥有更强大的验证能力。不使用递归,就不会产生循环函数调用关系图,同时这也证明应该是有界的执行过程确实是有界的。PS:这也是“结构化编程”的一个表现。控制流要清晰,一下就能看明白。此外,感觉回调也

2016-08-05 14:16:10 1006

原创 《大型网站技术架构:核心原理与案例分析》读书笔记

由于网站的访问流量是缓慢增长的(PS除了垄断的12306),所以一般网站的架构也是不断的演化的,没有一开始就搞出个支持大并发的网站。无论从开发到发布的时间、消耗的资源上来看,或者是说从开发、维护的难度上看,或者从开发的防止“过度设计”的维度思考,绝大多数网站设计是一个演化的过程。这也是植根于需求的表现。分析目前大型互联网可以从两个维度,用户需求、结构框架。当然是前者决定后者。从用户需求特点分析,大

2016-07-12 10:21:40 1721 1

原创 敏捷测试管理培训

赵老师的话,经历不是经验,必须经过一个总结的过程。“敏捷”(agile)的意思翻译有点难懂,进一步解释“快速响应与调整”。Scrum为敏捷的一个实践,形式上的实践有,立个白板,撤掉隔断,大家围坐在一起,早上站会,迭代计划会,总结bug回顾会,文档简化,短迭代。如果只是形式上,会降低效率。自己的理解,为什么有敏捷?以前的瀑布模型其实与建筑业上的项目管理非常相似,但是软件与建筑业区别比较大,一是需

2016-07-12 10:10:04 467

原创 随笔(2016.05)

使用新的库函数和方法的时候也要考虑下其异常情况与使用情况,例如对于内存的操作,使用memcpy、memset等操作比使用不熟悉的第三方库给可靠。 ps:任何方法都有使用的情况,如果不区分其使用的背景和上下文,可能与期望差之千里。代码的可测试性与健壮性一样,是一个非常重要的指标。而且不光是整个功能的测试,最好能够从类的方法、到功能、到模块,都有测试的代码与之对应。STM,ATM,OTN,MPLS

2016-06-02 17:13:44 397

原创 利用正则表达式对比数据库

不是直接对比数据库,而是把数据库创建的sql导出来,对比sql,其实就是对比两个文本文件。import redef getPowerFile(): f = open("C:\\Users\\Administrator\\Desktop\\sql对比\\Z_T.sql", "r") return fdef get主干数据库File(): f = open("C:\\Users\

2016-03-24 09:18:39 815

原创 单元测试框架

公司的没有单元测试的要求,也没有单元测试的相关规范。基本都是随机测试,随便写点测试代码,也没有维护过测试代码,提交版本测试代码也就扔了。开始认为单元测试费力不讨好,认为小的功能不需要这玩意,随着做开发时间变长,才觉得这玩意很有必要。写之前先总结下我理解的单元测试。一、必要性1)开发人员能够对代码设思考,写出更易读,结构性更好代码 不是所有的代码都可以很优雅进行单元测试的。单元测试要求代码有较好的内

2015-12-31 16:51:23 1199

原创 随笔(2015.12)

多线程调试问题。 遇到了cpu使用率过高的bug(双核cpu,有一个进程占一直用50%)。 多线程一般不要直接调试,因为可能会跟实际多线程运行不一样,毕竟调试时会阻塞当前线程。比较好的做法是:在代码中加输出log,然后运行程序,根据产生的log来分析。但这次涉及到使用第三方的sdk,怀疑可能是sdk中的线程有问题。问题定位方法有: 1)代码走查。直接用赵老师的话,“while里面要么调用阻塞函

2015-12-31 16:46:51 539

原创 学习&思考&创新

2015年最后一天,做一点不同的总结。有些道理其实绝大多数人都知道,但是每个人理解都会有不一样,认知程度也不一样;而且知道是一回事,做是另外一回事;真正优秀的人不但深刻认知,而且能够坚持于行动。一年下来坚持的也就算是写博客,想一想去年的计划,什么学习这个又搞那个,脑子里很清楚,但很多甚至都没有开始。关于学习什么是理想的工作?繁忙的工作不一定能够提高一个人的能力,如果工作中的事情对于自己来说是没有任何

2015-12-31 16:44:27 833

原创 随笔(2015.11)

在一些关键的函数,例如回调过来开始处理的函数,流程逻辑一定要清楚,不要掺杂太多的逻辑处理,一定要短而且要清楚表达逻辑的走向。函数名字最好动词开始,把里面最主要的逻辑表达清楚,不要试图说明所有的动作,要抓住懂点。想写出扩展性强、容易理解的程序,写完后代码会变多,类会变多,方法会变多,变相增加了一部分工作量,但程序流程清楚(结构化编程),变化时改动小(抽象变化)。很多东西有共通的道理,如何让程序高

2015-12-03 19:11:10 586

原创 记忆方法(一)概述

本文没有任何科学依据,读过多米尼克写的《我想要的记忆魔法书》后一些感受和想法。方法都有一定的通用性,但是每个问题都有各自特点,解决问题应根据具体的需求。记忆也是如此。一、大脑的能力自己总结的,没有科学依据:) 1)因果推断的能力(逻辑能力) 质量好价格便宜一般会推断出销量好。所以对知识要尽量理解,多问自己为什么。而且记忆一些“优点(缺点)”的时候可以首先搞清楚原理,记住采用了何种技术,如果搞清楚

2015-11-04 16:23:16 704

原创 12306简单设计

任何设计都要分析问题需求,找到瓶颈。12306如果并发很少,那么就是一个很普通的购物商城的模型。单机器可能就可以解决了。但是由于12306平时访问量很大,而且部分时间段访问量会突然增大所以基本上讨论的问题就集中在以上两点。看到风云12年的一篇博客上有当时对此问题的分析。提出的方法如下: “ 我们设置几个网关服务器,用动态 DNS 的方式,把并发的订票请求分摊开。类比现实的话,就是把人分流到

2015-11-03 14:42:09 1262

原创 Android消息处理机制

学习Android的消息处理机制,有几个概念(类)必须了解: 1.Message 消息,理解为线程间通讯的数据单元。例如后台线程在处理数据完毕后需要更新UI,则可发送一条包含更新信息的Message给UI线程。 2.Message Queue 消息队列,用来存放通过Handler发布的消息,按照先进先出执行。 3.Handler Handler是Message的主要处理者,负责将Me

2015-11-03 14:39:57 510

原创 mangos(二)认证登录基本流程

一、公钥基本概念举个简单的例子就很清楚了,就好象例子中的任何人都知道用钱币(公钥)锁上存物箱,但仍然打不开存物箱。只有拥有钥匙或写有号码的纸条(私钥)的人才能打开存物箱。上面的例子还有点问题,实际中私匙一般只有通信的解密方才知道,加密的人都不知道。在举个例子: (2^3) mod 11 =8 (8^7) mod 11= 2 在这里2是明文8是密文。 加密密钥是3解密钥匙是7,加密和减密钥匙

2015-11-02 15:10:16 1189

原创 boost bind性能开销分析

#include <boost/bind.hpp>#include <boost/function.hpp>#include <boost/scoped_ptr.hpp>#include <Windows.h>#include <stdio.h>#define MAX_LOOP 1000*1000*8typedef boost::function1<void, int> Funtor;st

2015-11-02 14:54:02 1146

原创 mangos(一)概述与消息处理机制

一、概述想看下开源的服务器框架,本以为挺复杂,但mangos代码写的很清楚。mangos不是一个魔兽私服模拟器,它是一个开源的自由软件项目,是用c++和C#编程语言,实现的一个支持大型多人在线角色扮演游戏服务器的程序框架。svn的路径:http://svn.code.sf.net/p/mangos/code/trunk 下载下来貌似有100多兆,我用的vs2005编译vc8工程release版本一次

2015-10-30 11:14:21 1888 1

原创 条件变量虚假唤醒

信号量是有一个值(状态的),而条件变量是没有的,没有地方记录唤醒(发送信号)过多少次,也没有地方记录唤醒线程(wait返回)过多少次。从实现上来说

2015-10-30 11:05:57 4939

原创 随笔(2015.10)

1.在一些关键的函数,例如回调过来开始处理的函数,流程逻辑一定要清楚,不要掺杂太多的逻辑处理,一定要短而且要清楚表达逻辑的走向。 2.函数名字最好动词开始,把里面最主要的逻辑表达清楚,不要试图说明所有的动作,要抓住懂点。 3.想写出扩展性强、容易理解的程序,写完后代码会变多,类会变多,方法会变多,变相增加了一部分工作量,但程序流程清楚(结构化编程),变化时改动小(抽象变化)。 4.很多东西有共

2015-10-23 16:49:59 501

原创 firebird中删除多列重复的数据

原本不复杂,一条sql语句就可以完成。思路是先根据列分组,找出分组后数据都于一条的,然后从中删除除了行id最小的其他数据。Oracle中即时字段中没有能表示行id的,每行都自带一个rowid,sql语句:select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopl

2015-10-23 14:17:22 2500

原创 随笔(2015.09)

在一些关键的函数,例如回调过来开始处理的函数,流程逻辑一定要清楚,不要掺杂太多的逻辑处理,一定要短而且要清楚表达逻辑的走向。函数名字最好动词开始,把里面最主要的逻辑表达清楚,不要试图说明所有的动作,要抓住懂点。想写出扩展性强、容易理解的程序,写完后代码会变多,类会变多,方法会变多,变相增加了一部分工作量,但程序流程清楚(结构化编程),变化时改动小(抽象变化)。很多东西有共通的道理,如何让程序高

2015-09-30 16:56:31 402

原创 随笔(2015.08)

对于程序,需要考虑每个函数的返回错误,是否需要对错误处理。分布式事务强一致性的尽量避免。分布式事务有X/Open组织提出的分布式事务的规范XA,XA规范主要定义了(全局)事务管理器(Transaction Manager)和(局部)资源管理器(Resource Manager)之间的接口。分布式事务分为两阶段提交与一阶段提交,两阶段提交对一致性要求较强,(XA规范为两阶段提交)但对系统消耗较大。第

2015-08-28 16:51:39 438

原创 Google编码规范

PS:Google的编码规范,与其他编码规范相比比较特殊的地方就是对异常、智能指针的使用,异常要求不使用,智能指针也就是用个scope_ptr。异常C++中使用的本来就不多,不使用异常理由有捕获可能遗漏处理在一些情况下容易出错、破坏了结构化程序流等。与少于智能指针一样,容易导致错误。 其他的还有“不要用省略字母的缩写”,尽量用单词全拼,“并不完美的代码使用 TODO 注释。”,拷贝构造函数的默认禁

2015-08-26 09:48:46 993

原创 完成端口(Q&A)

程序设计上,线程不怕多,怕切换的频繁,即使有多于cpu个数的线程,例如使用完成端口的时候,总会有个主线程,但这个主线程在配置完完成端口后就彻底的休息了(可以是join或信号量方式),cpu一直工作在完成端口的工作线程上,也不会频繁切换。为什么完成端口中工作线程的数目为cpu*2?设计的目的是为了让cpu满负荷工作。会不会造成额外的线程切换?会,但正常情况下不会,这里异常就是指处理线程进入阻塞状态(

2015-08-10 16:59:43 1370

原创 随笔(2015.2)

1.序列化可以实现远程过程调用,远程过程调用都是通过对象序列化?2.反射机制可以让系统开放.3.equals比较的是两个对象里面数值是否一样,==比较的是这两个包装类引用是否指向同一对象4.垃圾回收并不能强制执行,只能通过接口建议执行。why?,虽然垃圾回收机制会对系统造成一定的影响,但是对于目前硬件的处理能力而言,相对于没有垃圾回收5.垃圾回收是标记被引用的对象,用排除的方法来找

2015-08-10 13:59:07 516

原创 随笔(2015.7)

1. "We wondered why people were so against using regular objects in their systems and concluded that it was because simple objects lacked a fancy name. So we gave them one, and it's caught on very nic

2015-08-10 13:57:21 531

转载 Linux下用php调用C接口(扩展)的资料

By Sara Golemon March 1, 2005Introduction What’s an Extension? Lifecycles Memory Allocation Setting Up a Build Environment Hello World Building Your Extension INI Settings Global Values

2015-08-09 16:54:28 956

转载 php调用c++程序例子

现需要php调用c++程序,参考了网上一篇文章,修改后在本机(fedora7)上测试通过,现整理如下。一、 编写test.cpp程序 转到你的apache服务器的站点目录下(即放置web文件的目录),我的是 /var/www/html目录,在该 目录下编写程序。    该简单程序的作用是通过命令行接受参数并显示出来,test.cpp代码如下:#include <iostream>using n

2015-08-09 16:50:14 3596

转载 Grep用法

QUOTE: 比方以 grep 来说, 在 Linux 上你可找到 grep, egrep, fgrep 这几个程序, 其差异大致如下: * grep: 传统的 grep 程序, 在没有参数的情况下, 只输出符合 RE 字符串之句子. 常见参数如下: -v: 逆反模示, 只输出"不含" RE 字符串之句子. -r: 递归模式, 可同时处理所有层级子目录里的文件. -q:

2015-08-09 16:43:37 4677

转载 测特定指令执行时所需消耗的时间及系统资源

名称: time      使用权限: 所有使用者      使用方式: time [options] COMMAND [arguments]      说明: time 指令的用途,在于量测特定指令执行时所需消耗的时间及系统资源等资讯。例如 CPU 时间、记忆体、输入输出等等。需要特别注意的是,部分资讯在 Linux 上显示不出来。这是因为在 Linux 上部分资源的分配

2015-08-09 09:52:46 446

转载 消息队列

消息队列(也叫做报文队列)能够克服早期unix通信机制的一些缺点。作为早期unix通信机制之一的信号能够传送的信息量有限,后来虽然POSIX 1003.1b在信号的实时性方面作了拓广,使得信号在传递信息量方面有了相当程度的改进,但是信号这种通信方式更像”即时”的通信方式,它要求接受信号的进程在某个时间范围内对信号做出反应,因此该信号最多在接受信号进程的生命周期内才有意义,信号所传递的信息是接近于随进

2015-08-09 09:51:40 953

转载 线程--具体函数介绍

线程的概念  1. 线程的优点  线程的实现时间远晚于进程.最早实现是solaris 上线程,多线程技术已经被许多操作系统所支持,包括Windows/NT,和Linux 使用多线程的理由之一是和进程相比,它是一种非常”节俭”的多任务操作方式。  启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种”昂贵”的多任务工作方式。而运行于一个进程中的多个线程

2015-08-09 09:48:38 474

转载 fcntl函数

系统也可以分为: 低速系统 和 其他。低速系统调用是可能会使进程永远阻塞的一类系统调用: 如果数据并不存在,则读文件可能会使调用者永远阻塞( 例如读管道,终端设备,网络设备 ) 如果数据不能被立即接受,则写这些文件同样也会使调用者永远阻塞。 在某些条件发生之前,打开文件会被阻塞( 例如打开一个终端设备可能需要等到与之连接的调制解调器应答 );又如,如果以只写的方式打开 FIFO,那么在没有其

2015-08-09 09:46:48 454

用C++实现的Fisher算法

用C++实现的Fisher算法,我的毕设希望有用!

2010-05-09

用C++实现的LDA算法

用C++实现的LDA算法,我的毕设的一小部分,希望有帮助!

2010-05-09

空空如也

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

TA关注的人

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