![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
法以立本
文章平均质量分 86
法律、法理、规章、制度、方法。
程序猿KIMI
爱狗、爱生活、爱编码的退役程序猿
展开
-
分布式数据库在金融核心场景落地实践分享
分布式数据库在金融核心场景落地实践分享,取自infoq的公开课视频。原创 2022-08-13 15:52:27 · 290 阅读 · 0 评论 -
配置中心,让微服务更『智能』
目录1. 背景介绍2. 为什么需要配置中心?2.1 配置即『控制』2.2 配置需要治理2.3 微服务的复杂性3. 配置中心的一般模样3.1 治理能力3.2 可用性3.2.1 Apollo at a glance3.2.2 服务端高可用3.2.3 客户端高可用3.2.4 可用性场景举例3.3 实时性3.3.1 发送ReleaseMessage的实现方式4. 如何让微服务更『智能』?4.1 开关4.1.1 发布开关4.1.2 实验...转载 2021-10-31 22:51:29 · 419 阅读 · 0 评论 -
不一样的kafka系列#Topic和Partition
主题的管理包括创建主题、查看主题信息、修改主题和删除主题等操作。可以通过Kafka提供的kafka-topics.sh 脚本来执行这些操作,这个脚本位于$KAFKA_HOME/bin/ 目录下,其核心代码仅有一行,具体如下:exec $(dirname $0)/kafka-run - class.sh kafka.admin.Top ic Command "$@"Topic相关auto .create.topics .enable 设置为true会自动创建主题,和...原创 2021-09-29 00:31:44 · 308 阅读 · 0 评论 -
不一样的kafka系列#provider生产者详解
KafkaProducer异常分类KafkaProducer中一般会发生两种类型的异常:可重试的异常和不可重试的异常。常见的可 重试异常有:NetworkException、LeaderNotAvailableException, UnknownTopicOrPartionException、 NotEnoughReplicasException、NotCoordinatorException 等。比如NetworkException表示网络异 常, 这个有可能是由于网络瞬时故...原创 2021-09-28 22:35:50 · 238 阅读 · 0 评论 -
不一样的kafka系列#server服务端详解
服务端参数zookeeper.connect 该参数指明broker 要连接的ZooKeeper 集群的服务地址(包含端口号),没有默认值,且 此参数为必填工页。可以配置为localhost:2181 ,如果ZooKeeper 集群中有多个节点,则可以用逗 号将每个节点隔开,类似于localhost1 :2181,lo calhost2 :2181,l oca lhost3: 218 1 这种格式。最佳的实践方式是再加一个chroot 路径,这样既可以明确指明该chroot 路径下的节 点是为Kafka原创 2021-09-27 23:55:05 · 225 阅读 · 0 评论 -
不一样的Kafka系列#kafka初识
每一条消息被发送到broker 之前,会根据分区规则选择存储到哪个具体的分区。如果分区 规则设定得合理,所有的消息都可以均匀地分配到不同的分区中。如果一个主题只对应一个文 件,那么这个文件所在的机器I/O 将会成为这个主题的性能瓶颈,而分区解决了这个问题。在 创建主题的时候可以通过指定的参数来设置分区的个数,当然也可以在主题创建完成之后去修 改分区的数量,通过增加分区的数量可以实现水平扩展。 Kafka 为分区引入了多副本( Replica ) 机制, 通过增加副本数...原创 2021-09-27 23:43:21 · 105 阅读 · 0 评论 -
Mysql优先队列排序算法
本文适用于 MySQL 5.6 及以上版本0.先抛问题假设字段category无索引且有重复值,order by category和limit组合使用的结果会和预期不符。问题复现:表结构(就是两个字段)CREATE TABLE `ratings` ( `id` int(11) NOT NULL AUTO_INCREMENT, `category` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_I.转载 2021-09-05 01:34:32 · 892 阅读 · 0 评论 -
eBay Elasticsearch 性能优化实战-中文篇
原文:Elasticsearch Performance Tuning Practice at eBayElasticsearch是基于Apache Lucene并具有近实时存储、搜索、分析数据的开源搜索和分析引擎。虽然Elasticsearch是为快速查询而设计,但其性能主要取决于应用场景、索引数据量和用户查询数据的频率。本文总结了Pronto团队应对的挑战的策略。并展示了不同配置的基准测试翻译 2018-01-16 13:41:54 · 1421 阅读 · 0 评论 -
ES性能调优权威指南(篇一)
搜索和分析是当今应用软件的基本特征。可伸缩性和近实时处理大数据的能力是移动app、web和数据分析应用的基本要求之一。 自动补全文本字段、搜索建议、位置和地理空间搜索和多维导航是满足业务需求的可用标准。 调优是基本的、必要的和至关重要的!任何系统调优都必须基于性能测试;这就是为什么对于任何使用ES的人来说,对监控和指标变化的影响有清楚的了解是至关重要的。 这三章系列教程介绍了性能调优的一些技巧和方法,逐步解释了与之最相关的系统配置的设置和指标。翻译 2017-08-22 11:17:33 · 4166 阅读 · 0 评论 -
ES性能调优权威指南(篇三)
ES提供了分片和复制的推荐方法用于扩展和增加索引的可用性。分配稍多一点的分片是好的,但是大量的分片是不好的。很难定义什么是太多的分片,因为这取决于它们的大小以及它们是如何被使用的。不常使用的100个分片可能很好,而两个使用非常频繁的分片可能太多了。监视你的节点以确保它们有足够的空闲能力来处理异常情况。翻译 2017-08-22 11:44:40 · 1038 阅读 · 0 评论 -
ES性能调优权威指南(篇二)
如果我们使用ES做主要搜索,或者我们组织搜索是面向用户的特征,我们应该监视查询延迟,并在超过阈值的情况下采取行动。翻译 2017-08-22 11:33:35 · 792 阅读 · 0 评论 -
ES5.0常用优化指南
本文将推荐一些特定于ES5.0或以上的性能调优技术、策略和建议。翻译 2017-08-22 11:05:56 · 671 阅读 · 0 评论 -
ThreadLocal源码的一些理解
ThreadLocal在工作中经常使用,尤其在Web的请求周期中,常见的使用场景如在SpringMvc中,从登录拦截器中preHandler中set一个全局的变量,在postHanlder时remove,这里很多使用容易忽略remove,因为大多数Web服务器是使用线程池工作的,如果在一个request中不remove操作,而在第二次请求中又因为某些业务没有在拦截器中做set操作,则而第二次从ThreadLocal中获取的值变是一个失效值,这点是比较容易忽视的一个问题。原创 2017-01-20 13:37:45 · 637 阅读 · 0 评论 -
探索 ConcurrentHashMap 高并发性的实现机制
探索 ConcurrentHashMap 高并发性的实现机制ConcurrentHashMap 是 Java concurrent 包的重要成员。本文将结合 Java 内存模型,来分析 ConcurrentHashMap 的 JDK 源代码。通过本文,读者将了解到 ConcurrentHashMap 高并发性的具体实现机制。这对于我们在实际应用中更加高效的使用它是很有帮助的。转载 2014-08-21 10:58:27 · 501 阅读 · 0 评论 -
双重检查锁定模式(DCL)
双重检查锁定模式[编辑]双重检查锁定模式(也被称为"双重检查加锁优化","锁暗示"(Lock hint)[1]) 是一种软件设计模式用来减少并发系统中竞争和同步的开销。双重检查锁定模式首先验证锁定条件(第一次检查),只有通过锁定条件验证才真正的进行加锁逻辑并再次验证条件(第二次检查)。该模式在某些语言在某些硬件平台的实现可能是不安全的。有的时候,这一模式被看做是反模转载 2014-08-14 15:50:55 · 976 阅读 · 0 评论 -
WeakHashMap的一些理解
WeakHashMap在GC的时候会清除未被强引用的键值,接下来便分析一下是如何做到的。首先看一下其内部Entry对象的结构,Entry继承了WeakReference,从Entry的构造函数可以知道,在put一个key-value时,key作为一个弱引用而存在,getKey()也是返回这个key的引用,这里可以看到unmaskNull的作用是对应于put了一个null的key,当put的key为...原创 2017-01-19 15:32:50 · 658 阅读 · 0 评论 -
为什么wait()和notify()必须放在synchronized里面?
我们都知道在调用Object.wait()时必须在synchronized块里面,否则会抛出 IllegalMonitorStateException。但是为什么会有该限制,为什么wait()和notify()同时出现才有意义。wait()往往需要在condition上面协同使用,如果condition不能满足,那么将一直等待。所以一般是这样使用:if(!condition){ step1wai...原创 2018-04-19 17:55:41 · 10257 阅读 · 0 评论 -
IntelliJ IDEA 使用心得与常用快捷键
那种酸爽,根本说不出来—————————————————————————— by: Jimi没有BondJimi是谁? 就是洒家啊!刚开始学习写Java的时候,用的eclipse,正式工作后,主要用的myeclipse,去年初在前辈的推荐下,在2折的时候买了正版的 IntelliJ IDEA 和 Pycharm,12.0版终生使用,一年更新。使用前早就久闻其名,据说是最好的Java开发工具。起先用的非常不习惯,但是花了钱的,硬着头皮用了下去。短短一个礼拜,彻底爱上了它!就是辣么酸爽!-------转载 2021-08-27 16:12:16 · 185 阅读 · 0 评论 -
银行核心系统是什么?
银行核心系统是什么?2011-01-03 csdn银行核心系统是什么银行核心系统的英文原意CORE Banking, CORE其实不是“核心”的意思这么简单,它的全称是: Centralized Online Real-time Exchange (集中式在线实时交互)。注意两个重要的关键词“集中”和“实时”。什么是“集中”,也就是说外围系统或者说辅助系统,不管是柜面系统也罢,ATM也罢,网银也 罢,它们的业务流程最终都要汇集到这个核心系统。就像一台计算机的所有的操作最终都要归结到CPU的.转载 2021-07-22 17:37:23 · 9887 阅读 · 2 评论 -
既然CPU有缓存一致性协议(MESI),为什么JMM还需要volatile关键字?
其实这就是协议和实现的关系,MESI 只是缓存一致性协议,每种语言都有不同的对 MESI 的实现方式,在 Java 中是借助了 volatile 关键字来实现的,也就是说 volatile 关键字的底层原理是使用 MESI 来保证可见性。既然聊到了 volatile 这个关键字,我就来和你聊一下为什么 volatile 用到了 MESI 协议,这就要从 JMM 来谈起了。在说 JMM 之前,你还得需要先了解一下计算机中的内存模型先从内存模型谈起计算机在执行程序时,会从内存中读取数据,然后..转载 2021-08-04 14:14:12 · 1116 阅读 · 2 评论 -
为什么计算机要使用反码/补码
一、为什么需要反码?反码的作用就相当于数学中的负数。对于小学生来说,会做的算术题是:5-3,但是不会做3-5。于是,我们上初中的时候,数学里就引进了一个新的概念:负数。引入负数之后,本来是减法的运算就可以变成加法来实现:3-5=3+[-5]=[-2],中括号代表“负数”,“负数”就是我们人为给出的数学术语。对于计算机来说,会做的算术题是:5+3,但是不会做3-5。于是,我们就在编码里引进了一个新的概念:反码。引入反码之后,本来是减法的运算就可以变成加法来实现:3-5=3+[-5]=[-2原创 2021-02-19 00:52:32 · 7152 阅读 · 3 评论 -
敏捷软件开发设计模式之他
Active Object什么是Active ObjectActive Object模式是一种异步编程模式。它通过对方法的调用(Method Invocation)与方法的执行(Method Execution)进行解耦(Decoupling)来提高并发性。若以任务的概念来说,Active Object模式的核心则是它允许任务的提交(相当于对异步方法的调用)和任务的执行(相当于异步方法的真正执行)分离。具体这里讲的很详细了,我就不重复了,可以参考。http://ifeve.com/java-ac原创 2021-03-07 21:04:26 · 167 阅读 · 0 评论 -
nsq(有赞分支)、kafka、rocketMq 架构浅析
消息队列是分布式系统中重要的中间件,在实现系统高性能,高可用,可伸缩性和最终一致性架构框架中扮演着重要角色。是大型分布式系统不可缺少的核心中间件之一。目前市面上比较常见的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ,NSQ等。本文将对三款优秀消息中间件(nsq,kafka,rocketMq)的实现架构进行简单介绍。一、分布式场景下MQ能解决哪些具体问题?1.1 系统解耦 在分布式特别是微服务场景下,系统之间的依赖关系会随着业务功转载 2021-08-17 10:07:23 · 1621 阅读 · 0 评论 -
漫谈消息队列:以 Kafka 和 RocketMQ 为例
前言消息队列是一种帮助开发人员解决系统间异步通信的中间件,常用于解决系统解耦和请求的削峰平谷的问题。它是一种中间件,意味着它是面向研发人员而非终端用户的产品,它的存在不能直接的创造价值,但可以有效的简化研发的开发工作。下面,我试着用一个简单的例子来展示下 MQ 的打开方式。一个电商系统的演进一个最简单的电商系统,至少包含以下流程: 用户下单 付款 配送 相信大家都能理解为什么我们不会在一个系统中实现所有功能。 那好,我们假设三个功能简单的...转载 2021-03-22 22:06:05 · 270 阅读 · 0 评论 -
如何通过事务消息保障抢购业务的分布式一致性?
阿里巴巴中间件2021 年 3 月 05 日文化 & 方法最佳实践方法论前言在电商领域,抢购和秒杀是非常普遍业务模式,抢购类业务在快速拉升用户流量并为消息者带来实惠的同时,也给电商系统带来了巨大考验。在高并发、大流量的冲击下,系统的性能和稳定性至关重要,任何一个环节出现故障,都会影响整体的购物体验,甚至造成电商系统的大面积崩溃。和电商领域抢购场景极为类似的业务模式还有很多,比如大型赛事和在线教育的报名系统,以及各类购票系统等。针对抢购类业务在技术上带来的挑战,业界有.转载 2021-03-22 21:58:48 · 89 阅读 · 0 评论 -
项目经理那些事
昨天,前途无量学习小组的组长陈同学在学习小组群内问了关于项目经理的问题,为了小伙伴的疑惑,小编特意整理了项目经理精选文章50篇~你可以在这里了解到项目经理是做什么的、项目经理要具备哪些能力,项目经理的待遇、项目经理的发展前景等等。无论你是初级项目经理、实施人员,还是想转项目经理的人群,你都可以在这里找到你想要的资源~一、入门篇(23篇)【高级项目经理和项目经理的区别】https://blog.csdn.net/u012757419/article/details/92812015【项.转载 2021-04-25 16:42:36 · 165 阅读 · 0 评论 -
康威定律的各种解读 - ThinkingLabs
随着时间的推移,不同的人以各种不同的方式阐明了康威定律。这是我最近在阅读康威定律文献时发现的变化的概述。Melvin Conway对康威定律的原始定义:设计系统的组织被限制生产设计,这些设计是这些组织的通信结构的副本。尤尔登和康斯坦丁更坚定地重新表述了康威定律:组织设计的任何系统的结构都与组织的结构同构。– Edward Yourdon 和 Larry L. Constantine,结构化设计,1979埃里克·雷蒙德 (Eric Raymond) 重申了康威定律如下:软.转载 2021-08-19 22:09:37 · 654 阅读 · 0 评论 -
快速、深入理解设计模式的what、why、how
工作很久,看过很多代码,看过很多源码,发现大部分人对设计模式的理解有偏差,我将从以下几个角度对设计模式进行详细介绍。设计模式是什么设计模式是一种思想,一种结构,一种优秀的思考模式。类比建房子的设计图纸,芯片设计的电路图,同样是建房子,为什么有的可以几百年不倒,有的十几年就要重修,这些至上而下就是细节的体现。架构师的职责就是设计一个公司系统的基础架构,并提供关于怎样建立和维护系统的指导方针。,那具备业务领域深度和技术领域深度,以及其他的辅助技能,辅助技能包括横向通用能力、风险识别、沟通分配、目标达原创 2021-08-31 11:45:23 · 499 阅读 · 0 评论 -
去哪儿网报价系统DDD技术升级的那些事
背景:周末抽空看了一个视频,因为没有找到ppt,下面截图体现出来了,然后加上一些自己的思考。思考:DDD很火,拿着锤子看啥都是钉子,所以一个好的时机很重要,这里核心我理解DDD重构能有效果,一是重构时机到了,也就是这玩意大家都觉得烂,一个需求技术排期要一个月,业务不能理解(天时),二是说服组织团队认可价值,尤其是业务、老板、质量(人和),三是内部条件的保证,如基础设置、人员能力匹配(地利),四是使命必达的决心。我个人认为推进并拿奖除了结果在那,王植萌的支持也是很重要的。战略设计、战术设计,这原创 2021-08-22 17:09:12 · 191 阅读 · 0 评论 -
提升代码质量的方法:领域模型、设计原则、设计模式
一 影响代码差的根因1 差代码的体现我们可以列举出非常多质量差的代码的表现现象,如名字不知所意、超大类、超大方法、重复代码、代码难懂、代码修改困难……其中最为影响代码质量的两个表现是命名名不副实、逻辑可扩展性差,当一个新人阅读代码时,有时发现方法命名与实际逻辑对不上,这就让人感到非常疑惑,这种现象在平时工作并不少见;另一个就是逻辑扩展性差,一个新业务需求提出来后,发现要在多处改动,需要回归的业务逻辑比较多,造成研发效率不高。2 问题归纳对第1节中提到的现象进行问题归纳整...转载 2021-08-30 14:11:43 · 119 阅读 · 0 评论 -
清晰架构:融合 DDD、洋葱架构、整洁架构、CQRS
原文:https://herbertograca.com/2017/11/16/explicit-architecture-01-ddd-hexagonal-onion-clean-cqrs-how-i-put-it-all-together/这篇文章是软件架构编年史(译)的一部分,这部编年史由一系列关于软件架构的文章组成。在这一系列文章中,我将写下我对软件架构的学习和思考,以及我是如何运用这些知识的。如果你阅读了这个系列中之前的文章,本篇文章的的内容将更有意义。大学毕业之后我做了一名高中老师,直到翻译 2021-08-22 17:11:13 · 609 阅读 · 0 评论 -
谋略那些事,汉成帝鸿嘉三年所思,职场以退为进策略
最近看到一篇文章,讲婕妤的推让,我觉得很有意思,就写了一些自己的思考。以下是作者的分析,总集一句是利益的体现永远是多维度的,多变的,自己的不可替代性,好好想想,这是最重要的,100%同意的。以史为鉴是个好东西,历史的故事,工作中其实也很常见,功高盖主,权力斗争,平衡制衡都是常见套路,很多人说这些只能私底下说,我是特别见不惯那些满口仁义道德用价值观来管理人,同时背地一套阳奉阴违的某些人,但是往往是他们,才能让你长记性。言归正传,这里我想说的是,如果坐了,会发生什么。可能性一,引得皇后嫉妒,两方原创 2021-09-01 00:15:57 · 581 阅读 · 0 评论 -
Hacker News热文:请停止学习框架,学习领域驱动设计(DDD)(获500个点赞)
在 Hacker News 上获得接近 500 个点赞的一篇名为《停止学习框架》的文章称:我们是程序员,每天都在了解最新的技术,每天都在学习编程语言、框架和库,因为我们知道的现代编程工具越多越好,对吧?不停地追随 Angular、React、Vue、Riot、Ember、Knockout 的脚步还真是一件有意思的事情呢。(译注:反话)但这其实是在浪费时间!时间是人类最宝贵的资源。时间是有限的、不可再生的,你可以用钱买任何东西,却买不了时间。技术,就像时尚,在以光速在变化着。为了赶上它,我...转载 2021-08-30 10:33:13 · 165 阅读 · 0 评论 -
商城计价中心 - 从容应对复杂场景价格计算
随着vivo商城的业务架构不断升级,整个商城较为复杂多变的营销玩法被拆分到独立的促销系统中。拆分后的促销系统初期只是负责了营销活动玩法的维护,促销中最为重要的计价业务仍然遗留在商城主站业务中,且由于历史建设问题,商城核心交易链路中商详页、购物车、下单这三块关于计价逻辑是分开独立维护的,没有统一,显然随着促销优惠的增加或者玩法的变动,商城侧业务重复开发量会显著加大。促销系统的独立,计价相关业务能力从业务边界上也应由促销系统提供,因此促销侧需要从头开始设计促销计价相关能力。二、原有计价业转载 2021-08-23 09:42:57 · 364 阅读 · 0 评论 -
架构整洁之道,整洁架构
这篇文章是翻译(Uncle Bob Martin)的文章。原文在这:http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html。这篇文章作者尝试使用简单的观点将各种架构的共通之处和最终目标说清楚。全文要说清楚的就是一件事“如何写出整洁的架构”。作者希望在架构系统的时候只需要秉持最简单的两个观点(分层和依赖规则)开发,就能开发出干净整洁的系统架构。以下是译文过去几年间有许多关于系统架构的观点。比如:..翻译 2021-08-25 20:43:58 · 776 阅读 · 0 评论