
数据结构及算法
文章平均质量分 69
ShenYounger
这个作者很懒,什么都没留下…
展开
-
带你深入了解双数组Trie树(第一篇)
本系列将对双数组Trie树做一个详细的介绍,第一篇将对论文《An Efficient Implementation of Trie Structures》做详细的介绍和分析。本人在阅读原始论文前,也曾阅读过网上的一些博客,但发现这些博客在细节和阐述上都远不及原始论文深刻和详尽。原始论文中的很多逻辑关系在博客中都被有意无意中丢掉了。所以本篇博客将带你阅读原始论文,并对论文中重要的一些点进行...原创 2020-04-05 19:32:38 · 355 阅读 · 0 评论 -
几种页面置换算法
地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断。当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。常见的置换算法有:1)最佳置换算法(OPT)(理想置换算法)这是一种理想情况下的页面置换算法,但实际上是不可能实现的。该算法的基本思想是:发生缺页时,有些页面在内存中,其中有一页转载 2015-09-25 17:47:55 · 591 阅读 · 0 评论 -
java静态代理和动态代理
一、代理概念为某个对象提供一个代理,以控制对这个对象的访问。 代理类和委托类有共同的父类或父接口,这样在任何使用委托类对象的地方都可以用代理对象替代。代理类负责请求的预处理、过滤、将请求分派给委托类处理、以及委托类执行完请求后的后续处理。图1:代理模式从图中可以看出,代理接口(Subject)、代理类(ProxySubject)、委托类(RealSubject)形成一个“品”字结构转载 2015-09-26 21:50:22 · 344 阅读 · 0 评论 -
详解Java GC的工作原理+Minor GC、FullGC
JVM内存组成结构JVM内存结构由堆、栈、本地方法栈、方法区等部分组成,结构图如下所示:1)堆所有通过new创建的对象的内存都在堆中分配,其大小可以通过-Xmx和-Xms来控制。堆被划分为新生代和旧生代,新生代又被进一步划分为Eden和Survivor区,最后Survivor由FromSpace和ToSpace组成,结构图如下所示:转载 2015-09-25 15:52:38 · 365 阅读 · 0 评论 -
LRU和LFU的区别
LRU和LFU是不同的!LRU是最近最少使用页面置换算法(Least Recently Used),也就是首先淘汰最长时间未被使用的页面!LFU是最近最不常用页面置换算法(Least Frequently Used),也就是淘汰一定时期内被访问次数最少的页!比如,第二种方法的时期T为10分钟,如果每分钟进行一次调页,主存块为3,若所需页面走向为2 1 2 1 2 3 4原创 2015-09-25 17:49:11 · 418 阅读 · 0 评论 -
有道笔试题
1.下列程序的运行结果publicstatic void main(String args[]) { Thread t = newThread() { publicvoid run() { pong(); } };原创 2015-09-28 21:41:34 · 810 阅读 · 0 评论 -
Java 静态代理和动态代理
1. 代理模式主要有两种:静态代理和动态代理 2. 静态代理: 比如要在输出“HelloWorld”前打印一个字符串“Welcome” A:先定义一个接口类 Java代码 package ttitfly.proxy; public interface HelloWorld { public vo转载 2015-09-26 21:51:11 · 323 阅读 · 0 评论 -
java中abstract的用法
abstract(抽象)修饰符,可以修饰类和方法1,abstract修饰类,会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型,也就是编译时类型,抽象类就像当于一类的半成品,需要子类继承并覆盖其中的抽象方法。2,abstract修饰方法,会使这个方法变成抽象方法,也就是只有声明(定义)而没有实现,实现部分以";"代替。需要子类继承实现(覆盖)。原创 2015-09-26 23:41:30 · 1272 阅读 · 0 评论 -
java.util.concurrent.locks与synchronized及其异同
关键字:synchronized、java.util.concurrent.locks.Lock、同步、并发、锁一、【引言】JDK1.5之前,实现同步主要是使用synchronized,而在JDK1.5中新增了java.util.concurrent包及其两个子包locks和atomic,其中子包locks中定义了系列关于锁的抽象的类。本文主要介绍java.util.concurren转载 2015-09-27 21:54:50 · 351 阅读 · 0 评论 -
Java线程同步小陷阱,你掉进去过吗?
【问题】当一个线程使用String常量作为信号量,来实现同步会如何?你有用过吗?[java] view plaincopypackage test.mult; /** * @ClassName: Test * @author whwang * @date 2012-1-10 下午02:28:39转载 2015-09-27 21:54:05 · 364 阅读 · 0 评论 -
互联网协议入门(一)
转自阮一峰 原文链接http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html我们每天使用互联网,你是否想过,它是如何实现的?全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情转载 2015-10-17 15:00:46 · 230 阅读 · 0 评论 -
数据库中的约束
数据库中的各种约束参见:http://www.w3school.com.cn/sql/sql_constraints.asp原创 2015-10-17 10:27:45 · 328 阅读 · 0 评论 -
c语言:统计整数二进制表示中1的个数(汉明重量)
问题描述:对于一个无符号整型变量,求其二进制表示中1的个数。第一次见到这个问题应该是icephone第一次例会的时候,问题虽然简单,但也值得深思。后来查阅资料的时候才知道这个问题有个正式的名字叫Hamming_weight,也被一些公司当做面试题。下面通过几个不同阶段的算法,谈谈这个问题。一、逐个数刚刚接触这个问题的时候是上学期吧,大一,还刚转载 2015-10-16 14:59:53 · 934 阅读 · 1 评论 -
互联网协议入门(二)
转自阮一峰,原文链接为http://www.ruanyifeng.com/blog/2012/06/internet_protocol_suite_part_ii.html上一篇文章分析了互联网的总体构思,从下至上,每一层协议的设计思想。这是从设计者的角度看问题,今天我想切换到用户的角度,看看用户是如何从上至下,与这些协议互动的。==================转载 2015-10-17 15:02:05 · 280 阅读 · 0 评论 -
各大公司2016在线笔试(一)
1.http中post与get的区别a.get是从服务器上获取数据,post向服务器发送数据b.get把参数数据队列加到url后面,post把参数数据放到header中。c.对于get方式,服务器端用Request.QueryString获取变量的值,对于post,服务器端用Request.Form获取提交的数据。d.get传送的数据量较小,post较大。e.get安全性较低,原创 2015-10-16 21:04:27 · 792 阅读 · 0 评论 -
Difference between Key, Primary Key, Unique Key and Index in MySQL
原文来自http://stackoverflow.com/questions/3844899/difference-between-key-primary-key-unique-key-and-index-in-mysqlKEY and INDEX are synonyms in MySQL. They mean the same thing. In databases you转载 2015-10-17 10:28:49 · 388 阅读 · 0 评论 -
TCP和UDP之间的区别
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://feinibuke.blog.51cto.com/1724260/340272TCP和UDP区别 TCPUDP是否连接面向连接面向非连接传输可靠性转载 2015-10-18 09:04:51 · 230 阅读 · 0 评论 -
TCP三次握手和四次挥手协议
前言在面试的过程中,TCP的传输协议经常会出现。以前我参加面试的过程中就被问到过,现在轮到我面试其他人的时候,我也会问一些相关的问题。作为一名开发者,无论使用什么样的开发语言,最基本的网络知识一定要理解透彻,这样才能获得更好的职业发展。TCP链接协议概述建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示: 建立连接的过程转载 2015-10-18 10:52:31 · 359 阅读 · 0 评论 -
TCP为什么需要三次握手,又为什么需要4次挥手?
1.TCP为什么需要三次握手?答:建立连接的过程是利用客户服务器模式,假设主机A为客户端,主机B为服务器端。(1)TCP的三次握手过程:主机A向B发送连接请求;主机B对收到的主机A的报文段进行确认;主机A再次对主机B的确认进行确认。(2)采用三次握手是为了防止失效的连接请求报文段突然又传送到主机B,因而产生错误。失效的连接请求报文段是指:主机A发出的连接请求没有收到主机转载 2015-10-18 11:12:00 · 469 阅读 · 0 评论 -
不同应用层协议对应的端口
端口及对应的服务?DHCP 服务器端端口 67 客户端端口 68服务端口号服务端口号FTP21SSH22telnet23SMTP25Doma原创 2015-10-18 12:16:14 · 1232 阅读 · 0 评论 -
邮件发送的原理
最近看了一下邮件发送的相关原理,在网上找了一些资料,基本弄清楚了基本流程,在这里记录一下,欢迎大家拍砖。 概述 电子邮件是因特网上使用得非常多的一种应用,它可以非常方便的使相隔很远的人进行通信。它主要的特点就是操作简单,快捷。当你发送一封邮件的时候,它首先会发送到收件人的邮件服务器上,并放入收件人的信箱中。(如果你在某一个邮件服务器提供商那里申请了一个邮箱账号,那么转载 2015-10-18 14:43:25 · 611 阅读 · 0 评论 -
IP地址分类
1.A类IP地址 一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”, 地址范围1.0.0.1-126.255.255.254(二进制表示为:00000001 00000000 00000000 00000001 - 01111110 11111111 11111111 11111110)。可用的A类网络有126个,每个网络能容纳1677214个主机。转载 2015-10-04 11:03:02 · 597 阅读 · 0 评论 -
C语言结构体和指针
指针也可以指向一个结构体变量。定义的一般形式为:struct 结构体名 *变量名;前面已经定义了一个结构体 stu:struct stu{ char *name; int num; char sex; float score;};下面定义一个指向 stu 的指针变量 pstu:struct stu *pstu;当然在定义结构体的同转载 2015-09-30 18:18:01 · 632 阅读 · 0 评论 -
[C++]字节对齐与结构体大小
说明:结构体的sizeof值,并不是简单的将其中各元素所占字节相加,而是要考虑到存储空间的字节对齐问题。这些问题在平时编程的时候也确实不怎么用到,但在一些笔试面试题目中出是常常出现,对sizeof我们将在另一篇文章中总结,这篇文章我们只总结结构体的sizeof,报着不到黄河心不死的决心,终于完成了总结,也算是小有收获,拿出来于大家分享,如果有什么错误或者没有理解透的地方还望能得到提点,也不转载 2015-09-30 18:16:30 · 479 阅读 · 0 评论 -
C语言printf()函数:格式化输出函数
%x 整数的参数会被转成无符号的十六进制数字,并以小写abcdef 表示转载 2015-09-30 17:01:08 · 363 阅读 · 0 评论 -
C语言union关键字
union 关键字的用法与struct 的用法非常类似。union 维护足够的空间来置放多个数据成员中的“一种”,而不是为每一个数据成员配置空间,在union 中所有的数据成员共用一个空间,同一时间只能储存其中一个数据成员,所有的数据成员具有相同的起始地址。例子如下:union StateMachine{ char character; int number;转载 2015-09-30 17:33:10 · 347 阅读 · 0 评论 -
C语言struct关键字详解—结构体
struct 是个神奇的关键字,它将一些相关联的数据打包成一个整体,方便使用。在网络协议、通信控制、嵌入式系统、驱动开发等地方,我们经常要传送的不是简单的字节流(char 型数组),而是多种数据组合起来的一个整体,其表现形式是一个结构体。经验不足的开发人员往往将所有需要传送的内容依顺序保存在char 型数组中,通过指针偏移的方法传送网络报文等信息。这样做编程复杂,易出错,而且一旦控转载 2015-09-30 18:17:10 · 1722 阅读 · 0 评论 -
大小端模式
大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。转载 2015-09-30 20:25:34 · 328 阅读 · 0 评论 -
C语言中数组下标可以为负数
昨天写作业的时候不小清把下标计算成负数了,结果没报错,上网一搜还真可以是负数的,本质上来讲a[-1]就跟*(a-1)一样,长见识了。转载 2015-09-30 17:02:36 · 5453 阅读 · 0 评论 -
CART算法
1.CART算法原创 2015-11-03 20:51:11 · 334 阅读 · 0 评论 -
生成模型与判别模型
生成模型与判别模型zouxy09@qq.comhttp://blog.youkuaiyun.com/zouxy09 一直在看论文的过程中遇到这个问题,折腾了不少时间,然后是下面的一点理解,不知道正确否。若有错误,还望各位前辈不吝指正,以免小弟一错再错。在此谢过。 一、决策函数Y=f(X)或者条件概率分布P(Y|X) 监督学习的任务就是从数据中学习一个模型(也叫分转载 2015-11-04 09:23:20 · 407 阅读 · 0 评论 -
完全二叉树与满二叉树的区别
完全二叉树的定义:深度为k,有n个结点的二叉树当且仅当其每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时,称为完全二叉树。 特点:叶子结点只可能在层次最大的两层上出现;对任一结点,若其右分支下子孙的最大层次为l,则其左分支下子孙的最大层次必为l 或l+1 满二叉树:一棵深度为k,且有2的(k)次方-1个节点的二叉树 特点:每一层上的结点数都是最大结点数满二转载 2015-10-19 08:23:47 · 4546 阅读 · 0 评论 -
各种数据结构的复杂度
1.二叉搜索树定义:1)搜索(与根元素比较大小,然后再决定左子树还是右子树,后面的找最大元素和找最小元素是一样的)、插入(像find一样找到合适的位置,进行插入)、删除、找最大元素、找最小元素的复杂度等于树高,期望,最坏(数列有序,树退化成线性表)。删除怎么删除呢?分为三种情形:a.要删除的节点是叶子节点,则直接删除。b.有一个孩子节点,则该节点可以在其原创 2015-10-19 09:52:51 · 1263 阅读 · 0 评论 -
TCP上的协议以及UDP上的协议
TCP对应的协议和UDP对应的协议TCP对应的协议:(1) FTP:定义了文件传输协议,使用21端口。(2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。(3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。(4) POP3:它是和SMTP对应,POP3用于接转载 2015-10-18 12:05:32 · 573 阅读 · 0 评论 -
关于smtp和pop3的端口
在某一篇文章中,看到下面这段话:(3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。(4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。事实上,这里所说的25端口和110端口,说的都是服务器端口,而且协议里面所提到的端口,基本也全是服务器端口。切勿搞错。!!!!原创 2015-10-18 14:42:43 · 5447 阅读 · 0 评论 -
关于应用程序使用的端口
1.一个端口 只能被一个应用程序使用2.一个应用程序可以使用多个端口3.应用程序通常只能使用>1023的端口原创 2015-10-18 14:48:08 · 1051 阅读 · 0 评论 -
Linux软连接和硬链接
1.Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。【硬连接】硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一转载 2015-10-18 16:54:59 · 239 阅读 · 0 评论 -
vim的一些命令
1.删除当前行 dd2.o 在当前行之后插入一行O 在当前行之前插入一行3.^ 移动到本行第一个非空白字符上4.$ 移动到行尾原创 2015-10-18 17:08:40 · 212 阅读 · 0 评论 -
关于树或二叉树的一些定理和结论
1.对于一棵具有n个结点的树,该树中所有结点的度数之和为多少?怎么算?n-1 每个节点都有且只有一个入度。除去根节点没有入度 所以一共是N-1。(这里所说的入度借鉴的是图论中对于入度的定义)。2. 二叉树叶子节点与度为二的节点有什么关系?叶子结点就是没有孩子的结点,其度为0,度为二的结点是指有两个儿子的结点。比如一棵深度为2的满二叉树,叶子结点就是最下面的那一层,其个数为4,度为原创 2015-10-19 12:05:47 · 3408 阅读 · 0 评论 -
Jackknife,Bootstrap, bagging, boosting, AdaBoost, Rand forest 和 gradient boosting的区别
Jackknife,Bootstrap, bagging, boosting, AdaBoost, Rand forest 和 gradient boosting这些术语,我经常搞混淆,现在把它们放在一起,以示区别。(部分文字来自网络,由于是之前记的笔记,忘记来源了,特此向作者抱歉)Bootstrap: 名字来自成语“Pull yourself up by your bootstr转载 2015-11-03 19:28:41 · 1017 阅读 · 0 评论