随笔分类 - java
摘要:1.top命令查看线程占据的CPU 注意:上面行的cpu是多个内核的平均CPU,不可能超过100% 下面的cpu是每个进程实际占用的cpu,可能超过100% 备注:查看多个内核cpu,只需要在输入top后,输入1 2.查看进程下每个线程的资源使用情况 top -Hp pid(进程最高的那个进程ID)
阅读全文
摘要:1.打包版本区别 SNAPSHOT 快照版本(开发阶段,不稳定,容易出现bug)RELEASE 正式版本(外部依赖使用阶段,稳定,很少出现bug)Tag :标记每次代码提交的版本(比较稳定,类似分支) 2.release plugin 插件的作用 ①检查本地有无未提交的代码 ②检查项目是否有快照版本
阅读全文
摘要:前言 我们都知道可以使用SpringBoot快速的开发基于Spring框架的项目。由于围绕SpringBoot存在很多开箱即用的Starter依赖,使得我们在开发业务代码时能够非常方便的、不需要过多关注框架的配置,而只需要关注业务即可。 例如我想要在SpringBoot项目中集成Redis,那么我只
阅读全文
摘要:Java每个对象都有一把锁,当前进程使用对象锁1,没有释放该锁,又想要去获取另一把对象锁2,而对象锁2被另外一个线程持有,没有释放,这就很容易出现死锁 1.死锁实例 分析:线程1持有object1的锁,同时又想去获取object2的锁,而此时线程2又持有object2的锁没有释放,又想去获取obje
阅读全文
摘要:1.Java线程状态 1.1 线程主要状态 ①初始(NEW):新创建了一个线程对象,但还没有调用start()方法。②运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的成为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start
阅读全文
摘要:在使用集合的过程中,我们经常会有遍历集合元素,删除指定的元素的需求,而对于这种需求我们往往使用会犯些小错误,导致程序抛异常或者与预期结果不对,本人很早之前就遇到过这个坑,当时没注意总结,结果前段时间又遇到了这个问题,因此,总结下遍历集合的同时如何删除集合中指定的元素; 1.错误场景复原 或者如下代码
阅读全文
摘要:在Java程序的单元测试中常用的mock工具有Mockito和EasyMock。但是这两种mock工具都无法实现对静态、final、私有方法或类的mock。因此有了功能强大的PowerMock工具。PowerMock并不是一个独立、全新的工具而是在Mockito和EasyMock的基础上进行的扩展,
阅读全文
摘要:在Java应用开发过程中,我们经常会遇到OutOfMemoryError异常,而不知道是啥原因,此时就要知道Java的内存模型啦,找了些资料,把Java内存模型总结一下;Java的内存结构,也就是运行时的数据区域;Java虚拟机在执行Java程序的过程中,会把它管理的内存划分为几个不同的数据区域,这
阅读全文
摘要:实现定时任务线程有如下三种方式: ①普通线程死循环 ②使用定时器timer ③使用定时调度线程池ScheduledExecutorService
阅读全文
摘要:1.服务提供者1.1服务注册服务提供者启动时,会通过rest请求的方式将自己注册到Eureka Server上,同时带上了自身服务的一些元数据信息。Eureka Server接收到请求后,将元数据信息存储在一个双层结构的Map中,其中与第一层的key是服务名,第二层的key是具体的服务实例名eure
阅读全文
摘要:1.基础架构 eueka按逻辑上可以划分为3个模块,eureka-server,service-provider,service-consumereureka-server:服务端,提供服务注册和发现eureka-client-service-provider:服务端,服务提供者,通过http re
阅读全文
摘要:1.基本概念 日志门面(接口):commons logging ; slf4j ; 日志具体实现:log4j ; logback(Spring 系列在使用) ; log4j2(添加了异步logger的实现,提高了性能) 2.具体使用(门面:slf4j 实现 : log4j2) ①添加maven依赖
阅读全文
摘要:Runtime.getRuntime().addShutdownHook(shutdownHook); 说明:这个方法的意思就是在jvm中增加一个关闭的钩子,当jvm关闭的时候,会执行系统中已经设置的所有通过方法addShutdownHook添加的钩子,当系统执行完这些钩子后,jvm才会关闭。所以这
阅读全文
摘要:线程之间需要一些协调通信,来共同完成一件任务。Java多线程中,线程之间通信最常用的两个方法是wait()与notify() 使用wait()与notify()实现线程间的通信,需注意: ①wait()与notify()必须配合synochnized关键字使用 ②wait()会释放锁,notify(
阅读全文
摘要:hystrix支持N个请求自动合并为一个请求,这个功能在有网络交互的场景下尤其有用,比如每个请求都要网络访问远程资源,如果把请求合并为一个,将使多次网络交互变成一次,极大节省开销。重要一点,两个请求能自动合并的前提是两者足够“近”,即两者启动执行的间隔时长要足够小,默认为10ms,即超过10ms将不
阅读全文
摘要:hystrix支持将一个请求结果缓存起来,下一个具有相同key的请求将直接从缓存中取出结果,减少请求开销。要使用hystrix cache功能 第一个要求是重写getCacheKey(),用来构造cache key; 第二个要求是构建context,如果请求B要用到请求A的结果缓存,A和B必须同处一
阅读全文
摘要:hystrix提供了两种隔离策略:线程池隔离和信号量隔离。hystrix默认采用线程池隔离。 1.线程池隔离 不同服务通过使用不同线程池,彼此间将不受影响,达到隔离效果。 例如: 我们可以通过andThreadPoolKey配置使用命名为ThreadPoolTest的线程池,实现与其他命名的线程池天
阅读全文
摘要:①配置HystrixCommand HystxixCommand支持如下的配置: GroupKey:该命令属于哪一个组,可以帮助我们更好的组织命令。 CommandKey:该命令的名称 ThreadPoolKey:该命令所属线程池的名称,同样配置的命令会共享同一线程池,若不配置,会默认使用Group
阅读全文
摘要:Hystrix使用fallback机制很简单,继承HystrixCommand只需重写getFallback(),继承HystrixObservableCommand只需重写resumeWithFallback(),比如上篇文章的HelloWorldHystrixCommand加上下面代码片段: f
阅读全文
摘要:一、hystrix基本介绍 Hystrix(https://github.com/Netflix/Hystrix)是Netflix(https://www.netflix.com/global)的一个开源项目,主要作用是通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错
阅读全文