自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (3)
  • 收藏
  • 关注

原创 Spring Cloud笔记

Spring Cloud 是一个基于 SpringBoot 实现的云原生应用开发工具,它为基于JVM的云原生应用开发中涉及的配置管理、服务发现、熔断器、智能路由、微代理、控制总线、分布式会话和集群状态管理等操作提供了一种简单的开发方式。为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等。单体架构...

2019-08-30 22:53:40 406

原创 资源汇总

Spring和SpringBoot比较 Spring和SpringBoot比较创建线程的方式实现线程安全的三种方式多线程高并发Java中锁的分类Redis缓存雪崩、击穿、穿透Redis哨兵、持久化、主从jdk常用apiJava版本特性垃圾回收GC性能优化lambdaWebSocketRESTfulSpringboot启动原理...

2019-11-12 09:38:46 193

原创 Redis面试题汇总

1、Redis分布锁是怎么实现的? 先拿setnx来争抢锁,抢到之后再用expire给锁加一个过期时间防止锁忘记释放。如果在setnx之后执行expire之前的进程意外crash或重启维护了,那会咋样?Set指令 有非常复杂的参数,可以同时把setnx和expire合成一条指令来用的。2、使用过Redis做异步队列么,你是怎么用的?有什么缺点? 一般使用list结...

2019-11-12 09:30:04 203

原创 面试前必须要知道的Redis面试题

记录一下Redis几道常见的面试题如何解决缓存雪崩? 如何解决缓存穿透? 如何保证缓存与数据库双写时一致的问题?缓存雪崩Redis不可能把所有的数据都缓存起来(内存昂贵且有限),所以Redis需要对数据设置过期时间,并采用的是惰性删除+定期删除两种策略对过期键删除。如果缓存数据设置的过期时间是相同的,并且Redis恰好将这部分数据全部删光了。这就会导致在这段时间内,这些缓...

2019-11-12 09:28:40 331

原创 Redis笔记 - 07

哨兵(Sentinel)机制如果主服务器挂了,由于我们的写请求由主服务器处理,只有一台主服务器,那就无法处理写请求了嘛?Redis提供了哨兵(Sentinel)机制供我们解决上面的情况。如果主服务器挂了,我们可以将从服务器升级为主服务器,等到旧的主服务器(挂掉的那个)重连上来,会将它(挂掉的主服务器)变成从服务器。这个过程叫做主备切换(故障转移)在正常的情况下,主从加哨兵(Sent...

2019-11-04 09:28:35 151

原创 Redis笔记 - 06

主从架构Redis也跟关系型数据(MySQL)一样,如果有过多请求还是撑不住的。如果只有一台Redis服务器的话,那随着请求越来越多:Redis的内存是有限的,可能放不下那么多的数据 单台Redis支持的并发量也是有限的。 万一这台Redis挂了,所有的请求全走关系数据库了,那就更炸了。显然,出现的上述问题是因为一台Redis服务器不够,所以多搞几台Redis服务器就可以了,为了...

2019-11-01 17:34:32 109

原创 Redis笔记 - 04

Redis事件Redis服务器是一个事件驱动程序,主要处理以下两类事件:文件事件:文件事件其实就是对Socket操作的抽象,Redis服务器与Redis客户端的通信会产生文件事件,服务器通过监听并处理这些事件来完成一系列的网络操作 时间事件:时间事件其实就是对定时操作的抽象,前面我们已经讲了RDB、AOF、定时删除键这些操作都可以由服务端去定时或者周期去完成,底层就是通过触发时间事件...

2019-11-01 15:37:53 131

原创 Redis笔记 - 03

Redis服务器中的数据库Redis服务器中也有数据库这么一个概念。如果不指定具体的数量,默认会有16个数据库。数据库与数据库之间的数据是隔离的。在数据库中所有键值对的存储结构为哈希表,如下所示:Redis的数据库就是使用字典(哈希表)来作为底层实现的,对数据库的增删改查都是构建在字典(哈希表)的操作之上的。过期策略:定时删除(对内存友好,对CPU不友好),到时间点上...

2019-10-31 17:25:31 145

原创 Redis笔记 - 05

Redis数据结构的对象为什么使用Redis,而不用map做缓存Java实现的Map是本地缓存,如果有多台实例(机器)的话,每个实例都需要各自保存一份缓存,缓存不具有一致性 Redis实现的是分布式缓存,如果有多台实例(机器)的话,每个实例都共享一份缓存,缓存具有一致性。 Java实现的Map不是专业做缓存的,JVM内存太大容易挂掉的。一般用做于容器来存储临时数据,缓存的数据...

2019-10-30 17:04:58 145

原创 消息中间件笔记 - 02

如何保证消息队列消息不被重复消费正常情况下,消费者在消费消息的时候,消费完毕后,会发送一个确认消息给消息队列,消息队列就知道该消息被消费了,就会将该消息从消息队列中删除。只是不同的消息队列发出的确认消息形式不同,RabbitMQ是发送一个ACK确认消息,RocketMQ是返回一个CONSUME_SUCCESS成功标志,Kafka消费过消息后,需要提交offset,让消息队列知道自己已经消费...

2019-10-22 17:05:33 235

原创 ehcache、memcache、redis三大缓存比较

Ehcache优点:速度快 使用简单,开发者提供的接口非常简单明了,从Ehcache的搭建到运用运行仅仅需要几分钟。 轻量级,核心程序仅仅依赖slf4j这一个包。 扩展性好,Ehcache提供了对大数据的内存和硬盘的存储,最近版本允许多实例、保存对象高灵活性、提供LRU、LFU、FIFO淘汰算法,基础属性支持热配置、支持的插件多。 监听器,缓存管理器监听器 (CacheMa...

2019-10-21 16:17:20 227

原创 sql优化

LIMIT分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般想到的办法是在 type, name, create_time 字段上加组合索引。这样条件排序都能有效的利用到索引,性能迅速提升。SELECT * FROM `operation` WHERE `type` = 'update' AND `name` = 'amigo' ORDE...

2019-10-16 10:47:15 183

原创 索引笔记

索引是什么?索引是帮助MySQL高效获取数据的数据结构。索引能干什么?提高数据查询的效率。索引:排好序的快速查找数据结构!索引会影响where后面的查找,和order by 后面的排序。一、索引的分类1、从存储结构上来划分:BTree索引(B-Tree或B+Tree索引),Hash索引,full-index全文索引,R-Tree索引。2、从应用层次来分:普通索...

2019-10-15 14:30:14 227

原创 Cron表达式

字段 允许值 允许的特殊字符 秒 0-59 , - * / 分 0-59 , - * / 小时 0-23 , - * / ...

2019-10-12 16:08:16 141 1

原创 Shiro笔记

架构要学习如何使用Shiro必须先从它的架构谈起,作为一款安全框架Shiro的设计相当精妙。Shiro的应用不依赖任何容器,它也可以在JavaSE下使用。但是最常用的环境还是JavaEE。下面以用户登录为例:1)使用用户的登录信息创建令牌UsernamePasswordToken token = new UsernamePasswordToken(username, passwo...

2019-10-08 16:55:44 168

原创 svn和git的区别

存储方式 SVN是按照文件的方式进行一个存储,而Git是按照元数据的方式将文件的一个版本存入了一个类似与K/V数据库。Git的内部有一个类似于K/V的数据库,我把他理解为是一个Map<K,V>,我们将内容存储到Git的数据库内后,Git会返回一个Key给我们,这个Key是唯一的(把一模一样的内容上传进去,这个key也是唯一的)使用方式SVN:只要...

2019-09-30 10:37:00 443

原创 网络协议

TCP/IP 不单单指的就是 TCP 和 IP 这两个协议,而是指的与其相关的各种协议。比如HTTP, FTP, DNS, TCP, UDP, IP, SNMP等等都属于 TCP/IP 协议族的范畴。TCP/IP协议的分层TCP/IP协议族是分层管理的,在OSI标准中可以分为7层(应用层、表示层、会话层、传输层、网络层、数据链路层、物理层,可记为:应表会传网数物),本文采用的是 T...

2019-09-25 23:13:50 128

原创 设计模式

设计模式需要遵从的原则 开闭原则:对扩展开放,对修改关闭。其含义是说应该通过扩展来实现变化, 而不是通过修改已有的代码来实现变化。 里氏代换原则:只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。 依赖倒转原则:这个是开闭原则的基础,对接口编程,依赖于抽象而不依赖于具体。 ...

2019-09-25 14:19:14 121

原创 MySQL笔记

1、关系型数据库的三范式 第一范式(1NF):是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。列数据的不可分割。 第二范式(2NF):要求数据库表中的每个实例或行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识(主键)。 第三范式(3NF):要求一...

2019-09-23 09:35:11 151

原创 正向代理与反向代理

正向代理正向代理(forward proxy):是一个位于客户端和目标服务器之间的服务器(代理服务器),为了从目标服务器取得内容,客户端向代理服务器发送一个请求并指定目标,然后代理服务器向目标服务器转交请求并将获得的内容返回给客户端。这种代理其实在生活中是比较常见的,比如科学上网技术,其用到的就是代理技术。有时候,用户想要访问某国外网站,该网站无法在国内直接访问,但是我们可以访问到...

2019-09-16 15:40:46 141

原创 随笔

JVM JVM也是一个软件,不同的平台有不同的版本。我们编写的Java源码,编译后会生成一种 .class 文件,称为字节码文件。Java虚拟机就是负责将字节码文件翻译成特定平台下的机器码然后运行。也就是说,只要在不同平台上安装对应的JVM,就可以运行字节码文件,运行我们编写的Java程序。 而这个过程中,我们编写的Java程序没有做任何改变,仅仅是通过JVM...

2019-09-12 17:00:10 199

转载 面向对象设计的六大原则

这篇文章主要讲的是面向对象设计中,我们应该遵循的六大原则。只有掌握了这些原则,我们才能更好的理解设计模式。单一职责原则——SRP 开闭原则——OCP 里式替换原则——LSP 依赖倒置原则——DIP 接口隔离原则——ISP 迪米特原则——LOD单一职责原则单一职责原则的定义是就一个类而言,应该仅有一个引起他变化的原因。也就是说一个类应该只负责一件事情。如果一个类负责了方法...

2019-09-05 16:20:02 219

原创 Spring笔记

Spring是j2ee应用程序框架,是轻量级的、非侵入式的容器框架,可以单独使用,也可以跟其它框架组合使用。1、什么是 Spring?Spring 是一个开源应用框架,旨在降低应用程序开发的复杂度。 它是轻量级、松散耦合的。 它具有分层体系结构,允许用户选择组件,同时还为 J2EE 应用程序开发提供了一个有凝聚力的框架。 它可以集成其他框架,如 Structs、Hibernate...

2019-08-27 14:54:45 166

原创 SpringBoot笔记

SpringBoot是一个开源框架,它可用于创建可执行的Spring应用程序,采用了习惯优于配置的方法。此框架的神奇之处在于@EnableAutoConfiguration注解,此注释自动载入应用程序所需的所有Bean——这依赖于Spring Boot在类路径中的查找。1、核心功能Springboot项目为独立运行的spring项目,java -jar xx.jar即可运行 内嵌...

2019-08-27 10:11:01 261

原创 SpringBoot 发送邮件

发送邮件应该是网站的必备拓展功能之一,注册验证,忘记密码或者是给用户发送营销信息,为了通知留言的用户,可以通过邮箱实现,SpringBoot 里面对发送邮件,集成起来十分简单方便,本篇文章介绍如何使用SpringBoot发送简单的邮件,复杂的邮件,以及qq邮箱设置。1、开启QQ邮箱的服务功能进入我的qq邮箱,设置 > 账户 >POP3/IMAP/SMTP/Exchange...

2019-08-23 11:22:40 303

原创 常用的正则表达式

正则表达式到哪都缺少不了,常用的几种先记录下,后续如有遇到再补充。1、匹配url的正则表达式var reg = /^((ht|f)tps?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-.,@?^=%&:\/~+#]*[\w\-@?^=%&\/~+#])?$/;使用说明:(1)、地址必须以http/https/ftp/ftps开头;(2)...

2019-08-23 09:40:16 918

原创 自动生成带昵称的头像(仿照钉钉头像)

很多场合都会出现默认头像,比如刚注册的账户还未自定义头像,显示就是默认头像,这种头像一般都很丑,想到钉钉那种风格还挺特别的,仿照写一个。废话不多说,直接上代码。import java.awt.*;import java.awt.geom.RoundRectangle2D;import java.awt.image.BufferedImage;import java.io.Fil...

2019-08-22 19:51:15 11514 4

原创 编码时的一些建议

1、尽量指定类、方法的final修饰符——虚拟机会想办法内联所有的final方法来减少方法执行时创建栈帧的数量,从而降低栈溢出的风险2、尽量重用对象——重复new对象会增加内存溢出的风险3、尽可能使用局部变量—— 一些局部变量是在栈中,免了垃圾回收过程4、及时关闭流——资源浪费问题5、尽量减少对变量的重复计算——list.size()在循环中的处理,如果list很多计算多次很耗性能...

2019-08-08 14:41:13 231

原创 打包生成.exe文件,包含jre环境

1、生成jar可执行文件选择项目启动类生成jar文件2、使用exe4j将jar生成exe文件打开exe4jexe4j注册注册码:A-XVK258563F-1p4lv7mg7savA-XVK209982F-1y0i3h4ywx2h1A-XVK267351F-dpurrhnyarvaA-XVK204432F-1kkoil...

2019-08-07 11:57:49 1210

原创 .bat文件启动jar,包含jre环境

1、项目打成jar包形式2、将java环境中的jre文件夹复制到打包文件夹下,并根据需要新建config、logs等文件夹,如下3、新建启动文件此处命名为startReferee.txt,添加一下内容后修改为startReferee.bat指定运行窗口的标题:title 窗口标题名。运行程序出错时防止程序自动退出窗口,以便查看报错内容:在指令最后一行 添加 pause...

2019-08-06 11:28:12 3664

原创 idea导出 maven项目的所有依赖的jar包

使用idea可以很方便的导出maven项目依赖的jar包,直接使用命令就可以进行导出dependency:copy-dependencies -DoutputDirectory=lib(备注:lib目录是指导出的文件夹名称)运行之后,会生成lib文件夹,打开lib文件夹,就能看到所有的导出的jar包...

2019-08-06 10:24:21 2202 1

原创 消息中间件笔记 - 01

一、介绍1. 消息中间件的定义没有标准定义,一般认为,采用消息传送机制/消息队列 的中间件技术,进行数据交流,用在分布式系统的集成2. 为什么要用消息中间件解决分布式系统之间消息的传递,用户下单减库存,调用物流系统。随着业务量的增大,需要对系统进行拆分(服务化和业务拆分),拆分后的系统之间的交互一般用RPC(远程过程调用)。如果系统扩充到有几十个接口,就需要用消息中...

2019-07-10 17:16:06 263

原创 CentOS7安装ActiveMQ

1、下载ActiveMQ下载:apache-activemq-5.14.3-bin.tar.gz2、上传解压安装创建activemq目录:mkdir -p /usr/local/activemq进入目录:cd /usr/local/activemq/上传安装包解压:tar -zxvf apache-activemq-5.14.3-bin.tar.gz...

2019-07-10 10:47:08 120

原创 CentOS7安装Elasticsearch

1、下载Elasticsearch下载:wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.0.tar.gz2、解压安装Elasticsearch解压: tar -zxvf elasticsearch-6.3.0.tar.gz移动到/opt目录:mv elastic...

2019-07-09 18:20:03 281

原创 CentOS7安装Redis

1、下载Redisstable是稳定版本,默认下载的是linux版本下载:https://redis.io/download2、上传解压并移动目录上传到 /mnt/ 目录下进入mnt目录:cd /mnt/ 解压redis:tar xzf redis-5.0.5.tar.gz把redis-5.0.5移动到/usr/local/ 目录下:mv redis...

2019-07-09 16:46:23 114

原创 Linux常用命令

时常会用到一些Linux 命令,汇总记录下1、ls:不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等常用参数搭配ls -a 列出目录所有文件,包含以.开始的隐藏文件ls -A 列出除.及..的其它文件ls -r 反序排列ls -t 以文件修改时间排序ls -S 以文件大小排序ls -h 以易读大小显示...

2019-06-25 16:59:25 257

原创 Lucene学习笔记(介绍与代码实现)

1、需求背景1.1、普通的数据库搜索select * from 表名 where 字段名 like ‘%吃饭睡觉敲代码%’1、没有通过高效的索引方式,查询的速度在大量数据的情况下是很慢2、搜索效果比较差,只能对用户输入的完整关键字首尾位进行模糊匹配。用户搜索的结果错误输入一个字符,可能就导致查询出的结果远离用户的预期1.2、新的业务需求1、即使在相关结果数量百万时,也...

2019-06-24 17:50:51 266

原创 MySQL的锁与存储引擎

一、MySQL 引擎1、MyISAM存储引擎不支持事务,不支持外键,只支持表锁,访问速度快对事务完整性没有要求,要求以select \ insert 为主的 应用基本上可以用这个引擎来创建表2、InnoDB 存储引擎 / MySQL默认 存储引擎支持事务,支持外键,支持行锁和表锁3、MEMORY 存储引擎查询快,存在内存,随时会丢失支持散列索引 和B树索引散...

2019-06-17 10:10:52 235

原创 Redis笔记 - 02

Redis的特性 Strings:Strings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字. 常用命令: set,get,decr,incr,mget 等。 常用方法: 获取字符串长度 往字符串append内容 设置和获取字符串的某一段内容 设置及获取字符串的某一位(bit) 批量设置一系列字符串的内容 Hash...

2019-06-14 15:27:09 430

原创 Redis笔记 - 01

之前用SpringBoot+MyBatisPlus+SpringMVC整合搭建了一个基础web开发框架,使用这三个框架搭建出来项目结构非常的清爽,没有过多的配置文件,各个模块之间有清晰的联系,非常适合敏捷开发。最近学习了Redis这个基于内存的,Key-Value数据形式的高性能数据库,感觉学习了入门之后很简单,没有体会到它具体能干嘛,我就想着使用Redis这个数据库来整合之前搭建的框架,利...

2019-06-13 16:03:18 239

在线考试源码

在线考试源码分享,欢迎大家交流学习

2019-03-29

SSM框架实现爬虫

java使用ssm框架实现网页爬虫效果,欢迎大家进行交流讨论

2019-03-29

SpringMVC实例

SpringMVC实例

2017-07-27

空空如也

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

TA关注的人

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