- 博客(40)
- 收藏
- 关注
原创 RabbitMQ: 死信队列
死信概念死信,顾名思义就是无法被消费的消息,producer将消息投递到brocker或者直接到queue里了,consumer从queue取出消息进行消费,但某些时候由于特定原型导致queue中的消息无法被消费掉,这样的消息如果没有后续的处理,就变成了死信,有了死信自然就有死信队列。应用场景:为了保证订单业务的消息数据不丢失,需要使用到RabbitMQ的死信队列机制,当消息发生异常时,将该异常消息投入到死信队列中去,例子:用户在商城里点击去支付在指定时间内未支付时自动失败。死信的来源1..
2022-05-24 11:31:14
266
原创 MySQL: 函数-日期篇
一丶获取日期,时间函数 用法 CURDATE() CURRENT_DATE() 返回当前日期,只包含年,月,日 CURTIME() CURRENT_TIME() 返回当前时间,只包含时,分,秒 NOW() / SYSDATE() /CURRENT_TIMESTAMP() LOCALTIME() LOCALTIMESTAMP() 返回当前系统日期和时间 ..
2022-05-20 18:39:56
124
原创 MySQL: 函数-数值类型篇
一丶基本函数函数 用法 ABS(x) 返回x的绝对值 SIGN(x) 返回x的符号,正数返回1,负数返回-1,0返回0 PI() 返回圆周率的值 CEIL(x), CEILING(x) 返回大于或等于x的最小整数 FLOOR(x) 返回小于或等于x的最大整数 LEAST(e1,e2,,e3,...) 返回列表中的最小值 GREATEST(e1,e2,e3,...) 返回列表中的最大值 MOD(x,y)
2022-05-20 09:59:37
225
原创 SpringBoot: application.properties/yml乱码显示问题
一丶刚开始写application.properties文件配置时中文是正常显示的,如下图二丶项目运行后application.properties文件里的中文全部变成 ???,如下图三丶分析解决这是因为IDEA编辑器编码问题导致的,去IDEA设置里面吧字符集改成UTF-8即可解决乱码问题,步骤如下:1. 点击菜单栏 File >> 再点击setting,进入设置界面2. 如下图将下面几项全部改成UTF-8,然后点击apply和OK即可(最后把项目重新编译一.
2022-05-17 10:57:18
1200
原创 RabbitMQ: 常用命令
一丶服务篇1. 添加开机启动RabbitMQ服务chkconfig rabbitmq-server on2. 启动服务service rabbitmq-server start3. 关闭服务service rabbitmq-server stop4. 查看服务状态service rabbitmq-server status二丶用户篇1. 创建账号 (admin是用户名,后面123是密码,用户名和密码都是可以自定义的)rabbitmqc...
2022-05-15 22:05:28
271
原创 MySQL: 分页查询公式
查表很多时候都需要分页显示,MySQL可以用LIMIT关键字实现分页查询功能。一丶分页查询公式:LIMIT ( pageNo - 1 * pageSize, pageSize)pageNo代表当前第几页,pageSize代表每页显示的记录数。二丶演示例子查询第2页的数据并且每页显示5条数据,我的employees表如下:执行查询的sql: SELECT * FROM employees LIMIT 5, 5;...
2022-05-15 21:18:02
1838
原创 SQL: sql的分类
SQL在功能上主要分三大类:DDL (Data Definition Languages,数据定义语言):这些语句定义了不同数据库,表,视图,索引数据库对象,还可以用来创建,删除,修改数据库和数据表的机构。主要的语句关键字包括CREATE,DROP, ALTER等DML (Data Manipulation Language,数据操作语言)用于添加,删除,更新和查询数据库记录,并检查数据完整性。主要的语句关键字包括INSERT, DELETE, UPDATE, SELECT等。.
2022-05-14 17:32:38
377
原创 Nginx: 原理总结
1. Nginx启动后会有一个master进程以及一个或多个worker进程,worker获取工作的是通过增强的方式获得的。对于每个worker进程来说,是独立的进程,不需要加锁,所以省掉了锁带来的开销,同时在编程以及问题查找时,也会方便很多,可以让相互之间不会影响,一个进程退出后其他进程还在工作,服务不会中断,master进程则很快启动新的worker进程。当然,worker进程的异常退出肯定是程序有了bug,异常退出会导致当前worker上的所有请求失败,不过不会影响到所有请求,所以降低了风险。.
2022-05-13 16:10:22
538
原创 Linux: 安装mysql和设置密码登录
以yum命令安装mysql5版本为例步骤一:先安装wget命令yum -y install wget步骤二:下载mysql的repo源wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 步骤三:安装mysql的noarch.rpm包rpm -ivh mysql-community-release-el7-5.noarch.rpm步骤四:安装mysqlyum install ...
2022-05-11 21:42:15
765
1
原创 Nginx: 动静分离
Nginx 动静分离简单来说就是把动态根静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分开。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat处理动态页面。动静分离从目前实现角度来讲大致分为两种,1. 纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流服务器推崇的方法。2.动态跟静态文件混合在一起发布,通过Nginx来分开。...
2022-05-11 20:32:51
363
原创 Nginx: 负载均衡
一丶什么是负载均衡负载均衡概念由一个典型的例子提出: 双十一期间,用户对淘宝京东的请求量异常的大,单个服务器肯定承受不了,必定会宕机,这时候服务器集群的概念产生了,单个服务器解决不了,可以增加服务器的数量,然后将请求分发到各个服务器上,将原先的大量请求平均分配到各个服务器上,也就是将负载分到不同的服务器,这样服务器压力就减少了很多,这就是负载均衡,Nginx就是通过负载均衡这种技术把请求分配到不同的服务器中处理的。二丶负载均衡使用到的的策略1. 轮询(Nginx默认的一种策略):每个请求按时间.
2022-05-11 18:02:44
105
原创 Vue: 常用指令
v-bind : 单向绑定解析表达式, 可简写为 :xxxv-model : 双向数据绑定v-for : 遍历数组/对象/字符串v-on : 绑定事件监听, 可简写为@v-if : 条件渲染(动态控制节点是否存存在)v-else : 条件渲染(动态控制节点是否存存在)v-show : 条件渲染 (动态控制节点是否展示)v-text指令: 1.作用:向其所在的节点中渲染文本内容。 ...
2022-05-10 21:03:15
89
原创 Nginx: 正向与反向代理
一丶正向代理:正向代理概要(不懂看下面例子分析就懂了):如果把局域网外Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet则需要通过代理服务器来访问,这种代理称为正向代理。例子:用户端想要访问 目标服务器goole(审核要求不能直接打网址),但是用户端(浏览器)无法直接直接访问到,这时客户端需要提前配置好 abc这个代理服务器 的一些必要的配置参数和环境,之后再连接 abc这个代理服务器 就会来帮客户端连接上 目标服务器google。正向代理总...
2022-05-10 18:16:26
692
原创 Vue: 条件渲染指令
1. v-if : (1) v-if="表达式" (2) v-else-if="表达式" (3) v-else="表达式" 适用于: 切换频率较低的场景。 特点: 不展示的DOM元素直接被移除 注意: v-if可...
2022-05-06 22:03:27
674
原创 Vue: 绑定样式
<!--Vue绑定class样式使用: :class=*** --><!--情况一: 绑定class样式--字符串写法,适用于: 样式的类名不确定,需要动态指定--><div class="basic" :class="mood" @click="changeMood">{{name}}</div><hr><!--情况二: 绑定class样式--数组写法,适用于: 要绑定的样式个数不确定,名字也不确定--><div .
2022-05-05 22:24:42
354
原创 Spring注解式开发: AOP常用注解
一丶注解和使用说明Aop一般有以下常用注解:@Aspect: 该注解是把此类声明为一个切面类。@Before: 该注解是声明此方法为前置通知 (目标方法执行前就会先执行被此注解标注的方法)@After: 该注解是声明此方法为后置通知 (目标方法执行完之后就会执行被此注解标注的方法)@After: 该注解是声明此方法为返回通知 (目标方法正常执行返回后就会执行被此注解标注的方法)@AfterThrowing: 该注解是声明此方法为异常通知 (目标方法在执行出现异常时就会执行被此注解标注
2022-05-04 23:56:19
9626
原创 Vue: 事件的基本使用
一丶Vue事件的基本使用1丶使用v-on:xxx 或 @xxx绑定事件,其中xxx是事件2丶 使用的回调方法需要配置在methods对象中,最终会在Vue的实例上3丶methods中配置的函数,不用箭头函数!否者this就不是Vue的实例了4丶methods中配置的函数,都是被Vue所管理的函数,this指向的是vm或组件实例对象5丶 @click = "demo" 和 @click="demo($event)"效果一致,但后者可以传参。二丶通过绑定Vue案例...
2022-05-02 22:27:13
460
原创 java Stream流之创建方式
Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进⾏的操作,可以执⾏⾮常复杂的查找、过滤和映射数据等操作。使⽤Stream API 对集合数据进⾏操作,就类似于使⽤ SQL 执⾏的数据库查询。也可以使⽤ Stream API 来并⾏执⾏操作。简⽽⾔之,Stream API 提供了⼀种⾼效且易于使⽤的处理数据的⽅式。Stream的一些特点:1 . 不是数据结构,不会保存数据。2. 不会修改原来的数据源,它会将操作后的数据保存到另外⼀个对象中。(保留意见:毕竟pee.
2022-04-29 21:31:55
884
2
原创 Spring注解式开发: Bean的生命周期中的初始化和销毁
Bean生命周期全部完整过程不再阐述,以下主要描述四种方式完成Bean注册前后执行的初始化方法和销毁方法,Bean被注册后是怎么执行初始化和销毁方法: Bean被注册前后可以设置执行的初始化和容器关闭时执行销毁方法,这些方法是我们可以自己定义的。方式一:通过@Bean指定init-method和destroy-method参数的两个值 init-method = 初始化方法: 对象创建完成,并赋值好后,调用初始化方法 des
2022-04-27 23:40:45
685
原创 Spring注解式开发: Bean的注册
Spring中的Bean的注册有很多种方式,但大多区别不大,首先启动spring这个IOC容器的方式就有两种分别是古老的用*.xml文件来启动还有现在主流用注解式@Configuration声明一个为配置类来启动Spring容器。首先说明:得先大概会用Spring和SpringBoot(要不然可能会懵,只是可能会懵而已不用在意),因为SprinBoot里面就都是注解式开发方式一(不推荐方式): 用xml文件里面的<Bean>标签声明注册 (用*.xml文件启动Spring)x...
2022-04-26 22:40:32
2281
原创 Spring IOC与AOP
一丶IOC首先文绉绉的说说什么是IOC:IOC 是指原先我们代码里面需要实现的对象创建,维护对象之间的依赖关系,反转给容器来帮忙实现,那么必然的我们需要创建一个容器,同时需要一种描述来让容器知道需要创建的对象与对象的关系。依赖注入的目的是为了解耦,体现一种“组合”的理念。继承一个父类,子类将于父类耦合,组合关系是耦合度大大降低。SpringI OIC 容器负责创建Bean,并通过容器将Bean注入到需要的Bean对象上。同时Spring IOC 容器还负责维护Bean对象之间的关系。一句话说明I
2022-04-25 21:30:07
90
原创 BOM模型一些简单使用
BOM是浏览器对象模型,BOM可以使我们通过JS来操作浏览器,在BOM中提供了一组对象,用来完成对浏览器的操作。BOM常用的一些对象window: 代表的是整个浏览器的窗口,同时window也是网页中的全局对象。Navigator: 代表的当前浏览器的消息,通过该对象可以来识别不同的浏览器Location: 代表当前浏览器的地址栏信息,通过Location可以获取地址栏消息,或者操作浏览器跳转页面History: 代表浏览器的历史记录,可以通过该对象来操作浏览器的历史记录,由于隐私问题,
2022-04-23 23:44:17
279
原创 JS操作HTML元素的增删改
HTML里面的代码虽然写好了但并不是一成不变的,HTML里面的标签可以通过JS操作DOM动态的增删改,只需JS里面写好事件动作就行。一丶增加一个标签 (增加一个button为例)初始情况时只有一个button标签,通过JS动态的添加另一个标签,这时就要通过JS操作DOM添加button标签HMTL代码: <body> <div id="box01"> <button id="btn01">button1</b
2022-04-22 22:18:00
1058
原创 JS字符串常用方法
1: charAt(x) 方法获取索引为x的字符 var str = 'hello string'; var c = str.charAt(0); //获取索引为0的字符串 console.log(c); //输出: 'h'因为字符串底层是字符数组,所以字符串也可以以数组下标索引方式获取 var str = 'hello string'; var c = str[0]; /..
2022-04-21 22:15:59
706
原创 JavaScript数组的创建以及常用用法
首先说明JavaScript和java没有任何关系(JavaScript名字这样命名当年纯属只是为了蹭Java的热度而已,没错它蹭成功了,它现在火得不得了了)。一个是弱类型的脚本语言一个是强类型的高级语言JS中数组也是对象,有像对象一样的各种属性和方法,JS中数组像是Java里面的数组和集合的结合体,有数组的特性(元素可以索引访问修改等)也有集合的特性(可以调用数组的各种方法灵活的增删改等),也许这就是弱类型语言与强类型语言的区别吧,总之JS很灵活就对了。一丶数组的创建创建方式一: 采用new.
2022-04-20 22:14:22
1417
原创 java死锁演示和查看
一丶什么是死锁?死锁就是当两个或两个以上的线程因竞争相同资源而处于无限期的等待,这样就导致了多个线程的阻塞,出现程序无法正常运行和终止的情况,如下图,线程A已经持有了锁1,但它还想要得锁2才会释放自己的锁1,而线程B已经有了锁2,但它也是想要得到线程A的锁1才会释放的锁2,这样就会无限阻塞导致死锁了。以下一个例子来模拟死锁。//创建两个对象 Object a = new Object(); Object b = new Object(); .
2022-04-13 14:42:31
387
原创 java集合线程安全解决方案(List,Set,Map)
一丶在多线程下多个线程操作ArrayList, 往里面放入数据或者删除数据输出数据会造成线程不安全。对于ArrayList解决方案有三种.1.使用Vector,Vector相比ArrayList,它牺牲了性能换取了线程安全.
2022-04-12 17:12:04
1827
原创 设计模式: 单一职责原则(java演示)
一丶单一职责原则对类来说,即一个类应该只负责一项职责。例如:如果A类负责两个不同的职责,分别为职责1,职责2,当因为职责1需求变更进行改动的时候可能会影响到职责2,这样就可能造成职责2运行错误而带来一些本来没有的麻烦,所以这时就要将类A的颗粒度分解为A1,A2。现在 以一个交通工具类Vehicle来做例子说明:比如有两个交通工具分别是飞机和汽车,它们都有一个run运行方法,所有交通工具都要调用,如果是飞机的话就会出现矛盾,因为这个Vehicle类run方法默认只考虑汽车运行方式,如果要兼容飞机的话.
2022-04-11 18:45:12
551
原创 SpringBoot打成war部署到Tomcat服务器时访问时报500错误
一丶前提要保证你的SpringBoot项目在IDEA中正确启动并访问无问题,首先还是老规矩在pom.xml中的web依赖中排除掉内嵌的Tomcat ,如下图。二丶确保已排除内置tomcat后1.pom.xml中添加上将此项目打成war包,如下图。2.在<build>标签里添加<finalName>自定义你的项目被打包成war后的项目名(例如我的定义的项目名叫:study_myboot_war),如下图。3.再次操作<build>标签,...
2022-02-25 20:45:27
1476
原创 JVM类加载器过程
类加载的过程为: 加载-->连接(验证-->准备-->解析)-->初始化加载:通过一个类的全限定名来获取定义此类的二进制字节流 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构 在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口连接-验证:目的在于确保Class文件的字节流中包含信息符合当前虚拟机要求,保证被加载类的正确性,不会危害到虚拟机的安全。连接-准备:准备阶段是进行内存分配...
2022-02-15 09:13:18
62
原创 算法:深度优先和广度优先(DFS,BFS)
一丶深度优先(DFS)深度优先顾名思义: 就是往深的地方优先查找或遍历。 如图二叉树,想遍历树中所有结点可以用中序遍历,前序或后序。如果某一结点还有子结点就会往深处就是往下一结点,一直遍历直到最后一个结点没有子结点时,然后退回上一级向另一个方向继续走。以前序遍历为例: 根-->左-->右 从D开始走,发现D左边还有B就继续走走到B(因为先判断作左边往左一直走下去,右边的E先不会走),到了B发现B左边有A还继续走到A,到A时发现A左没结点了再判断右边也没结点就是到头了,这时就得返回到上一级B.
2022-01-29 16:31:48
2020
原创 Maven,Gradle项目构建工具
Java世界中主要有三大构建工具:Ant、Maven和Gradle。经过几年的发展,Ant几乎销声匿迹,Maven也日薄西山,而Gradle的发展则如日中天。初学者学Maven还是Gradle?虽然maven的依赖管理很死板,只能依赖于标准的maven artifact,不能依赖本地的某个jar文件或者其它的源码。而gradle则可以混合地同时支持这些依赖方法,这样可以让旧项目的迁移容易得多。只要安装好gradle,默认就支持java项目,war项目,ear项目,做单元测试,生成jar包,上传j
2022-01-29 15:00:43
732
转载 Linux: 常用命令(适合初学者)
1、显示日期的指令: date2、显示日历的指令:cal3、简单好用的计算器:bc怎么10/100会变成0呢?这是因为bc预设仅输出整数,如果要输出小数点下位数,那么就必须要执行 scale=number ,那个number就是小数点位数,例如:4、重要的几个热键[Tab],[ctrl]-c, [ctrl]-d[Tab]按键---具有『命令补全』不『档案补齐』的功能[Ctrl]-c按键---让当前的程...
2022-01-29 14:39:09
206
原创 ArrayList 与 LinkList的异同
一.首先回归一下数据结构中的逻辑结构与储存结构。ArraList与 LinkList都是实现Collection接口的集合类,他们在逻辑结构都是线性结构。1.1首先对于ArraList,ArraList底层是动态数组实现的,数组在储存结构是顺序储存的,所谓顺序储存就是在空间上连续的。1.2其次对于LinkList, LinkList底层是双链表的数据结构,储存是链式存储。二.其次分析异同之处...
2022-01-21 12:44:01
788
原创 Tomcat10那些坑,写SpringMVC时遇到 org.springframework.web.servlet.DispatcherServlet报错和404路径错误
首先用的是Tomcat10版本先上报错代码第一个org.springframework.web.servlet.DispatcherServlet报错是servlet jar错误。重新配置pom.xml文件里面的servlet和jsp依赖配置好后刷新pom重建在Maven下可以看到出现了servlet和jsp依赖jar包已经加进来了org.springframework.web.servlet.DispatcherServlet爆红是虽然解决了但是,运行项目启动Tomc...
2021-11-25 17:37:25
15464
6
原创 Java语言是什么?当中Java SE ,Java ME , Java EE 这几个版本的区别,再者Java Web又是什么
---------------------------------------------------------------------------------------------------------------------------------Java语言是什么语言?简单地说,Java是由Sun Microsystems公司于1995年推出的一门面向对象程序设计语言。2010年Oracle公司收购Sun Microsystems,之后由Oracle公司负责Java的维护和版本升级。
2021-08-07 20:24:31
206
原创 JDK与OpenJDK区别(简略通俗易懂)
一.什么是JDK?以度娘上的解释:JDK(Java Development Kit)是SUN公司(09年被oracle公司收购现在属于oracle公司)针对Java开发人员发布的免费软件开发工具包(SDK,Software Development Kit)。JDK是整个Java的核心,包括了Java运行环境、Java工具和Java基础类库。说白了JDK就是:java开发所需的工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译j
2021-07-14 21:19:44
65617
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人