摘要:
由于最近家里诸事繁多,目前的现状再也无法为继了,于是做出了一个重要的决定--离职。事实上,在现在的公司做出这样的决定也是顺理成章的事情,毕竟在去年的这个时候一起风雨同舟的同事们都已经陆续离职了,我是为数不多坚持到现在的项目成员了。当然我也并没有继续之前的项目,而且被外派到北京的另外一个项目中。刚到伊始,由于该项目组的压力很大,周围的同事们也都比较敬业,再有这也是我第一次正式和北京的同事们一起合作,当然也是我第一次感受到北京软件开发的浓浓氛围。坦白的讲,这个项目组所做的东西和我的技术匹配度并不是很高,还好大家都比较职业,并且分工明确,而分到我负责的部分也是相对比较擅长的,即核心逻辑组件的开发和. 阅读全文
摘要:
二、字符串对象(string vs String): 在Java的代码中,我们经常会看到这样一种写法,相信几乎每一个Java程序员都有过这样的代码,因此他看上去非常熟悉,甚至还带有一点儿亲切感。1 public String getName() {2 return name;3 } 这样的代码在Java中确实司空见惯,也无可厚非,因此对于我们来说没有太多可以讨论的空间,除非你非常希望了解JVM中对象常量池的概念,然而它并不是我们这个条目中将要讨论的主题。 那么现在让我们来看一下在C++中又是如何处理此类问题的,下面将列举出三种最常用的实现方式。 方法一: ... 阅读全文
摘要:
一、关联性容器(map vs TreeMap): 我们在用Java进行编程时经常会用到Map这样的容器接口,而它的具体实现类一般来自于TreeMap和HashMap,前者提供了有序性,而后者则在存取效率方面有着一定的优势。相比于Java,C++的STL也提供了map容器,其功能等同于Java中的TreeMap,至于HashMap,它并没有进入C++标准模板库。而幸运的是,现有的主流C++编译器供应商均提供了标准模板库的扩展包,并在该扩展包中实现了hash_map容器类,其接口标准和STL中的容器基本一致。 在本条目中我们将主要列举TreeMap(Java)和map(C++)在设计上的主要差.. 阅读全文
摘要:
在实际的开发过程中,我们的项目或产品通常都会用到一些第三方开源组件或商业组件,以帮助开发人员实现一些特定的通用功能,如xml解析,正则表达式解析和数据压缩等。一般而言,只有在这两者均无法满足现有需求的情况下,我们才会考虑自行研发。因为适当的应用第三方组件可以保证开发人员能够将更多的精力投入到产品的核心算法和核心业务逻辑上,从而确保产品的开发周期和产品质量均能达到客户与公司满意的程度。 相比于开源组件,很多商业组件都提供了更易于操作的用户界面,丰富的文档和示例代码,以及更灵活的接口和更多的功能。通常而言,一旦我们选定了某一商业组件,它所提供的功能就已经可以满足我们的需求了。然而对于开源组件却.. 阅读全文
摘要:
一、文档的注意事项:1. 键值对是有序的,如:{ "name" : "stephen", "genda" : "male" } 不等于 { "genda" : "male", "name" : "stephen" }2. 文档信息是大小写敏感的,如:{ "name" : "stephen" } 不等于 { "Name" : "stephen" }3. 文档信 阅读全文
摘要:
1.批量插入: 以数组的方式一次插入多个文档可以在单次TCP请求中完成,避免了多次请求中的额外开销。就数据传输量而言,批量插入的数据中仅包含一份消息头,而多次单条插入则会在每次插入数据时封装消息头数据。对于数据导入而言,我们可以使用mongoimport完成。2. 数据库清除: > db.users.remove() 以上命令将会清除users集合中的所有数据,但是不会删除集合本身以及关联的索引。数据删除操作是不可恢复的,一旦删除就物理的删除了。对于全集合清除这种case,一个更为有效的方式是直接删除集合对象本身以及他关联的所有索引,之后再依次重建,如: > db.one_coll 阅读全文
摘要:
1. 基本查询: 构造查询数据。 > db.test.findOne() { "_id" : ObjectId("4fd58ecbb9ac507e96276f1a"), "name" : "stephen", "age" : 35, "genda" : "male", "email" : "stephen@hotmail.com" } --多条件查询。下面的示例等同于SQL语句的where name = &qu 阅读全文
摘要:
一、索引基础: MongoDB的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的优化技巧。下面是创建索引的命令: > db.test.ensureIndex({"username":1}) 可以通过下面的名称查看索引是否已经成功建立: > db.test.getIndexes() 删除索引的命令是: > db.test.dropIndex({"username":1}) 在MongoDB中,我们同样可以创建复合索引,如: -- 数字1表示username键的索引按升序存储,-1表示age键的索引按照降序方式存储。 > 阅读全文
摘要:
之前已经说了很多,我目前的观点还是那样,在嵌入式脚本中,Lua是最优秀、最高效的,如果您有不同的观点,欢迎指正并讨论,切勿吐槽。这个系列完全来自于《Programming in Lua》,您可以将其视为本人的读书笔记。相比而言,如果您已经掌握了Lua,但仍然不是非常熟练,请相信这个系列一定会给您的查阅以及知识点回顾带来一定程度上的方便,至少我是这样的。然而对于Lua的初学者,还是建议直接看《Programming in Lua》。最近正在做一个项目的架构设计,打算使用Lua作为插件和框架之间的粘合剂,以及硬件协议的自描述脚本,从而可以动态扩展平台可以支持的硬件设备。好了,不说太多了,还是看看. 阅读全文
摘要:
在Lua中可以通过自定义类型的方式与C语言代码更高效、更灵活的交互。这里我们通过一个简单完整的示例来学习一下Lua中userdata的使用方式。需要说明的是,该示例完全来自于Programming in Lua。其功能是用C程序实现一个Lua的布尔数组,以提供程序的执行效率。见下面的代码和关键性注释。 1 #include <lua.hpp> 2 #include <lauxlib.h> 3 #include <lualib.h> 4 #include <limits.h> 5 6 #define BITS_PER_WORD (CHAR_BIT 阅读全文