![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
经验分享
文章平均质量分 58
qian_348840260
这个作者很懒,什么都没留下…
展开
-
物流面信息识别
原创 2022-02-10 15:53:33 · 97 阅读 · 0 评论 -
Feign输出日志(Demo)
1. 修改配置文件#'com.excemple.service.HelloService'为feignclient接口在项目中的路径logging.level.com.excemple.service.HelloService=debug转载 2021-07-23 17:04:41 · 426 阅读 · 0 评论 -
mysql之B+索引
最简单方式理解为什么MongoDB索引选择B-树,而 Mysql 选择B+树MySQL索引原理及慢查询优化MySQL索引背后的数据结构及算法原理联合索引(复合索引)在B+树上的结构原创 2021-03-23 14:13:34 · 79 阅读 · 0 评论 -
PhantomReference 引发的GC问题
一、问题分析围栏系统cms gc时间长,导致其他依赖系统接口报警。 查询gc日志如下:2020-05-08T16:12:11.082+0800: 883881.058: [GC remark 2020-05-08T16:12:11.082+0800: 883881.058: [Finalize Marking, 0.0272172 secs] 2020-05-08T16:12:11.109+0800: 883881.085: [GC ref-proc2020-05-08T16:12:11.109原创 2021-03-02 15:26:17 · 893 阅读 · 0 评论 -
选单大厅架构分享
需求背景 即时单: 订单超过一定时间未派单成功,进入即时单大厅,满足'特定过滤条件'的司机可查看并抢单 预约单: 订单超过一定时间未派单成功,进入预约单大厅,满足'可发送抢单通知条件'的司机可查看并抢单 奖励: 对于通过抢单大厅抢单成功的订单,给予司机在价格等方面一定程序的奖励feed流系统架构 (脸书|推特|微博|知乎) 粉丝关注大V,大V发布文章(或动态),粉丝feed流中显示。 派单系统推送订...原创 2021-02-02 11:38:28 · 277 阅读 · 0 评论 -
Apparent connection leak detected
异常信息:pool.all.log.2021012610.gz:java.lang.Exception: Apparent connection leak detectedpool.all.log.2021012610.gz: at com.sq.driver.datasource.HikariDatasourceWrap.initDatasource(HikariDatasourceWrap.java:73)pool.all.log.2021012610.gz: at com.sq.config.原创 2021-01-26 18:48:30 · 12468 阅读 · 1 评论 -
一种导致AbstractMethodError问题的原因
1)App和B-lib依赖于A-lib的不同版本,并且都实现了A-lib中定义的一个接口IFunc,运行时A-lib会调用各IFunc实现;2)B-lib仅在编译阶段依赖A-lib,实际运行的是APP中集成的A-lib;3)APP端升级了A-lib,在IFunc中新增了一个方法aNewMethod()。由于B-lib并未针对v2版本的A-lib进行适配,因此运行时当A-lib调用B-lib中的IFunc.aNewMethod()时就会发生AbstractMethodError。解决办法...转载 2021-01-23 17:29:42 · 511 阅读 · 0 评论 -
Java AbstractMethodError 原因分析
背景AbstractMethodError异常对于我来说还是比较不常遇见的,最近有幸遇到,并侥幸的解决了,在这里把此种场景剖析一番,进入正题,下面是AbstractMethodError在Java的异常机制中所处的位置:现在明确了AbstractMethodError所具有的特性:1.它是Error的子类,Error类及其子类都是被划分在非检查异常之列的,就是说这些异常不能在编译阶段被检查出来,只能在运行时才会触发。2.通过API文档里面的解释大致得出的结论就是说A依赖于B,但是执行的时转载 2021-01-23 17:28:23 · 822 阅读 · 0 评论 -
派单 技术年刊
线程池分享1. io型线程池 PK cpu型线程池2. 阻塞队列的选择3. 延迟可调度线程池隔离 (避免某一城市派单量激增影响到所有的延迟任务,也可以根据不同线程池的处理任务数来动态调整即时单轮间隔)围栏性能优化1. 二级缓存引入2. 稀疏算法引入,避免某个围栏点过多,产生大对象3.Caffeine替换GuavaCache,提升本地缓存性能4. 射线算法 PK rtree算法...原创 2021-01-23 16:55:04 · 108 阅读 · 0 评论 -
干掉GuavaCache:Caffeine才是本地缓存的王
干掉GuavaCache:Caffeine才是本地缓存的王话说,中间件的选择上,Spring(SpringBoot)一直是业界的风向标。比如Spring一直使用「Jackson」,而没有使用Gson和fastjson。SpringBoot2.0默认数据库连接池从TomcatPool换到了「HikariCP」。在本地缓存方面,SpringFramework5.0(SpringBoot2.0)放弃了Google的GuavaCache,选择了「Caffeine」(Drop Guava caching - su转载 2021-01-20 11:24:41 · 120 阅读 · 0 评论 -
logback 使用异步和缓存提升日志效率
主要是使用AsyncAppender 提供异步功能,然后使用 immediteFlush配置使用缓存(缓存8k).注意: 高版本的logback 已经指出SizeAndTimeBasedRollingPolicy , 我的版本是1.0.13可以使用SizeAndTimeBasedFNATP实现。<?xml version="1.0" encoding="UTF-8"?> <configuration> <substitutionProperty .转载 2021-01-20 09:56:58 · 930 阅读 · 0 评论 -
20. 首汽sentinel简介
一、sentinel简介Sentinel是一个具有流量控制、熔断降级、系统负载保护等多个维度保护服务稳定性的开源框架二、使用sentinel 的目的通过使用Sentinel, 当检测到调用链路中某个资源出现不稳定的表现,例如请求响应时间长或异常比例升高的时候,则对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联故障。当异常发生时,非核心链路走降级策略,降低一定的用户体验来,保证系统的稳定性..三、使用方式步骤一: 升级组件版本到1.1.5或者以上 1原创 2020-09-19 13:30:12 · 140 阅读 · 0 评论 -
配置中心优化点(apollo)
1.命名空间多应用共享配置2.灰度发布配置3.多机房分集群配置(应用空间较小)4. 支持多种配置格式(properties|yaml|xml)原创 2020-08-04 17:00:27 · 279 阅读 · 0 评论 -
最简单方式理解为什么MongoDB索引选择B-树,而 Mysql 选择B+树
这个问题是我在看视频的时候老师提到的,虽然之前知道他们各自的索引结构但是还没有研究过原因。在网上一搜答案特别多。但是都特别的啰嗦。于是总结了这篇文章。一、B-树和B+树的区别很明显,我们要想弄清楚原因就要知道B-树和B+树的区别。为了不长篇大论。我们直接给出他们的形式总结他们的特点。1、B-树B-树是一种自平衡的搜索树,形式很简单:这就是一颗B-树。针对我们这个问题的最核心的特点如下:(1)多路,非二叉树(2)每个节点既保存索引,又保存数据(3)搜索时相当于二分查找.转载 2020-08-03 17:17:18 · 504 阅读 · 3 评论 -
OkHttp连接池源码追踪
1.先从构建OkHttpClient说起重点看下ConnectionPool connectionPool = new ConnectionPool(maxIdleConnections, keepAliveDuration, TimeUnit.MINUTES);public class OkHttpUtil { private static final Logger logger = LoggerFactory.getLogger(OkHttpClient.class); pri原创 2020-05-21 19:46:04 · 476 阅读 · 0 评论 -
MongoDb连接池源码追踪
1. 先来看构建MongoClient使用的参数MongoClientOptions.Builder optionsBuilder = builder() .applicationName(applicationName) .maxConnectionIdleTime(config.getMaxConnectionIdleTime() == 0 ? MAX_CONNECTION_IDLE_T原创 2020-05-21 18:41:20 · 6826 阅读 · 0 评论 -
OKHTTP3源码和设计模式-1
在《打车APP实战》课程中,我们使用 OkHttp3 简单搭建了一个网络框架, 实践了 OkHttp3 的用法。不过课程本身的重点是 MVP 架构的实践,所以没有进一步 OkHttp3 底层的实现细节。本文来探究一下 OkHttp3 的源码和其中的设计思想。关于 OkHttp3 的源码分析的文章挺多,不过大多还是在为了源码而源码。个人觉得如果读源码不去分析源码背后的设计模式或设计思想,那么读源码的意义不大。 同时,如果熟悉的设计模式越多,那么读某个框架的源码的时候就越容易,两者是相辅相成的,这也是许多大转载 2020-05-20 20:55:23 · 180 阅读 · 0 评论 -
roceketmq自动创建topic那点事
broker端设置autoCreateTopicEnable=true,表明支持自动创建topic (本文讨论的前提)broker在启动时,检测到autoCreateTopicEnable=true 并且topic:TBW102不存在时,会自动创建名为TBW102的默认主题,主题创建的队列数为broker.properties中的defaultTopicQueueNums,在向nameServer发送心跳包时(默认每30s发送一次)会把主题信息通知到nameServer,另外会有一定时任务,将topi.原创 2020-05-18 16:08:41 · 1276 阅读 · 0 评论 -
roceketmq自动创建topic踩过的坑
1.RocketMQ在发送消息时,会首先获取路由信息。如果是新的消息,由于MQServer上面还没有创建对应的Topic,这个时候,如果上面的配置打开的话,会返回默认Topic的(RocketMQ会在每台broker上面创建名为TBW102的Topic)路由信息,然后Producer会选择一台Broker发送消息,选中的broker在存储消息时,发现消息的Topic还没有创建,就会自动创建To...原创 2020-02-20 10:57:55 · 3235 阅读 · 0 评论 -
cas sso
http://jasig.github.io/cas/4.0.x/images/cas_flow_diagram.png原创 2015-07-09 17:05:16 · 405 阅读 · 0 评论 -
dns解析超时故障分析
XX发送接口超时问题排查一句话总结XX发送接口逻辑中调用了YY的http接口,在http client中dns解析没有超时控制,导致http调用偶发超时。现象XX上线后,发现线上监控显示发送消息的接口响应时间会有偶发的高峰,查看日志,超时的响应时间多为3-5s,并且在同一时间点出现,最高有9s的超时时间,一台机器每天约有10次左右慢请求(单机send接口qps约1)转载 2015-01-15 10:43:18 · 16787 阅读 · 0 评论 -
基于SLF4J MDC机制实现日志的链路追踪
https://blog.csdn.net/xiaolyuh123/article/details/80593468转载 2018-11-27 13:58:21 · 440 阅读 · 0 评论 -
关于两个update语句互相死锁的显现,加深我们对锁的了解
首先是环境脚本CREATE TABLE [dbo].[table1]( [A] [nvarchar](10) NULL, [B] [nvarchar](10) NOT NULL, [C] [nvarchar](10) NULL) ON [PRIMARY]GOINSERT [dbo].[table1] ([A], [B], [C]) VALUES (N'aa1', N'b1', N'11')INSE...转载 2018-05-24 17:21:21 · 490 阅读 · 0 评论 -
互联网架构
http://weibo.com/thinkpc互联网架构,主要追求的是高可用,可扩展 这两个特性在这里做了一些个人的总结,算是给2014年的工作做个总结。推陈出新:一定要做的,死守积累会逐渐丢失人才,但凡技术公司都会不断更新技术KISS原则:keep it simple stupid优秀的代码都会很简单,简单理解,简单更改,能把复杂的事情做简单是一转载 2015-03-16 10:08:08 · 500 阅读 · 0 评论 -
Graphite的Dashboard绘制的注意事项和最佳实践
Graphite绘制注意事项为:命名规范:业务接口采用:API-业务组-模块-EXT方式,例如API-Status-Feed相关依赖采用:-HTTP,-RPC的方式,例如Feed依赖的RPC服务API-Status-Feed-RPC后端服务:RPC-服务名,例如 RPC-ObjectDashboard整体设置:时间设置:Relative转载 2015-02-27 15:57:02 · 1532 阅读 · 0 评论 -
JDK不同版本的Collections.Sort方法实现
一句话总结:JDK7中的Collections.Sort方法实现中,应用了比较运算的基本属性:若A大于B,则B小于A,若A等于B,则B等于A。所以要求传入compare方法在传入参数交换时,返回值正负也需要交换,或恒为0,否则可能会在排序时抛错。 现象:昨晚偶然发现XX业务线上接口调用返回服务器内部异常。而调用仿真环境接口返回正常。查看日志发现报错如下:2015-01-14 2转载 2015-01-19 14:08:17 · 5829 阅读 · 0 评论 -
前端机单机容量评估公式
前端机单机容量评估公式1。计算单机极限qps。 压测:压测最关心的两个值qps,rt(响应时间)。 当rt达到无法容忍的上限, 或者系统某些地方开始出现瓶颈(如内存不足,系统频繁full gc,I/O等待时间过长,CPU load超高) 此时的qps便是一个机器能承受的极限qps2。计算系统峰值qps。转载 2015-01-15 19:41:56 · 897 阅读 · 0 评论 -
日志查询利器 Logstash和ElasticSearch
日志查询利器 Logstash和ElasticSearch一、需要解决的问题:1、日志分散在各个不同的硬件设备上,特别是在分布式系统下,想找到一个日志,将是很困难的事情。2、日志检索是一个比较麻烦的事情,通常工程师会采用grep等linux指令进行处理。但是跨时间段查询、计数等需求,需要更多的系统级别的指令综合处理才能完成。无形中增加了难度。3、日志检索到后,可能有转载 2015-01-16 11:21:16 · 888 阅读 · 0 评论 -
Git分支模型 最佳实践
两篇不错的最佳实践:1.http://www.ruanyifeng.com/blog/2012/07/git.html转载 2014-11-03 15:58:18 · 566 阅读 · 0 评论 -
项目总结
1. 缓存开关 开加缓存,关所有xddh原创 2014-05-13 15:25:47 · 510 阅读 · 0 评论 -
项目总结
1.订单里程碑彩票订单在生命周期中,有很多重要历史事件,如下单、预订、出票等。可以定义出所有重要的历史事件,并在相关事件发生时记录日志,以方便关注订单的重大事件。彩期里程碑同订单里程碑。2.操作的原子性和可回溯性3.追号(套餐)子订单的生成策略在彩期开期时,触发生成子订单及明细,这样做的好处是避免了在下单时生成大量的子订单及明细,同时也避免了彩期停售(春节)对追号的影响。4.消原创 2013-01-05 16:39:46 · 435 阅读 · 0 评论 -
Memcache内存分配策略 page chunk slat
http://blog.163.com/wind801@126/blog/static/11755715420117110527516/一、Memcache内存分配机制 关于这个机制网上有很多解释的,我个人的总结如下。Page为内存分配的最小单位。Memcached的内存分配以page为单位,默认情况下一个page是1M,可以通过-I参数在转载 2015-03-17 19:00:42 · 1248 阅读 · 0 评论 -
Memcached数据被踢(evictions>0)现象分析
http://timyang.blog.51cto.com/1539170/307125http://www.wangshangyou.com/linux/50.html很多同学可能熟知Memcached的LRU淘汰算法,它是在slab内部进行的,如果所有空间都被slabs分配,即使另外一个slab里面有空位,仍然存在踢数据可能。你可以把slab理解为教室,如果你的教室满了转载 2015-03-17 20:05:47 · 769 阅读 · 0 评论 -
复杂业务逻辑注意的几个点
1.分段耗时2.异步聚合3.降级策略4.开关设置5.requestID串联原创 2015-02-27 14:21:23 · 2324 阅读 · 0 评论 -
怎样解决httpclient中出现NoHttpResponseException异常
转载地址: https://www.2cto.com/kf/201710/688548.htmlhttpclient版本:4.5.2在项目实际运行中,偶发异常:org.apache.http.NoHttpResponseException。官网解释是:In some circumstances, usually when under heavy load, the web server may b...转载 2018-03-29 17:20:14 · 7022 阅读 · 0 评论 -
设计高并发下的读服务?
link:http://mp.weixin.qq.com/s?__biz=MzA5Nzc4OTA1Mw==&mid=2659597710&idx=1&sn=e8801d7aba68485489cfcac9ac2fd2ba&scene=23&srcid=0712VaE8bNOtUNM3eE8z1s9g#rd设计高并发下的读服务?一个电商老兵的10条经验原创 2016-07-12 马顺转载 2016-07-15 11:43:58 · 598 阅读 · 0 评论 -
项目查询经验
1. ps -ef|grep java 查询线程号root 10909 1 0 Mar04 ? 00:28:38 /usr/local/jdk1.7.0_71/bin/java -Djava.util.logging.config.file=/home/guoyf/tomcat-user-service/conf/logging.properties -D原创 2016-03-21 18:34:03 · 598 阅读 · 0 评论 -
zookeeper应用场景
http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/转载 2015-08-20 10:37:05 · 383 阅读 · 0 评论 -
MySQL开发规范
开发规范是跟公司的实际情况结合起来的,不是普适规则,仅供参考。这个规范集合了原来在新浪,阿里,百度,人人,以及去哪儿的朋友的一些规则。不是某个人的贡献,是整个DB组共同制定出来的,可能还有纰漏,请过客批评指正。1.命名规范(1)库名、表名、字段名必须使用小写字母,并采用下划线分割。(2)库名、表名、字段名禁止超过32个字符。(3)库名、表名、字段名必须见名知转载 2015-05-29 11:31:09 · 454 阅读 · 0 评论 -
系统的一些监控点
非业务类:1. 接口性能 avg,qps,max,min,sla,tps2. 分步耗时3. 缓存监控 容量,踢除率,命中率,带宽(memcached和redis的指标不同)4. JVM相关监控 内存分配,GC,各代使用占比,类加载数,即时编译,jvm启动参数5. tomcat相关监控 tomcat线程池,servlet信息,StringCache,Connector,tom原创 2015-05-28 10:57:50 · 488 阅读 · 0 评论