是否安装数据库引擎服务失败中点了是会怎么样 cdt

,乐于造轮子
Gradle和Maven都是项目自动构建工具,编译源代码只是整个过程的一个方面,更重要的是,你要把你的软件发布到生产环境中来产生商业价值,所以,你要运行测试,构建分布、分析代码质量、甚至为不同目标环境提供不同版本,然后部署。整个过程进行自动化操作是很有必要的。&br&&p&整个过程可以分成以下几个步骤:&/p&&ul&&li&编译源代码&/li&&li&运行单元测试和集成测试&/li&&li&执行静态代码分析、生成分析报告&/li&&li&创建发布版本&/li&&li&部署到目标环境&/li&&li&部署传递过程&/li&&li&执行冒烟测试和自动功能测试&/li&&/ul&如果你手工去执行每一个步骤无疑效率比较低而且容易出错,有了自动化构建你只需要自定义你的构建逻辑,剩下的事情交给工具去完成。&br&&br&虽然两者都是项目工具,但是maven现在已经是行业标准,Gradle是后起之秀,很多人对他的了解都是从android studio中得到的,Gradle抛弃了Maven的基于XML的繁琐配置,众所周知XML的阅读体验比较差,对于机器来说虽然容易识别,但毕竟是由人去维护的。取而代之的是Gradle采用了领域特定语言Groovy的配置,大大简化了构建代码的行数,比如在Maven中你要引入一个依赖:&br&&div class=&highlight&&&pre&&code class=&language-text&&&properties&
&kaptcha.version&2.3&/kaptcha.version&
&/properties&
&dependencies&
&dependency&
&groupId&com.google.code.kaptcha&/groupId&
&artifactId&kaptcha&/artifactId&
&version&${kaptcha.version}&/version&
&classifier&jdk15&/classifier&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-core&/artifactId&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-beans&/artifactId&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-context&/artifactId&
&/dependency&
&dependency&
&groupId&junit&/groupId&
&artifactId&junit&/artifactId&
&/dependency&
&/dependencies&
&/code&&/pre&&/div&&p&然后我将其转换成Gradle脚本,结果是惊人的:&/p&&div class=&highlight&&&pre&&code class=&language-text&&dependencies {
compile('org.springframework:spring-core:2.5.6')
compile('org.springframework:spring-beans:2.5.6')
compile('org.springframework:spring-context:2.5.6')
compile('com.google.code.kaptcha:kaptcha:2.3:jdk15')
testCompile('junit:junit:4.7')
&/code&&/pre&&/div&注意配置从原来的28行缩减至7行!这还不算我省略的一些父POM配置。依赖的groupId、artifactId、 version,scope甚至是classfier,一点都不少。较之于Maven或者Ant的XML配置脚本,Gradle使用的Grovvy脚本杀伤力太大了,爱美之心,人皆有之,相比于七旬老妇松松垮垮的皱纹,大家肯定都喜欢少女紧致的脸蛋,XML就是那老妇的皱纹。&br&&br&Gradle给我最大的有点是两点。其一是简洁,基于Groovy的紧凑脚本实在让人爱不释手,在表述意图方面也没有什么不清晰的地方。其二是灵活,各种在Maven中难以下手的事情,在Gradle就是小菜一碟,比如修改现有的构建生命周期,几行配置就完成了,同样的事情,在Maven中你必须编写一个插件,那对于一个刚入门的用户来说,没个一两天几乎是不可能完成的任务。
Gradle和Maven都是项目自动构建工具,编译源代码只是整个过程的一个方面,更重要的是,你要把你的软件发布到生产环境中来产生商业价值,所以,你要运行测试,构建分布、分析代码质量、甚至为不同目标环境提供不同版本,然后部署。整个过程进行自动化操作是…
&ul&&li&把项目拆分成子项目,定义共同的行为和单独的行为,减少重复代码&br&&/li&&li&使用Gradle Wrapper来统一版本、方便其他成员不用下载&/li&&li&&div class=&highlight&&&pre&&code class=&language-text&&Gradletask wrapper(type: Wrapper) {
gradleVersion = '1.7'
&/code&&/pre&&/div&&p&然后执行这个任务:&/p&&div class=&highlight&&&pre&&code class=&language-groovy&&&span class=&n&&$&/span& &span class=&n&&gradle&/span& &span class=&n&&wrapper&/span&
&span class=&o&&:&/span&&span class=&n&&wrapper&/span&
&/code&&/pre&&/div&&/li&&/ul&
把项目拆分成子项目,定义共同的行为和单独的行为,减少重复代码使用Gradle Wrapper来统一版本、方便其他成员不用下载
Gradletask wrapper(type: Wrapper) {
gradleVersion = '1.7'
然后执行这个任务:$ gradle wrapper
编译源代码只是整个软件开发过程的一个方面,更重要的是,你要把你的软件发布到生产环境中来产生商业价值,所以,你要运行测试,构建分布、分析代码质量、甚至为不同目标环境提供不同版本,然后部署。&br&&br&&p&整个过程可以分成以下几个步骤:&/p&&ul&&li&编译源代码&/li&&li&运行单元测试和集成测试&/li&&li&执行静态代码分析、生成分析报告&/li&&li&创建发布版本&/li&&li&部署到目标环境&/li&&li&部署传递过程&/li&&li&执行冒烟测试和自动功能测试&/li&&/ul&如果你手工去操作这些过程会很繁琐,效率低下,Gradle提供自动化的构建机制,上面的每个步骤都可以表示成Gradle里面的一个任务(Task),任务之间可以相互依赖,比如你定义任务A和任务B,&br&&div class=&highlight&&&pre&&code class=&language-groovy&&&span class=&n&&defaultTasks&/span& &span class=&s1&&'taskB'&/span&
&span class=&n&&task&/span& &span class=&n&&taskA&/span& &span class=&o&&&&&/span& &span class=&o&&{&/span&
&span class=&n&&println&/span& &span class=&s2&&&i'm task A&&/span&
&span class=&o&&}&/span&
&span class=&n&&task&/span& &span class=&n&&taskB&/span& &span class=&o&&&&&/span& &span class=&o&&{&/span&
&span class=&n&&println&/span& &span class=&s2&&&i'm task B, and I depend on &&/span& &span class=&o&&+&/span& &span class=&n&&taskA&/span&&span class=&o&&.&/span&&span class=&na&&name&/span&
&span class=&o&&}&/span&
&span class=&n&&taskB&/span&&span class=&o&&.&/span&&span class=&na&&dependsOn&/span& &span class=&n&&taskA&/span&
&/code&&/pre&&/div&&br&&p&运行命令&strong&$ gradle -q&/strong&之后(参数q让Gradle不要打印错误之外的日志),就能看到如下的预期输出:&/p&&br&i'm task A&br&i'm task B, and I depend on taskA&br&&br&执行完之后Gradle会生成相应的报告,如果没有问题就可以发布到生产环境中。&br&Gradle脚本是基于Groovy领域特定语言,也就是说构建文件也是代码,Maven引入的XML配置文件可读性和可扩展性比较差,Gradle可以让你像写代码一样写出容易维护、可复用、可读性好、易于理解的构建代码。&br&&br&Gradle同样引入了依赖管理、仓库和标准项目布局,Gradle引入的领域特定语言使得添加和删除依赖非常方便,你只需要在dependency块里面添加一行代码,注明要在哪个配置部分引入依赖,以及要引入哪个依赖,比如:&br&&div class=&highlight&&&pre&&code class=&language-groovy&&&span class=&n&&dependencies&/span& &span class=&o&&{&/span&
&span class=&n&&compile&/span&&span class=&o&&(&/span&&span class=&s1&&'org.springframework:spring-core:2.5.6'&/span&&span class=&o&&)&/span&&span class=&c1&&//表示编译期依赖spring-core这个库&/span&
&span class=&n&&testCompile&/span&&span class=&o&&(&/span&&span class=&s1&&'junit:junit:4.7'&/span&&span class=&o&&)&/span&&span class=&c1&&//表示测试代码的时候依赖junit这个库&/span&
&span class=&o&&}&/span&
&/code&&/pre&&/div&传统的构建工具比如ant一开始并没有引入中央仓库的概念,他需要手动复制依赖的库文件到指定的目录,这使得这些JAR文件添加到版本控制系统当中,而Gradle会自动解析你的依赖配置,从中央仓库比如mavenCentral()中解析并下载依赖到你的本地仓库中,这些文件并不会添加到版本控制系统当中,Gradle也支持传递依赖,你也可以排错部分传递依赖或者干脆去掉传递依赖,还可以支持动态版本,只需要把最后一位数字改成+号。&br&&br&Gradle支持多项目构建,当你的项目变得越来越庞大的时候,维护起来会比较困难,Gradle多项目构建使得你可以根据代码的功能把项目分成几个子项目,比如web项目开发中把项目分成逻辑、视图和控制三个模块,每个模块可以有各自的配置和依赖,也可以定义通用的配置。&br&&br&当你需要为不同的环境打生成不同的发布时,以往可能是为每一个目标环境新建一个过程,有了gradle你不需要重复的工作,你会很容易生成不同的版本,你可以指定多个版本共同的构建逻辑,也可以给他们单独指定一些脚本。&br&&br&总而言之,Gradle并没有引入太新鲜的东西,它是一个结合Ant和Maven理念的优秀实现,最重要的就是引入了Groovy语言,使得构建代码更加容易维护、可读性强、易于扩展,给了你充分的自由去自定义你的项目。
编译源代码只是整个软件开发过程的一个方面,更重要的是,你要把你的软件发布到生产环境中来产生商业价值,所以,你要运行测试,构建分布、分析代码质量、甚至为不同目标环境提供不同版本,然后部署。整个过程可以分成以下几个步骤:编译源代码运行单元测试…
排名不分先后:&br&&b&侯捷:STL源码剖析&br&毛德操:&a href=&/subject/1231584/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Linux内核源代码情景分析&i class=&icon-external&&&/i&&/a&&/b&&br&&b&潘爱民:程序员的自我修养 : 链接、装载与库&/b&&br&&b&周志明:深入理解Java虚拟机&/b&&br&&b&秦小波:设计模式之禅&/b&&br&&br&&b&技术博客:陈皓、阮一峰&/b&
排名不分先后:侯捷:STL源码剖析毛德操:潘爱民:程序员的自我修养 : 链接、装载与库周志明:深入理解Java虚拟机秦小波:设计模式之禅技术博客:陈皓、阮一峰
开始学习开源框架&br&&ul&&li&&a href=&/blog/2014/12/c-open-project.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&值得推荐的C/C++框架和库&i class=&icon-external&&&/i&&/a&&br&&/li&&li&&a href=&/13730.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&10个你能参与并学习的Java开源项目&i class=&icon-external&&&/i&&/a&&br&&/li&&li&分布式内存对象缓存系统&a href=&/memcached/memcached& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&memcached/memcached · GitHub&i class=&icon-external&&&/i&&/a&&br&&/li&&li&高性能键值对存储系统&a href=&/antirez/redis& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&antirez/redis · GitHub&i class=&icon-external&&&/i&&/a&&br&&/li&&li&Google的键/值对(Key/Value Pair)嵌入式数据库&a href=&/google/leveldb& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&google/leveldb · GitHub&i class=&icon-external&&&/i&&/a&&br&&/li&&li&高性能web服务器&a href=&http://nginx.org/en/download.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&nginx: download&i class=&icon-external&&&/i&&/a&&br&&/li&&li&轻量级web服务器,用c语言写的&a href=&/software/thttpd/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&thttpd&i class=&icon-external&&&/i&&/a&&br&&/li&&li&C语言写的事件驱动框架&a href=&/libevent/libevent& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&libevent/libevent · GitHub&i class=&icon-external&&&/i&&/a&&/li&&/ul&
开始学习开源框架分布式内存对象缓存系统高性能键值对存储系统Google的键/值对(Key/Value Pair)嵌入式数据库高性…
&ul&&li&&a href=&/blog/2014/12/c-open-project.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&值得推荐的C/C++框架和库&i class=&icon-external&&&/i&&/a&&br&&/li&&li&&a href=&/13730.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&10个你能参与并学习的Java开源项目&i class=&icon-external&&&/i&&/a&&br&&/li&&li&分布式内存对象缓存系统&a href=&/memcached/memcached& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&memcached/memcached · GitHub&i class=&icon-external&&&/i&&/a&&br&&/li&&li&高性能键值对存储系统&a href=&/antirez/redis& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&antirez/redis · GitHub&i class=&icon-external&&&/i&&/a&&br&&/li&&li&Google的键/值对(Key/Value Pair)嵌入式数据库&a href=&/google/leveldb& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&google/leveldb · GitHub&i class=&icon-external&&&/i&&/a&&br&&/li&&li&轻量级web服务器,用c语言写的全部代码只有502行(包括注释)&a href=&/LippiOuYang/Tinyhttpd& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&LippiOuYang/Tinyhttpd · GitHub&i class=&icon-external&&&/i&&/a&&/li&&li&高性能web服务器&a href=&http://nginx.org/en/download.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&nginx: download&i class=&icon-external&&&/i&&/a&&/li&&li&C语言写的事件驱动框架&a href=&/libevent/libevent& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&libevent/libevent · GitHub&i class=&icon-external&&&/i&&/a&&/li&&/ul&
分布式内存对象缓存系统高性能键值对存储系统Google的键/值对(Key/Value Pair)嵌入式数据库轻量级web服务器,用c…
&ul&&li&&a href=&/blog/2014/12/c-open-project.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&值得推荐的C/C++框架和库&i class=&icon-external&&&/i&&/a&&/li&&li&分布式内存对象缓存系统&a href=&/memcached/memcached& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&memcached/memcached · GitHub&i class=&icon-external&&&/i&&/a&&br&&/li&&li&高性能键值对存储系统&a href=&/antirez/redis& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&antirez/redis · GitHub&i class=&icon-external&&&/i&&/a&&br&&/li&&li&Google的键/值对(Key/Value Pair)嵌入式数据库&a href=&/google/leveldb& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&google/leveldb · GitHub&i class=&icon-external&&&/i&&/a&&br&&/li&&li&高性能web服务器&a href=&http://nginx.org/en/download.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&nginx: download&i class=&icon-external&&&/i&&/a&&br&&/li&&li&轻量级web服务器,用c语言写的&a href=&/software/thttpd/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&thttpd&i class=&icon-external&&&/i&&/a&&br&&/li&&li&C语言写的事件驱动框架&a href=&/libevent/libevent& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&libevent/libevent · GitHub&i class=&icon-external&&&/i&&/a&&/li&&li&linux下使用的非常简单的网站压测工具&a href=&/LippiOuYang/WebBench& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&LippiOuYang/WebBench · GitHub&i class=&icon-external&&&/i&&/a&&br&&/li&&li&基于 Java 语言的极速 WEB + ORM 框架&a href=&/jfinal/jfinal& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&jfinal/jfinal · GitHub&i class=&icon-external&&&/i&&/a&&/li&&/ul&
分布式内存对象缓存系统高性能键值对存储系统Google的键/值对(Key/Value Pair)嵌入式数据库高性能web服务器轻量级web服务器,用c语…
&ul&&li&静态方法和实例方法的区别是静态方法只能引用静态变量,静态方法通过类名来调用,实例方法通过对象实例来调用&br&&/li&&li&每个线程都有自己的线程栈,栈与线程同时创建,每一个虚拟机线程都有自己的程序计数器PC,在任何时刻,一个虚拟机线程只会执行一个方法的代码,这个方法称为该线程的当前方法,如果这个方法不是native的,程序计数器就保存虚拟机正在执行的字节码指令的地址。&/li&&li&线程调用方法的时候会创建栈帧,用于保存局部变量表和操作数栈以及指向该类常量池的引用&/li&&li&你所说的第一个线程执行到方法的第8行,第二个线程执行到第二行,虽然是同一个方法,但是不同线程在调用,程序计数器的值是不一样的,操作这两个线程不会相互影响(假设不存在访问共享变量的情况)&/li&&/ul&
静态方法和实例方法的区别是静态方法只能引用静态变量,静态方法通过类名来调用,实例方法通过对象实例来调用每个线程都有自己的线程栈,栈与线程同时创建,每一个虚拟机线程都有自己的程序计数器PC,在任何时刻,一个虚拟机线程只会执行一个方法的代码,这…
&ul&&li&动态类型语言:在运行期进行类型检查的语言,也就是在编写代码的时候可以不指定变量的数据类型,比如Python和Ruby&br&&/li&&li&静态类型语言:它的数据类型是在编译期进行检查的,也就是说变量在使用前要声明变量的数据类型,这样的好处是把类型检查放在编译期,提前检查可能出现的类型错误,典型代表C/C++和Java&/li&&li&强类型语言,一个变量不经过强制转换,它永远是这个数据类型,不允许隐式的类型转换。举个例子:如果你定义了一个double类型变量a,那么程序不可能将a当作int类型处理。典型代表是Java。&/li&&li&弱类型语言:它与强类型语言定义相反,允许编译器进行隐式的类型转换,典型代表C/C++。&/li&&/ul&
动态类型语言:在运行期进行类型检查的语言,也就是在编写代码的时候可以不指定变量的数据类型,比如Python和Ruby静态类型语言:它的数据类型是在编译期进行检查的,也就是说变量在使用前要声明变量的数据类型,这样的好处是把类型检查放在编译期,提前检查…
&ul&&li&&strong&pathogen &/strong&让每个插件占有一个单独的目录,解决插件文件分散的问题。 安装了 pathogen 以后只要在 ~/.vim (注:MS Windows 下貌似是 ~\vimfiles,下同)里建立一个 bundle 目录,然后把所有插件一一放在 ~/.vim/bundle/插件名 下面,就可以使用。 插件的安装过程与没有 pathogen 时类似,但从安装结束开始,一切的插件管理过程都能得到简化。试用过某个插件以后需要删除?安装在 bundle 目录里最后把插件的目录一删了之就行了。想保持使用某个插件的最新版本?直接从插件的仓库 checkout 一份代码到 bundle 目录,或者别的地方再 symlink 一下就行了。&/li&&li&vundle, 更是把git操作整合进去,用户需要做的只是去Github上找到自己想要的插件的名字,安装,更新和卸载都可有vundle来完成了。虽然去发现一个好的插件仍然是一个上下求索的过程,但是用户已经可以从安装配置的繁琐过程解脱了。&br&Vundle的具体介绍查看&a href=&http://www.vim.org/scripts/script.php?script_id=3458& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&vim.org&i class=&icon-external&&&/i&&/a&,或者&a href=&/gmarik/vundle& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&github repo&i class=&icon-external&&&/i&&/a&&/li&&li&neoBundle 是一个基于 Vundle 的项目,如同 Vundle,它们都可以安装和升级插件。然而 NeoBundle 的说明文件上明确指出:“NeoBundle 不是一个稳定的插件管理器,如果你想要一个稳定的,请选择 Vundle”。最新的 release-note 上也有警告“可能会造成兼容性问题”——这是一个开发者写的注解,说明这个管理器还不能让人放心使用。所以,我们为什么要使用 NeoBundle?它都不能保证稳定运行!好吧,它还是有可取之处的。Vundle 只支持 &a href=&/packages/git& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Git&i class=&icon-external&&&/i&&/a& 这种版本控制系统,而 NeoBundle 可以支持 &a href=&/packages/subversion& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Subversion&i class=&icon-external&&&/i&&/a& 和 &a href=&/packages/mercurial& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Mercurial&i class=&icon-external&&&/i&&/a&。另一个原因是如果你不想插件升级时破坏你的 Vim 生态环境,你可以锁住 NeoBundle,让它只使用某个插件的固定版本。&/li&&/ul&
pathogen 让每个插件占有一个单独的目录,解决插件文件分散的问题。 安装了 pathogen 以后只要在 ~/.vim (注:MS Windows 下貌似是 ~\vimfiles,下同)里建立一个 bundle 目录,然后把所有插件一一放在 ~/.vim/bundle/插件名 下面,就可以使用。 插件的安…
&ul&&li&&em&neocomplete&/em&&a href=&/Shougo/neocomplete.vim& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&github主页&i class=&icon-external&&&/i&&/a&,一个比VIm自带补全更强大的自动补全插件,支持更多的特性。&/li&&li&YouCompleteMe&/li&&/ul&
neocomplete,一个比VIm自带补全更强大的自动补全插件,支持更多的特性。YouCompleteMe
&ul&&li&&b&a.vim&/b& .h和.c之间切换&/li&&li&&b&&b&ctags 和 taglist&/b&&br&&/b&&/li&&li&&b&NERD_tree&/b& 树形的文件系统浏览器(替代netrw)&/li&&li&&b&Vunder vim插件管理,只需一条命令就可以安装插件&a href=&/gmarik/Vundle.vim& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&gmarik/Vundle.vim · GitHub&i class=&icon-external&&&/i&&/a&&/b&&/li&&li&&em&neocomplete&/em&&a href=&/Shougo/neocomplete.vim& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&github主页&i class=&icon-external&&&/i&&/a&,一个比VIm自带补全更强大的自动补全插件,支持更多的特性。&/li&&li&&p&.&em&CtrlP&/em&&a href=&/kien/ctrlp.vim& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&github主页&i class=&icon-external&&&/i&&/a&&/p&&p&快速查找文件、缓冲区、tag的Vim插件,可以同时打开多个文件,创建文件和目录&/p&&/li&&li&&p&&em&surround&/em&&a href=&/tpope/vim-surround& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&github主页&i class=&icon-external&&&/i&&/a&。为已一些存在的代码加上括号,删除一对括号但保留其中的内容,或者把一对()改成[]。&br&&/p&&/li&&li&&p&&em&syntastic&/em&&a href=&/scrooloose/syntastic#installation& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&githun主页&i class=&icon-external&&&/i&&/a&,语法检查,可以达到IDE的检查语法错误的功能&br&&/p&&/li&&li&&p&.&em&fugitive&/em&&a href=&/tpope/vim-fugitive& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&github主页&i class=&icon-external&&&/i&&/a& ,fugitive.vim插件是由Tim Pope创建的VIM插件。该插件与命令行git工具相辅相成,可以无缝的插入到工作流程中。&/p&&/li&&li&&p&插件详细安装和介绍:&a href=&/blog/2015/03/vim-plugins.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&一些强大的Vim插件&i class=&icon-external&&&/i&&/a&&/p&&/li&&/ul&
a.vim .h和.c之间切换ctags 和 taglistNERD_tree 树形的文件系统浏览器(替代netrw)Vunder vim插件管理,只需一条命令就可以安装插件neocomplete,一个比VIm自带补全更强大的自动补全插件,支持更多的特性。.CtrlP
vim用来编辑文档、写博客还是非常不错的,关键是快速便捷,Vim设计的一个初衷就是摆脱对鼠标的依赖,Crome浏览器都有Vim的扩展插件,在写代码的时候使用鼠标效率是非常低下的,如果你只用Vim的基本功能来写代码是非常费劲的,Vim的强大就在于它有一个强大的社区,有非常多的插件,结合一些插件使用可以大大的提高效率,比如ctags,taglist,winmanager,youcompleteme,CtrlP,syntistic,关于插件的使用可以看看这篇文章:&a href=&/blog/2015/03/vim-plugins.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&一些强大的Vim插件&i class=&icon-external&&&/i&&/a&
vim用来编辑文档、写博客还是非常不错的,关键是快速便捷,Vim设计的一个初衷就是摆脱对鼠标的依赖,Crome浏览器都有Vim的扩展插件,在写代码的时候使用鼠标效率是非常低下的,如果你只用Vim的基本功能来写代码是非常费劲的,Vim的强大就在于它有一个强大的…
&ul&&li&&a href=&/devtools//android-studio-tutorial1/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android Studio系列教程一--下载与安装&i class=&icon-external&&&/i&&/a&&br&&/li&&li&&a href=&/devtools//android-studio-tutorial2/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android Studio系列教程二--基本设置与运行&i class=&icon-external&&&/i&&/a&&br&&/li&&li&&a href=&/devtools//android-studio-tutorial3/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android Studio系列教程三--快捷键&i class=&icon-external&&&/i&&/a&&br&&/li&&li&&a href=&/devtools//android-studio-tutorial4/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android Studio系列教程四--Gradle基础&i class=&icon-external&&&/i&&/a&&br&&/li&&li&&a href=&/devtools//android-studio-tutorial5/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android Studio系列教程五--Gradle命令详解与导入第三方包&i class=&icon-external&&&/i&&/a&&br&&/li&&li&&a href=&/blog/2015/03/android-studio-prefrence.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android Studio多渠道打包和代码混淆教程&i class=&icon-external&&&/i&&/a&&/li&&li&&Gradle实战&中文版&a href=&http://lippiouyang.gitbooks.io/gradle-in-action-cn/content/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&关于本书 | Gradle 实战&i class=&icon-external&&&/i&&/a&&/li&&/ul&
&ul&&li&官方文档&a href=&https://gradle.org/documentation/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&gradle.org/documentatio&/span&&span class=&invisible&&n/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&br&&/li&&li&Gradle实战中文版&a href=&http://lippiouyang.gitbooks.io/gradle-in-action-cn/content/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&关于本书 | Gradle 实战&i class=&icon-external&&&/i&&/a&&/li&&/ul&
官方文档Gradle实战中文版
掌握博客基本的配置方法,GIthub pages是机遇jekyll这个模板解析引擎生成静态页面,可以为多个文章生成一个样式而不需要再多个文件中复制,所以主要掌握jekyll的配置方法,详细请参考jekyll 的官网:&a href=&/docs/home/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&欢迎&i class=&icon-external&&&/i&&/a&&br&&ul&&li&github有一个页面整理了很多不错的博客样板,&a href=&/jekyll/jekyll/wiki/sites& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Sites · jekyll/jekyll Wiki · GitHub&i class=&icon-external&&&/i&&/a&,你可以fork别人的网站来修改,比如我这个&a href=&/blog/2015/03/github-pages-blog.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&利用github-pages建立个人博客&i class=&icon-external&&&/i&&/a&就是fork自别人的&/li&&li&然后需要掌握git的基本操作&/li&&li&掌握markdown这个标记语言的基本语法&/li&&li&接下来自己慢慢摸索,很快就能搭建一个自己的网站了&/li&&/ul&
掌握博客基本的配置方法,GIthub pages是机遇jekyll这个模板解析引擎生成静态页面,可以为多个文章生成一个样式而不需要再多个文件中复制,所以主要掌握jekyll的配置方法,详细请参考jekyll 的官网:github有一个页面整理了很多不错的博客样板,
有一些比较好的开源框架可以学习,比如:&br&1. Webbench&p&Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。&/p&&p&下载链接:&a href=&http://home.tiscali.cz/~cz210552/webbench.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Web Bench Homepage&i class=&icon-external&&&/i&&/a&&/p&- 2. Tinyhttpd&p&tinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通过阅读这段代码理解一个 Http Server 的本质。&/p&&p&下载链接:&a href=&http://sourceforge.net/projects/tinyhttpd/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Tiny HTTPd | SourceForge.net&i class=&icon-external&&&/i&&/a&&/p&- 3. cJSON&p&cJSON是C语言中的一个JSON编解码器,非常轻量级,C文件只有500多行,速度也非常理想。&/p&&p&cJSON也存在几个弱点,虽然功能不是非常强大,但cJSON的小身板和速度是最值得赞赏的。其代码被非常好地维护着,结构也简单易懂,可以作为一个非常好的C语言项目进行学习。&/p&&p&项目主页:&a href=&http://sourceforge.net/projects/cjson/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&cJSON | SourceForge.net&i class=&icon-external&&&/i&&/a&&/p&- 4. CMockery&p&cmockery是google发布的用于C单元测试的一个轻量级的框架。它很小巧,对其他开源包没有依赖,对被测试代码侵入性小。cmockery的源代码行数不到3K,你阅读一下will_return和mock的源代码就一目了然了。&/p&&p&主要特点:&/p&&ul&&li&免费且开源,google提供技术支持;&/li&&li&轻量级的框架,使测试更加快速简单;&/li&&li&避免使用复杂的编译器特性,对老版本的编译器来讲,兼容性好;&/li&&li&并不强制要求待测代码必须依赖C99标准,这一特性对许多嵌入式系统的开发很有用&/li&&/ul&&p&下载链接:&a href=&/p/cmockery/downloads/list& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Downloads - cmockery - A lightweight library to simplify and generalize the process of writing unit tests for C applications.&i class=&icon-external&&&/i&&/a&&/p&- 5. Libev&p&libev是一个开源的事件驱动库,基于epoll,kqueue等OS提供的基础设施。其以高效出名,它可以将IO事件,定时器,和信号统一起来,统一放在事件处理这一套框架下处理。基于Reactor模式,效率较高,并且代码精简(4.15版本8000多行),是学习事件驱动编程的很好的资源。&/p&&p&下载链接:&a href=&http://software.schmorp.de/pkg/libev.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&software.schmorp.de/pkg&/span&&span class=&invisible&&/libev.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&- 6. Memcached&p&Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态数据库驱动网站的速度。Memcached 基于一个存储键/值对的 hashmap。Memcached-1.4.7的代码量还是可以接受的,只有10K行左右。&/p&&p&下载地址:&a href=&http://memcached.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&memcached - a distributed memory object caching system&i class=&icon-external&&&/i&&/a&&/p&- 7. Lua&p&Lua很棒,Lua是巴西人发明的,这些都令我不爽,但是还不至于脸红,最多眼红。&/p&&p&让我脸红的是Lua的源代码,百分之一百的ANSI C,一点都不掺杂。在任何支持ANSI C编译器的平台上都可以轻松编译通过。我试过,真是一点废话都没有。Lua的代码数量足够小,5.1.4仅仅1.5W行,去掉空白行和注释估计能到1W行。&/p&&p&下载地址:&a href=&http://www.lua.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Programming Language Lua&i class=&icon-external&&&/i&&/a&&/p&- 8. SQLite&p&SQLite是一个开源的嵌入式关系数据库,实现自包容、零配置、支持事务的SQL数据库引擎。 其特点是高度便携、使用方便、结构紧凑、高效、可靠。足够小,大致3万行C代码,250K。&/p&&p&下载地址:&a href=&http://www.sqlite.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&SQLite Home Page&i class=&icon-external&&&/i&&/a& 。&/p&- 9. UNIX v6&p&UNIX V6 的内核源代码包括设备驱动程序在内 约有1 万行,这个数量的源代码,初学者是能够充分理解的。有一种说法是一个人所能理解的代码量上限为1 万行,UNIX V6的内核源代码从数量上看正好在这个范围之内。看到这里,大家是不是也有“如果只有1万行的话没准儿我也能学会”的想法呢?&/p&&p&另一方面,最近的操作系统,例如Linux 最新版的内核源代码据说超过了1000 万行。就算不是初学者,想完全理解全部代码基本上也是不可能的。&/p&&p&下载地址:&a href=&http://minnie.tuhs.org/cgi-bin/utree.pl?file=V6& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&minnie.tuhs.org/cgi-bin&/span&&span class=&invisible&&/utree.pl?file=V6&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&- 10. NETBSD&p&NetBSD是一个免费的,具有高度移植性的 UNIX-like 操作系统,是现行可移植平台最多的操作系统,可以在许多平台上执行,从 64bit alpha 服务器到手持设备和嵌入式设备。NetBSD计划的口号是:”Of course it runs NetBSD”。它设计简洁,代码规范,拥有众多先进特性,使得它在业界和学术界广受好评。由于简洁的设计和先进的特征,使得它在生产和研究方面,都有卓越的表现,而且它也有受使用者支持的完整的源代码。许多程序都可以很容易地通过NetBSD Packages Collection获得。&/p&&p&下载地址:&a href=&http://www.netbsd.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The NetBSD Project&i class=&icon-external&&&/i&&/a&&/p&&br&&p&这个网站整理的比较全,可以看看&a href=&/blog/2014/12/c-open-project.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&值得推荐的C/C++框架和库&i class=&icon-external&&&/i&&/a&&/p&
有一些比较好的开源框架可以学习,比如:1. WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用…
有一些比较好的开源框架可以学习,比如:&br&&br&1. Webbench&p&Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。&/p&&p&下载链接:&a href=&/LippiOuYang/WebBench& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&/LippiOuYang/WebBenchl&i class=&icon-external&&&/i&&/a&&/p&&p&&br&2. Tinyhttpd&/p&&p&tinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通过阅读这段代码理解一个 Http Server 的本质。&/p&&p&下载链接:&a href=&http://sourceforge.net/projects/tinyhttpd/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Tiny HTTPd | SourceForge.net&i class=&icon-external&&&/i&&/a&&/p&&br&3. cJSON&p&cJSON是C语言中的一个JSON编解码器,非常轻量级,C文件只有500多行,速度也非常理想。&/p&&p&cJSON也存在几个弱点,虽然功能不是非常强大,但cJSON的小身板和速度是最值得赞赏的。其代码被非常好地维护着,结构也简单易懂,可以作为一个非常好的C语言项目进行学习。&/p&&p&项目主页:&a href=&http://sourceforge.net/projects/cjson/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&cJSON | SourceForge.net&i class=&icon-external&&&/i&&/a&&/p&4. CMockery&p&cmockery是google发布的用于C单元测试的一个轻量级的框架。它很小巧,对其他开源包没有依赖,对被测试代码侵入性小。cmockery的源代码行数不到3K,你阅读一下will_return和mock的源代码就一目了然了。&/p&&p&主要特点:&/p&&ul&&li&免费且开源,google提供技术支持;&/li&&li&轻量级的框架,使测试更加快速简单;&/li&&li&避免使用复杂的编译器特性,对老版本的编译器来讲,兼容性好;&/li&&li&并不强制要求待测代码必须依赖C99标准,这一特性对许多嵌入式系统的开发很有用&/li&&/ul&&p&下载链接:&a href=&/p/cmockery/downloads/list& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Downloads - cmockery - A lightweight library to simplify and generalize the process of writing unit tests for C applications.&i class=&icon-external&&&/i&&/a&&/p&&br&5. Libev&p&libev是一个开源的事件驱动库,基于epoll,kqueue等OS提供的基础设施。其以高效出名,它可以将IO事件,定时器,和信号统一起来,统一放在事件处理这一套框架下处理。基于Reactor模式,效率较高,并且代码精简(4.15版本8000多行),是学习事件驱动编程的很好的资源。&/p&&p&下载链接:&a href=&http://software.schmorp.de/pkg/libev.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&software.schmorp.de/pkg&/span&&span class=&invisible&&/libev.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&br&6. Memcached&p&Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态数据库驱动网站的速度。Memcached 基于一个存储键/值对的 hashmap。Memcached-1.4.7的代码量还是可以接受的,只有10K行左右。&/p&&p&下载地址:&a href=&http://memcached.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&memcached - a distributed memory object caching system&i class=&icon-external&&&/i&&/a&&/p&&br&7. Lua&p&Lua很棒,Lua是巴西人发明的,这些都令我不爽,但是还不至于脸红,最多眼红。&/p&&p&让我脸红的是Lua的源代码,百分之一百的ANSI C,一点都不掺杂。在任何支持ANSI C编译器的平台上都可以轻松编译通过。我试过,真是一点废话都没有。Lua的代码数量足够小,5.1.4仅仅1.5W行,去掉空白行和注释估计能到1W行。&/p&&p&下载地址:&a href=&http://www.lua.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Programming Language Lua&i class=&icon-external&&&/i&&/a&&/p&&br&8. SQLite&p&SQLite是一个开源的嵌入式关系数据库,实现自包容、零配置、支持事务的SQL数据库引擎。 其特点是高度便携、使用方便、结构紧凑、高效、可靠。足够小,大致3万行C代码,250K。&/p&&p&下载地址:&a href=&http://www.sqlite.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&SQLite Home Page&i class=&icon-external&&&/i&&/a& 。&/p&&br&&p&9 高性能键值对存储系统&a href=&/antirez/redis& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&antirez/redis · GitHub&i class=&icon-external&&&/i&&/a&&/p&&br&&p&10 Google的键/值对(Key/Value Pair)嵌入式数据库&a href=&/google/leveldb& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&google/leveldb · GitHub&i class=&icon-external&&&/i&&/a&&/p&&br&&p&这个网站整理的比较全,可以看看&a href=&/blog/2014/12/c-open-project.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&值得推荐的C/C++框架和库&i class=&icon-external&&&/i&&/a&&/p&
有一些比较好的开源框架可以学习,比如:1. WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用…
集成开发环境(IDE)&p&C/C++集成开发环境列表&/p&&ul&&li&&a href=&/objc/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&AppCode&i class=&icon-external&&&/i&&/a& :构建与JetBrains’ IntelliJ IDEA 平台上的用于Objective-C,C,C++,Java和Java开发的集成开发环境&/li&&li&&a href=&/clion/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CLion&i class=&icon-external&&&/i&&/a&:来自JetBrains的跨平台的C/C++的集成开发环境&/li&&li&&a href=&http://www.codeblocks.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Code::Blocks&i class=&icon-external&&&/i&&/a& :免费C,C++和Fortran的集成开发环境&/li&&li&&a href=&http://codelite.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CodeLite&i class=&icon-external&&&/i&&/a& :另一个跨平台的免费的C/C++集成开发环境&/li&&li&&a href=&http://sourceforge.net/projects/orwelldevcpp/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Dev-C++&i class=&icon-external&&&/i&&/a&:可移植的C/C++/C++11集成开发环境&/li&&li&&a href=&http://www.eclipse.org/cdt/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Eclipse CDT&i class=&icon-external&&&/i&&/a&:基于Eclipse平台的功能齐全的C和C++集成开发环境&/li&&li&&a href=&http://www.geany.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Geany&i class=&icon-external&&&/i&&/a& :轻量级的快速,跨平台的集成开发环境。&/li&&li&&a href=&http://www-/software/products/en/visgen& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&IBM VisualAge&i class=&icon-external&&&/i&&/a& :来自IBM的家庭计算机集成开发环境。&/li&&li&&a href=&/Sarcasm/irony-mode& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Irony-mode&i class=&icon-external&&&/i&&/a&:由libclang驱动的用于Emacs的C/C++微模式&/li&&li&&a href=&https://www.kdevelop.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&KDevelop&i class=&icon-external&&&/i&&/a&:免费开源集成开发环境&/li&&li&&a href=&/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Microsoft Visual Studio&i class=&icon-external&&&/i&&/a& :来自微软的集成开发环境&/li&&li&&a href=&https://netbeans.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&NetBeans&i class=&icon-external&&&/i&&/a& :主要用于Java开发的的集成开发环境,也支持其他语言,尤其是PHP,C/C++和HTML5。&/li&&li&&a href=&http://qt-project.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Qt Creator&i class=&icon-external&&&/i&&/a&:跨平台的C++,Javascript和QML集成开发环境,也是Qt SDK的一部分。&/li&&li&&a href=&/Andersbakken/rtags& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&rtags&i class=&icon-external&&&/i&&/a&:C/C++的客户端服务器索引,用于 跟基于clang的emacs的集成&/li&&li&&a href=&/xcode/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Xcode&i class=&icon-external&&&/i&&/a& :由苹果公司开发&/li&&li&&a href=&https://valloric.github.io/YouCompleteMe/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&YouCompleteMe&i class=&icon-external&&&/i&&/a&:一个用于Vim的根据你敲的代码快速模糊搜索并进行代码补全的引擎。&/li&&/ul&构建系统&ul&&li&&a href=&/rizsotto/Bear& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Bear&i class=&icon-external&&&/i&&/a& :用于为clang工具生成编译数据库的工具&/li&&li&&a href=&/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Biicode&i class=&icon-external&&&/i&&/a&:基于文件的简单依赖管理器。&/li&&li&&a href=&http://www.cmake.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CMake&i class=&icon-external&&&/i&&/a& :跨平台的免费开源软件用于管理软件使用独立编译的方法进行构建的过程。&/li&&li&&a href=&/iauns/cpm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CPM&i class=&icon-external&&&/i&&/a&:基于CMake和Git的C++包管理器&/li&&li&&a href=&http://www.fastbuild.org/docs/home.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&FASTBuild&i class=&icon-external&&&/i&&/a&:高性能,开源的构建系统,支持高度可扩展性的编译,缓冲和网络分布。&/li&&li&&a href=&http://martine.github.io/ninja/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Ninja&i class=&icon-external&&&/i&&/a& :专注于速度的小型构建系统&/li&&li&&a href=&http://www.scons.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Scons&i class=&icon-external&&&/i&&/a& :使用Python scipt 配置的软件构建工具&/li&&li&&a href=&/deplinenoise/tundra& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&tundra&i class=&icon-external&&&/i&&/a& :高性能的代码构建系统,甚至对于非常大型的软件项目,也能提供最好的增量构建次数。&/li&&li&&a href=&http://gittup.org/tup/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&tup&i class=&icon-external&&&/i&&/a&:基于文件的构建系统,用于后台监控变化的文件。&/li&&/ul&静态代码分析&p&提高质量,减少瑕疵的代码分析工具列表&/p&&ul&&li&&a href=&http://cppcheck.sourceforge.net/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Cppcheck&i class=&icon-external&&&/i&&/a& :静态C/C++代码分析工具&/li&&li&&a href=&/p/include-what-you-use/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&include-what-you-use&i class=&icon-external&&&/i&&/a& :使用clang进行代码分析的工具,可以#include在C和C++文件中。&/li&&li&&a href=&http://oclint.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&OCLint&i class=&icon-external&&&/i&&/a& :用于C,C++和Objective-C的静态源代码分析工具,用于提高质量,减少瑕疵。&/li&&li&&a href=&http://clang-analyzer.llvm.org/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Clang Static Analyzer&i class=&icon-external&&&/i&&/a&:查找C,C++和Objective-C程序bug的源代码分析工具&/li&&li&&a href=&http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#C.2FC.2B.2B& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&List of tools for static code analysis&i class=&icon-external&&&/i&&/a& :来自维基百科的静态代码分析工具列表&/li&&/ul&这个网站整理的比较全,可以看看&a href=&/blog/2014/12/c-open-project.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&值得推荐的C/C++框架和库&i class=&icon-external&&&/i&&/a&
集成开发环境(IDE)C/C++集成开发环境列表 :构建与JetBrains’ IntelliJ IDEA 平台上的用于Objective-C,C,C++,Java和Java开发的集成开发环境:来自JetBrains的跨平台的C/C++的集成开发环境 :免费C,C++和Fortran的集成开发环境
&ul&&li&Webbench&br&&/li&&/ul&&p&Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。&/p&&p&下载链接:&a href=&/LippiOuYang/WebBench& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&LippiOuYang/WebBench · GitHub&i class=&icon-external&&&/i&&/a&&/p&&br&&ul&&li&Tinyhttpd&br&&/li&&/ul&&p&tinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通过阅读这段代码理解一个 Http Server 的本质。&/p&&p&下载链接:&a href=&/LippiOuYang/Tinyhttpd& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&LippiOuYang/Tinyhttpd · GitHub&i class=&icon-external&&&/i&&/a&&/p&&br&&ul&&li&cJSON&br&&/li&&/ul&&p&cJSON是C语言中的一个JSON编解码器,非常轻量级,C文件只有500多行,速度也非常理想。&/p&&p&cJSON也存在几个弱点,虽然功能不是非常强大,但cJSON的小身板和速度是最值得赞赏的。其代码被非常好地维护着,结构也简单易懂,可以作为一个非常好的C语言项目进行学习。&/p&&p&项目主页:&a href=&http://sourceforge.net/projects/cjson/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&cJSON | SourceForge.net&i class=&icon-external&&&/i&&/a&&/p&&br&&ul&&li&CMockery&br&&/li&&/ul&&p&cmockery是google发布的用于C单元测试的一个轻量级的框架。它很小巧,对其他开源包没有依赖,对被测试代码侵入性小。cmockery的源代码行数不到3K,你阅读一下will_return和mock的源代码就一目了然了。&/p&&p&主要特点:&/p&&ul&&li&免费且开源,google提供技术支持;&/li&&li&轻量级的框架,使测试更加快速简单;&/li&&li&避免使用复杂的编译器特性,对老版本的编译器来讲,兼容性好;&/li&&li&并不强制要求待测代码必须依赖C99标准,这一特性对许多嵌入式系统的开发很有用&/li&&/ul&&p&下载链接:&a href=&/p/cmockery/downloads/list& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Downloads -
cmockery -
A lightweight library to simplify and generalize the process of writing unit tests for C applications.&i class=&icon-external&&&/i&&/a&&/p&&br&&ul&&li&Libev&br&&/li&&/ul&&p&libev是一个开源的事件驱动库,基于epoll,kqueue等OS提供的基础设施。其以高效出名,它可以将IO事件,定时器,和信号统一起来,统一放在事件处理这一套框架下处理。基于Reactor模式,效率较高,并且代码精简(4.15版本8000多行),是学习事件驱动编程的很好的资源。&/p&&p&下载链接:&a href=&http://software.schmorp.de/pkg/libev.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&software.schmorp.de/pkg&/span&&span class=&invisible&&/libev.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&br&&ul&&li&Memcached&br&&/li&&/ul&&p&Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态数据库驱动网站的速度。Memcached 基于一个存储键/值对的 hashmap。Memcached-1.4.7的代码量还是可以接受的,只有10K行左右。&/p&&p&下载地址:&a href=&http://memcached.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&memcached - a distributed memory object caching system&i class=&icon-external&&&/i&&/a&&/p&&br&&ul&&li& Lua&br&&/li&&/ul&&p&Lua很棒,Lua是巴西人发明的,这些都令我不爽,但是还不至于脸红,最多眼红。&/p&&p&让我脸红的是Lua的源代码,百分之一百的ANSI C,一点都不掺杂。在任何支持ANSI C编译器的平台上都可以轻松编译通过。我试过,真是一点废话都没有。Lua的代码数量足够小,5.1.4仅仅1.5W行,去掉空白行和注释估计能到1W行。&/p&&p&下载地址:&a href=&http://www.lua.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Programming Language Lua&i class=&icon-external&&&/i&&/a&&/p&&br&&ul&&li&SQLite&br&&/li&&/ul&&p&SQLite是一个开源的嵌入式关系数据库,实现自包容、零配置、支持事务的SQL数据库引擎。 其特点是高度便携、使用方便、结构紧凑、高效、可靠。足够小,大致3万行C代码,250K。&/p&&p&下载地址:&a href=&http://www.sqlite.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&SQLite Home Page&i class=&icon-external&&&/i&&/a& 。&/p&&ul&&li&redis&/li&&/ul&&p&redis是高性能键值对存储系统,支持数据持久化,能将操作纪录保存在硬盘中,支持更多的数据类型,与memcached相比更接近数据库的角色。&/p&&p&下载地址:&a href=&/antirez/redis& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&antirez/redis · GitHub&i class=&icon-external&&&/i&&/a&&/p&&ul&&li&LevelDb:Google的键/值对(Key/Value Pair)嵌入式数据库&a href=&/google/leveldb& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&google/leveldb · GitHub&i class=&icon-external&&&/i&&/a&&br&&/li&&li&SGI STL的源码&a href=&/tech/stl/download.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Download STL source code&i class=&icon-external&&&/i&&/a&&br&&/li&&li&&a href=&http://www.boost.org/doc/libs/1_58_0/doc/html/boost_asio.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Boost.Asio - 1.58.0&i class=&icon-external&&&/i&&/a&&/li&&li&高性能web服务器&a href=&http://nginx.org/en/download.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&nginx: download&i class=&icon-external&&&/i&&/a&&/li&&/ul&&p&这个网站整理的比较全,可以看看&a href=&/blog/2014/12/c-open-project.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&值得推荐的C/C++框架和库&i class=&icon-external&&&/i&&/a&&/p&
WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到…}

我要回帖

更多关于 达梦数据库怎么样 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信