自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

润青

一入Kali深似海,从此狱友是家人

  • 博客(46)
  • 资源 (1)
  • 收藏
  • 关注

原创 MySQL索引详解篇

先来感受一下关于MySQL面试题的夺命连环炮。Q1:为什么使用索引? Q2: MySQL InnoDB、MyiSAM索引底层是怎么实现的有什么区别?Q3:为什么索引底层使用B+树实现,用红黑树或者AVL树不行吗?Q4:MySQL5.6版本对索引进行了哪些优化?Q5:ICP、MRR是怎么回事呢?Q6:索引什么情况下会失效呢?Q7:索引优化做过吗?怎么做的?Q8:索引最左匹配原则是怎么回事?等等问题...1、磁盘那些事先问大家个问题当你在SQL Windows中输入select * from u...

2020-10-02 20:42:20 399

原创 MySQL锁详解

1、锁是什么?锁是计算机协调多个进程或线程并发访问某一资源的机制。锁保证数据并发访问的一致性、有效性;锁冲突也是影响数据库并发访问性能的一个重要因素。锁是Mysql在服务器层和存储引擎层的的并发控制(以上内容来自必应)。通俗点来说锁机制就是用来管理对共享资源的并发操作,从而保证数据的正确性。2、MySQL InnoDB中锁的分类 为了准确我们直接去MySQL官网上来查找锁相关内容,通过下图我们可以看到InnoDB存储引擎中将锁分为8类,从上至下先来过一遍,第一个是行级别的锁即S锁和...

2020-10-02 20:32:14 5806 1

原创 如何干掉烦人的if-else

1、背景 在你的项目中是否可以看到成堆if-else语句呢?我们来想象一下一个支付场景,用户下单时需要判断当前订单是否为优惠或团购或促销等,那你首先想到的是根据当前订单类型来匹配所有的订单类型,满足哪一种就走对应的处理是吗?就比如下面这样这样做是可以实现功能,但我上架了新的活动这时候有新类型订单又该怎么办呢?当然你可以再判断一次不就是嵌套一次if-else吗?在一个大型项目中这样做是致命的,不仅仅代码冗余,而且耦合极高,我这里还只是用伪代码示例,真实开发中可能有几十个甚至几百个if-else,.

2020-06-06 11:51:30 770 1

原创 使用urlencoded和JSON方式传参给后端区别

1、如果前端使用urlencoded方式传参给后端的话,后端可以使用@RequestParam String xxx的方式接收,或者使用对象(对象中必须包含前端请求的字段)的方式接收2、如果前端使用JSON方式给后端传参的话,后端需要使用@RequestBody 对象 的方式接收使用上面1中的2种方式无法接收...

2020-03-17 16:16:40 952

原创 后端如何过滤敏感字段传参给前端

一、背景 之所以写这篇文章是因为最近一次和前端调试一个接口的时候,返给前端的字段有些是比较隐私的,涉及到用户的基本信息以及账户相关信息,因此是比较重要的,如果将这些信息显示在前端的话非常危险,因此我们需要把这些重要的字段隐藏掉。二、如何解决 如果你只需要给前端传一个字段如username那么你可以直接传因为这个信息不是重要的,那么完全可以不用我这种方法解决,但是如果之前是另...

2020-03-03 21:10:01 1647 1

原创 SpringBoot整合Swagger

一、为什么使用Swagger 在实际开发中我们作为后端总是给前端或者其他系统提供接口,每次写完代码之后不可避免的都需要去写接口文档,首先写接口文档是一件繁琐的事,其次由接口到接口文档需要对字段、甚至是排版等。再加上如果我们是为多个系统提供接口时可能还需要按照不同系统的要求去书写文档,那么有没有一种方式让我们在开发阶段就给前端提供好接口文档,甚至我们可以把生成好的接口文档暴露出去供其他系统...

2020-03-03 20:52:46 4256 4

原创 Jmter压测

一、压力测试以及Jmter安装 所谓的压力测试即通过模拟用户请求、并发数来测试系统所能承受的最大压力已经发现系统瓶颈。常见的压力测试工具有LoadRunner、Apache Jmter、WebLOAD等,本文介绍的是Jmter使用。 Jmter安装非常简单只需要进入到Apache Jmter官网进行下载,需要注意的是Jmter运行所依赖的JAVA环境必须是JA...

2020-02-28 09:03:54 338

原创 秒杀场景利用RabbitMQ进行异步下单

一、背景秒杀场景就不多做介绍了,本文只是讲解如果使用RabbitMQ进行异步下单,后续会有专门文章讲如何使用利用Jmter压力秒杀接口,接下来首先看下如果不使用异步下单的方式而是采用传统方式处理会有什么问题。二、传统模式传统处理:如果不涉及到redis的话最初用户请求进来的流程大概是先去数据库判断下当前用户是否已经秒杀过当前商品,如果秒杀过的话则返回秒杀失败不能重复秒杀,否则的话则执...

2020-02-22 23:15:28 4903 2

原创 SpringBoot中拦截器使用

一、如何使用拦截器1.1 为什么使用拦截器? 拦截器顾名思义即在请求真正接口逻辑时先经过拦截器拦截,通过拦截器之后才可以访问真正的业务逻辑接口,否则返回登录界面或做其他失败处理。1.2 SpringBoot中如何使用拦截器 首先在使用拦截器时先了解一个接口HandlerInterceptor,该接口中主要有3个方法分别为: 第一个方法preHandle执行时机是:...

2020-02-18 15:44:10 1603

原创 一文读懂线程池

前言今天来聊聊面试高频知识点,同时也是工作中经常会使用到的线程池。本文还是作为Disruptor导读。为什么要使用线程池只有先理解为什么会出现线程池才能更好地学习线程池,试想在没有线程池之前,我们想要使用多个线程来执行多个程序会怎么做呢?当然是一个个new线程出来,让它们分别执行程序,那么这么做有什么不好吗?弊端1:如果现在要处理的业务场景非常复杂,也就是说需要new大量的线程去执...

2019-06-16 12:39:10 374

原创 服务监控之HystrixDashBoard

一、简介我们知道Hystrix除了服务降级和服务熔断之外还可以提供准实时监控功能,它会持续记录通过Hystrix发起的请求信息,简单来说就是会将服务的请求调用情况以可视化的形式展现出来,方便维护微服务。二、SpringCloud中如何使用HystrixDashBoard2.1 新建一个HystrixDashBoard工程然后在pom文件中加入以下依赖2.2 编写app...

2019-04-01 11:05:12 284

原创 由垃圾海尔引发的思考

首先,我个人并不是水军,也没必要黑海尔,有些事真的是等到你自己经历了才知道一个垃圾国货能坑你到什么地步!一、为什么海尔是垃圾如果大家不相信的话可以去天涯、百度贴吧、知乎去看一下大家对海尔售后的评价,下面我先说一下我的真实经历吧,家里面去年买一款海尔电视,之所以当时选购是觉得毕竟海尔是国货大牌,总好过那些杂牌吧,现在想想呵呵了,电视还没用够一年就出现开机黑屏的情况,当时是在国美买的。于是给国...

2019-02-03 14:35:57 1213 1

原创 基于SpringBoot的密码找回功能实现

前言最近在做自己的项目,其中有一个大家都知道的功能就是找回密码。这里分享一下我的做法,因为这中间实在有太多坑了。所以记录一下。使用技术:SpringBoot1.5.6、JPA、SpringSecurity4、MySQL、BootStrap等等等。。。密码找回流程图:首先,先来给大家介绍一下密码找回的基本原理:接着,按照流程图我们来实现一下首先第一步是点击跳转到找回密码界面:...

2019-01-26 22:13:37 7650 3

转载 Nginx安装配置教程

本文转自:http://www.runoob.com/linux/nginx-install-setup.htmlNginx 安装系统平台:CentOS release 6.6 (Final) 64位。一、安装编译工具及库文件yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel二、...

2019-01-24 22:51:57 206

原创 解决Nginx启动报nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

原因是80端口被占用,不过最好在关闭80端口的时候先把防火墙关闭了使用service iptables status 查看防火墙的状态,如果是开启的状态就使用service iptables stop来关闭,之后关闭80端口使用:sudo fuser -k 80/tcp      关闭80端口然后重新启动:启动完成后访问一下: ...

2019-01-24 22:43:24 12859

原创 IDEA将web项目打成war包后部署到服务器上

一、如何在IDEA中新建web项目在web/WEB-INF下新建2个包:classes和lib然后开始配置:首先看一下Modules中有没有你刚才新建的web项目: 二、配置war包然后选择path选项:在里面主要是配置项目的资源路径,其实就是配置新建的classes接着配置刚才的lib包首先选中jar然后在弹出的页面中选中jar D...

2019-01-23 20:51:53 5428

原创 JDK1.8中regionMatches()解读

个人认为:其实本质上regionMatches就是submit和equals和equalsIgnoreCase的结合体,什么意思呢?我们先从equals说起:1、比较2个字符串是否内容相同很明显结果是false,因为equals比较的时候区分大小写:2、如果想不区分大小写比较内容呢?使用equalsIgnoreCase方法当然结果为true:3、假设现在有这么一...

2019-01-16 22:36:39 2049

原创 replace、replaceAll、replaceFirst的区别

大家可能都使用过replace来替换字符串,其实在大多数人的认知里,replace和replacAll的区别就是:一个是替换全部,一个是替换单个。。。其实这个认知是错误的!本质上来说replace和replaceAll可以达到一样的效果,比如String s = "abca"; 这时如果使用s.replace("a","x")的话就表示将a变为x结果就是xbcx,然而使用replaceAll也...

2019-01-16 21:56:19 8737

原创 去除字符串中间空格

经常会遇到这样的问题:使用SSM框架或者其他框架的时候,存入到数据库之前会将数据去除空格然后再存入,不然的话显示的时候或者在保存的时候会有问题。做法:如果是单纯的去除前后空格的话,可以使用trim()函数,但是中间空格是不可以去除的,有没有什么做法可以将中间的空格也去除呢?答案是可以:使用正则表达式来看个例子:解释一下:s是指定的一个前后中间都有空格的字符串,然后str用来接收并保...

2019-01-16 20:59:33 5113 1

原创 redis数据一致性

前言:所谓的redis数据一致性即当进行修改或者保存、删除之后,redis中的数据也应该进行相应变化,不然用户再次查询的时候很可能查询出已经删除过的脏数据。一、缓存一致的必要性还是接上篇来说,我们已经解决了redis缓存穿透的问题(简单解决方案,可以再次优化),但是使用redis的时候缓存一致性的问题我们也需要着重考虑,例如:保存了一个新用户之后,就应该同时在redis缓存中也插入该条数据...

2019-01-15 17:19:13 25123 4

原创 记一次redis缓存击穿问题

前言:首先先介绍下项目环境:SpringBoot+Redis+JPA等。之所以写这篇文章是为了总结下线上的一个击穿问题,以便于对redis有更为深刻的认识和理解。这里我就不使用项目中的代码了,使用自己的测试代码来说明主要问题。一、业务场景:使用redis的理由是在用户访问量很大的时候,如果一次次去从数据库中读取数据,无疑会增加数据库的负担(重要的数据当然还是要从库中读),但对于诸如...

2019-01-15 15:37:33 7808 6

原创 基于SpringBoot的QQ邮件发送

前言:不管是使用springboot或者ssm,或者是其他框架的时候,总是会有需求要求你去发邮件,比如说当你注册成功之后发一封邮件给用户,告诉他注册成功,或者当用户找回密码的时候也会发邮件验证,因此掌握发邮件还是有必要的。一、准备工作:首先,在pom.xml中导入邮件依赖导入依赖之后我们先来认识几个类:MailSender:是用来发送一个简单的邮件JavaMailSe...

2019-01-15 13:16:11 734

原创 SpringSecurity中使用MD5密码加密

前言:在上一篇中说到了SpringSecurity中的表单验证和权限控制,接下来说一下如果你在SpringSecurity中不使用默认的加密方式,而是使用自定义的加密方式,比如MD5,该如何继承呢?一、为什么使用加密我们先来说一下使用加密后的密码处理流程。我们为什么要使用密文呢?也就是加密后的密码呢?如果一个用户在网站注册时写入的密码是123456,当他点击保存之后,如果不加密的话,在...

2019-01-12 10:59:54 13650 2

原创 SpringBoot基于SpringSecurity表单登录和权限验证

一、简介上篇介绍了一个自己做的管理系统,最近空闲的时间自己在继续做,把之前登录时候自定义的拦截器过滤器换成了基于SpringSecurity来做,其中遇到了很多坑,总结下,大家有遇到类似问题的话就当是为大家闭坑吧。二、项目实现功能和成果展示首先来看下登录界面:这是我输入的一个正确的信息,点击登录后SpringSecurity会根据你输入的用户名和密码去验证是否正确,如果正确的话就去你定...

2019-01-11 16:16:11 68633 15

原创 基于SpringBoot的管理系统V1.0

技术点: SpringBoot、SpringSecurity、SpringJPA、Redis、Thymelaf、Dubbo、BootStrap等    项目简介:实现一个分布式的教务管理系统,分为教师系统、学生端系统、教务系统等管理系统,教师可以通过系统来预约教师、对学生信息进行CRUD、同时教师还可以上传自己的课程表,学生只可以下载不可以上传课表,不同角色拥有不同角色,可以通过权限对系统进行...

2018-12-29 19:01:15 9397 115

原创 搭建redis集群

背景:其实在之前搭建过的,不过版本是redis3.0.7的,后来集成SpringBoot有很多问题,低版本的redis中没有protected-mode等选项,对于集成会有很多问题,因此直接再搭建一个新的3.2.9的集群,顺便来温习下集群搭建。一、下载redis3.2.9的tar.gz包可以通过wget下载,或者下载到本地之后上传到Linux,这里选择第二种方法二、创建目录解压文件...

2018-12-27 15:43:15 133

原创 使用MockWire快速伪造REST服务

一、MockWire是什么?MockWire是一款可以快速模拟Api请求,可以让你进行广泛性测试。它用来模拟HTTP请求的API,你可以将它理解为将服务虚拟化的一个工具。二、为什么使用MockWire?    学习一门新技术最好的方式就是去看官方API,因此我们进入到MockWire的官网来看一下,在官方文档最开始有这么一段:It enables you ...

2018-12-20 12:39:00 220

原创 SpringBoot中配置SpringSecurityDialect无效

在项目中需要用到SpringSecurity,在配置方言后,发现SpringSecurityDialect类一直报找不到。后来查阅了好多资料才找到了对应的版本。具体配置如下:SpringSecurityDialect securityDialect = new SpringSecurityDialect();templateEngine.addDialect(securityDialect...

2018-12-03 10:23:04 1085

原创 Linux之YUM管理

前言:    由于YUM的指令并不多,因此在第四部分介绍下载Linux下搭建JavaEE开发环境,主要包括JDK、Tomcat 什么MySQL等和Redis、MongoDB一起吧。一、什么是YUM    接着昨天的RPM来说,YUM是基于RPM包管理的,能够从指定的服务器自动下载RPM包并安装,比起昨天的RPM是不是觉得好用多了,RPM你得先找到镜像文件,然后去Package里面找对应...

2018-11-13 13:15:50 628

原创 Linux实操指令第三部分

21、ln语法: ln -s 【原文件或目录也就是需要链接到的地方】【软链接名】相当于Windows里面的创建快捷方式应用实例在/home目录下创建一个软链接linkToRoot,连接到root目录[root@hadoop1 home]# ln /root linkTorootln: "/root": 不允许将硬链接指向目录[root@hadoop1 home]# ln...

2018-11-13 13:09:05 200

原创 Linux常用指令(第一部分)

想成为牛逼的黑客吗?学好Linux就够啦(其实是最近太忙了,每天更10个自己之前总结的Linux命令吧,周末有时间更文章)。1、添加用户useradd wanghao自动创建一个组cd /home/后发现自己创建了一个wanghao的组给刚创建的用户一个密码passwd wanghao 后输入密码修改默认的指定家目录useradd -d /home/dog ...

2018-11-13 13:07:32 279 1

原创 Linux实操指令(第二部分)

11、rmdir和rm -rf语法: rmdir[选项] 要删除的空目录应用实例: 删除一个目录/home/dog[root@hadoop1 home]# rmdir /home/dog[root@hadoop1 home]# cd /home[root@hadoop1 home]# lsanimal  wanghao  yy  zhangwuji 应用实例: 删除...

2018-11-13 13:05:51 237 2

原创 100行代码手写模拟一个ArrayList

一、ArrayList    首先ArrayList是一个List集合,底层的实现原理是数组,因此我们来手写模拟一下ArrayList,顺便复习下数组和数据结构。二、结果演示: 2.1、测试add()、set()、get()方法2.2、测试clear()方法2.3、测试remove()方法三、实现思路 get() 实现思路:    首先,需要自定义一...

2018-11-13 13:03:00 354

原创 100行代码手写模拟一个LinkedList

前言:    首先先说一下昨天的模拟ArrayList中的remove()方法,昨晚思考了一下,那么实现不太好,所以又想了一个新的算法,具体如下,假如现在需要remove的index是2,那么就从index+1位置到数组最后的size开始循环,依次把下一个值赋给上一个,比如说4赋值给3的位置,5到4的位置依次进行,这样3就被移除了。代码如下: 一、LinkedList、Arra...

2018-11-13 12:57:46 231

原创 Centos解决登录root显示bash4.1问题

 昨晚做了点Linux的练习然后一看今天登录root变成了bsah4.1,而不是原来的root结果是昨天错误操作删除了root中的配置文件具体恢复如下:     cp /etc/skel/.bash* /root/             从etc目录下复制.bash结尾的文件到/root中这里面有我们缺少的配置文件     ls -a /root/                 ...

2018-11-06 21:39:32 988

原创 SpringBoot系列FastJson篇之@JsonField

在实际运用中@JsonField主要有三个用处:1、修改和json字符串的字段映射【name】2、格式化数据【format】3、过滤掉不需要序列化的字段【serialize】首先声明在低版本中区分注解加在setter和getter方法,而高版本中可以直接加在属性上。如果使用的是Gradle构建项目的话,需要注意Gradle尽量也使用高版本的,示例1:private Stri...

2018-10-04 22:42:57 3926

原创 基于SpringBoot的微信订餐业务(第一章框架搭建和基本查询)

一、项目介绍和框架搭建    1.1、业务介绍    基于微信端的点餐业务,用户在微信端可以看到商品类目、商品详情(名称、价格、数量等基本信息),商家端分为2套系统,第一套系统即接单系统,商家可以看到用户下达的订单包括订单实时状态(未支付、已支付、取消)。商家端也可以对订单进行取消等操作,第二套系统是商家对商品的管理系统,商家可以对商品进行上架、下架、添加商品类目、删除商品类目、添加商品、...

2018-09-27 20:52:26 1161

原创 解决yum install docker后启动docker报错

安装完docker之后,systemctl start docker报错,解决办法如下:使用vi /etc/sysconfig/docker   进入到docker配置文件如下:之后将selinux-enabled设置为false,然后ZZ退出,之后systemctl start docker就可以...

2018-09-24 17:43:20 885

转载 SpringBoot--调用JpaRepository接口的save方法报错

JPA的两个注解@id和@GeneratedValue@id  标注用于声明一个实体类的属性映射为数据库的主键列。@GeneratedValue   用于标注主键的生成策略。(问题就出在这里)JPA为开发人员提供了四种主键生成策略,被定义在枚举类GenerationType中,包含(TABLE , SEQUENCE , IDENTITY , AUTO).先介绍下这四种策略:(1...

2018-09-14 11:14:17 1848

原创 IE10下弹出框右侧有滚动条解决办法

找到对应的页面css加入以下样式:html,body {    overflow:-Scroll;overflow-y:hidden}

2018-08-27 12:15:14 920

基于SSM框架的CRM有Mysql文件

本系统是基于SSM框架搭建的,实现了根据名称模糊查询客户,对客户进行基本CURD操作,以及下拉菜单显示查询等,数据库为Mysql,代码中有数据库文件。

2018-06-15

空空如也

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

TA关注的人

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