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

原创 Springboot配置ElasticSearch

搜索功能,如果直接使用MySQL的like查询语句会影响系统的性能,所以使用es会显著的提升性能呢。创建spriingboot项目,在非关系型数据库中选中es,就会自动导入es的maven相关的包啦。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</art

2022-02-19 18:24:14 5818

原创 在docker中添加vim命令

先进入容器docker exec -it 容器名 /bin/bash然后发现不能进行vi和vim那么先使用国内的库mv /etc/apt/sources.list /etc/apt/sources.list.bak && \echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >/etc/apt/sources.list && \echo "deb http:

2022-02-19 13:49:33 709

原创 ElasticSearch使用docker启动自动关闭

看网上遇到的说虚拟内存不足vim /etc/sysctl.conf添加下面的内容vm.max_map_count=655360然后保存退出执行以下命令sysctl -p然后启动容器docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 --name ES 容器id/名字出现过端口不通情况,关闭了防火墙也没通,后来重启了下服务器就好了,可能是配置太差。。。...

2022-02-19 10:36:26 1540

原创 RabbitMQ延迟队列

rabbitmq中没有延迟队列但是可以使用TTL+死信队列进行消息延迟。作用:订单支付,超时后发送消息进行检查订单支付状态,如果未支付则取消订单回滚库存。为什么TTL+死信队列可以进行过期发送呢。其中TTL可以设置消息过期时间,Time To Live。而死信顾名思义则是遗言,则消息死亡时发送。消息成为死信的三种情况: 1. 队列消息长度到达限制; 2. 消费者拒接消费消息,basicNack/basicReject,并且不把消息重新放入原目标队 列,requeue=false;

2022-02-18 00:13:12 983

原创 MQ消息队列

MQ的优势:解耦合-MQ相当于一个中介,帮助生产者和消费者之间交互数据。任务异步处理:提高用户体验和系统吞吐量(单位时间内处理的请求)。削峰填谷:把秒杀订单的高峰写入数据库请求进行削峰,限制写入请求数目在一定的数量,慢慢的把所有请求都写入(填谷)保证数据库正常运行。常见的MQ产品:RabbitMQ、RocketMQ、ActiveMQ、KafkaRabbitMQ的6种模式:简单模式(点对点模式)、work模式、发布与订阅模式、Routing路由模式、Topics主题模.

2022-02-16 22:15:19 1141

原创 Nginx

Nginx是一个性能非常高的http服务器/反向代理服务器,电子邮件服务器。应用场景有以下:http 服务器。Nginx 是⼀个 http 服务可以独⽴提供 http 服务。可以做⽹⻚静态服务器。虚拟主机。可以实现在⼀台服务器虚拟出多个⽹站。例如个⼈⽹站使⽤的虚拟主机。反向代理,负载均衡。当⽹站的访问量达到⼀定程度后,单台服务器不能满⾜⽤户的请求时,需要⽤多台服务器集群可以使⽤ nginx 做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载⾼宕机⽽某台服务器闲置的情况。

2022-02-16 18:40:31 1581

原创 dubbo的特性和springCloud的区别

Dubbo 支持短连接大数据量的服务提供模式,但绝大多数情况下都是使用长连接小数据量的模式提供服务使用的。所以,对于类似于电商等同步调用场景多并且能支撑搭建Dubbo 这套比较复杂环境的成本的产品而言,Dubbo 确实是一个可以考虑的选择。但如果产品业务中由于后台业务逻辑复杂、时间长而导致异步逻辑比较多的话,可能Dubbo 并不合适。同时,对于人手不足的初创产品而言,这么重的架构维护起来也不是很方便。Spring Cloud由众多子项目组成,如Spring Cloud Config、Spring Clo

2022-02-04 16:31:47 451

原创 springcloud相关知识

1.负载均衡Ribbon因为Eureka中已经集成了Ribbon,所以我们无需引入新的依赖。直接修改代码:在RestTemplate的配置方法上添加 @LoadBalanced 注解:@Bean @LoadBalanced public RestTemplate restTemplate() { return new RestTemplate(); }修改调用方式,不再手动获取ip和端口,而是直接通过服务名称(配置的名称)调用:@GetMapping("/{i

2022-02-04 16:18:24 69

原创 springcloud配置

1. 集中式架构 当网站流量很小时,只需要一个应用,将所有的功能都部署在一起,以减少部署节点和成本。优点:系统开发速度快 维护成本低 适用于并发要求较低的系统 缺点:代码耦合度高,后期维护困难 无法针对不同模块进行优化 无法水平扩展 单点容错率低,并发能力差2.垂直拆分当访问量逐渐增大,单一应用无法满足需求,此时为了应对更高的并发和业务需求,我们根据业务功能对系统进行拆分:优点:系统拆分实现了流量分担,解决了并发问题 可以针对不同模块进

2022-02-04 15:34:29 659

原创 springboot获取git配置的动态获取

当我们把springboot的配置文件写在git上时,可以对配置的安全性得到提升。也方便对配置的修改。那么我们如何进行获取git上的配置呢?在git上创建配置文件配置文件的命名方式:{application}-{profifile}.yml 或 {application}-{profifile}.properties application为应用名称 profifile用于区分开发环境,测试环境、生产环境等需要进行一个微服务调用,我是进行注册中心eureka的调用。需要添加以

2022-02-04 13:27:57 1923

原创 maven加载springboot资源不了

springboot创建时遇到的maven问题

2021-12-08 22:00:33 481

原创 记录mybatis分页查询失败

在进行mybatis的分页查询时出现ExceptionInIntializerError错误代码信息如下在检查mapper和插件配置后,试着换了一下mybatis的版本后原版本替换后版本成功的进行了分页查询

2021-11-13 00:55:40 365

原创 redis分布式锁

什么是分布式锁? 线程锁:主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码 段。线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,比如synchronized是共享对象头,显示锁Lock是共享某个变(state)。 进程锁:为了控制同一操作系统中多个进程访问某个共享资源,因为进程具有独立性,各个进程无法访问其他进程 的资源,因此无法通过synchronized等线程锁实现进程锁。 ...

2021-10-26 21:42:32 59

原创 redis

redis是什么全称:REmote DIctionary Server(远程字典服务器)。是完全开源免费的,用C语言编写的, 遵守BCD协议。是一个高性能的(key/value)分布式内存数据库, 基于内存运行并支持持久化NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器。Redis 与其他 key - value 缓存产品有以下三个特点 : Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简

2021-10-26 20:40:31 65

原创 使用smartupload.jar进行文件的上传下载操作

我们在网上看见的很多图片资源和上传QQ头像是如何进行上传的呢,这里借助了smartupload的工具包,首先导入包,然后接下来前端页面会用到jsp所以要把jsp相关的工具包也导入。上传操作:前端页面使用表单post请求服务器 <form action="/onload" method="post" enctype="multipart/form-data"> <input type="text" name="uname"> 选择文件<input.

2021-09-26 16:42:02 377

原创 mysql进阶

事务(Transaction)是由一系列对系统中数据进⾏访问与更新的操作所组成的⼀个程序执行逻辑单元。 (1) 事务的语法 (2) 事务的特性 (3) 事务并发问题 (4) 事务隔离级别 (5) 不同隔离级别的锁的情况(了解) (6) 隐式提交1.1 事务的语法 1. start transaction; begin; 2. commit; 使得当前的修改确认 3. rollback; 使得当前的修改被放弃 1.2 事务的ACID特性 1. 原⼦性(Atomicity) 事务的原

2021-09-14 00:35:46 54

原创 html常用标签

HTML超文本标记语言后缀.html/.htm标签分类:围堵标签:开始和结束标签<html></html>。自闭和标签:<br/>标签是可以定义属性的,属性由键值对组成,值需要用双引号引起来,多个用空格隔开<属性名称 属性名1=”属性值”属性名2=”属性值”></属性名称>推荐全部小写。注释:<!--内容-->常用标签文本标签:<!--标题标签1级最大--><h.

2021-09-14 00:34:04 137

原创 数据库基础

关系型数据库:数据与数据之间有一定的关联度。Oracle数据库、Mysql数据库、DB2、SQL Server。数据库的三大范式:第一范式:无重复的列(每一个都是原子)第二范式:属性完全依赖于主键【消除部分子函数依赖】-每个实例或行都可以被唯一区分。第三范式:属性不依赖于其他非主属性【消除传递依赖】-要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。SQL语句分类:DDL:数据定义,定义数据库对象:库、表、列等DML:数据操作语言,用来定义数据库记录(数据)增删

2021-09-10 15:54:16 83

原创 java的反射

反射在运行状态中,获取任意一个类的结构,创建对象,得到方法,执行方法,属性。类加载三种类加载器:BoostrapClassLoader引导启动类加载器;使用C++编写主要加载/lib的类库,无法被应用直接应用。 ExtensionClassLoader扩展类加载器;主要加载/lib/ext类库 ApplicationClassLoader应用类加载器;加载classpath目录下的所有jar和class文件。双亲委派、进行类加载时,会转发类加载请求到父类加载器,当父类加载器范围

2021-09-08 21:06:18 57

原创 java注解

注解注释不会编译到文件中,注解可以编译到文件中。注解的作用:编译格式检查。 反射中解析。 生成帮助文档。 跟踪依赖类。 方法、变量、参数、包都可以添加注解。内置注解:@Override重写 @Deprecater 废弃 @SafeVarargs 忽略任何使用参数为泛型变量的方法或构造函数调用产生的警告。 @FunctionalInterface: 函数式接口。Java 8 开始支持,标识一个匿名函数或函数式接口。 @Repeatable:标识某注解可以在同一个声明上使用多次

2021-09-08 21:04:46 109

原创 java的枚举

枚举定义有限数量的同类常量如:级别:低、中、高。季节:春、夏、秋、冬。如线程类的状态:new (未启动线程)-runnable(执行中线程)-blocked(被阻塞等待监视器锁定)-waiting(无限等待另一个线程执行)-timed_waiting(等待另一个线程执行最多等待时间操作)-terminated(已退出线程)注意事项:一旦定义了枚举,最好不要修改里面的值。 默认继承是java.lang.Enum类而不是Object类。 枚举类不能有子类,因为其枚举类默认被final

2021-09-08 21:03:42 47

原创 XML与JSON

XML与JSONXML可扩展标记语言平台无关性,独立的标记语言。 自我描述性。用处如下网络数据传输。 数据存储。 配置文件。Xml文件.xml文件是保存xml数据的一种方式,xml数据也可以存放在内存(如在内存构建xml数据)。Xml语法格式:<?xml version = “1.0” encoding=”UTF-8”?>CDATA:<![CDATA[" 开始,由 "]]>,可以不让xml解析为标记。解析xml的方式SAX解析SAX解

2021-09-07 23:15:47 69

原创 java四大线程池

线程池的好处降低资源消耗、提高响应速度、提高线程的可管理性。缓存线程池CahcedThreadPool长度无限制。执行流程:判断线程池是否存在空闲线程。 存在则使用。 不存在,则创建线程,放入线程池,然后使用。定长线程池FixedThreadPool长度是指定数值任务加入后的执行流程:判断线程池是否存在空闲线程。 存在则使用。 不存在空闲线程,且线程池未满的情况下,则创建线程并放入线程池,然后使用。 不存在空闲线程,且线程池已满的情况下,则等待线程池存在空闲线程。

2021-09-03 12:32:56 571

原创 多线程的死锁

死锁死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。在两个或多个任务中,如果每个任务锁定了其他任务试图锁定的资源,此时会造成这些任务永久阻塞,从而出现死锁。例如:事务A 获取了行 1 的共享锁。事务 B 获取了行 2 的共享锁。虽然进程在运行过程中,可能发生死锁,但死锁的发生也必须具备一定的条件,死锁的发生必须具备以下四个必要条件。互

2021-09-02 22:14:10 318

原创 隐式锁和显式锁的区别(Synchronized和Lock的区别)

管理者的不同synchronized是Java中的关键字,是由jvm来管理的。Lock是java的一个接口。需要调用对应的类来进行加锁操作。使用方法不同synchronized是隐式锁;为需要加锁的代码块添加synchronize关键字,且需要传入一个标识当前是一个线程的标识:new一个Object对象传入。 使用synchronize关键字修饰需要加锁的方法。lock是显式锁:需要手动调用lock()方法和unlock()方法。等待是否中断隐式锁synchronize修饰

2021-09-02 19:06:25 252

原创 线程与进程

进程:进程是内存运行的应用程序,每个进程都有一个独立的内存空间。线程:线程是进程的一个执行路径,共享一个内存空间,线程之间可以自由切换,并发执行,一个进程最少有一个线程。线程实际上是在进程的基础上进一步划分,一个进程启动后 ,里面的若干执行路径又可以划分成若干个线程。线程的调度分时调度:所有线程轮流使用CPU使用权,平均分配每个线程占用CPU时间。抢占方式调度:优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),java使用的为抢占式调度

2021-09-02 17:49:34 4573

原创 javaIo流

File文件对象,不一定存在。过滤器:FileFilter接口-->需要实现accept方法返回ture代表此文件不过滤。绝对路径:从盘符开始,是一个完整的路径,如:c://a.tet相对路径:相对于项目的目录路径,是一个便捷路径。IO流计算机存储是以2进制形式的。分类:字节流:InputStream(输入流)、OutputStream(输出流)字符流:Reader(输入流)、Writer(输出流)Close()关闭流->不用的时候需要进行关闭

2021-08-31 15:45:51 63

原创 序列化与反序列化

序列化是指java对象转换为字节序列的过程,反序列化是从文件中取出经过序列化的对象。Serializable接口,用于标记此类可序列化,该类的所有属性都需要实现了该接口。//序列化与反序列化 /*序列化,序列化类的属性都要实现序列化 A a = new A("name","金苹果"); ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("D://a.txt")); //NotSe

2021-08-31 15:38:35 43

原创 java的类集

集合类集的三大接口:Iterator、Collection、MapCollectionCollection有三大子接口:List、Set、Queue单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.List和java.util.Set。其中,List的特点是元素有序、元素可重复。Set的特点是元素不可重复。List接口的主要实现类有java.util.ArrayList和java.util.LinkedList,Set接口的主要实.

2021-08-30 00:33:53 155

原创 java异常

异常处理异常是在程序中导致程序中断运行的一种指令流,在运行时产生错误而导致的。异常体系结构:在java中存在一个父类Throwable,存在俩个子类error,exceptionError:Exception:分俩种:受检异常:非运行异常SQLException IOException ClassNotFoundException ...非受检异常:运行时异常(RuntimeException)NullPointerException(空.

2021-08-28 17:00:17 46

原创 java递归

递归递归算法是直接或间接调用自身方法的算法。例子阶乘/*** @param a 输入数字* @return 返回a的阶乘*/static int number(int a){//需要有一个方法停止条件if (a<=1)return a;return a*number(a-1);}...

2021-08-28 16:58:29 50

原创 java泛型

泛型泛型只在编译阶段起效,在类加载时会擦拭成为相应的类型。用在类的泛型:class User<T>{T date;T getDate(){return date;}}在使用时传入一个类型,类里面使用T修饰的会成为String类型。接口用法一样。User<String> user = new User<>();用在方法上的泛型:T getDate(T t){return t;}可以...

2021-08-28 16:57:28 38

原创 java内部类

将类定义在一个类里面或一个方法里面。广泛意义上有四种内部类:成员内部类。可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员),当拥有和外部类同名的成员变量或者方法时,会发生隐藏现象,默认访问内部类成员(就近),如果要访问外部类成员时需要 类名 . this . 。局部内部类。定义在一个方法或一个作用域里面的类,它和成员内部类的区别在于局部内部类的访问权限仅限于方法内或者该作用域内。不能有权限修饰符。匿名内部类。继承一个类或者实现一个接口,不可兼得,没

2021-08-28 16:14:39 44

转载 Linux命令

一、文件和目录1. cd命令它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径: cd /home 进入 '/ home' 目录 cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd 进入个人的主目录 cd ~user1 进入个人的主目录 cd - 返回上次所在的目录 2. pwd命令pwd...

2021-08-19 16:40:21 44

原创 java代码块

代码块普通代码块{执行内容}编写在顺序执行的代码流程中的代码块构造代码块{执行内容}构造代码块不是构造方法,随着对象的创建会执行一次,且在构造方法之前。适用于在对象创建时必须执行的操作写在构造代码块。无论用户调用哪一个构造方法创建对象都会执行构造代码块。同步代码块synchronized(obj){//需要被同步的代码块}其中,obj 称为同步监视器,也就是锁,原理是:当线...

2021-08-19 15:18:51 40

原创 面向对象思想

面向对象思想三大思想:面向对象分析(OOA) 面向对象设计(OOD) 面向对象程序(OOP)三大特征:封装性:所有的内容对外部不可见。 继承性:将其他功能继承下来继续发展。 多态性:方法重载本身是一个多态性体现。面向对象是把相关数据和方法组织为一个整体来看待。面向对象到面向过程,是程序员思想上从执行者到指挥者的转变。类与对象关系:类表示一个共性的产物,对象是个性的产物,个体的特征。类通过对象使用,对象的操作在类中定义。类由属性和方法组成:属性:相当于人(对象)

2021-08-19 15:11:33 74

原创 数组声明方式

数组数组是同个数据类型多个数据的容器,数组下标从0开始,数组的长度-1结束。创建数组方式:数据类型[] 名称={数据1,数据2,数据3,....,数据n};创建数组时定数据。静态创建 数据类型[] 名称=new 数据类型[数组长度]; 指定数组长度,数据值默认为0;动态创建。 不常用的方式: int[] nums; nums=new int[长度]。不能直接nums={}。int[] nums=new int[]{数据1,数据2,数据3,数据4};冒泡排序:俩俩比较换位。比较轮数...

2021-08-19 15:09:17 1162

原创 Scanner类

Scanner类常用方法:nextInt();接收键盘输入int类型数据返回一个int类型。next();接收任何数据类型,返回一个String类型(常用)。nextLine();接收一行输入。一般不与next一起用。hasnextInt()判断是否为int类型的输入值执行结构顺序结构:是一种基本的控制结构,按语句出现的顺序执行操作,java中代码执行就是顺序结构。分支结构:又称为选择结构,根据条件与否执行操作。if(判断){执行语句}else if(判断){执行

2021-08-19 15:08:18 47

原创 java的数据类型

变量变量是系统为程序分配的一块内存单元。变量分类:按数据类型划分为基本数据类型、引用数据类型。基本数据类型(8大基本数据类型)整数数值型: 类型 类型关键字 占用字节数 取值范围 定义方式 整型 byte 1 -2^7~2^7-1 byte a = 1;默认值:0

2021-08-19 15:06:36 50

原创 解决while循环中获取键盘输入值错误时无限循环问题

在使用nextInt()获取键盘输入值时,若输入不是int类型的值时会报异常,如果进行异常 try{ 异常语句 }catch{ 进入下次循环 }会自动获取上一次输入的值进行判断,从而导致无限循环运行catch子句。 解决方法:1.在catch子句中加一个next()方法。当获取的不是int类型字符时便会走catch子句。public static void main(String[] args) { Scanner scanner = new Sc...

2021-08-18 12:02:27 744

空空如也

空空如也

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

TA关注的人

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