首页
学习
活动
专区
工具
TVP
发布

TopCoder

关注程序员技术成长,用简洁的文字,分享复杂的技术。
专栏作者
101
文章
115597
阅读量
25
订阅数
常见的软件设计原则
常见的软件设计原则分为:单一职责、开闭原则、接口隔离、里式替换、迪米特原则、依赖倒置原则。
luoxn28
2021-07-20
6440
Java读写锁浅析
Java读写锁,也就是ReentrantReadWriteLock,其包含了读锁和写锁,其中读锁是可以多线程共享的,即共享锁,而写锁是排他锁,在更改时候不允许其他线程操作。读写锁底层是同一把锁(基于同一个AQS),所以会有同一时刻不允许读写锁共存的限制。
luoxn28
2021-05-13
2.7K0
Java并发组件浅析
Java并发相关组件或者技术包括:线程、线程池、阻塞队列、Future/FutureTask、Lock/Condition、Lock、AQS(队列同步器)、并发工具类、原子更新类、LockSupport、Unsafe等,下面我们以总体视角来看下这些组件之间的依赖关系。
luoxn28
2021-05-13
8020
Lock Condition的那些事儿
下面就以上述示例代码为例来分析下Condition的await和signal流程。对于线程t1来说,执行到await方法时,会添加一个节点到等待队列中,然后释放当前state,唤醒其他线程,最后阻塞自己,等待被唤醒。
luoxn28
2021-04-26
4370
Java线程的那些状态
Java线程(或者说计算机线程),是有一些状态来表示当前线程运行信息的,可以通过jsatck命令来查看Java进程中线程函数栈信息,其中就包括了Java线程状态。
luoxn28
2021-04-08
3300
浅谈synchronized与Object.wait/notify原理
synchronized是Java中常用的锁机制,synchronized+Object.wait/notify是常用的等待唤醒机制,那它们的实现原理是什么呢?本文就synchronized与Object.wait/notify为例谈谈以下内容。
luoxn28
2021-04-08
6300
AQS是如何控制线程的
Java中AQS(AbstractQueuedSynchronizer,队列同步器)是构建JUC中锁和其他同步组件的基础组件,我们在日常开发中一般不会直接与AQS打交道。AQS核心功能就2点,通过CAS维护state状态,通过CAS维护同步队列进而控制线程的阻塞唤醒。换句话说就是:
luoxn28
2021-04-08
8870
如何解决大分页查询问题?
这个是数据存储介质本身的查询实现原理决定的,分页查询场景,是按照某个顺序进行查询,分页靠后的查询请求,需要将按照该顺序排序的之前所有页的数据给排除掉,然后取对应页数据返回。该问题瓶颈主要就是排除掉之前页数据这里,比如DB(MySQL)和ES(elasticsearch)都存在该问题。
luoxn28
2021-03-18
7770
如何优雅的让3个线程打印ABC
让3个线程依次打印ABC,是一个常见的问题,这是阿里和华为都有考过的面试题。比如题目描述如下:
luoxn28
2021-03-18
2.4K0
DDD的领域概念们
最近几年DDD(领域驱动设计 domain-driven design)概念很火,它以统一的语言来表述业务流程和技术架构,方便领域专家、技术开发交流达成共识,不失为一个复杂业务的解决之道。
luoxn28
2021-03-17
6410
从侵入式服务治理到Service Mesh
目前service mesh技术在互联网公司中越来越流行,那么之前分布式系统是如何服务治理的呢,又是如何一步步发展成service mesh的呢?
luoxn28
2021-02-26
4810
啥 啥 啥,服务治理是个啥
首先,先说下服务治理的边界,本质上任何能提升服务可用性,性能,让服务更稳定等等,只要是能让服务运行的更好,都属于服务治理的范畴。服务治理比较常见的话题:服务发现,服务变更管理,服务监控,服务扩容缩容,服务自我保护,服务降级,服务授权防攻击,服务上线验证和灰度发布,服务问题定位和跟踪,服务负载,服务实例的调度等等。
luoxn28
2021-02-26
1.7K0
令牌桶、漏斗、冷启动限流在sentinel的应用
分布式系统为了保证系统稳定性,在服务治理的限流中会根据不同场景进行限流操作,常见的限流算法有:
luoxn28
2021-02-26
1.1K0
seata RM源码分析
同TM类似,RM侧也是有一个GlobalTransactionScanner类,来进行初始化的动作,GlobalTransactionScanner实现了InitializingBean,其afterPropertiesSet方法中会执行netty客户端初始化工作,逻辑如下:
luoxn28
2021-02-26
5960
seata TM源码分析
下面就一起来看下TM模块的实现原理,TM模块是seata中全局事务发起者和掌控者,其核心逻辑有:业务逻辑切面代理:对全局事务注册/提交操作。启动netty客户端:会启动TM/RM客户端与TC通信。数据源切面代理:SQL解析、分支事务注册/提交、undolog保存、分支事务状态上报。Rpc代理:在RPC流程中传递seata上下文(xid等,非本文分析重点)。
luoxn28
2021-01-28
1.1K0
seata TC 请求处理流程
TC的业务channelHandler为类 io.seata.core.rpc.netty.AbstractNettyRemotingServer.ServerHandler,注意到达该类的请求都是经过编解码的了,请求类型为RpcMessage。ServerHandler类处理方法有:
luoxn28
2021-01-28
8350
seata TC 模块分析
Discovery模块就是服务发现模块,TC启动后需要将自己的信息注册到服务中心,这样才能暴露给其他使用者,Discovery接口定义如下:
luoxn28
2021-01-28
1.2K0
seata TC启动流程分析
seata-server 启动方法 io.seata.server.Server#main,默认启动端口 SERVER_DEFAULT_PORT = 8091。main方法主要是解析并设置一些配置,初始化几个线程池,启动DefaultCoordinator和Netty服务等,源码如下:
luoxn28
2021-01-28
7730
seata AT模式流程
Seata 是一款阿里开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案,github地址:https://github.com/seata/seata。
luoxn28
2021-01-28
1.1K0
mysql update语句和原数据一样会更新么
如果 update 语句和原数据一样会更新么?更具体的来说,如果更新的数据前后是一样的,MySQL 会更新存储引擎中(磁盘)数据么?
luoxn28
2021-01-18
1.7K0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档