自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

张康的博客

站在巨人的肩膀上努力往上爬!

原创 博客搬迁通知

此csdn博客今日起已不再更新,博客新地址:https://www.cnblogs.com/neuzk/

2018-08-14 18:35:57 648

原创 n个人排队都不站在原来的位置

n个人排队都不站在原来的位置 一、题目描述有n个人首先站成一排,请问,当n个人第二次再重新排列,每个人都不在原来的位置上,问有多少种站法。例如,原来有3个人,ABC,那么第二次每个人都不在原来的位置上有2种站法,BCA和CAB,这题其实是一道数学题,考察排列组合的知识。解题思路:假设有n个人,我们的问题规模设为A(n),A(n)代表n个人都不在...

2018-09-17 20:23:00 244

原创 计算字符串表达式的值

计算字符串表达式的值 一、题目描述给你一个字符串,包含+,-,*,/和(),数字为0-9,让计算该表达式的值,例如"1+2*3-(8/4)+6",结果为11,这是前几天面试去哪儿网,二面面试官让手撕的题目。记忆中本科的时候遇到过,当时也没啥思路。其实这个题需要分两步完成,第一步:把字符串表达式的中缀形式转为后缀形式,怎么转有一定的规则。第二步:计...

2018-09-16 10:54:00 341

原创 mysql数据类型优化

mysql数据类型优化 一、选择优化的数据类型良好的逻辑设计和物理设计是高性能的基础,而选择正确的数据类型对于高性能至关重要。在数据库优化方面,数据类型优化只是一方面,还有查询语句优化,主键选择,索引建立,命名规则等。本文只要探讨数据类型方面的选择。一般在选择数据类型的时候,下面的几条原则有助于做出更好的选择:选择可以正确存储数据的最小数据类...

2018-09-10 16:13:00 114

原创 servlet详解

servlet详解 1、什么是servlet:servlet 是运行在 Web 服务器中的小型 Java 程序(即:服务器端的小应用程序)。servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。servlet实例是由web服务器(tomcat)创建的,它是单例多线程的。单例是指servlet的实例只有一个,多线...

2018-09-08 00:30:00 1509

原创 对称二叉树

对称二叉树 一、题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。例如下面的二叉树:思路:如果根节点为null,返回true。然后判断左子树和右子树是否对称。二、代码演示public class Solution { boolean isSymmetrical...

2018-08-20 10:31:00 93

原创 删除链表中的重复节点

删除链表中的重复节点 一、题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5。还有一种情况是1->1->1->1,那么返回的应该是null。思路:因...

2018-08-19 23:06:00 50

原创 数组不相邻元素之和的最大值

数组不相邻元素之和的最大值 一、题目描述今天下午面试老虎证券,被问到这题,当时脑子有点蒙,代码没写出来。这题的意思就是给你一个数组,让你计算元素的和,但是这些元素都不能相邻,求最大的和。其实这题很常见,在leetcode上面也有,但是原题是这样的:假设你是一个专业的窃贼,准备沿着一条街打劫房屋。每个房子都存放着特定金额的钱。你面临的唯一约束...

2018-08-19 17:22:00 1055

原创 Java线程池

Java线程池 一、什么是线程池为了避免系统频繁的创建线程,我们可以让创建的线程复用。由线程池统一管理线程的创建和回收以及销毁的过程,当使用需要使用一个线程的时候,就从线程池中取出一个空闲线程,当完成工作后,并不是关闭线程,而是将这个线程退回到线程池,供其他任务使用。创建线程池的几个原因:频繁的创建销毁线程可能会耗尽cpu和内存资源任务的执...

2018-08-17 10:23:00 47

原创 从1亿个数里面找出前100个最大的

从1亿个数里面找出前100个最大的 这个题目应该是一些大公司面试题中经常被问到的,这里我给出一种做法,至于面试官满不满意我就不知道了。我们知道,这种找出前多少个最大或者最小的最适合用堆排序(对堆排序不熟悉的读者可以参考为的这篇博客:堆排序)。但是如果我们用1亿个数去建堆并调整,当然时间复杂度是不允许的。题目中要求前100个大的,那么我们就只用100...

2018-08-16 15:51:00 3900

原创 数组中出现次数超过一半的数

数组中出现次数超过一半的数 思想:这种题目一般都会要求o(n)的时间复杂度和o(1)的空间,目的就是为了不让你使用HashMap来统计计算。这里我们可以采用两两消除的思想去实现,例如一个数组arr为:1 2 2 3 2 1 2,那么我们把第一个元素arr[0]当作开始的元素k,它的出现次数count赋值为1,然后从第二个元素arr[1]开始往后遍历...

2018-08-16 15:15:00 56

原创 二叉树中两个节点的最近公共祖先

二叉树中两个节点的最近公共祖先 一、递归版本思想:假设根结点为root,其中给定的两个结点分别为A和B,它们分别都不为null。如果当前结点p为null,那么直接返回null,如果当前结点p是给定的结点中的其中一个结点,那么直接返回当前结点p(如果p是根结点,程序一次就返回了,下面的递归也不会出现)。如果当前节点不是A和B中的一个,那么需要分别去...

2018-08-16 14:56:00 166

原创 寻找二叉树上从根结点到给定结点的路径

寻找二叉树上从根结点到给定结点的路径 一、递归实现思想:借助栈结构来保存路径上的结点,首先从根结点开始,一直往左找,如果左边找到就返回true;否则,如果左边找不到并且右子树不为空的情况下再继续往右子树找。如果左右子树都找不到,就弹出栈顶结点并返回false。方法运行完毕后,栈中保存的元素就是一条从根到给定结点的路径。public stati...

2018-08-16 13:23:00 1611

原创 二叉树的宽度和深度

二叉树的宽度和深度 一、深度递归版本public static int getDeep(TreeNode root){ if(root == null) return 0; int left = getDeep(root.left); int right = getDeep(root...

2018-08-16 11:05:00 114

原创 二叉树最宽的那层从左往右第二个结点

二叉树最宽的那层从左往右第二个结点 思想:前两天面试拼多多Java岗位,手写算法的时候,面试官问了这道题,由于当时比较紧张,另外是用word写的,没有找到感觉。勉强写出来了一半,现在来好好总结一下。首先这题是根据求二叉树宽度延伸而来的,其实大部分关于二叉树的算法题都是由基本的遍历,求深度,宽度,根到节点的路径等等演变而来的。只要把基本的掌握好,其他...

2018-08-16 10:17:00 35

原创 二叉树遍历方式

二叉树遍历方式 一、先序遍历先序遍历:根------左子树-------右子树递归版本public static void prePrint(TreeNode root) { if (root == null) return; System.out.print(root.val + "...

2018-08-16 08:54:00 31

原创 TCP的三次握手和四次握手

三次握手(建立连接)首先,服务器进程(B)先创建传控制块TCB(用来存储连接信息,如连接表,发送和接收序号等),准备接收客户进程(A)的请求。然后服务器进程处于LISTEN(收听)状态,等待客户的连接请求。客户进程(A)同样也是首先创建传输控制块TCB,然后向服务器B发出连接请求报文。报文首部的同步位SYN=1,同时选择一个初始的序号seq=x(TCP规定,SYN=1的报文不能携带数据,但...

2018-08-14 09:00:12 311

原创 TCP的三次握手和四次握手

TCP的三次握手和四次握手 三次握手(建立连接)首先,服务器进程(B)先创建传控制块TCB(用来存储连接信息,如连接表,发送和接收序号等),准备接收客户进程(A)的请求。然后服务器进程处于LISTEN(收听)状态,等待客户的连接请求。客户进程(A)同样也是首先创建传输控制块TCB,然后向服务器B发出连接请求...

2018-08-14 09:00:00 48

原创 Java策略模式(Strategy)

Java策略模式(Strategy) 一、定义定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。策略模式使这些算法在客户端调用它们的时候能够互不影响地变化。(Java的TreeSet集合中,构造方法可传入具体的比较器对象以实现不同的排序算法。就是利用的策略模式)策略模式的用意是针对一组算法,将每一个算...

2018-08-10 17:41:00 29

原创 Java策略模式(Strategy)

一、定义定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。策略模式使这些算法在客户端调用它们的时候能够互不影响地变化。(Java的TreeSet集合中,构造方法可传入具体的比较器对象以实现不同的排序算法。就是利用的策略模式)策略模式的用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中, 从而使得它们可以相互替换,使用策略模式可以把行为和环境分割开来。二、意义策略模...

2018-08-10 17:40:56 469

原创 Java观察者模式(Observer)

一、定义观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,让他们能够自动更新自己。主要应用在java的AWT事件机制。二、角色抽象主题角色(Subject):把所有对观察者对象的引用保存在一个集合中,每个抽象主题角色都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者角色。一般用一个抽象类...

2018-08-10 17:21:20 263

原创 Java观察者模式(Observer)

Java观察者模式(Observer) 一、定义观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,让他们能够自动更新自己。主要应用在java的AWT事件机制。二、角色抽象主题角色(Subject):把所有对观察者对象的引用...

2018-08-10 17:21:00 26

原创 Java装饰者模式(Decorator)

一、定义装饰模式的设计理念主要是以对客户端透明的方式动态扩展对象的功能,是继承关系的一个替代(继承会产生大量的子类,而且代码有冗余)。装饰模式可以在不创造更多子类的情况下,将对象的功能加以扩展。装饰模式把客户端的调用委派到被装饰类。装饰模式的关键在于这种扩展完全是透明的(装饰模式的透明性要求客户端程序不应该将对象声明为具体构件类型或具体装饰类型,而应该全部声明为抽象构件类型),装饰模式的应用在...

2018-08-09 22:57:28 6802 4

原创 Java装饰者模式(Decorator)

Java装饰者模式(Decorator) 一、定义装饰模式的设计理念主要是以对客户端透明的方式动态扩展对象的功能,是继承关系的一个替代(继承会产生大量的子类,而且代码有冗余)。装饰模式可以在不创造更多子类的情况下,将对象的功能加以扩展。装饰模式把客户端的调用委派到被装饰类。装饰模式的关键在于这种扩展完全是透明的...

2018-08-09 22:57:00 213

原创 Java中IO流讲解(一)

一、概念IO流用来处理设备之间的数据传输Java对数据的操作是通过流的方式Java用于操作流的类都在IO包中流按流向分为两种:输入流,输出流流按操作类型分为两种:字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的字符流 : 字符流只能操作纯字符数据,比较方便。二、字节流字节流的抽象父类:InputStream和OutputStream,由于抽象类是不能直接new对象的...

2018-06-16 23:15:05 522

原创 Java中IO流讲解(一)

Java中IO流讲解(一) 一、概念IO流用来处理设备之间的数据传输Java对数据的操作是通过流的方式Java用于操作流的类都在IO包中流按流向分为两种:输入流,输出流流按操作类型分为两种:字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的字符流 : 字符流只能操作纯字符数...

2018-06-16 23:15:00 40

原创 Java中File类的使用介绍

1、创建File对象的几种方式import java.io.File;public class MyFile { public static void main(String[] args) { File file1 = new File("a.txt");            // 相对路径   File file2 = new File("E:\\image\\1.jpg"); ...

2018-06-12 22:47:07 609

原创 Java中File类的使用介绍

Java中File类的使用介绍 1、创建File对象的几种方式import java.io.File;public class MyFile { public static void main(String[] args) { File file1 = new File("a.txt"); ...

2018-06-12 22:47:00 78

原创 windows下使用nginx配置tomcat集群

一、nginx介绍Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。应用场景:1、http服务器。Nginx可以独立提供http服务。可以做网页静态服务器。2、虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。3、反向代理,负载均衡。...

2018-06-11 23:05:17 4573

原创 windows下使用nginx配置tomcat集群

windows下使用nginx配置tomcat集群 一、nginx介绍Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。应用场景:1、http服务器。Nginx可以独立提供h...

2018-06-11 23:05:00 285

原创 Spring,Mybatis,Springmvc框架整合项目(第三部分)

Spring,Mybatis,Springmvc框架整合项目(第三部分) 一、静态资源不拦截第二部分最后显示的几个页面其实都加载了css和js等文件,要不然不会显示的那么好看(假装好看吧),前面已经说了,我们在web.xml中配置了url的拦截形式是/,那么DispatcherServlet会拦截除了jsp外的所有...

2018-06-07 12:26:00 71

原创 Spring,Mybatis,Springmvc框架整合项目(第三部分)

一、静态资源不拦截第二部分最后显示的几个页面其实都加载了css和js等文件,要不然不会显示的那么好看(假装好看吧),前面已经说了,我们在web.xml中配置了url的拦截形式是/,那么DispatcherServlet会拦截除了jsp外的所有资源,包括静态资源,那么为什么我们的页面还是加载了css和js等资源呢,是因为我们在springmvc.xml中进行了如下配置:location="/css/...

2018-06-07 12:25:54 405

原创 Spring,Mybatis,Springmvc框架整合项目(第二部分)

Spring,Mybatis,Springmvc框架整合项目(第二部分) 一、创建数据库表打开Navicat Premium,点击左上角连接,选择mysql输入你的数据库用户名和密码信息,可以先点击下测试连接,如果显示连接成功,说明能连接到数据库,然后点击确定。如果显示1045类的错误,估计你数据库服务没打开。然...

2018-06-07 01:13:00 39

原创 Spring,Mybatis,Springmvc框架整合项目(第二部分)

一、创建数据库表打开Navicat Premium,点击左上角连接,选择mysql 输入你的数据库用户名和密码信息,可以先点击下测试连接,如果显示连接成功,说明能连接到数据库,然后点击确定。如果显示1045类的错误,估计你数据库服务没打开。然后再左侧localhost_3306右键新建数据库,输入新建的数据库名,选择utf-8字符集,然后确定。点击查询----新建查询输入以下sql代码:creat...

2018-06-07 01:12:49 328

原创 Spring,Mybatis,Springmvc框架整合项目(第一部分)

Spring,Mybatis,Springmvc框架整合项目(第一部分) 一、说在前面的话本篇博文实现一个注册登录小项目,使用spring,mybatis,springmvc框架进行整合,我们创建的是一个maven工程,主要是方便jar包版本的管理。项目使用eclispe进行开发,由于本人技术有限,针对前端界面的设...

2018-06-06 22:29:00 27

原创 Spring,Mybatis,Springmvc框架整合项目(第一部分)

一、说在前面的话本篇博文实现一个注册登录小项目,使用spring,mybatis,springmvc框架进行整合,我们创建的是一个maven工程,主要是方便jar包版本的管理。项目使用eclispe进行开发,由于本人技术有限,针对前端界面的设计比较寒颤,不过我们主要是为了演示后台的代码的设计。在正式开发之前,读者请先下载源码,这是一个maven工程。我会带着大家安装一些必要的软件,如果读者已经安装...

2018-06-06 22:28:32 438

原创 Java中TreeMap集合讲解

1.TreeSet介绍TreeSet是一个有序集合,可以以任意顺序将元素插入到集合中,在对集合进行遍历的时候,每个元素将自动按照排序后的顺序呈现。底层使用的是二叉树(更具体点是红黑树)实现,对于元素之间排序,如果不指定自定义的比较器Comparator,那么插入的对象必须实现Comparable接口。如果指定了自定义的比较器Comparator,优先使用Comparator去对元素进行排序。比较规...

2018-06-06 20:40:09 5595 2

原创 Java中TreeMap集合讲解

Java中TreeMap集合讲解 1.TreeSet介绍TreeSet是一个有序集合,可以以任意顺序将元素插入到集合中,在对集合进行遍历的时候,每个元素将自动按照排序后的顺序呈现。底层使用的是二叉树(更具体点是红黑树)实现,对于元素之间排序,如果不指定自定义的比较器Comparator,那么插入的对象必须实现Com...

2018-06-06 20:40:00 300

原创 堆排序算法

1.介绍:堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种,它的最坏,最好,平均时间复杂度均为O(nlogn)。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的非降序排序中,需要使用的就是大根堆,因为根据大根堆的要...

2018-04-30 12:06:24 259

原创 堆排序算法

堆排序算法 1.介绍:堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种,它的最坏,最好,平均时间复杂度均为O(nlogn)。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]...

2018-04-30 12:06:00 24

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