博客
分类
标签
归档
关于
博客
分类
标签
归档
关于
Tau的博客
文章
分类
标签
归档
关于
当ThreadLocal遇上线程池
温馨提示: 本文需要垃圾回收、强弱引用、多线程等知识. ThreadLocal 是什么 ThreadLocal, 从名字大概可以知道,它是个线程本地变量,意味着只有当前线程可以使用,线程之间相互隔离。 举个🌰: 123456789101112131415161718192021222324public class ThreadLocalApp { public stat...
2022-04-30
多线程
多线程
Read More
Netty学习笔记之服务端建立新连接
前情提要 在Netty学习笔记之服务端启动一文中,我们了解了eventloop的基本功能,知道了它的一生其实就是个死循环,再循环里处理IO事件和taskQueue里面的任务;同时我们也了解到,在服务端启动之初(准确的来讲是在channel注册完成之后调用handlerAdded的时候)会给pipeline里添加一个特殊的handler:ServerBootstrapAcceptor,有了这两...
2022-04-05
Java
Java
Read More
Netty学习笔记之客户端启动
在上一篇文章中,讨论了netty服务端启动的大概流程,这篇文章将会继续看下客户端启动流程。 总览 一般的客户端长这样,真正的入口要从bootstrap.connect看起。 分析 进入connect方法的最终调用在这里: 如果已经看过服务端启动流程,会发现这里和服务端的代码神似,都是先initAndRegister,如果注册成功,则直接执行doResolveAndConnect0,否则就...
2022-04-04
Java
Java
Read More
Netty学习笔记之服务启动
前置知识 学习之前需要理清这么几个关键概念: netty相关:EventLoop, EventLoopGroup, ChannelHandler, ChannelPipeline,ChannnelPromise, ChannelFuture nio相关:channel, selector. Channel与Selector 谈到nio, 那么channel和selector就是绕不开的话...
2022-02-13
Netty
Netty
Read More
一次由匿名内部类引发的问题
前菜 众所周知,java的内部类是可以访问到外部类的field的,如: 12345678910111213141516public class Fruit { private String name; public Origin origin(){ return new Origin(); } class Origin...
2022-02-12
Java
Java
Read More
Linux supervise
今天工作中遇到一个命令svc,可以用于优雅杀死进程。本着啥都不会的精神,刨根问题一哈。 背景: 一般而言生产环境中的服务都是有守护进程的:当它挂掉后,会有另外一个进程把它立马拉起来。 在指导这个东西以前,我都是通过cron+脚本的方式来达到这一目的的,但是缺点就是cron只能精确到分钟,不够细。 正餐: linux中有个监控工具,叫supervise,它是daemontools里面的一个...
2021-08-31
Linux
Linux
Read More
Tomcat Session管理
Hey what's up guys. 有好长一段时间没写博客了,最近也是来上海一个多月难得的一个周末,所以写点东西吧。 关于session cookie相关的内容在校招时也被经常问到,但是最近感觉对这块的理解还是不够深入,所以再学习一下。 众所周知session用于会话管理,一般情况下,http request的header里的cookies字段里会带个sessionID, 服务端收到...
2021-06-06
Java
Java
Read More
Springboot @Async探险
从业务说起,用到了@Async 在主线程中接收数据,进行数据拼接,然后存库,最后返回http 200, 由于客户端有失败重试机制,且失败次数多了之后会不再请求,所以为了避免由于存库导致的阻塞,项目中使用@async进行异步处理。 出现了意料之外的问题 项目上线后发现,一段时间之后客户端停止请求服务端了(这里其实是客户端的自动推送功能被关了)查看日志发现是使用了@async的子线程抛了异常,导...
2020-12-02
Java
Java
Read More
容器学习笔记
docker 本质是个进程,通过cgroup, namespace和rootfs实现的一个特殊的进程。 kubernetes 凌驾于docker之上,docker只是它的运行时的一种实现方式,除了运行时,k8s还有许多其他的部分。
2020-09-15
中间件
中间件
Read More
Java中的类卸载
为什么会有类卸载一说 在一些场景中,比如java agent技术,我们attach到目标jvm的agent中的类被加载并且使用完后,它的使命就完成了,留着占用jvm内存,这时候就需要卸载掉。 如何卸载 在之前的文章中有分享过类加载,有类加载就有类卸载,当这个类的Class对象不再被引用时,那它的生命周期就结束了。我们需要理解这么几个概念: 类加载器 Class对象 类的实例。 我们知道,...
2020-09-06
Java
Java
Read More
Previous
3 / 9
Next