2015-07-10 刘太华
一个自定的dynamic_cast设计 一个运行时检查的自设计dynamic_cast转换系统: - 包含2个预编译宏,CnDeclareRootRTTI 和CnDeclareRTTI, 宏的目的只是为了生成对应的代码, 实际手法和直接在类里码代码是一样意思; - 一个简单的RTTI类型,每个基类和派生类将会自带一个RTTI的实例属性: ms_RTTI, RTTI类如下: class CnRTTI { public: CnRTTI (const char* pcName, const CnRTTI* pkBaseRTTI); inline const char* GetName() const {return m 继续阅读 »
2017-02-11 Lu Huang
前面的博客 GitHub Pages + Jekyll + Netlify 实现 https 个性域名,讲述了如何通过 GitHub Pages + Jekyll + Netlify 实现了自定义域名支持 https 访问的个人主页(博客)。本文将介绍如何在 Mac 上配置 Jekyll 本地编译环境,实现网站的本地预览。 继续阅读 »
2014-08-20 summer
安装 在centos操作系统安装mysql5.5,如果使用源码编译安装稍微有些麻烦,在centos中我使用简单点的方式:直接使用yum命令进行安装。 yum install mysql-server 在安装过程中会提示是否下载一些依赖,直接输入Y,等待安装完成即可。 安装完成后mysql服务默认是停止的,使用一下命令启动mysql服务。 继续阅读 »
2014-04-25 Xiaosong Gao
说明 类别名可以随便取。 类别是一个类,它是添加了新功能的现有类。 使用类别就是为了能够为现有类添加新的方法,不用继承该现有类,就可使用现有类的对象调用添加的方法了。 类别可以使类的实现分散在多个文件中。 类别中不能有变量,类别中没有放变量的位置。 如果类中的方法和类别中的方法名称相同,这将造成冲突,类别的方法将完全取代类的方法。 同一个类的不同类别声明了相同的方法,这将导致不稳定,哪个方法会被调用是不确定的。 不建议在类别中覆盖类中的方法,因为在类别中的方法不能调用superClass的方法(因为没有元数据支持)。 类别方法不能覆盖于同一个类的其它类别中的方法。因为无法预知他们的加载优先顺序,就可能在编译时出错。 对类库的类别方 继续阅读 »
2016-08-02 ruki
tbox里面针对三个正则库(pcre/pcre2/posix)进行了封装,实现接口统一和跨平台处理,只要xmake在编译配置的时候自动检测到其中一种库,就可以使用了,一般会优先使用pcre2。 如果你不想过多的依赖第三方库,可以切换到posix的正则,调用 xmake f --pcre=false --pcre2=false 把pcre的库禁用了就行了。 首先给个最简单的匹配单个子串的例子: ```c // 执行简单匹配,第二个参数是匹配模式,默认传0就行了 tb_vector_ref_t results = tb_regex_match_done_simple("(\w+)\s+?(\w+)", 0, "he 继续阅读 »
2016-12-05 Meng Lei
Travis CI 简介 Travis CI是一个分步式的开源持续构建项目,只需要通过配置.travis.yml文件,即可将Github上的项目进行持续的编译、测试等工作,以便尽早发现错误,尽早改正,并减少人工的重复劳动。同时,也可以通过travis ci完成很多有趣的工作。 通过Travis CI自动发布hexo博客 我们建立的hexo博客,每次写完一篇,都要执行 hexo generate 和 hexo deploy 等命令,将博客生成的HTML静态文件部署到Github的版本库上,同时,也会将源代码保存一份到Github的另一个分支,每次都要执行很多重复操作,在此,我们可以通过Travis CI来帮我们完成这些重复劳动。 继续阅读 »
2016-11-03 Eric Wang
- Gradle是什么? Gradle是一个集合了Maven和Ant优点的构建工具,据说要取代Maven,不置可否。 - 什么是projects和tasks? 每一个构建都是由一个或多个projects构成的。一个project到底代表什么取决于你想用Gradle做什么。每一个project是由一个或多个tasks构成的,一个task代表一些更加细化的构建。可能是编译一些classes,创建一个JAR,生成javadoc或者生成某个目录的压缩文件。 - 经常用的gradle -q,其中-q是干什么的? -q代表quiet模式,它不会生成Gradle的日志信息(log messages),所以用户只能看到tasks的输出,它使得输 继续阅读 »
2016-10-30 ruki
新特性 支持make进行直接编译(会去自动下载xmake进行构建) 在平台库中,添加切换context上下文接口(参考boost.context实现原理进行重写,并对部分架构进行优化) 新增跨平台协程模块(支持i386, x86_64, arm, arm64),提供更加易用的高性能并发编程模式 新增基于协程的各种服务器开发实例(包括:简单轻量的http服务器,爬虫。。) 新增poller轮询器接口,实现对epoll, poll, kqueue, select的封装,逐步取代老的aiop接口 新增mbedtls ssl库接口支持,目前已支持:openssl, polarssl, mbedtls tbox所有stream, socke 继续阅读 »
2016-12-10 YongHao Hu
go
apt-get install 的原理是什么?我们知道自己编译安装一个包的过程是./configure, make, make install. 但是, apt-get install 做了什么呢? 分析依赖并且下载相应的包, 以下命令会把相应的包都下载到本地. 继续阅读 »
2014-03-14 Xiaosong Gao
iOS
Class类型 Objective-C里面,一个类被正确编译之后,在这个类中存在一个变量用于保存这个类的信息。我们可以通过一个普通的字符串取得这个Class,也可以通过对象取得。Class被成功取得后,可以把它当做一个已经定义好的类来使用。 继续阅读 »