自定义博客皮肤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)
  • 收藏
  • 关注

原创 Mybatis源码解析四——异常模块(Exception)

异常模块(Exception)Mybatis源码解析一——搭建阅读环境Mybatis源码解析二——解析器模块(parsing)Mybatis源码解析三——反射模块(Reflector)Mybatis源码解析四——异常模块(Exception)文章目录异常模块(Exception)Exception类继承结构IbatisExceptionPersistenceExceptionExceptionFactory## 包结构一览![在这里插入图片描述](https://img-blog.c

2021-05-02 22:04:20 691

原创 Netty笔记(4)——Netty使用ProtoBuf编解码

文章目录Netty使用ProtoBuf编解码服务端客户端Protobuf注意事项Netty使用ProtoBuf编解码上篇文章介绍了如何使用ProtoBuf解码器,并且写了一个小的测试用例。本篇使用ProtoBuf进行Netty通讯的编解码。我们需要使用到上篇文章生成的两个类作为传输的对象。因此,不清楚的同学可以看看上遍文章。上篇文章生成的两个类 SubscribeReqProto ,SubscribeRespProto 对象,这两个类是由ProtoBuf生成的,比较复杂,这里不帖代码。然后我们

2021-02-17 13:24:59 369

原创 Netty笔记(3)—— Protobuf编解码

文章目录前言Protobuf编解码Protobuf入门引入下载`protoc-XXXX-win64.zip`idea插件安装编写.proto文件生成Java文件.proto文件生成java文件误区测试Protobuf前言笔者之前没有接触过Protobuf,第一次使用还是比较复杂,同时网络上没有系统的教程参考,这里困扰了很久,ε=(´ο`*)))唉。包括一些插件的使用,网上有很多不同的方式,笔者在第一次接触的时候分不清楚,导致混合一起使用。下文会讲清楚Protobuf需要根据.proto生成文件,笔

2021-02-16 23:26:56 584

原创 Netty笔记(2)—— Netty编解码开发

文章目录Netty编解码开发编解码技术如何评判一个编解码框架的优劣MessagePack编解码MessagePack简单使用在Netty中使用MessagePack作为编解码器编码器开发解码器开发使用MessagePack作为编解码器开发Netty服务器与客户端服务器客户端粘包/半包支持Netty编解码开发编解码技术Java序列化的问题:无法跨语言序列化后码流太大序列化性能太低如何评判一个编解码框架的优劣是否支持夸语言,支持的语言种类是否丰富编码后的码流大小编解码的性能类库是否

2021-02-16 23:17:46 187

原创 Netty笔记(1)—— Netty基础入门

文章目录Netty入门案例Server端Client端TCP粘包/拆包问题粘包/拆包产生的原因粘包/拆包的解决策略Netty解决粘包/拆包问题LineBasedFrameDecoder和StringDecoder分隔符解码器定长解码器Netty入门案例Server端package com.wy.netty.simple;import com.wy.netty.simple.messagepack.MsgPackEncoder;import com.wy.netty.simple.messagep

2021-02-16 23:08:40 258

原创 Mybatis源码解析三——反射模块(Reflector)

反射模块(Reflector)Mybatis源码解析一——搭建阅读环境Mybatis源码解析二——解析器模块(parsing)Mybatis源码解析三——反射模块(Reflector)文章目录反射模块(Reflector)前言一、reflector包结构二、reflector测试类结构三、ReflectorFactory3.1DefaultReflectorFactory四、Reflector4.1Reflector构造器4.1.1addDefaultConstructor4.1.2addGe

2020-12-29 21:42:57 664 4

原创 Mybatis源码解析二——解析器模块(parsing)

解析器模块(parsing)Mybatis源码解析一——搭建阅读环境Mybatis源码解析二——解析器模块(parsing)文章目录解析器模块(parsing)前言一、parsing包结构二、GenericTokenParser2.1GenericTokenParser2.2GenericTokenParserTest三、PropertyParser3.1PropertyParser3.2PropertyParserTest四、XPathParser4.1XPathParser4.2XPathP

2020-12-27 00:33:44 593 1

原创 Mybatis源码解析一——搭建阅读环境

搭建阅读环境Mybatis源码解析一——搭建阅读环境文章目录搭建阅读环境前言一、拉取源码二、包结构三、test包结构四、运行4.1测试数据库创建4.2配置数据源4.3运行总结前言在阅读源码之前,我们需要搭建好源码阅读的环境。需要使用到的依赖有IDEA,GIT,MAVEN。一、拉取源码先从官方仓库 Mybatis fork出自己的代码库,再从自己的代码库中拉取文件。二、包结构三、test包结构Mybatis各个模块都有对应的test包,这对源码调试有非常大的帮助四、运

2020-12-26 16:28:05 380

原创 JSP内置对象

JSP内置对象又叫隐含对象,JSP中共有9个内置对象。那么什么是内置对象呢,既不需要预先声明就可以在脚本代码和表达式中随意使用下面为大家介绍JSP内置对象1.request:封装了由WEB浏览器或其他客户端生成HTTP请求的细节(参数,属性,头标和数据)请求的作用域为:用户的请求周期2.响应:封装了返回到HTTP客户端的输出,想页面作者提供设置响应头标和状态码的方式3.pa...

2020-12-26 15:56:54 146

原创 blog(1):项目搭建

项目搭建模块目录mavn依赖blog-webblog-dal配置项目测试使用aop进行日志记录日志表创建以及service提供使用aop进行日志记录全局异常处理引入spring-security一些坑参考模块目录模块之间依赖关系blog-web --> blog-service —> blog-dal —> blog-commonmavn依赖blog-web<?xml version="1.0" encoding="UTF-8"?><project xml

2020-12-05 15:16:10 358

原创 数据结构和算法九:查找算法

文章目录常用查找算法线性查找二分查找常用查找算法顺序(线性)查找二分查找插值查找斐波那契查找线性查找不要求数列有序,遍历数列,找到就返回即可二分查找要求序列有序package com.atguigu.search;import java.util.ArrayList;import java.util.List;public class Search { public static void main(String[] args) { int[] ar

2020-08-19 21:50:47 104

原创 数据结构和算法八:排序算法

文章目录排序的分类时间复杂度常见的时间复杂度平均时间复杂度和最坏时间复杂度空间复杂度排序的分类内部排序:指将需要处理的所有数据都加载到内存中进行排序外部排序:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序常见的排序算法分类:时间复杂度一般情况下,算法中的基本操作语句的重复执行次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大是,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n))

2020-08-10 21:16:38 302

原创 数据结构和算法七:递归

文章目录简介递归可以解决的问题递归需要遵守的规则简介简单的讲:递归就是方法自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂的问题,同时让代码变得简洁。递归可以解决的问题各种数学问题: 8皇后问题,汉诺塔,阶乘问题,迷宫问题,球和篮子的问题各种算法中也会使用到,比如:快排,归并排序,二分查找,分治算法等将用栈解决的问题,改为使用递归,使代码更简洁递归需要遵守的规则执行一个方法时,就创建一个新的受保护的独立空间(栈空间)方法的局部变量是独立的,不会相互影响如果方法中使用

2020-07-29 21:33:04 227

原创 数据结构和算法六:栈

文章目录简介栈的应用场景用数组实现栈用链表实现栈使用栈实现综合计算器简介栈的英文为(stack)栈是一个先入后出(FILO)的有序列表栈是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一段,为变化的一段,称为栈顶,另一端为固定的一段,称为栈底根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素先删除,最先放入的元素最后删除栈的应用场景子程序的调用:在跳往子程序前,会先将下个指令的地址存在堆栈中,直到子程

2020-07-26 19:04:53 264

原创 数据结构和算法五:单向环形链表和约瑟夫问题

文章目录约瑟夫问题约瑟夫问题设编号为1,2,…n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的按个人出列,它的下一位又从1开始报数,数到m的那个人又出列,一次类推,知道所有人出列为止,由此产生一个出队编号的序列。假设:n = 5 即有5个人k = 1 从第一个人开始报数m = 2 数两下出队顺序2->4->1->5->3采用单向环形链表解决约瑟夫问题构建一个单向环形链表1.先创建第一个节点,让first指向该节点,并形成

2020-07-25 14:18:53 316

原创 数据结构和算法四:双向链表

文章目录

2020-07-25 12:08:13 134

原创 数据结构和算法三:单链表

文章目录1.简介2.应用实例2.1直接添加到链表尾部2.2根据排名将英雄插入到指定位置2.3修改节点信息(根据编号修改)2.4删除节点3.总结思考3.1整体代码1.简介链表是以节点的方式来存储每个节点包含data域,next域:指向下一个节点内存中的物理位置是不连续的链表分带头节点的链表和无头节点的链表2.应用实例使用带head头的单向链表实现–水浒英雄排行榜管理完成对英雄人物的增删改查操作第一种:直接添加到链表尾部第二种:根据排名将英雄插入到指定位置(如果对应位置已经存在英雄,

2020-07-18 19:39:33 230

原创 数据结构和算法二:队列

文章目录1.简介2.数组模拟队列使用数组模拟环形队列1.简介队列是一个有序列表,可以用数据或是链表来实现遵循先入先出的原则2.数组模拟队列弊端:数组不能够重复使用优化:使用环形队列package com.atguigu.queue;import javax.sound.midi.Soundbank;import java.util.Scanner;public class ArrayQueueDemp { public static void main(String[]

2020-07-18 16:20:45 126

原创 数据结构和算法一:稀疏数组

文章目录1.数据结构分类2.稀疏数组2.1代码实现1.数据结构分类数据结构包括:线性结构和非线性结构线性结构线性结构是最常用的数据结构,其特点是数据元素之间存在一对一的线性关系线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构。顺序存储的线性表称为顺序表,顺序表中的存储元素时连续的链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息线性结构常见的有:数组、队列、链表和栈非线性结构非线性结构包括:二维数组,多维数组,广义表,

2020-07-18 11:01:02 165

原创 Java NIO

文章目录Java NIO简介NIO 与 IO的主要区别通道和缓冲区缓冲区的数据读取直接缓冲区与非直接缓冲区通道(Channel)Java NIO简介Java NIO(New IO / Non Blocking IO),从java1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API.NIO与原来的IO有同样的作用和目的,但是使用方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作NIO 与 IO的主要区别IONIO

2020-07-17 19:42:05 254

原创 Java JUC

文章目录volatile 关键字-内存可见性原子变量-CAS算法ConcurrentHashMap锁分段机制CountDownLatch闭锁实现Callable接口Lock同步锁Condition控制线程通信线程八锁线程按序交替ReadWriteLock读写锁线程池线程调度ForkJoinPool分支/合并框架 工作窃取volatile 关键字-内存可见性package com.atguigu.juc;/*** 一、volatile 关键字:当多个线程操作共享数据时,可以保存内存中的数据可见。*

2020-07-15 00:14:38 414

原创 Maven 报错:Process terminated

今天在整理一个老旧项目时,发生了maven错误百度了一下没有解决问题点击查看报错信息发现这么一个提示[ERROR] [ERROR] The projects in the reactor contain a cyclic reference: Edge between 'Vertex{label='com.zto:doraemon-interface:1.0-SNAPSHOT'}' and 'Vertex{label='com.zto:doraemon-service:1.0-SNAPSHOT'

2020-07-13 20:08:25 15652

原创 Java反射机制

文章目录Java反射机制概述Java反射机制提供的功能反射相关API理解Class类并获取Class实例类的加载与ClassLoader的理解创建运行时类的对象获取运行时类的完整结构调用运行时类的指定结构反射的应用:动态代理Java反射机制概述Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对

2020-07-12 17:35:56 92

原创 Java网络编程

文章目录1.网络编程概述2. 网络通信要素概述3.通信要素1:IP和端口号4.通信要素2:网络协议5.TCP网络编程6.UDP网络编程7.URL编程1.网络编程概述java实现了一个跨平台的网络库,程序员面对的是一个同一的网络编程环境目的:直接或间接的通过网络协议与其他计算机实现数据交换,进行通讯两个主要问题:如何准确定位网络上一台或多台主机;定位主机上的特定的应用找到主机后如何进行高效的数据传输2. 网络通信要素概述通信双方地址IP端口号一定的规则(网络通信协

2020-07-08 22:03:41 160

原创 JavaIO

Java泛型1.什么是泛型2.在集合中使用泛型3.自定义泛型结构泛型类泛型接口泛型方法4.泛型在继承上的体现5.通配符的使用6.泛型应用举例1.什么是泛型所谓泛型,就是允许在定义类、接口时通过一个标识表示类中某个属性的类型或某个方法的返回值及参数类型。这个类型参数将在使用时确定。2.在集合中使用泛型集合接口或集合类在jdk5.0时都修改为带泛型的结构在实例化集合类时,可以指明具体的泛型类型指明完成以后,在集合类或接口中凡是定义类或接口时,内部结构使用到类的泛型的位置,都指定为实例化的泛型类

2020-07-05 17:17:52 305

原创 Java集合框架

Java集合框架概述Collection接口方法Iterator迭代器接口使用foreach循环遍历集合元素Collection子接口一:ListArrayList源码分析小结LinkedList源码分析Vector源码分析Collection子接口二:Set无序性:不可重复性:添加元素的过程,以HashSet为例TreeSetMap接口Collections工具类概述数组在内存存储方面的特点:- 数组初始化以后,长度就确定了- 数组声明的类型,就决定了进行元素初始化时的类型数组在存储方面的弊端:

2020-06-30 00:01:15 436

原创 Java注解(Annotation)

Java注解注解(Annotation)概述常见的Annotation实例自定义AnnotationJDK中的元注解利用反射获取注解信息JDK8中注解的新特性注解(Annotation)概述出现在代码里的特殊标记。可以在编译,类加载,运行时被读取,并执行相应的处理。Annotation可以像修饰符一样被使用,可用于修饰包,类,构造器,方法,成员变量,参数,局部变量的声明,这些信息被保存在Annotation的"name = value"对中未来的开发模式都是基于注解的。框架=注解 + 反射 + 设

2020-06-27 17:13:32 237

原创 Java常用类解析总结

Java常用类字符串相关的类String的特性JDK8之前的日期时间APIJDK8中新日期时间APIJava比较器System类Math类BigInteger与BigDecimal字符串相关的类String的特性String类:代表字符串。Java程序中所有的字符串字面量都作为此类的实例实现String是一个final类,代表_不可变的字符序列_字符串是常量,用双引号引起表示。他们的值在创建之后不能更改String对象的字符内容是存储在一个字符数组 value[]中的public fina

2020-06-26 23:46:50 550

原创 多线程

文章目录1.基本概念:程序、进程、线程1.概念2.使用多线程的优点3.何时需要多线程2.线程的创建和使用1.线程创建的两种方式比较创建线程的两种方式:2.Thread类的有关方法3.线程的调度4.线程的优先级3.线程的生命周期4.线程的同步5.线程的通信6.JDK5.0新增线程创建方式1.基本概念:程序、进程、线程1.概念程序(program)是为了完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。进程(process)是程序的一次执行过程,或是正在运行的一个程序。是一个

2020-06-19 23:17:15 449

原创 线程通信引发的 java.lang.IllegalMonitorStateException 血案

文章目录问题抛出**经典例题:生产者/消费者问题**实现思路错误代码一览代码解释错在哪?Why?谜底揭晓如何解决正确代码一览今天在联系多线程的时候出现了 java.lang.IllegalMonitorStateException 异常,过了很久才意识到问题,记录一下。问题抛出经典例题:生产者/消费者问题生产者(Productor)将产品交给店员(Clerk),而消费者(Customer)从店员处取走产品,店员一次只能持有固定数量的产品(比如:20),如果生产者试图生产更多的产品,店员就会叫

2020-06-19 00:20:08 465

原创 CentOS7下安装配置Redis

CentOS7下安装配置Redis1.下载上传Redis到服务器2.安装Redis1.解压:2.安装gcc编译环境3.进入redis-5.0.5目录,进行安装3.配置Redis1.在utils目录下,copy redis_init_script到/etc/init.d。将redis作为开机自启动2.创建/usr/local/redis,用于存放配置文件3.copy redis.conf4.修改re...

2020-04-15 10:22:39 123

原创 nginx.conf核心配置文件

#设置worker进程的用户,会涉及到nginx操作目录或文件的一些权限user root;#worker进程工作数设置,一般来说,设置为cpu数量worker_processes 2;# 日志级别 debug info notice warn error crit#error_log logs/error.log;#error_log logs/error.log no...

2020-04-14 17:40:11 112

原创 同步与异步,阻塞与非阻塞

同步与异步,阻塞与非阻塞1. 同步阻塞:2.同步非阻塞:3.异步阻塞:4.异步非阻塞:个人见解:上一节课程中我们提到了阻塞与非阳塞、陟与步, 很多同学可能会认为同步就是阻塞,步就是非阳塞,非也非也~-这一 节咱们来聊 -聊他们的概念,有啥区别,如果学习过的可以当做复习,如果不太清楚的 ,可以好好的了解一番 ,因为这些概念往往在面试过程中有可能会被面试官问到。这四个概念两两组台,会形成4个新的概...

2020-04-14 17:24:17 150

原创 CentOS7下Nginx安装与使用

CentOS7下Nginx安装与使用1.下载nginx2.安装依赖环境1.安装gcc环境2.安装PCRE库,用于解析正则表达式3.zlib压缩和解压缩依赖4.SSL安全的加密和套接字协议层,用于HTTP安全传输,也就是https3.解压4.创建临时目录5.配置nginx6.编译7.安装8.打开浏览器,访问对应的ip地址即可9.Nginx中文文档使用Nginx有段时间了,也装了几台机器,每次装都...

2020-04-14 16:57:51 110

原创 centOS7 离线安装配置MaiaDB

1.下载MaiaDB安装包,并上传至云服务器galera,libaio环境是后面安装的,并不是从官网下载的2.按照顺序安装依赖环境包yum install rsync nmap lsof perl-DBI ncrpm -ivh jemalloc-3.6.0-1.e17.x86_64.rpmrpm -ivh jemalloc-devel-3.6.0-1....

2020-03-25 11:05:16 325

原创 centOS7 安装配置jdk

一、安装前检查1.先确认没有默认安装JDKjava -version如果是虚拟机,一般会默认安装OpenJDK,云服务器一般没有2.检查系统安装的OpenJDKrpm -qa|grep openjdk -i3.删除openjdk的安装包rpm -e --nodeps 需要删除的软件二、正式安装1.新建jdk安装目录mkdir /usr/java2.上传...

2020-03-25 10:35:05 106

原创 centOS7 MySQL安装与配置

1.下载并安装 MySQL 官方的 Yum Repositorywget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpmyum -y install mysql57-community-release-el7-10.noarch.rpmyum -y install mysql-comm...

2020-03-25 10:20:02 82

原创 centOS7防火墙配置

1.关闭 firewall 防火墙systemctl stop firewalld.service2.禁止 firewall 开机自启动systemctl disable firewalld.service3.查看 firewall 防火墙状态systemctl status firewalld.service结果:4.安装 iptablesyum ins...

2020-03-25 10:15:19 133

原创 Linux常用命令详解

1.Linux命令的普遍语法格式命令格式: 命令 【-选项】 【参数】2、目录处理命令1.显示目录文件命令: ls语法: ls 选项【-ald】【文件或目录】     -a 显示所有文件,包括隐藏文件     -l 详细信息显示     -d仅显示目录名,而不显示目录下的内容列表     -h 人性化显示(hommization)     -i 查看任意一个文...

2020-03-25 10:09:45 168

原创 V1.0.0开发纪要(1)--数据表设计及分析

前一阵在本地存了一些redis,vue的学习笔记,还有工作中的一些记录,结果手误全删了,第二天打开文件夹我蒙了。哎~可惜。于是乎又重新回归有道云笔记,真香~。网易云笔记里面还有些关于服务器环境搭建的笔记,后面找时间还是放在CSDN上,省的再弄丢了。好了,不多BB,正文开始~上次说到第一版本只要实现基础功能即可,追求的是小而美,后续的迭代中,准求的才是大而全。功能涉及到的表有三张,tl_...

2020-01-09 22:40:21 106

空空如也

空空如也

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

TA关注的人

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