自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 资源 (1)
  • 收藏
  • 关注

原创 【精】元数据驱动SaaS 架构的技术思考

引言作为业务系统技术开发同学,面向当下: 首先应该是快速搭建业务通路,让线上业务跑起来,快速试错,解决生存问题; 第二步是在链路畅通、业务基本跑起来的基础上,如何支撑业务跑得更快,就需要解决快速增长问题; 第三步,在完成支撑业务快速增长的基础上,要进行精细化提升,通过在支撑业务快跑间隙挤时间打磨系统功能和体验,踏踏实实花时间去抽象能力,沉淀产品,提升效能; 同时我们也必须面向未来,如何在抽象能力以及沉淀了产品的基础上,把所承载和沉淀的业务能力...

2021-01-24 15:09:54 133

原创 分布式系统 之 分布式事务问题

分布式系统 之 分布式事务问题1、你怎么分享分布式事务?分布式事务问题是分布式系统绕不开的技术话题。“谈谈你对分布式事务的理解”、“分享下你团队在分布式事务上的解决方案”、“你用过哪几种分布式事务的中间件”?在技术交流/面试中很容易讨论到这些个话题,得到的反馈大概率是这样的:“额~~ ~~ ~~ ~~”,一时语噻 《《《 平时没有梳理和认知分布式事物的问题,一时不知如何组织语言。“我们没有使用分布式事务”《《《 分布式事务裸奔状态。“我知道有CAP和BASE理论,分别是XXX意思” 《《《

2020-11-29 18:29:42 215 1

原创 【精】一文就明白 并发编程/多线程

《一文就明白Java并发编程》一文系列 之 并发编程。行文3万余字,包含了多线程方方面面的知识点,相信对你会有所帮助!黄老师文章目录《一文就明白Java并发编程》1、进程&线程2、JUC并发包2.1、JUC包介绍2.2、Atomic原子类2.2.1、Atomic原子类的细分2.2.2、Atomic原子类的实现原理2.3、JUC包中的锁2.3.1、顶层抽象类:AbstractQueuedSynchronizer(AQS)2.3.2、顶层抽象类:AbstractOwnableSynchr

2020-11-15 13:03:38 113

原创 【精】一文就让你精通JVM

《一文就让你精通JVM》网上有关JVM的知识贴多如牛毛,其中有纷杂的零碎知识贴,也有整理优秀的长贴。信息量非常充分。但作为复习或整理JVM知识的而言,还可以有更好的学习用户体验和高效的方式。因此,就想尝试写一篇有关JVM知识点的“秘籍”,让初学者仅读此文就能快速精通JVM的知识脉络以及关键知识,也能让复习着快速反查知识和经验之谈。黄老师文章目录《一文就让你精通JVM》1、背景知识铺垫1.1、JRE、JVM、JDK1.2、HotSpot Client/Server模式2、JVM体系结构2.1、Cla

2020-10-04 22:55:02 222

原创 简单聊聊限流(Sentinel vs Hystrix ;滑动窗口 vs 漏桶 vs 令牌桶)

文章目录1、限流需求场景2、Sentinel vs Hystrix3、Sentinel功能介绍3.1、如何使用3.2、关于隔离的设计3.3、业务实践分享4、限流算法分析4.1、滑动窗口算法4.2、漏桶算法4.3、令牌桶算法4.4、三者对比1、限流需求场景(本文主要讲述服务端限流,不涉及客户端和网关限流策略)大家经常会在2C互联网公司的技术场景上听到高并发,说到限流、熔断、降级。其实,在2B领域同样也用“限流、熔断、降级”。任何生产级的平台型系统,线上稳定性都是生命线,都要防范于未然。.

2021-02-10 20:55:35 69

原创 剖析LinkedHashMap 和 LRU实现的种种

文章目录1、LinkedHashMap数据结构2、LinkedHashMap知识要点2.1、LinkedHashMap构造方法的accessOrder参数2.2、LinkedHashMap在HashMap基础上额外维护一个双向链表2.3、put(key, value)新增数据时2.4、get(key)访问数据时3、实现一个LRU3.1、LinkedHashMap是天生的LRU3.2、线程安全的LRU3.3、可以设置过期时间的LRU3.4、Guava怎么做的1、LinkedHashMap数据结构一图便

2021-01-31 23:10:29 15

原创 从MySQL事务和故障恢复角度,清晰弄懂 Undo log、Binlog、Redo log的作用和原理

文章目录1、从MySQL的WAL说起2、再说说Crash-Safe3、三大核心日志模块4、两阶段提交5、组提交6、"双1"设置7、崩溃与数据恢复流程8、Bin log vs Redo log9、附录9.1、MySQL执行架构9.2、Redo log文件格式9.3、Binlog写入机制1、从MySQL的WAL说起WAL技术:全称“Write-Ahead Logging”技术关键思路:内存里修改,先写日志,再写磁盘。【问题】:为什么不直接更改磁盘中的数据,而要在内存中更改,然后还需要写日志,最后

2021-01-31 16:12:01 63 3

原创 从钉钉看2B SaaS办公平台策略

中国的To B市场上,SaaS生态应该是怎么样的?IDC的一份白皮书中写到,围绕Salesforce的全球生态要比Salesforce本身大很多,增长速度也更快。在2019年,当Salesforce每赚1美元,它的全球生态将赚4.29美元。在国内,钉钉用户数达4亿、企业组织数量1700万。在这个迅速爆发的To B生态中,钉钉如何“界定”生态参与者?又如何界定自己的“边界”?钉钉的两个边界Q:钉钉怎么去定义你们的生态?以及目前这个生态里有多少参与方和角色?钉钉:钉钉天生就...

2021-01-30 18:33:16 174

原创 一文掌握MySQL锁机制(共享锁/排他锁/意向锁/间隙锁/临键锁等)

文章目录1、数据库为什么要有锁机制2、锁的分类3、锁详细介绍3.1、表-共享锁(S)3.2、表-排他锁(X)3.3、表-自增锁(Auto-Inc Lock)3.4、行 - 记录锁(Record Lock)3.5、表 - 意向共享锁(IS)/ 意向排他锁(IX)3.6、行 - 间隙锁(Gap Lock)3.7、行 - 临键锁(Next-Key Lock)3.8、行 - 插入意向锁(Insert Intention Lock)3.9、总结-要点4、对应SQL场景5、锁与事务的关系6、死锁和死锁检测处理6.1、死

2021-01-30 18:19:19 50

原创 三目运算类型取值原则(避坑)

在云笔记无意翻到这个N年前的小笔记,挺有意思的。PO一下### 三目运算语法:源于某次帮团队成员看NPE问题的梳理:String result = 100 < a ? "可以" : null ;orint pos = 10;Integer up = null;Integer v = 100 < a ? pos : up; 《《《《 运行结果是什么?NPE哦1、三目运算第二部分和第三部分类型一样,那么返回结果的类型也一样2、三目运算第二部分和第三部分,.

2021-01-24 21:28:24 32

原创 元数据驱动的业务表单定制中心 思想和实践介绍

文章目录1、业务开发中常见需求本质2、元数据驱动的思想3、表单中心架构图4、表单元数据5、具体实现分解5.1、表单基础服务5.2、表单SDK5.3、应用场景:独立页面 + 自定义扩展逻辑5.4、应用场景:嵌入其他页面 + 操作联动5.5、表单数据检索/分析需求5.6、表单数据校验需求6、业界方案对比6.1、相比 纷享销客6.2、相比 阿里宜搭7、表单中心的难点1、业务开发中常见需求本质尤其是在2B的系统中,表单功能会非常常见。从一套被设计被定义的数据模型开始(业务对象)编写基于业务对象的各类操作

2021-01-23 21:28:15 112

原创 分布式系统灰度发布实践

文章目录0、分布式系统灰度要实现的功能清单1、携带灰度因子1.1、Http请求中1.2、JVM中1.3、调用链中2、前端资源灰度2.1、方案一:基于verynginx2.2、方案二:基于istio Envoy3、Rest API请求灰度4、分布式RPC(Dubbo)调用灰度4.1、概览4.1、实现原理拆解4.2、Dubbo URL4.3、Zookeeper与Dubbo4.4、开发点-1:Provider支持自动注册为Grey版本的Dubbo Service4.5、开发点-2:Consumer支持自动记录Gr

2021-01-23 15:51:05 146

原创 张一鸣To B路

日前有媒体报道,字节跳动全球CEO张一鸣近日在内部目标中提到,2021年将重点在三个新业务方向上做进一步探索:跨境电商,To B,LKP。其中,To B业务主要依托飞书和火山引擎展开。虽字节方面回应消息不属实。但官方数据显示,去年年中字节跳动旗下产品的全球月活跃用户超过15亿。截至今年8月,抖音的日活跃用户已经超过6亿。尽管官方否认消息的准确性,但事实上字节跳动的To B业务已越来越清晰。今年11月9日,南京市大数据管理局《基于政务云的微服务监控和运营数据分析管理平台》项目中标公告发布,字节

2021-01-10 14:53:03 54

原创 中国SaaS平台的三种商业模式

(1)SaaS软件商业模式:云学堂为代表云学堂卖SaaS软件,挣SaaS软件钱。一般卖给企业内部的企业大学,当企业内部的培训学习平台使用。但是大家也都知道,在中国,培训学习这个行当,金牌讲师和金牌课程内容绝对是核心中的核心,而培训学习平台只是个工具而已,只能每年收一些相对固定的工具费用。培训学习SaaS至少比其他SaaS工具还要好一点,就是因为培训学习SaaS,至少还有收到其他钱的可能性:比如课件存储空间的费用。大量课件是文档和音频视频,占存储空间大比如讲课时,视...

2021-01-09 22:55:18 503

原创 RocketMQ的关键知识笔记

6种消息类型普通消息顺序消息广播消息延时消息批量消息事务消息2种消费模式集群消费:一个Group ID内只消费一次广播消费:一个Group ID内所有Consumer都消费部署架构Name Server + broker(主/备) + producer + consumer【broker】与所有Name Server建立长连接【producer】与某个Name Server建立连接,查询topic所在broker,并与broker master建立连接【consu

2021-01-09 21:41:04 22

原创 ThreadLocal内存泄露知识点详解

ThreadLocal内存泄露详解1、ThreadLocal常规用法public class ThreadLocal<T> { public static <S> ThreadLocal<S> withInitial(Supplier<? extends S> supplier); public void set(T value); public T get(); public void remove()

2021-01-09 16:48:18 47 1

原创 手把手教你Java字节码Demo

手把手教你Java字节码Demo接触中间件的开发来说,了解像Pinpoint(https://github.com/naver/pinpoint)、BTrace(https://github.com/btraceio/btrace)、阿里的JVM-SANDBOX(https://github.com/alibaba/jvm-sandbox)、Java在线问题诊断工具Greys(https://github.com/oldmanpushcart/greys-anatomy)等,都是通过字节码技术,无侵入的干

2021-01-01 17:26:59 55 1

原创 CGLIB中的常用API

CGLIBCGLIB,即Code Generation Library,是一个开源项目。Github地址:https://github.com/cglib/cglib。CGLIB的github简介:CGLIB - 字节码生成库,是用于生成和转换Java字节码的高级API。它被AOP、测试、数据访问框架用于生成动态代理对象和拦截字段访问。CGLIB提供两种类型的JAR包:cglib-nodep-x.x.x.jar:使用nodep包不需要关联ASM的jar包,jar包内部包含ASM的类库。cglib

2020-12-31 14:30:10 42

原创 解决homebrew长时间停在Updating Homebrew 这个步骤

在国内的网络环境下使用 Homebrew 安装软件的过程中可能会长时间卡在 Updating Homebrew 这个步骤。例:执行 brew install composer 命令➜ ~ brew install composerUpdating Homebrew... # 如果碰到长时间卡在这里,参考以下 2 种处理方法 方法 1:按住 control + c 取消本次更新操作➜ ~ brew install composerUpdating Homebrew...^C按住 con

2020-12-19 22:33:09 268 2

原创 slf4j MDC是个好东西

slf4j MDC是个好东西简介MDC 全拼 Mapped Diagnostic Contexts,是SLF4J类日志系统中实现分布式多线程日志数据传递的重要工具。同时,用户也可利用MDC将一些运行时的上下文数据打印出来。什么意思呢?常规情况下,写打日志的代码时,一般都是log.info、log.warn、log.error将想要打的日志进行拼装和格式化,打到日志输出中。MDC能干什么呢?能在不改动log.xxx打日志代码的情况下,在最终的日志输出的指定位置打印额外的信息。而这,就是靠MDC进行

2020-12-19 20:26:57 43 1

原创 Java 生成随机数的 5 种方式

先说结论试测数据:基于常见场景:在一个数据范围区间内生成随机数。1000万的随机数范围,for循环生成50万个随机数。无其他额外操作。SDK包性能耗时评价java.util.Random9毫秒1、编写简单,方法较多,也快速。很多SDK包都基于此扩展。2、随机性重度依赖seed的情况,seed一样,分配的随机数和顺序一样。3、线程不安全。ThreadLocalRandom8毫秒1、继承于java.util.Random2、与线程绑定,一个线程一个,多线程下安

2020-12-16 15:11:27 42

原创 干货,教你怎样开一场真正的战略会

越来越多的企业意识到战略的重要性,并在每年的年底制定下一年的战略规划。最近,就有很多企业来找我们开战略会,我发现一个很有意思的现象:在战略会上,通常是老板一个人在思考战略,其他人就等着老板讲,结果最后老板也没有完全讲清楚。这样开战略会其实效率很低。怎么提高效率呢?这些企业找到我们以后,我们会帮助他们把整个战略会从头到尾做个详细的梳理,除了讨论业务之外,还会讨论组织和人才。今天跟你分享下这个梳理的过程,以及怎么开好一场战略会。01.会前的三个关键动作开战略会之...

2020-12-15 23:58:46 66

原创 你不得不知的Spring事务失效 8 大原因

文章目录1、数据库引擎不支持事务2、没有被 Spring 管理3、方法不是 public 的4、类内部自身调用问题5、数据源没有配置事务管理器6、不支持事务7、异常被吃了8、异常类型错误1、数据库引擎不支持事务这里以 MySQL 为例,其 MyISAM 引擎是不支持事务操作的,InnoDB 才是支持事务的引擎,一般要支持事务都会使用 InnoDB。根据 MySQL 的官方文档:https://dev.mysql.com/doc/refman/5.5/en/storage-engine-sett

2020-12-15 23:25:30 82

原创 To B服务进击的10大增长法则

2008年金融危机以后,催生了两大领域的科技创新:一类是To C的共享经济模式公司,例如Uber、Airbnb、Lyft等;另一类是以SaaS、PaaS为模式的To B云服务公司。2008年以前,全球还没有一家达到独角兽量级的云服务创业公司;但到目前为止已经有100多家估值超过10亿美金、20多家估值超过百亿美金的基于云服务的企业服务公司。随着云计算基础设施的日益完善,企业业务在线化和协作在线化日益成为共识,新一代基于云服务的企业服务获得了巨大的增长。而2020年这次“世纪之疫”,在导致社会结构巨变

2020-12-07 15:10:59 163

原创 2020年中国企业级SaaS行业研究报告

核心摘要新冠疫情加快了市场教育进程:受新冠疫情影响,传统的线下零售、餐饮、采购等活动受阻,企业对零售电商、协同办公、CRM、数字化采购等领域SaaS产品的需求显著增加,带动部分小微企业初步涉足SaaS产品的尝试,市场教育取得进展。 企业级SaaS市场将保持较快速的增长:2019年中国企业级SaaS市场规模为362.1亿元,同比增长48.7%。2020年新冠疫情影响了宏观经济增速,但线下转线上、远程办公等需求反而成为SaaS发展的助推力,预计2020年企业级SaaS市场仍将保持可观增速,到2022.

2020-11-24 16:34:23 889

原创 2020年中国企业采购电商市场发展研究报告

行业定义及口径行业定义:本报告中,企业采购电商平台通过数据化、网络化的手段将企业信息系统、业务流程、商家资源、物流配送以及金融服务等服务进行有机整合,形成企业采购领域的整体服务解决方案。其中,企业采购电商市场涉及的采购产品以工业品及其他消耗品为主要经营品类,不包括钢铁石油等原材料。口径:本报告中,定量部分数据核算的中国企业采购电商市场规模主要指企业电商化采购的行政办公用品、商务礼品、商务服务、员工福利、工业用品、维修用品、农用机械等产品与服务的规模,不包括钢铁石油等原材料规模。受宏观环.

2020-11-23 20:31:07 381

原创 热门的2B企业服务,资本是如何解读和判断的

2020年,新冠疫情为企业数字化按下“加速键”,企业服务无疑迎来了巨大的风口,国内一批企业服务的标杆公司都获得了爆发式增长,企业服务也被认为是贯穿未来20年的长期大趋势。实际上,中国过去的企业服务大部分没有做起来,随着最近两年发生的一些变化,企业服务创业的黄金时代正在揭开。无论是对于投资界、科技巨头,还是对于中小型创新企业来说,面向B端市场的服务正在事实上受到越来越多的重视,一场更全面、更纵深的面向企业服务的市场大幕正在徐徐拉开。当越来越多的资本与创业者涌入to B,噪音也随之而来。为了拨开企...

2020-11-22 19:18:19 506 3

原创 Mybatis实现框架解读

SQL 执行代码路径Mybatis 层次结构Mybatis 抽象架构

2020-11-18 21:59:14 23

原创 作为业务团队Leader怎样做规划 之 增长飞轮

你有没有发现:有些公司可以构建持续发展的动力,不断跨越新技术和行业的竞争持续做到从优秀到卓越?而其它公司不行?有些团队能够长盛不衰,面对不同的挑战都能持续突破?而其它团队不行?有些人能够经得住时间和不同岗位的考验,持续打怪升级,实现跃迁?而其他人不行?对,我也发现了。那这里面有什么奥秘吗吉姆. 柯林斯在《从优秀到卓越》第八章提出的“飞轮效应”回答了这个问题。时隔 9 年后又将其单独写成新书《飞轮效应》(中文版今年 4 月刚刚上市),进一步阐释它的价值以及如何落地。飞轮效应不仅对一家企..

2020-10-26 17:33:37 181 1

原创 技术团队该有的工作观

即使是技术类工作,除了“专业能力过硬”,以下软素质同样重要!1.认真负责 不把“出了问题谁负责”挂在嘴边,相反,“就这么干,出了事我负责”更具备leader的潜质 交给ta的任何事情,能够拿到结果,如果每件小事都能让人放心。就问你,你踏实不踏实? 不推三阻四,很少下意识的“找借口”,如果每次沟通都反馈“不是我”、“我没有”。就问你,你气不气? 2.自驱力强 不事事等别人交代,不是“要我做xxxx”,而是“我要做xxxx” 主动承担分外的事情,...

2020-10-19 23:03:47 68

原创 工作避坑指南 - 应届生篇

关于每页PPT的讲义欢迎留言交流

2020-10-19 22:58:10 27

原创 JVM实战 之 一次内存溢出排查经历

源于线上应用事件某天团队同学收到线上系统报警,web-abc真线有一台机down掉了。为保留事故现场,做剩余应用做了dump。然后开始分析问题排查1、 经过对线上出问题周期内的应用日志逐条排查,未发现明显异常。2、分析当时的dump快照,发现有两个类的实例数和总大小异常,这两个类是跟poi解析excel有关!这个很关键。3、再翻事发时间的真线日志,有所发现,16点11分51秒的时候,确实有流量请求一个上传excel的接口4、对比常规接口的日志,事发情况下,只有start没有finish

2020-10-15 23:09:11 57

原创 JVM实战 之 奇怪FullGC定位

一、背景图1 真线环境abc-center 堆使用率图2 真线环境 abc-center 非堆使用率由图1、图2 可见heap和permGen使用率都不高,但是abc-center 2台机器基本上每天会进行2次规律性的FullGC;二、问题排查在线询价真线环境JVM参数配置-Xms2g-Xmx2g-Xmn448m-XX:SurvivorRatio=5-XX:+UseParNewGC-XX:+UseConcMarkSweepGC-XX:+CMSClassUnloadingEnab

2020-10-15 22:54:13 121

原创 JVM实战 之 JVM参数调优案例

背景团队线上的(共享基础服务)用户服务user-server和权限服务user-center某段日子内的FullGC过于频繁,且user-center单次FullGC时间过长(1.5s),导致业务高峰期cpu和线程池使用风险压力较大。如图:user-server:user-center:遇见如此的堆内存图怎么办?且看下文。注:推测+验证的过程很重要。即见识相关的案例,留有思路很重要。user-server分析过程及实施结果先晒经验:在没有显式设置新生代占比时,JVM对于新生代的

2020-10-15 22:24:33 95

转载 java中方法不要写太长的真正原因

java中一般建议一个方法不要写的过长,不方便维护和阅读是其中的一个原因,但是其真正性能的原因大家知道吗?我们知道,JVM一开始是以解释方式执行字节码的。当这段代码被执行的次数足够多以后,它会被动态优化并编译成机器码执行,执行速度会大大加快,这就是所谓的JIT编译。hotsopt源码中有一句if (DontCompileHugeMethods && m->code_size() > HugeMethodLimit) return false;当DontCompileHu

2020-10-03 22:53:31 70

原创 Java 三目运算的类型取值原则

1、三目运算第二部分和第三部分类型一样,那么返回结果的类型也一样2、三目运算第二部分和第三部分,其中一个是原始类型T,一个是原始类型的装箱。那么返回结果的类型是原始类型T。即对象会做自动拆箱。3、三目运算的第二部分和第三部分,其中一个是null,另外一个是对象。那么返回结果的类型是对象的类型。...

2020-09-24 21:48:00 31

原创 Java反射为什么性能差

解释反射内部是使用Unsafe这种JNI API的。JVM无法预知JNI的行为带来的影响,就把很多优化隔绝了。而非反射方式的代码,JVM经常会做很多优化和JIT,所以性能影响还是蛮大的。反射,将Java加载期该做的事情,延后到了运行期做。相比来说,做的事情也更多。例如:安全检查,访问控制反射的缺点相比非反射的代码,性能开销大。反射尤其不能用在执行频率高的代码段。曝光了Class的内部实现。破坏了Class不想公开的信息内容的设计。反射功能在运行时,会涉及要求更多的权限。对

2020-09-24 21:45:21 236

原创 Jar包原理解读

可执行jar包 与 不可执行jar包我的理解:差别在于有没有引导文件,即main方法。靠运行main主(线程)方法去联动其他方法、业务。部分jar包并非加个引导文件main方法就能运行的,需要考虑到这个jar对于容器、环境等方面的依赖。Maven默认打的包是不可被执行的在SpringBoot的代码工程pom.xml中,靠依赖如下插件,实现将SpringBoot代码工程打成SpringBoot风格的可执行Jar包。<plugin> <groupId>

2020-09-24 21:42:17 210

原创 服务API设计 之 API错误返回规范

API错误返回规范禁止通过抛异常形式返回API业务错误API禁止抛Checked异常,即业务处理上的参数错误、逻辑错误、业务错误等禁止通过抛异常形式返回,应用Response#code, message表达业务错误。注:不要逼调用方到处写try{}catch()。正例:Response<T> saveDesposit(...);反例:T saveDesposit(...) throws ServiceException, IllegalArgumentException

2020-09-24 09:03:55 114

原创 服务API设计 之 API命名规范

API命名规范命名风格面向资源同RESTful命名风格在大型系统中,常以"业务领域"视角进行模块划分,以达到业务"高内聚低耦合"的效果。"业务领域"必有"数据对象"沉淀,从宏观抽象的角度看,"数据对象"可统称为"资源","业务领域"就是业务相近的"资源"的集合。"资源"一定是业务抽象后的对象:可以是具体的数据对象:商品订单合同发票采购计划etc可以是抽象的对象概念:租户用户支付文件需求etc"业务领域"与"业务领域"之间的依赖,可理解为是对"

2020-09-24 09:02:42 299

test-asm.zip

java字节码技术示例代码

2021-01-01

空空如也

空空如也

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

TA关注的人 TA的粉丝

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