编程开发
未读
八股文系列——Java虚拟机JVM
JVM架构图 运行时数据区 程序计数器 本地方法栈 虚拟机栈 堆 方法区 运行时常量池 字符串常量池 直接内存 类加载时机 创建类的实例 访问类的静态变量 访问类的静态方法 反射,Class.forName 初始化子类(会首先初始化一个子类的父类) 定义了main方法的那个类 类加载流程 加载 ->
编程开发
未读
八股文系列——Java并发
线程和进程的区别 本质区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位 开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切
编程开发
未读
SpringBoot多版本接口实现
一般来说,Restful API接口是提供给其它模块,系统或是其他公司使用,不能随意频繁的变更。然而,需求和业务不断变化,接口和参数也会发生相应的变化。如果直接对原来的接口进行修改,势必会影响线其他系统的正常运行。这就必须对api 接口进行有效的版本控制。
问题排查
未读
动态代理导致的Metaspace OOM(元空间内存溢出)问题
我们团队的一个项目,测试环境最近隔三岔五报错,虽然不是生产环境,但既然有报错那还是得排查下,以免带到了生产环境导致事故。
登录上测试环境服务器,查了下日志,发现是Metaspace内存溢出。
问题排查
未读
记一次Serializable序列化和反序列化导致的线上报错
背景 某个需求上线后告警群里面收到了报错的消息,报错摘要如下: Cannot deserialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Fail
编程开发
未读
使用Java原生库封装一个简单好用的Http请求工具类
需求 最近在写一个Spring boot的Java后端小项目,而在项目的需求中需要向网络发送http请求收集(爬取)网络上的信息。具体的需求如下: 能发送get、post请求; 通过方法添加查询参数而不是用拼接url的方式; 发送post请求能携带表单数据和json格式的数据; 能添加自定义头信息;