随记
zhaoy1121
这个作者很懒,什么都没留下…
展开
-
SpringBoot 16 定时任务
1:Scheduled 定时任务器scheduled定时任务器:是Spring3.0以后自带的一个定时任务器。2:修改pom文件添加依赖<!-- 添加 Scheduled 坐标 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> </原创 2021-04-26 23:39:43 · 102 阅读 · 0 评论 -
SpringBoot 15 ehcache
1:修改pom.xml文件,添加依赖<!-- Spring Boot 缓存支持启动器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency>原创 2021-04-26 00:15:55 · 111 阅读 · 0 评论 -
Springboot 14 监控中心
1:什么是监控中心针对微服务服务器监控,服务器内存变化(堆内存、线程、日志管理等)、检测服务配置连接地址是否可用(模拟访问、懒加载)、统计Spring容器中bean的数量、统计接口。2:两种监控中心模式1、Actuator:没有界面,返回json格式。2、AdminUI:底层使用Actuator监控应用,实现可视化界面。3:实例1(Actuator)...原创 2021-04-21 22:06:15 · 147 阅读 · 0 评论 -
SpringBoot 13 热部署
1:原理采用重启机制,因为SpringMVC需要重新装配。2:修改pom.xml文件,添加依赖<!--添加热部署--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <op原创 2021-04-13 00:19:46 · 88 阅读 · 0 评论 -
SpringBoot 12 mybatis分页插件
1:原理底层修改SQL语句。2:修改pom.xml文件,添加依赖<!-- 整合mybatis分页插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <versi原创 2021-04-12 00:11:46 · 110 阅读 · 0 评论 -
SpringBoot 11 jta+atomikos解决分布式事务
1:JTAJTA(java Transaction API)是JavaEE 13 个开发规范之一。java 事务API,允许应用程序执行分布式事务处理——在两个或多个网络计算机资源上访问并且更新数据。JDBC驱动程序的JTA支持极大地增强了数据访问能力。事务最简单最直接的目的就是保证数据的有效性,数据的一致性。2:atomikosAtomikos TransactionsEssentials是实现JTA事务管理的第三方管理工具,是一个为Java平台提供增值服务的并且开源类事务管理器。3:..原创 2021-04-11 22:04:19 · 414 阅读 · 0 评论 -
SpringBoot10 多数据源(分包)
1:配置application.ymlserver: port: 8080spring: profiles: dev datasource: ###datasource1 datasourceipp1: jdbc-url: jdbc:mysql://localhost:3306/ipp1?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useS原创 2021-04-09 00:18:59 · 214 阅读 · 0 评论 -
SpringBoot09 整合mybatis
1:修改pom.xml文件,添加依赖。 <!-- 整合mybatis --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependenc原创 2021-04-09 00:07:33 · 75 阅读 · 0 评论 -
SpringBoot07 方法异步执行
1:@EnableAsync开启异步调用,扫描同级包,看同级包内的文件的方法上是否有@Async注解。package com.zhaoy;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.scheduling.annotation.EnableAsync原创 2021-04-04 23:49:57 · 75 阅读 · 0 评论 -
SpringBoot05 利用AOP记录日志
1:pom.xml<!-- 整合AOP --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>2:@Aspect当前类标识为一个切面供容器读取。...原创 2021-03-31 23:55:27 · 100 阅读 · 0 评论 -
SpringBoot04 整合log4j
1:整合log4jpom: <!-- 整合log4j --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j</artifactId> <version>1.3.8.RELEASE<原创 2021-03-31 23:39:07 · 103 阅读 · 0 评论 -
SpringBoot03 全局捕获异常
新建捕获异常类,使用@ControllerAdvice注解扫描包,使用@ExceptionHandler注解捕获指定类型的异常。1:@ControllerAdvice扫描需要捕获异常的包,比如:@ControllerAdvice(basePackages = "com.zhaoy.controller")。2:@ExceptionHandler指定捕获异常的类型,比如:@ExceptionHandler(RuntimeException.class)3:实例** * 全局捕获异常原创 2021-03-30 23:48:13 · 118 阅读 · 0 评论 -
SpringBoot 02
1:@RestController表示该类中所有方法返回json格式 @Controller+@ResponseBody。是Spring4.0提供的。2:Springboot启动原理SpringMVC注解方式启动,内置HTTP服务器(默认Tomcat)。3:@EnableAutoConfiguration作用:扫包范围,默认在当前类里。4:@ComponentScan配置扫包范围,如:@ComponentScan("com.zhaoy.controller")5:@Sprin原创 2021-03-30 23:18:04 · 91 阅读 · 0 评论 -
SpringBoot 01
1:为什么要用到SpringBoot可以解决Jar包冲突问题、传统项目框架整合起来太繁琐(SSM)。2:什么是SpringBootSpringBoot是一个快速开发框架,能够帮助我们快速整个第三方框架(Maven依赖关系,使用Maven继承机制实现),内置嵌入HTTP服务器(Tomcat),最终以Java应用程序进行执行。3:SpringBoot与SpringCloud关系SpringBoot是一个快速开发框架,完全注解化。SpringCloud是一套目前最完整微服务解决框架,功能非常强原创 2021-03-24 22:46:37 · 90 阅读 · 0 评论 -
CentOS 安装elasticsearch
1:向虚拟机中导入安装包2:给安装包赋予权限3:安装4:配置elasticsearch.yml文件,使ES可以通过IP地址访问。5:在/etc/init.d/下使用./elasticsearch start命令启动ES。6:查看ES状态,发现没有正常运行。7:查看elasticsearch日志8:更改/etc/security/lomits....原创 2020-03-07 21:52:59 · 167 阅读 · 0 评论 -
CentOS安装JDK
1:向虚拟机中导入安装包2:向安装包添加权限3:安装JDK4:验证原创 2020-03-07 21:30:07 · 139 阅读 · 0 评论 -
CentOS配置静态IP
1:编辑网卡配置文件2:添加配置信息3:重启网络4:查看网址5:验证原创 2020-03-07 21:24:27 · 96 阅读 · 0 评论 -
Linux 压缩和删除文件夹文件内时提示参数列表过长
1:压缩压缩一个45G的文件夹,里面包含大约20万个文件,使用一般的命令会提示参数列表过长,无法进行压缩。解决命令:find /files/-name '*' -print | zip files -@2:删除删除这个文件夹时,提示参数列表过长,无法进行删除。解决命令:find /files/ -name "*" -print0|xargs -0 rm –rf...原创 2020-02-11 23:37:21 · 1339 阅读 · 0 评论 -
ssh命令免密码登录
1:生成key,输入命令ssh-keygen,接着默认按回车。2:输入命令 ssh-copy-id ip地址3:输入另一台服务器密码4:验证免密码登录注意:当两台服务器用户名不一样时,需要更改/.ssh/config文件...原创 2020-01-07 22:39:59 · 349 阅读 · 0 评论 -
HashMap 底层简单实现
HashMap是由数组和链表组成,数组存放链表头。存放数据需要键值对(key和value),根据key并通过hashCode()方法生成哈希码,再通过使用myHash()方法生成哈希值。通过哈希值找到数组位置(table[hash])对应的链表。如果存在key,那么覆盖value,如果不存在,则建立新节点放入链表尾端。数组长度一般对定义为2的整数幂。myHash()方法会有两种方式:(1)...原创 2019-05-25 13:38:08 · 144 阅读 · 0 评论 -
TreeMap 排序
1:key值是基本数据类型在声明treeMap时创建匿名内部类(Comparator)并实现比较器方法(compare())。package Conllection;import java.util.Comparator;import java.util.Map;import java.util.TreeMap;/** * TreeMap排序 * * @author ...原创 2019-05-25 23:43:00 · 212 阅读 · 0 评论 -
IO 图片复制
流分为字节流和字符流。字节流是按照字节读取数据。字符流按照字符读取数据,因为文件的编码不同,从而有了对字符进行高效操作的字符流对象。字符流底层还是基于字节流操作,自动搜寻了指定的码表。IO的复制操作:先把文件读取到程序,然后再把程序输出到文件。package IO;import java.io.ByteArrayInputStream;import java.io.ByteArra...原创 2019-05-26 12:48:00 · 207 阅读 · 0 评论 -
Lambda 表达式
Lambda表达式实际上就是一个接口的实现。这个接口必须只有一个需要实现的方法,一般称这个接口为函数式接口。当这个接口被使用的次数非常少的时候,我们就可以使用Lambda表达式来实现。这样有利于简化代码。package Thread;/** * Lambda 表达式 * * @author zhaoy * */public class Test05_Lambda { pu...原创 2019-05-27 13:09:02 · 107 阅读 · 0 评论 -
List 底层简单实现
List 容器实际上就是用数组模拟的容器,使用泛型可以规范数组管理。首先开辟一个Object类型的数组,默认长度为10,或者自己定义长度。add()方法:向数组的数据末端添加新数据,如果数组长度不够会使用扩容方法(原长度+原长度/2)。get()方法:根据索引值获取数组内容。set()方法:根据索引值和要设置的数据覆盖原来的数据。remove()方法:实际上就是数组的拷贝,把后...原创 2019-05-23 21:36:58 · 404 阅读 · 0 评论 -
网络编程:UDP——接收和发送数据
使用UDP进行网络编程需要两个关键的类:DatagramSocket和DatagramPacket。DatagramSocket:用于创建发送端或者接收端的套接字,并指定所使用的端口。DatagramPacket:用于接收或者发送的数据包。在进行网络编程的过程中一切都是以字节数组为核心的编程,在发送端把字节数组封装成数据包发送给接收端。在接收端把接收的数据包拆封成数据数组,然后在把字节...原创 2019-06-14 22:53:14 · 1318 阅读 · 0 评论 -
网络编程:使用UDP+多线程实现双向交流
发送端和接收端的基本步骤都差不多,加入多线程和循环可以实现多次的接收和发送。package Net;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.SocketException;/** * 接收端 * * @...原创 2019-06-16 12:26:44 · 528 阅读 · 0 评论 -
网络编程:TCP通信的基本流程
使用TCP进行通信需要客户端先与服务端进行连接才可以通信。TCP编程面向的是IO流,它使用IO流进行通信。服务端基本流程:(1)使用ServerSocket指定端口创建服务器。(2)使用Socket监听是否有客户端连接,ServerSocket的accept()方法是阻塞式的。(3)使用IO流接收数据。(4)使用IO流发送数据,并刷新输出流。(5)关闭IO流,先打开的后关...原创 2019-06-17 14:25:41 · 473 阅读 · 0 评论 -
网络编程:TCP简单实现群聊功能
使用TCP同时加入多线程和容器实现群聊功能。在服务端加入多线程,每当连接一个客户端就相当于为这个客户端开辟一个可以读信息和发送信息的服务。要实现群聊需要借助容器,有客户端连接时,把这个客户端放入容器,发送信息时遍历这个容器,向这个容器内的客户端逐个发送消息。在客户端加入多线程,想要实现客户端的随时发消息和随时收消息可以加入一个发送线程和接收线程。发送线程通过IO流向服务端发送线程,接收线程...原创 2019-06-18 12:15:58 · 2286 阅读 · 0 评论 -
XML的SAX解析
XML是一种可扩展标记语言,可以在XML文件中存储参数,可以用于当做配置文件来使用。解析XML文件时,解析文档类需要继承DefaultHandler类,并需要重写startElement()、characters()等方法。在处理文件时需要注意空格的问题。实际上解析XML文件时是以“流”的形式解析。它会把空格当做文件的内容来解析,所以必须要对空格、空行进行处理,防止覆盖原来的信息。pac...原创 2019-06-22 20:59:53 · 297 阅读 · 0 评论 -
使用DTD约束XML
文档类型定义(DTD)是用来定义XML文档结构的,它可以在文档内部声明也可以在外部引用。声明内部的DOCTYPE:<!DOCTYPE 根元素 [元素声明]>PCDATA表示被解析的字符数据,会被解析器解析的文本。CDATA表示字符数据,不会被解析器解析的文本。声明元素:<!ELEMENT 元素名称 (元素内容)>数量词:+表示一次或多次;?表示一...原创 2019-06-23 13:13:49 · 238 阅读 · 0 评论 -
使用dom4j解析XML文件
dom4j是一个简单、灵活的开源库,具有性能优异、功能强大、使用简单的特点。使用dom4j需要下载jar文件。解析XML文件步骤:(1)创建SAXReader对象,用于读取XML文件。(2)读取XML文件,获得Document对象。(3)获取根元素。(4)根据根元素,使用迭代器,迭代根元素下面的子元素。package zhao.text;import java.io....原创 2019-06-23 14:16:06 · 278 阅读 · 0 评论 -
LinledList 底层简单实现
LinkdeList底层是由链表实现的,使用链表会有较高的增删效率,但是查找效率会比较低。使用泛型会有利于方法的重用性。package Conllection;/** * LinkedList 链表节点 * * @author zhaoy * */public class Node { Node previous;// 上一个节点 Node next;// 下一个节...原创 2019-05-24 21:44:09 · 266 阅读 · 0 评论