摘要:1、背景: 工作中是否有这样的场景?一个软件系统会同时存在多个不同版本,比如我现在做的IM系统,同时又作为公司的技术输出给其他银行,不同的银行有自己的业务实现(登陆验证、用户信息查询等)。或者你的工程里依赖了其他第三方的jar,这些jar包里的组件都是通过Spring容器来管理的,如果你想修改某个类 阅读全文
posted @ 2020-03-21 23:59 ocean.wen 阅读(2774) 评论(2) 推荐(1) 编辑
摘要:1、背景: 公司基础设施部门推出了自己的微服务框架(以下简称M),要求所有业务应用都要接入进去,但坑爹的是M只提供了SpringMVC工程的support,对于采用Stripes作为MVC框架的应用并不支持,所以就必须重构这个Stripes应用。 M虽然代替Tomcat自己实现了IO,工作线程池,服 阅读全文
posted @ 2019-01-03 20:16 ocean.wen 阅读(607) 评论(2) 推荐(0) 编辑
摘要:##1、概念: SPI(Service Provider Interface)服务提供接口,简单来说就是用来解耦,实现插件的自由插拔,具体实现方案可参考JDK里的ServiceLoader(加载classpath下所有META-INF/services/目录下的对应给定接口包路径的文件,然后通过反射 阅读全文
posted @ 2021-05-07 20:27 ocean.wen 阅读(308) 评论(0) 推荐(0) 编辑
摘要:为什么要把这两个看起来不是很搭的东西放在一起对比呢?首先它们两个都是网络编程框架和规范,而且通过我的观察,从API的设计、生命周期方法、处理流程等等方面,他们确实有太多相似的地方了,如果想要深入地学习Netty,那么对比着Servlet,一定能让你事半功倍。 Servlet定义 首先,广义上的Ser 阅读全文
posted @ 2021-05-06 11:28 ocean.wen 阅读(325) 评论(0) 推荐(0) 编辑
摘要:1、问题: Netty对WebSocket提供了很好的支持,在pipeline里添加一个WebSocketServerProtocolHandler就可以方便的暴露一个ws接口出去。但是,开发中却遇到一点小问题,需要在ws的URI带上参数queryString(如:/im/ws?w=22110023 阅读全文
posted @ 2020-12-08 21:15 ocean.wen 阅读(440) 评论(0) 推荐(0) 编辑
摘要:1、背景: 工作中是否有这样的场景?一个软件系统会同时存在多个不同版本,比如我现在做的IM系统,同时又作为公司的技术输出给其他银行,不同的银行有自己的业务实现(登陆验证、用户信息查询等)。或者你的工程里依赖了其他第三方的jar,这些jar包里的组件都是通过Spring容器来管理的,如果你想修改某个类 阅读全文
posted @ 2020-03-21 23:59 ocean.wen 阅读(2774) 评论(2) 推荐(1) 编辑
摘要:1、起源 Disruptor最初由lmax.com开发,2010年在Qcon公开发表,并于2011年开源,其官网定义为:“High Performance Inter Thread Messaging Library”,即:线程间的高性能消息框架。其实JDK已经为我们提供了很多开箱即用的线程间通信的 阅读全文
posted @ 2020-03-07 18:08 ocean.wen 阅读(1063) 评论(1) 推荐(2) 编辑
摘要:如果你跟我一样用的是Idea Community社区版的话,也一定会遇到用Smart Tomcat插件启动报错的问题: 这个问题网上搜了一圈,大家好像也都遇到过了,不过也都没有找到原因和给出解决方案.....(郁闷中) 后来,,,发现在“Run/Debug Configurations”中重新选择下 阅读全文
posted @ 2019-10-08 14:31 ocean.wen 阅读(2192) 评论(0) 推荐(1) 编辑
摘要:问题: 最近换了笔记本,新的工作环境下jmap命令居然在报错,而jps、jstat、jinfo、jstack都能正常使用,所以初步排除进程号的问题。 Attaching to core 17536 from executable heap, please wait... Error attachin 阅读全文
posted @ 2019-09-16 13:19 ocean.wen 阅读(3439) 评论(1) 推荐(1) 编辑
摘要:    单例模式是设计模式中最简单的一种创建型模式,使用场景一般有:工具类对象、系统中只能存在一个实例对象的类、创建频繁或又耗时耗资源且又经常用到的对象等。如:JDK的Runtime类就是饥饿的单例模式,以及Spring容器管理的实例Bean默认也是饥饿单例, 阅读全文
posted @ 2019-08-13 17:34 ocean.wen 阅读(321) 评论(0) 推荐(0) 编辑
摘要:   Java或者说JDK的更新一般分为两部分内容:Java语言、JVM(C、C++编写),但通常情况下都不会单独发布,因为新的语言特性需要特定的JVM支持才行。下面我总结了从古至今Java各版本的新特性,一起来见证Java的发展壮大和不断成长吧。 JDK Beta(1 阅读全文
posted @ 2019-07-12 16:00 ocean.wen 阅读(2142) 评论(0) 推荐(0) 编辑
摘要:    关于synchronized关键字以及偏向锁、轻量级锁、重量级锁的介绍广大网友已经给出了太多文章和例子,这里就不再重复了,也可点击 "链接" 来回顾一下。在这里来实战操作一把,验证JVM是怎么一步一步对锁进行升级的,这其中有很多值得思考的地方。 需要关 阅读全文
posted @ 2019-05-15 21:11 ocean.wen 阅读(1821) 评论(1) 推荐(0) 编辑