自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大道至简

if you only do what you can do,you will never be more than you are now.侵权勿扰!!!

  • 博客(41)
  • 收藏
  • 关注

原创 SpringBoot启动时实现自动执行代码的几种方式讲解

目前开发的SpringBoot项目在启动的时候需要预加载一些资源。而如何实现启动过程中执行代码,或启动成功后执行,是有很多种方式可以选择,我们可以在static代码块中实现,也可以在构造方法里实现,也可以使用@PostConstruct注解实现。当然也可以去实现Spring的ApplicationRunner与CommandLineRunner接口去实现启动后运行的功能。在这里整理一下,在这些位置执行的区别以及加载顺序。java自身的启动时加载方式static代码块static静态代码块,在

2021-12-28 10:05:14 339

原创 SpringBoot中使用异步方法优化Service逻辑,提高接口响应速度

1. 为什么需要异步方法?先说结论: 合理使用异步方法可以让业务接口快到飞起!异步方法适用于逻辑与逻辑之间可以相互分割互不影响的业务中, 如生成验证码和发送验证码组成的业务, 其实无需等到真正发送成功验证码才对客户端进行响应, 可以让短信发送这一耗时操作转为异步执行, 解耦耗时操作和核心业务;同理还有文章阅读的业务逻辑 = 查询文章详情 + 更新文章阅读量后再响应客户端, 其实也无需等到阅读量更新后才响应文章详情给客户端, 用户查看文章是主要逻辑, 而文章阅读量更新是次要逻辑, 况且阅读量就算更

2021-11-12 11:03:22 413

原创 Shell 获取外部脚本中的变量

a.sh#!/bin/bashurl="http://www.baidu.com"b.sh#!/bin/bash#使用 . 号来引用a.sh 文件. ./a.sh# 或者使用以下包含文件代码# source ./test1.shecho "输出网址:$url"[sun@localhost ~]$ sh b.sh #运行b.sh 注:被包含的sh文件不需要可执行权限。输...

2020-03-25 16:31:52 2495

原创 DNS负载均衡和NGINX负载均衡

负载均衡:把请求均匀的分摊到多个服务器上处理DNS负载均衡DNS负载均衡是通过DNS服务器实现的,主要用于把请求均匀的分布到nginx服务器上,真实情况可能是根据区域区分请求,但是一个地域中请求还是需要均匀的分配到nginx服务器上实现原理:DNS服务器为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将...

2020-03-23 13:09:00 1815

原创 Nginx配置详解

#指定admin&root用户才可以操作nginxuser admin admin; #指定处理请求的进程数,一般设置为CPU核数worker_processes 1; #指定错误日志存放路径error_log /usr/local/soft/nginx/logs/error.log#指定pid进程文件存放路径pid /usr/local/soft/n...

2020-03-23 12:32:07 229

原创 多进程编程思想

进程与线程的区别1.进程我们都知道计算机的核心是CPU,它承担了所有的计算任务;而操作系统是计算机的管理者,它负责任务的调度、资源的分配和管理,统领整个计算机硬件;应用程序侧是具有某种功能的程序,程序是运行于操作系统之上的。进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有...

2020-03-23 12:15:43 207

原创 shell - cp

Linux cp命令主要用于复制文件或目录。语法cp [options] source dest参数说明:-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。-f: 覆盖已经存在的目标文件而不给出提示。-i: 与-f选项相反,在覆盖目标文件之前给出提示,...

2020-03-16 18:29:19 6098

原创 shell - chown

更改每个文件的所有者和/或所属组。 -c, --changes 类似 verbose,但只在有更改时才显示结果 --dereference 受影响的是符号链接所指示的对象,而非符号链接本身 -h, --no-dereference 会影响符号链接本身,而非符号链接所指示的目...

2020-03-16 18:17:29 368

原创 shell - chmod

将每个文件的模式更改为指定值。 -c, --changes 类似 --verbose,但只在有更改时才显示结果 -f, --silent, --quiet 去除大部份的错误信息 -v, --verbose 为处理的所有文件显示诊断信息 --refere...

2020-03-16 16:26:03 730

原创 linux文件系统ext2\ext3\ext4\xfs详解

1.ext2介绍:第二代扩展文件系统是LINUX内核所用的文件系统,用以代替ext,是 EXT文件系统的升级版,特点:在ext2文件系统中,文件由inode(包含有文件的所有信息)进行唯一标识。一个文件可能对应多个文件名,只有在所有文件名都被删除后,该文件才会被删除。此外,同一文件在磁盘中存放和被打开时所对应的inode是不同的,并由内核负责同步。2.ext3介绍:EX...

2020-03-15 14:25:43 2942 1

原创 linux-关机重启命令

shutdown 命令shutdown [选项] 时间-c 取消前一个关机命令-h 关机-r 重启shutdown -h now 马上关机halt 关机poweroff 关机init 0 关机reboot 重启init 6 重启系统运行级别0 关机1 单用户2 不完全多用户,不含NFS服务3 完全多用户4 未分配5 图形界面6 重启runlevel 查询系统...

2020-03-15 11:07:22 140

原创 Linux常见目录的作用

1.linux常见目录2.常见目录作用目录名 目录的作用 /bin/ 系统命令保存目录,所有用户都可以执行,在单用户模式下也可以使用此目录下的命令 /sbin/ 系统环境设置相关命令的保存目录,只可以root用户执行 /usr/bin/ 系统命令保存目录,所有用户都可以执行,这些命令与系统启动无关,在单用户模式下不可以执行 /usr/sbin/...

2020-03-15 10:45:37 274

原创 shell - ps

参数说明:  -a 显示现行终端机下的所有进程,包括其他用户的进程。  -A 显示所有进程。  -c 显示CLS和PRI栏位。  c 列出进程时,显示每个进程真正的指令名称,而不包含路径,参数或常驻服务的标示。  -C<指令名称>  指定执行指令的名称,并列出该指令的进程的状况。  -d  显示所有进程,但不包括阶段作业领导者的进程。  -e  此参数的效果...

2020-02-29 19:28:14 2101

原创 shell - ls

用法:ls [选项]... [文件]...List information about the FILEs (the current directory by default).Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.长选项必须使用的参数对于短选项时也是必需使用的。-a, --all...

2020-02-28 21:38:11 340

原创 集合基础增强原理分析

List集合基础增强底层源码分析集合分为三个系列,分别为:List、set、mapList系列特点:元素有序可重复有序指的是元素的添加顺序,也就是说,元素被第一个存进去的时候,它就在第一位,这就是list集合的元素添加顺序;通常情况下我们所说的有序有两个概念,第一个是添加顺序,第二个是大小顺序(实际上就是元素值的大小)List下面重点关注两个实现类分别是:ArrayLi...

2019-06-18 20:30:07 238

原创 并发编程 -- 多线程(一)

进程在理解多线程之前,我们先需要了解什么是进程?进程说白了就是在你的内存空间中开辟出的一个独立的空间;如果还不理解的话,我再解释一下;想必各位之前都安装过软件吧,你安装完软件之后,在你的软件安装包里面是不是有一个.exe文件,那你双击exe文件的时候,在你的任务管理器,在里面就有一个进程选项卡,就是说,每当你打开一个exe文件的时候,它都会显示在任务管理器的进程当中,所以就可以把运...

2019-06-17 19:14:04 265

原创 Mybatis 一级缓存和二级缓存

查询缓存首先,我们先看一下这个标题“查询缓存”,那就说明跟增、删、改是没有任何关联的,只有在查询时,才会遇到缓存,增删改不涉及!查询缓存目前Mybatis中提供了两个,分别是:一级缓存、二级缓存;一级缓存先说一下一级缓存的范围:同一个SqlSession对象,也就说,我们是同一个SqlSession对象,又要进行同样的查询操作,那么,我们就可以去缓存中获取;所以,SqlSess...

2019-06-17 18:59:03 437

原创 Session执行机制与原理

什么是Session首先了解一下Session的中文意思:一次会话,什么是一次会话呢?我举个例子:就我们现在上网,打开浏览器浏览网站当时开始到你关闭浏览器,就称之为一次会话;也可以这么理解,当你在网上购物,浏览、选择商品、付款、退出,这个就可以理解成一次会话;一次开始到一次结束;快速理解Session的执行机制比如我现在客户端向服务端发送一个请求,这个时候服务端就用会一个Ses...

2019-06-17 18:38:41 803

原创 Cookie

Cookie不是内置对象,所以用的时候需要new出来,Cookie是由服务端产生的,再发送给客户端保存,它不是内置对象,却是由服务端产生的,产生完后给了客户端;它存在于客户端,却不是客户端产生的,是服务端产生的,产生完后给你了Cookie的作用Cookie就是我们所理解的缓存,本地缓存;比如客户端访问服务端,第一次访问结束后,我就会产生一个Cookie,把这个Cookie保留到客户...

2019-06-17 13:39:27 29434

原创 RabbitMQ 详解(一)

RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。消息中间件在互联网公司的使用中越来越多,刚才还看到新闻阿里将 RocketMQ 捐献给了 Apache,当然了今天的主角还是讲 RabbitMQ。消息中间件最主要的作用是解耦,中间件最标准的用法是生产者生产消息传送到队列,消费者从队列中拿取消息并处理,生产者不用关心是谁来消费,消费者不用...

2019-06-06 17:11:38 526

原创 Redis 如何保持和 MySQL 数据一致

1.MySQL持久化数据,Redis只读数据redis在启动之后,从数据库加载数据。读请求:不要求强一致性的读请求,走redis,要求强一致性的直接从mysql读取写请求:数据首先都写到数据库,之后更新redis(先写redis再写mysql,如果写入失败事务回滚会造成redis中存在脏数据)2.MySQL和Redis处理不同的数据类型 MySQL处理实时性数据,例如...

2019-06-05 19:32:19 4893

原创 秒懂ThreadLocal使用及原理

最近一个小伙伴把项目中封装的日期工具类用在多线程环境下居然出了问题,来看看怎么回事吧日期转换的一个工具类publicclassDateUtil{privatestaticfinalSimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");public...

2019-06-05 19:02:38 552

原创 浅谈java8中的流的使用

我们在开发的过程中会大量的使用集合,集合可以将数据进行分组,处理,好多的处理数据的业务逻辑类似于数据库的操作,比如说对一系列的实体根据它其中的某个属性来分组,筛选,像这样的操作,数据库是允许你声明式的指定这些操作的。比如说:SELECTnameFROMappleWHEREweight<400;这样的业务逻辑,我们之前的代码实现都是for循环里面,填上一大堆的i...

2019-06-03 13:22:49 7514

原创 面试问你为什么要用Spring怎么答

每个人在面试的时候,Spring应该都是逃不过的关卡,能够熟练的使用,这并不难,知道它的底层原理才是高出别人一步的地方。这篇文章就说简单说下Spring的一些知识,希望能在面试的路上帮助到你们。Spring是个开源框架,它被创建出来的初衷就是解决企业级应用开发的复杂性。Spring不仅仅局限于服务端开发,任何的java应用都能借助于Spring变得更加简单,可测试性更强,松耦合性更好。为了...

2019-05-27 20:05:36 296

原创 面试问你链表和LinkedList怎么答?

LinkedList底层是链表实现的,那么我们首先说下什么是链表。和上篇文章的数组相比,链表要相对于更复杂一点,两者也是非常基础、常用,而且在面试中同时出现的概率也是很大的。上篇文章我们说到,数据是需要连续的内存空间来存储的,而链表刚好与它相反,链表是不需要连续的内存空间的,它是通过将好多的零散的内存使用“指针”串联起来使用,如果数组和链表都想在计算机中申请大小为10M的内存,而计算机中只...

2019-05-24 19:51:16 349

原创 面试官问你数组和ArrayList怎么答?

我在想每个人在面试的时候都会被问到集合相关的问题,有好大一部分人在回答的时候并没有那么多的逻辑性,通常都是想到哪里说到哪里,这篇文章大概的捋一捋关于集合的相关问题。在每种编程语言中,都会有循环、数组、流程控制语句,数组是一种线性表数据结构,内存空间是连续的,保存的数据类型也是一致的。正是因为这两点,数组的随机访问才会非常的高效,这同时也是一把双刃剑,使得数组的其他操作效率变得很低,比如说,...

2019-05-24 19:37:19 328

原创 Spring Boot 如何解决项目启动时初始化资源

在我们实际工作中,总会遇到这样需求,在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等。今天就给大家介绍一个 Spring Boot 神器,专门帮助大家解决项目启动初始化资源操作。这个神器就是CommandLineRunner,CommandLineRunner接口的Component会在所有Spring Beans都初始化之后,SpringApplica...

2019-05-24 18:22:57 1365 1

原创 Spring Boot 如何测试 打包 部署

开发阶段单元测试在开发阶段的时候最重要的是单元测试了, Spring Boot 对单元测试的支持已经很完善了。1、在 pom 包中添加spring-boot-starter-test包引用<dependency> <groupId>org.springframework.boot</groupId> <artifact...

2019-05-24 17:05:39 193

原创 Spring Boot Spring Boot 中 Redis 的使用

Spring Boot 对常用的数据库支持外,对 Nosql 数据库也进行了封装自动化。Redis 介绍Redis 是目前业界使用最广泛的内存数据存储。相比 Memcached,Redis 支持更丰富的数据结构,例如 hashes, lists, sets 等,同时支持数据持久化。除此之外,Redis 还提供一些类数据库的特性,比如事务,HA,主从库。可以说 Redis 兼具了缓存系统和数...

2019-05-20 20:10:23 110

原创 Spring Boot Web 综合开发

Web 开发Spring Boot Web 开发非常的简单,其中包括常用的 json 输出、filters、property、log 等json 接口开发在以前使用 Spring 开发项目,需要提供 json 接口时需要做哪些配置呢添加 jackjson 等相关 jar 包 配置 Spring Controller 扫描 对接的方法添加 @ResponseBody就这样...

2019-05-20 17:26:06 116

原创 Spring Boot 入门篇

构建微服务:Spring boot 入门篇什么是Spring BootSpring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,就是 Spring Boot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 Maven...

2019-05-14 20:07:36 121

原创 避免索引失效原则(二)

体验SQL优化中的概率情况在上一篇文章结尾处,我们在执行查询计划的时候,却发现我明明加了索引,并且也满足了使用索引的条件,但是,给我的优化结果却是失败,从而,得出一个结论便是,优化是概率的,也就跟彩票一样,不可能百分之百优化成功的,但是彩票我们都知道,全凭运气,但是这里就不一样了,我们需要了解SQL优化概率背后到底是谁导致它优化失败的;首先,我们来了解下,出现概率优化的原因:因为在SQL底...

2019-05-09 18:53:50 761

原创 避免索引失效原则(一)

避免索引失效的一些原则我们编写SQL语句后会进行添加一些索引进行优化,但是有时候确实建了索引,但索引有时候会失效;比如在模糊查询使用 in 关键字的时候索引就失效了,这只是其中的一个条件;1.复合索引的时候,不要跨列或无序使用(最佳左前缀)我在前几篇文章有重点介绍过;就比如你建立了一个索引 分别字段为a b c,你使用的时候却没有从a开始向后依次使用,而是使用了a c 把中间...

2019-05-09 18:51:22 325

原创 多表优化及细节详讲

优化准备首先我们需要有一个数据库,coursedb,分别创建course(课程表)、teacher(老师表),有以下字段,我们接下来将用以下这张表来做优化实例;teacher表里面的id 是代表一号老师教2号课程2号老师教1号课程3号老师教三号课程;id是主键course表就是课程表1号代表java课程2号代表python...cid是主键多表优化此次教程不再使用可视化工具...

2019-05-07 15:32:08 184

原创 单表优化及细节详讲

优化准备首先我们需要有一个数据库,bookdb,还要有一张数据表book,有以下字段,我们接下来将用以下这张表来做优化实例;单表优化此次教程不再使用可视化工具,因为效率太慢,我还是比较喜欢命令行操作;下面我们需要编写以下条件的SQL语句:查询authorid = 1并且 typeid为2或3的bid再根据typeid排序SQL语句:select bid from bo...

2019-05-07 15:22:30 309

原创 SQL优化 MySQL版 -分析explain SQL执行计划与Extra

ExtraExtraExtra有以下几个值,它们都非常重要,它们表示你的SQL语句的最终性能,以下将介绍它的几种值,每个值都代表你的SQL语句的缺陷:1.Using filesort主要出现在 order by 排序、复合索引跨列;order by 排序出现原因:查询a表,却根据b表排序,例如:select * From test01 where a = '3' ...

2019-04-20 19:32:48 616

原创 SQL优化 MySQL版 -分析explain SQL执行计划与Type级别详解

type索引类型、类型索引类型type我们可以清楚的看到type那一栏有index ALL eq_ref,他们都代表什么意思呢?首先类型有许多,这里我只给大家介绍企业里面用的最多的类型:system>const>eq_ref>ref>range>index>ALL越往左边,性能越高,比如system就比ALL类型性能要高出许多,其中sys...

2019-04-20 19:29:06 6576

原创 面试-1

一、解释堆(stack)、栈(heap)、方法区(method area)。 一般时候,定义一个基本数据类型的变量,函数方法的执行,一个对象的引用都是JVM的栈空间; 通过new关键字和构造器创建的对象都是占用的堆空间,堆是垃圾回收器主要场所。方法区和堆都是各个线程共享的内存区域,用于存储已经被JVM加载的类信息、常量、静态变量和编译器编译之后的代码,常量池也是方法区的一部...

2019-04-20 15:12:13 139

原创 SQL优化 MySQL版 -分析explain SQL执行计划

SQL优化 MySQL版 -分析explain SQL执行计划首先我们先创建一个数据库,数据库中分别写三张表来存储数据;course:课程表teacher:教师表teacherCarid:教师证表现在我把这三张表连起来查,查询条件:查询课程编号为2或教师证编号为3点老师信息;通过这个例子,我们就可以把explain里面的参数一个一个的讲讲:首先这个条件的主干是查询老...

2019-04-17 18:29:26 345

原创 SQL优化 MySQL版  - 索引分类、创建方式、删除索引、查看索引、SQL性能问题

SQL优化 MySQL版 - 索引分类、创建方式、删除索引、查看索引、SQL性能问题索引分类单值索引单的意思就是单列的值,比如说有一张数据库表,表内有三个字段,分别是 id name age,我给age这个字段加一个索引,这就是单值索引,因为只有age这一列是索引;一个表可以有多个单值索引,我不光可以设置age,我也可以吧name设置成索引,或许更多;唯一索引顾名思义,就...

2019-04-16 09:29:44 242

空空如也

空空如也

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

TA关注的人

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