自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 定时任务优化: 用简单的轮询算法+Rddisssion实现类似时间轮定时任务

在定时任务开始执行的时候,CPU都会忽然飙高,但是平时的时候定时任务的资源呦没有被用到,为了更好的发挥我们的性能,我们就把每个任务里不同的groupId下的任务平摊到这个时间段里去执行,分散在执行任务那一下资源占用的问题。用redis实现延迟队列是为了持久化,用kafka消息队列其实也可以。redission实现延迟队列。

2023-03-19 07:07:18 233

原创 延迟限流算法

限流算法+延迟限流,实现求和更新的限流计算

2022-08-13 23:55:18 318

原创 一次简单的接口性能优化

最近公司的一个列表接口改为查询领域实体后,到流量高峰期会崩。查看项目内存使用情况首先在阿里云arms上查看项目内存使用情况,显示虽然分配的内存足够,但是jvm设置的最大内存太小。查看接口链路追踪链路追踪可以直观的看出哪些地方用时更久,便于找到问题。查看接口发现每次循环都进行了多次IO。 因为该项目使用的是ddd的模式,每次对Entity查询都进行多次的数据库查询、RPC查询。虽然一些查询用了redis缓存,但是每...

2022-05-15 18:22:20 213

原创 一个HTTP请求的一生

目录HTTP简介HTTP传输流程一、地址解析 域名解析:二、封装HTTP数据包三、封装TCP包四、浏览器与服务建立连接TCP/IP的三次握手五、发起HTTP请求 HTTP请求报文结构:六、服务器响应服务器反向代理内部服务器HTTP响应报文结构:七、服务器关闭TCP连接TCP四次挥手八、浏览器解析报文,渲染页面以从浏览器请求服务器再到返回响应,一个HTTP请求这短暂的一生都都经历了什么呢?HTTP简...

2022-04-04 17:09:08 2466

原创 mongoDB 索引分析

概述最近在执行脚本更新全表数据和查询数据清全表的时候遇到索引的问题,因此进行一下学习总结。mongoDB的索引是在集合级别定义的索引,也就是说,集合里的字段也被支持。不走索引分页查全表的情况不走索引根据id排序过滤查全表的情况走索引的情况索引的目的减少行数的扫减、少内存计算默认索引在创建集合的时候,mongoDB会自动创建_id索引,且不能被删除。索引交集mongoDB可以使用多个/嵌套索引交集来解析查询。索引交集可以是整个索引,也可以是索引前缀的交集(即每个索引前面到不匹配终止)。

2021-12-11 22:31:08 1504

原创 feign学习

前言Feigin是一个声明式HTTP客户端,让编写HTTP客户端变得简单。也就是服务之间的调用变得简单。他使用自定义接口,然后在上面添加注解,感知上就像调用一个接口一样。官网介绍Feigin灵感来源于Retrofiit、JAXES-2.0和WebSocket,它旨在通过最少的资源和代码来实现HTTP Client能力,并且通过可定制的解码器和错误处理,编写任意的HTTP API。[https://github.com/OpenFeign/feign](https://github.com/Ope

2021-09-28 22:30:06 652

原创 一次Rpc调用报错排查

前言前几天一个接口rpc调用忽然一时间报错十几次,报错信息是反序列化错误,经过排查是因为线程池满了,导致返回结果为null,我们自己在null的情况下默认将"{}"转成对应对象,所以基本类型不满足条件导致反序列化错误。但是线程池报错没有打日志,所以如果不是类型转换错误,甚至都没能感知到bug。所以细瞅瞅源码为什么不打日志。线程池满了报错排查经过一层层的调用,找到MainClientExec.java执行execute()获取连接池,因为线程池满了,而超时时间又只设置了1s,抛出org.apac

2021-09-13 22:20:46 1960

原创 rpc学习

前言rpc全称Remote Precedure Call,是一种通过网络从计算机程序上请求服务的框架。服务之间的调用,主要需要考虑到点是:1、网络协议2、序列化3、实现框架协议服务之间的调用方式,可以选择走http和tcp。tcp位于传输层,http位于应用层,所以tcp更快速,更高效。但是http带有的请求信息更完整,和平时前端请求一样。内网调用足够快,所以http带来的一点效率损耗可以忽略不计。序列化常见的序列化协议xml、protobuf、thrift、fastjso

2021-09-12 11:02:59 508

原创 java集合对比——ArrayList、LinkedList、HashSet、HashMap

结构ArrayList:数组Object[]LinkedList:链表NodeHashSet:HashMap<E,Object>HashMap:(数组+链表)Node<K,V>[]+红黑树TreeNode根据结构就能看出ArrayList使用索引在数组中搜索和读取数据是很快的,可以直接返回数组中index位置的元素,随机访问快,但是删除、插入需要移动后面的元素,开销大。LinkedList每次都要遍历查找,所以查询慢,但是因为存储位置是用指针指向,插入删除快,也因为指针所以

2021-08-31 00:12:14 356

原创 一次状态模式的优化

概念状态模式就是允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。对象的具体行为是根据它的当前状态而具体实现,是多态的。适用性:1、 一个对象的行为取决于它的状态,并且必须在运行时刻根据状态改变它的行为。2、一个操作中包含庞大的多分支条件语句,且这些分支依赖于该对象的状态。这个状态通常用一个或多个枚举常量表示。通常,有多个操作包含这一相同的条件结构。State模式将每一个条件分支放入一个独立的类中。这使得你可以根据对象自身的情况将对象的状态作为一个对象,这一对象可以不依赖于

2021-06-10 15:39:26 1123

原创 浅析java stream 源码

浅析java stream 源码分析介绍源码分析Iterator,SpliteratorIteratorSpliteratorStream定义流水线节点终止操作启动流水线介绍stream的结构有点像双向链表,节点之间通过引用连接。节点可以分为三类,控制数据输入的节点、操作数据的中间节点和控制数据输出的节点。ReferencePipeline 包含了控制数据流入的 Head ,中间操作 StatelessOp, StatefulOp,终止操作 TerminalOp。## 特征特征:Pipeli

2021-05-17 21:26:17 333

原创 effective java 当构造方法参数过多时使用 builder 模式的理解

java builder 模式Builder 模式Java return this在effactive java上看到说当构造方法参数过多时使用builder模式,然后发现提供的set模板的Builder只需要return this。所以想了解一下细节以及差异。JavaBeans模式本身有严重的缺陷。由于构造方法被分割成多次调用,所以在构造过程中JavaBean可能处于不一致状态。该类仅有通过检查构造函数参数的有效性,而没有强制的一致性措施。在不一致的状态下尝试使用对象可能导致一些错误,这些错误与平

2021-05-15 13:04:20 187 1

原创 利用流和Lambda表达式对list进行分组、排序、求和、去重、过滤、最值

流式数据处理是java8的新特效之一,流处理在加上lambda表达式极大的提高编程效率和程序可读性。创建一个实体类public class User { private Integer id ; private String name ; private String city; public void setId(Integer id){ this.id=id; }...

2020-03-09 10:43:55 3466

原创 eclipse中Maven创建springboot项目

maven就像是一个jar包的仓库搭建Maven:Maven的核心配置文件是settings.xml,然后在eclipde配置jdk,配置maven:一、创建Maven项目:1、在eclipes中创建Maven Project要开发基于web的项目,就可以转一下:点击项目,右击选择Configure,选择convert to faceted form,再弹出框勾选Dynam...

2019-12-12 10:36:22 409

原创 微信第三方平台--接收普通消息

微信发送的消息如果是服务器配置则可以直接接收消息,如果是第三方授权则需要先进行解密。 本文用的是spring boot开发。 注意:回复的消息要5s中以内返回给微信,否则会返回错误给公众号。微信上消息与事件接收的url要求配置/APPIDAPPIDAPPID/所以映射的时候也需要加上/{appid}/@ApiOperation(value = "接收行为消息") @RequestM...

2019-10-08 11:04:44 790

原创 微信第三方平台--实现公众号授权(java版)

最近在做微信第三方的业务,把最近做的微信开发相关陆续做一个总结。第三方平台的申请和上线: 根据微信官方文档开放平台描述,首先需要注册一个开发者账号,按照微信开发文档流程申请审核成功后获取AppID和APPSecret,然后可以开始进行开发。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190925105725879.png) 第三方平台所需要配置的...

2019-09-25 11:47:50 2086 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除