![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
经验之谈
文章平均质量分 92
黄老师-
这个作者很懒,什么都没留下…
展开
-
沈剑:技术核心管理者的时间,都只花在这 20% 的事情上
前言今天跟大家分享的话题是:作为一名企业的技术核心管理者,我们应该规划和思考哪些问题?作为管理者,我接下来将分享三个问题,希望在这个过程中,大家也与我一起来思考和探讨: 关于战略; 关于能力建设; 关于人员培养。 作为公司的核心管理者,不管是技术、产品、运营、销售,还是客服的管理者,我们需要思考:你的时间花在哪里?或者说你的领导的时间花在哪里?我们需要反思,作为管理者的我们,每个季度、每个月、每周,甚至每天的时间都花费在了这些事情上...原创 2021-04-26 10:48:08 · 400 阅读 · 0 评论 -
剖析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 · 436 阅读 · 0 评论 -
从钉钉看2B SaaS办公平台策略
中国的To B市场上,SaaS生态应该是怎么样的?IDC的一份白皮书中写到,围绕Salesforce的全球生态要比Salesforce本身大很多,增长速度也更快。在2019年,当Salesforce每赚1美元,它的全球生态将赚4.29美元。在国内,钉钉用户数达4亿、企业组织数量1700万。在这个迅速爆发的To B生态中,钉钉如何“界定”生态参与者?又如何界定自己的“边界”?钉钉的两个边界Q:钉钉怎么去定义你们的生态?以及目前这个生态里有多少参与方和角色?钉钉:钉钉天生就...原创 2021-01-30 18:33:16 · 795 阅读 · 0 评论 -
一文掌握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 · 1056 阅读 · 2 评论 -
三目运算类型取值原则(避坑)
在云笔记无意翻到这个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 · 1057 阅读 · 0 评论 -
【精】元数据驱动SaaS 架构的技术思考
引言作为业务系统技术开发同学,面向当下: 首先应该是快速搭建业务通路,让线上业务跑起来,快速试错,解决生存问题; 第二步是在链路畅通、业务基本跑起来的基础上,如何支撑业务跑得更快,就需要解决快速增长问题; 第三步,在完成支撑业务快速增长的基础上,要进行精细化提升,通过在支撑业务快跑间隙挤时间打磨系统功能和体验,踏踏实实花时间去抽象能力,沉淀产品,提升效能; 同时我们也必须面向未来,如何在抽象能力以及沉淀了产品的基础上,把所承载和沉淀的业务能力...原创 2021-01-24 15:09:54 · 1039 阅读 · 0 评论 -
元数据驱动的业务表单定制中心 思想和实践介绍
文章目录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 · 1464 阅读 · 2 评论 -
分布式系统灰度发布实践
文章目录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 · 2719 阅读 · 2 评论 -
中国SaaS平台的三种商业模式
(1)SaaS软件商业模式:云学堂为代表云学堂卖SaaS软件,挣SaaS软件钱。一般卖给企业内部的企业大学,当企业内部的培训学习平台使用。但是大家也都知道,在中国,培训学习这个行当,金牌讲师和金牌课程内容绝对是核心中的核心,而培训学习平台只是个工具而已,只能每年收一些相对固定的工具费用。培训学习SaaS至少比其他SaaS工具还要好一点,就是因为培训学习SaaS,至少还有收到其他钱的可能性:比如课件存储空间的费用。大量课件是文档和音频视频,占存储空间大比如讲课时,视...原创 2021-01-09 22:55:18 · 3997 阅读 · 0 评论 -
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 · 324 阅读 · 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 · 432 阅读 · 1 评论 -
解决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 · 2588 阅读 · 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 · 1928 阅读 · 2 评论 -
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 · 762 阅读 · 0 评论 -
干货,教你怎样开一场真正的战略会
越来越多的企业意识到战略的重要性,并在每年的年底制定下一年的战略规划。最近,就有很多企业来找我们开战略会,我发现一个很有意思的现象:在战略会上,通常是老板一个人在思考战略,其他人就等着老板讲,结果最后老板也没有完全讲清楚。这样开战略会其实效率很低。怎么提高效率呢?这些企业找到我们以后,我们会帮助他们把整个战略会从头到尾做个详细的梳理,除了讨论业务之外,还会讨论组织和人才。今天跟你分享下这个梳理的过程,以及怎么开好一场战略会。01.会前的三个关键动作开战略会之...原创 2020-12-15 23:58:46 · 2753 阅读 · 0 评论 -
你不得不知的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 · 325 阅读 · 0 评论 -
To B服务进击的10大增长法则
2008年金融危机以后,催生了两大领域的科技创新:一类是To C的共享经济模式公司,例如Uber、Airbnb、Lyft等;另一类是以SaaS、PaaS为模式的To B云服务公司。2008年以前,全球还没有一家达到独角兽量级的云服务创业公司;但到目前为止已经有100多家估值超过10亿美金、20多家估值超过百亿美金的基于云服务的企业服务公司。随着云计算基础设施的日益完善,企业业务在线化和协作在线化日益成为共识,新一代基于云服务的企业服务获得了巨大的增长。而2020年这次“世纪之疫”,在导致社会结构巨变原创 2020-12-07 15:10:59 · 776 阅读 · 0 评论 -
【精】一文就明白 并发编程/多线程
《一文就明白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 · 509 阅读 · 0 评论 -
作为业务团队Leader怎样做规划 之 增长飞轮
你有没有发现:有些公司可以构建持续发展的动力,不断跨越新技术和行业的竞争持续做到从优秀到卓越?而其它公司不行?有些团队能够长盛不衰,面对不同的挑战都能持续突破?而其它团队不行?有些人能够经得住时间和不同岗位的考验,持续打怪升级,实现跃迁?而其他人不行?对,我也发现了。那这里面有什么奥秘吗吉姆. 柯林斯在《从优秀到卓越》第八章提出的“飞轮效应”回答了这个问题。时隔 9 年后又将其单独写成新书《飞轮效应》(中文版今年 4 月刚刚上市),进一步阐释它的价值以及如何落地。飞轮效应不仅对一家企..原创 2020-10-26 17:33:37 · 1763 阅读 · 1 评论 -
技术团队该有的工作观
即使是技术类工作,除了“专业能力过硬”,以下软素质同样重要!1.认真负责 不把“出了问题谁负责”挂在嘴边,相反,“就这么干,出了事我负责”更具备leader的潜质 交给ta的任何事情,能够拿到结果,如果每件小事都能让人放心。就问你,你踏实不踏实? 不推三阻四,很少下意识的“找借口”,如果每次沟通都反馈“不是我”、“我没有”。就问你,你气不气? 2.自驱力强 不事事等别人交代,不是“要我做xxxx”,而是“我要做xxxx” 主动承担分外的事情,...原创 2020-10-19 23:03:47 · 196 阅读 · 0 评论 -
工作避坑指南 - 应届生篇
关于每页PPT的讲义欢迎留言交流原创 2020-10-19 22:58:10 · 197 阅读 · 0 评论 -
JVM实战 之 一次内存溢出排查经历
源于线上应用事件某天团队同学收到线上系统报警,web-abc真线有一台机down掉了。为保留事故现场,做剩余应用做了dump。然后开始分析问题排查1、 经过对线上出问题周期内的应用日志逐条排查,未发现明显异常。2、分析当时的dump快照,发现有两个类的实例数和总大小异常,这两个类是跟poi解析excel有关!这个很关键。3、再翻事发时间的真线日志,有所发现,16点11分51秒的时候,确实有流量请求一个上传excel的接口4、对比常规接口的日志,事发情况下,只有start没有finish原创 2020-10-15 23:09:11 · 370 阅读 · 0 评论 -
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 · 673 阅读 · 0 评论 -
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 · 1086 阅读 · 0 评论 -
【精】一文就让你精通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 · 747 阅读 · 0 评论 -
java中方法不要写太长的真正原因
java中一般建议一个方法不要写的过长,不方便维护和阅读是其中的一个原因,但是其真正性能的原因大家知道吗?我们知道,JVM一开始是以解释方式执行字节码的。当这段代码被执行的次数足够多以后,它会被动态优化并编译成机器码执行,执行速度会大大加快,这就是所谓的JIT编译。hotsopt源码中有一句if (DontCompileHugeMethods && m->code_size() > HugeMethodLimit) return false;当DontCompileHu转载 2020-10-03 22:53:31 · 1026 阅读 · 0 评论 -
服务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 · 747 阅读 · 0 评论 -
服务API设计 之 API命名规范
API命名规范命名风格面向资源同RESTful命名风格在大型系统中,常以"业务领域"视角进行模块划分,以达到业务"高内聚低耦合"的效果。"业务领域"必有"数据对象"沉淀,从宏观抽象的角度看,"数据对象"可统称为"资源","业务领域"就是业务相近的"资源"的集合。"资源"一定是业务抽象后的对象:可以是具体的数据对象:商品订单合同发票采购计划etc可以是抽象的对象概念:租户用户支付文件需求etc"业务领域"与"业务领域"之间的依赖,可理解为是对"原创 2020-09-24 09:02:42 · 2455 阅读 · 0 评论 -
服务API设计 之 API版本规范
API版本规范发布RELEASE版本正式发布的api包必须是RELEASE版本eg.<dependency> <groupId>cn.gov.zcy.paas.template</groupId> <artifactId>template-api</artifactId> <version>2.1.1.RELEASE</version></dependency>版本号风格使原创 2020-09-24 09:01:44 · 384 阅读 · 0 评论 -
服务API设计 之 API参数规范
文章目录【强制】字段名称用小驼峰风格【强制】Service API返回值必须使用Response包装【强制】杜绝完全不规范的缩写,避免望文不知义。(国际通用缩写除外)【强制】禁止使用 Map 作为参数类型【强制】业务对象/查询条件用DTO封装,禁止以入参方式平铺字段。【推荐】DTO字段设置JSR303 Annotation进行基础校验【推荐】在客户端完成基础字段校验注:此规范与《阿里巴巴Java编码规范》互补,同时有效。【强制】字段名称用小驼峰风格【强制】Service API返回值必须使用Respon原创 2020-09-24 09:00:22 · 1251 阅读 · 0 评论 -
服务API设计 之 API设计原则
你是否也感同身受?对接XX业务时,XX业务具备的功能和API全靠跑业务负责人那反复逐个询问、确认。用哪个API;怎么用;有没有限制;等等各个业务间,甚至同一业务内,API风格不统一。API命名:按自然语义全翻译的;按属性角度定义的;按操作角度定义的;动宾、非动宾的;复数、非复数的;等等API入参:带Map的;相同语义字段名称不一样;API出参:有包装Resoponse的;直接返回结果数据的;相同数据,返回格式和字段名称有差别的;错误信息:直接返回中文提示的;返回提示信息编码的;返回异常类型的原创 2020-09-23 09:26:39 · 2414 阅读 · 6 评论 -
JStorm-使用分享资料
JStorm分享-课件资料原创 2020-09-23 09:24:03 · 89 阅读 · 0 评论 -
RESTful API命名实践
文章目录引言REST 的诞生Web 技术发展REST 的诞生REST 详解REST 架构风格解读 REST1. 资源(Resources)2. 表现层(Representation)3. 状态转化(State Transfer)4. 综述REST 与 RESTfulREST 风格优点REST实践体会1. URI命名难度变大2. 用不用HTTP PATCH引言在互联网高度普及的今天,作为一名Web开发者,如果你还没听说过“REST”这个技术名词,出门都不好意思跟人打招呼。尽管如此,对于REST这个泊来品的原创 2020-09-23 09:07:20 · 599 阅读 · 0 评论 -
MySQL 之 索引合并
历史背景MySQL 5.0版本之前,一个表一次只能选择并使用一个索引。MySQL 5.1版本开始,引入了Index Merge Optimization技术,使得MySQL支持一个表一次查询同时使用多个索引。官方文档:MySQL Index Merge OptimizationIndex Merge Optimization支持三种合并算法The Index Merge Intersection Access Algorithm对应SQL 中的 AND 场景The Index Merg原创 2020-09-23 09:05:33 · 1129 阅读 · 0 评论 -
MySQL 之 一例子查询很慢的问题分析
慢查询案例DELETE FROM settlement_invoice_attachment g1 WHERE demand_id in (SELECT id FROM settlement_invoice_demand g2 WHERE statement_id = 1802065000000074956)乍眼一看,上述SQL如此简单,且demand_id和statement_id字段都是建了索引,即使是Review也会认为是OK没问题的。然而,实际情况却是个慢查询,情况如下:explain明细原创 2020-09-23 09:02:33 · 213 阅读 · 0 评论