Java
文章平均质量分 78
无名潇洒
这个作者很懒,什么都没留下…
展开
-
log4j2日志入库
log4j2.xml<?xml version="1.0" encoding="UTF-8"?><Configuration> <!-- 文件输出格式 --> <Properties> <Property name="LOG_HOME">logs/</Property> <propert...原创 2019-11-15 11:10:23 · 615 阅读 · 0 评论 -
Java单例模式
// 饿汉式class Preson{ private String name; public String setName(String name) { return this.name = name; } public String getName() { return name; } Preson() {}; private static Preson ...原创 2019-11-15 11:02:14 · 155 阅读 · 0 评论 -
一个对象如何实现多次setter并保证前面setter的值不会覆盖前面的值
第一步:实体类实现(Cloneable);并重新clone()public class Student implements Cloneable { private String name; private Integer age; @Override public Object clone() throws CloneNotSupportedExc...原创 2019-11-14 15:55:57 · 635 阅读 · 0 评论 -
java中对象非空判断
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...原创 2019-11-14 15:35:46 · 2382 阅读 · 0 评论 -
Java语言健壮性的理解
1、Java语言是一种强类型语言,即在编译和运行时进行大量的类型检查,防止不匹配的数据类型的发生2、Java语言设计有自动收集垃圾功能,防止了内存分配的错误3、Java语言设计了异常处理机制原创 2018-02-25 09:12:49 · 7572 阅读 · 0 评论 -
Java如何计算某个对象占用的内存数
1、预估法:对象属性中根据基本类型算,将结果相加,但要考虑引用指针占用的空间2、JDK中Instrumentation接口提供了getObjectSize(Object objectToSize)方法可以计算,3、第三方工具类:https://github.com/DimitrisAndreou/memory-measurer4、使用jconsole监控虚拟机内存,但无法精确到某对象的原创 2018-02-25 09:13:46 · 1282 阅读 · 0 评论 -
GC是什么?为什么要有GC?
Java GC(GarbageCollection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,在使用JAVA的时候,一般不需要专门编写内存回收和垃圾清理代码。这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制。 电脑的内存大小的不变的,当我们使用对象的时候,如使用New关键字的时候,就会在内存中生产一个对象,但是我们在使用JAVA开发的时候,当一个对象使用完毕原创 2018-02-25 09:15:07 · 802 阅读 · 0 评论 -
Transient是干嘛的
Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用 serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。当一个对象被序列化的时候,transient型变量的值不包括在序列化的表示中,然而非transient型的变量是被包括进去的。原创 2018-02-25 09:16:03 · 318 阅读 · 0 评论 -
java线程池的作用
现在服务器端的应用程序几乎都采用了“线程池”技术,这主要是为了提高系统效率。因为如果服务器对应每一个请求就创建一个线程的话,在很短的一段时间内就会产生很多创建和销毁线程动作,导致服务器在创建和销毁线程上花费的时间和消耗的系统资源要比花在处理实际的用户请求的时间和资源更多。线程池就是为了尽量减少这种情况的发生。 下面我们来看看怎么用Java实现一个线程池。一个比较简单的线程池至少应包含线...原创 2018-02-25 09:09:31 · 684 阅读 · 0 评论 -
sleep和wait有什么区别?
对时间的指定。 1,sleep方法必须指定时间。 2,wait方法有重载形式,可以指定时间,也可以不指定时间。对于执行权和锁的操作.: 1,sleep():释放执行权,不释放锁,因为肯定能醒,肯定可以恢复到临时阻塞状态。 2,wait():释放执行权,释放锁,因为wait不释放锁,如果没有时间指定,那么其他线程都进行不了同步中,无法将其唤醒。sleep sleep方法是使线程停止一段时间的方...原创 2018-02-24 22:35:28 · 237 阅读 · 0 评论 -
事务的ACID特性
原子性(A) 所谓的原子性就是说,在整个事务中的所有操作,要么全部完成,要么全部不做,没有中间状态。对于事务在执行中发生错误,所有的操作都会被回滚,整个事务就像从没被执行过一样。一致性(C) 事务的执行必须保证系统的一致性,就拿转账为例,A有500元,B有300元,如果在一个事务里A成功转给B50元,那么不管并发多少,不管发生什么,只要事务执行成功了,那么最后A账户一定是450元,B账...原创 2018-02-25 15:41:28 · 301 阅读 · 0 评论 -
什么是高并发?与多线程有什么区别?你的项目有高并发问题吗?是如何解决的?
高并发是指较多用户同时访问服务。高并发可以由多线程实现,但是多线程不代表就是高并发。在会计汇有个投票调查项目,是和财政部合作的,会计人员进行填写完调查结果后,将获得5个学分。通过短信向全国500万会计人员发送短信,这时高峰期会有10万多用户同时在线答题。解决办法是:1、使用了LVS + Nginx四台机器进行负载均衡2、用了Spring + Redis实现4台Tomcat的Session共享3、答...原创 2018-02-25 10:29:01 · 7685 阅读 · 0 评论 -
JVM调优
JVM调优的重点是垃圾回收(gc,garbage collection)和内存管理。 垃圾回收的时候会导致整个虚拟机暂停服务。 因此,应该尽可能地缩短垃圾回收的处理时间。设置堆大小 提高最大可用内存。更具服务器的内存控制基本上没存总量的二分之一多。设置 年老代年轻代大小 sun公司推荐比值为3/8 年老代比年轻代设置每个线程的堆栈大小 sun 推荐 5.0 以上推荐大小设置为1...原创 2018-02-27 14:34:33 · 274 阅读 · 0 评论 -
StringBuffer StringBuilder String 区别
String 字符串常量,值不能改变 StringBuffer与Stringbuilder是字符串变量,值可以改变,他们都采用append()追加字符串,所以效率高于String StringBuilder执行效率高于StringBuffer高于String,所以StringBuilder是非线程安全的,StringBuffer是线程安全的...原创 2018-02-27 11:45:00 · 249 阅读 · 0 评论 -
Java内存模型是什么?
Java内存模型规定和指引Java程序在不同的内存架构、CPU和操作系统间有确定性地行为。它在多线程的情况下尤其重要。Java内存模型对一个线程所做的变动能被其它线程可见提供了保证,它们之间是先行发生关系。这个关系定义了一些规则让程序员在并发编程时思路更清晰。比如,先行发生关系确保了:线程内的代码能够按先后顺序执行,这被称为程序次序规则。对于同一个锁,一个解锁操作一定要发生在时间上后发生的另一个锁...原创 2018-02-26 09:50:55 · 688 阅读 · 0 评论 -
Java中活锁和死锁有什么区别?
活锁和死锁类似,不同之处在于处于活锁的线程或进程的状态是不断改变的,活锁可以认为是一种特殊的饥饿。一个现实的活锁例子是两个人在狭小的走廊碰到,两个人都试着避让对方好让彼此通过,但是因为避让的方向都一样导致最后谁都不能通过走廊。简单的说就是,活锁和死锁的主要区别是前者进程的状态可以改变但是却不能继续执行。...原创 2018-02-26 09:52:32 · 1891 阅读 · 0 评论 -
怎么检测一个线程是否拥有锁?
在java.lang.Thread中有一个方法叫holdsLock(),它返回true如果当且仅当当前线程拥有某个具体对象的锁。原创 2018-02-26 09:53:17 · 2671 阅读 · 0 评论 -
Java中synchronized 和 ReentrantLock 有什么不同?
Java在过去很长一段时间只能通过synchronized关键字来实现互斥,它有一些缺点。比如你不能扩展锁之外的方法或者块边界,尝试获取锁时不能中途取消等。Java 5 通过Lock接口提供了更复杂的控制来解决这些问题。 ReentrantLock 类实现了 Lock,它拥有与 synchronized 相同的并发性和内存语义且它还具有可扩展性...原创 2018-02-26 09:53:45 · 469 阅读 · 0 评论 -
Java中的ReadWriteLock是什么?
一般而言,读写锁是用来提升并发程序性能的锁分离技术的成果。Java中的ReadWriteLock是Java 5 中新增的一个接口,一个ReadWriteLock维护一对关联的锁,一个用于只读操作一个用于写。在没有写线程的情况下一个读锁可能会同时被多个读线程持有。写锁是独占的,你可以使用JDK中的ReentrantReadWriteLock来实现这个规则,它最多支持65535个写锁和...原创 2018-02-26 09:55:22 · 362 阅读 · 0 评论 -
多线程中的忙循环是什么?
忙循环就是程序员用循环让一个线程等待,不像传统方法wait(), sleep() 或 yield() 它们都放弃了CPU控制,而忙循环不会放弃CPU,它就是在运行一个空循环。这么做的目的是为了保留CPU缓存,在多核系统中,一个等待线程醒来的时候可能会在另一个内核运行,这样会重建缓存。为了避免重建缓存和减少等待重建的时间就可以使用它了。...原创 2018-02-26 09:56:02 · 10561 阅读 · 0 评论 -
如何实现字符串的反转及替换?
可用字符串构造一StringBuffer 对象,然后调用StringBuffer 中的reverse方法即可实现字符串的反转,调用replace 方法即可实现字符串的替换。原创 2018-02-26 09:57:33 · 559 阅读 · 0 评论 -
Java如何避免死锁?
Java多线程中的死锁 死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。这是一个严重的问题,因为死锁会让你的程序挂起无法完成任务,死锁的发生必须满足以下四个条件:互斥条件:一个资源每次只能被一个进程使用。请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。不剥夺条件:进程已获得的资源,在末使用完之前,...原创 2018-02-26 09:51:56 · 462 阅读 · 0 评论 -
Java精确计时
一般的java运输计时代码long starTime=System.currentTimeMillis();//运算代码long endTime=System.currentTimeMillis();long Time=endTime-starTime;System.out.println(Time);如果运算时间很短的时候,currentTimeMillis()是1970年1月1日...原创 2018-02-26 22:30:42 · 2956 阅读 · 0 评论 -
年轻代、年老代和持久代
年轻代(Young Generation)、年老代(Old Generation)和持久代(Permanent Generation)。其中持久代主要存放的是Java类的类信息,与垃圾收集要收集的Java对象关系不大。年轻代和年老代的划分是对垃 圾收集影响比较大的。年轻代 所有新生成的对象首先都是放在年轻代的。年轻代的目标就是尽可能快速的收集掉那些生命周期短的对象。年...原创 2018-02-27 11:27:11 · 602 阅读 · 0 评论 -
Java垃圾回收机制、GC
说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来。在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理。顾名思义,垃圾回收就是释放垃圾占用的空间一、如何确定某个对象是“垃圾”? 在这一小节我们先了解一个最基本的问题:如果确定某个对象是“垃圾”?既然垃圾收集器的任务是回收垃圾对象所...原创 2018-02-27 11:35:35 · 272 阅读 · 0 评论 -
如何解决POST请求中文乱码问题,GET的又如何处理呢?
在web.xml中加入:<filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> &l...原创 2018-02-26 09:45:42 · 596 阅读 · 0 评论