自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不止极客

始于极客,不止极客。

  • 博客(67)
  • 收藏
  • 关注

原创 百万架构师第四十七课:并发编程的原理(二)|JavaGuide

​ 任何对象在我们 JVM 层面有一个 oop 和 oopDesc 的对应。oop.hpp会存在一个 mark 的对象头,对象头用来存储锁标志的。这个锁标志,是用来存储对应的偏向锁、轻量锁等的标志。​ 锁是存在对象头里边的。

2025-03-12 23:38:48 326

原创 最好的百度提交每日自动提交工具【免费】

链接提交工具是网站主动向百度搜索推送数据的工具,本工具可缩短爬虫发现网站链接时间,网站时效性内容建议使用链接提交工具,实时向搜索推送数据。本工具可加快爬虫抓取速度,无法解决网站内容是否收录问题URL链接自动批量提交工具为站长提供链接批量提交通道,您可以提交想被百度收录的链接,百度搜索引擎会按照标准处理,但不保证一定能够收录您提交的链接。

2025-03-12 23:36:41 1268

原创 百万架构师第四十六课:并发编程的原理(一)|JavaGuide

​ CPU的乱序执行,本质还是,由于在多CPU的机器上,每个CPU都存在cache,当一个特定数据第一次被特定一个CPU获取时,由于在该CPU缓存中不存在,就会从内存中去获取,被加载到CPU高速缓存中后就能从缓存中快速访问。当某个CPU进行写操作时,它必须确保其他的CPU已经将这个数据从他们的缓存中移除,这样才能让其他CPU 安全地修改数据。显然,存在多个cache时,我们必须通过一个cache一致性协议来避免数据不一致的问题,而这个通讯的过程就可能导致乱序访问的问题,也就是运行时的内存乱序访问。

2025-03-11 12:24:00 658

原创 百万架构师第四十五课:并发编程的基础|JavaGuide

1. 多线程的发展历史2. 线程的应用3. 并发编程的基础4. 线程安全的问题进程 —> 线程所以,多线程最终解决的就是“等待”的问题,所以简单总结的使用场景多线程的应用场景多个客户端都是阻塞的,我只有处理完一个请求才能接收下一个请求。然后客户端就会阻塞。所以 Tomcat 采用了多线程的技术。利用了多线程的技术实现了非阻塞。在 JAVA 中有多个方式来实现多线程。继承 Thread 类、实现 Runable 接口、使用 ExecutorService 、Callable、Future 实现带返回结果的多线

2025-03-11 12:21:29 833

原创 百万架构师第四十四课:Nginx:Nginx 的扩展-OpenRestry|JavaGuide

TomcatBIONIOAIONginx多进程+多路复用master 进程 、 worker 进程​ 当它启动以后,会产生一个主进程和多个工作进程。多个工作进程是通过 Master 进程去管理的。它是基于 Master 进程 Fork 出来的。当我们的 Nginx 收到一个请求的时候,它会向我们的 work 发送一个信号。然后通过 worker 进程去管理。类似于中心进程的意思。​ 当有一个请求过来的时候,只会有一个worker进程去处理。

2025-03-10 22:47:23 942

原创 百万架构师第四十三课:Nginx:Nginx 应用实战|JavaGuide

​ 后端的应用一定会存在动态资源和静态资源。必须依赖服务器生存的我们称为动态资源。不需要依赖容器的比如css/js或者图片等,这类就叫静态资源。​ 我们可以把静态资源放在 Nginx 上。静态资源不会频繁变动。​。

2025-03-10 22:46:51 1082

原创 百万架构师第四十二课:Nginx:Nginx 的初步认识|JavaGuide

Nginx 是一个高性能的反向代理服务器正向代理代理的是客户端反向代理代理的是服务端。

2025-03-04 22:18:32 750

原创 百万架构师第四十一课:RabbitMq:可靠性投递和实践经验|JavaGuide

集中放在properties文件中体现元数据类型(_VHOST _EXCHANGE _QUEUE);体现数据来源和去向(XXX_TO_XXX);

2025-03-04 22:17:10 583

原创 百万架构师第四十课:RabbitMq:RabbitMq-工作模型与JAVA编程|JavaGuide

​ AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品、不同的开发语言等条件的限制。​ AMQP的实现有:RabbitMQ、OpenAMQ、Apache Qpid、Redhat Enterprise MRG、AMQP Infrastructure、MQ、Zyre等。

2025-02-25 00:40:33 1044

原创 百万架构师第三十九课:RabbitMq:Linux安装RabbitMq|JavaGuide

从架构的发展过程说起什么是zookeeperZookeeper安装部署Zoo.cfg配置文件分析。

2025-02-25 00:38:32 251

原创 百万架构师第三十八课:RabbitMq:Windows安装RabbitMq|JavaGuide

该服务将使用其默认设置正常运行。你可以自定义RabbitMQ环境或编辑配置。

2025-02-22 00:07:20 1302

原创 百万架构师第三十七课:RabbitMq:高可用集群搭建步骤|JavaGuide

socat 被 rabbitmq-server-3.6.12-1.el6.noarch 需要。将5672端口映射为5673端口,15672端口映射为15673端口。5、HAProxy + Keepalived 高可用方案。保持三台机器的.erlang.cookie同步。二、在两个内存节点上安装Keepalived。1)在两个内存节点上安装HAProxy。2、同步.erlang.cookie。1)安装Keepalived。三台机器的hosts都配置。创建用户:三台服务器都执行。RabbitMQ镜像队列。

2025-02-22 00:06:22 462

原创 百万架构师第三十六课:kafka:KafkaManage|JavaGuide

bin/kafka-manager 默认的端口是9000,可通过 -Dhttp.port,指定端口;启动zk集群,kafka集群,再启动kafka-manager服务。yum安装sbt(因为kafka-manager需要sbt编译)waiting 的话,直接 kill 相应的 sbt 命令。2)编译kafka-manager。

2025-02-20 23:54:50 248

原创 百万架构师第三十五课:kafka:分布式消息通信Kafka(三)|JavaGuide

消息的存储原理Partition 的副本机制原理副本数据的同步原理​ 消息的发送策略,根据 key 的算法路由到 Kafka 的一个分区上,分区是一个物理上的一个结构。Linux 会定时清理/tmp目录下的文件。生产环境的时候,文件都是另外放到另一个磁盘上。server 里边可以配置日志文件的路径。具体的分区会落到我们磁盘的某一个路径下,分区可以指定我们这个 Topic 分成多少个分区。分区可以指定对于当前这个Topic分成多少个分区。​ 分区落到我们的broker上的位置。

2025-02-20 23:52:21 765

原创 百万架构师第三十四课:kafka:分布式消息通信Kafka(二)|JavaGuide

​ 默认的 Kafka 会根据 Key 去计算,我们也可以去扩展自己的分区策略。/**** 自定义分区策略*//**** 重写发送的策略*/@Override// 根据消息得到具体的分区列表// 随机的分区} else {// Hash 取模运算@Override@Override> map) {​ 通过前面的案例演示,我们应该能猜到,同一个 group 中的消费者对于一个 topic 中的多个 partition,存在一定的分区分配策略。

2025-02-19 23:50:44 1122

原创 百万架构师第三十三课:kafka:分布式消息通信Kafka(一)|JavaGuide

高性能高吞吐量​ Kafka 是一款分布式消息发布和订阅系统,具有高性能、高吞吐量的特点而被广泛应用于大数据传输场景。它是由 LinkedIn公 司开发,使用 Scala 语言编写,之后成为 Apache 基金会的一个顶级项目。kafka 提供了类似 JMS 的特性,但是在设计和实现上是完全不同的,而且他也不是 JMS 规范的实现。/bin操作 kafka 的可执行脚本/config配置文件/libs依赖库目录/logs日志数据目录。

2025-02-19 23:49:42 592

原创 百万架构师第三十二课:协调服务-zookeeper:zookeeper的实践与原理|JavaGuide

数据存储基于 Java API初探zookeeper的使用深入分析Watcher机制的实现原理Curator客户端的使用,简单高效。

2025-02-17 22:17:51 920

原创 百万架构师第三十一课:协调服务-zookeeper:zookeeper实践之配合注册中心完成RPC手写|JavaGuide

我们在选择一个方案去实现分布式锁的时候,我们得知道我们要解决的是一个什么问题,或者说我们使用zookeeper实现对应的分布式锁是要解决什么问题。在以前的以及现在的单进程的多线程模型中,我们会利用多线程的基础数据去提高我们程序的运行效率,在现在CPU多核心的背景之下,每个CPU的每个核心能够同时去运行同一个线程,那么这个时候就会存在一个线程的并行执行,如果说多线程并行去访问某一个共享资源的话,那么就会造成共享资源、共享变量的线程安全问题,这是多线程领域中线程安全的一个问题。我们会通过或者Lock。

2025-02-17 22:15:18 233

原创 百万架构师第三十课:协调服务-zookeeper:了解zookeeper的核心原理|JavaGuide

了解zookeeper及zookeeper的设计猜想Zookeeper集群角色深入分析ZAB协议从源码层面分析leader选举的实现过程关于zookeeper的数据存储。

2025-02-12 22:19:55 1698

原创 百万架构师第二十九课:协调服务-zookeeper:初步认识zookeeper|JavaGuide

从架构的发展过程说起什么是zookeeperZookeeper安装部署Zoo.cfg配置文件分析。

2025-02-12 22:19:07 830

原创 百万架构师第二十八课:RMI :分布式通讯框架RMI的原理|JavaGuide

远程过程调用集中式到分布式RMI(JRMP)thriftgrpcdubboRPC框架的不断演进,基于TCP/IP协议之上封装了特定的协议通讯就是RMI。

2025-02-10 22:43:47 486

原创 百万架构师第二十七课:分布式架构的基础:序列化和反序列化|JavaGuide

使用tomcat时,把session放在内存中,如果用户比较多的话,比如说10万,100万,假设,那我们会把session数据放在磁盘上,然后用的时候再反序列化。Java中允许在内存中创建一些可复用的java对象,只有在JVM在运行时对象才会存在,然后JVM的生命周期限制了对象的生命周期。引用的对象不会被复制。它只是克隆当前这个对象本身和这个对象对应的值,但是这个对象里边成员变量里边的对象所指向的引用,它不会再去克隆。序列化的类是四个字段,反序列化的类是三个字段,两个serialVersionUID一样。

2025-01-23 12:13:18 258

原创 百万架构师第二十六课:分布式架构的基础:分布式系统的基石HTTP协议与HTTPS协议|JavaGuide

访问支付宝,微信的开放接口 都是基于HTTP对外提供的开放服务 API都是基于HTTP协议的,微服务中的服务之间的调用大部分都是基于HTTP协议的。Web层提供http协议的对外接口http协议是基于TCP可靠通讯协议之上的fiddler:这是一个抓包工具,抓取网络上一个请求。所有的请求都经过了fiddle。posthtt/1.1方法 URL/URI 协议的版本。

2025-01-22 12:58:07 503

原创 百万架构师第二十五课:分布式架构的基础:分布式系统的基石TCP-IP通讯协议|JavaGuide

socket可以认为是一个抽象层,应用程序通过它来发送和接收消息。这个时候通过应用程序打开文件句柄,读取数据磁盘,或者把数据写入到磁盘上。使用socket可以把我们的应用程序添加到网络上,而且能跟和它处于一个网络的应用去通信,这就是socket。不同的类型的socket和底层的协议是有关系的。字节流数据报文Socket 套接字。基于socket 选择协议(TCP [1-65535端口] UDP),然后带上IP(基于IP协议)Netty是一个基于NIO的框架TCP协议是一个全双工的协议。

2025-01-21 22:08:30 892

原创 百万架构师第二十四课:漫谈分布式架构:分布式架构设计|JavaGuide

主流架构模型-SOA架构和微服务架构领域驱动设计及业务驱动划分。分布式架构的基本理论CAP、BASE以及应用什么是分布式架构下的高可用设计分布式架构下的可伸缩设计构建高性能的分布式架构SOA架构和微服务架构Service Oriented Architecture面向服务的架构,是架构模型,不是解决方案,是一种设计方法在这种方法下,有多个服务,而服务之间是相互依赖的或者通过一定的通讯机制去完成通讯的。在这个服务中,每个服务独立存在,而且可以单独运行和发布ESB企业服务治理总线ES

2025-01-20 18:20:12 592

原创 百万架构师第二十三课:漫谈分布式架构:分布式架构的演进过程|JavaGuide

终端>>>>web(应用服务)>>>>(服务治理的中间件)>>>>领域服务>>>>(数据库治理中间件)>>>>数据库。帮你屏蔽一些服务的信息,包括不同的数据协议,不同的数据格式,都可以进行统一的约束。按照业务的维度拆分数据库,不同的业务所使用的数据库放在不同的数据库中。输入设备:(各个节点之间的通讯,服务之间的通讯,人机交互)一个服务的提炼,对外有web,有service的调用。(隔离,故障的隔离,单个节点的故障不影响集群的运行)

2025-01-19 19:13:11 1295

原创 百万架构师第二十二课:源码分析:Spring 源码分析:Spring经典面试答疑|JavaGuide

编码,零配置”:会导致后面学习的人,对底层的原理不了解,给深入学习带来一些困难。中,事务是不支持跨数据源的。底层的原理(面试时向面试官征求意见,也是对面试官的一种尊重)解决:使用中间件,做一些消息同步,利用分布式锁去实现分布式事务。3、Java业界万能胶(松耦合(开发时),高聚合(运行时))的新特性就开始考虑这个问题了,如果对并发有要求,推荐用。这个技术目前没有深入地研究过,但是,我拥有比较强的。来实现的(Object),也是基于。,当创建语句集的时候开启事务。任意字符重复任意次数。

2025-01-18 13:23:03 748

原创 百万架构师第二十一课:源码分析:Spring 源码分析:Spring5新特性及应用举例|JavaGuide

是一个框架的框架,只要是在Spring生态之内,它真的能够实现零配置启动集成的工具,框架(自己内部就实现了Web容器)答:asm是一个Java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。答:只是为了告诉大家有这个特性存在,多线程提升性能(高吞吐量的情况才能体现)答:当然,必须要抛异常,没有异常就认为没有出问题,也就不涉及数据回滚。答:无所谓优势与劣势之说,无非就是应用环境不一样,在发展中进步。答:不是这个意思,没有性能上的区别,只有方便与不方便的区别。答:spring.io官网上,啥都有。

2025-01-17 13:04:15 686

原创 百万架构师第二十课:源码分析:Spring 源码分析:手写定制自己的ORM框架|JavaGuide

2、再写一个工具类QueryRuleSqlBuilder,循环ruleList对每一个条件分别处理processAnything,主要是构建where后面语句。-----------在我的团队中,极少数使用多表关联查询-------------b)查多次,在内存中处理数据关系,一般会在Service中进行处理。为了操作方便,每次置换完,执行完成以后,会将数据源恢复到默认的设置。比如说查某个表的字段是另外一个表的条件,以此类推多个表的话?答:只要用我的框架,每个表必须有主键,哪怕是自增。

2025-01-16 12:45:25 510

原创 百万架构师第十九课:源码分析:Spring 源码分析:手写ORM框架顶层设计|JavaGuide

如果是删、改,以ID作为唯一的检索条件,如果没有ID,那么要先查出来得到ID。只要是Spring相关的配置都以 application- 开头。建议不要把所有的东西放在一个文件中,这样不便于开发团队的维护。用 Java 对象来描述对象与对象之间的关系和数据内容。所有的删除、修改、增加操作返回。对外输出都用 ResultMsg。所有的集合查询返回 List。所有的单条查询返回 T。所有的ID采用 Long。微信公众号:不止极客。

2025-01-15 12:27:43 749

原创 百万架构师第十八课:源码分析:Spring 源码分析:数据库事务操作原理及SpringAOP配置|JavaGuide

​ 这条更新的目标记录,如果需要对这个表进行扫描的话,这里会把整个表都锁住,然后把整张表都同步到内存中,那么这个表就不允许任何的增删改操作。只有当我把缓冲区的数据消掉以后,更新到数据库里边,这条记录才会被解锁,其他更新才能进行。记录事务的开始到结束,还有中间的报错,以及整个链接成功与否还有返回结果,状态码,查出来是什么,更新的是什么。​ 首先检查原始表中有没有相关联的记录,先把相关联的记录写到内存中来,只有我们的缓冲区没有任何的异常,它才会把这条记录写进去。面向接口编程是一种接口,

2025-01-14 18:17:19 923

原创 百万架构师第十七课:源码分析:Spring 源码分析:Spring声明式事务操作实现原理|JavaGuide

​ 作为一个编程语言,定义一个接口,如果你想用我的语言去连接你的数据库,你必须实现我的接口。分布式:分布式事务处理瞬时一致性,最终的一致性(异步核对,主流的方式就通过日志来分析)包给你,然后不同的数据库引入不同的数据库驱动包,数据库启动包是由数据库厂商提供的。事务是存在内存中的,断电了,这个事务就不存在了,事务就是回去了。ACID,最大的问题,解决的是数据的一致性的问题。方法,传了一个 IP,一个端口,进行一个封装。都是调用的 Connection 的方法。只要出现了异常,就不会提交。

2025-01-13 08:02:26 875

原创 百万架构师第十六课:源码分析:Spring 源码分析:手写SpringAOP核心原理|JavaGuide

​ Spring IOC 入口,DispatcherServlet,通过 DispatcherServlet 启动一个 ApplicationContext 容器,由 ApplicationContext 启动一个 IOC 的操作,通过 DarianBeanDefinitionReader 读进来,变成一个 DarianBeanDefinition,有一个 DI 过程,有一个依赖注入,完成之后,会把所有的对象封装成 BeanWrapper,再把 BeanWrapper 保存在容器中。

2025-01-12 08:48:46 570

原创 百万架构师第十五课:源码分析:Spring 源码分析:SpringMVC核心原理及源码分析|JavaGuide

Struts 对用户的要求太高了,Spring MVC 对应用户的要求几乎没有。​ 视图,用来展示或者输出的模块(HTML、JSP、JSON、String、Swing、XML…JSP 页面是一个万能的组件,可以写 HTML、写 JS、写 JAVA 逻辑、写 SQL 语句。V:自己只有一个默认的 template、支持扩展、自定义 View,能够自定义解析。​ 控制交互的一个中间组件,由它来根据用户请求分发不同任务从而得到不同的结果。C:做到把限制放宽了,任何一个类,都有可能是一个 Controller。

2025-01-11 12:14:09 488

原创 百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide

原文网站:httsp://javaguide.net。

2025-01-10 08:19:31 608

原创 百万架构师第十三课:源码分析:Spring 源码分析:Spring核心IOC容器及依赖注入原理|JavaGuide

20180415-Spring核心IOC容器及依赖注入原理是为了确保我们的类只会加载一次。只会被调用一次,只会是一个单例。

2025-01-09 07:05:36 576

原创 百万架构师第十二课:源码分析:Spring 源码分析:Spring系统概述及IOC实现原理|JavaGuide

​ 对于 Spring 来说,他并不干预你对象本身的属性,他也不关心你这个对象是什么东西。注册: Factroy、Context 就是把用户所定义的 Bean放到 IOC容器中(Map)的方法实际是解析 XML,把 XML 中的内容变成 BeanDefinition。顶层一个接口,下面有子类,分别实现各个场景的一个实现。还有我们的自动注入的关系。只是一个存放对象实例的容器,以及管理和维护对象与对象之间的关系。就是对原有对象的包装,就是一个。定位: 用的Reader结尾的。do 开头的都是具体干活的。

2025-01-08 12:59:42 1102

原创 百万架构师第十一课:源码分析:Spring 源码分析:Spring源码分析前篇|JavaGuide

通过预设规则,按照一定的规则去顺序加载或识别需要对接的 Bean。(反射,通过类全名字符串可以找到,并创建一个 Bean 的实例)。第二轮:预习文档老师不会带大家去课件了,自己在课前看,作为上课的补充资料(用于帮助大家去猜测资料)所谓一个框架而言,在编写框架代码的时候,所要对接的 Bean 是不存在的。然后去网上找资料参考(有了基本的概念,产生了很多问题,很多猜想)调试的时候,完全可以在运行环境中,导入 jar。能做什么,做了什么,要我来做,我该怎么做?规定配置文件的默认名字。:画图,梳理思路,答疑。

2025-01-07 11:58:51 1206

原创 百万架构师第九课:源码分析:Spring 源码分析:Spring5源码分析-预习资料|JavaGuide

Spring 是一个开源的轻量级 Java SE (Java 标准版本)/ Java EE (Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。应用程序是由一组相互协作的对象组成。而在传统应用程序开发中,一个完成的应用是由一组相互协作的对象组成。所以开发一个应用除了要开发业务逻辑之外,最多的是关注如何使这些对象协作来完成所需功能,而且低耦合,高内聚。业务逻辑开发是不可避免的,那如果有个框架出来帮我们创建对象及管理这些对象之间的依赖关系。

2025-01-05 22:46:17 1228

原创 百万架构师第九课:设计模式:设计模式容易混淆的几个对比|JavaGuide

MyBatis 可以使用简单的XML或注释来进行配置和映射原语,映射接口和Java pojo(普通旧式Java对象)到数据库记录。​ 可以采用 XML 的形式来配置,还可以采用 Annotation 的形式来配置。MyBatis 是一个一流的持久性框架,它支持定制SQL、存储过程和高级映射。在一开始,每一个 XML 的 name 都对应 JAVA 实体类的一个属性!MyBatis 消除了几乎所有的JDBC代码和参数的手动设置和结果的检索。基于某一个 SQL 来做的,不会影响你全局的东西。

2025-01-04 02:18:06 721

空空如也

空空如也

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

TA关注的人

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