常用实例或设计思路
文章平均质量分 68
qian_348840260
这个作者很懒,什么都没留下…
展开
-
1.2亿数据的表结构修改
背景 :tbl_order_detail 表目前存储1.2亿条数据,表中共56个字段。 字段pay_id采用tinyint数据结构,(带符号-128-127,无符号0-255)。随着业务的扩展,pay_id的字段需要扩充,修改为smallInt类型。技术方案:1. 新建tbl_order_detail_a表,与tbl_order_detail保持同样的数据结构(pay_id修改为smallInt类型)2. 数据迁移,将tbl_order_tail中的数据迁移到tbl_order_deta..原创 2022-02-21 17:31:29 · 1584 阅读 · 1 评论 -
traceId 跨线程使用
目录1. 为什么需要这个traceId 2.通过MDC设置traceId 2.1 使用filter过滤器设置traceId 2.2 使用JWT token过滤器的项目 2.3 使用Interceptor拦截器设置traceId 3.logback.xml中配置traceId 4.补充异步方法带入上下文的traceId 5.在接口放回中,增加traceId返回 先看一张图:有同学问:日志中[]中类似uuid的这个traceId是怎么实现的,这边文章就介绍下如何在s转载 2022-02-17 16:44:09 · 3042 阅读 · 0 评论 -
聚集索引 非聚集索引 覆盖索引 联合索引
MySQL 的覆盖索引与回表为什么大家都说 SELECT * 效率低?原创 2021-05-08 11:01:22 · 120 阅读 · 0 评论 -
几个系统的gc参数配置,仅作参考
dispatcher-apiJava HotSpot(TM) 64-Bit Server VM (25.101-b13) for linux-amd64 JRE (1.8.0_101-b13), built on Jun 22 2016 02:59:44 by "java_re" with gcc 4.3.0 20080428 (Red Hat 4.3.0-8)Memory: 4k page, physical 98586924k(6610476k free), swap 0k(0k free)Co原创 2021-03-25 15:32:10 · 2408 阅读 · 0 评论 -
ZooKeeper 的应用场景
ZooKeeper 的应用场景0 OverviewZooKeeper 是一个典型的发布/订阅模式的分布式数据管理与协调框架。ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services.ZooKeeper 解决了什么问题?高性能使得 ZooKee转载 2021-03-19 15:42:29 · 142 阅读 · 0 评论 -
高性能短链设计
前言今天,我们来谈谈如何设计一个高性能短链系统,短链系统设计看起来很简单,但每个点都能展开很多知识点,也是在面试中非常适合考察侯选人的一道设计题,本文将会结合我们生产上稳定运行两年之久的高性能短链系统给大家简单介绍下设计这套系统所涉及的一些思路,希望对大家能有一些帮助。本文将会从以下几个方面来讲解,每个点包含的信息量都不少,相信大家看完肯定有收获 短链有啥好处,用长链不香吗 短链跳转的基本原理 短链生成的几种方法 高性能短链的架构设计 注:里面涉及到不少布隆过转载 2021-03-19 14:03:49 · 83 阅读 · 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 · 917 阅读 · 0 评论 -
选单大厅架构分享
需求背景 即时单: 订单超过一定时间未派单成功,进入即时单大厅,满足'特定过滤条件'的司机可查看并抢单 预约单: 订单超过一定时间未派单成功,进入预约单大厅,满足'可发送抢单通知条件'的司机可查看并抢单 奖励: 对于通过抢单大厅抢单成功的订单,给予司机在价格等方面一定程序的奖励feed流系统架构 (脸书|推特|微博|知乎) 粉丝关注大V,大V发布文章(或动态),粉丝feed流中显示。 派单系统推送订...原创 2021-02-02 11:38:28 · 306 阅读 · 0 评论 -
Java AbstractMethodError 原因分析
背景AbstractMethodError异常对于我来说还是比较不常遇见的,最近有幸遇到,并侥幸的解决了,在这里把此种场景剖析一番,进入正题,下面是AbstractMethodError在Java的异常机制中所处的位置:现在明确了AbstractMethodError所具有的特性:1.它是Error的子类,Error类及其子类都是被划分在非检查异常之列的,就是说这些异常不能在编译阶段被检查出来,只能在运行时才会触发。2.通过API文档里面的解释大致得出的结论就是说A依赖于B,但是执行的时转载 2021-01-23 17:28:23 · 871 阅读 · 0 评论 -
派单 技术年刊
线程池分享1. io型线程池 PK cpu型线程池2. 阻塞队列的选择3. 延迟可调度线程池隔离 (避免某一城市派单量激增影响到所有的延迟任务,也可以根据不同线程池的处理任务数来动态调整即时单轮间隔)围栏性能优化1. 二级缓存引入2. 稀疏算法引入,避免某个围栏点过多,产生大对象3.Caffeine替换GuavaCache,提升本地缓存性能4. 射线算法 PK rtree算法...原创 2021-01-23 16:55:04 · 130 阅读 · 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 · 127 阅读 · 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 · 955 阅读 · 0 评论 -
并发容器技术选型
并发安全的mapHashTableSynchronizedMapConcurrentHashMap CopyOnWriteMap NonBlockingHashMap 并发安全的setSynchronizedSetConcurrentHashMap#newKeySetCopyOnWriteArraySetNonBlockingHashSetHashTable SynchronizedMap SynchronizedSe...原创 2021-01-19 17:53:29 · 273 阅读 · 0 评论 -
maven子项目单独install
ai 父项目下包含 bigdata, carpool, queue-passenger, order-hall四个子项目,互相独立,但某天运维平台突然发生了一件奇怪的事儿,queue-passenger和order-hall无法正常编译,错误原因如下:6:37:25,971[ERROR]Failedtoexecutegoalorg.apache.maven.plugins:maven-install-plugin:2.5.2:install(default-install)onproj...原创 2021-01-07 19:33:16 · 883 阅读 · 1 评论 -
网约车派单之筛选司机
乘客通过网约车下单,以订单上车点为中心,筛选周围满足条件的司机。筛选条件主要有如下维度:1. 位置筛选 考虑到导航距离筛选,需要结合路况,成本较高,一般先直接距离筛选,以订单起始点坐标为中心画圆,查询半径 radius内的司机2. 司机基本信息筛选 如司机状态、车辆车型、司机心跳、服务城市等3. 复杂信息筛选 如限行策略、合规策略、特定区域满足特定条件的司机筛选等复杂信息筛选,这里使用责任链接模式,每个节点调用相关的第三方服务,做好timeout设置及降级策略。下文主要讨论...原创 2020-12-24 19:25:39 · 987 阅读 · 0 评论 -
泛型中? super T和? extends T的区别
原文链接经常发现有List<? super T>、Set<? extends T>的声明,是什么意思呢?<? super T>表示包括T在内的任何T的父类,<? extends T>表示包括T在内的任何T的子类,下面我们详细分析一下两种通配符具体的区别。extendsList<? extends Number> foo3的通配符声明,意味着以下的赋值是合法的:// Number "extends" Number (in th.转载 2020-12-18 17:12:01 · 251 阅读 · 1 评论 -
通俗易懂,TCP为啥要三次握手?
偶然的机会,看到一篇朋友圈里推荐的文章老生常谈,TCP为啥要三次握手?感觉这应该是看过的"TCP三次握手"中最通俗易懂的啦。猛然想到了大学里讲编译原理的孙悦红老师,"没有听不懂的课程,只有讲的不清楚的课程"...转载 2020-12-14 11:22:02 · 85 阅读 · 0 评论 -
计算时间差的正确姿势
第一步先摆出结论,第二步摆出证据证明结论来自阿里开发手册:获取当前毫秒数System.currentTimeMillis(),而不是new Date().getTime();注意:如果想要获取更加精确的纳秒级时间值,使用System.nanoTime()的方式。在jdk8中,针对统计时间等场景,推荐使用Instant类。直白点就是: 当想获取当前毫秒数时,System.currentTimeMillis()优于new Date().getTime()。 如果你想获取到的时间值更精..原创 2020-12-14 11:01:48 · 536 阅读 · 0 评论 -
httpclient驱逐连接策略
生产事故:早高峰订单量突涨,下游etq接口调用异常(部分),org.apache.http.NoHttpResponseException: serverfailed to respond。第一感觉下游应用服务响应能力不足(服务端连接数配置过低或者需要扩容)。线上日志分析发现,此case频率并不高,一分钟发生1-2次,异常10次左右恢复正常,后续继续观察,未再有异常抛出。疑问:应用服务响应能力不足一般会导致上游服务响应时间过长,并持续一段时间,如果无降级且量一直在增长,甚至有可能引发雪崩。但日.原创 2020-09-25 15:37:00 · 1088 阅读 · 0 评论 -
spring cloud 同一系统配置不同的hystrix线程池或不同的超时时间
在 application.yml 配置文件中配置线程池大小hystrix: command: default: execution: isolation: strategy: THREAD threadpool: default: coreSize: 20 AccountApi: coreSize: 10参考:https://blog.csdn.net/lixi...原创 2020-08-11 18:06:01 · 260 阅读 · 0 评论 -
推拉结合实现(准)实时推送
Rocketmqconsumer从broker的consumerQueue中拉取未消费的消息时,采用长轮询机制(push模式),即如果存在直接返回,如果不存在未消费的消息,broker端会hold住此请求30s,在hold期间如果ReputMessageService往ConsumerQueue推送了新消息,则释放hold,给consumer返回数据。因此本质上rocketmq的push模式也是一种pull,通过长轮询达成准实时,给人一种push的感觉------------------------原创 2020-08-11 11:11:58 · 975 阅读 · 0 评论 -
Dubbo&Spring cloud 服务注册和发现 优雅下线&服务存活检测
https://blog.csdn.net/weixin_34248849/article/details/89623726https://xiangxianzui.github.io/2019/08/dubbo%E4%BC%98%E9%9B%85%E4%B8%8B%E7%BA%BF%E5%88%86%E6%9E%90/转载 2020-08-10 16:47:33 · 466 阅读 · 0 评论 -
配置中心优化点(apollo)
1.命名空间多应用共享配置2.灰度发布配置3.多机房分集群配置(应用空间较小)4. 支持多种配置格式(properties|yaml|xml)原创 2020-08-04 17:00:27 · 286 阅读 · 0 评论 -
吞吃异常 深入Spring Boot: 怎样排查 java.lang.ArrayStoreException
原创:https://developer.aliyun.com/article/616541简介:java.lang.ArrayStoreException 分析 这个demo来说明怎样排查一个spring boot 1应用升级到spring boot 2时可能出现的java.lang.ArrayStoreException。java.lang.ArrayStoreException 分析这个demo来说明怎样排查一个spring boot 1应用升级到spring boot 2时可能出现的j.转载 2020-07-27 18:30:55 · 265 阅读 · 0 评论 -
NIO入门实例
服务端/* * Copyright 2015-2101 Shouqi Limousine & chauffeur Group. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *原创 2020-07-08 18:24:08 · 297 阅读 · 0 评论 -
HttpClient连接池的一些思考
https://www.cnblogs.com/hujunzheng/p/11629198.html(排版更精美)https://blog.csdn.net/qq_22845447/article/details/102338945转载 2020-07-01 14:44:30 · 179 阅读 · 0 评论 -
史上最强Java NIO入门:担心从入门到放弃的,请读这篇!
https://www.cnblogs.com/imstudy/p/11108085.html转载 2020-06-29 11:39:45 · 198 阅读 · 0 评论 -
datasource的封装和监控
1.dispatcher-master.xml<?xml version="1.0" encoding="utf-8"?><config> <value>{"name":"dispatcher","driverClassName":"com.mysql.jdbc.Driver", "jdbcUrl":"jdbc:mysql://mysql-m-wr-car-all-test-db.01zhuanche.com:3306/dispatcher?zeroDat原创 2020-05-15 11:44:19 · 364 阅读 · 0 评论 -
rocketmq productor的封装和监控
1.driver-event-pd.xml<?xml version="1.0" encoding="utf-8"?><config> <value>{"name":"driver_event","namesrvAddr":"test-rq01-a.mq.01zhuanche.com:9876", "group":"driverEventGroup", "instanceName":"driverEventInstance", "retryTimesWhe原创 2020-05-12 18:46:16 · 431 阅读 · 0 评论 -
rocketmq consumer的封装和监控
1.rmq-driverTrace.xml<?xml version="1.0" encoding="utf-8"?><config> <value>{"namesrvAddr":"prod-rq05-a.mq.01zhuanche.com:9876;prod-rq05-b.mq.01zhuanche.com:9876","consumerGroup":"driver_queue_driver_trace", "instanceName":"driverQ原创 2020-05-12 18:36:36 · 738 阅读 · 1 评论 -
redis封装和监控
1. CacheManagerpublic class CacheManager { private static Logger LOGGER = LoggerFactory.getLogger(CacheManager.class); private static RedisSupport REDIS_SUPPORT = DispatcherRedisEnum.DISPATCHER_REDIS.get(); private CacheManager() { }原创 2020-05-12 18:22:27 · 250 阅读 · 0 评论 -
Zookeeper的分布式锁
转载https://blog.csdn.net/qiangcuo6087/article/details/79067136转载 2019-03-22 15:21:31 · 88 阅读 · 0 评论 -
高并发Web服务的演变——节约系统内存和CPU
http://mp.weixin.qq.com/s?__biz=MzA3NDM1NjUwMQ==&mid=203337077&idx=1&sn=cc7a5e16a391968a1f520465250b8868&scene=2&from=timeline&isappinstalled=0#rd摘要:现在的Web系统面对的并发连接数在近几年呈现指数增长,高并发成为了一种转载 2015-03-04 10:22:24 · 558 阅读 · 0 评论 -
一张图解释适配器模式
原创 2014-08-06 17:52:48 · 547 阅读 · 0 评论 -
集群环境中实现lock
共享锁在同一个进程中很容易实现,但是在跨进程或者在不同 Server 之间就不好实现了。原创 2014-06-19 16:00:43 · 968 阅读 · 0 评论 -
Junit测试多线程的问题
一同事使用Junit原创 2014-06-18 10:32:58 · 782 阅读 · 0 评论 -
ansjSeg分词工具简介
应用背景: 编辑想对用户提出的问题进行分类,如包含原创 2014-06-17 14:55:20 · 2703 阅读 · 0 评论 -
互联网项目的一些DB设计原则
1.避免表关联的SQL 数据测试证明:表关联SQL的执行花销比分开单条执行SQL的累计花销还要高2.适当的字段冗余 为了减少关联查询(或多条SQL查询),对于常用字段允许适当冗余,冗余的标准:此字段使用频率较高且此字段基本上不需要update3.慎用少用联合主键4.慎用少用外键关联5.主键尽量与业务无关6.主键及索引字段尽量用数字类型7.建立索引避免全表扫描8.枚举类型原创 2013-07-03 10:17:30 · 869 阅读 · 0 评论 -
正则表达式匹配双色球
(?:((0[1-9]\s)|([1|2]\d\s)|(3[0-6]\s))(?!.*\1)){6}\+\s((0[1-9])|(1[0-6])) 01 02 03 04 22 28 + 01 前6个不重复 while((s = in.readLine())!=null){ String[] temp = s.split(" "); if(temp.lengt原创 2012-09-07 11:03:33 · 1877 阅读 · 0 评论 -
StringBuffer.toString误用引发的血案
因对StringBuilder.toString误用引发CPU占用率持续高涨,下文通过分析源码说明了其中的原因http://www.blogjava.net/xylz/archive/2012/03/15/371966.html转载 2012-08-24 15:41:38 · 5518 阅读 · 0 评论