自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(127)
  • 收藏
  • 关注

原创 RPC与netty

简单的理解:就是用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能Java 共支持 3 种网络编程模型/IO 模式:BIO(同步并阻塞)、NIO(同步非阻塞)、AIO(异步非阻塞)阻塞与非阻塞主要指的是访问IO的线程是否会阻塞(或处于等待)线程访问资源,该资源是否准备就绪的一种处理方式同步和异步主要是指的数据的请求方式同步和异步是指访问数据的一种机制Java NIO 全称java non-blocking IO ,是指 JDK 提供的新 API。

2024-04-26 15:03:01 174

原创 Tomcat

Coyote 是Tomcat 中连接器的组件名称 , 是对外的接⼝。客户端通过Coyote与服务器建⽴连接、发送请求并接受响应。Coyote 封装了底层的⽹络通信(Socket 请求及响应处理)Coyote 使Catalina 容器(容器组件)与具体的请求协议及IO操作⽅式完全解耦Coyote 将Socket 输⼊转换封装为 Request 对象,进⼀步封装后交由Catalina 容器进⾏处理,处理请求完成后, Catalina 通过Coyote 提供的Response 对象将结果写⼊输出流。

2024-04-26 14:59:23 207

原创 SpringBoot

Spring 框架选择使用了 JCL 作为默认日志输出。而 Spring Boot 默认选择了 SLF4J 结合 LogBack下图是 SLF4J 结合各种日志框架的官方示例,从图中可以清晰的看出 SLF4J API 永远作为日志的门面,直接应用与应用程序中,具体的日志框架实现SLF4J。注意:由于每一个日志的实现框架都有自己的配置文件,所以在使用 SLF4j 之后,配置文件还是要使用实现日志框架的配置文件。统一日志框架使用步骤归纳如下排除系统中的其他日志框架。使用中间包替换要替换的日志框架。

2024-04-26 14:58:39 121

原创 springmvc

在java开发中基本上都是B/S架构,即浏览器/服务器。系统标准的三层架构包括:表现层、业务层、持久层。表现层 :也就是我们常说的web 层。它负责接收客户端请求,向客户端响应结果,通常客户端使⽤http 协议请求web 层,web 需要接收 http 请求,完成 http 响应。表现层包括展示层和控制层:控制层负责接收请求对应controller,展示层负责结果的展示对应页面。表现层依赖业务层,接收到客户端请求⼀般会调⽤业务层进⾏业务处理,并将处理结果响应给客户端。

2024-04-26 14:58:04 77

原创 Spring

⽅便解耦,简化开发通过Spring提供的IoC容器,可以将对象间的依赖关系交由Spring进⾏控制,避免硬编码所造成的过度程序耦合。⽤户也不必再为单例模式类、属性⽂件解析等这些很底层的需求编写代码,可以更专注于上层的应⽤。AOP编程的⽀持通过Spring的AOP功能,⽅便进⾏⾯向切⾯的编程,许多不容易⽤传统OOP实现的功能可以通过AOP轻松应付。声明式事务的⽀持可以将我们从单调烦闷的事务管理代码中解脱出来,通过声明式⽅式灵活的进⾏事务的管理,提⾼开发效率和质量。⽅便程序的测试。

2024-04-26 14:57:08 110

原创 Mysql学习笔记

一.Mysql原理1.1 架构MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层。网络连接层客户端连接器(Client Connectors):提供与MySQL服务器建立的支持。目前几乎支持所有主流的服务端编程技术,例如常见的 Java、C、Python、.NET等,它们通过各自API技术与MySQL建立连接服务层服务层是MySQL Server的核心,主要包含系统管理和控制工具、连接池、SQL接口、解析器、查询优化器和缓存六个部分。连接池(

2024-01-31 15:01:26 1087

原创 RPC与Netty简介

RPC一.Socket介绍Socket概述Socket,套接字就是两台主机之间逻辑连接的端点。TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。Socket是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议、本地主机的IP地址、本地进程的协议端口、远程主机的IP地址、远程进程的协议端口。Socket整体流程Socket编程主要涉及到客户端和服务端两个方

2022-04-22 11:33:52 1746

原创 Tomcat简介及优化思路

Tomcat简介及优化思路Tomcat 处理请求大致流程和架构请求流程1.HTTP服务器会把请求信息使⽤ServletRequest对象封装起来2.进⼀步去调⽤Servlet容器中某个具体的Servlet3.在 2中,Servlet容器拿到请求后,根据URL和Servlet的映射关系,找到相应的Servlet4.如果Servlet还没有被加载,就⽤反射机制创建这个Servlet,并调⽤Servlet的init⽅法来完成初始化5.接着调⽤这个具体Servlet的service⽅法来处理请求,

2021-11-16 14:48:19 322

原创 SpringBoot简介

SpringBoot第一部分 SpringBoot应用相关概念约定优于配置约定优于配置(Convention over Configuration),又称按约定编程,是一种软件设计规范。本质上是对系统、类库或框架中一些东西假定一个大众化合理的默认值(缺省值)。例如在模型中存在一个名为User的类,那么对应到数据库会存在一个名为user的表,此时无需做额外的配置,只有在偏离这个约定时才需要做相关的配置(例如你想将表名命名为t_user等非user时才需要写关于这个名字的配置)。如果所用工具的约定

2021-11-16 14:47:52 3034

原创 spring MVC简介

Spring MVC ⾼级框架第一部分 Spring MVC 的应用springmvc简介三层架构:在java开发中基本上都是B/S架构,即浏览器/服务器。系统标准的三层架构包括:表现层、业务层、持久层。表现层 :也就是我们常说的web 层。它负责接收客户端请求,向客户端响应结果,通常客户端使⽤http 协议请求web 层,web 需要接收 http 请求,完成 http 响应。表现层包括展示层和控制层:控制层负责接收请求对应controller,展示层负责结果的展示对应页面。表现层依赖业

2021-11-16 14:46:37 210

原创 Spring简介

Spring ⾼级框架第⼀部分 Spring 概述Spring的优势⽅便解耦,简化开发通过Spring提供的IoC容器,可以将对象间的依赖关系交由Spring进⾏控制,避免硬编码所造成的过度程序耦合。⽤户也不必再为单例模式类、属性⽂件解析等这些很底层的需求编写代码,可以更专注于上层的应⽤。AOP编程的⽀持通过Spring的AOP功能,⽅便进⾏⾯向切⾯的编程,许多不容易⽤传统OOP实现的功能可以通过AOP轻松应付。声明式事务的⽀持@Transactional可以将我们从单调烦闷的

2021-11-16 14:46:03 176

原创 Linux下安装mysql-8.0.22

安装环境主机是购买的阿里云的云服务器系统是云服务器自带的CentOS 8.2 64位mysqlmysql是mysql-8.0.22版本,可以去https://dev.mysql.com/downloads/mysql/下载对应的版本安装1.在安装前需要确保没有安装过mysql,如果安装过请彻底删除对应的文件,具体方法可以自行百度2.检查mysql用户组和用户是否存在cat /etc/group | grep mysqlcat /etc/passwd |grep mysql3.如果用户

2021-01-16 11:41:55 1200

原创 Mysql中sql执行的过程

1、客户端和服务器建立连接,发送请求2、服务器先检查查询缓存。如果在查询缓存中发现了该sql,则会进行权限校验,权限校验通过,直接返回结果。如果查询缓存中没有,则进入下面的步骤(对应查询缓存这一过程,8.0这一过程已经不存在了,8.0完全抛弃了这个功能)3、服务器对sql进行解析。识别出sql里面的字符串是否符合标准,比如select关键字不能写错。识别出sql里面的字符串的具体意思是什么,比如T1是表名,C1是列名(对应解析器这一过程)4、服务器对sql进行预处理。确定sql的执行路径,比如走索引.

2020-07-09 19:26:13 361

转载 HTTP协议详解

HTTP协议简介超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,最终发布了一系列的RFC,其中

2020-07-07 13:52:30 474

转载 数据库索引原理及优化

本文内容主要来源于互联网上主流文章,只是按照个人理解稍作整合,后面附有参考链接。一、摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打...

2020-04-24 15:49:42 534 1

转载 Nginx配置

反向代理与前向代理前向代理:作为客户端的代理,将从互联网上获取的资源返回给一个或多个的客户端,服务端(如Web服务器)只知道代理的IP地址而不知道客户端的IP地址;反向代理:是作为服务器端(如Web服务器)的代理使用,而不是客户端,客户端知道代理服务器IP地址而不知道具体后台服务器的IP地址。举个例子,在公司通过代理服务器访问外网,这里代理服务器属于前向代理服务器,而客户通过代理服务...

2020-03-16 15:59:12 317

原创 Mac安装Nginx

一.安装Pcre1.到Pcre官网,下载安装包2.解压压缩包3.在命令行中执行sudo -i切换到root用户下,并进入解压后的目录4.执行./configure --prefix=/usr/local/pcre进行相关检查5.执行make && make install,如果没有报错,则安装完毕6.执行make -k check检查安装是否完成,完成的界面如下:二...

2020-03-13 15:51:01 978

原创 Zookeeper 安装(Mac)、配置、常用命令及简单的java实例

Zookeeper介绍zookeeper是一个分布式服务框架,主要是用来解决分布式应用中的数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。 可以把zookeeper理解为一个由文件系统+监听通知机制组成的框架。详细介绍可以去Zookeeper官网查询,1、 文件系统Zookeeper维护一个类似文件系统的数据结构:每个子目录项如 NameService.........

2020-01-13 10:45:04 1681

转载 Java中Curator的使用

Java中Curator的使用

2020-01-13 10:44:44 1914

转载 如何使用RedisTemplate访问Redis数据结构

Redis 数据结构简介Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串)、List(列表)、Set(集合)、Hash(散列)和 Zset(有序集合)。下面来对这5种数据结构类型作简单的介绍:结构类型结构存储的值结构的读写能力String可以是字符串、整数或者浮点数对整个字符串或者字符串的其中一部分执行操作;对象和...

2020-01-04 18:09:05 165

原创 jdk1.8 jstat命令

简介Jstat是JDK自带的一个轻量级小工具,位于java的bin目录下。主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控。jstat工具可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下:jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]示例使用jps -v找到要统计的JVM进程id,这里的进程id为8470。示例中没...

2019-12-28 15:04:16 1097

原创 Linux vmstat命令

简介vmstat命令用来显示Linux系统虚拟内存状态,也可以报告关于进程、内存、I/O等系统整体运行状态。安装yum install -y sysstat字段解释vmstat命令输出的第一行是自从系统重新启动以来所有指标的平均值。procsprocs代表进程相关参数字段名意义说明r等待运行的进程数如果该值长期大于CPU数,就表示需要添加CPU...

2019-12-27 21:29:48 364

原创 SpringCloud之Zuul简单实例(springboot2.2.2RELEASE)

一. API网关简介网关就可以对外暴露聚合API,屏蔽内部微服务的微小变动,保持整个系统的稳定性。它还可以做负载均衡,统一鉴权,协议转换,监控监测等一系列功能。二. Zuul简介Zuul是Spring Cloud全家桶中的微服务API网关。所有从设备或网站来的请求都会经过Zuul到达后端的Netflix应用程序。作为一个边界性质的应用程序,Zuul提供了动态路由、监控、弹性负载和安全功能...

2019-12-26 12:00:15 1653

原创 SpringCloud之Feign的简单实例,包括声明式REST调用及容错处理(springboot2.2.2RELEASE)

eureka地址示例(代码地址)1.pomxml<properties> <java.version>1.8</java.version> <spring-cloud.version>Hoxton.RELEASE</spring-cloud.version> </properties&g...

2019-12-24 10:01:43 650

原创 SpringCloud之eureka简单实例(springboot2.2.2RELEASE)

一. Eureka简介Eureka是Netflix开源的服务发现组件,本身是基于Rest的服务,它包含服务端和客户端两部分;在SpringCloud中将它集成在其中,从而实现了微服务的发现与注册;Eureka的GitHub:https://github.com/Netflix/Eureka二. Eureka Server说明服务端:服务实例需要执行服务注册、发送心跳去续约(服务续约...

2019-12-21 19:03:25 1858

原创 Eureka自我保护机制

Eureka自我保护机制:eureka虽然收不到实例的心跳,但它认为实例还是健康的,eureka会保护这些实例,不会把它们从注册表中删掉。默认情况下,当eureka server在一定时间内没有收到实例的心跳,便会把该实例从注册表中删除(默认是90秒)。但是,短时间内丢失大量的实例心跳,便会触发eureka server的自我保护机制(开发测试时),此时eureka不会删除实例,但是会出现红...

2019-12-21 19:03:05 707

转载 《Maven官方文档》-Maven依赖机制简介

依赖机制是Maven最为用户熟知的特性之一,同时也是Maven所擅长的领域之一。单个项目的依赖管理并不难,但是当你面对包含数百个模块的多模块项目和应用时,Maven能帮你保证项目的高度控制力和稳定性。文章目录一.传递性依赖二.依赖范围三.依赖管理集中管理控制传递性依赖导入依赖系统依赖一.传递性依赖传递性依赖是Maven2.0的新特性。假设你的项目依赖于一个库,而这个库又依赖于其他库。你不必自...

2019-12-11 11:20:00 166

原创 JVM中GC常用参数说明及理解GC日志

JVM中GC常用参数参数解释-agentlib:ipharmacare_hook公司指定文件:解析密钥需用到-XX:MetaspaceSize=256m元空间初始空间大小-XX:MaxMetaspaceSize=512m元空间 最大空间,默认是没有限制的。-Xms1024m设置JVM最大可用内存为1024M。-Xmx1024m设置JVM促使内...

2019-12-10 16:30:35 1560

原创 vue2.0 实例的生命周期方法

生命周期图示例:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"/&gt...

2019-12-10 10:39:42 175

原创 Java try-with-resource语法

JDK1.7之前在JDK1.7之前要确保外部资源关闭一般使用finally,如下FileInputStream inputStream = null;try { inputStream = new FileInputStream(new File("user.csv")); System.out.println(inputStream.read());} catch (IO...

2019-12-09 21:05:46 224

原创 MySQL中DATE_FORMAT的使用

DATE_FORMAT:DATE_FORMAT(date,format) 函数用于以不同的格式显示日期/时间数据。date是要转化的日期,format是格式示例:select DATE_FORMAT(NOW(),'%Y-%m-%d');结果:2018-09-12format格式格式描述%a缩写星期名%b缩写月名%c月,数值%D带有英...

2019-12-09 20:29:57 771

原创 mysql数据库事务隔离级别(脏读、幻读、不可重复读)

一、脏读、幻读和不可重复读1、脏读:脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。例如:张三的工资为5000,事务A中把他的工资改为8000,但事务A尚未提交。与此同时,事务B正在读取张三的工资,读取到张三的工资为8000。随后,事务A发生异常,而回滚了事务。张三的工资又回滚为5000。...

2019-12-09 18:49:11 782 2

转载 MySQL Explain优化

1.1. EXPLAIN在MySQL中可以使用EXPLAIN查看SQL执行计划。示例:EXPLAIN SELECT * FROM tb_item1.2. 结果说明1.2.1. idSELECT识别符。这是SELECT查询序列号。这个不重要。1.2.2. select_type表示SELECT语句的类型。有以下几种值:1、 SIMPLE表示简单查询,其中不包含连接查询和子查询。...

2019-12-09 17:26:02 149

原创 MyBatis 中resultType属性

resultType:MyBatis中resultType是用来指定查询结果类型的属性一.返回一般数据类型对于引用类型一般采用大写字母转小写的方式。基本类型一般在前面加"_",下面给了两个例子stringmapper接口:String getPasswordByName(@Param("name") String name);xml:<select id="getPass...

2019-12-09 16:01:01 1522 1

原创 @NotNull和@NonNull的区别和使用

区别@NotNull在类字段中使用,表示该字段不能为空。它是 JSR303(Bean的校验框架)的注解。在调用controller的方法中加入@Valid就可以验证该方法参数中该类的对应属性是否为空,如果为空,注解中的提示信息会保存在result中。@NonNull在方法或构造函数的参数上使用,表示该参数不能为空。@NotNull使用/** * user类 */@Datapubli...

2019-12-09 12:30:06 7903

原创 BigDecimal加减乘除计算及舎入模式

运算函数加法 add()函数减法subtract()函数乘法multiply()函数除法divide()函数绝对值abs()函数示例BigDecimal num1 = new BigDecimal(100);BigDecimal num2 = new BigDecimal(-100);BigDecimal num3 = new BigDecimal("0.5");BigDe...

2019-12-09 10:40:10 166

原创 String.format()的用法

普通转换符转换符详细说明%s返回字符串类型%c返回字符类型%b返回布尔类型%d返回整数类型(十进制)%x返回整数类型(十六进制)%o返回整数类型(八进制)%f返回浮点类型%a返回十六进制浮点类型%e返回指数类型%g返回通用浮点类型(f和e类型中较短的)%h返回散列码%%返回百分比类型 %...

2019-12-07 15:12:28 450

原创 springboot+log4j2+阿里云日志

1. springboot配置文件log4j2可以有多个配置文件根据环境的不同(本地环境、测试环境、线上环境)可以选择不同的配置,在application中可以使用以下属性进行配置:logging.config=classpath:log4j2-dev.xml2. log4j2文件格式log4j2配置文件后缀名只能为".xml",".json"或者".jsn"。系统选择配置文件的优先...

2019-12-06 21:17:04 2115

转载 深入学习Java内存模型JMM

多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请求数,而TPS值与程序的并发能力有着非常密切的关系。物理机的并发问题与虚拟机中的情况有很多相似之处,物理机对并发的处理方案对于虚拟机的实现也有相当大的参考意义。由于计算机的存...

2019-12-04 19:51:50 251

原创 Java JDK1.8中类常量池、运行时常量池、字符串常量池所处区域

类常量池诞生时间:编译时所处区域:堆(类常量池存在Class文件中,一个Class文件对应一个类常量池)储存内容:符号引用和字面量。字符串常量池诞生时间:编译时所处区域:堆储存内容:堆内的字符串对象的引用和字符串常量。运行时常量池诞生时间:当类加载到内存中后所处区域:本地内存(每个class都有一个运行时常量池,运行时常量池存在元空间中)储存内容:class文件元信息描述,编...

2019-12-04 17:55:01 4449 4

空空如也

空空如也

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

TA关注的人

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