自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

转载 Java--ArrayList的迭代器

阅读目录一、迭代器概述 二、ArrayList的Iterator实现 三、ListIterator回到顶部一、迭代器概述  1、什么是迭代器?  在Java中,有很多的数据容器,对于这些的操作有很多的共性。Java采用了迭代器来为各种容器提供了公共的操作接口。这样使得对容器的遍历操作与其具体的底层实现相隔离,达到解耦的效果。  在Iterator接口中定义了三个方法:...

2019-03-07 22:35:15 4089 1

转载 Socket编程

对TCP/IP、UDP、Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵。那么我想问:1.         什么是TCP/IP、UDP?2.         Socket在哪里呢?3.         Socket是什么呢?4.         你会使用它们吗?什么是TCP/IP、UDP?         TCP/IP(Transmi

2017-10-10 11:37:32 265

转载 获取servlet参数的方法

在web.xml里面可以定义两种参数:一种是全局范围的参数,一种是servlet内的参数。      web.xml里定义参数的应用举例:在做分页功能时,可以在代码中直给定pageSize的值,这样,写死在代码中,灵活性差。改进方法:将pageSize配置在web.xml中,然后再在代码中获取。     1. 全局范围的参数,存放在ServletContext对象中,在web.

2017-10-08 17:49:45 2363

转载 Java设计模式遵循的六大原则

最近几年来,人们踊跃的提倡和使用设计模式,其根本原因就是为了实现代码的复用性,增加代码的可维护性。设计模式的实现遵循了一些原则,从而达到代码的复用性及增加可维护性的目的,设计模式对理解面向对象的三大特征有很好的启发,不看设计模式,很难深层地体会到面向对象开发带来的好处 。在刚开始学习中,很难做到将这些模式融汇贯通,所以这个需要我们在编码前多思考,等想充分了,在开始实践编码。下面是设计模式应当遵循的

2017-09-24 22:03:46 1198

原创 精华录

http://www.jianshu.com/p/1f1d3193d9e3

2017-09-14 16:58:37 210

转载 http会话的四个过程

HTTP会话的四个过程1. 建立tcp连接2. 发出请求文档3. 发出响应文档4. 释放tcp连接HTTP协议客户端连上web 服务器后,若想获得 web 服务器中的某个 web 资源,需遵守一定的通讯格式, HTTP 协议用于定义客户端与 web 服务器通迅的格式。WEB浏览器与 WEB 服务器之间的一问一答的交互过程必须遵循一定的规则

2017-08-30 19:59:41 23335 3

转载 细说TIME_WAIT状态

也说说TIME_WAIT状态一个朋友问到,自己用go写了一个简单的HTTP服务端程序,为什么压测的时候服务端会出现一段时间的TIME_WAIT超高的情况,导致压测的效果不好呢?记得老王有两篇文章专门说这个,当时粗粗看了一遍,正好碰上这个问题,又翻出来细细搂了。第一个要弄懂的,是TIME_WAIT是怎么产生的。TIME_WAIT状态是怎么产生的要弄懂TIME_WAIT要从TCP的

2017-08-30 19:55:09 293

转载 JVM内存模型

JVM定义了若干个程序执行期间使用的数据区域。这个区域里的一些数据在JVM启动的时候创建,在JVM退出的时候销毁。而其他的数据依赖于每一个线程,在线程创建时创建,在线程退出时销毁。程序计数器程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。由于Java 虚拟机的多线程是通过线程

2017-07-08 19:37:35 177

原创 扑克牌顺子

题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“OhMy God!”不是顺子.....LL不高兴了,他想了想,决定大\小王可以看成任何数字,并且A看作1,J为11,Q为12,K为1

2017-07-03 16:29:03 234

原创 求句子的逆序列

题目:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?思路:(1

2017-06-30 13:22:00 401

原创 数值的整数次方

题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。思路;这个题目很简单,主要是要考虑各种情况,将各种情况考虑清楚。情况1: 0次方,所以的数的0次方均为1;情况2:整数次方,此时不管数值为么数,直接重复乘以自身即可;情况3:负数次方,此时如果数值为0,则抛出异常,因为分子不能为0;代码:pack

2017-06-27 15:47:25 232

转载 将二叉搜索树转换为双向链表

题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。代码://1、将左子树构成双链表,并返回该链表的头节点(左子树最左边的节点)//2、定位到左链表的最后一个节点(左子树最右边的节点)//3、如果左子树链表不为空,则将当前root追加到左子树链表后//4、将右子树构造成双向链表,并返回链表头结点(右子树最左

2017-06-27 15:24:24 318

原创 数据库的三大范式详解

一、前言:         关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。数据库的设计范式是数据库设计所需要满足的规范。只有理解数据库的设计范式,才能设计出高效率、优雅的数据库,否则可能会设计出错误的数据库.       目前,主要有六种范式:第一范式、第二范式、第三范式、BC范式、第四范式和第五范式。满足最低要求的叫第一范式,简称1NF。在第一范式基础上

2017-06-26 15:32:00 626

原创 找到第一个只出现一次的字符的位置

题目描述在一个字符串(1。分析:1、若为空串,或者字符串长度大于10000或者小于1,返回-1。位置索引从0开始。如果从头开始让每一个字符都与其后面的字符相比较,当第一个出现一次的字符,就结束程序。但是这种算法的时间复杂度是O(n^2),这明显不是好的解决方法。方法:采用哈希表数据结构1、我们可以遍历统计每个字符在字符串中出现的次数,把它保存在数组中(哈希表

2017-06-25 12:49:23 1284

原创 丑数

题目描述把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。思路:何为丑数,就是能被2,3,5整除的数(1除外,但1是丑数),也就是将这个数分解因子,因子只能是2,3,5,比如10=2*5,12=2*2*3等,所以某个丑数肯定是前面的丑数的2,3,5的倍数,

2017-06-21 14:37:14 262

原创 复杂链表的复制

题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空。)摘要: 题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。思路1:因为next指针是固定的,在复

2017-06-20 20:34:43 247

原创 连续子数组的最大和

题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?(子向量的长

2017-06-20 20:24:55 334

转载 Spring的AOP实现方式—ProxyFactoryBean配置方式实现源码剖析

实现Aop功能有两种方式,1. ProxyFactoryBean方式: 这种方式是通过配置实现2. ProxyFactory方式:这种方式是通过编程实现这里只说ProxyFactoryBean方式首先说下具体的配置,一个例子如下:[html] view plain copy bean id="testAdvisor" class="com.abc.T

2017-06-19 20:56:08 821

转载 正整数中1出现的次数

题目描述求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。解题思路考虑将n的十进制的每一位单独拿出讨论,每一位的值记为weight。1) 个位从1到

2017-06-19 20:43:34 489

原创 一个整型数组里除了两个数字之外,其他的数字都出现了两次

题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路: * 这些程序找出这两个只出现一次的数字。要求时间复杂度为O(n),空间复杂度为O(1)例如输入数组{2,4,3,6,3,2,5,5},因为只有4,6这两个数字只出现一次,其他数字都出现了两次,所以输出4,6我们想到异或运算的一个性质:任何一个数字异或它自己都等

2017-06-18 20:26:57 2325

原创 数组中有一个数字出现的次数超过数组长度的一半

题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。情况1:本题只要求数组中有一个数字出现的次数超过数组长度的一半的情况,所以用相同则加1,不同则减1的原则,最后如果运算的结果>=1,则要检验是否这个数出现的次数的

2017-06-18 13:26:46 1261

原创 重排序,使数组的奇数在偶数前面

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。情况1:不需要保证偶数的相对位置可以从第0个和第len-1开始,时间复杂度为O(n),不计算交换的时间的话。代码:public static void reOrderArray2(in

2017-06-17 22:10:01 281

原创 顺时针打印矩阵

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 1213 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.步骤:由于题目是以从外圈到内圈的顺序依次打印,在矩阵中标注一圈作为分析的目标。设矩阵的列数为col,而其行数为row。一开始肯定要

2017-06-17 20:18:50 275

原创 将一个字符串转换成一个整数

题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0输入例子:+2147483647解题思路:1. 将输入的字符串转换成字符数组。从大下标开始,反向对每个字符逐个处理,一直到下标为1

2017-06-15 21:32:42 607

原创 所有和为S的连续正数序列

题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列?Good Luck!输出描述:输出所有和为S的连续正数

2017-06-14 21:23:52 409

原创 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。

1. 如果数组没有排序,可以先进行排序,可以用快速排序或者堆排序的方法进行排序,然后分别从有序数组头尾向中间遍历,相加,等于就输出,大于sum 就end--,小于sum就start++。这样的话,排序时间复杂度为O(n*log),遍历时间复杂度为O(n/2),所以总的时间复杂度为O(n*log)+O(n/2),即O(n*log)。代码:package JianZhiOffer;im

2017-06-14 20:19:46 2035 1

原创 java的静态成员和静态方法,非静态内部类和静态内部类的区别

这里的静态,指以static关键字修饰的,包括类,方法,块,字段。非静态,指没有用static 修饰的。静态有一些特点:1.全局唯一,任何一次的修改都是全局性的影响2.只加载一次,优先于非静态3.使用方式上不依赖于实例对象。4.生命周期属于类级别,从JVM 加载开始到JVM卸载结束。静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也

2017-06-13 10:03:42 754

转载 多进程如何调度

PS:在多进程并发的环境里,虽然从概念上看,有多个进程在同时执行,但在单个CPU下,在任何时刻只能有一个进程处于执行状态,而其他进程则处于非执行状态。那么问题来了,我们是如何确定在任意时刻到底由哪个进程执行,哪些不执行呢?这就涉及到进程管理的一个重要组成部分:进程调度,跟随本篇来一起复习下进程调度吧!一、进程调度基础1.1 进程调度定义  进程调度是操作系统进程管理的一个重要组成部

2017-06-08 22:33:50 2978

原创 进程间的通信方式

一、1 无名管道通信无名管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。2 高级管道通信高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式。3 有名管道通信有名管道 (named pipe) : 有名管道也是半双工的通

2017-06-08 22:04:02 342

转载 TCP三次握手

TCP/IP协议三次握手与四次握手流程解析 一、TCP报文格式  TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图:图1 TCP报文格式  上图中有几个字段需要重点介绍下:  (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。  (2)确认序号:Ack序号,占32位,只有AC

2017-06-08 20:52:19 428

转载 Java异常处理机制

1. 引子       try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码看真正答案哦。如果你的答案是正确,那么这篇文章你就不用浪费时间看啦。

2017-06-07 21:22:07 150

原创 求二叉树的最大深度与最大宽度

1. 最大深度采用分治算法的思想,将问题分为两个部分,再将每部分继续分成两个部分,一直到基值条件返回。这里即是将左子树和右子树的深度分别求出来比较,用大的那个深度加1即可。所以采用递归的思想。package JianZhiOffer;public class TreeDepth{     public int TreeDepth(TreeNode root)  

2017-06-05 19:31:26 1642

原创 最小的K个数

采用堆排序算法思路:1. 将数组前K个数构造成最大堆,采用向下筛选的方法,进行K/2次的筛选,从第K/2-1个数开始向下筛选,因为对于K个数,第K/2-1个数是最后一个父节点,采用向下筛选比采用向上筛选(堆里面的插入算法)复杂度要小一半。2. 然后从第K个数开始向后与最大堆的堆顶元素比较,如果大于或等于堆顶元素,则说明其也大于或者等于堆里面的其他节点,所以继续向下比较,只有小于堆顶元素

2017-06-05 13:34:01 280

原创 字符串的全排列问题

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。方法一:注意点:  第一个是重复字母,第二个是按字典顺序。  重复字母我们在进行交换的时候直接跳过就可以了

2017-06-04 17:10:06 337

原创 二叉树中和为某一值的路径

题目:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。如下图,输入二叉树和整数22,则打印出两条路径,第一条路径包含结点10,12,第二条路径包含的结点为10,5,7.一般的数据结构和算法的教材都没有介绍树的路径,因此对大多数应聘者而言,这是一个新概念,也就很难一下子想出完整的解题思路。这个

2017-06-04 15:28:59 356

原创 判断一个数组序列为二叉树的后序遍历序列

思路:1.、 二叉树中,满足左子节点2、二叉树一条重要的性质就是它满足中序遍历的结果。所以左子树中的节点最大也要小于等于根节点,右子树中的节点要大于等于根节点。3、对于后序遍历而言,数组序列中最后一个元素为其根节点,然后前面的数中,从最开始到第一个大于根节点的数都是左子树中的数,而后面到倒数第二个数应该都是大于根节点的,是右子树,如果后面的数中有小于根节点的,那么说明这个序列不是二叉搜

2017-06-03 22:07:32 876

转载 数据库索引实现底层原理2

强烈建议参阅链接:http://www.linezing.com/blog/?p=798#nav-1说白了,索引问题就是一个查找问题。。。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在

2017-06-03 19:22:03 2989

转载 索引的底层实现原理

一、引言对数据库索引的关注从未淡出我的们的讨论,那么数据库索引是什么样的?聚集索引与非聚集索引有什么不同?希望本文对各位同仁有一定的帮助。有不少存疑的地方,诚心希望各位不吝赐教指正,共同进步。[最近首页之争沸沸扬扬,也不知道这个放在这合适么,苦劳?功劳?……]  二、B-Tree我们常见的数据库系统,其索引使用的数据结构多是B-Tree或者B+Tree。例如,MsSql使用的是

2017-05-26 17:03:44 6672

转载 存储过程的优缺点及适宜使用的场合详解

我们知道,存储过程在数据库操作中的使用是非常广泛的。它具有速度快、程序简单、可重复使用、安全性高等特点,那么什么时候使用存储过程是比较适合的呢?本文我们就来介绍这一部分内容,希望能够对读者有所帮助。当一个事务涉及到多个SQL语句时或者涉及到对多个表的操作时就要考虑用存储过程;当在一个事务的完成需要很复杂的商业逻辑时(比如,对多个数据的操作,对多个状态的判断更改等)要考虑;还有就是比较复杂的

2017-05-25 22:25:54 413

转载 存储过程的优缺点

为什么要用存储过程几个去 IBM 面试的兄弟回来抱怨:去了好几个不同的 IBM 项目组,几乎每个面试官问到数据库的时候都要问用没用过存储过程,烦人不?大家去面的程序员,又不是 DBA,以前的项目都没有用到存储,不照样运行的好好的?存储过程真的那么重要吗,它到底有什么好处呢?笔者认为,存储过程说白了就是一堆 SQL 的合并。中间加了点逻辑控制。但是存储过程

2017-05-25 22:20:37 223

空空如也

空空如也

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

TA关注的人

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