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

TopCoder

关注程序员技术成长,用简洁的文字,分享复杂的技术。
专栏作者
101
文章
116290
阅读量
25
订阅数
Java线程的那些状态
Java线程(或者说计算机线程),是有一些状态来表示当前线程运行信息的,可以通过jsatck命令来查看Java进程中线程函数栈信息,其中就包括了Java线程状态。
luoxn28
2021-04-08
3320
令牌桶、漏斗、冷启动限流在sentinel的应用
分布式系统为了保证系统稳定性,在服务治理的限流中会根据不同场景进行限流操作,常见的限流算法有:
luoxn28
2021-02-26
1.2K0
seata TM源码分析
下面就一起来看下TM模块的实现原理,TM模块是seata中全局事务发起者和掌控者,其核心逻辑有:业务逻辑切面代理:对全局事务注册/提交操作。启动netty客户端:会启动TM/RM客户端与TC通信。数据源切面代理:SQL解析、分支事务注册/提交、undolog保存、分支事务状态上报。Rpc代理:在RPC流程中传递seata上下文(xid等,非本文分析重点)。
luoxn28
2021-01-28
1.1K0
CompletableFuture 应用实践
首先来看一个问题,如果要执行多个任务,每个任务会返回对应结果,现在需要所有任务执行完毕之后,将这些任务结果统一打印出来,该如何完成呢?注意尽量不要使用业务线程来等待多个任务的结果,也就是不要使用Future.get方式。
luoxn28
2020-12-02
6140
深入理解Java线程池
ThreadPoolExecutor采取上述步骤的总体设计思路,是为了在执行execute()方法时,尽可能地避免获取全局锁(那将会是一个严重的可伸缩瓶颈)。在ThreadPoolExecutor完成预热之后(当前运行的线程数大于等于corePoolSize),几乎所有的execute()方法调用都是执行步骤2,而步骤2不需要获取全局锁。
luoxn28
2020-11-12
6300
网络数据是如何传递给进程的
在用户态空间,调用发送数据接口 send/sento/wirte 等写数据包,在内核空间会根据不同的协议走不同的流程。以TCP为例,TCP是一种流协议,内核只是将数据包追加到套接字的发送队列中,真正发送数据的时刻,则是由TCP协议来控制的。TCP协议处理完成之后会交给IP协议继续处理,最后会调用网卡的发送函数,将数据包发送到网卡。
luoxn28
2020-05-18
1.5K0
Linux信号处理机制
信号是一种进程间通信机制,信号都有一个对应的默认处理行为,信号触发时,信号处理函数和进程正常的执行流程同时存在,这会给编程带来隐患,如果信号处理函数中调用了不可重入函数的话。信号同其他进程间通信技术(管道、共享内存)相比,传递的信息还是有限的,由于信息较少所以也方便管理,一般在系统管理中使用,比如终止或者恢复进程等。 ·
luoxn28
2020-04-21
3.3K0
深入理解Linux VFS和Page Cache
VFS是虚拟文件系统层(进程与文件系统之间的抽象层),与它相关的数据结构只存在于物理内存当中。其目的是屏蔽下层具体文件系统操作的差异,为上层的操作提供一个统一接口,正是由于VFS的存在,Linux中允许多个不同的文件系统共存。
luoxn28
2020-04-21
2.9K0
Linux Namespace浅析
Linux对Namespace的操作,主要是通过clone、setns和unshare这3个系统调用来完成的,clone创建新进程时,接收一个叫flags的参数,这些flag包括CLONE_NEWNS、CLONE_NEWIPC、CLONE_NEWUTS、CLONE_NEWNET(Mount namespace)、CLONE_NEWPID和CLONE_NEWUSER,用于创建新的namespace,这样clone创建出来新进程之后就属于新的namespace了,后续新进程创建的进程默认属于同一namespace。
luoxn28
2020-02-17
1.4K0
Linux Cgroup浅析
cgroups是Linux下控制一个(或一组)进程的资源限制机制,全称是control groups,可以对cpu、内存等资源做精细化控制,比如目前很多的Docker在Linux下就是基于cgroups提供的资源限制机制来实现资源控制的;除此之外,开发者也可以指直接基于cgroups来进行进程资源控制,比如8核的机器上部署了一个web服务和一个计算服务,可以让web服务仅可使用其中6个核,把剩下的两个核留给计算服务。cgroups cpu限制除了可以限制使用多少/哪几个核心之外,还可以设置cpu占用比(注意占用比是各自都跑满情况下的使用比例,如果一个cgroup空闲而另一个繁忙,那么繁忙的cgroup是有可能占满整个cpu核心的)。
luoxn28
2020-01-15
2.1K0
开发者不可不知的 Docker 命令
Docker是基于go语言开发,底层技术(Linux下)主要基于cgroups、namespace以及联合文件技术实现的一种进程级别的轻量级虚拟化解决方案。由于Docker进程隔离独立于宿主机上其他进程,因此也称为容器,Docker在容器的基础上,进行了更进一步的封装,从文件系统、网络到进程隔离等,极大简化了容器的创建管理维护工作,降低了开发者使用门槛,因此才在近几年流行开来(毕竟Docker的底层技术在Docker出现之前就已经存在了)。
luoxn28
2020-01-02
5040
Java nio 空轮询bug到底是什么
epoll机制是Linux下一种高效的IO复用方式,相较于select和poll机制来说。其高效的原因是将基于事件的fd放到内核中来完成,在内核中基于红黑树+链表数据结构来实现,链表存放有事件发生的fd集合,然后在调用epoll_wait时返回给应用程序,由应用程序来处理这些fd事件。
luoxn28
2019-11-25
4.3K0
彻底搞懂 netty 线程模型
netty线程模型netty单线程模型Reactor多线程模型Reactor主从多线程模型netty线程模型思考netty线程模型实践
luoxn28
2019-11-25
1.1K0
你的Redis有类转换异常么
•该异常不是必现的,偶尔才会出现;•出现该异常后重启应用或者过一会就好了;•序列化协议使用了hessian。
luoxn28
2019-11-06
7400
没有更多了
社区活动
RAG七天入门训练营
鹅厂大牛手把手带你上手实战
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档