JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat等小
package com.lxht.test;import java.util.Calendar;import java.util.Date;import java.util.Timer;import java.util.TimerTask;/** * Created by y
package com.lxht.test;import com.lxht.emos.system.seqs.service.SystemSeqsService;import java.util.concurrent.locks.Condition;im
创建和回收内存gc时使用!
1.mybatis4种加载配置文件的方式: (1)相对应类资源路径的引用,属性关键字resource:
如:public class BeanAwareTest implement ApplicationContextAware {private static ApplicationContext applicationContext; public void setApplicationContext(ApplicationContext applicationContext) {Sprin
1.为什么要使用spring
正常情况上,我们访问上面的http://localhost:8000/,在配置了messageConverter后,如下图所示,返回内容类似于如下内容:返回值所下所示: {"createDate":"2018-05-15 14:09:05","loginName":"","operType":"add","userId":101,"userName&am
Gc moduleNew generation Old generation-XX:+UseSerialGC串行gcMark-sweep-compact-XX:+UseParallelGC并行gcParallel mark sweep GC-XX:+UseconcMa
1.DSL : domain specfic language2.分词分析经历三步: (1)词汇识别; (2)分词; (3)去掉无语义的词;3.CAP; consistancy avaibility,partition tolerance;4.shard的计
java的内
表中; 因此所有obj.wait()都需要写在 synchronized的方法中,或代码块中,例如:
Java可用ThreadLocal的set方法存储当前Thread的一些私有变量或数据,实现原理即为将当前Thread对象做为key,调用set方法,将value存入map对象中,get时根据当前Thread对象取到对应的value值,因此各个Thread只能取到自己的value。inheritableThreadLocals中的对象复制到当前Thread
我们在进行Java并发,有时需要等某个其它线程(如名称为thA)执行完成后,才继续执行当前线程的后继工作,这时,我们可以通过在当前线程中执行thA.join(),这时当前线程即会在等待thA线程执行完毕后,继续后继代码的执行。 那么这其中的原理是什么呢,经过对相应源码的分析, 发现实现原理
有时间,我们上传至远程服务器的java程序代码,可能会有一定运行时问题,但在本机测试时没有问题!这时最想做的就是调试一下远程服务器上的代码,但由于环境条件我们一般都无法直接在远程服务器上进行代码的调试,基于以上原因JAVA的jvm规范为我们提供了一个JPDA(JAVA platform debug archicture),制定了相关的调试规范,该规范就定义了远程调试java代码的规
ReentrantReadWriteLock分为读和写锁:读与读锁不阻塞;读与写锁阻塞;写与写锁阻塞;package com.lxht.test;import java.util.concurrent.locks.ReentrantReadWriteLock;/** * 测试ReentrantReadWriteLock */public class TestReenTrantWriteReadLo
package com.lxht.test;public class TestUnCaughtException { public static void main(String[] args) { //所有的线程发生异常均会进入MyUncaughtException,包括main线程 Thread.setDefaultUncaughtExceptionHandl
x我们先把对象头(官方叫法为:Mark Word)的图示如下(借用了网友的图片): 通过上面的图片,
/public class TestSerial { public static void main(String[] args) { SerialObject seObject = new SerialO
(1)首先第一步通过top -Hp proccessId,看对应的java进程中那些线程正在执行,及占用的cpu和memory的比例,如下图所示(PID列即为线程id) 查 (2) printf "%x\n" PID 获取对应的pid的16进制, 如下所示:[root@emos-centos DEV]# printf "%x\n" 95132529 (3) jst
Spring的aop主要使用到了代理技术,对bean对象做代理,主要目的方便为bean对象增加一个额外的控制功能,如增加事务控制等,Spring的Bean管理主要用到了两种代理技术,一种是jdk提供的代理,另一种是引入cglib等jar进行代理管理,这2类代理主要的区别如下: jdk代理要求bean的class必须实现了接口,这样没有实现接口的类
jdk1.7中
springboot的参数属性配置使用application.properties文件进行配置,对于多环境配置时,可以在application.properties中配置参数:spring.profiles.active=dev,来表示开发环境,这样对应的开发环境的参数属性可以配置在文件application-dev.properties中;目录结构及内容类似下图所示: 那么
使用java instrument 动态调试在jvm中运行中的java类,及给class path动态增加jar;使用到java agent和javassist技术
今天在idea中以debug模式启动项目时,项目一直处于启动状态,无法正常启动完毕;表现为: 而以run方式启动项目,则可以正常启动;这说明debug模式下有什么特殊的配置造成启动无法正常,百度后,发现有人也遇到了类似的情况,主要原因是由于在方法上打了断点造成的,把方法上的断点去掉即可;
x锁;...
关于并行和并发的比较容易混淆: 并行表示多个任务一起执行; 并发表示多个任务交替执行; 在服务器只有一个cpu的情况下,多个线程要同时执行时,其实线程是交替获取cpu的时间片,交替来执行,这种情况即为并发;  
package com.leasehouse;import java.util.concurrent.CountDownLatch;public class TestCountDownLatch { static CountDownLatch downLatch = new CountDownLatch(2); public static void main(String[] arg
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号