10 2023 档案
摘要:git的由来说白了,就是一个天才程序员,因为不喜欢传统的代码版本控制工具(集中式)或者喜欢的工具不开源,就自己花了半个月的时间写了这么一个流行至今的“分布式版本控制系统”。 当年,Linux的发明人Linus Torvalds将Linux的源码放置开源社区后,开始接收来自世界各地的志愿者们贡献的代码
阅读全文
摘要:一、设计模式的分类 总体来说设计模式分为三大类: (1)创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 (2)结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 (3)行为型模式,共十一种:策略模式、模板方法模式、观察者模
阅读全文
摘要:1、JVM 究竟需不需要调优? JVM 经过这么多年的发展和验证,整体是非常健壮的。个人认为99%的情况下,基本用不到 JVM 调优。 通常来说,我们的 JVM 参数配置大多还是会遵循 JVM 官方的建议,例如: -XX:NewRatio=2,年轻代:老年代=1:2 -XX:SurvivorRati
阅读全文
摘要:1. 缓存使用的场景1. DB缓存,减轻服务器压力 通常,我们的数据都存储在数据库中,应用程序直接操作数据库。当访问量增大,数据库压力过大时,可以采取的方案有:读写分离、分库分表。但是如果访问量达到10万甚至百万即,就需要引入缓存了(因为关系型数据库数据在硬盘,频繁IO,日志刷盘根本顶不住)。将已经
阅读全文
摘要:1、Elasticsearch基本概念 Elasticsearch是基于Apache Lucene的开源、分布式、可扩展、实时的数据搜索和分析引擎。ES不仅仅支持全文搜索,还是一个分布式文档数据库,每个字段都是被索引的数据并且可被搜索。总体来说有如下特性: 一个分布式的实时文档存储引擎,每个字段都可
阅读全文
摘要:随着应用系统规模的增长,成本会变的越来越高,而且又是偶无法实现使用单台机器来处理负载压力,这种问题的一个解决方案就是汇聚大量低价且低处理能力的机器来解决问题。MongoDB的分片就是为解决这种问题而设计的,把超大量数据使用更小的片进行分区存储,这样就不需要在单个机器上存储所有的数据或者承担全部压力。
阅读全文
摘要:一、登录系统:不使用root登录,通过sudo授权管理,使用普通用户登录 二、禁止SSH远程:通过PermitRootLogin来更改默认的远程连接SSH服务及禁止root远程连接 [root@c7 ~]# su root #进入超级用户模式[root@c7 ~]#chmod u+w /etc/su
阅读全文
摘要:在本章中,我们将讨论在容器生态系统中的调度编排器(包括Kubernetes),介绍市场上的一些主要的编制工具,并描述它们的各种优点。 Kubernetes的来历 容器化的想法并不新鲜。某种形式的虚拟隔离,无论是出于安全性还是多租户的目的,自上世纪70年代以来就一直被用于数据中心里。 从chroot系
阅读全文
摘要:前言 容器技术、虚拟化技术已经成为一种被大家广泛认可的服务器资源共享方式,容器技术可以在按需构建操作系统实例的过程当中为系统管理员提供极大的灵活性。由于hypervisor虚拟化技术仍然存在一些性能和资源使用效率方面的问题,因此容器技术(Container)结合虚拟化技术的解决方案正在我们的业务使用
阅读全文
摘要:JDK源码:线程并发协调神器CountDownLatch和CyclicBarrier 引言 我一直认为程序是对于现实世界的逻辑描述,而在现实世界中很多事情都需要各方协调合作才能完成,就好比完成一个平台的交付不可能只靠一个人,而需要研发、测试、产品以及项目经理等不同角色人员进行通力合作才能完成最终的交
阅读全文
摘要:SpringBoot是一个快速开发框架,快速的将一些常用的第三方依赖整合(原理:通过Maven子父工程的方式),简化XML配置,全部采用注解形式,内置Http服务器(Jetty和Tomcat),最终以java应用程序进行执行,它是为了简化Spring应用的创建、运行、调试、部署等而出现的,使用它可以
阅读全文
摘要:Tomcat系统架构设计 1.前言 很多人谈到架构感觉是一个非常高大尚的东西,觉得自己目前不太可能接触到或者没有实力接触和学习它。这其实是一个非常错误的认识,事实上我们作为开发人员每天都在和架构打交道。比如当你接到一个功能模块的需求时,你首先要做的就是分析和设计,例如技术选型、功能拆分、设计合理的开
阅读全文
摘要:别再盲目的说spring有三级缓存了,两个缓存只是启动时为了解决循环依赖,spring启动后只有一个缓存有用 一、什么是循环依赖 循环依赖指的就是循环引用,就是两个或多个 bean 相互之间的持有对方,比如 CircleA 引用 CircleB , CircleB 引用 CircleC, Circl
阅读全文
摘要:Mybatis底层源码分析1.概要介绍 MyBatis 是一款优秀的持久层框架,也是当前最流行的java持久层框架之一,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。采用ORM思想解决了实体和数据库映射的问题,对
阅读全文
摘要:RocketMQ是一个分布式开放消息中间件,底层基于队列模型来实现消息收发功能。RocketMQ集群中包含4个模块:Namesrv, Broker, Producer, Consumer。 主要功能 削峰填谷(主要解决瞬时写压力大于应用服务能力导致消息丢失、系统奔溃等问题) 系统解耦(解决不同重要程
阅读全文
摘要:基本概念 Kafka 体系架构 Kafka 体系架构包括若干 Producer、若干 Broker、若干 Consumer,以及一个 ZooKeeper 集群。 在 Kafka 中还有两个特别重要的概念—主题(Topic)与分区(Partition)。 Kafka 中的消息以主题为单位进行归类,生产
阅读全文
摘要:一、什么是消息队列 消息指的是两个应用间传递的数据。数据的类型有很多种形式,可能只包含文本字符串,也可能包含嵌入对象。 “消息队列(Message Queue)”是在消息的传输过程中保存消息的容器。在消息队列中,通常有生产者和消费者两个角色。生产者只负责发送数据到消息队列,谁从消息队列中取出数据处理
阅读全文
摘要:1.什么是OpenResty OpenResty是一个基于Nginx与Lua的高性能Web平台,其内部集成了大量精良的Lua库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。 OpenResty通过汇聚各种设计精良的Nginx模
阅读全文
摘要:一、Nginx是什么?Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月
阅读全文
摘要:概述: 毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不知晓。因此本文将通过大量的手绘图,给大家谈谈Spring Cloud微服务架构的底层原理。实际上,Sp
阅读全文