Booogu Blog

「胸中丘壑,眼中星河」

内源InnerSource介绍

开源社区的发展策略讲座分享

整理自开放原子开源基金会TOC副主席谭中意老师2020年11月来浪潮做开源治理分享讲座 什么是内部开源 内源其实很简单,是说在公司内采用开源社区项目做法来开发项目,简单说就是,我内部代码仓库是开放的,是允许接收其他部门贡献的,就是这么简单。 内源能给企业带来的好处 然后我说下内源可以给公司带来什么好处,第一是,它可以更好为对外开源做准备,第二是说有助于打破部门墙,减少重复造轮子,...

开源社区发展之道

开源社区的发展策略讲座分享

整理自开放原子开源基金会TOC主席堵俊平老师2020年11月来浪潮做开源治理分享讲座 何为开源 在讨论开源的经营策略之前,我们先回顾一下什么是开源。浪潮的朋友对开源当然应该是比较了解了,刚才晖总也介绍了我们浪潮在开源方面的积累。但是业界的朋友会有一个误解,很多人觉得开源就是代码的事,代码开放出来了就叫开源。其实代码开放出来是叫Source Available,它只是开源的第一个层次...

Java中的锁优化

Java中锁的优化方式

Java中的各种锁优化技术: 自旋锁:阻塞时,挂起和恢复线程都需要转入内核态完成,代价很高,所以可以暂时不放弃处理器执行时间,自己等自己一会,看看持有锁的线程是不是很快就释放了,这就是自选锁优化 适应性自旋锁:自旋的时间不再固定,而是由前一次在同一个锁上的自旋时间以及锁的拥有者的状态来决定的,虚拟机堆程序锁的状况预测会越来越精准、JVM越来越聪明(需要随着程序运行时间的增长以及性能...

Java中的线程安全

Java中线程安全的实现方式

线程安全的较为严谨的定义 线程安全是指,当多个线程同时访问一个对象时,如果不考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外同步,或者在调用方继续宁任何其他的协调操作,调用这个对象的行为都可以得到正确的结果,那么就称这个对象是线程安全的。 Java中的线程安全级别/定义 共分为五类: 不可变:final关键字,比如String对象的值不可变 绝对线程安全:成本太高,一...

Seata应用侧启动过程剖析(二)

注册中心 | 配置中心

“刚上手Seata,对其各个模块了解还不够深入? 想深入研究Seata源码,却还未付诸实践? 想探究下在集成Seata后,自己的应用在启动过程中“偷偷”干了些啥? 想学习Seata作为一款优秀开源框架蕴含的设计理念和最佳实践? 如果你有上述任何想法之一,那么今天这篇文章,就是为你量身打造的~ 前言 在Seata的应用侧(RM、TM)启动过程中,首先要做的就是与协调器侧(TC)建立...

Seata应用侧启动过程剖析(一)

RM & TM如何与TC建立连接

“刚上手Seata,对其各个模块了解还不够深入? 想深入研究Seata源码,却还未付诸实践? 想探究下在集成Seata后,自己的应用在启动过程中“偷偷”干了些啥? 想学习Seata作为一款优秀开源框架蕴含的设计理念和最佳实践? 如果你有上述任何想法之一,那么今天这篇文章,就是为你量身打造的~ 前言 看过官网README的第一张图片的同学都应该清楚,Seata协调分布式事务的原理便...

WIPUBML低代码开发之道

UBML之 Why & What & How

回忆录向,记录了2020年10月15-17,UBML在深圳的“有你有我开源节”的活动。 开源世界很大,道路很广,UBML是后行者,却是Inspur的先行者,步步走来,日日难忘。前方要学的事,要趟的路还有很多。 先上一波链接Mark “有你有我开源界”UBML论坛——UBML低代码开发之道 浪潮UBML低代码建模体系正式开源 ...

Java中的线程实现

Java中线程的实现方式

线程实现几种方式: 内核线程实现:轻量级线程与内核线程之间的1:1关系 缺点:线程的创建、析构、同步等所有操作,都是由系统调用的方式实现的,需要进行用户态和核心态切换,成本高 用户线程实现:进程与用户线程的1:N关系 优势:不需要系统内核支援(快) 缺点:没有系统内核支援(需要用户自己处理线程创建等所有操作,比...

Java内存模型

并发、缓存一致性、内存模型

为什么要争取并发,让计算机同时去做几件事? 这是人类压榨计算机运算能力的最有力武器,不仅是因为计算机运算能力太强大,还因为计算机的运行速度与它的存储和通信子系统速度差距太大,大量时间都花费在磁盘IO、网络通信或者数据访问上,所以为了不让处理器在大部分时间都花费在等待其他资源的空闲状态,就必须使用一些手段去把处理器的运算能力”压榨“出来。 缓存一致性问题 因为处理器运算和其他存储设备速度差异...

JVM提前编译与即时编译

提前编译 | 即时编译

即时编译(JTT) 编译的对象与触发条件 被多次调用的方法 —— 热点是整个方法,依靠方法调用触发编译,替换整个方法 被多次执行的循环体(带着为了跑分软件的私心) —— 热点是一段代码,但也必须替换整个方法,触发栈上替换(On Stack Replacement OSR),即方法的栈帧还在栈上,方法就被替换了 如何判断执行多次? 基于采样的热点探测——周期性地检查各...