2019年3月7日

摘要: 一、std::tr1::bind及std::tr1::function函数的意义 在第一次见到std库中bind函数的时候,有一种你们城里人真会玩的感觉,把模版用的出神入化。但是,更关键的是这么华丽的用法,是为了解决什么问题呢?这个问题本身可能比它们如何实现更加重要。其实科技的发展也是大抵如此,往往 阅读全文
posted @ 2019-03-07 10:39 tsecer 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 一、问题 在常规的函数调用中,通常是直接看到函数的定义并调用该函数,所以,函数调用传递的是值还是引用是根据函数声明来决定的。但是,在std::tr1中的bind函数本身是为了完成不同格式参数的适配,所以函数调用处看到的内容和真正的函数执行位置看到的内容并不相同。 简单的说,这里可以简单的模拟下bin 阅读全文
posted @ 2019-03-07 10:39 tsecer 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 一、常规情况 通常情况下,这个矩形都是和坐标系平行的一个矩形,例如典型的windows系统中,一个窗口总是和屏幕坐标平行的。在这种情况下,判断一个点是否在矩形之内就非常简单:只需要判断该点在x和y轴方向是否在矩形范围内即可。 简单代码如下,当然,如果在确定x1和x2关系的情况,实现可以更加简洁。 t 阅读全文
posted @ 2019-03-07 10:38 tsecer 阅读(2754) 评论(0) 推荐(0) 编辑
摘要: 一、碰撞检测中的broad phase中的常见算法 该算在 这篇文章 中有比较简单而准确的描述,由于这里描述的思路并不复杂,但是是所有物理引擎中碰撞检测的入门级功课,所以这里写代码加深下对于该简单算法的理解。同样为了避免链接失效,这个地方拷贝下关键内容: Let's see what this me 阅读全文
posted @ 2019-03-07 10:37 tsecer 阅读(957) 评论(0) 推荐(0) 编辑
摘要: 一、变长模版参数(variadic template paramter) 1、语法说明 gcc源代码中对于该语法的解析是在gcc-4.8.2\gcc\cp\parser.c文件中完成,同样是"...",如何区分哪些是pack,哪些是expansion呢?从代码(的注释)上来看,只有在模版声明temp 阅读全文
posted @ 2019-03-07 10:37 tsecer 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 一、问题 在使用stringstream对一个变量进行格式化的时候,发现格式化之后的字符串并不是一个可显示的字符,最后看了半天,发现问题在于这个变量定义的类型是char类型,导致格式化之后数值本身并没有变化。我记得这个问题甚至不是我第一次遇到,这个问题本身是一个很小的问题,但是既然几次遇到都没有什么 阅读全文
posted @ 2019-03-07 10:36 tsecer 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 一、为什么考虑到这个问题 在看std::tr1的function实现时,看到一个问题。比方说在C++中可以通过指针获得一个变量的位置 tsecer@harry: cat function.cpp #include <tr1/functional> using namespace std::tr1; 阅读全文
posted @ 2019-03-07 10:35 tsecer 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 一、converting constructor 不知道为什么,这个名次从来没有听说过,之前也没有关注过C++的这个特性。看了下《The C++ Programming Language》这本书最后的索引,也没有关于这个名词的索引,只是在"constructor"的"and type convers 阅读全文
posted @ 2019-03-07 10:35 tsecer 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 一、无效请求的处理 通常来说,系统都是为了给“合法”请求提供服务,但是总有一些异常发生,也就是意料之外的事情。类似的,如果异常发生在一些知名的公司,这些事件可能就是“公关危机”。对于软件来说,通常这些异常情况也就是考验一个产品健壮性的机会,不同质量的软件对于这种异常的处理在很大程度上决定了软件的质量 阅读全文
posted @ 2019-03-07 10:33 tsecer 阅读(785) 评论(0) 推荐(0) 编辑
摘要: 一、表格 表格在整个Lua语言的数据结构中占有重要地位,正如Lua的作者所说: Tables are the main — in fact, the only — data-structuring mechanism in Lua.Table是Lua的主要(事实上,也是唯一的)数据结构。 数组变量的 阅读全文
posted @ 2019-03-07 10:32 tsecer 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 一、闭包的由来 闭包这个概念对于没有接触过函数式编程的人来说还是比较陌生的,它基于把函数看作头等公民(first-class),至于怎么理解这个first-class,我想大致就是说把函数看作是像int、float这样的基本类型,而不是把它看作一个特殊的、定制的特殊实体。把函数当作基本类型之后,就可 阅读全文
posted @ 2019-03-07 10:32 tsecer 阅读(355) 评论(0) 推荐(0) 编辑
摘要: 一、问题 和C相比,Lua是一种限制比较松散的语言,这个在函数相关的处理中更加明显。函数可以有多个参数,函数返回值可以被赋值给变量列表(Lua manual中的varlist),函数可以return表达式列表(Lua manual中的explist),这些其实也不是很混乱,问题在于这些特性放在一起的 阅读全文
posted @ 2019-03-07 10:31 tsecer 阅读(5500) 评论(0) 推荐(0) 编辑
摘要: 一、快速删除记录 在事务型DB删除记录时,一个比较容易想到的优化是以通过设置一个标志位来表示这条记录已经被逻辑上删除(相对于物理删除)。这样实现的优点在于删除动作的指向会很快,特别是在事务提交中,如果只向磁盘flush一个bit的数据修改,可以缩短IO延迟,提高命令响应速度;并且有机会在回滚和再次插 阅读全文
posted @ 2019-03-07 10:30 tsecer 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 一、问题和背景 对于apache生成的cgi服务来说,通常需要读取一些特有的配置,而这个配置通常使用的方法还是使用软链接。在使用软链接的场景中,由于二进制是在一个文件夹中,而配置文件和日志文件可能在一个软链接的文件夹,所以配置的时候禁不住要问下apache派生的cgi的当前工作路径在哪里,有没有一个 阅读全文
posted @ 2019-03-07 10:29 tsecer 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 一、臆想的一个问题 一直比较好奇一个问题,或者说是一个恶作剧:假设说A、B两个主机互为网关,A需要发送一个数据,根据自己路由配置数据被发送给B主机;数据到达B主机之后,B主机检查自己的路由,发现网关是A主机,这样就会将这个数据(递减TTL之后)再次回传给A主机。这个过程是否会这样一直继续下去呢(当然 阅读全文
posted @ 2019-03-07 10:28 tsecer 阅读(1665) 评论(0) 推荐(1) 编辑
摘要: 一、B树基础 在B树的定义中,中间节点存储n个键值和n+1个指针,下面是一个乌托邦式的B树实例。在这个实例中可以看到,每个键值存储的都是其紧邻右侧指针指向子树的最小值。 但是比较特殊的是第一个键值的左边还有一个指针,这个指针也是n+1个指针中(+1)的由来。那么为什么要使用n+1个指针而不是直观上更 阅读全文
posted @ 2019-03-07 10:27 tsecer 阅读(693) 评论(0) 推荐(0) 编辑
摘要: 一、MySQL的join buffer 在MySQL对于join操作的处理过程中,join buffer是一个重要的概念,也是MySQL对于table join的一个重要的优化手段。虽然这个概念实现并不复杂,但是这个是实现MySQL join连接优化的一个重要方法,在"暴力"连接的时候可以极大提高j 阅读全文
posted @ 2019-03-07 10:27 tsecer 阅读(8747) 评论(6) 推荐(0) 编辑
摘要: 一、数据库中事务的隔离等级 这里首先要明确的是,这里的“隔离”都是在“事务”的基础上讨论的,通常的事务通过 start transaction开启,之后通过rollback或者commit来结束。由于大部分情况下对于mysql的操作都是单条语句的操作,我想大部分人在操作mysql的时候不是在操作测试 阅读全文
posted @ 2019-03-07 10:26 tsecer 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 一、协程基础 按照执行单位从大到小的粒度区分,最早的执行单位就是进程(或者linux内核中所说的task)、之后为了资源共享,又有了线程的概念。线程在内核中成为基础的执行单位。线程这个概念对内核来说也是可见的,也就是说内核为了支持线程和进程的机制做过相关的处理,但是在linux下,这个处理的大部分工 阅读全文
posted @ 2019-03-07 10:25 tsecer 阅读(606) 评论(0) 推荐(1) 编辑
摘要: 一、锁的意义 在一个复杂一点的并发系统中,锁始终是一个绕不开的存在,大家通常接触到这个概念最多的是多任务操作系统,例如服务器比较常用的linux操作系统。在所有的操作系统教材中,都会对锁进行描述,生产者/消费者问题;哲学家就餐问题等都是典型的入门例子,所以锁最为常见的应用场景就是在操作系统中。但是, 阅读全文
posted @ 2019-03-07 10:24 tsecer 阅读(177) 评论(0) 推荐(0) 编辑

导航