基于Spring Cache实现Caffeine、jimDB多级缓存实战
在早期参与涅槃氛围标签中台项目中,前台要求接口性能999要求50ms以下,通过设计Caffeine、ehcache堆外缓存、jimDB三级缓存,利用内存、堆外、jimDB缓存不同的特性提升接口性能,内存缓存采用Caffeine缓存,利用WTinyLFU算法获得更高的内存命中率;同时利用堆外缓存降低内存缓存大小,减少GC频率,同时也减少了网络IO带来的性能消耗;利用JimDB提升接口高可用、高并发;后期通过压测及性能调优999性能<20ms
Wesley13 Wesley13
3年前
java网络编程3
什么是NIONIO是相对有BIO而言的,就是非阻塞性IO。什么叫非阻塞性?我举一个简单的例子:比如,你客户端发送了一个字符串:niotest。考虑到网络底层的传输情况的复杂性,有可能,前一秒服端接受了nio几个字符,过了10ms,再接收到了test字符串。在BIO中,不会出现这个问题,是因为在调用read方法的时候,方
作业帮 Kubernetes 原生调度器优化实践
作者吕亚霖,2019年加入作业帮,作业帮架构研发负责人,在作业帮期间主导了云原生架构演进、推动实施容器化改造、服务治理、GO微服务框架、DevOps的落地实践。简介调度系统的本质是为计算服务/任务匹配合适的资源,使其能够稳定高效地运行,以及在此的基础上进一步提高资源使用密度,而影响应用运行的因素非常多,比如CPU、内存、IO、差异化的资源设备等等一系列因
Wesley13 Wesley13
3年前
mysql事务和事务隔离机制
阅读文本大概需要3分钟。http://arthornye.github.io/2018/mysql/mysql%E4%BA%8B%E5%8A%A1%E5%92%8C%E4%BA%8B%E5%8A%A1%E9%9A%94%E7%A6%BB%E6%9C%BA%E5%88%B6在学习mysql的事务隔离机制的过程中,对mysql的会话和事务的概念有点模糊不
Wesley13 Wesley13
3年前
2020年1
前言2020年一半儿快要过去了,总结了上半年各类Java面试题,初中级和中高级都有,包括JavaOOP面试题、Java集合/泛型面试题、Java异常面试题、Java种的IO与NIO面试题、Java反射面试题、Java序列化面试题、Java注解面试题、多线程与并发面试题、JVM面试题、MySQL面试题、Redis面试题、Memcached面试题、Mo
Stella981 Stella981
3年前
MoChat企业微信开源系统,能否成为企业微信开源框架项目中的独角兽?
2020年,国内企业服务SaaS领域因疫情加速驶入快车道,一时间企业服务领域的创业项目从成为了兵家必争的赛道。这其中,基于企业微信生态的私域流量运营SaaS工具尤为引人瞩目,作为企业私域流量运营的重要场景和工具,吸引了大批的服务商和企业,行业进入了百花齐名百家开放的阶段。!(https://uploadimages.jianshu.io/uploa
Stella981 Stella981
3年前
NIO开发Http服务器(5
最近学习了JavaNIO技术,觉得不能再去写一些HelloWorld的学习demo了,而且也不想再像学习IO时那样编写一个控制台(或者带界面)聊天室。我们是做WEB开发的,整天围着tomcat、nginx转,所以选择了一个新的方向,就是自己开发一个简单的Http服务器,在总结JavaNIO的同时,也加深一下对http协议的理解。项目实现了静态资源(
Easter79 Easter79
3年前
Spring的IOC逐层深入——源码解析之IoC的根本BeanFactory(五)
什么是IoC    IoC容器,最主要的就是完成对象的创建以及维护对象的依赖关系等。    所谓控制反转,包括两部分:一是控制,二是反转,就是把传统方式需要由代码来实现对象的创建、维护对象的依赖关系,反转给容器来帮忙管理和实现。所以我们必须要创建一个容器,同时需要一种描述来让容器创建对象与对象的关系。    Io
Stella981 Stella981
3年前
FunTester测试框架架构图初探
春节假期响应号召原地过年,抽空看了看一些优秀的工具,选择了一两个进行了更深入的使用,其中一个很重要的就是draw.io画图工具,之前用的是网页版的,现在用的Macdesktop版本。顺便说一句,现在这个工具的网页版有了新名字,叫diagrams.net,但是桌面版用的还是老名字,目前好像没有中文名,团队起名字就是域名,也挺有意思。
Wesley13 Wesley13
3年前
ng6中,在HTTP拦截器里,异步请求数据,之后再返回拦截器继续执行用户请求的方法研究
一、问题背景:   上面绕口的标题不知道大家看不看的懂。通常我们用拦截器就是两个目的,1、在请求头里统一添加请求头。2、对响应结果预先处理。   我现在项目就是利用拦截器,在请求头里增加:'Authorization':this.storage.token的请求头。//最精简的一个拦截器。一会儿