05 2019 档案
摘要:1.什么是消息驱动 SpringCloud Stream消息驱动可以简化开发人员对消息中间件的使用复杂度,让系统开发人员更多尽力专注与核心业务逻辑的开发。SpringCloud Stream基于SpringBoot实现,自动配置化的功能可以帮助我们快速上手学习,类似与我们之前学习的hibernate
阅读全文
摘要:1.SpringCLoud Bus简介: 官方介绍:Spring Cloud Bus将分布式系统的节点与轻量级消息代理链接。这可以用于广播状态更改(例如配置更改)或其他管理指令。一个关键的想法是,Bus就像一个扩展的Spring Boot应用程序的分布式执行器,但也可以用作应用程序之间的通信渠道。当
阅读全文
摘要:1.下载JDK安装包 先下载好JDK1.8 的安装包,下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2.上传到服务器 下载好之后,上传到linux 服务器上去,在/u
阅读全文
摘要:kafka简介与应用场景 Apache Kafka是分布式发布-订阅消息系统,在 kafka官网上对 kafka 的定义:一个分布式发布-订阅消息传递系统。 它最初由LinkedIn公司开发,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。Kafka是一种快速、可扩展的、设
阅读全文
摘要:RabbitMQ解决分布式事务思路: 案例: 经典案例,以目前流行点外卖的案例,用户下单后,调用订单服务,让后订单服务调用派单系统通知送外卖人员送单,这时候订单系统与派单系统采用MQ异步通讯。 RabbitMQ解决分布式事务原理:采用最终一致性原理。 需要保证以下三要素 1、确认生产者一定要将数据投
阅读全文
摘要:1.如图第一个是erlang语言的安装包,第二个是rabbitmq的安装包。 2.配置erlang语言环境,因为rabbitmq由erlang语言编写的,所以需要配置erlng语言环境。 erlang环境的配置跟我们配置JDK环境一样,如图。变量名:ERLANG_HOME。变量值:erlang安装报
阅读全文
摘要:1.什么是RabbitMQ RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现。AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多公开标准(如 COBAR的 IIOP ,或者是 SOAP 等),但是在异步消息处
阅读全文
摘要:使用码云搭建Git代码存储仓库 https://gitee.com/login 基于Docker安装Jenkins环境 1.使用docker 安装jenkins docker run -p 8080:8080 -p 50000:50000 -v jenkins_data:/var/jenkins_h
阅读全文
摘要:数组特征:连续性、查询快(底层使用下标)、有序。 数据删除原理:把要删除的元素后面的数据向前移动一位,将最后的一个元素置空(null)。 指定下标原理:把要插入的元素的数据及后边的元素向后移动一位,然后将新插入元素覆盖之前下标位置的元素。 链表分为:单向链表、双向链表,头和尾、节点(node)。 节
阅读全文
摘要:什么是数据结构: 简单地说,数据结构是以某种特定的布局方式存储数据的容器。这种“布局方式”决定了数据结构对于某些操作是高效的,而对于其他操作则是低效的。首先我们需要理解各种数据结构,才能在处理实际问题时选取最合适的数据结构。 为什么我们需要数据结构? 数据是计算机科学当中最关键的实体,而数据结构则可
阅读全文
摘要:什么是观察者模式 在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。 其实就是发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。 观察者模式应用场景 Zookeeper事件通知节点、消息订阅通知、安卓开发事件注册、分布式
阅读全文
摘要:Callable 在Java中,创建线程一般有两种方式,一种是继承Thread类,一种是实现Runnable接口。然而,这两种方式的缺点是在线程任务执行结束后,无法获取执行结果。我们一般只能采用共享变量或共享存储区以及线程通信的方式实现获得任务结果的目的。不过,Java中,也提供了使用Callabl
阅读全文
摘要:CPU 密集型(I/O bound) CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/内存),I/O在很短的时间就可以完成,而CPU还有许多运算要处理,CPU Loading很高。 C
阅读全文
摘要:1.当查询条件为空时,查询所有数据;当查询条件不为空时,根据条件查询。 语句1:select * from mainInfo where 1=1 ${if(len(mainInfoId) == 0,"","and mainInfoId = '" + mainInfoId + "'")} 语句2: s
阅读全文
摘要:集合框架介绍 说明:对于以上的框架图有如下几点说明 1.所有集合类都位于java.util包下。Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。 2. 集合接口:6个接口(短虚线表示)
阅读全文
摘要:需要在类上添加@Scope("property")多例,避免在高并发的情况下产事务重复提交的问题。
阅读全文
摘要:在不使用数据库连接池的情况下,我们做操作都是直接操作数据库的。每进行一次操作就会创建一个jdbc连接,如果并发量大的时候同时创建几百或者几千个jdbc连接可能会导致服务器宕机。这个时候我们就需要引入连接池来进行处理。 基本原理 在内部对象池中,维护一定数量的数据库连接,并对外暴露数据库连接的获取和返
阅读全文
摘要:什么是代理模式 为其他对象提供一种代理以控制对这个对象的访问。 为什么使用代理模式 中介隔离:在某些情况下,一个客户类不想或者不能直接引用一个委托对象,而代理类对象可以在客户类和委托对象之间起到中介的作用,其特征是代理类和委托类实现相同的接口。 开闭原则,增加功能代理类除了是客户类和委托类的中介之外
阅读全文
摘要:什么是Servlet Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。 使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可
阅读全文
摘要:SpringMVC的运行流程图 ⑴ 用户发送请求至前端控制器DispatcherServlet ⑵ DispatcherServlet收到请求调用HandlerMapping处理器映射器。 ⑶ 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给Disp
阅读全文
摘要:它是可扩展标记语言(Extensible Markup Language,简称XML),是一种标记语言。 XML 全称为可扩展的标记语言。主要用于描述数据和用作配置文件。 XML 文档在逻辑上主要由一下 5 个部分组成: XML 声明:指明所用 XML 的版本、文档的编码、文档的独立性信息 文档类型
阅读全文
摘要:Spring事物传播行为 Spring中事务的定义: Propagation(key属性确定代理应该给哪个方法增加事务行为。这样的属性最重要的部份是传播行为。)有以下选项可供使用: PROPAGATION_REQUIRED:如果当前有事务,就用当前事务,如果当前没有事务,就新建一个事务。这是最常见的
阅读全文
摘要:自定义事务注解步骤: 第一步:自定义注解。 第二步:手动封装事务。 第三步:定义一个事务扫包AOP(具体拦截哪些方法) 第四步:拦截方法的时候,使用反射技术判断该方法上是否有事务注解,如果有的话就开启事务,没有的话就不开启事务。 自定义注解简单步骤: 1.使用java反射机制进行扫包,获取当前包下的
阅读全文
摘要:log4j.rootLogger = info,stdout log4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout = org.apache.log4j.PatternLayoutlo
阅读全文
摘要:什么是外观模式 外观模式(Facade Pattern)门面模式,隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。 这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用
阅读全文
摘要:什么是适配器 在设计模式中,适配器模式(英语:adapter pattern)有时候也称包装样式或者包装(wrapper)。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。 适配器分类 适配器分为,类适配器、对象适
阅读全文
摘要:什么是模板方法 模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的 重复代码全部在父类里面,不同业务的,抽取给子类进行实现。抽取过程 抽象方法。 某些特定步骤。 核心:处理某个流程的代码已经都具备,但是其中某个节点的代码暂时不
阅读全文
摘要:什么是建造者模式 建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的Test结
阅读全文
摘要:连接mysql数据库查询数据报错,错误信息如下: java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You m
阅读全文
摘要:启动springboot项目的时候,控制台输出连接数据库的异常信息,异常信息如下。注意:该异常并不影响连接数据库的使用。 Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.m
阅读全文
摘要:什么是工厂模式 实现了创建者和调用者分离,工厂模式分为简单工厂、工厂方法、抽象工厂(比较少)模式。 工厂模式好处 工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。 利用工厂模式可以降低程序的耦合性,为后期的维护修改提供了很大的便利。 将选择实现类、创建对象统一管理和控制
阅读全文
摘要:什么是策略模式 策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理,最终可以实现解决多重if判断问题。 1.环境(Context)角色:持有一个Strategy的引用。 2.抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有
阅读全文
摘要:字符串... 数组变量:123 数组变量:abc 数组变量:456 集合:[123, abc, 456]
阅读全文
摘要:什么是单例模式 保证在一个Jvm中,只能存在一个实例,保证对象的唯一性。 保证一个类只有一个实例,并且提供一个访问该全局访问点。 单例模式的应用场景 Spring框架(默认是单例的)、Servlet、Struts2、SpringMvc、连接池、线程池、枚举、常量。 1. Windows的Task M
阅读全文
摘要:为什么需要使用设计模式 使用设计模式可以重构整体架构代码、提交代码复用性、扩展性 设计模式分类 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略
阅读全文
摘要:什么是Java反射 程序正在运行的时候,动态获取这个类的所有信息。 反射机制的作用 1. 反编译:.class-->.java 2. 通过反射机制获取访问java对象(类)的属性,方法,构造方法等; 反射机制的应用场景 1.JDBC连接、Jdbc 加载驱动 。 2.SpringIOC底层使用反射机制
阅读全文
摘要:1.什么是幂等性 就是接口重复提交产生的问题,保证接口唯一性。 2.什么场景下会产生幂等性问题 1.RPC远程调用的时候产生的网络延迟的情况下、补偿接口的时候。 2.表单重复提交的时候。 3.解决幂等性的方法 使用token可以有效解决这个问题,token(令牌)临时且唯一,有效期 15-120 分
阅读全文
摘要:Spring事务使用 事务基本特性 ⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。 ⑵ 一致性(Consistency) 一致性是指事务必须使数据库从一个一致性状态变
阅读全文
摘要:什么是Disruptor Martin Fowler在自己网站上写了一篇LMAX架构的文章,在文章中他介绍了LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易。这个系统是建立在JVM平台上,其核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单。业务逻辑处理器完全是运行在内
阅读全文
摘要:锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized(重量级) 和 ReentrantLock(轻量级)等等 ) 。这些已经写好提供的锁为我们开发提供了便利。 1.重入锁 重入锁,也叫做递归锁,指的是同一线程 外层函数获得锁之后 ,内层递归函数仍然有获取该锁的
阅读全文
摘要:在并发队列上JDK提供了两套实现,一个是以ConcurrentLinkedQueue为代表的高性能队列非阻塞,一个是以BlockingQueue接口为代表的阻塞队列,无论哪种都继承自Queue。 队列遵循先进先出,后进后出的原则。 阻塞式队列比非阻塞式队列性好。 阻塞式队列与非阻塞队列的区别: 阻塞
阅读全文
摘要:1.分布式session一致性 :指服务器集群情况下session共享的问题。 2.session的作用:保存服务器(tomcat)与客户端(浏览器)整个通讯的会话基本信息。 3.session应用场景:记录用户信息。登录场景(账号密码登陆成功之后,获取到userid,存放在session中,下次登
阅读全文
摘要:DNS: 域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。 域名解析: 域
阅读全文
摘要:什么是CDN内容分发: CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键
阅读全文
摘要:1.漏桶限流算法的原理 以固定速率从桶中流出水滴,以任意速率往桶中放入水滴,桶容量大小是不会发生改变的。 流入:以任意速率往桶中放入水滴。 流出:以固定速率从桶中流出水滴。 水滴:是唯一不重复的标识。 因为桶中的容量是固定的,如果流入水滴的速率>流出的水滴速率,桶中的水滴可能会溢出。那么溢出的水滴请
阅读全文
摘要:Spring核心知识 Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而
阅读全文