- 博客(711)
- 资源 (15)
- 收藏
- 关注

原创 关于MFC未来的感悟
本人题材选自论坛:http://topic.youkuaiyun.com/u/20111119/15/d9726ed9-4286-4126-9ea9-601f6fa88337.html?61839。经过整理和加入自己的看法。 关于MFC的未来,有许多人都是有不同程序的担忧。 有人都说windows界面向着metro风格发展,比如windows 8。随着人们对界面体验的要求越来越高,触摸时代
2011-11-22 10:51:33
40476
47
原创 Redis分布式锁解析
一、分布式锁方案比较二、关于Redis分布式锁基础知识三、Redis加解分布锁的正确姿势四、Redis分布式加锁的主要流程产生随机数,可用UUID,存储起来,一般存储在ThreadLocal中,以便解锁用; 调用Redis 的SETNX命令将随机数当作value存入,key为taskId,同时设置过期时间。(实际项目中过期时间的多少主要是取决任...
2019-03-22 22:15:21
1262
原创 Android 手把手教您自定义ViewGroup(一)
转载请标明出处:http://blog.youkuaiyun.com/lmj623565791/article/details/38339817 , 本文出自:【张鸿洋的博客】最近由于工作的变动,导致的博客的更新计划有点被打乱,希望可以尽快脉动回来~今天给大家带来一篇自定义ViewGroup的教程,说白了,就是教大家如何自定义ViewGroup,如果你对自定义ViewGroup还不是很了解,或
2016-04-21 15:05:15
1700
原创 Objective-C语法之代码块(block)的使用
版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]代码块本质上是和其他变量类似。不同的是,代码块存储的数据是一个函数体。使用代码块是,你可以像调用其他标准函数一样,传入参数数,并得到返回值。脱字符(^)是块的语法标记。按照我们熟悉的参数语法规约所定义的返回值以及块的主体(也就是可以执行的代码)。下图是如何把块变量赋值给一个变量的语法
2016-04-21 14:53:07
1097
转载 __weak与__block修饰符到底有什么区别
API Reference对__block变量修饰符有如下几处解释://A powerful feature of blocks is that they can modify variables in the same lexical scope. You signal that a block can modify a variable using the __block storag
2016-04-21 14:49:23
750
原创 homebrew安装问题解决
xcode-select: error: command line tools are already installed, use "Software Update" to install updates 问题解决。
2016-04-20 11:22:03
5099
原创 DELPHI之关于String的内存分配
函数、过程或者方法中定义一个字符串变量时,由于我们知道在函数、过程或者方法中定义的变量为局部变量,它的内存是在栈中分配的,但是这里有个小细节我们要注意,对于一个局部的字符串变量,它的大小为4字节,这个在栈中分配的4字节是不是就是字符串变量的全部呢?答案是否定的,它在栈中保存的只是这个字符变量的大小和字符变量的值在堆中的内存地址!,这就是说,该字符变量的值并不在对应的栈中,而是在堆中!我们了
2014-09-11 12:37:31
3925
原创 《Microsoft Sql server 2008 Internals》读书笔记--第六章Indexes:Internals and Management(1)
《Microsoft Sql server 2008 Internals》索引目录:《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在第五章主要学习了table的内部存储结构,第七章《Special storage》中将继续深入学习存储机制,那将是本书最难理解的一章。第六章主要介绍index的基础知识,第八章是《query O
2014-08-06 14:30:33
1163
原创 从性能的角度谈SQL Server聚集索引键的选择
简介 在SQL Server中,数据是按页进行存放的。而为表加上聚集索引后,SQL Server对于数据的查找就是按照聚集索引的列作为关键字进行了。因此对于聚集索引的选择对性能的影响就变得十分重要了。本文从旨在从性能的角度来谈聚集索引的选择,但这仅仅是从性能方面考虑。对于有特殊业务要求的表,则需要按实际情况进行选择。 聚集索引所在的列或列的组合最好是唯一的
2014-07-30 10:07:01
4197
原创 如何进行单元测试
摘要:单元测试是软件测试的基础,本文详细的论述了单元测试的两个步骤人工静态检查法与动态执行跟踪法,所需执行的工作项目及相关的策略和方法。通过对这两个步骤的描述作者将多年的单元测试经验及测试理论注入于全文。 关键词:单元测试、人工检查、白盒测试、测试用例、跟踪调试 1 概述 单元测试是针对软件设计的最小单位——程序模块,进行正确性检验的测试工作。其目的在于发现每个程序模
2013-09-17 09:19:30
11302
原创 程序与测试团队
载自:http://blog.youkuaiyun.com/cheny_com/article/details/7163479整体上有两种测试团队的模型,既然都有存在,自然是各有各的道理。城里城外的人倒不必互相羡慕,只是要观察对面的优点,分析自己的缺点,尝试做点事情补偿一下。所以,下面多说一点各自的坏处。独立的测试团队这个就是著名的与程序团队打架的测试团队。好处
2013-09-06 15:36:37
1600
原创 libcurl使用心得
libcurl使用心得Libcurl为一个免费开源的,客户端url传输库,支持FTP,FTPS,TFTP,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE和LDAP,跨平台,支持Windows,Unix,Linux等,线程安全,支持Ipv6。并且易于使用。http://curl.haxx.se/libcurl/从http://curl.haxx.se/libcu
2013-07-11 08:07:19
2677
原创 libcurl的使用
libcurl的使用,我们使用easy的方式:首先加载头文件#include #include #include 可以采用POST或GET或其他的方式进行,下面以POST方式为例:size_t write_data(void * ptr, size_t size, size_t nmemb, void * stream){memcpy(stream, ptr
2013-07-11 08:06:19
8251
原创 VC下jsoncpp的使用入门(转)
一、摘要JSON 的全称为:JavaScript Object Notation,顾名思义,JSON 是用于标记 Javascript 对象的,JSON 官方的解释为:JSON 是一种轻量级的数据传输格式。本文并不详细介绍 JSON 本身的细节,旨在讨论如何使用 C++ 语言来处理 JSON。关于 JSON 更具体的信息,可参见 JSON 官网:http://www.json.org。
2013-06-25 17:29:49
5570
原创 安装与配置windbg的symbol(符号)
本篇是新手自己写的一点心得.建议新手看看.同时希望前辈多多指教.写这篇的动机:在网上找了一上午的windbg配置符号教程.楞是没找到详细的,都讲的太模糊而且互相抄袭.不适合新手看.终于靠自己的努力弄懂了一点,呵呵写出来新手们分享.安装与配置windbg的symbol(符号)第一步 是从 http://www.microsoft.com/ddk/debugging 下载最新版本的
2013-04-15 15:36:12
2917
原创 设计模式(18)-Command Pattern
一、 命令(Command)模式命令(Command)模式属于对象的行为模式【GOF95】。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派
2013-04-15 11:06:24
1322
原创 WinDBG教程
什么是WinDBG?WinDbg是微软开发的免费源码级调试工具。下载地址为:http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx.Windbg可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。由于大部分程序员不需要做Kernel模式调试, 我在这篇文章中不会介绍Kernel模式调试。Kern
2013-04-12 17:48:24
1669
原创 windbg调试命令9(dt、d)
dt命令显示局部变量、全局变量或数据类型的信息。它也可以仅显示数据类型。即结构和联合(union)的信息。 0: kd> dt _PEB nt!_PEB +0x000 InheritedAddressSpace : UChar +0x001 ReadImageFileExecOptions : UChar +0x002 BeingDebugged : U
2013-04-12 16:47:56
4029
原创 windbg调试命令8(bp、bu、bm、bl、bc、ba、be、bd)
以下以skinhgy为例,windbg附加运行1.bp 命令是在某个地址下断点, 可以 bp 0x7783FEB 也可以 bp MyApp!SomeFunction 。对于后者,WinDBG 会自动找到MyApp!SomeFunction 对应的地址并设置断点。 但是使用bp的问题在于:1)当代码修改之后,函数地址改变,该断点仍然保持在相同位置,不一定继续有效; 2)Win
2013-04-12 16:46:58
2880
原创 windbg调试命令7(!runaway、~)
1.!runaway!runaway命令显示每个线程消费的时间Bit 0 (0x1) 让调试器显示每个线程消耗的用户模式时间(user time),默认不加就是0x1Bit 1 (0x2) 显示每个线程消耗的内核时间(kernel time)。Bit 2 (0x4) 显示每个线程从创建开始经历了多少时间。就是三者的组合:1 2 3 4 5 6 70:002> !runaway Us
2013-04-12 16:41:03
1579
原创 windbg调试命令6(!peb、!teb)
PEB(Process Environment Block,进程环境块)存放进程信息,每个进程都有自己的PEB信息。位于用户地址空间。TEB(Thread Environment Block,线程环境块)系统在此TEB中保存频繁使用的线程相关的数据。位于用户地址空间,在比 PEB 所在地址低的地方。进程中的每个线程都有自己的一个TEB。调试的程序的时候,了解PEB和TEB往往对分析很有帮助
2013-04-12 16:39:45
1456
原创 windbg调试命令5(ln、伪寄存器)
1.lnln 命令显示给定地址处的或者最近的符号。ln表示list near,ln命令将尽可能地给出与特定地址相关的符号,如果没有符号能够精确地与这个地址匹配,那么调试器将通过指针算法对靠近这地址的符号进行运逄,并返回运算结果符号0:000> ln 01012475(01012475) calc!WinMainCRTStartup | (0101263c) c
2013-04-12 16:38:33
1537
原创 windbg调试命令4(用户层.dump)
Windbg生成dump文件的方法:程序崩溃(crash)的时候, 为了以后能够调试分析问题, 可以使用WinDBG要把当时程序内存空间数据都保存下来,生成的文件称为dump 文件。 步骤:1) 打开WinDBG并将之Attach 到crash的程序进程2) 输入产生dump 文件的命令WinDBG产生dump 文件的命令是 .dump ,可以选择不同的参数来生成不同类型的dump
2013-04-12 16:35:20
1298
原创 windbg调试命令3(sx、ld)
1.sxsx* 命令用来控制被调试的程序发生某个异常或特定事件时,调试器要采取的动作sx 命令显示当前进程的异常列表和所有非异常的事件列表,并且显示调试器遇到每个异常和事件时的行为。sxr 命令将所有异常和事件过滤器的状态重设为默认值。命令被清除、中断和继续选项被重设为默认值,等等。sx这个命令的输出信息可以分为三个部分:第一部分是事件处理与相应处理模式的交互,第二部分是标准的
2013-04-12 16:32:48
3746
原创 windbg调试命令2(!gle、g、p)
!gle 扩展显示当前线程的最后一个错误码。这个太好记了,getlasterror取首字母:0:002> !gle LastErrorValue: (Win32) 0 (0) - LastStatusValue: (NTSTATUS) 0 - STATUS_WAIT_0 0:002> !gleLastErrorValue: (Win32) 0 (0) -
2013-04-12 16:21:56
2323
原创 windbg调试命令1(k、u、x)
k*命令显示给定线程的调用堆栈,以及其他相关信息~0 k表示打印0号线程的调用堆栈,直接用k表示打印当前线程的调用堆栈kd> ~0k ChildEBP RetAddr 0007fddc 77d191be ntdll!KiFastSystemCallRet 0007fdfc 010021b0 USER32!NtUserGetMessage+0xc 0007ff1c 0
2013-04-12 16:04:12
2699
原创 windbg调试命令4(用户层.dump)
Windbg生成dump文件的方法:程序崩溃(crash)的时候, 为了以后能够调试分析问题, 可以使用WinDBG要把当时程序内存空间数据都保存下来,生成的文件称为dump 文件。 步骤:1) 打开WinDBG并将之Attach 到crash的程序进程2) 输入产生dump 文件的命令WinDBG产生dump 文件的命令是 .dump ,可以选择不同的参数来生成不同类型的dump
2013-04-12 16:02:29
2302
原创 利用windbg分析dump文件
windbg是windows下一个分析调试的工具,功能非常强大。这里主要记录利用windbg来分析windows蓝屏时所产生的内存转储文件*.dmp。1,下载:http://www.microsoft.com/whdc/devtools/debugging/default.mspx2,配置symbol path:windows程序在编译生成后,会产生一些.exe,dll文件。同
2013-04-12 14:54:28
21679
原创 使用gtest对类进行白盒测试
gtest是一个很好用的测试框架,可以很方便地对函数进行单元测试。主页:http://code.google.com/p/googletest/一篇好文章,《玩转Google开源C++单元测试框架Google Test系列》:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html在使用gtest的过程中,我发现使
2013-04-11 14:33:09
2218
原创 Visual Leak Detector (VLD)使用
Visual Leak Detector (VLD) 1.9h (Beta),点这里开始下载!Visual C++内置内存泄露检测工具,但是功能十分有限。VLD就相当强大,可以定位文件、行号,可以非常准确地找到内存泄漏的位置,而且还免费、开源!在使用的时候只要将VLD的头文件和lib文件放在工程文件中即可。也可以一次设置,新工程就不用重新设置了。只介绍在Visual Studio
2013-04-10 14:57:20
1998
原创 gtest使用
首先#include ,当然工程的头文件路径要设置正确1.简单测试TESTCpp代码#include int Factorial(int n ) { if(n==2)return 100;//故意出个错,嘻嘻 return n} //用TEST做简单测试 TEST(TestFactorial, ZeroInput)
2013-04-10 10:51:40
10908
原创 gtest框架的介绍与应用
【摘要】在本文中,作者根据之前使用gtest框架进行测试的经验,总结了一些使用方式和案例。 在这些案例中,我们可以了解到gtest框架的基本使用方法以及在我们日常测试中的应用,同时也能促进我们对于百度的btest的了解。在我们之后的测试工作中,可以根据各个项目的特点以及gtest、btest等测试框架的功用,进行协调和因势利导,将更多框架产品用于我们的测试工作中,使我们的测试工作更加正规、更加高效
2013-04-10 10:49:28
2954
原创 Gtest使用笔记
项目主页:http://code.google.com/p/googletest/详细教程:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html几点说明:1. vs2010可参考http://www.cnblogs.com/SelaSelah/archive/2012/04/11/2442525.htm
2013-04-10 10:29:50
1976
原创 使用 Boost 的 IPC 和 MPI 库进行并发编程
使用非常流行的 Boost 库进行并发编程非常有意思。Boost 有几个用于并发编程领域的库:Interprocess (IPC) 库用于实现共享内存、内存映射的 I/O 和消息队列;Thread 库用于实现可移植的多线程;Message Passing Interface (MPI) 库用于分布式计算中的消息传递;Asio 库用于使用套接字和其他低层功能实现可移植的连网功能。本文介绍 IPC 和
2013-04-09 16:04:28
1609
原创 Boost.Interprocess翻译-快速入门
Quick Guide for the Impatient入门指南Using shared memory as a pool of unnamed memory blocksCreating named shared memory objectsUsing an offset smart pointer for shared memoryCreati
2013-04-09 15:49:16
1717
原创 读《Boost程序库完全开发指南》
第1章 Boost程序库总论使用Boost,将大大增强C++的功能和表现力 第2章 时间与日期timer提供毫秒级的计时精度,内部是通过std::clock取时间的progress_timer自动打印某生命周期的执行时间原则上程序库的代码是不应该被用户修改的progress_display可以在控制台上显示程序的执行进度date_time库
2013-04-09 15:41:17
2673
原创 boost::asio一个简单的echo服务器
以前使用ACE实现Server框架,但是觉得太笨重,决定采用boost.asio来写服务器程序: 1.服务器构建在linux上面;当然也可以在windows下运行 2.io部分采用非阻塞模式、业务逻辑部分采用同步线程池实现 3.封装io操作及状态,用户应用程序无需关心io详细操作所以决定采用boost::asio框架来写服务器:boost::asio::io_service提供
2013-04-08 14:46:41
1417
原创 Boost::asio范例分析 客户端
为了方便描述,这里只分析一下同步实现,异步实现方式和同步方式的流程是一致的,只是在函数调用的方式上有些区别.分析清楚了同步方式,在看异步实现,也很容易. 这个HTTP范例实现了客户端向服务端请求文件内容的功能,客户端给出一个文件名称,服务端在本地寻找文件,并将文件内容(文本文件)返回给客户端. main函数首先检查传递给exe执行文件的参数,第一个参数是服务端的IP地址,第二个参数是请
2013-04-08 14:41:11
1272
原创 Boost::asio范例分析 服务端
main函数要求程序调用者传递3个参数:服务器IP地址,端口号和文档根目录.其中IP地址可以是IPv4或IPv6格式.接着创建server对象实例,将传递进来的IP地址,端口号,文档根目录作为server对象的构造函数参数传递到处理程序中.最后调用server的run成员函数启动服务端处理例程. http::server::server s(argv[1], argv[2], argv[
2013-04-08 14:39:07
1600
原创 Boost::asio io_service 实现分析
io_service的作用io_servie 实现了一个任务队列,这里的任务就是void(void)的函数。Io_servie最常用的两个接口是post和run,post向任务队列中投递任务,run是执行队列中的任务,直到全部执行完毕,并且run可以被N个线程调用。Io_service是完全线程安全的队列。Io_servie的接口提供的接口有run、run_one、poll、poll_
2013-04-08 14:00:30
948
彗星小助手
2011-11-15
HttpWatchPro
2011-11-10
计算机基础知识考试宝典
2011-09-22
Vc中BSTR,char和CString的转换
2007-10-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人