自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Markflow —— 简洁、优雅的在 Markdown 里绘制流程图

Markflow—— 简介、优雅的在 Markdown 里绘制流程图作为一个程序员,给别人写文档时,总需要加几个流程图。而现在写文档基本都使用 Markdown 来写,因为即使对方没有相应的渲染,源文件也可以无障碍的阅读。 个人觉得这时 Markdown 语法最大的亮点,于是就涉及到了一个问题,...

2017-01-02 18:01:25 10337 0

原创 Gradle 打的包 Tomcat 解不开:LifecycleException

Gradle 打的包 Tomcat 解不开:LifecycleException昨天用 Gradle 打的包,放 Tomcat 里解不开 gradle 打的 war 包,tomcat6 启动的时候报错:严重: ContainerBase.addChild: start: LifecycleExc...

2016-06-21 14:07:32 1911 0

原创 踩坑记:httpComponents 的 EntityUtils

今天写的一个服务程序,有人报告获得的数据中文乱码,而我是用 apache 通过 httpComponents 去取得数据的,于是开启日志的 debug 级别。 在日志里果然发现中文不见了,有乱码出现: 2014-07-02 16:35:01.348 DEBUG [Wire.java:86]...

2014-07-02 17:38:58 6466 0

原创 少写了 @ResponseBody 引发的古怪问题

最近在 Tomcat 里写一个异步的 HTTP 服务端,出于方便的考虑使用了 Spring MVC 注解来搞定,然后就发生了诡异的结果。 代码如下:     @RequestMapping("/test")     public DeferredResult test( ...

2014-06-11 11:19:33 2064 0

原创 修复剑灵新装系统后不能玩的问题

其实是缺少 VC 的运行时库,去这里下载: http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=26347 另外,游戏目录里有个 components,里面有过 DXSetup.exe 是装 DirectX 的,也装一下。 ...

2013-11-25 17:13:41 2293 0

原创 全新的内存分配算法(折纸算法)

全新的内存分配算法,这个算法适合可变长对象,并且经常要扩展的内存块的分配,比如字符串。是空间换时间的算法。 想象一张长长的纸条,不断的对折它,就可以把纸条分成一格一格,而且每次对折格子小一半,数量多一倍是吧。这个算法和这个过程很想,因此我命名为折纸算法。

2013-10-17 22:50:39 3105 3

原创 谈谈 C++ 和 Java 的区别

我有多年的 C++ 开发经验,但是最近由于公司的关系,不得不转 Java。看了几天 Java,谈谈感想。      经验丰富的 C++ 程序员应该可以很容易转到 Java 上来,因为他们有许多相似之处,基本语法是完全一样的,只是 Java 砍掉了大量的 C++ 特性,仅仅保留了类相关的部分,在 J...

2013-09-29 10:07:14 1982 0

原创 疯狂的预编译加类型推导能孵化什么吗?

Boost 是个庞然大物,也许很多人已经把它用得很顺了,不过它包含的两个库 MPL 和 Preprocessor 应该大部分人都不会熟悉。 MPL 是用来进行模版元编程的工具,它将一些对象的推导工作做了抽象,可以把类型放入容器,在编译期实现一些很神奇的功能。 Preprocessor 为预编译提供...

2013-09-04 15:25:09 1980 0

原创 TBB 的 BUG?

Threading Building Blocks 是很优秀的一个库,个人用得很多。 近几天调试程序的时候,发现 tbb 的 _concurrent_queue_impl.h 166 行左右有这么一段代码: void assign_and_destroy_item( void* ds...

2013-08-15 08:59:51 1833 0

原创 "优雅"的C++观察者模式实现

C++ 是一种强类型的编程语言,于是最近一直在头疼如何实现一个比较优雅的观察者模式。 如果一个事件附带的参数不同的时候,是否可以使用统一的界面来注册?比如我定义了一个事件,A,参数是 int,而事件B的参数是 string,如果采用统一的注册接口?最先想到的办法是事件用int 定义,采用 boo...

2013-04-28 16:37:42 3035 2

原创 cmake 按构建类型指定不同文件名

cmake 生成工程的时候,很多教程都告诉你 CMAKE_BUILD_TYPE 是构建类型。原本想用这个来判断是否Debug 模式,并写if来修改文件名。但是,这个变量其实仅在生成 Make 文件这种非 multi-config下才起作用,在生成 VC 工程文件这样的 multi-config ...

2013-03-08 15:09:01 4003 0

原创 像脚本语言一样写C++

疯狂的类型推导+虚函数+RTTI,会带来怎么样的东东? 最近写了一个好玩的类 object, 目标是可以像脚本语言一样,存放任意类型,做任意操作。目前完成了大半,有兴趣的朋友可以拿来玩玩。   这个类可以这么玩 void main(){    using nam...

2013-01-17 17:09:25 2560 3

原创 右值引用如何改变你的程序?

点击查看

2013-01-15 14:23:00 1778 0

原创 玩 Diablo3 前要会写脚本

我的笔记本电脑带 nVidia 的 SLI 功能,所以开游戏前要先切换到 高性能 (电源计划),以便打开 SLI,然后玩我的 Diablo III。结束后还要记得切换回 节能模式,免得费电和笔记本发热。 而 Chrome、Vistual Studio 2010 等软件会阻止 SLI 开启,因此开...

2012-06-29 09:35:59 2322 0

原创 boost.string_algo - 字符串算法库 使用点滴

用来记录零碎的知识,防止自己忘了 判断一个字符串是否全为数字:boost::all( str, boost::is_digit() );

2011-08-04 17:09:43 2540 0

原创 boost.asio 使用点滴

用来记录一些零散的知识点,防止自己以后忘了。socket 的 async_connect 被调用以后,is_open 立刻就会返回 true。

2011-07-20 16:26:32 2073 0

原创 中国象棋将帅问题的另类解法

<br />编程之美里有个将帅问题蛮有意思的,该问题的具体描述是:(根据中国象棋的基本原则)在只有双的将帅棋盘上,找出所有双方可以落子的位置(将帅不能碰面),但只能使用一个变量。<br /> <br />解法一般也就是 循环然后判断去除重复位置。而对于只能用一个...

2011-05-11 11:01:00 2315 2

原创 用来分析 Url 的正则式

用来分析 Url 的正则式

2011-04-02 15:03:00 2043 0

原创 四则运算的源代码

借助堆栈实现的四则运算的源代码。输入一个字符串,可以计算值。 支持加减乘除、小数点、括号。

2010-10-14 17:03:00 2648 0

原创 VC 2010 的 Lambda 是美丽的语法糖

Lambda 是个函数对象,因此不能内联优化。

2010-09-16 10:16:00 2386 0

原创 再谈 高性能无锁(Lock-free) 内存池

讨论无锁(Lock-free)算法的效率问题

2010-08-12 14:08:00 4504 2

原创 高性能无锁(Lock-free) 内存池

由于懒惰,一直脱到现在才完成,实在是罪过啊!很快会用它来改写我的无锁容器,嗯,如果我不懒惰的话。 稍微解释一下关键问题: 先分配一块内存,然后将内存划分为等大的内存格。每次调用 alloc 就分配一块内存格出去。 可分配内存是个链表,这个链表被直接贮存在未分配的内存里。换句话说,未被分配的内...

2010-08-04 10:42:00 6165 10

原创 多线程无锁(lock-free)队列(queue)的实现探讨

前面我实现了一个无锁堆,下面打算实现无锁的 FIFO 队列。

2010-06-20 20:49:00 10546 2

原创 多线程无锁(lock-free) 堆的实现

堆的多线程化处理比较简单,它只有一个指向堆顶的变量需要竞争,因此我们可以很方便的用 cas 操作来完成。/* * Copyright (C) 2010 Chen Wang ( China ) * Email: jadedrip@gmail.com * * This librar...

2010-06-18 15:22:00 2837 5

原创 用C/C++为 Lua 脚本设置全局表变量

Lua 使用压栈的方式,通过 C++向 Lua 传输数据。因此我们想为 Lua 环境设置全局的表变量时,可以这么做://把环境变量导入到 lua 的全局表 "environ" lua_newtable(L);//创建一个表格,放在栈顶 lua_pushstring( L...

2010-06-13 10:23:00 2854 1

原创 构建 Lua、LuaBind 的 C++ 编译环境

我写了部分 bjam 脚本来编译一些第三方库,以便能更方便的在 VC 中使用。 主要原理是使用 boost 的库命名规则,以防止连接错误。 这里主要涉及:lua, luabind. 附赠 cryptopp、curl、openssl、sqlite

2010-06-12 11:28:00 4054 0

原创 通过 LuaBind 让 C++函数返回Lua表

由于要返回表,我们的C++函数需要返回 luabind::object 对象。并且在绑定时指定 raw 策略。

2010-06-12 10:22:00 3477 5

原创 免费的数据库建模工具

<br />最好的数据库建模工具自然是 PowerDesigner,可惜它是收费的。在软件知识产权保护越来越被重视的今天(公司有人来检查盗版),只能找免费的软件了。<br />这里推荐 SQL Power Architect http://www.sqlpower.ca/p...

2010-06-08 16:54:00 1681 0

原创 使用 Crypto++ 里的 Blowfish 加密数据

BlowFish算法用来加密64Bit长度的字符串,它所使用的密钥是对称的。 Crypto++ 里的 Blowfish 加密使用起来非常简单。

2010-05-31 17:09:00 1396 0

原创 使用 bjam 构建 crypto++

最近打算使用 crypto++ 5.6.0 , 由于我的机器上装了不同版本的 vc, 为了构建方便,写了 bjam 的构建脚本,可以方便的用不同的编译器编译库和DLL,十分方便。 jamroot 文件import os ; import pch ;import path ; import comm...

2010-05-28 16:40:00 1085 0

原创 获取成员变量类型

这应该是模板元编程里的概念吧,有时候我们确实需要获取成员变量的类型,这里提供一个方法借助模板的偏特化达到目的:templatestruct MemberType;templatestruct MemberType{ typedef F member_type; typedef T class_t...

2010-05-12 16:47:00 1007 0

原创 也谈生成不重复的随机数系列(洗牌算法)

  偶尔看到有人在讨论如何生成不重复的随机数系列(洗牌算法),发现他们用的方法复杂度十分高,要抛大量的随机数,因此把我以前用的洗牌算法也拿出来秀秀。 假设需要生成 1~54 的随机数,那么把 1~54 放入“未洗牌数组”,抛 0~53 的随机数,把指定序号的牌,放入“洗好牌的数组",然后...

2010-05-10 11:13:00 2763 18

原创 注意!Cegui 修改了DX渲染目标,会导致DX混乱

最近在我的 DirectX 中添加了 Cegui (v0.7.1), 奇怪的发现原来正确的 DirectX 的绘制变得十分混乱,仔细查找后才发现,Cegui 改变了渲染目标而没有改回来,从而导致了我的 DirectX 渲染到了 Cegui 的底层窗体上。 因此,调用 Cegui 的渲染函数后要恢复...

2010-03-02 15:45:00 731 0

翻译 InternetOpenUrl 函数

  InternetOpenUrl函数通过一个完整的FTP,Gopher或HTTP网址打开一个资源。HINTERNET InternetOpenUrl (__in HINTERNET hInternet ,__in LPCTSTR lpszUrl ,__in LPCTSTR lpszHeaders...

2010-02-20 13:11:00 4436 0

原创 解数独游戏的源代码

公司搞了个小活动,让大家玩数独游戏,作为一个程序员,第一考虑就是用 C++ 穷举,于是就有了下面的代码:#include "stdafx.h"bool check( int buf[9][9], int j, int i ){ int v=buf[j][i]; // 检测横向是...

2010-01-22 14:22:00 917 0

原创 从零创建最简单的 ogre 程序

般的 ogre 教程貌似都是从已有的例子框架开始创建 ogre 程序的,这篇文章教你从零开始,创建一个能显示一条龙的 Ogre 程序,这个程序只有最少的代码,没有其他功能,方便你理解 ogre 的一些基本概念。 开始一个新的 Win32 程序,你可以删除所有代码,只需要保留 WinMain 的声明...

2009-12-31 09:32:00 1195 0

原创 使用 boost::signals2 的智能连接管理

boost::signals2 提供了使用智能指针的连接管理。可以通过下面的代码生成智能连接: using namespace boost::signals2;boost::shared_ptr class_ptr;   // 这是观察者的智能指针 signal shoter;   // 这就是我...

2009-11-11 16:04:00 1442 2

原创 如何判断当前是否全屏程序

static BOOL IsFullScreenActive() {   /*  这个函数获取屏幕4角的窗口的进程句柄,判断与激活句柄是否相等的方式来判断是否全屏程序。  特别的,对 IE 之类的多标签多进程程序,子窗口的进程会和主窗口不同。需要获取窗口的主窗口来对比才可以  */  struct...

2009-09-07 14:03:00 1502 0

原创 小心使用 RedrawWindow 和 InvalidateRect

当父窗体设置了 WS_CLIPCHILDREN 的属性后, 默认状态下,RedrawWindow 和 InvalidateRect 不会导致子窗体重绘,因此,如果子窗体同时设置了 WS_EX_TRANSPARENT 属性,子窗体就会被父窗体刷没了。解决的办法是 RedrawWindow 的时候添加...

2009-09-02 09:40:00 1251 0

原创 Boost 又升级到 1.40.0 了

最近 boost 很活跃啊,升级好快。

2009-09-01 09:14:00 506 0

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