![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
*Java
文章平均质量分 50
丑八怪28
我的三心二意:信心、恒心、决心;创意、乐意
展开
-
快速排序
快速排序的思想:对于快速排序,首先要解决的就是轴值的问题,最简单的方法就是选择第一个元素作为轴值,这样可以保证不出现正序或反序的问题。核心思想是:以轴值为基准,将带排序的记录分割成独立的两部分,左边都是小于等于轴值的记录,右边都是大于等于轴值的记录,然后在对两部分分别重复上述过程,直到整个序列有序!public class Parti { public void partit原创 2017-03-28 10:43:45 · 232 阅读 · 0 评论 -
sleep()和wait()的区别
调用了sleep(),那么就会使正在执行的线程主动让出CPU,CPU去执行其他的线程,当sleep中规定了时间到了,CPU才会回到之前的线程继续执行。但是,如果当前线程进入了同步锁,那么sleep方法并不会释放锁,即使调用了sleep方法让出了CPU,但其他被同步锁挡住了的线程也得不到执行。wait()指在一个进入了同步锁的线程内,让自己暂时让出同步锁,让其他正在等待此锁的线程可以得到该锁并运原创 2017-05-15 14:08:53 · 320 阅读 · 0 评论 -
heap和stack的区别
java内存分为两种,即堆内存(heap)和栈内存(stack):栈内存是指程序进入一个方式时,会为这个方法单独分配一块私属存储空间,用于存储这个方法内部的局部变量。当这个方法执行结束时,分配给这个方法的栈会释放,这个栈中的变量也将随之释放。并且,栈内存空间有限堆内存是与栈作用不同的内存,一般用于存放那些不放在当前方法栈中的数据,所以它不会随着方法的结束而消失,空间是一个很大的自由区。例如原创 2017-05-15 13:50:28 · 378 阅读 · 0 评论 -
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
再贴出来一个我刚刚遇见的问题(我也不想遇见那么多问题啊啊啊啊):org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot loa原创 2017-05-14 16:34:12 · 2319 阅读 · 0 评论 -
Incorrect column count: expected 1, actual 3解决办法
很悲催的是,在修改了jar包问题之后不久,就发生了这样一个错误:org.springframework.jdbc.IncorrectResultSetColumnCountException: Incorrect column count: expected 1, actual 3这个问题还是比较好解决的,报错的地方我贴出来一下:public National getFlagC原创 2017-05-14 16:28:25 · 20252 阅读 · 1 评论 -
java.lang.NoSuchMethodError的解决办法
这两天在做一个项目,出来这样一个错,让我很是郁闷的找了很久都没有找出来:Caused by: java.lang.NoSuchMethodError: org.springframework.beans.factory.support.DefaultListableBeanFactory.getDependencyComparator()Ljava/util/Comparator;原创 2017-05-14 16:23:29 · 79275 阅读 · 6 评论 -
图解Git相关工作流
很久一段时间没有写点什么了,最近在做项目,促使我决定好好的了解一下git的工作流程,找到了一份很好的讲解,就果断转载下来,与君共勉!集中式(svn) VS 分布式(git)版本控制系统1. 集中式(svn)2. 分布式(git)git文件状态生命周期patch评审过程克隆repository的链条创建推荐git工作流转载 2017-05-12 09:29:02 · 409 阅读 · 0 评论 -
反射机制——侯捷谈反射+自己理解
看来侯捷老师有关反射的文章,大概我也明白了一些,就换成自己的话描述一遍,纯属个人理解,如果不妥,希望多多指教!反射呢,其实说白了就是知道了一个类(比如苹果Apple类),可以通过反射获得该类继承的类或实现的接口(例如水果Fruit),甚至更向上的继承或实现,直到顶级父类。例如有这样一个代码段:代码段中的注释说的很明白,button属于Button,而Button又继承了转载 2017-04-21 10:29:13 · 452 阅读 · 0 评论 -
java中的Filter过滤器
一、Filter(即过滤器)的功能主要对用户请求进行预处理和后处理,主要功能有两个:1.预处理:在HttpServletRequest到达Servlet之前,拦截客户的HttpServletRequest,根据需要检查HttpServletRequest,也可以修改HttpServletRequest头和数据2.后处理:在HttpServletRequest到达客户端之前,拦截Http转载 2017-04-17 15:31:01 · 310 阅读 · 0 评论 -
重定向输出实现日志
public class RedirctOutputStream { public static void main(String[] args){ try { //保存原输出流 PrintStream out=System.out; //创建文件输出流 PrintStream原创 2017-03-27 10:02:27 · 2145 阅读 · 0 评论 -
水仙花
水仙花数是一个三位数,其各位的立方之和等于数值本身public class Flower { public static void main(String[] args){ int a,b,c; System.out.println("水仙花数:"); for (int i=100;i1000;i++){ a=原创 2017-03-28 15:29:30 · 287 阅读 · 0 评论 -
汉诺塔算法
汉诺塔算法:古代有一个梵塔,塔内有ABC三个座,开始时,A座上有16个盘子,盘子的大小不一,大的在下,小的在上。有一个老和尚想把A座上的盘子移动到C座上,每次只允许移动一个盘子,且移动过程中始终是大的在下,小的在上,如何实现?核心思想:1.递归2.只要盘子数不是1,那么总是先把A上的盘子借助C移动到B上,然后再借助A将B上的移动到C上public class Hanoi {原创 2017-03-28 15:49:56 · 536 阅读 · 0 评论 -
Servlet线程安全问题
从Servlet生命周期的四个方法可以知道,一个Servlet的构造方法和init()是只被调用一次的,而service()则被多次调用,由此可见Servlet是单实例多线程的。既然是多线程的,那么必然存在线程安全的问题,那么解决方案是什么呢?1.将使用共享数据(例如成员变量)的代码块利用synchronized关键字同步2.尽量避免使用成员变量,如果非用不可,那么必须将用到成员变量的原创 2017-04-01 13:53:13 · 149 阅读 · 0 评论 -
servlet——从地址栏输入地址到响应
昨天面试阿里,被问到一道http协议的问题(怎么根据输入的地址找到服务器),菜鸟君无奈的回答:不会回来之后痛定思痛,通过一个servlet请求来理解一下http请求是怎么请求的。1.源代码:public class ServletDemo extends HttpServlet{ @Override protected void doGet(HttpServletR原创 2017-04-01 13:56:44 · 5927 阅读 · 0 评论 -
JVM
JVM即Java虚拟机。Java有一个突出的特点就是平台无关性,而这一点正是由jvm实现的。一般高级语言在不同的平台运行的时候都需要至少编译成对应的目标文件,而java虚拟机的引入使java语言能够在各种平台上执行,只需要生成java虚拟机能运行的目标文件(字节码文件)即可,jvm会将字节码解释成具体平台的机器指令执行。jvm是操作系统中的一个进程,是java运行的容器,因此也有自己的生命原创 2017-04-01 15:56:54 · 276 阅读 · 0 评论 -
Collections,sort()实现原理
查看源码可以发现Collections.sort的实现是Arrays.sort,而Arrays.sort的实现是ComparableTimSort.sort,然后才到sort方法和它的定义,查看排序的主体部分也可以发现一个binarySort的方法,这是排序方法的实现,是通过调用Object的CompareTo进行比较的。每一步代码如下:public class ListSort {原创 2017-04-01 15:58:05 · 12895 阅读 · 1 评论 -
Properties配置文件
记得面试阿里的时候,提到配置文件,当时只是觉得配置文件很好用,至于为什么,小笨鸟表示不知道。今天单位要搞一个技术联谊,我们这些倒霉的小笨鸟肯定都是炮灰,所以还是多看一点是一点,话不多说,把学到的共享是一贯的准则,开始喽~一、Properties类既然有配置文件,那么就对应的拥有读取配置文件的类和方法,各种语言都不例外。java中有一个很重要的类,就是读取配置文件的类Properties类,原创 2017-05-16 09:34:34 · 491 阅读 · 0 评论 -
软件设计原则
昨天我们单位的答辩过去了,同事们针对各组提问的问题,归根到底,都围绕着设计原则,所以小笨鸟下来就查了,什么是设计原则撒,要怎么运用到我们的实际项目开发中呢?下面是我总结的前辈的经验,结合自己的理解,同样与君共勉~一、开闭原则昨天答辩的时候这个原则是我们小组提出来的,导师给我简单的说了一句:对扩展开放,对修改关闭!小笨鸟觉得不懂啊,后来仔细查查才知道,开闭原则说的也就是:在不修改原(原创 2017-05-17 10:12:52 · 688 阅读 · 0 评论 -
java的数据类型
java的数据类型分为4类8种,分别为1.整型:byte(1字节)、short(2字节)、int(4字节)和long(8字节);2.字符型:char(2字节);3.浮点型:float(4字节)、double(8字节),java中的浮点数默认为double类型的,如果想要定义为float类型的,要在数字后面加F或f,例如1.2f;4.布尔型:boolean,只允许值为true或者fa原创 2017-05-17 13:54:29 · 270 阅读 · 0 评论 -
对象相等之equals与==的区别
# 对象相等怎么样才算是对象相等?其实判断对象相等有两种:1.对象相等性:即堆中的两个不同对象在意义上相等,其实也就是两个对象在堆中的内容相等。2.引用相等性:即两个对象的引用指向堆中同一个对象,也就是两个对象在栈中的内容相等。知道了对象相等的两种判断标准,就来说一个equals与==的区别吧~# equals()方法假设有两个对象x,y,判断x.equals(y)有结果f原创 2017-08-09 10:27:53 · 1158 阅读 · 0 评论 -
String、StringBuffer
这个话题貌似是面试必问的问题了,我也认认真真的学习了一下,下面是我的一些愚见~1.String类代表了字符串,是常量,因此是不可变的。String来的源码中有这样一段代码:/** The value is used for character storage. */private final char value[];这是一个final修饰的不可变的数组,注释说明它是原创 2017-08-08 18:04:13 · 2719 阅读 · 0 评论 -
mysql+mybatis+Spring
这一章大概记录的会有些乱,因为是回忆形式的,也不够详细,但是会有一个链接,是我学习时候的笔记:http://note.youdao.com/noteshare?id=1dd4cf55fbb8e37a3a37babed96b0693一、mysql常用命令:1.mysql -u 用户名 -p密码 //例如:mysql -u root -p回车,提示输入密码,直接输入就行2.查看所原创 2017-10-24 16:44:14 · 503 阅读 · 0 评论 -
接口与内部类
接口与抽象类经常会做比较,但是要明白二者是不同的,接口是对动作的抽象,而抽象类是对根源的抽象,比如男人、女人可以定义一个抽象类人,而针对吃东西,人会吃东西,动物也会吃东西,那么可以将吃东西这个动作定义为接口。两者的区别和联系如下:1.接口和抽象类都不能实例化2.接口的实现是关键字implements,抽象类的继承用关键字extend3.接口中只能声明方法,不能有方法实现;抽象类中可以只声明方法,也...原创 2017-11-01 15:41:05 · 483 阅读 · 0 评论 -
java垃圾回收
java内存一般认为有堆内存和栈内存,而堆内存中的对象实例是JVM回收的主要对象。1.什么样的对象需要回收?对于堆内存中已经没有任何用处(没有任何引用指向的对象)的对象就是可以被回收的对象。2.怎么判断对象是“无用”的?2.1 引用计数算法基本思想:给对象添加一个引用计数器,每当有一个地方引用它,计数器就+1,当引用失效时,计数器值-1,任何时刻计数器值为0的对象就是不可能再被使用的。问题:循环引...原创 2017-10-30 14:26:54 · 373 阅读 · 0 评论 -
spring mvc+velocity+maven
在之前实习单位实习的时候,并不是用jsp,而是用的velocity,现在换了一个单位,一时用jsp不习惯,感觉velocity比jsp好用,就学起来吧~一、构建maven项目这个不赘述了,之前的博客有写过,大同小异原创 2017-10-12 15:14:17 · 598 阅读 · 0 评论 -
集合之Set
Set集合就像是一个罐子,它记不住添加元素的顺序,所以Set集合不允许元素重复。即Set集合的特性是*无序,不重复的*。# HashSetHashSet是采用hash算法来存储元素的集合,所以查找与存取的速度都比较快。HashSet底层是通过HashMap实现的:private transient HashMap map; // Dummy value to associ原创 2017-08-09 17:09:08 · 314 阅读 · 0 评论 -
for、for-each、迭代器
在jdk1.5之前,迭代集合的时候通常使用迭代器,而迭代数组的时候通常选择for循环,但是1.5之后,可以使用for-each循环,它摒弃了传统for循环的索引,或者在使用iterator时不用调用hasNext()就可以进行遍历。事实上,for-each内部还是用iterator,能够使用for-each循环的对象必须实现了Iterable接口,该接口中就包含了一个iterator方法,该方原创 2017-08-09 11:32:01 · 548 阅读 · 1 评论 -
集合之List
集合java的集合主要分类Collection接口和Map接口,Collection接口作为集合的根接口,实现了Iterable接口,表示集合可以进行for-each循环。继承树如下:注:Iterable与Iterator的比较:Iterable接口中有个名字叫做iterator的方法需要实现,而Iterator接口中有next()、hashNext()、remove()三个方法需原创 2017-08-09 11:18:11 · 261 阅读 · 0 评论 -
synchronized
上一篇中在提到StringBuffer类中操作字符串的方法都是用synchronized修饰的,所以是线程安全的,那么在这篇就介绍一个synchronized是什么,为什么它修饰了就是线程安全的。造成线程安全的诱因1.存在共享数据2.存在多条线程共同操作共享数据解决方案当存在多条线程操作共享数据时,只要保证在同一时刻有且只有一条线程能够操作该共享数据,其他线程之一必须等原创 2017-08-08 18:51:18 · 252 阅读 · 0 评论 -
java-重载与重写
重载与重写都是java多态性的一种表现,但是又有不同,从重写是父类与子类之间多态的一种表现,重载是一个类多态的表现。多说无益,直接上实例:原创 2017-07-31 19:07:44 · 223 阅读 · 0 评论 -
jar包和war的区别
不知道我是不是和很多初学者一样想弄明白这个问题,但是我是真的不知道它们是什么个区别,好在前辈们都愿意分享,所以我也分享一下前辈的分享以最终客户的角度来看,JAR文件就是一种封装,他们不需要知道jar文件中有多少个.class文件,每个文件中的功能与作用,同样可以得到他们希望的结果。除jar以外对于J2EE来说还有war和ear。区别见下表:JARWA转载 2017-05-19 11:28:10 · 494 阅读 · 0 评论 -
Maven构建生命周期
写在前面:在项目开发中,会遇见一个问题:在一个项目中引用另外一个项目,明明已经引用了相关的包,编译的时候依然提示没有该包,这时候我导师给我说,你install一下,然后我就照着做了,结果能够正常运行了,然后小笨鸟就想了,这是个什么鬼,今天终于瞅机会了解一下,又遇见这么一篇简单清晰的博客,毫不犹豫给大家分享啊~—————————————————————————————————————转载 2017-05-19 11:12:50 · 589 阅读 · 0 评论 -
Springz中对象的Scope
Spring中对象的Scope:1.在Spring中配置的bean,默认情况下是单例的2.在web应用中,持久层和业务层的对象一般都是单例的scope属性时用来限定bean的生命范围,也就是在什么范围内拿到的bean是相同的。在配置中的应用方式是这样的:其中scope默认是singleton,除此之外,还有request和session下面分别介绍一下:原创 2017-04-27 14:10:10 · 240 阅读 · 0 评论 -
使用JDBC将一个对象保存到数据库
今天在做项目的过程中遇见一个需求:我有一个角色对象Role,对应数据库中的表role,字段和对象的属性一一对应,现在要实现一个方法saveRole(Role role)。查了很多资料,但是也没有一个所以然,说是将对象序列化再进行存储的居多,但是具体的还是用这个方法实现,最后用了一个简单的方法:一一获取对象的属性,将属性存放进数据库Dao层的实现方法:Service层:原创 2017-04-26 17:28:37 · 9564 阅读 · 4 评论 -
Http和Https
清明小长假结束了,菜鸟君趁着大家休息的时候仍旧没有放松哦,整理了一下关于Http协议的相关知识,^_^一.为什么要用http协议?http协议是浏览器与服务器进行数据传输的格式规范,底层走的是TCP/IP协议。属于应用层协议。简单的说一下要用http的原因,可能会更深刻:比如说我们现在有很多的浏览器:谷歌、IE、搜狐等等,那么显然服务器不可能针对每一款浏览器的请求都有一个对应的解析原创 2017-04-05 08:44:31 · 334 阅读 · 0 评论 -
String、StringBuffer和StringBuilder
在学习各种面经的时候,看到不可避免的都会遇见同一个问题:String、StringBuilder、StringBuffer三者的区别,所以我这简单的整理一下:String:字符串常量,使用String定义了字符串之后就不可改变了StringBuilder:字符串变量,可变(线程不安全)StringBuffer:字符串变量,可变(线程安全)所以,如果在程序中只有少量的字符数据需要操作原创 2017-04-05 09:34:00 · 204 阅读 · 0 评论 -
经典算法--百钱买百鸡
百钱买百鸡:公鸡5元一只,母鸡3元一只,小鸡1元三只,现有100元钱怎么买100只鸡?思路:1.100元最多能买公鸡20只,母鸡33只2.在买的公鸡数不超过20,母鸡数不超过33的情况下,剩下的买小鸡3.当公鸡*5+母鸡*3+小鸡/3=100元且小鸡%3==0时,满足条件4.输出满足条件的各鸡数public class Hmhc { public static原创 2017-03-28 14:02:20 · 5028 阅读 · 0 评论 -
经典算法--韩信点兵
韩信点兵是一道古代的数学题,题意:韩信点兵不足百人,三人一排多1人,七人一排少2人,五人一排正好。问韩信带兵多少?/** * 韩信点兵: * 韩信带兵不足百人,3人一排多1人,7人一排少2人,5人一排刚好,问韩信总共带兵多少? * 思路: * 1.假设带兵总数为total,由条件知total<100 * 2.从0-100遍历符合条件的total值 * 3.条件:用total分别原创 2017-03-28 14:20:42 · 5863 阅读 · 0 评论 -
经典算法--斐波那契数列
斐波那契数列的特点:前两个数为1,从第三个数开始,每个数都是其前面两数之和算法实现:public class Fbo { public static void main(String[] args){ Scanner s=new Scanner(System.in); System.out.println("请输入你想查看的斐波那契数列:");原创 2017-03-28 14:58:54 · 562 阅读 · 0 评论 -
JAVA—继承
JAVA的继承比较好理解,但是用起来就不那么容易了,希望我的个人理解能够给大家些许帮助原创 2017-03-13 17:05:21 · 194 阅读 · 0 评论