
个人总结
文章平均质量分 66
yongqi_wang
少点悲伤,多点微笑。少些埋怨,多些鼓励。
展开
-
授权与交流
如何授权,如何跟下属交流及如何快速确认改进/优化方案原创 2023-09-26 19:46:04 · 147 阅读 · 0 评论 -
高并发线程内存事件处理器 disruptor 三 高性能原理
disruptor为什么快 核心原理原创 2023-05-22 17:21:48 · 723 阅读 · 0 评论 -
高并发线程内存事件处理器 disruptor 三 高性能原理
disruptor为什么快 核心原理原创 2023-05-22 17:10:07 · 568 阅读 · 0 评论 -
性能优化之网络带宽限制websocket推送优化
问题产生于,当我们的服务系统随着业务的迭代对用户推送内容的不断增多,某一个业务的推送消息达到了 64k/条。签约时候限制的是 500M/s,经过我们的排查发现每秒的带宽消耗绝对没有这么高,而且我们自己也是有监控系统的,通过监控并没有发现有超过阈值的情况发生。由于一些保密性原因,不会写一些具体的涉及到业务处理内容了,以后大概会更多的分享一些性能优化的解决措施和思路。使用令牌桶,每秒定量一定令牌数,如果超出令牌数量则进入等待队列,当前线程将不断轮询队列持续发送,直到等待队列发送完成。原创 2023-03-22 16:38:01 · 2062 阅读 · 0 评论 -
kafka CommitFailedException
具体的思路就是,让下游系统手动创建多个消费线程处理 poll 方法返回的一批消息。在最新版的 Kafka 中,该参数的默认值是 5 分钟,但是不一定会生效,如果设置了session.timeout.ms,没有设置 max.poll.interval.ms,那么将会根据它的默认值不会生效。出现这个情况的原因是,你的消费者实例连续两次调用 poll 方法的时间间隔超过了期望的 max.poll.interval.ms 参数值。这通常表明,你的消费者实例花费了太长的时间进行消息处理,耽误了调用 poll 方法。原创 2022-11-17 14:14:06 · 571 阅读 · 0 评论 -
高并发线程内存事件处理器 disruptor 二 hello world
本篇为disruptor的一个demo,帮助大家快速入门使用起来,下面的代码是一个简单的实现,可以跟着本地debug进行源码查看一下具体的事件处理过程。原创 2022-11-15 17:00:26 · 321 阅读 · 0 评论 -
高并发线程内存事件处理器 disruptor 一 初步了解
简介Disruptor是英国外汇交易公司LMAX开发的一个高性能,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注。2011年,企业应用软件专家Martin Fowler专门撰写长文介绍。同年它还获得了Oracle官方的Duke大奖。目前,包括Storm、Camel、Log4j 2在内的很多知名项目都应用了Disruptor以获取高性能。原创 2022-11-07 15:57:11 · 382 阅读 · 0 评论 -
Java 自定义 ClassLoader 实现隔离运行不同版本jar包
自定义类加载器,隔离不同编译/框架版本原创 2022-07-14 14:42:14 · 2840 阅读 · 0 评论 -
IDEA Unicode码转中文
1.打开设置2.打开文件编码设置3.修改文件编码全部选择为UTF-8 并勾选应用即可原创 2021-12-03 17:19:36 · 5780 阅读 · 0 评论 -
今年新版面试题及答案(上个月朋友面试成功后留下的题目)
1.kafka的读写效率快的原因(详细解释传送门;https://blog.youkuaiyun.com/lianggzone/article/details/112386378) (1) 利用 Partition 实现并行处理 Kafka 是一个 Pub-Sub 的消息系统,无论是发布还是订阅,都要指定 Topic; Topic 只是一个逻辑的概念。每个 Topic 都包含一个或多个 Partition,不同 Partition 可位于不同节点。 一方面,由于不...原创 2021-07-27 20:35:54 · 754 阅读 · 3 评论 -
Dbeaver启动报错
Root exception:org.eclipse.core.internal.dtree.ObjectNotFoundException: 找不到树元素“/General/Scripts/Script-1.sql”。 at org.eclipse.core.internal.dtree.AbstractDataTree.handleNotFound(AbstractDataTree.java:260) at org.eclipse.core.internal.dtree.DeltaDataTree原创 2021-07-05 17:28:17 · 18645 阅读 · 8 评论 -
记录一个小BUG(并行流&字符串拼接)
场景:线上日志输出调用外部接口错误处理过程:1。日志排查找到调用的外部接口链接2。查询调用日志方法请求参数3。手动执行部分参数看调用是否有问题4。沟通相应开发查看运行日志,同时排查相关代码查看错误原因问题定位:1。该方法请求参数拼接有问题,拼接结果并不是每个元素间有一个分隔符,有可能会有多个连续分隔符2。服务提供方请求日志查询结果显示有超长请求参数导致转换long类型异常问题分析:1。StringBuffer虽然是线程安全的,但是只能保证append方法拼接不产生..原创 2021-02-03 13:34:57 · 289 阅读 · 1 评论 -
Spring cloud Zuul和Hystrix
Zuul 1.应用场景 它相当于是一个网关,可以使用一定的路由配置来判断某一个URL由哪个服务来处理。并从Eureka获取注册的服务来转发请求。 API网关所有的客户端请求通过这个网关访问后台的服务。 2.核心功能 Zuul包含了对请求的路由和过滤两个主要功能,是各种服务的统一入口,同时会提供监控、授权、安全、调度等功能。 路由:负责将外部请求转发到具体的微服务实例上,是实现外部访问同一入口的基础,他与Nginx的区别就在于它提供了认证鉴权、动态路由、监控...原创 2021-01-05 15:19:30 · 986 阅读 · 0 评论 -
Spring Cloud 注册中心 Eureka
目录微服务的应用场景和核心竞争力Spring Cloud 与 Dubbo 的对比活跃度架构模块介绍EurekaEureka ServerEureka ClientZK与Eureka对CAP的支持(一致性、可用性、分区容错性)微服务的应用场景和核心竞争力低耦合:每一个微服务专注于单一功能,并通过良好的接口命名方式清晰表达出服务边界。由于体积小、复杂度低,可将每个微服务拆分为一个独立项目进行开发,易于保持高可维护性和开发效率。 部署:由于每个微服务都是一个可以.原创 2020-12-24 15:07:31 · 371 阅读 · 0 评论 -
当当的DubboX
最近有用到这个版本,特意搜了搜相关文档。虽然本项目版本比较老 但是还相对稳定,并且在某些方面使用的还比较方便。其最最最主要的作用就是为Dubbo服务提供Http请求访问接口,相信大家都曾经遇到过Dubbo服务和Http都需要提供的情况,通常我们是分开实现两个服务,底层实现调用一个业务逻辑,有了当当的这个DubboX只需要一个Dubbo接口就可以完美解决这个问题了。下面文档中各种Demo和介绍都有,如果有兴趣尝试一下的同学,一定要仔细看!!!以下为文档链接在Dubbo中开发REST风格的远程.原创 2020-10-29 20:51:33 · 391 阅读 · 5 评论 -
jquery:时间类型字符串转为Date类型
/** * 字符串格式:'YYYY-MM-DD HH:mm:ss */function getDate(dateStr) { return new Date(Date.parse(dateStr.replace(/-/g, "/")));}原创 2020-10-15 19:30:38 · 3240 阅读 · 0 评论 -
线上BUG定位及修复(MQ处理商品信息,实体商品与虚拟品处理逻辑)
背景: 1.MQ消费处理集群 负责整个项目中相同/相似逻辑的统一处理,降低冗余代码,提高API响应效率 进行异步处理 2.业务API 集群 本次涉及API内主体流程仅有请求参数校验,成功后发送MQ进行处理 3.定时任务 扫描数据库内需要更新的数据 4.涉及表 预售商品信息表、商品表、预售变更记录、商品信息变更记录涉及流程: 电商产品分为:预售、在售、虚拟品等多种状态 预售:...原创 2020-08-14 15:39:44 · 487 阅读 · 0 评论 -
查询API优化
1.当前待优化背景 [1] 重复高频的数据查询请求(并且由于是核心API,可能会有多个其他系统同时进行调用并且由于是核心API,可能会有多个其他系统同时进行调用) [2] 数据具有周期性(数据有自己的生命周期,周期结束后很少会再次访问)2.当前需要的主要关注点 [1] 故障快速恢复 需要有数据持久化相关功能保证宕机数据及时恢复 硬件配置:可以配置多组多实例多机柜,保证服务。 [2] 查询性能 可通过减少数据索引条件...原创 2020-07-30 18:37:56 · 365 阅读 · 2 评论 -
公司账号到期,git无法更新代码
大部分都是由于本地默认保存了第一次登陆git时的账号密码造成,可以打开一下界面,重新编辑下密码就可以了原创 2020-03-12 16:49:20 · 452 阅读 · 0 评论 -
AOP 使用自定义注解method.getAnnotation为null
这个aop拦截的是ServiceImpl的一个方法,然后这个ServiceImpl又启动了事务管理,而事务管理又是基于AOP的。也就是说,这个权限的@Around的切面拦截的是个代理对象的方法,而代理对象的方法是不会把原来父类中的方法的注解加上去的,所以这里这个注解的对象为null。private String getOperationOfTheAnnotation(Proceeding...原创 2020-03-10 18:59:28 · 7377 阅读 · 0 评论 -
故障review流程
1:故障Review负责人有对应的Team或TeamLeader组织2:故障会议准备主要从故障平台上准备相关信息1:故障影响时间范围及故障的详细处理过程2:故障的影响范围,及造成的大概损失和后果(最好有相关记录数据)3:故障产生原因分析4:故障改进计划及避免方案(可以现场讨论)5:如何跟进,改进计划确认到具体的负责人,并提供时间节点(开始时间-结束时间)3:故障...原创 2019-11-17 18:22:31 · 615 阅读 · 0 评论 -
最近面试问题总结(持续更新)
本篇主要总结下最近面试问到的问题,及自己理解的答案,不要纠结书写顺序,因为没有录音,所以想起什么就写什么。数据结构二叉树遍历方式 ① 前序遍历:根节点——>左子节点——>右子节点 ② 中序遍历:左子节点——>根节点——>右子节点 ③ 后序遍历:左子节点——>右子节点——>根节点 ④ 层序遍历:按层级从上到下,从左到右遍历。 已知数组通过下标...原创 2019-11-13 22:56:40 · 1017 阅读 · 0 评论 -
div跟随鼠标移动+上浮定位+移动放置 添加与删除
html代码<html lang="zh-CN"><head> <script src="http://code.jquery.com/jquery-latest.js"></script><meta charset="utf-8"></head><原创 2018-12-10 17:59:16 · 505 阅读 · 0 评论 -
指定多个线程按顺序循环执行
import java.util.concurrent.Semaphore;public class test { private static Semaphore s1 = new Semaphore(1); private static Semaphore s2 = new Semaphore(0); private static Semaphore s3 = n...原创 2019-04-03 22:14:11 · 534 阅读 · 0 评论 -
IDER 使用Maven导入本地Jar Maven打包失败报找不包问题
<dependency> <groupId>com.xxx.xx</groupId> <artifactId>xxxx</artifactId> <version>1.0.0-SNAPSHOT</version> <scope>system&am原创 2018-10-19 14:15:03 · 809 阅读 · 0 评论 -
Git--删除本地和远程分支
1.查看所有本地分支git breach 2.查看所有分支(包含远程分支)git breach -a3.删除本地分支git breach -d 分支名称4.删除远程分支git push origin --delete 远程分支名称 ...原创 2018-10-16 10:26:32 · 371 阅读 · 0 评论 -
千行MySql介绍
Windows服务-- 启动MySQL net start mysql-- 创建Windows服务 sc create mysql binPath = mysqld_bin_path(注意:等号与值之间有空格)连接与断开服务器mysql -h 地址 -P 端口 -u 用户名 -p 密码SHOW PROCESSLIST -- 显示哪些线程正在运行SHOW VA...原创 2018-09-21 17:23:50 · 191 阅读 · 0 评论 -
企业级缓存架构及应用问题 CDN 缓存、Ehcache 、Guava Cache、Redis 、Memcached 、Feed
本文主要介绍大型分布式系统中缓存的相关理论,常见的缓存组件以及应用场景。 缓存概述缓存的分类 缓存主要分为四类,如下图: CDN 缓存 CDN(Content Delivery Network 内容分发网络)的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中。 在用户访问网站时,利用全局负载技术将用户的访问指...原创 2018-09-20 11:51:36 · 553 阅读 · 0 评论 -
线程池
在面向对象编程中,对象创建和销毁是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是对一些很耗资源的对象创建和销毁。如何利用已有对象来服务就是一个需要解决的关键问题,其实这就是一些"池化资源"技术产生的原因。比如大家所熟悉的数据...原创 2018-09-20 11:11:26 · 196 阅读 · 0 评论 -
Java根据地图经纬度计算实际距离
private static final double EARTH_RADIUS = 6371000;//赤道半径(单位m)private static final double INTEGR_NUM = 10000;/** * 基于googleMap中的算法得到两经纬度之间的距离,误差 <= 0.2m * @param lat1 第一点的精度 * ...原创 2019-02-03 10:46:41 · 2032 阅读 · 0 评论 -
String类中split方法坑点及解决方案
大家都知道split方法是将一个字符串作为this的分隔符来传入方法中,而返回值是一个字符串数组。而总有一些不安分的一些人,拿一些不常用符号当这个分隔符为“ . $ | ( ) [ { ^ ? * + \” 这些符合时,这个方法就会出现一个小问题。在split方法中的正则表达式中有可能会搜索不到这些特殊符号,导致拆分失败。第一种情况:所有字符分开,每个字符为一个元素...原创 2019-04-01 11:34:12 · 2575 阅读 · 0 评论 -
JDK8并行流
以前写过的一个并行流Demo,记得当初一个群里的小朋友非说并行流执行快,我较真的测试了一次,然而现实说明,没有亲自试验过的说法永远都是不可信的。虽然我这个逻辑并不能真正的证明实际业务中并行流一定不如基础方法,但是在一定程度上的表达了新技术方案不是随便就可以使用的。import java.util.ArrayList;import java.util.List;import java....原创 2019-04-23 01:52:26 · 901 阅读 · 0 评论 -
Fail-Fast 机制
fail-fast 机制是java集合(Collection)中的一种错误机制。当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件。例如:当某一个线程A通过iterator去遍历某集合的过程中,若该集合的内容被其他线程所改变了;那么线程A访问集合时,就会抛出ConcurrentModificationException异常,产生fail-fast事件。要了解fail-f...原创 2019-05-28 12:07:29 · 922 阅读 · 0 评论 -
Struts2
一。Struts2的作用 1.解决MVC开发过程中Controller的问题、 2.什么是MVC MVC是一种编程思想,由设计者人为的将项目划分成三个层次:M(Module 模型层)V(View 视图层)C(Controller 控制层) 3.MVC编程思想的优点 ① MVC处理后,便于多人协同开发,提高开发效率 ② 解耦和:解除代码的强关联性 在修改一部分代码实现时不影响其他代码 ...原创 2018-05-28 11:10:11 · 207 阅读 · 0 评论 -
MyBatis基础面试题
1、#{}和${}的区别是什么? #{}是预编译处理,${}是字符串替换。Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;Mybatis在处理${}时,就是把${}替换成变量的值。使用#{}可以有效的防止SQL注入,提高系统安全性。 2、当实体类中的属性名和表中的字段名不一样 ,怎么办 ? ...原创 2018-09-06 17:37:49 · 823 阅读 · 0 评论 -
Spring:BeanFactory和ApplicationContext
Spring通过一个配置文件描述Bean及Bean之间的依赖关系,利用Java的反射功能实例化Bean并建立Bean之间的依赖关系。Spring的Ioc容器在完成这些底层工作的基础上,还提供了Bean实例缓存、生命周期管理、Bean实例代理、事件发布、资源装在等高级服务。 Bean工厂(com.springframework.beans.factory.BeanFactory)是...原创 2018-09-06 14:21:13 · 327 阅读 · 0 评论 -
JDK9特性
1.modularity System 模块系统 个人理解:在包结构上层加入module来更好的控制访问权限,从以往全公开jar改为半公开jar; 减少不必要的classLoader执行,以减少JVM的内存占用,从而提高启动、运行速度;Modularity提供了类似于OSGI框架的功能,模块之间存在相互的依赖关系,可以导出一个公共的API...原创 2018-08-24 16:48:42 · 5245 阅读 · 0 评论 -
Linux
一。简介Linux 1.它衍生自Unix,是一个多用户访问的专业操作系统,主要应用在服务器中 操作系统由核心+接口工具组成 核心:操作系统的最底层的东西,其真正掌管整个硬件资源 接口工具:可以和核心对接,进而可以使用户能够调用核心 Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。 Linux可安装在各种计算机硬件设备...原创 2018-06-12 17:28:27 · 260 阅读 · 2 评论 -
MySql
1.数据类型 ①数字类型 【1】整数: (1) tinyint:如果设置为UNSIGNED类型,那么只能存储范围在0~255之间的整数;如果不设置为UNSIGNED类型那么存储范围在-128~127之间的整数,占用空间为1个字节 (2)smallint:是一种精确数值数据类型,其精度在经过算术运算后不变;有符号的数值存储范围在-...原创 2018-05-23 17:05:57 · 805 阅读 · 0 评论 -
Servlet
一。简介 1.什么是Servlet Servlet是JavaWeb程序开发基础,JavaEE规范的一个组成部分 需要在web.xml中配置访问路径 servlet标签servlet-mapping标签 2.Servlet的作用 通过Servlet这种类型处理之后,生成动态网页(数据变化) 3.什么是HtppServlet HttpServlet是sun公司提供的一个专门为Http协议提供服...原创 2018-05-28 11:18:29 · 173 阅读 · 0 评论