随笔分类 - Java
Java相关的随笔
摘要:线程状态转换图如下: 1、新建(new):线程对象被创建后就进入了新建状态。如:Thread thread = new Thread();2、就绪状态(Runnable):也被称为“可执行状态”。线程对象被创建后,其他线程调用了该对象的start()方法,从而启动该线程。如:thread.start
阅读全文
摘要:ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQue
阅读全文
摘要:工作中,在排查线上问题时,有以下场景在不重新部署或重启服务的情况下,需要动态调整线上日志级别 1、线上有些日志打印过多干扰有用的日志,需要动态修改线上日志记录器的打印日志级别,调高一些日志级别,打印出更少的干扰日志 2、由于线上日志级别打印的相关有用日志太少,需要动态修改线上日志记录器的打印日志级别
阅读全文
摘要:@PathVariable和@RequestParam的区别 @PathVariable 是从请求的URL路径里面去获取变量 @RequestParam,是从请求里面获取参数 例如, 如下controller: @RequestMapping(value = "/test/{pathParam}")
阅读全文
摘要:做为SpringCloud Netflix服务套件中的一部分,springCloud eureka基于Netflix Eureka做了二次封装,默认提供WEB管理页面及服务治理。 为了确保在生产环境中的,eureka注册服务的元数据及WEB管理的信息安全,可以结合spring security增加安
阅读全文
摘要:最近才考虑数据库迁移,想起了之前做DTS踩过的那些坑。 DTS同步binlog,开始是使用binlog event + position方式,之后追加支持了GTID。 基于数据库迁移,比如从源A库迁移到源B库,包括但不限于数据库上云。 数据库迁移方案有两种场景: (1)、停机迁移方案【停服时间比较长
阅读全文
摘要:java 解析URL里的协议及参数工具类,解析URL中的主域名,并统一把协议修改成http或去掉协议 public class UrlDomainUtils { private static final Logger LOGGER = LoggerFactory.getLogger(UrlDomai
阅读全文
摘要:直接上工具类了,简单实用public class GsonUtils { private static Gson gson = null; static { if (gson == null) { gson = new GsonBuilder() .setDateFormat("yyyy-MM-dd
阅读全文
摘要:HttpClient本质是模拟浏览器去请求网址,获取请求response。 为了更真实的模拟浏览器,不被限制,需要设置一些请求header。 如果是爬虫的话,老虑的会更多些,爬取网站在HttpClient中设置Host,Referer,User-Agent,Connection,Cookie和爬取的
阅读全文
摘要:在Spring中,@Async这个注解用于标记的异步的方法。方法上一旦标记了这个方法,当其它线程调用这个方法时,就会开启一个新的线程去异步处理业务逻辑。 此注解的使用说明: 1、此注解可以用在方法上,也可以用在类上(如果用在类上,这个类中的所有的方法就是异步的) 2、使用此注解的方法的类对象,需要是
阅读全文
摘要:spring cloud关于feign client的调用 1、有些场景接口参数需要传对象列表参数 2、有些场景接口设置设置权限等约定header参数 3、有些场景虽然用的是feign调用,但并不会走eureka,比如调用外网www.baidu.com等的接口,需要进行多环境试配 示例如下: ser
阅读全文
摘要:最近几天,遇到一个莫名其妙的问题,每天几乎同一时段微服务自己跑着跑着就假死了,过几个小时就又自动恢复了。 通过对定时任务、网卡、内存、磁盘、业务日志的排查分析,只有磁盘的IO在假死前一段时间偏高,经查只要到业务访问高峰时段就会出现磁盘IO偏高的问题。 然后分析日志,也没有明显的异常日志,只是最近业务
阅读全文
摘要:eureka.instance.prefer-ip-address=true 或 eureka.instance.prefer-ip-address=trueeureka.instance.instance-id=${spring.cloud.client.ipAddress}:${server.p
阅读全文
摘要:今天遇到一个Eureka集群的一个坑。 问题现场类似是这样的:两台Eureka组成的服务注册中心集群,两台服务提供方server1、server2,两个服务调用方client1、client2。 正常的情况下: client1和client2通过服务中心获取的服务提供方的注册的元数据信息,然后本地缓
阅读全文
摘要:最近在看一些项目设计方面的文章,涉及到了工作流技术,于是了解一下。1、概念 工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”
阅读全文
摘要:今天,突然遇到个奇怪的问题,tomcat上传图片时好时坏,经查线上四台服务有一台服务器硬盘满了。 解决一下硬盘空间的问题,有好使了,那么图片上传通过流写到远程对象存储服务中,并没有落盘和硬盘满有哪些关系呢? 经分析,在tomcat中上传文件,会在temp目录中存放临时文件,文件上传后也会自动删除这个
阅读全文
摘要:关于多线程的线程数的确定,最近研读过几篇paper,在此做一下笔记,方便使用时翻看。 1、《Java 虚拟机并发编程》中介绍 就是说:线程数 = CPU的核心数 * (1 - 阻塞系数) 另一篇:《Java Concurrency in Practice》即《java并发编程实践》,给出的线程池大小
阅读全文
摘要:分几步骤: 1、通过top,查出占用CPU过高的java进程 ,比如: pid :6666 2、通过ps -mp 6666 -o THREAD,tid,time| sort -n -k1 -r 查看此进程占用线程的情况,比如查到占用CPU异常高的线程的线程Id :8888 以上两步,可以直接通过to
阅读全文
摘要:CMS(Concurrent Mark-Sweep)是以牺牲吞吐量为代价来获得最短回收停顿时间。对于要求服务器响应速度的应用上,这种垃圾回收器非常适合。在启动JVM参数加上-XX:+UseConcMarkSweepGC ,这个参数表示对于老年代的回收采用CMS。CMS采用的基础算法是:标记—清除。
阅读全文