自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (1)
  • 收藏
  • 关注

原创 基于Netty重构RPC框架

RPC概述Dubbo官网中的一张图描述了项目架构的演进过程.它描述了每一种架构需要的具体配置和组织形态。当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本,我们通常会采用单一应用架构。之后出现了 ORM 框架,主要用于简化增删改查工作流的,数据访问框架 ORM 是关键。随着用户量增加,当访问量逐渐增大,单一应用增加机器,带来的加速度越来越小 ,我们需要将应用拆分成互不干扰的几个应用,以提升效率,于是就出现了垂直应用架构。MVC 架构就是一种非常经典的用于加速前端页面开发的架

2020-10-14 13:43:48 341

原创 Netty与NIO

Java NIO 三件套在 NIO 中有几个核心对象需要掌握:缓冲区(Buffer)、选择器(Selector)、通道(Channel)缓冲区 Buffer1. Buffer 操作基本 API缓冲区实际上是一个容器对象,更直接的说,其实就是一个数组,在 NIO 库中,所有数据都是用缓冲区处理的。在读取数据时,它是直接读到缓冲区中的; 在写入数据时,它也是写入到缓冲区中的;任何时候访问 NIO 中的数据,都是将它放到缓冲区中。而在面向流 I/O 系统中,所有数据都是直接写入或者直接将数据读取到 Str

2020-10-13 15:35:37 332 1

原创 JVM面试题

JVM面试一、Part 11、JVM垃圾回收的时候如何确定垃圾?是否知道什么是GC Roots什么是垃圾?内存中已经不再使用到的空间就是垃圾要进行垃圾回收,如何判断一个对象是否可以被回收引用计数法:java中,引用和对象是由关联的。如果要操作对象则必须用引用进行。因此很显然一个简单的办法是通过引用计数来判断一个对象是否可以回收,简单说,给对象中添加一个引用计数器,每当有一...

2020-10-10 09:47:56 211

原创 SpringCloud

SpringCloud 是微服务技术落地的一种实现和体现SpringCloud微服务概述什么是微服务目前的微服务并没有一个统一的标准,一般是以业务来划分将传统的一站式应用,拆分成一个个的服务,彻底去耦合,一个微服务就是单功能业务,只做一件事。与微服务相对的叫巨石微服务与微服务架构微服务是一种架构模式或者一种架构风格,提倡将单一应用程序划分成一组小的服务独立部署,服务之间相互配...

2020-10-10 09:47:22 619

原创 SpringCloud面试题

1. 什么是微服务?术语描述微服务架构是一种架构模式或者说是一种架构风格,,它提倡将单一应用程序划分成一组小的服务,每个服务运行在其独立的进程中,服务之间相互协调,互相配合,为用户提供最终价值,服务之间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应尽量避免统一的,集中式的服务管...

2020-10-10 09:46:48 179

原创 多线程-基础篇

线程的生命周期可以分为5个主要阶段:1.NEW 新建2.RUNNABLE 可运行3.RUNNING 运行中4.BLOCKED 堵塞5.TERMINATED 结束1. 线程的NEW状态当我们用关键字new创建一个Thread对象时,此时它并不处于执行状态,因为没有调用start方法启动该线程,那么线程的状态为NEW状态,准确说,他只是Thread对象的状态,因为在没有start之前,该线程根本不存在,与你用关键字new 创建一个对象没什么区别.NEW状态通过start方法进入R.

2020-10-10 09:46:16 125

原创 Thread

JUC多线程及高并发文章目录JUC多线程及高并发一、请你谈谈对volatile的理解1、volatile是java虚拟机提供的轻量级的同步机制2、JMM(java内存模型)3、你在那些地方用过volatile二、CAS你知道吗1、compareAndSet----比较并交换2、CAS底层原理?对Unsafe的理解3、CAS缺点三、原子类AtomicInteger的ABA问题?原子更新引用?1、A...

2020-10-10 09:45:29 149

原创 Java IO演进之路

1. 必须明白的几个概念1.1阻塞(Block)和非阻塞(Non_Block)阻塞和非阻塞是进程在访问数据的时候, 数据是否准备就绪的一种处理方式, 当数据没有准备的时候.阻塞:往往需要等待缓冲区中的数据准备好过后才处理其他的事情,否则一直等待在那里。非阻塞:当我们的进程访问我们的数据缓冲区的时候,如果数据没有准备好则直接返回,不会等待。如果数据已经准备好,也直接返回。1.2 同步(Synchronization)和异步(Asynchronous)同步和异步都是基于应用程序和操作系统处理 IO

2020-10-10 09:39:56 145

原创 http 协议和 https 协议的原理

http 通信协议的基本原理http 协议在远程通信场景中的应用还是挺广泛的,包括现在主流的微服务架构的通信都是基于 http 协议。由于经常使用的关系,所以大家对http 协议的理解还是比较深刻,我这里就直接帮大家梳理一下 http 协议的基本原理。一次 HTTP 请求的通信流程我们先来思考一个问题,我们在浏览器上输入一个网址后,浏览器是如何展示目标网址的内容的?内容是从哪里来的呢?来通过图形把这个过程画一下DNS: (Domain Name System)服务是和 HTTP 协议一样位于应用层

2020-10-09 16:10:58 663 1

原创 远程通信协议

一个 http 请求的整个流程在分布式架构中,有一个很重要的环节,就是分布式网络中的计算机节点彼此之间需要通信,通信的过程涉及到通信协议.负责域名解析的 DNS 服务首先,用户访问一个域名,会经过 DNS 解析DNS(Domain Name System),它和 HTTP 协议一样是位于应用层的协议,主要提供域名到IP 的解析服务。 我们其实不用域名也可以访问目标主机的服务,但是 IP 本身不是那么容易记,所以使用域名进行替换使得用户更容易记住。加速静态内容访问速度的 CDN在很多大型网

2020-09-29 23:31:43 301

原创 HashMap底层原理分析

HashMap底层原理分析算法复杂度算法复杂度分为时间复杂度和空间复杂度.其作用: 时间复杂度是度量算法执行的时间长度; 而空间复杂度是度量算法所需存储空间的大小.时间复杂度1. 时间频度一个算法执行所耗费的时间, 从理论上是不能算出来的, 必须上机运行测试才能知道, 但我们不可能也没有必要对每个算法都上机测试, 只需知道哪个算法花费的时间多, 哪个算法花费的时间少就可以了. 并且一个算法的时间与算法中语句的执行次数成正比例, 哪个算法中语句执行次数多, 它花费时间就多, 一个算法的语句执行

2020-09-28 11:47:17 156

原创 (八)--ActiveMQ的高级特性

一. 引入消息队列后如何保证其高可用性Zookeeper + relicated-levelted-leveldb-store主从集群二. 异步投递Async Sends1. 异步投递官网说明: 对于一个Slow Consumer, 使用同步发送消息肯能出现Producer堵塞等情况, 慢消费者适合异步发送2. 是什么ActiveMQ支持同步,异步两种发送的模式将消息发送到b...

2020-02-20 18:38:30 252

原创 (七)--ActiveMQ多节点集群

1. 面试题引入消息队列之后该如何保证其高可用性?2. 是什么基于Zookeeper和LevelDB搭建ActiveMQ集群集群仅提供主备方式的高可用集群功能,避免单点故障3. zookeeper+replicated-leveldb-store的主从集群从ActiveMQ5.9开始,ActiveMQ的集群实现方式取消了传统的Master-Slave方式.增加了基于Zookeep...

2020-02-20 16:07:42 402

原创 (六)--ActiveMQ的消息存储和持久化

1. 官网https://activemq.apache.org/persistence面试题: MQ的高可用?(1.事务, 2.持久,3. 签收MQ自带)-可持久化2. 是什么说明:-------为了避免意外宕机以后丢失信息, 需要做到重启后可以恢复消息队列, 消息系统一般都会采用持久化机制ActiveMQ的消息持久化机制有JDBC,AMQ, KahaBD和LevelDB, 无论使...

2020-02-19 22:28:02 624

原创 (五)--ActiveMQ的传输协议

一. 面试题默认的61616端口如何修改?你生产上的链接协议如何配置的? 使用TCP吗?二. 官网官方描述各种主要协议1. 是什么ActiveMQ支持的client-broker通讯协议有: TCP 、 NIO、UDP、SSL、Http(s)、VM。其中配置Transport Connector的文件在activeMQ安装目录的conf、activemq.xml中的< tran...

2020-02-19 20:19:46 301

原创 (四)--Spring, SpringBoot整合ActiveMQ

一. Spring整合ActiveMQ1. Maven修改, 需要添加Spring支持JMS的包Pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001...

2020-02-19 19:42:16 274

原创 (三)--JMS规范的落地产品

一. 是什么1. JavaEE是一套使用Java进行企业级应用开发的大家一致遵循的13个核心规范工业标准,JavaEE平台提供了一个几月组件的方法来加快设计, 开发,装配及部署企业应用程序.1.JDBC(Java DataBase)数据库连接2.JNDI(Java Naming and Directory Interface)Java的命名和目录接口3. EJB (Enterpris...

2020-02-19 13:15:57 265 1

原创 (二)--JAVA编码实现ActiveMQ通讯

生产者1. 新建MAVEN工程2. 修改POM.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...

2019-12-28 16:34:37 216

原创 (一)--Linux安装ActiveMQ

下载ActiveMQ将下载好的tar.gz包存放在 /opt目录下,并解压安装包tar -zxvf apache-activemq-5.15.11-bin.tar.gz进入解压后的bin目录下,执行activemq一、启动1. 普通启动mq./activemq startactivemq的默认进程端口是61616这里屏蔽掉我不想看见含有grep的关键行[root@loc...

2019-12-27 11:19:45 171

原创 Mybatis运行原理

MyBatis工作原理Mybatis四大对象:Executor 执行器(update ,query, flushStatements, commit, rollback, getTransaction, close, isClosed)==ParameterHandler == 参数处理器(getParameterObject, setParameters)ResultSetHand...

2019-12-25 23:50:11 261

原创 Mybatis-cache

两级缓存:一级缓存:(本地缓存):sqlSession级别的缓存。一级缓存是一直开启的;SqlSession级别的一个Map与数据库同一次会话期间查询到的数据会放在本地缓存中。以后如果需要获取相同的数据,直接从缓存中拿,没必要再去查询数据库;一级缓存失效情况(没有使用到当前一级缓存的情况,效果就是,还需要再向数据库发出查询):1、sqlSession不同。2、sqlSession相...

2019-12-23 16:13:11 492

原创 webservice学习笔记

webservice解决的问题:不同系统,不同平台,不同语言之间的通信访问和调用应用程序的集成,不同业务的整合(异构系统之间的访问和调用)webService概述WebService的定义/什么是WebServiceWebService运行与访问过程WebService核心组件WebService的定义:Web服务一种服务导向架构的技术,通过标准的Web协议提供服务,目的是保证不同...

2019-12-17 14:16:29 215

原创 Mybatis-DynamicSql

优势动态SQL是Mybatis强大特性之一,极大的简化我们拼装SQL的操作.动态SQL元素和使用JSTL或其他类似基于XML的文本处理器相似.Mybatis采用功能强大的基于OGNL的表达式来简化操作.- if :判断- choose(when, otherwise) 分支选择, 带了break的swtich-case 如果带了id就用idcha,如果带了lastName就用last...

2019-12-17 11:16:16 1010

原创 Mybatis-mapper

mybatis的目的就是为了对数据库做操作,所以它最重要的就是配置xml,写sql语句,定义查询赋值规则目录结构注意这里mapper.xml应该与接口在相同的位置,这里将mapper.xml文件放在resource目录下,其实与放在java目录下的效果是一样的,最终编译都会放在同一个包下,这里只是为了方便开发好看.1. Bean1.1 Department@Data@NoArgsCo...

2019-12-16 15:48:21 450

原创 mybatis_config

mybatis-config.xmlmybatis-config.xml:详解1. mybatis可以使用properties来引入外部properties配置文件的内容;resource: 引入类路径下的资源url: 映入网络路径或者磁盘路径下的资源<properties resource="dbconfig.properties"></properties>...

2019-12-13 15:45:41 228

原创 Mybatis-helloworld

1. mybatis-hello目录结构1.1 文件解释:两个重要的配置文件:mybatis-config.xml: 全局配置文件,数据库连接信息、引入SQL映射文件等EmployeeMapper.xml: SQL映射文件,配置增删改查 的SQL语句的映射两个重要的对象SqlSessionFactory: SqlSession的工厂对象,主要是用于获取SqlSession对象Sql...

2019-12-13 14:08:10 115

原创 Java类型-Type系统

Type是Java中所有类型的公共高级接口,也就是Java中所有类型的"爹"。public interface Type { //返回这个类型的描述,包括此类型的参数描述. default String getTypeName() { return toString(); }}Type体系中类型包括:原始类型,基本类型(Class),参数化类型(P...

2019-12-11 23:56:41 309

原创 Dubbo-高可用

1.zookeeper宕机与dubbo直连现象:zookeeper注册中心宕机,还可以消费dubbo暴露的服务。原因:健壮性1、监控中心宕掉不影响使用,只是丢失部分采样数据。2、数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务。3、注册中心对等集群,任意一台宕掉后,将自动切换到另一台。4、注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯。5、 ...

2019-12-11 10:34:19 139

原创 Dubbo-helloword-spring版本

1. 提出需求某个电商系统,订单服务需要调用用户服务获取某个用户的所有地址;这里就相当于你去某宝上面买东西,下单了是不是会出现你的所有收货地址出来,要你选一个,我们现在需要创建两个服务模块进行测试模块功能订单服务web模块创建订单等用户服务service模块查询用户地址等测试预期结果:订单服务web模块在A服务器,用户服务模块在B服务器,A可以远程调...

2019-12-10 22:43:15 222

原创 centos安装Tomcat8.5

1、下载Tomcat8并解压https://tomcat.apache.org/download-80.cgiwget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.5.32/bin/apache-tomcat-8.5.32.tar.gz2.解压移动到指定位置3. 开机启动tomcat 8新建tomcat文件加上这段脚本...

2019-12-09 15:29:04 162

原创 Linux安装zookeeper

1.下载zookeeper网址 https://archive.apache.org/dist/zookeeper/zookeeper-3.4.11/wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz2.解压tar -zxvf zookeeper-3.4.11.tar...

2019-12-09 14:59:31 150

原创 Centos7中安装jdk13.0.1

1. 【linux】-安装zookeeper1.1首先你的linux上得有jdk的环境这里安装的是jdk13.0.1版本1.1.1.先把linux系统上的jdk卸载一 .查看删除查看Java版本语言:Java -version查询与Java相关字段:rpm -qa | grep java命令含义rpm管理套件-qa使用询问模式所有套件grep查...

2019-12-09 14:03:38 1817

原创 Dubbo-基础知识-windows下安装

一、基础知识1、分布式基础理论1)、什么是分布式系统?分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统,分布式系统(distributed system)是建立在网络之上的软件系统。随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构无法应对,分布式服务架构以及流动计算架构势在必行,需**一个治理系统**确保架构有条不紊的演进2)、发展演变3)、...

2019-12-09 12:37:43 322

原创 JVM学习笔记

请谈谈你对JVM的理解?java8的虚拟机有什么更新?什么是OOM?什么是StackOverflowError?有哪些方法分析?JVM的常用参数调优你知道哪些?谈谈JVM中多类加载器你的认识?JVM是运行在操作系统之上的,它与硬件没有直接的交互JVM体系结构概览类装载器ClassLoader负责加载class文件,class文件在***开头有特定的文件标示***,将class...

2019-12-09 09:46:40 131

原创 怎么停止yum

ctrl + zps -ef | grep 正在安装的包名称kill -9 进程Id

2019-11-29 16:24:44 865

原创 PLSQL

准备工作:set serveroutput onhellowrold 程序begindbms_output.put_line('hello world');end;[语法格式]--declare --声明的变量、类型、游标begin --程序的执行部分(类似于java里的main()方法) dbms_output.put_line('helloworld');-...

2019-11-18 10:58:02 694

原创 Mysql基础

Mysql基础一、为什么要学习数据库二、数据库的相关概念 DBMS、DB、SQL三、数据库存储数据的特点四、初始MySQL MySQL产品的介绍 MySQL产品的安装 ★ MySQL服务的启动和停止 ★ MySQL服务的登录和退出 ★ MySQL的常见命令和语法规范 五、DQL...

2019-11-18 09:31:57 97

原创 数据库锁理论

锁的定义 锁是计算机协调多歌进程或线程并发访问某一资源的机制.在数据库中,除传统的计算机资源(如CPU、RAM,I/O等)的争用以外,数据也是一种供许多共享的资源,如何保证数据并发访问的一致性,有效性是所有数据库必须解决的一个问题,锁冲突也影响数据库并发访问性能的一个重要因素,从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。锁的分类1. 读、写锁2. 表锁、行锁3. 读...

2019-11-15 14:01:31 203

原创 mysql 索引

✔先来一波mysql关联##AB交集select * from tbl_emp a INNER JOIN tbl_dept b ON a.deptId = b.id;##A表为准select * from tbl_emp a left JOIN tbl_dept b ON a.deptId = b.id;##除去AB交集和B表的其余记录select * from tbl_emp a...

2019-11-14 16:53:15 301

原创 简单缓存

hutool手写简单缓存/** * 简单缓存,无超时实现,使用{@link WeakHashMap}实现缓存自动清理 * @author Looly * * @param <K> 键类型 * @param <V> 值类型 */public class SimpleCache<K, V> implements Serializable{ priv...

2019-11-13 23:55:55 318

springAnnotation.zip

Spring注解开发代码+脑图+源码分析+spingmvc源码分析

2019-12-05

空空如也

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

TA关注的人

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