51CTO首页
AI.x社区
博客
学堂
精品班
软考社区
免费课
企业培训
鸿蒙开发者社区
WOT技术大会
IT证书
公众号矩阵
移动端
短视频
免费课程
课程排行
直播课
软考学堂
全部课程
厂商认证
IT技术
24年11月软考
PMP项目管理
免费题库
在线学习
文章
资源
问答
课堂
专栏
直播
51CTO
鸿蒙开发者社区
51CTO技术栈
51CTO官微
51CTO学堂
51CTO博客
CTO训练营
鸿蒙开发者社区订阅号
51CTO软考
51CTO学堂APP
51CTO学堂企业版APP
鸿蒙开发者社区视频号
51CTO软考题库
鸿蒙开发者社区
首页
帖子
问答
资源
课堂
直播
发现
登录/注册
51CTO
中国优质的IT技术网站
51CTO博客
专业IT技术创作平台
51CTO学堂
IT职业在线教育平台
活动
短视频
专栏
极客Show
鸿蒙技术特刊
我的关注
全部帖子
操作系统
OpenHarmony
HarmonyOS
其他
应用开发
卡片开发
三方库
IDE
其他
设备开发
海思开发板
树莓派
其他
框架语言
C/C++
Java
JavaScript
ArkUI / eTS
其他
其他
物联网
云原生
数据库
操作系统
大数据
人工智能
开发语言
其他
社区版务
社区公告
社区生活
意见反馈
社区规则
社区活动
默认
发布时间
热度
原创
精华
热门标签
操作系统
HarmonyOS
龙蜥社区
ThreadLocal夺命11连问(二)
5.ThreadLocal真的会导致内存泄露?通过上面的Entry对象中的key设置成弱引用,并且使用get、set或remove方法清理key为null的value值,就能彻底解决内存泄露问题?答案是否定的。如下图所示:假如ThreadLocalMap中存在很多key为null的Entry,但后面的程序,一直都没有调用过有效的ThreadLocal的get、set或remove方法。那么,Entry的value值一直都没被清空。所以会存在这样一条强引用链:Thread变量Thread对象ThreadLocalMapEntry...
iamwaiwai
0回复
6101浏览
ThreadLocal
后端思维篇:如何抽一个观察者模板(二)
5.Spring观察者模式原理Spring中实现的观察者模式包含三部分:分别是Event事件(相当于消息)、Listener监听者(相当于观察者)、Publisher发送者(相当于被观察者)。用个图表示就是这样:这个ApplicationEvent是放到哪里的,监听者AppliactionListener是如何监听到的。接下来,我们来看下spring框架的观察者原理是怎样哈我们先来看下ApplicationEventPublisher源代码(被观察者发布者)FunctionalInterfacepublicinterfaceApp...
HoverInTheSky
0回复
5812浏览
Spring
jstack那些事(二)
4编码习惯引导4.1设置线程名线程名设置主要是为了在jstack堆栈中便于查询。在logback日志中最好也标注下线程名。当遇到问题也有一个查询源。线程名有如下两种方式:•手工设置线程名ThreadtnewThread(newRunnable(){Overridepublicvoidrun(){somethingprocess}});t.setName("mytestThread");t.start();•线程工厂设置(源码来自rocketmq4.4)publicclassThreadFactoryImplimplementsThreadFactory{privatefinalAtomicLon...
iamwaiwai
0回复
5640浏览
jstack
后端思维篇:如何抽一个观察者模板(一)
前言大家好,我是捡田螺的小男孩。本文是后端思维专栏的第五篇哈,我的整个后端思维专栏都是跟日常工作相关的哈。今天跟大家聊聊什么是观察者模式,如何应用到工作实践中,以及如何抽取一个观察者模板。1.观察者模式定义2.观察者模式的应用场景3.如何实现一个简单的观察者模式4.工作中,如何使用观察者模式的5.Spring观察者模式原理6.基于spring观察者模式,抽取一个通用模板7.唠叨几句,总结一下1.观察者模式定义观察者模式,...
HoverInTheSky
0回复
5213浏览
spring
索引下推,这个点你肯定不知道!
索引下推(IndexConditionPushdown)ICP是Mysql5.6之后新增的功能,主要的核心点就在于把数据筛选的过程放在了存储引擎层去处理,而不是像之前一样放到Server层去做过滤。虽然这是一个比较简单的概念,但是可能很多不细心的同学对于索引下推会存在一个小小的误区,至于是什么,请看下文。什么是索引下推首先,我们创建一张user表,同时建立agename的联合索引,同时插入3条测试数据。然后,我们执行查询explainSELECTfromuserwhere...
HoverInTheSky
0回复
5177浏览
索引下推
追源码的平凡之路
引言在斯坦福大学,乔布斯做了一场我认为他最精彩的演讲之一(另一场可能是iphone的问世发布会)。他讲了第一个故事"connectingthedots"你不可能充满预见地将生命的点滴串联起来;只有在你回头看的时候,你才发现这些点点滴滴之间的联系。所以,你要坚信,你现在所经历的将在你未来的生命中串联起来。你不得不相信某些东西,你的直觉、命运、生活、因缘际会……正是这种信仰让我不会失去希望,它让我的人生变得与众不同。什么是连...
iamwaiwai
0回复
4907浏览
追源码
技术生涯10年,那些让我心动的技术书
英国著名哲学家培根说:“求知可以改进人性,而实验又可以改进知识本身。人的天性犹如野生的花草,求知学习好比修剪移栽。”我小时候就很喜欢看书,也喜欢买书。书就像是我的朋友,不管去任何地方,只要拿本书在手心里,就觉得有安全感。我买的第一本技术书是<<Java编程思想>>。相信很多初学者都看过这本书。书是个大块头,也有大智慧。初入职场的我看这本书却味如嚼蜡,始终不得要领。工作几年后,我才明白我为什么读不进这本书。...
iamwaiwai
0回复
4774浏览
构架图
Feed流应用重构-架构篇
重构,于我而言,很大的快乐在于能够解决问题。第一次重构是重构一个c版本的彩票算奖系统。当时的算奖系统在开奖后,算奖经常超时,导致用户经常投诉。接到重构的任务,既兴奋又紧张,花了两天时间,除了吃饭睡觉,都在撸代码。重构效果也很明显,算奖耗时从原来的1个小时减少到10分钟。去年,我以架构师的身份参与了家校朋友圈应用的重构。应用麻雀虽小,五脏俱全,和诸君分享架构设计的思路。01应用背景1.应用介绍移动互联网...
iamwaiwai
0回复
4718浏览
Feed
ThreadLocal夺命11连问(一)
前言前一段时间,有同事使用ThreadLocal踩坑了,正好引起了我的兴趣。所以近期,我抽空把ThreadLocal的源码再研究了一下,越看越有意思,发现里面的东西还真不少。我把精华浓缩了一下,汇集成了下面11个问题,看看你能顶住第几个?1.为什么要用ThreadLocal并发编程是一项非常重要的技术,它让我们的程序变得更加高效。但在并发的场景中,如果有多个线程同时修改公共变量,可能会出现线程安全问题,即该变量最终结果可能出现异常...
iamwaiwai
0回复
4703浏览
ThreadLocal
Apollo太重了,我选Nacos
目录•简介•安全性的差异•系统复杂度的差异简介前面我们分析了携程的apollo,现在再来看看阿里的nacos。和apollo一样,nacos也是一款配置中心,同样可以实现配置的集中管理、分环境管理、即时生效等等。不过,nacos还具备了服务发现的功能。分析apollo时,我们通过四个问题展开:•为什么使用配置中心•如何设计一个配置中心•apollo是如何设计的•如何使用apollo当然,我们也可以用同样的套路来...
HoverInTheSky
0回复
4562浏览
nacos
有了HTTP,为什么还要RPC?
•OSI网络七层模型•RPC服务◆RPC架构◆同步调用与异步调用◆流行的RPC框架•HTTP服务•总之RPC主要是基于TCPIP协议的,而HTTP服务主要是基于HTTP协议的,我们都知道HTTP协议是在传输层协议TCP之上的,所以效率来看的话,RPC当然是要更胜一筹啦!下面来具体说一说RPC服务和HTTP服务。OSI网络七层模型在说RPC和HTTP的区别之前,我觉的有必要了解一下OSI的七层网络结构模型(虽然实际应用中基本上都是五层),它...
HoverInTheSky
0回复
4245浏览
RPC
一次SQL查询优化原理分析:900W+数据,从17s到300ms
有一张财务流水表,未分库分表,目前的数据量为9555695,分页查询使用到了limit,优化之前的查询耗时16s938ms(execution:16s831ms,fetching:107ms),按照下文的方式调整SQL后,耗时347ms(execution:163ms,fetching:184ms);操作:查询条件放到子查询中,子查询只查主键ID,然后使用子查询中确定的主键关联查询其他的属性字段;原理:减少回表操作,利用延迟关联或者子查询优化超多分页场景。优化前SQLSELECT各种字段FROMtablena...
iamwaiwai
0回复
4481浏览
SQL
2013年,我有点喜欢编程了
知乎上有一个热门问题:你的编程能力从什么时候开始突飞猛进?初看到这个问题,我的嘴角微微上扬。记忆闪回到了2013年,那一年,命运给我了一点点正反馈,我有点喜欢编程了。这篇文章,我想和大家聊聊勇哥读书,看源码,重构,解决线上问题的那些事。1.初心2011年,我服务于一家互联网彩票公司。坦率的讲,选择程序员这个职业,仅仅是为了生存。那个时候,我对缓存,消息队列,分布式,JVM一知半解,背了一些八股文,只是能非常...
iamwaiwai
0回复
4138浏览
重构
阅读JDK源码后,我有了优化它的冲动...
原创
读源码时的思考最近在看concurrent包下线程池的源码,当我看到ThreadPoolExecutor类的时候,发现了JDK源码的一个问题。以下是ThreadPoolExecutor类的addWorker方法的代码片段:javabooleanworkerStartedfalse;booleanworkerAddedfalse;Workerwnull;try{wnewWorker(firstTask);finalThreadtw.thread;if(t!null){finalReentrantLockmainLockthis.mainLock;mainLock.lock();try{intrsrunStateOf(ctl.get());if(rs<SHUTDOWN(rsSHUTD...
万猫学社
0回复
4370浏览
JDK
一文快速入门分库分表中间件 Sharding-JDBC (必修课)(一)
作为ShardingJDBC分库分表实战系列的开篇文章,我们在前文中回顾了一下分库分表的基础知识,对分库分表的拆分方式有了一定的了解,下边我们介绍一下ShardingJDBC框架和快速的搭建一个分库分表案例,为讲解后续功能点准备好环境。一、ShardingJDBC简介ShardingJDBC最早是当当网内部使用的一款分库分表框架,到2017年的时候才开始对外开源,这几年在大量社区贡献者的不断迭代下,功能也逐渐完善,现已更名为ShardingSphere,2020...
iamwaiwai
0回复
1.3w浏览
Sharding-JDBC
一文快速入门分库分表中间件 Sharding-JDBC (必修课)(二)
SQL解析SQL解析过程分为词法解析和语法解析两步,比如下边这条查询用户订单的SQL,先用词法解析将SQL拆解成不可再分的原子单元。在根据不同数据库方言所提供的字典,将这些单元归类为关键字,表达式,变量或者操作符等类型。SELECTorderno,priceFROMtorderwhereuserid10086andorderstatus>0接着语法解析会将拆分后的SQL转换为抽象语法树,通过对抽象语法树遍历,提炼出分片所需的上下文,上下文包含查询字段信息(Field)、表信...
iamwaiwai
0回复
6580浏览
Sharding-JDBC
给女朋友讲 : Java线程池的内部原理
原创
餐厅的约会餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!”大龄程序员老王老王是一个已经北漂十多年的程序员,岁数大了,加班加不过年轻人,升迁也无望,于是拿着手里...
万猫学社
0回复
4701浏览
Java
三分钟后,你将学会在SpringBoot项目中如何集成CAT调用链
原创
买买买结算系统一年一度的双十一购物狂欢节就要到了,又到剁手党们开始表演的时刻了。当我们把种草很久的商品放入购物车以后,点击“结算”按钮时,就来到了买买买必不可少的结算页面了。让我们虚拟一个买买买结算系统,为结算页面提供商品、促销、库存等结算信息,就此系统展开如何在SpringBoot项目中集成CAT调用链。买买买结算系统包含以下4个项目:1.结算UI:为前端页面提供结算的基础数据。2.购物车API:获取用户购物车中有...
万猫学社
0回复
6083浏览
SpringBoot
cat
分布式监控CAT服务端的本地部署
原创
一、CAT简介CAT(CentralApplicationTracking),是美团点评基于Java开发的一套开源的分布式实时监控系统。美团点评基础架构部希望在基础存储、高性能通信、大规模在线访问、服务治理、实时监控、容器化及集群智能调度等领域提供业界领先的、统一的解决方案,CAT目前在美团点评的产品定位是应用层的统一监控组件,在中间件(RPC、数据库、缓存、MQ等)框架中得到广泛应用,为各业务线提供系统的性能指标、健康状况、实时告警等...
万猫学社
0回复
5819浏览
cat
分布式调用链
摊牌了!策略模式在项目设计中用的最多
公众号写的第3篇设计模式类型文章日常Coding过程中,设计模式三板斧:模版、构建者、策略,今天来说下第三板斧策略设计模式策略模式还是比较简单并且使用较多的,平常我们多运用策略模式用来消除ifelse、switch等多重判断的代码,消除ifelse、switch多重判断可以有效应对代码的复杂性,使设计解耦如果分支判断会不断变化(增、删、改),那么可以使用技巧让策略模式满足开闭原则,提高代码的扩展性(策略模式场景主要负责解耦,...
Handpc
0回复
7887浏览
设计模式
暂无内容
1
54
55
56
57
58
59
60
61
62
70
精选
客服
订阅鸿蒙技术特刊,精选内容抢先看
微信扫码关注,即刻订阅