上一页 1 ··· 4 5 6 7 8 9 10 下一页

2013年9月27日

(原创)发布一个C++版本的ORM库SmartDB(一)

摘要: 先简单说说ORM的优点:提高开发效率,减少重复劳动,只和业务实体打交道,由业务实体自动生成sql语句,不用手写sql语句。简单易用, 可维护性好。隔离数据源,使得我们更换数据源时不用修改代码。SmartDB基础库 java和c#中有很多ORM框架,如c#中的entity framework、Linq to Sql、NHibernate等,java中有Hibernate、Mybatis等等,其它各种开源的ORM库多如牛毛。这应该得益于托管语言在这方面的优势。然而,c++的世界中,却鲜有ORM框架,c++中比较知名的ORM库应该是ODB了,但是ODB的使用比较麻烦,需要三个库,写的ORM代码还需. 阅读全文

posted @ 2013-09-27 01:17 qicosmos(江南) 阅读(6846) 评论(13) 推荐(3) 编辑

2013年9月17日

(原创)C++11改进我们的程序之简化我们的程序(八)

摘要: 本次要讲的是如何通过泛型函数来简化我们的程序。 泛型函数除了之前介绍的一些优点外还有两个重要的优点1.消除重复逻辑,提高程序的内聚性和健壮性 泛型函数在某种程度上用来弥补泛型类型的不足。通过泛型类型T可以消除一些重复代码,当不同的类型具有相同的行为时,通过泛型擦除类型,达到消除重复简化代码的目的。例如:templateauto Add(T a, T b)->decltype(a+b){ return a + b;}void TestAdd(){ auto r1 = Add(1, 2); //3 auto r2 = Add(1.2, 3.5); //4.7 aut... 阅读全文

posted @ 2013-09-17 21:20 qicosmos(江南) 阅读(2631) 评论(0) 推荐(1) 编辑

2013年9月12日

(原创)C++11改进我们的程序之简化我们的程序(七)

摘要: 这次要讲的内容是:c++11中的tuple(元组)。tuple看似简单,其实它是简约而不简单,可以说它是c++11中一个既简单又复杂的东东,关于它简单的一面是它很容易使用,复杂的一面是它内部隐藏了太多细节,要揭开它神秘的面纱时又比较困难。 tuple是一个固定大小的不同类型值的集合,是泛化的std... 阅读全文

posted @ 2013-09-12 22:30 qicosmos(江南) 阅读(22304) 评论(7) 推荐(5) 编辑

2013年9月5日

(原创)C++11改进我们的程序之简化我们的程序(六)

摘要: 这次要讲的内容是:c++11中的lamda表达式。 lamda表达式是我最喜欢的一个c++11特性之一,在我的代码中随处可见它的身影,其实在c#3.5中就引入了lamda,java中至今还没引入,要等明年的java8中才有lamda表达式,lamda来源于函数式编程的概念,也是现代编程语言的一个特点。c++11这次终于把lamda加进来了。也许有人要问,lamda有什么好处,为什么要加到c++中来?lamda表达式有这些优点:声明式编程风格:就地匿名定义你的目标函数或函数对象,不需要额外的写一个命名函数或者函数对象。以更直接的方式去写程序,好的可读性和可维护性。简洁:不需要额外再写一个函... 阅读全文

posted @ 2013-09-05 22:20 qicosmos(江南) 阅读(3520) 评论(3) 推荐(3) 编辑

2013年9月4日

(原创)C++11改进我们的程序之简化我们的程序(五)

摘要: 这次要讲的是:c++11中的bind和functionstd::function它是函数、函数对象、函数指针、和成员函数的包装器,可以容纳任何类型的函数对象,函数指针,引用函数,成员函数的指针。以统一的方式处理函数、函数对象、函数指针、和成员函数。允许保存和延迟执行函数。函数和成员函数作为functionvoid G();struct A{void H(){}};std::function f = G; //全局函数A a;std::function f 1= std::bind(&A::H, a); //成员函数可以用function取代函数指针。因为它可以保存函数延迟执行,所以比较 阅读全文

posted @ 2013-09-04 21:44 qicosmos(江南) 阅读(9911) 评论(2) 推荐(2) 编辑

2013年9月3日

(原创)C++11改进我们的程序之简化我们的程序(四)

摘要: 这次要讲的是:c++11统一初始化、统一begin()/end()和for-loop循环如何简化我们的程序初始化列表c++11之前有各种各样的初始化语法,有时候初始化的时候还挺麻烦,比较典型的如vector和map的初始化。vector v;for(int i=0;i map;for(int i=0;i v = {0,1,2,3,4,5,6,7,8,9};map map = {{0,0},{1,1},{2,2,{3,3}};不用再手动去push_back或者insert了,这样写很简单也很直观。不仅仅是容器的初始化可以这样,普通的数组也可以这样写:int int_array[3] = {1,2 阅读全文

posted @ 2013-09-03 22:16 qicosmos(江南) 阅读(2436) 评论(4) 推荐(2) 编辑

2013年9月2日

(原创)C++11改进我们的程序之简化我们的程序(三)

摘要: 这次要讲的是:C++11如何通过auto、decltype和返回值后置来简化我们的程序。 auto和c#中的var类似,都是在初始化时自动推断出数据类型。当某个变量的返回值难于书写时,或者不太确定返回的数据类型时,或者不关心返回的数据类型时用auto,让编译器自动帮我们推断出类型来。例如:自动推断出类型auto i = 10; // i is an intauto str = "a"; // str is a stringauto p = new A(); // p is a foo*auto f = [](int x){return x;}; //f is functio 阅读全文

posted @ 2013-09-02 21:32 qicosmos(江南) 阅读(2313) 评论(1) 推荐(3) 编辑

2013年8月30日

(原创)C++11改进我们的程序之简化我们的程序(二)

摘要: 这次要讲的是:C++11如何通过组合函数来简化我们的程序。关于组合函数,大家可能对这个概念有点陌生。组合函数是将N个一元函数组成一种更复杂的函数,每个函数的返回值作为参数传给下一个函数,直到传到最后一个函数结束。这种组合函数的能力可以使我们以一种更直观的方式去完成复杂的链式执行行为。例如有三个函... 阅读全文

posted @ 2013-08-30 21:14 qicosmos(江南) 阅读(3019) 评论(2) 推荐(0) 编辑

2013年8月27日

(原创)C++11改进我们的程序之简化我们的程序(一)

摘要: C++11在很多方面可以简化我们的程序开发,我会在“简化我们的程序”这一系列的博文中一一讲到,敬请关注。这次要讲的是:C++11如何通过获取函数模板的返回值类型来简化我们的程序。在谈到简化之前,我们先看一个问题,这个问题也是我前段时间在开发C++版本的linq时遇到的。假设我们现在需要将集合按某种属性分组,就是类似于sql语句中的group by,我们知道group by后面的字段会组成一个唯一的键,得到的结果是按照这个唯一键值的分组。关于group by具体看一个例子就清楚了。struct Person{string name;int age;string city;};vector vt 阅读全文

posted @ 2013-08-27 21:46 qicosmos(江南) 阅读(5693) 评论(15) 推荐(1) 编辑

2013年8月26日

(原创)c++11改进我们的程序之垃圾回收

摘要: c#和java中有自动垃圾回收机制,.net运行时和java虚拟机可以管理分配的堆内存,在对象失去引用时自动回收,因此在c#和jva中, 内存管理不是大问题。c++语言没有垃圾回收机制,必须自己去释放分配的堆内存,否则就会内存泄露。 我相信大部分c++开发人员都遇到过内存泄露的问题,而查找内存... 阅读全文

posted @ 2013-08-26 15:50 qicosmos(江南) 阅读(8226) 评论(6) 推荐(4) 编辑

上一页 1 ··· 4 5 6 7 8 9 10 下一页

导航