2019年12月12日
摘要: 背景 今天看了深入java虚拟机中的虚拟机类加载机制一章,现对主要知识点进行总结和摘抄 类加载的时机 类的整个生命周期包含七个阶段:加载、验证、准备、解析,初始化、使用和卸载。其中验证、准备和解析阶段又可以统称为连接。 在上述这7个阶段中,加载、验证、准备、初始化和卸载这5个阶段是按顺序执行的,其中 阅读全文
posted @ 2019-12-12 20:33 junjiang3 阅读(210) 评论(0) 推荐(0) 编辑
  2019年9月17日
摘要: 背景 在项目中,使用jdk中的nashorn执行javascript脚本,例如如下脚本片段: 通过执行结果可以发现,segments变成了索引值为key的一个对象,这显然不是我们想要的结果: 解决办法 通过google发现,这是nashorn中的算一个Bug,很多人都提出了相同的问题(),其中有人给 阅读全文
posted @ 2019-09-17 19:16 junjiang3 阅读(505) 评论(0) 推荐(0) 编辑
  2019年9月6日
摘要: 背景介绍 在项目中使用了akk stream的source.queue功能,如下: 但是,如果在使用reqSourceQueue.second().runForeach方法来对流中的元素进行处理时,如果处理代码出现错误,也不抛异常,并且整个流中断了,继续往queue中offer元素也不起作用了。查看 阅读全文
posted @ 2019-09-06 11:30 junjiang3 阅读(445) 评论(0) 推荐(0) 编辑
  2019年9月2日
摘要: 简介 redis源码虽然是C语言实现的,但是Redis没有直接采用C语言传统的字符串表示,而是构建了一种名叫简单动态字符串(simple dynamic string,SDS)的抽象类型,并将SDS用作redis的默认字符串表示。 SDS定义 SDS定义的结构体如下: 下图展示了一个SDS示例: f 阅读全文
posted @ 2019-09-02 19:14 junjiang3 阅读(199) 评论(0) 推荐(0) 编辑
  2019年7月24日
摘要: 背景 最近,在使用springboot开发一个接口的时候,需要根据接收的请求事件类型,去执行不同的操作,返回不同的结果,基本逻辑如下: 写完会发现,随着事件的增加,这段代码会很长,每个事件的处理函数也都集中在一个类当中,不好维护。因此,通过搜索学习发现,可以使用Springboot的注解+策略模式+ 阅读全文
posted @ 2019-07-24 14:49 junjiang3 阅读(1491) 评论(2) 推荐(0) 编辑
  2019年7月1日
摘要: 背景 项目中使用的老的索引,由于数据冗余,会想影响性能。因此需要重新建立索引,但是这样必然需要更新服务中的索引名称,然后重新启动服务,可能会对服务的使用者产生一定的影响。因此,调研了Elasticsearch的索引别名,来解决这个问题。 简介 索引别名就像一个快捷方式或软连接,可以指向一个或多个索引 阅读全文
posted @ 2019-07-01 15:50 junjiang3 阅读(3680) 评论(0) 推荐(0) 编辑
  2019年6月28日
摘要: 背景 最近在使用Springboot做项目的时候,遇到了一个循环依赖的 问题。那什么是循环依赖呢,常见的一种情形就是在ServiceA中注入了ServiceB,在ServiceB中也注入了ServiceA。这种情况下,导致Spring在初始化的时候,无法决定先创建哪个Bean,从而导致了报错。 解决 阅读全文
posted @ 2019-06-28 09:05 junjiang3 阅读(7819) 评论(0) 推荐(0) 编辑
  2019年5月13日
摘要: 在将使用JSON.toJSONString(result, SerializerFeature.PrettyFormat)将JSONObject转化为字符串时,可以指定一些序列化属性,设置转化后的字符串的格式。具体属性如下表所示: | 名称 | 含义 | | | | |QuoteFieldNames 阅读全文
posted @ 2019-05-13 14:33 junjiang3 阅读(2101) 评论(0) 推荐(0) 编辑
  2019年5月5日
摘要: 背景 在项目中需要使用java调用javascript脚本,有两种方案,一种是faas,使用开源的openwhisk。另一种本地运行的方式,使用jdk的nashorn调用javascript,jdk版本为1.8。 但是在编写js脚本的时候使用了ECMAScript6中的新特性const和let。在执 阅读全文
posted @ 2019-05-05 17:03 junjiang3 阅读(2045) 评论(0) 推荐(0) 编辑
  2019年4月25日
摘要: 背景 最近在做项目的时候需要使用持久化功能,1.0版本中使用的akka自带的持久化功能,使用的是akka persist支持的redis插件,在使用的过程中踩了一些坑。因此,在而2.0版本中考虑自己往redis中持久化。要做持久化,必须考虑对象的序列化问题。序列化的方法很多,可以使用java自带的序 阅读全文
posted @ 2019-04-25 14:38 junjiang3 阅读(1062) 评论(0) 推荐(0) 编辑