6 but2013

尚未进行身份认证

小码农一枚

等级
TA的排名 10w+

红黑树实现原理

一、红黑树介绍1、定义每个结点或者为黑色或者为红色根结点为黑色每个叶结点(实际上就是NULL指针)都是黑色的如果一个结点是红色的,那么它的两个子节点都是黑色的(也就是说,不能有两个相邻的红色结点)对于每个结点,从该结点到其所有子孙叶结点的路径中所包含的黑色结点数量必须相同2、二叉树和AVL树比较1、二叉树任意节点左子树不为空,则左子树的值均小于根节点的值.任意节点右子树不...

2019-08-17 23:06:12

字典树和基数树

一、字典树1、概述字典树是一种前缀查找树,在前缀匹配查找中应用比较多,查找树的层级取决于字符串长度,时间复杂度O(1),但是他要求每个节点要有26各分支,所以空间开销比较高,是一种典型的以空间换时间的数据结构。2、实现原理1)、字典树快速查找是依赖于将一个字符串分解成单个字符,然后每个字符单独作为一个节点,按字符串顺序链接,到达单词结尾时做一个结束标记。一个单词构成一...

2019-08-17 23:04:53

linux c嵌入式汇编关于输入输出限定字段说明

在内嵌汇编中,可以将C语言表达式指定为汇编指令的操作数,而且不用去管如何将C语言表达式的值读入哪个寄存器,以及如何将计算结果写回C变量,你只要告诉程序中C语言表达式与汇编指令操作数之间的对应关系即可,GCC会自动插入代码完成必要的操作。1、简单的内嵌汇编例:__asm____volatile__("hlt");"__asm__"表示后面的代码为内嵌汇编,"asm"是"...

2019-08-12 14:15:25

setsockopt参数之TCP_NODELAY

转载:神秘的40毫秒延迟与TCP_NODELAY1现象现象是这样的,首先看我用ab不加-k选项的结果:[~/dev/personal/breeze]$/usr/sbin/ab-c1-n10http://127.0.0.1:8000/styles/shThemeRDark.cssThisisApacheBench,Version2.3<Revisio

2017-12-27 00:30:04

iptables

一:前言防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测。目前市面上比较常见的有3、4层的防火墙,叫网络层的防火墙,还有7层的防火墙,其实是代理层的网关。对于TCP/IP的七层模型来讲

2017-12-26 16:11:21

google test 安装

GoogleTest(libgtest)是由谷歌开发的一款基于xunit框架的跨平台单元测试框架,C#上的NUnit,Java的JUnit写单元测试非常容易,也不乏可视化工具与IDE集成插件,深受喜欢测试区洞开发的程序员的喜爱。但对于C++来说,写测试就看着麻烦一些。但如果用习惯了,googletest还是不错的。googletest更多的信息这里就不赘述了。下面根据我的实践,总结以下安装

2017-12-26 00:31:43

ubuntu下安装cunit

参考blog:http://blog.csdn.net/cupedy/article/details/749319381、下载cunit包https://sourceforge.net/projects/cunit/2、安装:注意:不能按照源码提供的readme里面的方式安装,会有坑1)确保安装automake和libtool,2个必须都安装才能进行下一步,否则在automake安装之后

2017-11-22 23:19:40

c++函数对象构造函数和operator()执行关系

函数对象常用在stl的算法中,用于特殊的匹配定制功能。在执行的函数对象中构造函数和重载()函数的关系先后顺序

2017-04-12 23:19:47

关于模板template的泛型参数的构造函数

#include<iostream>#include<cstddef>usingnamespacestd;classalloc{public:alloc(){cout<<"alloc()"<<endl;}};template<classT,classAlloc=alloc,size_tBufsize=512>c

2017-03-29 00:09:48

lua面向对象的2种私密性封装

一、返回tablelocalfunctionnewAccount(initCount)localself={count=initCount}set=function(c)self.count=cendget=function()retur

2017-03-27 01:03:39

lua的伪面向对象和继承理解

关于setmetable和index的理解的博文http://blog.csdn.net/wisdom605768292/article/details/36662033总结:**1.在表中查找,如果找到,返回该元素,找不到则继续2.判断该表是否有元表,如果没有元表,返回nil,有元表则继续3.判断元表有没有__index方法,如果__index方法为nil,则返回nil;如果__in

2017-03-27 00:20:07

sql语句嵌套子查询将子查询结果作为表与其他表再联接查询

子查询要用()括起来实例:info(uid,serv_id,app_id)user(uid,uname)app(id,name)这三个表中,info表的serv_id和app_id是对应app表的id,能通过serv_id和app_id查到对应的app的name要求将info表的id字段转化为nameselecttmp.uname,tmp.servname,app.nameasa

2017-03-23 00:17:34

sql语句跨数据库的表联接

直接使用数据库名.表名来联接以mysql为例说明跨数据库的表联接1、数据库db1表tb1(uid,username,groupname)2、数据库db2表tb2(uid,phone,addr)现在要联接tb1和tb2两张表selecta.uidasuid,a.usernameasuname,a.groupnameasgroup,b.phon

2017-03-23 00:04:12

伪代码编程过程

一、伪代码伪代码的指导原则:1、用类似的英语来描述特定操作。2、避免使用目标语言的语法来描述,伪代码能让你在一个比代码更高的层次上进行设计。当用编程语言的语法来描述时,你的伪代码设计就降到了一个更低的层次。3、在意图的层面上去编写伪代码,用伪代码来描述该解决方法的意图,而不是去用目标语言去编写实现方法。4、在一个和目标语言足够适合的层次来写伪代码,比如一个伪代码语句能够代表当前主流的高级语

2017-02-14 23:38:31

防御式编程

防御编程的核心思想是:子程序应该不因传入的错误数据而被破坏,哪怕由其他子程序产生的错误数据。更确切的说,必须承认程序会有问题,都需要被修改。防御编程的最佳方式:一开始不要再代码中引入错误,使用迭代式设计、编码前先写伪代码、写代码前先写测试用例、底层设计检查等。一、保护程序免遭非法数据破坏1、检查所有来源于外部的数据的值。2、检查子程序的所有输入参数的值。3、决定如何处理错误的输入数据。二、断

2017-02-14 22:30:47

高质量子程序设计

一、创建子程序的正当理由降低复杂度。通过子程序来隐藏程序的实现细节,只需对外提供调用接口(频繁重复的小段代码,抽象成函数)引入中间、易懂的抽象通过给一段程序取一个足够说明语义的名字,该名字能够提供更高层次的抽象,使代码更具有可读性。避免代码重复如果2个子程序都拥有相同的代码段,有两种方法去重。1)把重复部分提取出来,放入基类中,把不同部分放入派生类中2)把重复部分放入新的

2017-02-12 23:20:26

类的设计

一、类的基础:抽象数据类型ADTADT最大的益处是实现细节隐藏,把关键数据隐藏在接口内,数据改动不会影响接口函数。把常用的底层数据类型创建为ADT,并使用这些ADT,而不需要使用底层数据(底层数据操作在ADT内部实现),也就是说尽可能的使用更高的抽象层次。二、良好的类接口1、类的接口应该具有一致的抽象层次。即每个类的接口仅能实现一个ADT的操作,包含多个ADT的操作功能的类都是不明确的类接口。

2016-12-26 00:48:57

软件构建中的设计

一、设计的挑战1、设计中存在的一些问题是必须通过解决或者部分解决才能明确的问题,所以在实际设计中你必须把问题“解决”一遍,才能定义它,然后再次解决,循环往复,最终形成一个可行性方案。2、设计师了无章法的过程,多次的犯错时设计的关键所在。在设计阶段犯错并加以改正比在实际编码中发现问题并改正花费的代价要低很多。3、设计是确定取舍和不断调整顺序的过程。二、关键的设计概念##**1、设计的首要技术使命是

2016-12-16 01:37:39

软件构建的前期准备

注:第三章三思而行:前期准备首先要明确:项目质量的关键不在于后期的测试工作,测试只是占项目的完整质量,排查bug的一小部分,它不会纠正制造的“一个错误的产品”,所以关键在于软件构建活动之前的问题定义和需求分析。小系统,风险低,需求简单中型系统,存在风险大型系统,风险高,需求变化大2、在做每一个项目之前,应该为自己细分一下工作量。具体而

2016-12-01 01:23:58

理解软件开发

注:第一~二章小节1、软件开发的总体流程1)定义问题2)需求分析3)规划构建4)软件架构5)详细设计6)编码与调试7)单元测试2、学会用隐喻理解软件开发理解生活中的事物,从中吸取发散出模型到项目开发中。如种植培育模型可以理解成增量开发模型

2016-12-01 00:22:55

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。