
java学习
文章平均质量分 62
JonyShan
这个作者很懒,什么都没留下…
展开
-
进程和线程区别发现一个很有趣的说法
可以把进程比作一个车间,整个车间可以生产某个产品。而车间里的的工人相当于线程,一个车间可以容纳若干工人也就是进程和线程的关系,假设车间有一个厕所,这个厕所就相当于进程的一个空间,为了防止冲突在厕所门上加上一把锁,当有人在厕所里时其他人必须等待。原创 2017-03-17 22:56:17 · 297 阅读 · 0 评论 -
java 大文件以二进制保存到数据库
一、创建表 oracle: create table baoxiandan ( id number(20) not null, fileName varchar2(200) not null, content blob, primary key(id) ); create sequence seq_baoxiandan; 二、Hibe原创 2017-04-11 15:32:46 · 1736 阅读 · 0 评论 -
关于java的深克隆与浅克隆
1.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。 ⑵深复制(深克隆) 被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有转载 2017-04-02 22:29:06 · 263 阅读 · 0 评论 -
写出float x 与“零值”比较的if语句
写出float x 与“零值”比较的if语句请写出 float x 与“零值”比较的 if 语句: const float EPSINON = 0.00001; if ((x >= - EPSINON) && (x 不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“EPSINON应该是一个很小的值吧 因为计算机在处理浮点数的时候是有误差的转载 2017-03-26 23:08:22 · 684 阅读 · 0 评论 -
java语言复制数组的四种方法
来源于牛客网的一道选择题:JAVA语言的下面几种数组复制方法中,哪个效率最高?A.for循环逐一复制B.System.arraycopyC.System.copyofD.使用clone方法效率:System.arraycopy > clone > Arrays.copyOf > for循环1、System.arraycop转载 2017-03-26 23:17:50 · 325 阅读 · 0 评论 -
又一个因为延迟加载出现的错误Hibernate:could not initialize proxy - no Session
今天利用Hibernate写一个Demo的时候遇到个错误解决,字面意思是没有session,郁闷了老半天,终于发现问题我要查询的数据与其他表有多对一的关联关系,但是延迟加载设置为lazy,也就是说当我使用这个关联数据时才会去查询,而这个时候session早已关闭,就出现了上面的错误。解决方法有三个: 1、把lazy设成false。这个是最简单的办法,个人认为也是比较笨的方法原创 2017-04-14 15:13:41 · 296 阅读 · 0 评论 -
以Blob形式存取图片到Oracle
将图片存入Oracle数据库 public int writeBlob(String path,String id) throws SQLException, IOException{ Connection conn = null; PreparedStatement ps =null; conn = getConnetion();原创 2017-04-19 09:27:29 · 2754 阅读 · 0 评论 -
线程池,这一篇或许就够了
为什么用线程池创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率>例如:>>记创建线程消耗时间T1,执行任务消耗时间T2,销毁线程消耗时间T3>>如果T1+T3>T2,那么是不是说开启一个线程来执行这个任务太不划算了!>>正好,线程池缓存线程,可用已有的闲置线程来执行新任务,避免了T1+T3带来的系统开销线程并发数量过多,抢占系统转载 2017-04-20 09:32:40 · 294 阅读 · 0 评论 -
一个不错的线程讲解系列,记录下来以便学习(最近研究多线程以及并发)
http://www.cnblogs.com/skywang12345/p/java_threads_category.html转载 2017-04-26 11:33:37 · 327 阅读 · 0 评论 -
for循坏遍历list过程中remove某个元素出错,从源码角度解释
123456789101112public class Test { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add(2); Iterator iterator = list.iterator(); while(it转载 2017-04-24 18:32:11 · 505 阅读 · 0 评论 -
利用jstack查看线程运行状态
首先一段代码public class P173ThreadState { public static void main(String[] args) { new Thread(new TimeWaiting(),"TimeWaitingThread").start(); new Thread(new Waiting(),"WaitingThread").start(); //原创 2017-04-26 23:13:39 · 7024 阅读 · 1 评论 -
线程退出的几种方式
使用volatile类型的域来保存取消状态因为volatile本身特性,每次修改都会立刻刷新到缓存中,这样就可以保证线程任务可以及时看到下面代码示例,在线程运行一秒后取消任务:public class PrimeGenerator implements Runnable{ private final List primes = new ArrayList<>(); private原创 2017-12-31 00:04:09 · 5878 阅读 · 0 评论 -
Class.newInstance与同new的到对象的区别
先说一下区别1、使用newInstance可以解耦。使用newInstance的前提是,类已加载并且这个类已连接,这是正是class的静态方法 forName()完成的工作。newInstance实际上是把new 这个方式分解为两步,即,首先调用class的加载方法加载某个类,然后实例化。2、newInstance: 弱类型。低效率。只能调用无参构造。 ne原创 2018-01-26 23:11:12 · 10716 阅读 · 5 评论 -
关于Java中方法调用时参数的传递
1.问题说明 在C++中,函数调用时有传值调用和传址调用两种方式,但在Java中只有传值调用一种方式。Java中的方法参数为那几种基本数据类型的情况跟C++中一样,传入的只是变量的拷贝。而当参数类型为类对象时,则有可能会误以为是传址调用。2.测试用例 现在此举出例子并加以说明 public class AClass {转载 2017-03-16 11:44:26 · 1224 阅读 · 0 评论 -
同步方法和同步代码快
今天遇到一题关于同步方法和同步代码快的问题,之前没看到过所以查了一下资料,总结了一下在这里记录一下吧,以便自己日后学习原问题是:同步方法和同步代码块的区别。同步方法public synchronized void method1(){}同步代码块,其中lockObject可以为任何不为null值的对象public void method2(){ synchronized (lock原创 2017-03-15 21:39:58 · 625 阅读 · 0 评论 -
Iterator和ListIterator
在使用java集合的时候,都需要使用Iterator。但是java集合中还有一个迭代器ListIterator,在使用List、ArrayList、LinkedList和Vector的时候可以使用。这两种迭代器有什么区别呢?下面我们详细分析。这里有一点需要明确的时候,迭代器指向的位置是元素之前的位置,如下图所示:这里假设集合List由四个元素List1、List2、List3和Li转载 2017-03-18 11:05:20 · 369 阅读 · 0 评论 -
Java HashMap的工作原理
面试的时候经常会遇见诸如:“java中的HashMap是怎么工作的”,“HashMap的get和put内部的工作原理”这样的问题。本文将用一个简单的例子来解释下HashMap内部的工作原理。首先我们从一个例子开始,而不仅仅是从理论上,这样,有助于更好地理解,然后,我们来看下get和put到底是怎样工作的。我们来看个非常简单的例子。有一个”国家”(Country)类,我们将要用Country转载 2017-03-18 11:29:31 · 214 阅读 · 0 评论 -
Java中Comparable和Comparator接口区别分析
Comparable 简介Comparable 是排序接口。若一个类实现了Comparable接口,就意味着“该类支持排序”。 即然实现Comparable接口的类支持排序,假设现在存在“实现Comparable接口的类的对象的List列表(或数组)”,则该List列表(或数组)可以通过 Collections.sort(或 Arrays.sort)进行排序。此外,“实现Compar转载 2017-03-18 12:07:48 · 373 阅读 · 0 评论 -
Java中堆内存和栈内存详解
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器转载 2017-03-18 13:32:22 · 383 阅读 · 0 评论 -
实例方法和类方法
前面提到成员变量可分为实例变量和类变量。同样,类中的方法也可分为实例方法和类方法。在方法前面加上static就成了类方法,例如:[java] view plain copypublic class Example { float a, b; void sum(float x, float y)转载 2017-03-18 16:43:17 · 576 阅读 · 0 评论 -
初始化类时的加载顺序
1.父类静态代码块 ( java虚拟机加载类时,就会执行该块代码,故只执行一次)2 .子类静态代码块 ( java虚拟机加载类时,就会执行该块代码,故只执行一次)3. 父类属性对象初始化4.父类普通代码块(每次new,每次执行 )5. 父类构造函数(每次new,每次执行)6.子 类 属性对象初始化7.子类普通代码块(每次new,每次执行原创 2017-03-18 17:09:00 · 284 阅读 · 0 评论 -
java中自动拆装箱
4.2 自动装箱和拆箱基本数据(Primitive)类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。虽然为您打包基本数据类型提供了方便,但提供方便的同时表示隐藏了细节,建议在能够区分基本数据类型与对象的差别时再使用。4.2.1 autoboxing和unboxing在Java中,所有要处理的东西几乎都是对象(Object),例如之前所转载 2017-03-18 17:29:05 · 360 阅读 · 0 评论 -
自动拆装箱
关于拆装箱可看:http://write.blog.youkuaiyun.com/postlist下面代码的打印结果:public class Test2{ public void add(Byte b) { b = b++; } public void test() { Byte a = 127; Byte原创 2017-03-18 17:30:24 · 337 阅读 · 0 评论 -
多线程学习
写在前面的话:此文只能说是java多线程的一个入门,其实Java里头线程完全可以写一本书了,但是如果最基本的你都学掌握好,又怎么能更上一个台阶呢?如果你觉得此文很简单,那推荐你看看Java并发包的的线程池(Java并发编程与技术内幕:线程池深入理解),或者看这个专栏:Java并发编程与技术内幕。你将会对Java里头的高并发场景下的线程有更加深刻的理解。目录(?)[-]一扩展java转载 2017-03-09 13:18:52 · 231 阅读 · 0 评论 -
匿名内部类到底可不可以继承类或实现接口? Interface A{ public void method(); } 这时你可以写一个如下的语句得到接口A的实现类的对象 A a=new
前几天网上看到关于内部类的知识,说道内部类是否可以继承类或实现接口,给的答案是可以而且必须要继承一个内部类或接口,但是今天又看到说不可以。这就让我很迷惑了,所以又继续查找相关资料,最终搞清楚了,其实这两种说都没错。首先来看看匿名内部类怎么实现, Interface A{ public void method();}这时你可以写一个如下的语句得到接口A的实现类的对象原创 2017-03-12 11:59:33 · 537 阅读 · 0 评论 -
IoC的概念——看到一篇写的通俗易懂文章
IOC(控制反转:Inverse of Control)《墨攻》有一个场景:当刘德华所饰演的墨者革离到达梁国都城下,城上梁国守军问道:“来者何人?”刘德华回答:“墨者革离!”我们不妨通过一个Java类为这个“城门叩问”的场景进行编剧,并借此理解IoC的概念:public class MoAttack { public void cityGateAsk(){ L转载 2017-03-13 16:21:58 · 288 阅读 · 0 评论 -
junit单元测试的java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing问题解决办法
用junit进行单元测试的时候,突然就出现了以下错误:java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(Class转载 2017-04-10 17:54:17 · 934 阅读 · 0 评论 -
小心linux自动杀死进程的操作(kill -9 pid)
这两天部署在linux上的程序老是莫名其妙的自动停止而且没有任何日志打印,纠结好长时间后发现linux的message.log日志中有一句,如下:因为内存占用过多会杀死一个占用最多的进程Apr 2 21:44:01 shanyao kernel: Out of memory: Kill process 14268 (java) score 378 or sacrifice childApr ...原创 2018-04-02 22:47:25 · 10143 阅读 · 3 评论