welcome to heavy rain's website

If builders built buildings the way programmers wrote programs, then the first woodpecker that came along wound destroy civilization

javaweb项目常用缓存

线上问题分析

缓存简介随着互联网的普及,内容信息越来越复杂,用户数和访问量越来越大,我们的应用需要支撑更多的并发量,同时我们的应用服务器和数据库服务器所做的计算也越来越多。但是往往我们的应用服务器资源是有限的,且技术变革是缓慢的,数据库每秒能接受的请求次数也是有限的(或者文件的读写也是有限的),如何能够有效利用有限的资源来提供尽可能大的吞吐量? 一个有效的办法就是引入缓存,打破标准流程,每个环节中请求可以......

排查线上java程序高CPU占比代码

线上问题分析

java程序CPU占比过高分析一、Arthas分析高CPU占比代码Arthas官方文档地址:https://arthas.aliyun.com/doc/quick-start.html 1.1 启动Arthas在命令行下面执行(使用和目标进程一致的用户启动,否则可能attach失败): 12curl -O https://arthas.aliyun.com/ar......

MySQL高级

MySQL

MySQL高级一、MySQL简介MySQL 是⼀种关系型数据库,在Java企业级开发中⾮常常⽤,因为 MySQL 是开源免费的,并 且⽅便扩展。阿⾥巴巴数据库系统也⼤量⽤到了 MySQL,因此它的稳定性是有保障的。MySQL 是开放源代码的,因此任何⼈都可以在 GPL(General Public License) 的许可下下载并根据个性化的需要对其进⾏修改。MySQL的默认端⼝号是3306......

countDownLatch简介与基础使用

countDownLatch简介与基础使用

简介概念CountDownLatch允许一个或者多个线程去等待其他线程完成操作。 CountDownLatch接收一个int型参数,表示要等待的工作线程的个数。 当然也不一定是多线程,在单线程中可以用这个int型参数表示多个操作步骤。 方法CountDownLatch 提供了一些方法: 方法 说明await() 使当前线程进入同步队列进行等待,直到latch的值被减到0或者当前线......

spring容器注入实现策略模式

spring容器注入实现策略模式

背景一个项目对接多个系统的同一功能,或者同一功能多种实现的选择需求的策略模式实现。 Spring容器实现需求: 物质采购汉堡选择,可以选择采购肯德基或麦当劳 示例代码: 汉堡策略类上下文HamburgerContext: 12345678910111213141516171819@Componentpublic class HamburgerContext { /** ......

Async与Scheduled注解

Async与Scheduled

背景最近项目中使用了@Async与@Scheduled自定义线程池注解实现定时任务,特此记录实现及其原理。 @Async简介@Async是Spring 3.0之后提供的注解,使用@Async注解可以轻松的实现异步调用。 官方文档: https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/schedu......

Spring远程命令执行漏洞

Spring远程命令执行漏洞

Spring远程命令执行漏洞转载地址:https://mp.weixin.qq.com/s/BnF8CWuUxNliCoa260bEaA Spring RCE (远程代码执行漏洞)已被官方证实。 国家信息安全漏洞平台:https://mp.weixin.qq.com/s/BnF8CWuUxNliCoa260bEaA CVE: https://tanzu.vmware.com/secur......

GateWay漏洞

GateWay漏洞

描述2022年3月1日,Spring官方发布了关于Spring Cloud Gateway的两个CVE漏洞,分别为CVE-2022-22946与CVE-2022-22947: 漏洞1:Spring Cloud Gateway 远程代码执行漏洞(CVE-2022-22947)3 月 1 日,VMware 官方发布安全公告,声明对 Spring Cloud Gateway 中的一处命令注入漏洞进......

Oracle与Mysql数据库区别

Oracle与Mysql数据库区别

(1) 对事务的提交 MySQL默认是自动提交,而Oracle默认不自动提交,需要用户手动提交,需要在写commit;指令或者点击commit按钮 (2) 分页查询 MySQL是直接在SQL语句中写”select… from …where…limit x, y”,有limit就可以实现分页;而Oracle则是需要用到伪列ROWNUM和嵌套查询 oracle: 12345select * fr......

Dubbo四种负载均衡算法

Dubbo四种负载均衡算法

Dubbo四种负载均衡算法整体架构图可以看出抽象的负载均衡下的类分为4个,这4个类表示了4种负载均衡策略,分别是一致性Hash均衡算法、随机调用法、轮询法、最少活动调用法 原理RandomLoadBalance随机调用负载均衡,该类实现了抽象的AbstractLoadBalance接口,重写了doSelect方法,看方法的细节就是首先遍历每个提供服务的机器,获取每个服务的权重,然后累加权重......