自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringBoot整合Seata1.5.1

springBoot整合seata1.5.1,nacos做注册中心和配置中心

2022-08-14 16:44:33 2640 2

原创 常用的Java 工具类

1、org.apache.commons.io.IOUtilscloseQuietly()toString()copy()toByteArray()write()toInputStream()readLines() copyLarge()lineIterator()readFully()2、org.apache.commons.io.FileUtilsdeleteDirectory()readFileToString()deleteQuietly()copyFile()w

2021-06-28 10:58:04 361

原创 CORS跨域问题原因和解决方案

Springboot跨域问题,是当前主流web开发人员都绕不开的难题。但我们首先要明确以下几点- 跨域只存在于浏览器端,不存在于安卓/ios/Node.js/python/ java等其它环境- 跨域请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了。- 之所以会跨域,是因为受到了同源策略的限制,同源策略要求源相同才能正常进行通信,即协议、域名、端口号都完全一致。浏览器出于安全的考虑,使用 XMLHttpRequest对象发起 HTTP请求时必须遵守同源策略,否则就是跨域的HTT

2021-06-21 11:22:13 18276

原创 SpringBoot 打成的 jar 包和普通的 jar 包有什么区别

Spring Boot 中默认打包成的 jar 叫做可执行 jar,这种jar包可以通过可以通过命令(java -jar xxx.jar)来运行的,但这种jar包不能被其他项目所依赖,因为它和普通 jar 的结构不同,即使被依赖了也不能直接使用其中的类。普通的jar包,解压后直接就是包名,包里就是我们的代码,而 Spring Boot 打包成的可执行 jar 解压后,在 \BOOT-INF\classes 目录下才是我们的代码,因此无法被直接引用。如果非要引用,可以在 pom.xml 文件中增加配置,将

2021-06-21 11:08:36 2489 4

原创 中文乱码解决

1、页面上中文内容乱码:编辑器的编码确保是UTF-8,在页面上使用<meta charset="UTF-8" />2 、Java连接数据库加入数据时:创建数据库时指定编码,UTF8,UTF8MB4,老版本(8之前)JDBC连接字符串指定编码useUnicode=true&chracterEncoding=UTF83、 页面参数传到Servlet中是乱码get:在地址栏中提交中文参数,在Tomcat的server.xml中,找到Connector标签,增加URIEncoding=

2020-11-23 21:06:08 4375

原创 idea创建动态web项目

创建JavaWeb第一步点击左上角的File–>New–>Project第二步找到Java Enterprise之后,在Application Sever中找到自己的Tomcat选择好后,点击OK,勾选中Web Application点击next下一步finish完成创建第三步在WEB-INF下创建classes和lib文件夹,名字不可改classes用于存放编译后的class文件lib用于存放引入的jar包第四步在File中找到Project Struc

2020-11-15 00:30:52 2538

原创 事务

事务的应用场景说明什么是事务: 在实际的开发过程中,一个业务操作如:转账,往往是要多次访问数据库才能完成的。转账是一个用户扣钱,另一个用户加钱。如果其中有一条 SQL 语句出现异常,这条 SQL 就可能执行失败。事务执行是一个整体,所有的 SQL 语句都必须执行成功。如果其中有 1 条 SQL 语句出现异常,则所有的SQL 语句都要回滚,整个业务执行失败。手动提交事务MySQL 中可以有两种方式进行事务的操作:手动提交事务自动提交事务手动提交事务的 SQL 语句功能SQL

2020-11-08 00:37:23 267

原创 MySQL多表查询

表连接查询什么是多表查询多表查询的作用:比如:我们想查询孙悟空的名字和他所在的部门的名字,则需要使用多表查询。如果一条 SQL 语句查询多张表,因为查询结果在多张不同的表中。每张表取 1 列或多列。多表查询的分类:笛卡尔积现象什么是笛卡尔积现象什么是笛卡尔积:-- 需求:查询所有的员工和所有的部门select * from emp,dept;如何清除笛卡尔积现象的影响我们发现不是所有的数据组合都是有用的,只有员工表.dept_id = 部门表.id 的数据才是有用的。所以需

2020-11-07 22:39:45 147

原创 数据库备份和还原

备份与还原的语句备份格式: DOS 下,未登录的时候。这是一个可执行文件 exe,在 bin 文件夹备份格式: DOS 下,未登录的时候。这是一个可执行文件 exe,在 bin 文件夹mysqldump -u 用户名 -p 密码 数据库 > 文件的路径还原格式:mysql 中的命令,需要登录后才可以操作USE 数据库;SOURCE 导入文件的路径;备份操作:-- 备份 day21 数据库中的数据到 d:\db.sql 文件中mysqldump -uroot -proot day2

2020-11-07 18:18:16 244

原创 MySQL约束

DQL 查询语句排序SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名 [ASC|DESC];ASC: 升序,默认值DESC: 降序-- 查询所有数据,使用年龄降序排序select * from student order by age desc;组合排序SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名 1 [ASC|DESC], 字段名 2 [ASC|DESC];-- 查询所有数据,在年龄降序排序的基础上,如果年龄

2020-11-07 17:58:12 229

原创 SQL

什么是 SQLStructured Query Language 结构化查询语言SQL 作用是一种所有关系型数据库的查询规范,不同的数据库都支持。通用的数据库操作语言,可以用在不同的数据库中。不同的数据库 SQL 语句有一些区别SQL 语句分类DDL(Data Definition Language)数据定义语言用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等DML(Data Manipulation Language)数据操作语言用来对数据库

2020-11-05 22:58:54 230

原创 ie不支持startWith和endWith

在IE浏览器中使用了endWith()方法,发现不支持,百度后总结如下:$(function(){ //startsWith方法 String.prototype.startsWith = String.prototype.startsWith || function (str) { var reg = new RegExp("^" + str); return reg.test(this); } //endWith方法 String.prototype.endsWith =

2020-11-04 15:05:59 718

原创 Stream流、方法引用

Stream流说到Stream便容易想到I/O Stream,而实际上,谁规定“流”就一定是“IO流”呢?在Java 8中,得益于Lambda所带来的函数式编程,引入了一个全新的Stream概念,用于解决已有集合类库既有的弊端。Stream遍历集合public class DemoStream { public static void main(String[] args) { //创建一个List集合,存储姓名 List<String> list

2020-11-04 12:44:26 220

原创 常用函数式接口

Supplier接口java.util.function.Supplier<T> 接口仅包含一个无参的方法: T get() 。用来获取一个泛型参数指定类型的对象数据。由于这是一个函数式接口,这也就意味着对应的Lambda表达式需要“对外提供”一个符合泛型类型的对象数据。import java.util.function.Supplier;public class DemoSupplier { private static String getString(Supplier<Str

2020-11-03 22:21:37 102

原创 函数式接口

函数式接口概念函数式接口在Java中是指:有且仅有一个抽象方法的接口。函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现就是Lambda,所以函数式接口就是可 以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导。备注:“语法糖”是指使用更加方便,但是原理不变的代码语法。例如在遍历集合时使用的for-each语法,其实 底层的实现原理仍然是迭代器,这便是“语法糖”。从应用层面来讲,Java中的Lambda可以被当做是匿名

2020-11-02 23:50:19 4185

原创 网络编程

网络编程入门软件结构C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。两种架构各有优势,但是无论哪种架构,都离不开网络的支持。网络编程,就是在一定的协议下,实现两台计算机的通信的程序。网络通信协议网络通信协议: 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽

2020-10-31 20:56:50 188 1

原创 缓冲流、转换流、序列化流

缓冲流概述缓冲流,也叫高效流,是对4个基本的FileXxx 流的增强,所以也是4个流,按照数据类型分类:字节缓冲流:BufferedInputStream,BufferedOutputStream字符缓冲流:BufferedReader,BufferedWriter缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。字节缓冲流构造方法// 创建字节缓冲输入流BufferedInputStream bis = n

2020-10-30 22:22:49 73

原创 IO流

IO的分类根据数据的流向分为:输入流和输出流。输入流 :把数据从其他设备上读取到内存中的流。输出流 :把数据从内存 中写出到其他设备上的流。格局数据的类型分为:字节流和字符流。字节流 :以字节为单位,读写数据的流。字符流 :以字符为单位,读写数据的流。顶级父类们输入流输出流字节流字节输入流InputStream字节输出流OutputStream字符流字符输入流Reader字符输出流Writer字节流一切皆为字节一切文件数据(文本、图片、视

2020-10-29 22:32:38 118

原创 高并发下的接口幂等性解决方案!

一、背景我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。例如:前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果。我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱;发送消息,也应该只发一次,同样的短信发给用户,用户会哭的;创建业务订单,一次业务请求只能创建一个,创建多个就会出大问题。等等很多重要的情况,这些逻辑都需要幂等的特性来支持。二、幂等性概念幂等(idempotent、idempotenc

2020-10-29 09:15:22 188

原创 递归

递归概述递归:指在当前方法内调用自己的这种现象。递归的分类:递归分为两种,直接递归和间接递归。直接递归称为方法自身调用自己。间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。注意事项:递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。构造方法,禁止递归递归的使用前提当调用方法的时候,方法的主体不变,每次调用方法的参数不同,可以使用递归栈内存溢出原因分

2020-10-28 23:42:21 12786 3

原创 Lambda表达式

冗余的Runnable代码传统写法当需要启动一个线程去完成任务时,通常会通过java.lang.Runnable接口来定义任务内容,并使用java.lang.Thread类来启动该线程。代码如下:public class Demo01Runnable { public static void main(String[] args) { // 匿名内部类 Runnable task = new Runnable() { @Override public void run()

2020-10-25 22:46:00 98

原创 多线程的等待唤醒机制

等待唤醒机制什么是等待唤醒机制这是多个线程间的一种协作机制。谈到线程我们经常想到的是线程间的竞争(race),比如去争夺锁,但这并不是故事的全部,线程间也会有协作机制。就好比在公司里你和你的同事们,你们可能存在在晋升时的竞争,但更多时候你们更多是一起合作以完成某些任务。就是在一个线程进行了规定操作后,就进入等待状态(wait()), 等待其他线程执行完他们的指定代码过后 再将其唤醒(notify());在有多个线程进行等待时, 如果需要,可以使用 notifyAll()来唤醒所有的等待线程。wait

2020-10-25 12:19:38 201

原创 线程安全和线程状态

线程安全如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。程序每次运行结果和单线程运行的结果是一样 的,而且其他的变量的值也和预期的是一样的,就是线程安全的。概述:原理:线程安全问题都是由全局变量及静态变量引起的。若每个线程中对全局变量、静态变量只有读操作,而无写 操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步, 否则的话就可能影响线程安全。线程同步当我们使用多个线程访问同一资源的时候,且多个线程中对资源有写的操作,就容易出现线程安

2020-10-24 19:10:30 179

原创 多线程

并发与并行并发:指两个或多个事件在同一个时间段内发生。并行:指两个或多个事件在同一时刻发生(同时发生)。在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多个程序同时运行,这在单 CPU 系统中,每一时刻只能有一道程序执行,即微观上这些程序是分时的交替运行,只不过是给人的感觉是同时运行,那是因为分时交替运行的时间是非常短的。而在多个 CPU 系统中,则这些可以并发执行的程序便可以分配到多个处理器上(CPU),实现多任务并行执行,即利用每个处理器来处理一个可以并发执行的程序,这样多个

2020-10-24 16:48:01 66

原创 Java异常

异常异常概念异常,就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是:异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运行.异常体系异常机制其实是帮助我们找到程序中的问题,异

2020-10-24 01:09:39 412

原创 集合框架

Collection接口java.util.Collection接口所有单列集合的最顶层的接口,里边定义了所有单列集合共性的方法任意的单列集合都可以使用Collection接口中的方法共性的方法: public boolean add(E e): 把给定的对象添加到当前集合中 。 public void clear() :清空集合中所有的元素。 public boolean remove(E e): 把给定的对象在当前集合中删除。 public boolean contains(E

2020-10-20 22:30:03 306 1

原创 接口、多态

接口概述接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么 接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法 (JDK 9)。 接口的定义,它与定义类方式相似,但是使用 interface 关键字。它也会被编译成.class文件,但一定要明确它并 不是类,而是另外一种引用数据类型。引用数据类型:数组,类,接口。接口的使用,它不能创建对象,但是可以被实现( implements ,类似于被继

2020-10-20 14:52:51 166

原创 数组

数组概念: 数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致。数组的定义方式一数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度];数组定义格式详解:数组存储的数据类型: 创建的数组容器可以存储什么数据类型。[] : 表示数组。 数组名字:为定义的数组起个变量名,满足标识符规范,可以使用名字操作数组。new:关键字,创建数组使用的关键字。数组存储的数据类型: 创建的数组容器可以存储什么数据类型。[长度]:数组的长度,表示数组容器中可以存储多少个元素。

2020-10-20 13:11:12 516

原创 引用类型用法总结

实际的开发中,引用类型的使用非常重要,也是非常普遍的。我们可以在理解基本类型的使用方式基础上,进一步 去掌握引用类型的使用方式。基本类型可以作为成员变量、作为方法的参数、作为方法的返回值,那么当然引用类 型也是可以的。class作为成员变量在定义一个类Role(游戏角色)时,代码如下:class Role { int id;//角色id int blood;//生命值 String name;//角色名称 //添加武器属性 Weapon wp; //添加

2020-10-13 13:04:57 144

原创 内部类

1.1 概述什么是内部类将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。成员内部类成员内部类 :定义在类中方法外的类。定义格式:class 外部类 { class 内部类{ } }访问特点内部类可以直接访问外部类的成员,包括私有成员。外部类要访问内部类的成员,必须要建立内部类的对象。创建内部类对象格式:外部类名.内部类名 对象名 = new 外部类型().new 内部类型();定义类:public class Person {

2020-10-13 00:18:31 80

原创 final关键字

修饰变量1. 局部变量——基本类型基本类型的局部变量,被final修饰后,只能赋值一次,不能再更改。代码如下:public static void main(String[] args) { // 声明变量,使用final修饰 final int a; // 第一次赋值 a = 10; // 第二次赋值 a = 20;// 报错,不可重新赋值

2020-10-12 23:50:13 1818

原创 对象内存分析

定义手机类: 定义测试类: }public class Phone { // 成员变量 String brand; //品牌 int price; //价格 String color; //颜色 // 成员方法 //打电话 public void call(String name) { System.out.println("给"+name+"打电话"); } //发短信 public void sendMessage(

2020-10-05 21:45:30 88

原创 Java代码使用commons-email实现163发邮件功能

1、创建springboot项目2、在pom文件中引入邮箱依赖 <!-- 邮件依赖 --> <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-email --> <dependency> <groupId>org.apache.commons</groupId> &lt

2020-09-17 01:40:24 762

原创 eureka和zookeeper的区别

eureka和zookeeper的区别注册中心规则每一个微服务启动的时候,都需要去注册中心注册(eureka或zookeeper或其他)同类服务注册的服务名必须相同,不同类服务注册的服务名一定不能相同(订单服务部署5台服务器,那么这5台微服务在注册中心中注册的服务名必须一致,例如ORDER)(商品服务部署4台服务器,那么这4台微服务在注册中心中注册的服务名必须一致,例如GOODS)(订单服务和商品服务注册的服务名一定不能相同,不能同为ORDER,也不能同为GOODS)eureka是什么eur

2020-07-31 21:52:14 633

转载 常用的默认端口号

端口号标识了一个主机上进行通信的不同的应用程序。1.HTTP协议代理服务器常用端口号:80/8080/3128/8081/90982.SOCKS代理协议服务器常用端口号:10803.FTP(文件传输)协议代理服务器常用端口号:214.Telnet(远程登录)协议代理服务器常用端口号:23HTTP服务器,默认端口号为80/tcp(木马Executor开放此端口)HTTPS(securely transferring web pages)服务器,默认端口号为443/tcp 443/udpTeln

2020-05-22 11:53:00 6115

原创 Tomcat目录详解

Tomcat bin目录 是存放启动和关闭tomcat脚本。其中.bat和.sh文件很多都是成对出现的,作用是一样的,一个是Windows的,一个是Linux。startup文件:主要是检查catalina.bat/sh 执行所需环境,并调用catalina.bat 批处理文件。启动tomcat。异常:打开可能有闪退的问题。原因可能有以下两点:缺少环境变量配置,startup会检查你的电脑环境变量是否有JAVA_HOME。已经开启了Tomcat容器,再次开启端口号会被占用。java.net.B

2020-05-21 19:51:22 1280

原创 HTTP详细协议解析

HTTP简介HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,H

2020-05-21 18:18:28 496

转载 jQuery选择器

jQuery选择器基础选择器 Basics1.根据标签名进行选择var input_query=$("input");2.根据id值选取var text11_query=$("#text11");3.根据class值进行选取var text11_query=$(".text11");4.同时选择多个符合条件的JQuery包装集用,号分隔条件var text_query=$("#text11,.text12");5.选择所有DOM元素var all_query=$("*");

2020-05-18 21:09:56 936

空空如也

空空如也

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

TA关注的人

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