Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

前置知识学习之前需要理清这么几个关键概念: netty相关:EventLoop, EventLoopGroup, ChannelHandler, ChannelPipeline,ChannnelPromise, ChannelFuture nio相关:channel, selector. Channel与Selector谈到nio, 那么channel和selector就是绕不开的话题,...

前菜众所周知,java的内部类是可以访问到外部类的field的,如: 12345678910111213141516public class Fruit { private String name; public Origin origin(){ return new Origin(); } class Origin ...
Java

常见命令 docker image ls查看镜像列表 docker ps 查看正在运行的容器 docker run -p 8888:80 -tid blog-20220502 /bin/bash 启动容器 进入运行中的容器:docker exec -ti {containerId} /bin/bash -t 为docker分配一个伪终端并绑定到容器的标准输入上 -i 是...

今天工作中遇到一个命令svc,可以用于优雅杀死进程。本着啥都不会的精神,刨根问题一哈。 背景: 一般而言生产环境中的服务都是有守护进程的:当它挂掉后,会有另外一个进程把它立马拉起来。 在指导这个东西以前,我都是通过cron+脚本的方式来达到这一目的的,但是缺点就是cron只能精确到分钟,不够细。 正餐: linux中有个监控工具,叫supervise,它是daemontools里面的一个...

Hey what’s up guys. 有好长一段时间没写博客了,最近也是来上海一个多月难得的一个周末,所以写点东西吧。 关于session cookie相关的内容在校招时也被经常问到,但是最近感觉对这块的理解还是不够深入,所以再学习一下。 众所周知session用于会话管理,一般情况下,http request的header里的cookies字段里会带个sessionID, 服务端收到...
Java

从业务说起,用到了@Async在主线程中接收数据,进行数据拼接,然后存库,最后返回http 200, 由于客户端有失败重试机制,且失败次数多了之后会不再请求,所以为了避免由于存库导致的阻塞,项目中使用@async进行异步处理。 出现了意料之外的问题项目上线后发现,一段时间之后客户端停止请求服务端了(这里其实是客户端的自动推送功能被关了)查看日志发现是使用了@async的子线程抛了异常,导致没...
Java

docker本质是个进程,通过cgroup, namespace和rootfs实现的一个特殊的进程。 kubernetes凌驾于docker之上,docker只是它的运行时的一种实现方式,除了运行时,k8s还有许多其他的部分。

为什么会有类卸载一说在一些场景中,比如java agent技术,我们attach到目标jvm的agent中的类被加载并且使用完后,它的使命就完成了,留着占用jvm内存,这时候就需要卸载掉。 如何卸载在之前的文章中有分享过类加载,有类加载就有类卸载,当这个类的Class对象不再被引用时,那它的生命周期就结束了。我们需要理解这么几个概念: 类加载器 Class对象 类的实例。 我们知道,类是...
Java

前言在之前的文章里我们介绍了ASM字节码框架,使用它可以动态的修改class文件。但是仔细一想,你会发现仅仅ASM并不能真正用于生产,为什么?假如你已经有一个在运行的系统了,现在想要做一些字节码修改的动作,难道我们要去修改源代码吗?麻烦不说,而且污染了本来的系统。 所以我们就考虑,有没有什么方法,可以实现动态的无污染的织入,这就要引入今天的主角,Instrument了。 正文Instrume...
Java

写这篇文章是因为在开水团实习的时候的一个项目用到了这个技术,在这里重新做下总结和梳理。 什么是ASMASM是一个字节码操作框架,使用它可以动态地修改class文件,或者让类被加载到虚拟机之前修改一些行为。 ASM有什么用一言以蔽之,AOP. 说到AOP,可能会想到Spring的JDK动态代理Proxy或者CGLIB. 这里JDK动态代理底层使用反射实现,众所周知反射的性能比较差。而C...
Java