- 博客(43)
- 收藏
- 关注
原创 Zookeeper(四)应用场景
Zookeeper(四)应用场景Zookeeper应用场景数据发布/订阅命名服务集群管理Master选举分布式锁排他锁共享锁分布式队列FIFO先⼊先出Barrier:分布式屏障Zookeeper应用场景ZooKeeper是⼀个典型的发布/订阅模式的分布式数据管理与协调框架,我们可以使⽤它来进⾏分布式 数据的发布与订阅。另⼀⽅⾯,通过对ZooKeeper中丰富的数据节点类型进⾏交叉使⽤,配合Watcher 事件通知机制,可以⾮常⽅便地构建⼀系列分布式应⽤中都会涉及的核⼼功能,如数据发布/订阅、命名
2021-08-17 21:18:58
228
原创 Zookeeper(三)基本使用
Zookeeper(三)基本使用zk基本使用数据模型ZooKeeper数据模型Znode节点类型事务id节点状态信息Watcher(数据变更通知)ACL(权限管控)ZooKeeper命令⾏操作创建节点读取节点更新节点删除节点zk API使用建立会话创建节点删除节点修改节点数据获取节点数据Zookeeper-开源客户端(zkClient)创建会话创建节点删除节点修改节点数据获取节点数据为客户端添加监听Curator客户端创建会话创建节点删除节点修改节点获取节点信息和数据zk基本使用数据模型ZooKeep
2021-08-17 21:07:59
640
原创 Zookeeper(二)搭建环境
Zookeeper(二)搭建环境Zookeeper的搭建⽅式单机模式搭建伪集群模式集群模式Zookeeper的搭建⽅式Zookeeper安装⽅式有三种,单机模式和集群模式以及伪集群模式。单机模式:Zookeeper只运⾏在⼀台服务器上,适合测试环境;集群模式:Zookeeper运⾏于⼀个集群上,适合⽣产环境,这个计算机集群被称为⼀个“集合体”伪集群模式:就是在⼀台服务器上运⾏多个Zookeeper 实例;单机模式搭建1、下载下载稳定版本的zookeeper http://zookeepe
2021-08-17 20:40:18
141
原创 Zookeeper(一)简介
Zookeeper(一)简介Zookeeper简介zookeeper的基本概念集群角色会话数据节点(Znode)版本Watcher(事件监听器)ACL(权限控制)Zookeeper简介ZooKeeper最为主要的使⽤场景,是作为分布式系统的分布式协同服务。Zookeeper是⼀个开源的分布式协调服务,其设计⽬标是将那些复杂的且容易出错的分布式⼀致性服务封装起来,构成⼀个⾼效可靠的原语集,并以⼀些简单的接⼝提供给⽤户使⽤。zookeeper是⼀个典型的分布式数据⼀致性的解决⽅案,分布式应⽤程序可以基于它
2021-08-17 20:33:37
125
原创 分布式理论,架构设计(四)自定义RPC
分布式理论,架构设计(四)自定义RPC自定义RPCRMI基于netty实现RPC框架自定义RPC在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现 远程通讯的技术,例如:RMI、Hessian、SOAP、ESB和JMS等。要实现网络机器间的通讯,首先得来看看计算机系统网络通信的基本原理,在底层层面去看,网络 通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络IO来实现,其中传输协议比较出名的有tcp、udp等等,tcp、udp都是在基于S
2021-07-20 20:22:35
238
2
原创 分布式理论,架构设计(三) Netty高级应用
分布式理论,架构设计(三) Netty高级应用Netty高级应用HTTP服务器开发服务器开发代码实现网页版聊天室websocketWebSocket和HTTP的区别代码实现springboot+nettynetty中的粘包和拆包Netty高级应用HTTP服务器开发Netty的HTTP协议栈无论在性能还是可靠性上,都表现优异,非常适合在非Web容器的场景下应用,相比于传统的Tomcat、Jetty等Web容器,它更加轻量和小巧,灵活性和定制性也更好。服务器开发目标:1.Netty 服务器在 808
2021-07-19 20:01:58
341
2
原创 分布式理论,架构设计(二) Netty
分布式理论,架构设计(二) NettyNetty学习原生NIO存在的问题netty线程模型传统阻塞I/O服务模型Reactor 模型单Reactor 单线程单Reactor 多线程主从Reactor 多线程Netty学习原生NIO存在的问题NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。需要具备其他的额外技能:要熟悉 Java 多线程编程,因为 NIO 编程涉及到 React
2021-07-06 20:47:54
118
原创 “分割说明”贴
前面的贴,记录的学习感觉并不是很详尽,后续会重新编排,重新复习,重新修改帖子。后面的帖子尽可能的写的详细,对小白友好一些,也方便自己复习
2021-06-29 16:56:01
76
原创 分布式理论,架构设计(一)Socket和IO模型
分布式理论,架构设计(一)Socket和IO模型Socketsocket整体流程代码实现I/O模型NIO详解Socket和IO模型Socketsocket,套接字,就是两台主机之间的连接端点,TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。socket是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。他是网络通信过程中端点的抽象标识,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远程主机的I
2021-06-28 22:04:48
685
原创 Cluster(集群)模式
Cluster(集群)模式(一)Cluster(集群)模式存在问题分布式和集群一致性hash算法hash算法应用场景集群时钟同步问题Cluster(集群)模式存在问题1、hash算法2、集群时钟同步问题3、分布式id问题4、分布式调度问题(定时任务的分布式执行)5、session共享问题接下来会分多篇文章进行问题的描述以及问题的解决。分布式和集群分布式一定是集群,集群不一定是分布式。分布式是把一个系统拆分为多个子系统,每个子系统负责各自的功能,独立部署。集群是多个实例共同工作,例如:
2021-06-26 22:00:26
3280
原创 tomcat学习笔记(六)Tomcat性能优化
tomcat学习笔记(六)Tomcat性能优化tomcat性能优化jvm调优jvm参数调优垃圾回收(GC)策略垃圾收集器Tomcat配置调优tomcat调优tomcat性能优化系统性能的衡量指标,主要是相应时间和吞吐量1、相应时间:执行某个操作的耗时;2、吞吐量:系统在给定时间内能够支持的事务数量,单位是TPS(transactions PerSecond),也就是事务数/秒,一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。tomcat优化从两个方面进行1、jvm虚拟机优化(优化
2021-06-20 20:50:07
275
原创 tomcat学习笔记(五)Tomcat对HTTPS支持
tomcat学习笔记(五)Tomcat对HTTPS支持Tomcat对HTTPS支持https简介Https和Http的主要区别tomcat对http说的支持Tomcat对HTTPS支持https简介https是用来加强数据传输安全的。http超文本传输协议,明文传输,传输不安全,https在传输数据的时候会对数据进行加密。Https和Http的主要区别Https协议使用时需要到电子商务认证授权机构(CA)申请SSL(安全协议的一种)证书Http默认使用8080端口,Https默认使用8443
2021-06-20 19:16:42
242
原创 tomcat学习笔记(四)Tomcat类加载机制
tomcat学习笔记(四)Tomcat类加载机制类加载机制jvm的类加载机制双亲委派机制双亲委派机制的作用类加载机制java类(.java)->字节码文件(.class)->字节码文件需要被加载到jvm内存中(这个过程就是类加载的过程)类加载器(Classloader,jvm启动的时候先把类加载器读取到内存当中去,其他的类(比如各种jar中的字节码文件,自己开发的代码编译之后的.classwen文件等))tomcat的类加载机制是在jvm类加载机制基础智商进行了一些变动。jvm的类加载
2021-06-20 18:17:58
149
原创 tomcat学习笔记(三)Tomcat源码剖析
tomcat学习笔记(三)Tomcat源码剖析Tomcat源码剖析tomcat启动流程tomcat请求处理流程mapper组件体系结构Tomcat源码剖析tomcat启动流程tomcat请求处理流程tomcat请求处理流程:当一个servlet请求到来的时候,tomcat是通过怎么样的机制定位到servlet并且执行的。例:url:localhost:8080/demo/testconnector-》engine-》host(localhost)-》context(demo)-》wrapper
2021-06-17 22:42:57
131
原创 tomcat学习笔记(二)手写tomcat
tomcat学习笔记(二)手写tomcat手写实现迷你版tomcatBootstrapHttpProtocolUtilServletHttpServletLagouServletRequestRequestProcessorResponseStaticResourceUtil手写实现迷你版tomcat名称:MinicatMinicat:作为服务器软件提供服务,我们通过浏览器客户端发送HTTP请求,Minicat可以接受请求进行处理,处理之后的结果可以返回浏览器客户端。1、提供服务,接受请求(sock
2021-06-16 22:44:41
150
原创 tomcat学习笔记(一)系统架构和原理
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2021-06-15 23:32:16
22104
12
原创 springBoot学习笔记(六)切换数据源
springBoot学习笔记(六)切换数据源切换数据源代码实现实体beanProductMapperProductServiceProductController配置文件MyDataSourceConfiguratioinRoutingDataSourceRoutingDataSourceContextDruidConfigRoutingAspectRoutingWithSpringboot03DataaccessApplication切换数据源代码实现实体beanpackage com.lagou
2021-06-14 22:21:09
248
原创 springBoot学习笔记(五)内嵌tomcat和springmvc
springBoot学习笔记(五)内嵌tomcat和springmvc源码剖析内嵌tomcattomcat自动配置类ServletWebServerFactoryAutoConfigurationSpringBoot启动内置tomcat流程getWebServer方法的调用springmvc自动配置(一)自动配置DispatcherServlet和DispatcherServletRegistryDispatcherServletAutoConfiguration自动配置类DispatcherServlet
2021-06-14 22:12:16
719
原创 springBoot学习笔记(四)自定义starter
springBoot学习笔记(四)自定义starter自定义starter自定义zdy-spring-boot-starter编写simpleBeanMyAutoConfiguration注解EnableRegisterServer配置标记类ConfigMarker创建/META-INF/spring.factories结果展示自定义starterstarter机制SpringBoot中的starter是一种非常重要的机制,能够抛弃以前繁杂的配置,将其统一集成进starter,应用者只需要在mave
2021-06-14 21:38:39
152
原创 springBoot学习笔记(三)源码分析之springApplication初始化过程
springBoot学习笔记(三)源码分析之springApplication初始化过程SpringApplication初始化SpringApplicationrun方法获取并启动监听器构造应用上下文环境prepareEnvironmentSpringApplicationspringboot 启动的main放中的SpringApplication.run(DemoApplication.class, args)中的run方法其实是调用了SpringApplication中的run方法。 publ
2021-06-14 21:30:00
140
原创 springBoot学习笔记(二)源码分析之@springbootApplication
springBoot学习笔记(二)源码分析一级目录二级目录三级目录一级目录二级目录三级目录
2021-06-04 14:43:31
71
原创 springBoot学习笔记(一)初识springBoot
springBoot学习笔记(一)初识springBoot初识springboot约定优于配置springbootspringboot 初级使用springboot热部署插件全局配置文件application.propertiesapplication.yaml/.yml属性注入初识springboot约定优于配置本质上是对系统、类库或框架中的一些东西嘉定一个大众化合理的默认值。对应的是偏离约定:需要手动配置实体类和表的映射关系。约定优于配置的好处:大大减少配置项。springboot1、sp
2021-06-02 21:54:21
114
原创 springData学习笔记(一)搭建基础springData
springMVC学习笔记(六)springData学习二级目录三级目录springData学习springData Jpa 是应用于dao层的一个框架,简化数据库开发的,作用和mybatis框架一样,但是在使用方式和底层机制是有所不同的。最明显的特点,开发dao的时候,很多场景我们连sql语句都不需要开发。sql语句有spring生成。二级目录三级目录...
2021-05-31 20:25:54
86
原创 springMVC学习笔记(六)SSM整合
springMVC学习笔记(五)SSM整合spring+mybatis三级目录SSM整合SSM=spring+springmvc+mybatis=(spring+mybatis)+springmvc先整合spring+mabatis再整合springmvcspring+mybatis1、数据库连接池以及事务管理都叫给spring容器完成2、sqlsessionfactory对象放入spring容器作为单例对象3、mapper动态代理对象叫给spring管理,从spring容器中直接获得map
2021-05-26 22:25:10
47
原创 springMVC学习笔记(五)DispatchServlet与九大组件
springMVC学习笔记(四)springmvc源码分析DispatchServletdoDispatch()getHandler方法getHandlerAdapter方法ha.handlespringmvc九大组件九大组件初始化细节springmvc源码分析DispatchServletDispatchServlet的父级为FrameworkServlet,FrameworkServlet的父级为HttpServletBean,HttpServletBean的父级为HttpServlet,Disp
2021-05-26 20:31:45
135
原创 springMVC学习笔记(四)手写springmvc
springMVC学习笔记(三)手写springmvc手写LgDispatcherServlet加载配置文件扫描注解初始化bean对象实现依赖注入构造一个handlerMappingHandler类手写springmvc1、tomcat加载web.xml,配置了dispatchServlet,会加载指定的配置文件2、包扫描,扫描注解,@Controller、@Service、@RequestMapping、@AutoWired3、IOC容器就要进行相应的Bean初始化以及依赖注入,维护4、spri
2021-05-25 01:17:03
99
原创 springMVC学习笔记(三)
springMVC学习笔记(三)springmvcmultipart形式数据spring mvc 异常处理机制springmvc 异常处理器重定向参数传递flash属性springmvcmultipart形式数据首先引入jar包<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <versio
2021-05-23 23:04:51
96
原创 springMVC学习笔记(二)
springMVC学习笔记(二)springmvc对于rest风格支持二级目录三级目录springmvc对于rest风格支持rest是一个url请求的风格,基于这种风格设计请求的url。原有设计url风格是比如,获取id为1的用户/user/getUserById.do?id=1,url中定义了操作(get,delete,update等),参数具体锁定到操作的元素。rest风格,rest中人为互联网中的所有东西都是资源,就会有一个唯一的uri标识它,/user/1 代表id为1的记录。根据请求方式
2021-05-23 21:41:56
45
2
原创 springMVC学习笔记(一)初识springmvc
springMVC学习笔记(一)springMVCMVC体系结构spring MVC开发流程springmvc请求流程springmvc 九大组件HandlerMappingHandlerAdapterspringMVCspring MVC 是spring给我提供的一个用于简化web开发的框架。MVC体系结构经典三层(代码架构):dao层、业务层、表现层(view+controller)。MVC模式是说代码的组织方式:M:model 模型(数据模型(pojo、vo、po、bean等)和业务模型
2021-05-19 22:49:39
144
原创 spring学习笔记(八)声明式事务
spring学习笔记(八)声明式事务事务事务四大特性原子性一致性隔离性持久性事务的隔离级别事务传播行为基于springAOP的声明式事务声明式事务编程式事务:和声明式事务对应的是编程式事务,编程式事务在业务代码中添加事务控制代码,这样的事务控制机制就叫编程式事务。声明式事务:通过xml或者注解配置的方式打到事务控制的目的,叫声明式事务。事务事务是指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功,确保数据的准确和安全。事务四大特性原子性事务是一个不可分割的工作单位,从操
2021-05-11 22:46:06
57
原创 spring学习笔记(七)AOP
spring学习笔记(七)AOP连接点(Joinpoint)切入点(pointcut)通知/增强(advice)切面AOP xml开发AOP xml+注解开发AOP 纯注解开发AOPAOP就是在不改变云游业务逻辑的情况下,增强横切逻辑。横切逻辑代码旺旺是权限校验代码、日志代码、事务控制代码、性能监控代码。连接点(Joinpoint)方法开始时、结束时、正常运行完毕时等这些特殊的时机点,成为连接点。项目中的每个方法都有连接点,连接点是一种候选点。切入点(pointcut)指定AOP思想想要影响的
2021-05-11 21:40:42
196
原创 spring学习笔记(六)循环依赖(待完善)
spring学习笔记(六)spring中的循环依赖问题循环依赖spring中的循环依赖问题循环依赖就是大于两个bean之间互相存在依赖关系,最终行程了一个闭环。比如A依赖于B,B也依赖于A。那么在A的创建过程中,发现需要依赖于B,则去创建B,又发现B依赖于A,此时A尚未创建完成,spring使用三级缓存解决了循环依赖问题。循环依赖spring中,prototype类型的bean和通过构造器注入的bean无法解决循环依赖问题。...
2021-05-11 20:17:50
46
原创 spring学习笔记(四)IOC高级特性
spring学习笔记(四)springIoC高级特性lazy-init懒加载懒加载开启方式之xml二级目录三级目录springIoC高级特性lazy-init懒加载懒加载就是在容器初始化bean 的时候不直接实例化该bean,在使用该bean的时候再进行实例化,懒加载使用情况分析1、开启延迟加载⼀定程度提⾼容器启动和运转性能2、对于不常使⽤的 Bean 设置延迟加载,这样偶尔使⽤的时候再加载,不必要从⼀开始该 Bean 就占⽤资源懒加载开启方式之xml在bean定义之后添加属性 lazy-i
2021-05-09 19:59:56
107
4
原创 spring学习笔记(三)xml与注解结合模式启动
spring学习笔记(三)xml与注解结合模式xml与注解结合模式启动依赖注入的实现@AutoWried@Qualifier纯注解模式主要涉及注解web.xml配置启动配置类xml与注解结合模式xml与注解结合模式启动xml+注解结合模式,xml⽂件依然存在,所以,spring IOC容器的启动仍然从加载xml开始。我们把第三方jar中的bean定义在xml中,把自己开发的bean使用注解。@Component(“accountDao”),注解加在类上bean的id属性内容直接配置在注解后⾯如果不
2021-04-27 22:43:47
107
原创 spring学习笔记(二)IOC基础应用
spring学习笔记(二)spring基础应用IOC基础应用bean三种定义模式javaSE启动方式javaWeb启动方式三级目录spring基础应用IOC基础应用通过上一章手写IOC容器可知,beans.xml是用来配置对象之间的依赖关系,而beanFactory即为IOC容器,通过反射技术用来实例化对象,并维护对象之间的依赖关系。bean三种定义模式javaSE启动方式纯xml方式:ApplicationContext applicationContext=new ClassPathXmlA
2021-04-27 21:23:11
70
原创 mybatis学习笔记(五)组件和插件
mybatis学习笔记(五)mybatis插件四大组件ExecutorStatementHandlerParameterHandlerResultSetHandler自定义插件总结mybatis插件mybatis作为一款优秀的ORM开源框架,同时具有强大的灵活性。在mybatis的四大组件Executor、StatementHandler、ParameterHandler、ResultSetHandler处提供了插件拓展,对四大组件进行拦截从而实现功能拓展。四大组件ExecutorExecutor
2021-04-21 21:41:11
107
原创 mybatis学习笔记(四)缓存
mybatis学习笔记(四)一级缓存二级缓存开启二级缓存二级缓存利弊解决二级缓存中存在的弊端分布式环境数据脏读总结该篇文章主要讲述mybatis的缓存,mybatis有一级缓存和二级缓存之分。一级缓存是sqlsession级别的,也就是同一个sqlsession可以共享缓存中的数据。二级缓存为mapper级别或者namespace级别的,同一个mapper中的不同sqlsession或者同一个namespace中的sqlsession共享二级缓存中的数据一级缓存在同一个查询sql执行两次,可以进行sq
2021-04-21 21:25:55
149
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人