自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

盛小伟的博客

一个主修Java的在校大学生

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

原创 Java日志体系

Java的日志体系随着时间的飞逝,逐渐变得庞大,市面上流行着许多日志技术,例如:log4j,jcl,jul,slf4j… 市场上为什么会存在这么多的日志技术呢? 首先Java在开发的时候,自带了jul,但是jul没有配置文件,如果要修改日志记录的格式,那么就需要去改Java源代码。因为这个不便出现了带有配置文件修改格式的log4j。但是因为日志技术太多,项目存在日志不统一的情况,出现了jcl。后...

2020-02-14 20:26:30 226

原创 浅谈Spring核心 - SpringAop

一.Aop是什么?软件工程上要求:关注点分离,也即不同的问题交给不同的部分去解决。与OOP对比,面向切面,传统的OOP开发中的代码逻辑是自上而下的,而这些过程会产生一些横切性问题,这些横切性的问题和我们的主业务逻辑关系不大,这些横切性问题不会影响到主逻辑实现的,但是会散落到代码的各个部分,难以维护。AOP是处理一些横切性问题,AOP的编程思想就是把这些问题和主业务逻辑分开,达到与主业务逻辑解...

2020-01-27 21:38:15 449

原创 浅谈Spring核心-SpringIOC

一.什么是Spring-IOC?控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)粗俗的讲,Spring-IOC的出现就是为了解决项目中耦合度过高的问题,将对...

2020-01-17 20:34:22 550 1

原创 浅谈Tomcat生产环境配置与应用

一.Tomcat的简介Tomcat是一个基于JAVA的WEB容器,其实现了JAVA EE中的 Servlet 与 jsp 规范,与Nginx apache 服务器不同在于一般用于动态请求处理。在架构设计上采用面向组件的方式设计。即整体功能是通过组件的方式拼装完成。另外每个组件都可以被替换以保证灵活性。 从本质上讲,tomcat作为一个解析jsp/servlet的容器二.Tomcat架构以及...

2020-01-13 21:54:13 533

原创 MySQ慢查询+索引与执行计划

一.慢查询1.什么是慢查询?慢查询日志,顾名思义也就是查询慢的日志(记录数据库事件, 协助用户分析和解决问题),是指mysql记录所有执行超过long_query_time参数设定的时间阀值得SQL语句得日志。该日志可以为SQL语句的优化带来很好的帮助。默认情况下,慢查询日志是关闭的,要使用慢查询日志的功能,首先要开启。2.慢查询配置查看慢查询日志查询日志中,各行内容代表的意思...

2019-08-07 22:08:11 366

原创 MySQL事务

1.事务的概念在现行软件中,多用户,多程序,多线程已经是普遍现象,那么避免不了一张数据表多用户一起在操作。为保持这些用户的数据一致性,提出了事务的概念。例如:用户A给用户B通过账户进行转钱,用户A转走了,余额-1000,B余额就需要+1000。所以最稳妥的方法是这两个Update作为一个整体来执行。否则用户A-1000,B的+1000,没有出现或者出现晚了都是一种非常棘手的情况。2.事务的特...

2019-08-03 18:26:29 376

原创 MySQL的锁(表锁与行锁)

1.锁为什么需要锁?在实际中,比如在淘票票抢电影票,A用户和B用户都想要要2排2座,那么它们必然只有一个人能抢到。在这个过程中,使用锁可以对有效的资源在并发的环境下进行保护,解决隔离和并发的矛盾。什么是锁?锁是计算机协调进程和线程在并发情况下访问某一资源的协调机制在数据库中,数据是提供给多用户的共享资源,锁是用来保证资源的有效性和一致性2.Mysql锁MySql锁机制的特点是在不...

2019-07-30 12:22:44 266

原创 Mysql优化与储存引擎

1. Mysql的性能指标mysql性能的参考指标是TPS、QPS和等待响应时间。TPS=(事务提交数量+事务回滚数量)/服务器启动的时间QPS=(查询的数量)/服务器启动的时间等待响应时间=返回结果的时间-执行开始的时间Mysql5.1.x版本后带入了很多实用的测试工具,能够自动测试高并发下,多用户的多查询性能数据,例如MySqlSlap。在命令窗口下,输入一些操作参数,即可按参...

2019-07-27 10:31:19 466

原创 线程池

在当前实际开发中,我们已经很少见到能单独使用Thread或Runable的场景。更多的是用线程池。线程池即会初始化创建一些线程,这些线程当任务来临的时候,会立即去处理任务,在任务完成后也不会进行销毁,而是等待下一个任务的到来。1.为什么要使用线程池?(1)线程的创建和销毁都需要时间,那么理论上我们创建线程执行任务,包含的时间是 创建的时间T1、执行任务的时间 T2、销毁的时间T3。所以执行...

2019-07-24 16:27:43 173

原创 并发容器

在Java常见的容器中,比如ArrayList,HashMap,HashSet等都没有考虑到线程并发的安全问题,所以用来储存并发的线程是十分不安全的。例如用HashMap ,put去储存线程,会造成CPU使用率100%的严重后果。你可能会想到HashTabe这个容器,确实它是线程安全的,但是你深入HashTable的源码会发现,它的方法是用synchronized去修饰的,这样会造成在高并发线程(...

2019-07-18 09:49:58 329

原创 显示锁和AQS

一.什么是原子操作?如何实现原子操作?原子操作即为操作的最小单元,比如i=1,这样一个简单的赋值操作便是原子操作。再例如i=i+1就不是一个原子操作,因为这个语句包括了读取i,i+1,将结果写入内存。这三个操作单元。保证原子操作即保证这三个单元在操作中具有原子性,也就是保证这个操作单元在操作中,不能因线程竞争等情况而被打断。如果操作单元被打断,那么计算结果会发生变化,也就无法保证线程的安全。那...

2019-07-12 09:28:23 202

原创 线程并发的工具类

线程轮巡机制虽然很常见,但是有一定的弊端,例如:米饭15分钟后焖好,但是没有提醒,那么你需要多次去查询是否到15分钟,查询的过程很浪费资源,并且容易处理不及时。所以线程协作中更多的是生产者和消费者。一.等待和通知的标准范式等待方:(1)获取对象的锁(2)循环判断条件是否与自己相符合,不符合则调用wait(),继续等待(3)条件满足,则执行业务逻辑通知方:(1)获取对象的锁(2)改变...

2019-07-04 08:58:21 152

原创 线程的基础概念和共享协作

java程序天生就是多线程的,每一个程序的运行都包含多个线程的协作。多线程的好处在于1.可以充分利用计算机资源 2.使程序响应更加快速,但是任何事情都有其两面性。缺点也同样存在,1.多线程对计算机硬件(cpu,内存等)要求较高 2.计算机资源有限,太多的线程运行,会导致上下文频繁切换,甚至出现死锁等情况,出现非预期效果。一.查看程序线程查看简易Main程序线程public class M...

2019-06-27 21:24:35 326

原创 SpringBoot学习笔记-SpringBoot环境配置

SpringBoot中简便最大的原因在于取消了个性化设置,例如,并不像Spring中applicationContext.xml文件,名字和个数都可以个性化进行设置,而SpringBoot中必须是在application.properties文件中进行环境相关项配置,名称都无法随意进行更改,但是SpringBoot支持了两种文件格式,properties和YAML文件(YAML文件的优势在于更好...

2019-06-09 19:48:30 260

原创 轻量级分布式文件系统FastDFS安装与配置

二进制文件(图片以及视频)通过储存服务器自身内存,以数据库地址方式查询,这样大大需要服务器具有高性能的cpu以及大量的内存,造成成本过高.FastDFS的出现用于储存较大的视频和图片文件,其不需要较高的cpu运算性能,服务器有较大的内存即可,所以成本较低FastDFS分为tracker,storage,client三部分,tracker是储存storage元信息和操作信息的.storage是真...

2019-06-01 16:30:09 423

原创 Spring整合RabbitMQ生产者和消费者

一.所需jar包序号jar1spring-rabbit-1.7.3.jar2spring-ampq-1.7.3.jar3ampq-client-4.1.1.jar4junit-4.12.jar5spring-test-4.3.8.jar二.配置Spring配置文件配置spring-consumer.xml三.运行测试类运行生产...

2019-05-31 18:03:15 1286

原创 RabbitMQ之交换器的三种模式

交换器(exchange)的最大作用一方面在于接收生产者的信息,另一方面在于发送消息到不同的队列,RabbitMQ中交换器被分为三类:fanout,topic,director1.广播模式(fanout)广播模式:生产的每一条消息,由所有消费者进行处理操作图片参考自网络消费者程序生产者交换器核心代码 //信道绑定交换器 channel.exchangeDeclare(EXCH...

2019-05-29 17:37:12 2364

原创 RabbitMQ虚拟主机

虚拟机概念是RabbitMQ的核心,在用户未自定义虚拟机前已经内置有虚拟机,在使用RabbitMQ中,可以进行自定义配置虚拟机.一个虚拟机中可以含有多个队列信息虚拟机最大的好处在于可以根据不同的用户分配不同的操作空间一.创建虚拟机1.通过RabbitMQ Managerment进行创建点击admin进入虚拟机界面创建虚拟机进行所属用户授权2.通过命令行进行创建打开r...

2019-05-28 17:05:59 5565

原创 RabbitMQ消息持久化

在某些特定场景中,队列中的数据十分重要,比如当客户需要确认支付时的验证码,这时候如果服务器突然出现了故障,那么队列中的消息必须存在,不能丢失.这种消息需要进行持久化处理.这也是RabbitMQ的一大特色,消息可靠性消息持久化:在服务器出现故障后,消息依旧存在于队列之中.一.queue的持久化queue的持久化通过durable=true来实现,信道的第二个参数即durablechann...

2019-05-28 16:19:44 398

原创 RabbitMQ工作队列

如果一个生产者对应多个消费者就代表一个工作队列,工作队列最大的特点在于,一个生产者对应多个消费者队列会自动进行负载均衡处理,每个消费者消费的信息均衡模型实例此时候需要建立3个消费者和1个生产者进行测试(1)生产者public class MessageProducer { //RabbitMQ服务所在地址 public final static String HOS...

2019-05-28 15:19:06 523

原创 RabbitMQ消费者与生产者示例

一.搭建消费者程序所需jar包,在Rabbitmq中版本不匹配是很常见的问题,所以如果版本不匹配,需要及时进行更换操作序号jar1amqp-client-4.1.1.jar2

2019-05-27 20:44:50 3382

原创 RabbitMQ安装与配置

RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。RabbitMQ常见使用场景,例:(1)用户注册后,需要发注册邮件和注册短信. (2)双11是购物狂节,用户下单后,订单系统需要通知库存系统,传统的做法就是订单系统调用库存系统的接口. (3)秒杀活动,一般会因为流量过大,导致...

2019-05-25 12:57:09 638

原创 redis序列化缓存shiro权限角色

当权限信息存放在数据库中时,对于每次前端的访问请求都需要进行一次数据库查询。特别是在大量使用shiro的jsp标签的场景下,对应前端的一个页面访问请求会同时出现很多的权限查询操作,这对于权限信息变化不是很频繁的场景,每次前端页面访问都进行大量的权限数据库查询是非常不经济的。shiro eache缓存方案有效解决了这个问题,但是多台服务器操作的时候就会产生一个问题,一个用户多次登陆,负载均衡可能把...

2019-05-24 10:45:39 2263

原创 redis cluster+spring+shiro实现session集群共享

Spring Date是Spring的一个子项目,它的诞生用于简化数据库访问,即支持NoSql数据也支持关系型数据库,让数据库数据的操作变得更加简单,下面主要实现的是Spring Date操作redis数据库1.添加所需的Jar包<!--jedis--> <dependency> <groupId>redis.clients</gr...

2019-05-23 19:45:48 1071

原创 Redis高可用集群Redis Cluster的搭建

Redis-Cluster是从redis 3.0版本之后,官方退出的一款高可用集群,其效果和业内常用的 KeepAlived+HAproxy+Twemproxy+redis实现的集群在功能上是大致相同的,但是redis-cluster更加简单.一.redis-cluster架构图二.redis-cluster选举机制redis cluster 为了保证数据的高可用性,加入了主从模式,...

2019-05-22 17:28:40 1163

原创 shiro+cas+tomcat在ssm项目中实现单点登陆

Shiro是一个强大且易用的JAVA框架,在保持强大功能的同时,还在简单性和灵活性方面拥有巨大优势。Shiro是一个强大而灵活的开源安全框架,能够非常清晰的处理认证、授权、管理会话以及密码加密。在单点登陆中,所有的WEB端安全验证都交由CAS完成,用以实现"单点登陆,遍地开花".1.架构设计图在此架构中,WEB浏览器和WEB服务端通过证书双向验证,CAS客户端与CAS服务器端进行证书双向验证...

2019-05-21 16:53:00 1532

原创 CAS单点登陆密码加密处理

在当前的网络环境下,使用未加密的密码进行储存,极易遭受破解.所以在现在的开发中,所有注重安全的网站都会进行哈希算法加密处理,常用的哈希算法由MD5加密或SHA1加密处理,本文采用MD5进行演示,有兴趣的小伙伴可以自己尝试SHA1加密.为了防止用户输入简单的密码123456等,被轻易恶意破解,所以还要对密码进行加盐处理,根据自己网站的特殊规律设置,使密码加盐1.首先我们需要把MD5.class...

2019-05-18 16:04:27 4642

原创 单点登陆CAS使用Mysql数据库中用户和密码进行验证

1.首先准备两台服务器进行测试服务器IP功能Tomcat CAS Server192.168.73.146运行Tomcat和CAS服务器Mysql Server192.168.73.147运行Mysql数据库2.启动Mysql数据3.创建数据库以及数据表创建数据库以及数据表DROP DATABASE IF EXISTS shirodb ;CRE...

2019-05-17 17:36:52 1004

原创 CAS基础配置

CAS是Central Authentication Service的缩写,中央认证服务,一种独立开放指令协议。CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。1.CAS验证流程图本质上角色权限验证的服务,将不再由WEB端负责,还是重定向给CAS进行处理,以便实现单点登...

2019-05-17 15:14:25 1258

原创 Tomcat配置HTTPS访问

在tomcat中存在两种证书验证情况 (1)单向验证 (2)双向验证1.tomcat单向认证服务器端会提供一个公开的公钥,每一个访问此服务器的客户端都可以获得这个公钥,此公钥被加密后,服务器端可以进行解密处理,之后验证是否配对配置1.进入tomcat目录,编辑server.xml找到端口号为433的配置段,433是访问HTTPS的端口号添加如下内容<Connector po...

2019-05-17 11:00:31 94416 11

原创 OpenSSL生成证书流程

1.什么是SSL证书?首先来了解下,现在HTTP协议中为什么增加了SSL证书,HTTP协议以明问发送请求在传递数据的过程中可能被黑客进行监听和盗取,是极度不安全的,所以产生了HTTPS协议,HTTPS协议可以看成是HTTP+SSL的结合体(1)网站实现加密传输用户通过http协议访问网站时,浏览器和服务器之间是明文传输,这就意味着用户填写的密码、帐号、交易记录等机密信息都是明文,随时可能...

2019-05-16 20:36:38 2834 1

原创 Zookeeper在集群中的应用

Zookeeper在服务器集群中的应用因为每台服务器都可以安装zookeeper,并且只要在一台服务器上进行登陆客户端,便可以对所有节点情况进行查看,那么可以利用这一特性,可以有效的监控集群中服务器情况动态列表每台服务器都创建维护一个瞬时节点,这样一旦某台服务器出现了故障,那么其创建维护的瞬时节点就会消失,此时在动态的列表中,出现故障的服务器维护的节点就会不存在,这样,便可以有效监控...

2019-05-11 14:49:07 3034

原创 Zookeeper数据处理方法

Zookeeper的数据处理方法1.create方法public String create(final String path, byte data[], List acl,CreateMode createMode)throws KeeperException, InterruptedException参数解释:参数解释String path进行创建的节点...

2019-05-10 19:41:15 2825 1

空空如也

空空如也

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

TA关注的人

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