- 博客(101)
- 资源 (2)
- 收藏
- 关注
原创 redis 6.0新特性-客户端缓存学习总结
redis的客户端缓存有两种模式,默认模式会占用redis服务端的内存资源,广播模式会占用redis服务端的CPU资源。默认模式需要注意缓存的key的数量不能太大。广播模式需要注意缓存的key的前缀数量不能太大。(具体性能转折点在哪里需要自行测试)客户端缓存在网络问题导致连接通道断开且未被检测出来的时间段内,应用可能读到过期数据,实时性要求特别高的业务需要注意避免使用或者有兜底方案。
2023-02-02 22:25:07
1506
原创 《Linux性能优化实战》学习笔记 Day04
乐观锁虽然去除了锁操作,但是一旦发生冲突,重试的成本非常高。这是两种最基本的处理方式,更高级别的锁都会选择其中一种来实现,比如读写锁就既可以基于互斥锁实现,也可以基于自旋锁实现。用队列把请求锁的线程排队,按照先来后到的顺序加锁即可,当然读线程仍然可以并发,只不过不能插队到写线程之前。读写锁是有倾向性的,读优先锁很高效,但容易让写线程饿死,而写优先锁会优先服务写线程,但对读。当你无法判断锁住的代码会执行多久时,应该首选互斥锁,互斥锁是一种独占锁。CAS相对用的较少,没啥特别高的并发量,锁还是方便的。
2023-01-20 23:13:36
2346
原创 《后端技术面试 38 讲》学习笔记 Day 15
太多的问题被人们的适应能力忽略掉了,直到有人解决了这些问题,身处其中的人才恍然,原来过去的方式都是有问题的。问题 = 期望 - 体验到一个新环境中,大家体验差不多,但是你的期望和其他人不同,你就会感受到问题。而这种感受则可能是你出人头地的机会:如果你解决了这些问题,其他人也会明白过去的方式是有问题的,而你就是那个解决问题的人。
2023-01-19 23:50:58
1074
1
原创 《Linux性能优化实战》学习笔记 Day03
高并发下传输大文件,我们上文提到过,大文件难以命中 PageCache 缓存,又带来额外的内存拷贝,同时还挤占了小文件使用 PageCache 时需要的内存,因此,这时应该使用直接 IO。这两点可以看到 PageCache 的优点,它在 90% 以上场景下都会提升磁盘性能,但在某些情况下,PageCache 会不起作用,甚至由于多做了一次内存拷贝,造成性能的降低。你可以回忆下,没用零拷贝时,为了传输 320MB 的文件,在用户缓冲区分配了 32KB 的内存,把文件分成 1 万份传送,然而,
2023-01-18 21:24:28
758
原创 2022年围绕着BI平台的成长
经过这三个大阶段的迭代,我们的BI平台已经有了长足的进步。也深刻的锤炼了我代码分析能力,实践了重构之道。另一个让我今年收获匪浅的是,经过半年、一年多的相处,我们的新人基本都能够cover住一个模块,一整个流程。他们的工作方式形成了闭环,不需要我再去反复催促。2022年是一个快速成长的一年,也是一个扎实基础的一年。如今,在2023年的伊始,我们小组基本定下了大致的工作方向,我也能够腾出70%的时间进行ETL平台的研究,BYZER(白泽)我来啦!!
2023-01-18 01:19:57
340
原创 《后端技术面试 38 讲》学习笔记 Day 14
最近几年的时间他承担的,使用的技术、开发的项目几乎和头几年一样,那么很难相信这些年他的技术会有什么进步。任何专业技能的从业者都需要经历5 个阶段。一个悲观的事实是,新手会自然进入高级新手阶段,**而高级新手却无法自然进入其后的其他等级阶段。**实际上,在各个专业领域中,超过半数的人终其一生都停留在高级新手阶段.而一旦行业出现技术变革或者工作出现新情况,高级新手就会遇到巨大的工作困难。
2023-01-17 23:05:09
392
原创 《Linux性能优化实战》学习笔记 Day02
默认64位系统分配区数为:cpu核数*8,如当前环境16核系统分配区数为128个,每个64M上限的话最多可达8G,限制上限后,后续不够的申请会直接走mmap分配和munmap回收,不会进入ptmalloc2的buffer池。不过本质上,它是哈希表的变种,限制每个哈希桶只有 1 个比特位,所以,虽然它消耗的空间更少,但仅用于辅助数据的主索引,快速判断对象是否存在。(当然,JVM的内存逃逸分析会帮我们把一些分配在堆中的对象直接分配在找上,加速运行)(栈的容量有限,如 CentOS 7 中是 8MB 字节)
2023-01-17 22:56:14
1271
1
原创 《后端技术面试 38 讲》学习笔记 Day 13
比特币的主要思路是,构建一个无中心、去信任的分布式记账系统。交易签名只能保证交易不是他人伪造的,却不能阻止交易的发起者自己进行多重交易,即交易的发起者将一个比特币同时转账给两个人,也就是所谓的双花。比特币应用的区块链场景也叫做公链,因为这个区块链对所有人都是公开的。除此之外,还有一种区块链应用场景,被称作联盟链。区块链的出现,使得低成本,去信任的跨组织合作成为可能,将重构组织间的关系,这个关系既包括企业间的关系,也包括政府和企业间的关系,还有政府部门间的关系。
2023-01-15 19:02:58
1175
原创 《后端技术面试 38 讲》学习笔记 Day 12
大数据技术其实是分布式技术在数据处理领域的创新性应用,本质和我们此前讲到的分布式技术思路一脉相承:用更多的计算机组成一个集群,提供更多的计算资源,从而满足更大的计算压力要求。大数据就是将各种数据统一收集起来进行计算,发掘其中的价值。数据分析传统上主要使用 SQL 进行分析,如果能根据 SQL 自动生成 MapReduce,那么可以极大降低大数据技术在数据分析领域的应用门槛。大数据技术可以说是分布式技术的一个分支,都是面临大量的计算压力,采用分布式服务器集群的方案解决问题。
2023-01-15 19:02:16
745
原创 《后端技术面试 38 讲》学习笔记 Day 11
程序要升级,必须要关闭进程重新启动,这段时间应用也是不可用的互联网的高可用是说,在上面各种情况下,应用都要是可用的,用户都能够正常访问系统,完成业务处理但不管是哪种方案,实现高可用需要投入的技术和设备成本都非常高。因此可用性并不是越高越好,而是要根据产品策略寻找高可用投入产出的最佳平衡点:冗余备份、失败隔离、限流降级、异地多活失败隔离的主要架构技术是消息队列。
2023-01-15 19:00:29
290
原创 《后端技术面试 38 讲》学习笔记 Day 10
Dubbo 应该说是借鉴了此前更早的 SOA 架构方案,即面向服务的体系架构。Dubbo 在借鉴 SOA 架构的基础上进行了优化,抛弃了 SOA 一些不必要的规范约束,使用二进制协议进行服务注册与调用,执行效率和使用的简洁性都得到了极大提升。Dubbo 架构和 SOA 架构一样,最核心的组件也是 3 个,分别是和。阿里微服务是,。所以在重构微服务的时候,只需要对这些模块进行较小的改动,进行微服务部署就可以了。
2023-01-15 18:59:10
419
原创 《后端技术面试 38 讲》学习笔记 Day 09
在整个互联网系统架构中,承受着最大处理压力,最难以被伸缩的,就是数据存储部分。目前用来改善数据存储能力的主要手段包括:数据库主从复制、数据库分片和 NoSQL 数据库。现实中,也会采用 MySQL 主主复制的方案。使用主主复制需要注意的是,主主复制仅仅用来提升数据写操作的可用性,并不能用来提高写操作的性能。,也就是说,所有的应用程序都必须连接到同一个主数据库进行写操作。
2023-01-15 18:51:59
599
原创 《后端技术面试 38 讲》学习笔记 Day 08
主要手段就是使用消息队列的异步架构,有时候也被称为事件驱动架构。消息队列异步架构的主要角色包括消息生产者、消息队列和消息消费者。根据消息消费方式又分为点对点模式和发布订阅模式两种。在中,多个消息生产者向消息队列发送消息,多个消息消费者消费消息,每个消息只会被一个消息消费者消费。在发布订阅模式中,开发者可以在消息队列中设置主题,消息生产者的消息按照主题进行发送,多个消息消费者可以订阅同一个主题,每个消费者都可以收到这个主题的消息拷贝,然后按照自己的业务逻辑分别进行处理计算。
2023-01-14 22:40:09
639
原创 《后端技术面试 38 讲》学习笔记 Day 07
当同时访问系统的用户不断增加的时候,需要消耗的系统计算资源也不断增加,需要更多的 CPU 和内存去处理用户的计算请求,需要更多的网络带宽去传输用户的数据,需要更多的磁盘空间去存储用户的数据。当消耗的资源超过了服务器资源的极限的时候,服务器就会崩溃,整个系统无法正常使用。垂直伸缩与水平伸缩传统的行业,比如银行、电信这些企业的软件系统,主要是使用垂直伸缩这种手段实现系统能力的提升,在服务器上增强,提升服务器的硬件水平。
2023-01-13 23:46:35
283
原创 《后端技术面试 38 讲》学习笔记 Day 06
软件设计的核心目标就是高内聚、低耦合。主要讨论哪些类应该聚合在同一个组件中,以便组件既能提供相对完整的功能,又不至于太过庞大。复用发布等同原则、共同封闭原则、共同复用原则讨论的是组件应该包含哪些功能和类,而组件耦合原则讨论组件之间的耦合关系应该如何设计。无循环依赖原则、稳定依赖原则、稳定抽象原则稳定依赖原则通俗地说就是,组件不应该依赖一个比自己还不稳定的组件。公司的技术沉淀与实力,公司的业务情况,部门与团队的人情世故,甚至公司的过往历史,都可能会对组件的设计产生影响。
2023-01-12 20:34:55
416
原创 《后端技术面试 38 讲》学习笔记 Day 05
框架是对某一类架构方案可复用的设计与实现。框架应该满足开闭原则,即面对不同应用场景,框架本身是不需要修改的,需要对修改关闭。同时框架还应该满足依赖倒置原则,即框架不应该依赖应用程序,因为开发框架的时候,应用程序还没有呢一般说来,我们使用框架编程的时候,需要遵循框架的规范编写代码。比如 Tomcat、Spring、Mybatis、Junit 等,完成某些特定的功能,比如输出日志,进行正则表达式匹配等。人们对架构师的工作有一种常见的误解,认为架构师做架构设计就可以了,架构师不需要写代码。
2023-01-11 20:35:45
467
原创 《后端技术面试 38 讲》学习笔记 Day 04
接口隔离原则:不应该强迫用户依赖他们不需要的方法。通过使用接口隔离原则,我们可以将一个实现类的不同方法包装在不同的接口中对外暴露。应用程序只需要依赖它们需要的方法,而不会看到不需要的方法。使用接口隔离原则,通过多重继承的方式进行接口隔离。**使用接口隔离原则,就是定义多个接口,不同调用者依赖不同的接口,只看到自己需要的方法。**而实现类则实现这些接口,通过多个接口将类内部不同的方法隔离开来。Java5 以后版本对所有实现了 Iterable 接口的类都可以使用这种简化的 for 循环进行遍历。
2023-01-10 20:03:38
564
原创 《后端技术面试 38 讲》学习笔记 Day 01
通过学习一门覆盖面较广的课程,来夯实基础,完善自己的知识体系总结性的学习,不求快,而求稳。这门课程的学习,我将跟随专栏的章节所讲,结合工作内容进行思考,记录并分享。欢迎大家对我的思考发起质疑,共同探讨。
2023-01-07 20:51:32
479
原创 巧用Hibernate 完成多数据库的DDL脚本创建
巧用Hibernate 完成多数据库的DDL脚本创建。利用好hibernate的多数据源方言兼容性,我们仅维护一套注解即可创建多数据源DDL。
2022-12-29 21:15:53
1191
原创 es应用笔记2-sql查询
es应用笔记2-sql查询es作为一个搜索索引,在分析场景中,作为明细查询的场景会比kylin、impala、hive等更加合适。es在6.3版本开始支持sql查询,且其sql基础语法与大数据端的语法较兼容,函数库略有不同。对于多数据源的接入,通过jdbc接入es改造成本较低,但是xpack-sql-jdbc这个客户端的包是收费的,但是其服务端仍提供了rest api 供查询。界面查询kibana中添加简单数据选择想要的一个栗子开发者工具查询进入开发者工具界面查看有什么表
2022-03-24 11:26:57
6989
1
原创 es应用笔记1-es部署
es应用笔记1-es部署偷懒起见,用docker部署elasticsearch以及kibana。 为了结合实际使用,部署7.6.2版本。参考:docker部署es部署es拉取镜像docker pull docker.elastic.co/elasticsearch/elasticsearch:7.6.2启动docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elast
2022-03-24 11:24:19
2663
原创 es学习笔记2-es组件
es学习笔记2-es组件es生态组件简介The Elastic Stack components are shown in the following diagram. It is not necessary to include all of them in your solution. Some components are general-purpose and can be used outside the Elastic Stack without using any other compo
2022-03-22 19:52:24
3238
原创 es学习笔记1-es概念
es学习笔记1-es概念书:《Learning Elastic Stack 7.0 : distributed search, analytics, and visualization using Elasticsearch, Logstash, Beats, and Kibana》简介 为了应付大量数据,且传统的关系型数据库无法存储。尤其是全是搜索和分析的应用和BI(business intelligence )应用。 es生态组件有:Kibana, Logstash, Beats,
2022-03-21 19:41:10
936
原创 skywalking09 - 异步线程链路续接(下)
skywalking09 - 异步线程链路续接(下)–源码分析在上篇,我们提到了,多线程可能会导致链路断开,而可以通过三种方式将其接上。那你有没有好奇,为什么它会断开,它又是怎么接上的呢?链路为何断开要知道链路为何断开,我们就需要知道,正常情况下的链路是如何工作的,几个Span之间是如何接在一起的。我们可以通过第四篇提到的@Trace注解进行入手,这个注解会增加一个Span。正常情况下@Trace添加Span对skywalking源码有一定了解的你一定知道,其对类做修改增强的时候,会定义一个该
2021-11-20 19:56:43
2133
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人