自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 RR级别下加锁分析

mysql数据操作加锁分析什么是幻读间隙锁加锁规则案例一:等值查询间隙锁案例二:非唯一索引等值锁案例三: 主键范围索引案例四:非唯一索引范围锁唯一索引范围锁bug案例六:非唯一索引上存在“等值”的例子案例七:limit语句加锁什么是幻读幻读:在RR(可重复读)的隔离级别下,由于另一个事务的插入操作,导致前后两次读取(当前读)数据不一致。如下图:为了防止出现幻读的现象,就需要锁住两条记录之间...

2020-04-13 11:24:44 1152

原创 Mysql日志模块

Mysql日志模块redo log(重做日志)binlog(归档日志)两种日志的区别更新操作change buffer v.s. redo logredo log(重做日志)WAL技术(Write-Aheading Logging): 他的主要思想是先写日志再执行操作。如果一条记录需要更新,先将更新记录写在redo log日志中,innodb引擎会在合适的时刻执行相应的更新操作。Inno...

2020-04-08 19:44:55 212

原创 Redis基础数据结构

redis--基本数据结构以Docker的方式运行redis实例Redis基本数据结构String (字符串)list(列表)hash (字典)set (集合)zset (有序集合)容器型数据过期时间以Docker的方式运行redis实例#拉取redis镜像docker pull redis#运行redis容器docker run --name myredis -d -p6379:63...

2020-03-29 16:59:14 202

原创 权限验证——OAuth2

什么是OAuth2OAuth2是开放授权的一个标准,旨在让用户允许第三方应用去访问改用户在某服务器中的特定私有资源,而可以不提供其在某服务器的账号密码给到第三方应用。通俗的话可以这样去理解,假如你们公司正在开发一个 第三方应用XXX,该应用会需要在微信中分享出来一个活动页,该活动需要让微信用户去参与,你们的应用需要收集到用户的姓名,头像,地域等信息,那么问题来了?你的应用如何才能拿到所有参...

2019-12-15 10:54:30 556

原创 Spring security oauth2 简单配置

配置认证服务器pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="ht...

2019-12-15 10:54:17 514

原创 SpringBoot2.0 学习笔记(一)多数据源配置

1.pom.xml文件配置<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId&g...

2019-12-15 10:54:03 102

原创 SpringBoot2 学习笔记(二) Aop、Cache缓存、swagger2

Aop1.引入Aop对应依赖pom.xml<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>2. 自定义...

2019-12-15 10:53:53 301

原创 SpringBoot2 学习笔记(三)——使用Spring Boot Admin监控服务

简介使用Actuator来监控Spring Boot应用,其提供了许多REST接口来查看应用的信息。但其返回的是大量的JSON格式数据,信息看上去不直观也不易于理解。而Spring Boot Admin(SBA)是一款基于Actuator开发的开源软件:https://github.com/codecentric/spring-boot-admin,以图形化界面的方式展示Spring Boot应...

2019-12-15 10:53:28 212

原创 SpringBoot2 学习笔记(四)——使用Jsoup防御XSS攻击

什么是XSS攻击跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。使用Jsoup可以有效的过滤不安全的代码。Jsoup使用白名...

2019-12-15 10:53:16 625

原创 Springboot2学习笔记(五)——自动装配

模式注解Stereotype Annotation俗称为模式注解,Spring中常见的模式注解有@Service,@Repository,@Controller等,它们都“派生”自@Component注解。@Component的派生注解都可以注入到IOC容器里。@Enable注解@Enable模块驱动在Spring Framework 3.1后开始支持。这里的模块通俗的来说就是一些为了实现某...

2019-12-15 10:52:58 128

原创 SpringBoot2学习笔记(六)——SpringApplication

1.Spring Application生命周期在Spring Boot的入口类中,我们通常是通过调用SpringApplication的run方法来启动Spring Boot项目。这节我们来深入学习下SpringApplication的一些细节。SpringApplication生命周期分为两个部分:准备阶段和运行阶段。一、 准备阶段public SpringApplication(Re...

2019-12-15 10:52:47 247

原创 SpringBoot2学习笔记(七)——内容协商

内容协商内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源。内容协商会以响应资源的语言、字符集、编码方式等作为判断的基准。组件名称说明ContentNegotiationManager内容协商管理器ContentNegotiationStrategy 控制策略MediaType媒体类型 HTTP消息媒体类型,如 text...

2019-12-15 10:52:40 584

原创 Session共享方式

Session共享方式标签(空格分隔): javaweb session sso服务器之间共享两个服务器通过同步session实现session共享缺点:如果机器多了,就会出现大量的网络传输,甚至容易引起网络风暴,导致系统崩溃,只能适合少数的机器。Spring-Session实现原理就是当Web服务器接收到http请求后,当请求进入对应的Filter进行过滤,将原本需要由web服务...

2019-12-15 10:49:47 159

原创 Shiro笔记

权限验证——Shiro标签(空格分隔): 权限验证 springcloud springsecurity shiro gatewayShiro单体应用权限管理简介Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等。Authentication:身份认证/登录...

2019-12-15 10:49:33 434

原创 Spring包装请求

Java 工具 —— 包装Servlet标签(空格分隔): java 工具类 servlet前言:在日常的接口开发中,经常需要对接口参数生成签名,以验证请求是否被修改。但目前通用的请求格式都以json数据作为参数,这种需要获取流对象来读取数据,这样,如果在拦截器中进行读取验证,在之后Controller中的参数封装就会报错,因为流数据只能读取一次。request的请求参数获取方式一、...

2019-12-15 10:49:27 280

原创 Java 动态代理

Java动态代理机制详解标签(空格分隔): 动态代理 cglib jdk动态代理使用场景可以在运行的时候才切入改变类的方法,而不需要预先定义它。通过动态代理,我们可以实现类的增强,可以像AOP那样在方法执行之前,或者之后,执行安全、日志等操作。例如依赖注入的@Bean、@Autowired,事务注解@Transactional等都有用到,换言之就是Srping的AOP(切面编程)。...

2019-12-15 10:49:14 154

原创 Spring Cloud 学习笔记(一)——Eureka服务治理

服务治理所谓服务治理就是用来实现各个微服务实例的自动化注册与发现,在这种模式下,服务间的调用不再通过指定具体的实例地址来实现,而是通过向服务注册中心获取服务名并发起请求调用实现。Eureka是由Netflix开发的一款服务治理开源框架。Eureka服务端是一个服务注册中心(Eureka Server),提供服务的注册和发现,Eureka客户端为服务提供者(Server Provider),它将...

2019-12-15 10:49:02 111

原创 SpringCloud学习笔记(二)——负载均衡

负载均衡为了提高服务的可用性,我们一般会将相同的服务部署多个实例,负载均衡的作用就是使获取服务的请求被均衡的分配到各个实例中。负载均衡一般分为服务端负载均衡和客户端负载均衡,服务端的负载均衡通过硬件(如F5)或者软件(如Nginx)来实现,而Ribbon实现的是客户端负载均衡。服务端负载均衡是在硬件设备或者软件模块中维护一份可用服务清单,然后客户端发送服务请求到这些负载均衡的设备上,这些设备根据...

2019-12-15 10:48:02 234

原创 Spring Cloud学习笔记(三)——服务容错Hystrix

为什么需要服务容错在微服务的架构中,服务间通常会形成相互依赖的关系,比如现在有三个微服务节点:A,B和C,B为A的消费者,C为B的消费者。假如由于网络波动或者A服务自身故障,导致B调用A服务的线程被挂起进入长时间的等待。在高并发的情况下可能导致B的资源被耗竭随之崩溃,从而导致C服务也不可用。这种连环式的雪崩效应在微服务中较为常见,为了解决这个问题,服务熔断技术应运而出。熔断一词来自电路学,指的是...

2019-12-15 10:47:53 152

原创 Spring Cloud学习笔记(五)——Zuul服务网关

简介在微服务的架构中,服务网关就是一个介于客户端与服务端之间的中间层。在这种情况下,客户端只需要跟服务网关交互,无需调用具体的微服务接口。这样的好处在于,客户端可以降低复杂性;对于需要认证的服务,只需要在服务网关配置即可;同样也方便后期微服务的变更和重构,即微服务接口变更只需在服务网关调整配置即可,无需更改客户端代码。Spring Cloud Zuul入门zuul使用新建Springboo...

2019-12-15 10:47:42 141

原创 Spring Cloud学习笔记(六)——Spring Cloud Config统一配置管理

简介Spring Cloud Config可以对微服务配置进行统一的外部管理,并且默认采用Git来管理配置信息。相对于传统的每个微服务对应一份自个儿的配置文件来说,通过Spring Cloud Config统一管理所有微服务配置具有如下优点:1.集中管理微服务配置,当微服务数量众多的时候,使用这种方式会更为方便;2.通过Git管理微服务配置,方便追踪配置修改记录;3.可以在应用运行期间修改配置,...

2019-12-15 10:47:28 159

原创 SpringCloud学习笔记(七)——使用Spring Cloud Bus刷新配置

简 介在前面Spring Cloud Config中,我们讲了如何在git配置中心发生变化时,如何不通过重启config client来达到获取更新之后的配置的目的。但是,这种方式只对单个Config-Client有效(往哪个Config-Client发送刷新请求,哪个配置就得到刷新,剩下的Config-Client获取的仍是旧的配置信息)。当Config-Client实例集群数量较多时,如果都...

2019-12-15 10:47:04 104

原创 SpringCloud学习笔记(八)——使用Spring Cloud Sleuth跟踪微服务

简介在微服务数量较多的系统架构中,一个完整的HTTP请求可能需要经过好几个微服务。如果想要跟踪一条完整的HTTP请求链路所产生的日志,我们需要到各个微服务上去查看日志并检索出我们需要的信息。随着业务发展,微服务的数量也会越来越多,这个过程也变得愈发困难。不过不用担心,Spring Cloud Sleuth为我们提供了分布式服务跟踪的解决方案。为了演示如何使用Spring Cloud Sleuth...

2019-12-15 10:46:40 134

原创 SpringCloud学习笔记(四)——声明式服务调用feign

简介前面我们分别通过Spring Cloud Ribbon和Spring Cloud Hystrix实现了客户端负载均衡和服务容错,而Spring Cloud Feign不但整合了这两者的功能,而且还提供了一种比Ribbon更简单的服务调用方式 ——— 声明式服务调用。在Spring Cloud Feign中编写服务调用代码非常简单,几乎可以直接将服务提供者的代码复制过来,改为接口即可,下面通过...

2019-12-15 10:46:34 139

原创 Docker初识(一):镜像及指令操作

什么是镜像Docker镜像是由文件系统叠加而成。最底端是一个引导文件系统,即bootfs。当一个容器启动后,它将会被移动到内存中,而引导文件系统则会被卸载,以留出更多的内存供initrd磁盘镜像使用。Docker镜像的第二层是root文件系统rootfs,它可以是一种或多种操作系统(如Debian或者Ubuntu文件系统)。Docker里,root文件系统永远只能是只读状态,并且Docker...

2019-12-15 10:46:20 222

原创 Docker初识——Docker Networking

Docker连接主要有三种方式:1. Docker内部网络(不灵活)2. Docker Networking以及docker network命令(推荐)3. Docker链接Docker内部连网在安装Docker时,会创建一个新的网络接口,名字是docker0。每个Docker容器都会在这个接口上分配一个ip地址。ip a show docker0docker0是一个虚拟的以太网...

2019-12-15 10:46:03 628

原创 Docker初识(三)——Java应用服务

获取Tomcat 服务器上的WAR文件,并运行一个Java应用程序。构建一个Docker管道。WAR文件的获取程序构建一个镜像,这个镜像会下载WAR文件并将其挂载在卷里。mkdir fetchercd fetchertouch Dockerfile编写Dockerfile文件内容FROM ubuntu...

2019-12-15 10:45:35 101

原创 机器学习笔记DAY1

一些基础术语从数据中学得模型的过程称为学习或训练,这个过程通过执行某个学习算法来完成,训练过程中使用的数据称为训练数据,其中每个样本成为训练样本,训练样本组成的集合称为训练集。如果预测的是离散值,此类学习任务称为分类,如果我们预测的是连续值,此类学习任务称为回归。对西瓜做聚类将训练集中的西瓜分成若干组,每组称为一个簇,这些自动形成的簇可能对应一些潜在的概念划分。在聚类学习过程中,...

2019-12-15 10:45:11 455

原创 机器学习Day2——线性模型

基本形式给定由d个属性描述的示例 x=(x1,x2,…,xd),其中xi是x在第i个属性上的取值,线性模型试图学的一个通过属性的线性组合来进行预测的函数,即一般用向量形式写成其中 w=(w1,w2,…,wd),w和b学得之后,模型就可以确定了。模型求解我们试图学得这称为”多元线性回归“。我们需要求解最优解,即f(xi)-yi的值趋向于0,利用最小二乘法令再把标记(预期结果...

2019-12-15 10:44:57 204

原创 Java 事务机制

Java 事务机制标签(空格分隔): jdbc 事务 java事务的属性原子性:对数据要么不修改,要么修改全部执行一致性:事务执行前后数据状态不发生改变隔离性:一个事务的处理结果不能影响另一个事务的处理持续性: 事务处理结束,其效果在数据库中持久化。事务中可能出现的问题脏读事务A读取了事务B未提交的数据,事务B发生错误进行回滚。不可重复读事务A的操作导致事务B在操作...

2019-12-15 10:44:40 701

原创 Mysql索引

简介一句话简单来说,索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。一本500页的书,如果你想快速找到其中的某一个知识点,在不借助目录的情况下,那我估计你可得找一会儿。同样,对于数据库的表而言,索引其实就是它的“目录”。索引的常见模型哈希表:哈希表是一种以键-值(key-value)存储数据的结构。处理冲突的方式:链表特点: 哈希表适用于等值查询的场景,但是在区间查询的速度很慢...

2019-12-15 10:44:34 90

原创 Mysql全局锁、表锁和Innodb行锁

锁数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类。全局锁全局锁就是对整个数据库实例加锁。MySQL提供了一个加全局读锁的方法,命令是Flush tables with read lock (FTWRL)。当你需...

2019-12-15 10:44:12 334

原创 Mysql学习笔记——Change Buffer及事务规则

Change Buffer 简介当需要更新一个数据页的时候,如果数据页在内存中,则直接更新。如果这个数据页不在内存中,在不影响数据一致性的情况下,InnoDB会将这些更新操作缓存在change buffer 中,这样就不需要从内存中读取数据了。那么,什么时候执行这些缓存的更新操作呢?在执行下次查询操作时,如果需要访问到这个数据页,会将其加载进内存,此时就可以进行更新操作,同时也设有定时更新的...

2019-12-15 10:43:55 491

原创 Mysql 空间问题及count(*)慢查询问题

空间问题在Mysql日常使用中,会出现这样的一个问题,我将数据表的内存删除了一半,但是数据表占用的空间并未发生变化。数据删除流程假设,我们要删掉R4这个记录,InnoDB引擎只会把R4这个记录标记为删除。如果之后要再插入一个ID在300和600之间的记录时,可能会复用这个位置。但是,磁盘文件的大小并不会缩小。现在,你已经知道了InnoDB的数据是按页存储的,那么如果我们删掉了一个数据页上...

2019-12-15 10:43:35 337

原创 Mysql情景优化

案例一:条件字段函数操作假设你现在维护了一个交易系统,其中交易记录表tradelog包含交易流水号(tradeid)、交易员id(operator)、交易时间(t_modified)等字段。为了便于描述,我们先忽略其他字段。这个表的建表语句如下:mysql> CREATE TABLE `tradelog` ( ìdìnt(11) NOT NULL, `tradeid` varch...

2019-12-15 10:43:21 165

原创 ZooKeeper基本命令

四字命令使用echo {命令} | nc localhost 2181Zookeeper的简单操作Zookeeper的shell操作连接到zookeeperzkCli.sh -server localhost:2181查看当前Zookeeper中所包含的内容: ls /创建一个新的Znode节点”zk",以及和他相关的字符:create /zk myData使用get...

2019-12-15 10:42:51 162

原创 ZooKeeper的搭建

Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境;■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例;■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble)单机模式下载网址:https://zookeeper.apac...

2019-12-15 10:42:36 100

原创 ZooKeeper锁服务

分布式锁概述分布式锁在一组进程之间提供了一种互斥机制。在任何时刻,在任何时刻只有一个进程可以持有锁。分布式锁可以在大型分布式系统中实现领导者选举,在任何时间点,持有锁的那个进程就是系统的领导者。(1)为了使用ZooKeeper来实现分布式锁服务,我们使用顺序znode来为那些竞争锁的进程强制排序。①在锁znode下创建一个名为lock-的短暂顺序znode,并且记住它的实际路径名(creat...

2019-12-15 10:42:17 135

原创 Zookeeper学习笔记(一)基本信息

分布式系统分布式协调技术 主要用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种临界资源,防止造成"脏数据"的后果。在这个分布式系统中如何对进程进行调度,我假设在第一台机器上挂载了一个资源,然后这三个物理分布的进程都要竞争这个资源,但我们又不希望他们同时进行访问,这时候我们就需要一个协调器,来让他们有序的来访问这个资源。这个协调器就是我们经常提到的那个锁。分布式锁的实现目...

2019-12-15 10:41:55 127

原创 ZooKeeper权限管理机制

权限管理ACLZooKeeper 的权限管理亦即ACL 控制功能,使用ACL来对Znode进行访问控制。Zookeeper对于用户类别的区分,不止局限于所有者(owner)、组 (group)、所有人(world)三个级别。Zookeeper中,数据节点没有"所有者"的概念。访问者利用id标识自己的身份,并获得与之相应的 不同的访问权限。ZooKeeper 的权限管理通过Server、Clie...

2019-10-30 15:48:06 304

空空如也

空空如也

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

TA关注的人

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