自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 人工智能(二)-Transformer模型

上篇文章以对话模式为例讲了目前人工智能的整体架构,但是大模型依然有很多细节问题,这里作者讲一讲目前的Transformers模型原理。

2024-05-22 20:49:29 874

原创 人工智能(一)架构

人工智能这个词不是很新鲜,早就有开始研究的,各种推荐系统、智能客服都是有一定的智能服务的,但是一直都没有体现出多高的智能性,很多时候更像是‘人工智障’。但是自从chatGpt3被大范围的营销和使用之后,人工智能逐渐体现出来他的智能性和高度的推理分析能力,他的范围也不再局限于软件行业,财务、法律、人事等等各种各样的行业都开始进行学习使用。 作者经过一段时间的研究学习,对于AI也有了自己的一些理解,在这里进行分享,希望读者可以解开心中的疑惑,并且做好未来AI的学习应对。

2024-05-16 12:06:33 1064

原创 问题(十五)性能分析组件类加载问题

最近作者在做性能分析服务的agent,有个功能是在代理启动的时候加载配置中心,拿到具体哪些目录下的类需要增强,这里碰到了类加载失败的问题。

2024-04-30 13:04:37 827

原创 微信小程序(六)定位搜索

​作者上一章讲了微信小程序的地图实现微信小程序(五)地图-CSDN博客,但是还有一个功能是和地图紧密结合的,那就是位置搜索定位,这里作者讲讲实现和原理,包括城市筛选。

2024-04-12 12:04:08 642

原创 前端(三)React踩坑记录

作者最近新的平台项目是需要用react的,和vue区别还是比较大的,这里记录下踩坑和使用经验。

2024-04-01 19:33:32 1250

原创 数据清洗(一)Excel

线上出现问题之后的数据清洗是少不了的,有的可以直接通过接口或者mq补偿,有的写sql更新db就可以,但是在匹配关系比较复杂的时候就需要建立临时表做关联匹配,数据量不大可以直接用excel进行匹配。

2024-03-22 10:04:29 1123

原创 架构(十六)本地方法缓存

作者需要在底层公共包里面加一个方法反射的工具类,看起来很简单的事,问题也不少,这里讲讲过程。在结合同事的思维误区聊聊本地加锁块的问题。

2024-03-06 11:45:20 3648

原创 架构(十五)Java字节码增强

一般如果需要做增强类的架构工具会使用SpringBoot提供的切面,但是这逃不开两个问题:1、使用方需要加注解代码;2、版本更新导致的发布。 所以java还提供了字节码层面的增强方案,对使用的系统是无感的。

2024-02-27 09:46:20 7375

原创 架构(十四)动态Groovy脚本

了解groovy和python的就可以直接到第三章了动态的脚本这样就实现了,其实用python也可以,java也有支持python的执行库,不过用起来就有点曲折了。即使用得是和java无缝集成的Groovy,过程也是有点绕弯的,而且还有一些小坎没写,写出来会降低作者的逼格,毕竟很多时候调试开发遇到的都是一些很小的问题一下子没转过来,事后想想又觉得脑子丢了一会。有兴趣的同学可以在评论区和作者讨论自己项目的疑难杂症!一起交流进步。

2024-02-20 12:10:35 10040 4

原创 架构(十三)动态本地锁

加锁大家都知道,但是目前提供动态锁的基本都是分布式锁,根据订单或者某个收费款项进行加锁。比如这个1订单要收刷卡费用,那就OREDER_1做为key丢到redis进行分布式加锁。这也是当下分布式锁最流行的方式。 但是对于平台项目或者一些并发程度低的场景,分布式锁就没有必要了,本地锁更加方便。但是本地锁只有synchronized、ReentrantLock之类的方式,想动态的加锁只用他们是实现不了的。

2024-02-06 18:52:15 1947

原创 架构(十二)动态Excel

作者最近的平台项目需要生成excel,excel的导入导出是常用的功能,但是作者想做成动态的,不要固定模板,那就看看怎么实现。

2024-02-05 12:01:14 12131 3

原创 架构(十一)从0到1实现动态定时任务

作者的平台项目最近需要实现一个功能,用户可选择这个任务什么时候执行,执行频率是什么? 这其实就是一个定时任务,只不过需要动态的,让用户自由选择。

2024-01-29 13:11:09 14305

原创 生产问题(十四)K8S抢占CPU导致数据库链接池打爆

线上一天出现了两次数据库连接失败的大量报错,一开始以为是数据库的问题,但是想了想如果是数据库的问题,应该会有大量的应用问题具体分析之后,发现其实是容器cpu出现了Throttled,导致大量线程阻塞

2024-01-24 12:18:10 16075

原创 前端(二)VUE功能集锦

作者开发工具平台的时候,用到了vue和element-ui,这里写一下各种功能使用,有的是绕点弯路,有的是需要结合实现需要自己改写一下。

2024-01-16 12:08:07 18708

原创 生产问题(十三)谷歌Protobuf误修改系统全局时区

最近其他组出了个线上问题,导致用户的时间出现问题,影响用户出行,后来才发现是谷歌的Protobuf会更改系统全局时区。不过有一说一,感觉jdk的问题更大。

2023-12-25 12:38:14 26494

原创 生产问题(十二)GC垃圾回收导致空指针

最近线上出现由于线程池任务执行超时导致的空指针,按道理说基本不会很多执行超时的,看了看监控,那个时间点发生了gc,gc时间超过5s。 说明这次是gc垃圾回收导致的问题,实际上需要排查解决的s垃圾回收问题。表象总是和实际的原因差距很大。

2023-12-20 12:14:35 27880

原创 微信小程序(五)地图

作者开发《目的地到了》需要满足用户选取地址作为目的地的需求,所以需要使用到地图。作者用的是腾讯地图,这里介绍下技术实现。

2023-12-18 08:55:24 4998

原创 微信小程序(四)登录

微信小程序的登录可以说是必备的门户,作者今天介绍一下微信小程序如何登录。

2023-12-12 19:14:24 6944

原创 微信小程序(三)发消息

作者开发《目的地到了》的时候需要给用户发消息,一开始用了消息模板,后面上真机才发现微信把这个给取消掉了。后面通知用户都是通过订阅消息

2023-12-07 09:14:50 9467

原创 生产问题(十一)日志JavaAgent-NoClassDefFoundError

组内最近做了一个日志公共组件,用的是javaagent的方式,之前搞的maven jar包每次都要把所有系统都发一遍,太麻烦。javaagent通过Java虚拟机(JVM)的Instrumentation API来实现代码的侵入。通过Instrumentation API,Java agent可以在类加载过程中修改字节码,向目标代码中插入自定义的逻辑或进行其他操作。我们的组件使用bytebuddy进行字节码修改。

2023-12-05 18:54:02 9382

原创 微信小程序(二)开发审核踩坑记录

作者在开发微信小程序《目的地到了》的过程中遇到过许多问题,这里讲讲一些技术和经验问题。

2023-11-30 12:01:55 35547 1

原创 生产问题(十)Log4j-tag丢失

最近有个线上日志丢失tag的问题,是组内封装了后置请求的拦截器把请求的响应结果存到ClickHouse里面去,但是日志总有一些tag丢失,作者提出父级线程的threadlocal被清空,同事认为可能是threadlocal的弱引用在gc的时候被回收。两种想法其实都是有可能的,那就要一个个验证。这里要感谢ld和cbc的共同排查、讨论,最后锁定原因是父级线程的MDC被组件清空。

2023-10-31 10:11:51 10801

原创 微信小程序(一)域名备案及HTTPS访问

接上篇云服务器-Docker容器-系统搭建部署-CSDN博客,一方面是提高实践架构技术,一方面给家里人做点生活小工具。在搭建好服务器和前后端程序之后,经过测试,作者给家里人做的生活系微信小程序就差不多可以用了。先搞了一个体验版本试用。然后就崩了,接口不通,打开调试器再使用又可以了。

2023-10-23 09:17:07 27826

原创 生产问题(九)Mysql8.0 ddl问题

最近线上有个表要加几个字段,提交db单之后执行了一天都没有结束,这个表的容量不大不应该这样。因此作者与DBA进行了深入沟通,了解了集团使用gh-ost更新表结构的过程,问题出在交换表名的过程中。

2023-10-11 09:15:00 2807

原创 架构(十)Mybatis动态数据源及其原理

作者最近的平台项目需要一个功能,数据库是动态的,sql也是动态的,所以需要动态注入数据源,并且能够在运行过程中进行切换数据库。作者在这里分享一下做法,以及Mybatis这样做的原理。

2023-09-15 09:15:00 8352

原创 前端(一)Vue+Java实现动态表格展示

作者最近做的平台项目有个功能,展示数据执行结果,实际上就是要展示多个表格,但是表格的数量、行、列都是不固定的,相当于要做一个通用化的表格展示。

2023-09-12 09:15:00 13039

原创 架构(九)云服务器-Docker容器-系统搭建部署

最近公司在海外上云服务器,作者自己也搞了云服务器去搭建部署系统,方便了解整体架构和系统的生命周期,排查解决问题可以从原理侧进行分析实验。虽然用的云不是同一个,但是原理都是相通的。

2023-08-19 09:59:19 50876

原创 架构(八)低代码平台使用H2内存数据库

作者目前在做的平台使用到了H2,这里介绍下使用场景、使用方式,出于以下两个原因会使用H2: 1、平台化的项目一般是用户使用脚本或者sql进行通用的执行,这样可以实现低代码平台,不需要管理类之间的引入、依赖、编译,页面上点点点和输入就可以了,所以很多时候需要把数据放入H2进行sql解析实现跨库、跨实例、跨服务的数据分析2、在数据集合写起来非常复杂的时候,举个例子:集合a、b,ab的对象有字段c是一一对应的,然后集合a的其他字段和b元素下面挂着的集合又是对应的,这个组合写起

2023-08-11 12:13:09 4059

原创 开源工具(四)适合缓存

​ github地址:https://github.com/SongTing0711/fit-cache目前业内对于本地缓存、Redis、Es、Ck等缓存的使用处于比较随意的状态,一方面是资源的浪费,另外一方面如果是本地缓存可能是导致oom的最后一根稻草。作者创作的fit-cache提供key是否适合缓存,适合缓存的时间,解决缓存滥用、缓存同时失效等问题。

2023-07-21 19:20:38 25578

原创 生产问题(八)对象深拷贝导致空指针

今天在发布的时候产生了空指针,根据堆栈显示BeanCopyUtils.copyAppointFields的时候产生了空指针,这里说明下这个工具类和方法是公司内部封装的,用于指定部分字段进行复制。 作者看到堆栈第一反应就是这个工具类有问题,作者和leader讨论了下,觉得是有可能的,下面介绍下排查过程和原理。

2023-07-06 10:18:11 734

原创 架构(七)热点探测-HotKey在物联网可以做什么

​博主今天聊一聊物联网领域的热点探测,讲一讲架构和源码,主要是京东武伟峰的HotKeyhotkey: 京东App后台中间件,毫秒级探测热点数据,毫秒级推送至服务器集群内存,大幅降低热key对数据层查询压力核心功能:热数据探测并推送至集群各个服务器,适用于许多第三方存储的热点探测。说起来有点显得官方,具体看一下这个中间件在物联网、资产领域可以使用到的场景,然后介绍一下它的实现原理,便于搭建和二次开发。

2023-05-23 14:37:34 22393 6

原创 跟chatGpt 聊聊发布的时候老节点的线程池会怎么样

今天同事提了一个问题,每次系统发布的时候在老的节点服务里面的线程池会怎么样,队列里面的任务会被执行完毕吗? 博主一直认为优雅退出一定是会等执行完才退出的,结果跟chatGpt聊了聊,一波三折。

2023-05-17 20:30:22 7550

原创 架构(六)系统架构设计

最近拜读了携程一位大牛:Gavin的文章,干货 | 携程商旅订单系统架构设计和优化实践,里面谈及许多架构分层的理念,读后感悟很多,结合博主自己在系统开发过程中的经验聊一聊架构设计。

2023-05-16 18:43:03 49775

原创 会出现Mysql提交事务之后Spring以为没有成功吗

最近有人用博主的Redis回滚工具的时候提出了一个问题,这个工具是根据事务过程中的异常进行回滚,从而保证DB与redis的一致性。 那么如果在事务提交的时候Mysql成功了,但是Spring以为没有成功抛出异常,这时候redis回滚工具失效,那么不就变成了mysql有数据,redis没有了吗? 这位同学明显对于spring和mysql的事务交互还不是那么理解。

2023-04-28 17:23:22 771

原创 并发限流与计算限流的使用与比较

​ 最近有并发较高影响服务稳定性,之前博主分享过自己封装的计算限流工具,github地址:GitHub - SongTing0711/count-limit主要是针对计算资源如:CPU、内存等,使用的其实是加权计数器的限流算法,对于并发流量比较高的场景,其实可以用。但是在计数的过程中要进行资源数量的扣减和归还,这个其实在高并发的时候是多了一层逻辑处理的。如果并发场景消耗的资源比较少其实直接使用滑动窗口、令牌桶等限流算法更加适合,也就是只用于高并发和

2023-04-24 18:44:20 7583

原创 云计算(一)K8S初始化问题

作者公司使用的是K8S底层做云计算,这天有个节点发布的时候卡住了,解决方式分为长短期。 作者跟运维做了一些分析讨论和解决方案,涉及到许多K8S相关的知识,有兴趣的同学可以看看这个原理分析过程。

2023-03-08 09:51:27 25514 1

原创 架构(五)数据批处理加速(GC收集器->安全点->线程池)

有个数据镜像系统每天0点会进行批量处理生成日表,随着数据量不断增大,处理时间从之前的一个小时,目前每天需要接近两小时,一旦继续延迟会影响BI、库存等很多任务。领导让博主进行优化提速。博主从GC收集器、可数循环的安全点放置、CPU与线程搭配等多个方向进行分析实践。

2023-02-07 09:46:38 14061

原创 Java类加载

最近社区讨论了一个比较有趣的类初始化代码public class Test2 { public Test2() { s1++; s2++; } private static Test2 test2 = new Test2(); private static int s1; private static int s2 = 3;}这里涉及的知识其实非常底层,只依靠java知识和开发经验是不行的,必须对jvm有深入的了解才能分析清楚。

2023-01-18 14:31:50 8178

原创 架构(四)Mysql事务、同步、备份

​之前在部门分享主从同步延迟排查解决线上Mysql主从同步延迟排查解决_tingmailang的博客-CSDN博客的时候,同事产生了一些新问题,而且部分同事对于事务、同步、备份的了解仅限于网上的一些博客和社区,不深入也不完全正确,这里做一些分析

2022-12-14 09:49:52 1663

原创 生产问题(七)Mysql for update 导致大量行锁

最近同事的复盘会上提到自己for update一个不存在的where条件导致表锁,然后产生大量的事务失败和读写超时,这时博主非常奇怪,因为虽然网上许多博客写Innodb的表锁行锁与锁升级,但是事实上这都是错误的观点。

2022-12-09 09:47:33 52497 1

redis事务回滚工具

github地址:https://github.com/SongTing0711/redis-transaction 博客地址:https://blog.csdn.net/m0_69270256/article/details/124164125?spm=1001.2014.3001.5502 基于SpringBoot的轻量级redis事务回滚机制,使用栈和ThreadLocal记录业务链的redis操作,发生异常进行回滚,参考了阿里巴巴Seata AT模式的db回滚策略:补偿回滚,记录前镜像与当前操作语句,反向解析生成补偿动作。 1、目前支持链接redis的工具主要是Redisson、RedisTemplate、StringRedisTemplate,默认Redisson 2、进行回滚时需要考虑是否要进行查询前镜像,可以通过设置RedisTransactionCommonUtil的QUERY_PREV属性 3、需要使用RedisTransactionCacheUtils操作需要回滚的redis数据,此时加入threadlocal

2023-05-24

基于加权计数器限流算法的java计算限流工具

代码地址:https://github.com/SongTing0711/count-limit 博客地址:https://blog.csdn.net/m0_69270256/article/d 许多需求计算量都在扩大, 针对大容量、高并发的接口、mq或者其他计算方法,同一时间在运行的计算维度进行限制,相当于把资源到计算的对象维度。 不同于参数限制,工具针对的是服务所有线程对于该计算维度的限流。 与市面上开源的限流工具(如谷歌的RateLimiter令牌桶限流、京东HotKey的滑动窗口限流,更关注流量突发缓解,但是过去流量占用资源是否释放不被关注)不同点在于使用加权计数器限流算法,关注流量的处理结果 1、计算量的存储与并发控制主要分为redis和本地两种,目前支持链接redis的工具主要是redisson、spring redis 2、因此有七种使用方式,默认使用ReentrantLock加锁,本地map缓存 3、如果使用工具的地方很多,存储比较适合使用redis 4、如果限流的方法qps很高,使用redis进行加锁处理可能是比ReentrantLock更好的选择

2023-05-24

基于redis的java分布式代理锁

分布式代理锁,动态的锁后缀采用ThreadLocal或者参数名获取 锁粒度自定义选择,目前实现基于redis,后续扩展zk等 SpringBoot,默认使用redisson链接redis,可以更改注解参数使用Spring redis工具 key分为:无后缀、参数中获取、使用ThreadLocal获取 代码地址:GitHub - SongTing0711/distributed-proxy-lock 博客地址:https://blog.csdn.net/m0_69270256/article/details/124927336?spm=1001.2014.3001.5502

2023-05-24

空空如也

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

TA关注的人

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