自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

许文杰的博客

欢迎来到我的博客

  • 博客(24)
  • 资源 (10)
  • 收藏
  • 关注

原创 HTTP协议请求头和响应头

HTTP请求和相应的内容: HTTP请求包括: 1、请求行:请求的http方法+URL+http的版本号 2、请求头 3、请求体:(key=value)HTTP响应包括: 1、状态行:http协议的版本+状态码+描述 2、响应头 3、响应体:web服务器把要发送给客户端的文档信息放在响应体http请求头: accept:浏览器通过这个头告诉服务器,它...

2018-05-11 23:48:33 1349

原创 浅谈Http长连接和Keep-Alive以及Tcp的Keepalive

Keep-Alive模式: 我们知道Http协议采用“请求-应答”模式,当使用普通模式,即非Keep-Alive模式时,每个请求/应答,客户端和服务器都要新建一个连接,完成之后立即断开连接;当使用Keep-Alive模式时,Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。 http1.0中默认是关闭的,需...

2018-05-11 16:57:55 52616 3

原创 浅谈Java线程池

public class ThreadPoolExecutor extends AbstractExecutorService { public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, Blocki...

2018-05-07 18:28:46 206

原创 redis主从复制原理

前言: Redis持久化保证了即使redis服务重启也不会丢失数据,因为redis服务重启后会将硬盘上持久化的数据恢复到内存中,但是当redis服务器的硬盘损坏了可能会导致数据丢失,如果通过redis的主从复制机制就可以避免这种单点故障。 Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结...

2018-05-06 17:16:13 3580

原创 ArrayList实现原理分析

ArrayList概述: ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。 每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向ArrayList中不断添加元素,其容量也自动增长。自动增长会...

2018-05-05 22:47:09 246

原创 HashSet实现原理分析

HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。HashSet的实现: 对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet 的实现比较简单,相关HashSet的操作,基本上都是直接调...

2018-05-05 21:21:31 217

原创 剑指offer第二版面试题35:复杂链表的复制(java)

题目描述: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)分析: 思路1: 先复制原始链表的结点 在元素链表的头结点开始找每个结点的random。每次都要从头开始找,然后连接起来,所以时间复杂度是o(n*n) 思路2:...

2018-05-25 18:50:05 576

原创 剑指offer第二版面试题34:二叉树中和为某一值的路径(java)

题目描述: 输入一颗二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。路径定义为从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。分析: 对于树的遍历一般就是深度遍历和广度遍历下四种中的一种,从根节点往下找到叶节点形成一条路径,若是和为给定的值这个路径便是需要找的路径,从根节点到叶节点边访问边相加判断可以采用先序遍历。 (1)若根节点的值大于给定的值或者根节点为空,...

2018-05-25 14:57:23 909

原创 剑指offer第二版面试题33:二叉搜索树的后序遍历序列(java)

题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是返回true,否则返回false。假设输入的数组的任意两个数字互不相同。分析: 已知条件:后序序列最后一个值为root;二叉搜索树左子树值都比root小,右子树值都比root大。 1、确定root; 2、遍历序列(除去root结点),找到第一个大于root的位置,则该位置左边为左子树,右边为右子树; 3...

2018-05-25 14:23:53 497

原创 剑指offer第二版面试题32:从上到下打印二叉树(java)

题目一描述: 从上往下打印二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如输入下图的二叉树,则一次打印出8,6,10,5,7,9,11。 分析: 这道题实质上考察的就是树的遍历算法,只是这种遍历不是我们熟悉的前序、中序或者后序遍历。由于我们不太熟悉这种按层遍历的方法,可能一下也想不清楚遍历的过程。 因为按层打印的顺序决定应该先打印的根节点,所以我们从树的根节点开始分析。为了接...

2018-05-25 11:52:20 3172

原创 剑指offer第二版面试题31:栈的压入、弹出序列(java)

题目描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压栈序列,序列,4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。分析: 解决这个问题很直观的想法就是建立一个辅助栈,把输入的第一个序列中的数字依次压入该辅助栈,并按照第二个序列的...

2018-05-07 22:45:56 441

原创 剑指offer第二版面试题30:包含min函数的栈(java)

题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push及pop的时间复杂度都是O(1).分析: 看到这个问题,我们的第一反应可能是每次压入一个新元素进栈时,将栈里的所有元素排序,让最小的元素位于栈顶,这样就能在O(1)时间得到最小元素了。但这种思路不能保证最后压入的元素能够最先出栈,因此这个数据结构已经不是栈了。 我们接着想到在...

2018-05-07 22:21:32 421 1

原创 剑指offer第二版面试题29:顺时针打印矩阵(java)

题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如:如果输入如下矩阵: 1, 2, 3, 4 5, 6, 7, 8 9, 10,11,12 13,14,15,16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.分析: 当遇到一个复杂的问题的时候,我们可以用图形来帮助我们来思考。由于是...

2018-05-05 17:07:56 3490

原创 剑指offer第二版面试题28:对称的二叉树(java)

题目描述: 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树和它的镜像是一样的,那么它是对称的。分析: 对于一棵二叉树,从根结点开始遍历, 如果左右子结点有一个为NULL,那么肯定不是对称二叉树; 如果左右子结点均不为空,但不相等,那么肯定不是对称二叉树; 如果左右子结点均不为空且相等,那么 遍历左子树,遍历顺序为:当前结点,左子树,右子树; 遍历右子树,遍历...

2018-05-05 12:25:12 872

原创 剑指offer第二版面试题27:二叉树的镜像(java)

题目描述: 请完成一个函数,输入一个二叉树,该函数输出它的镜像 二叉树节点定义:// 二叉树节点定义class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; ...

2018-05-05 11:09:15 424

原创 剑指offer第二版面试题26:树的子结构(java)

题目描述: 输入两棵二叉树A和B,判断B是不是A的子结构。 例如: 图中所示的两棵二叉树,由于A中有一部分子树的结构和B 是一样的,因此B是A的子结构。 分析: 要查找树A中是否存在和树B结构一样的子树,思路:第一步:先在树A中查找与根结点的值一样的结点,这实际就是树的先序遍历,当树A和树B为空时,定义相应的输出。如果树A某一结点的值和树B头结点的值相同,则调用doesTree1Ha...

2018-05-02 17:19:20 446

原创 剑指offer第二版面试题25:合并两个排序的链表(java)

题目描述: 输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。例如输入图中的链表1和链表2,则合并之后的升序链表3所示。 分析: 这是一个经常被各公司采用的面试题。在面试过程中,我们发现应聘者最容易犯两个错误:一是在写代码之前没有对合并的过程想清楚,最终合并出来的链表要么中间断开要么并没有递增排序;二是代码的鲁棒性方面存在问题,程序一旦有特殊的输入(如空链表)...

2018-05-02 16:49:46 592

原创 剑指offer第二版面试题24:反转链表(java)

题目描述: 定义一个函数,输入一个链表的头结点,反转该链表并输出反转后的链表的头结点。链表结点如下:public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}分析: 要想反转链表,对于结点i,我们要把它的...

2018-05-02 16:12:05 559

原创 剑指offer第二版面试题23:链表中环的入口节点(java)

题目描述: 如果一个链表中包含环,如何找出环的入口节点?分析: 可以用两个指针来解决这个问题。先定义两个指针P1和P2指向链表的头结点。如果链表中环有n个结点,指针P1在链表上向前移动n步,然后两个指针以相同的速度向前移动。当第二个指针指向环的入口结点时,第一个指针已经围绕着环走了一圈又回到了入口结点。   剩下的问题就是如何得到环中结点的数目。我们可以使用一快一慢的两个指针...

2018-05-02 15:31:56 658

原创 剑指offer第二版面试题22:链表中倒数第k个节点(java)

题目描述: 输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1,2,3,4,5,6。这个链表的倒数第3个结点是值为4的结点。分析: 为了得到第K个结点,很自然的想法是先走到链表的尾端,再从尾端回溯K步。可是我们从链表结点的定义可以看出本题中的链表是单向链表,单向链表的结点只...

2018-05-02 14:54:18 659

原创 剑指offer第二版面试题21:调整数组顺序使奇数位于偶数前面(java)

题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。基本实现 如果不考虑时间复杂度,最简单的思路应该是从头扫描这个数组,每碰到一个偶数时,拿出这个数字,并把位于这个数字后面的所有的数字往前面挪动一位。挪完之后在数组的末尾有一个空位,这时把该偶数放入这个空位。由于没碰到一个偶数就需要移动O(n)个数字,因此总的时间复...

2018-05-02 12:07:47 735

原创 剑指offer第二版面试题20:表示数值的字符串(java)

题目描述: 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。分析: 1、在数值之前可能有一个表示正负的’-‘或者’+’。接下来是若干个0到9的数位表示数值的整数部分(在某些小数里可能没有数值的...

2018-05-02 11:44:59 801 2

原创 剑指offer第二版面试题19:正则表达式匹配(java)

题目描述: 请实现一个函数用来匹配包括’.’和’‘的正则表达式。模式中的字符’.’表示任意一个字符,而’‘表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”ab*ac*a”匹配,但是与”aa.a”和”ab*a”均不匹配分析: 这道题的核心其实在于分析’‘,对于’.’来说,它和任意字符都匹配,可把其当做普通...

2018-05-02 11:02:46 501 2

原创 剑指offer第二版面试题18:删除链表中的节点(java)

题目一描述: 给定单链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点。分析: 在单链表中删除一个节点,最常规的方法无疑是从链表的头结点开始,顺序遍历查找要删除的节点,并在链表中删除该节点。 比如图a所表示的链表中,我们要删除节点i,可以从链表的头节点a开始顺序遍历,发现节点h的m_PNext指向要删除的节点i,于是我们可疑把节点h的m_PNext指向i的下一个节点即为j。...

2018-05-02 10:22:09 693

黑马程序员19期java学院全部培训资料和22套java web项目

黑马程序员19期java学院全部培训资料和22套java web项目 2016 黑马19期 JAVAEE最新9月: 01、第一阶段java基础 02、第二阶段 Java web(24天) 03、第三阶段struts框架技术(5天) 04、第四阶段Hibernate(ORM框架技术)(4天) 05、第五阶段Spring3框架技术(7天) 06、第六阶段jQuery(2天) 07、第七阶段Oracle(3天) 08、第八阶段web service(2天 ) 09、第九阶段maven(1天) 10、第十阶段项目管理 11、第十一阶段项目:物流管理系统(12天) 12、第十二阶段mybatis(2天) 13、第十三阶段springmvc(2天) 14、第十四阶段lucene(1天) 15、第十五阶段solr(1天) 16、第十六阶段JavaEE_linux 17、第十七阶段redis(1天) 18、大数据:hadoop7天完整版(2016年3月最新版) 19、所有用到的jar包 20、19期压缩包解压密码.docx java项目视频22套: 第01项目:OA办公自动化项目(四套) 第02项目:CRM客户关系管理项目(两套) 第03项目:宅急送项目 第04项目:杰信商贸SSH版 第05项目:电力项目(两套) 第06项目:校内网项目 第07项目:Java邮件开发教程 第08项目:java网上在线支付实战视频 第09项目:俄罗斯方块游戏开发_视频教程 第10项目:交通灯管理系统视频教程 第11项目:银行业务调度系统视频教程 第12项目:供应链系统视频教程 第13项目:网上商城项目 第14项目:药品集中采购系统视频教程 第15项目:杰信商贸SSM版 第16项目:国家税务协同平台项目 第17项目:javaWeb聊天室 第18项目:点餐系统 第19项目:网上书店 第20项目:手机进销存系统 第21项目:新巴巴运动网 第22项目:基于SpringMVC、MyBatis、FreeMarker架构实战CMS大型门户网站(自定义模板)

2018-01-07

java开发文档

java开发文档。jdk1.6。java开发文档。jdk1.6。java开发文档。jdk1.6。

2017-11-27

【MyEclipse】配置代码格式化模版

MyEclipse代码格式化模版,可以参照我的博客进行设置,http://blog.csdn.net/u010028869/article/details/49780515

2017-10-15

校内网项目

该项目整合了ssh框架,实现了用户的注册、登陆、修改个人信息、上传头像、上传相册等功能

2017-06-26

公司部门内部留言本

本软件作为内部员工之间留言和发送消息使用。通过口令验证,可留言、上传附件和下载附件。

2017-04-29

文件的上传与下载

该项目使用struts web框架,实现用户注册、上传头像、查看用户信息以及下载用户头像等功能

2017-04-15

jsp标准标签库的使用

该资料中含有jsp标准标签库的使用案例,涵盖了常用的jsp标签、条件标签、迭代标签等等

2017-04-09

新闻管理系统model2模式

该项目采用model2开发模式,将项目分为界面层、业务层、数据访问层、数据库层,下层为上层提供服务。实现对用户登陆验证、新闻查询、添加新闻、安全退出等功能!

2017-03-28

新闻管理系统model1模式

该项目采用传统的model1开发模式,实现对用户登陆验证、新闻查询、添加新闻、安全退出等功能!

2017-03-28

网上书城销售系统

该项目支持用户在网上书城下订单购买图书,并能查看用户的购物车及历史订单。

2017-03-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除