- 博客(42)
- 收藏
- 关注
原创 java IO流
一、流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。 一个流,必有源端和目的端,它们可以是计算机内存的某些区域,也可以是磁盘文件,甚至可以是Internet上的某个URL。 流的方向是重要的,根据流的方向,流可分为两类:输入流和输出流。用户可以...
2020-05-08 16:21:33
201
原创 cas jwt 单点登录
单点登录是我比较喜欢的一个技术解决方案,一方面他能够提高产品使用的便利性,另一方面他分离了各个应用都需要的登录服务,对性能以及工作量都有好处。自从上次研究过JWT如何应用于会话管理,加之以前的项目中也一直在使用CAS这个比较流行的单点登录框架,所以就一直在琢磨如何能够把JWT跟单点登录结合起来一起使用,尽量能把两种技术的优势都集成到项目中来。本文介绍我从CAS思考得出的SSO的实现方案。**前...
2020-05-08 16:07:00
1937
转载 CAS 乐观锁
什么是悲观锁、乐观锁?在java语言里,总有一些名词看语义跟本不明白是啥玩意儿,也就总有部分面试官拿着这样的词来忽悠面试者,以此来找优越感,其实理解清楚了,这些词也就唬不住人了。synchronized是悲观锁,这种线程一旦得到锁,其他需要锁的线程就挂起的情况就是悲观锁。CAS操作的就是乐观锁,每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。在进入正题...
2020-05-05 19:35:21
273
原创 linux常用命令
系统信息arch 显示机器的处理器架构uname -m 显示机器的处理器架构uname -r 显示正在使用的内核版本dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)hdparm -i /dev/hda 罗列一个磁盘的架构特性hdparm -tT /dev/sda 在磁盘上执行测试性读取操作cat /proc/cpuinfo 显示CPU info的信息c...
2020-04-28 19:59:32
234
1
原创 SpringMVC的工作流程与主要注解
SpringMVC组件组件搭配模型图(大概流程)SpringMVC原理1、 客户端发送一个http请求给web服务器,web对http进行解析,如果匹配前端控制器(DispatcherServlet)的请求映射路径(在web.xml中指定),web容器将请求转交给前端控制器2、 DispatcherServlet接收到这个请求之后根据请求的信息(包括url、http方法、请求报文...
2020-04-28 19:52:53
288
原创 sql连接查询
交叉连接CROSS JOIN如果不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积;举例,下列A、B、C 执行结果相同,但是效率不一样:A:SELECT * FROM table1 CROSS JOIN table2B:SELECT * FROM table1,table2C:select * from table1 a inner join ...
2020-04-28 19:47:40
187
转载 redis的缓存过期策略与内存淘汰机制
名词解释过期策略:即redis针对过期的key使用的清除策略,策略为,定期删除+惰性删除内存淘汰机制:即内存占用达到内存限制设定值时触发的redis的淘汰策略来删除键过期策略定期删除,redis默认每隔100ms检查,是否有过期的key,有过期key则删除。需要说明的是,redis不是每隔100ms将所有的key检查一次,而是随机抽取进行检查(如果每隔100ms,全部key进行检查,r...
2020-04-26 12:17:53
188
原创 redis的持久化方案
redis持久化方案持久化持久化,就是将数据保存到磁盘,机器宕机或者重启数据不丢失,如果存储到内存中的数据,会丢失。1Rdb方式Redis默认的方式,redis通过快照来将数据持久化到磁盘中。Rdb方式下Redis降数据保存在内存中,因此读写速度非常快; 快照恢复过程:Redis启动后会读取RDB快照文件,将数据从硬盘载入到内存,一般情况下1GB的快照文件载入到内存的时间约为20~30秒...
2020-04-26 12:11:33
148
转载 redis布隆过滤器
布隆过滤器是什么?布隆过滤器可以理解为一个不怎么精确的 set 结构,当你使用它的 contains 方法判断某个对象是否存在时,它可能会误判。但是布隆过滤器也不是特别不精确,只要参数设置的合理,它的精确度可以控制的相对足够精确,只会有小小的误判概率。当布隆过滤器说某个值存在时,这个值可能不存在;当它说不存在时,那就肯定不存在。打个比方,当它说不认识你时,肯定就不认识;当它说见过你时,可能根本...
2020-04-25 22:32:04
231
转载 redis分布式锁 setnx del
SETNX命令简介将key的值设为value,并且仅当key不存在。若给定的key已经存在,则SETNX不做任何操作。SETNX 是SET if Not eXists的简写。返回整数,具体为1,当 key 的值被设置0,当 key 的值没被设置使用SETNX实现分布式锁多个进程执行以下Redis命令:如果 SETNX 返回1,说明该进程获得锁,SETNX将键 lock.foo...
2020-04-25 22:22:11
474
原创 redis
一.什么是RedisRedis是以键值对存储数据的NoSQL数据库是由一个俄罗斯人发明的整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作它不能替代关系型数据库,只能作为关系型数据库的一个良好补充。使用场景:数据的缓存(如商品和新闻等)、应用排行榜、网站访问统计等...
2020-04-25 22:16:07
329
原创 HashMap的数据结构,解决哈希冲突,JDK1.7和JDK1.8 HashMap的区别
众所周知,HashMap 是一个用于存储Key-Value键值对的集合,每一个键值对也叫做 Entry。这些个键值对(Entry)分散存储在一个数组当中,这个数组就是HashMap的主干。HashMap 数组每一个元素的初始值都是 Null。...
2020-04-24 20:07:17
583
转载 CAP 理论与BASE理论
一致性在分布式系统中要解决的一个重要问题就是数据的复制。分布式系统对于数据的复制需求一般都来自于以下两个原因:1、为了增加系统的可用性,以防止单点故障引起的系统不可用2、提高系统的整体性能,通过负载均衡技术,能够让分布在不同地方的数据副本都能够为用户提供服务数据复制在可用性和性能方面给分布式系统带来的巨大好处是不言而喻的,然而数据复制所带来的一致性挑战,也是每一个系统研发人员不得不面对的,...
2020-04-24 19:54:34
166
原创 分布式事务 解决方案
解决方案:2PC,TCC以及基于消息的最终一致性什么是分布式事务分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库...
2020-04-24 19:50:32
223
原创 什么是分布式事务,什么是本地事务
分布式事务1.TCC补偿性事务TCC提供了一个编程框架,将整个业务逻辑分为三块:Try、Confirm和Cancel三个操作。以支付场景为例,一次支付涉及mysql和oracle的金额变化。Try阶段:分别冻结mysql和oracle中的金额。Confirm阶段:分别扣除Try阶段中冻结的金额。Cancel阶段:分别将冻结金额解冻恢复到用户的余额中。由于可能会出现多次提交,需要支持幂...
2020-04-24 19:40:50
289
原创 数据库锁
MySQL数据库锁介绍1. 锁的基本概念当并发事务同时访问一个资源时,有可能导致数据不一致,因此需要一种机制来将数据访问顺序化,以保证数据库数据的一致性。锁就是其中的一种机制。我们可以用商场的试衣间来做个比喻。商场里得每个试衣间都可供多个消费者使用,因此可能出现多个消费者同时试衣服需要使用试衣间。为了避免冲突,试衣间装了锁,某一个试衣服的人在试衣间里把锁锁住了,其他顾客就不能再从外面打开了...
2020-04-24 09:46:21
207
原创 数据库优化__结构优化
影响Mysql数据库的因素服务器硬件操作系统mysql服务器配置数据库结构(影响最大)良好的数据库逻辑设计和物理设计是数据库获得高性能的基础数据库结构优化的目的减少数据的冗余尽量避免数据维护中出现 更新、插入、删除异常节约数据存储空间参考链接数据库设计三大范式第五章 SqlServer之数据库三大范式MySQL之char、varchar和text的设计Mysq...
2020-04-22 21:21:22
208
转载 索引的最左前缀原则
我们都知道在mysql中使用联合索引时要遵循最左前缀原则,那么究竟为什么要遵循这个原则呢,我们可以从mysql的索引结构B+tree看起,B+tree是B-tree的变种,B+tree相比B-tree有几个不同点:非叶子节点只存储键值信息。所有叶子节点之间都有一个链指针。数据记录都存放在叶子节点中。接下来我们就新建一个表来演示B+tree的结构图,首先我们创建一个表,设置a字段为主键并插入一些数...
2020-04-21 21:38:20
717
转载 索引
什么是索引?为什么要建立索引?索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有一个索引,MySQL能够快速到达一个位置去搜索数据文件,而不必查看所有数据,那么将会节省很大一部分时间。例如:有一张person表,其中有2W条记录,记录着2W个人的信息。有一个Phone的字段记录...
2020-04-21 21:31:25
323
转载 MQTT协议如何工作?
MQTT协议如何工作?MQTT协议是什么?MQTT协议系统设计参考MQTT(Message Queuing Telemetry Transport Protocol)的全称是消息队列遥感传输协议的缩写,是一种基于轻量级代理的发布/订阅模式的消息传输协议(可理解为一种通信规则),运行在TCP协议栈(通俗理解为自己电脑上连接的网络)之上,为其提供有序、可靠、双向连接的网络连接保证。对TCP的本...
2020-04-18 15:31:50
367
转载 java类加载器
1.类的加载过程JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)链接又分为三个步骤,1)装载:查找并加载类的二进制数据;2)链接:验证:确保被加载类的正确性;准备:为类的静态变量分配内存,并将其初始化为默认值;解析:把类中的符号引用转换为直接引用;3)初始化:为类的静态变量赋予正确的初始值;那为什么我要有验证这一步骤呢?首先如果...
2020-04-17 21:46:17
101
原创 微信小程序登录
1.调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。2.调用 code2Session 接口,换取 用户唯一标识 OpenID 和 会话密钥 session_key。之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。注意:会话密钥 session_key 是对用户数据进行 加密签名 的密钥。为了应用自身的数据安全...
2020-04-17 10:41:28
425
1
转载 Spring的IOC和Aop
一、Spring开源框架的简介Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然...
2020-04-14 22:05:22
151
原创 垃圾收集器
串行垃圾收集器串行垃圾收集器,是指使用单线程进行垃圾回收,垃圾回收时,只有一个线程在工作, 并且java应用中的所有线程都要暂停,等待垃圾回收的完成。这种现象称之为 STW(Stop-The-World)。对于交互性较强的应用而言,这种垃圾收集器是不能够接受的。 一般在Javaweb应用中是不会采用该收集器的。设置垃圾回收为串行收集器在程序运行参数中添加2个参数,如下: .-XX:+U...
2020-04-12 23:06:37
117
转载 GC垃圾收集算法
GC判断对象是否存活算法1> 引用计数算法2> 根搜索算法(GC Root)GC垃圾收集算法1> 标记清除算法(Mark-Sweep):分为标记和清除两个阶段,首先标记出可以回收的对象,标记完后统一回收。缺点如下:a) 效率低:标记和清除过程效率都不高;b) 空间问题:清除之后产生大量不连续的内存碎片...
2020-04-12 21:57:37
208
转载 JVM内存结构、Java内存模型以及Java对象模型之间的区别
JVM内存结构、Java内存模型以及Java对象模型之间的区别Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模型和Java对象模型,这就是三个截然不同的概念,但是很多人容易弄混。可以这样说,很多高级开发甚至都搞不不清楚JVM内存结构、Java内存模型和Java...
2020-04-12 21:37:54
487
原创 事务的四大特性和隔离级别
事务的四大特性和隔离级别⑴ 原子性(Atomicity)原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。⑵ 一致性(Consistency)一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于...
2020-04-12 21:15:53
117
转载 什么是MQTT协议
MQTT协议是什么?MQTT(Message Queuing Telemetry Transport Protocol)的全称是消息队列遥感传输协议的缩写,是一种基于轻量级代理的发布/订阅模式的消息传输协议,运行在TCP协议栈之上,为其提供有序、可靠、双向连接的网络连接保证。MQTT协议如何工作?MQTT采用代理的发布/订阅模式实现了发布者和订阅者的解耦(decouple),因此,在MQTT...
2020-04-10 21:26:37
593
1
原创 Cookie与Session的区别
Cookie与Session的区别1、存取方式的不同。2、隐私策略的不同。3、有效期上的不同。4、服务器压力的不同。5、浏览器支持的不同。6、跨域支持上的不同。详解:1、存取方式的不同Cookie中只能保管ASCII字符串,假如需求存取Unicode字符或者二进制数据,需求先进行编码。Cookie中也不能直接存取Java对象。若要存储略微复杂的信息,运用Cookie是比拟艰难的。而...
2020-02-14 17:17:31
121
转载 <scope>provided</scope> 关于maven依赖中的scope的作用和用法
举例如下:< dependency>< groupId>org.springframework.boot </ groupId>< artifactId>spring-boot-starter-tomcat</ artifactId>< scope>provided< /scope>< /depe...
2020-02-11 17:27:03
2610
转载 NumberUtils工具类方法
1.NumberUtils.isNumber():判断字符串是否是数字NumberUtils.isNumber(“5.96”);//结果是trueNumberUtils.isNumber(“s5”);//结果是falseNumberUtils.isNumber(“0000000000596”);//结果是true2.NumberUtils.isDigits():判断字符串中是否全为数字N...
2020-02-10 16:49:56
994
转载 DigestUtils类
DigestUtils是一个算法工具类,在package org.apache.commons.codec.digest;这个包下。该类中常用的方法有:/** * Calculates the MD5 digest and returns the value as a 16 element <code>byte[]</code>. * *...
2020-02-10 16:39:08
1323
转载 ArrayUtils的常用方法介绍
1. ArrayUtils.isEmpty(strs) : 判断数组是否为空 , 不为空返回false,为空trueArrayUtils.isEmpty(new String[]{“21”,”是”});//结果是falseArrayUtils.isEmpty(new String[]{“”});//结果是falseArrayUtils.isEmpty(new String[]{});//结果...
2020-02-10 16:25:17
900
转载 StringUtils类的常用方法介绍
StringUtils类的常用方法介绍StringUtils 方法的操作对象是 java.lang.String 类型的对象,是对 JDK 提供的 String 类型操作方法的补充,并且是 null 安全的(即如果输入参数 String 为 null 则不会抛出 NullPointerException ,而是做了相应处理,例如,如果输入为 null 则返回也是 null 等,具体可以查看源代...
2020-02-10 16:16:23
241
转载 Nginx服务器之负载均衡策略
5、第三方策略 第三方的负载均衡策略的实现需要安装第三方插件。①fair 按照服务器端的响应时间来分配请求,响应时间短的优先分配。 #动态服务器组 upstream dynamic_zuoyu { server localhost:8080; #tomcat 7.0 server localhost:8081; #tomcat 8.0 server localhost:8082; #tomcat 8.5
2020-01-02 20:15:16
190
转载 nginx负载均衡配置
nginx负载均衡配置什么是负载均衡负载均衡的意思是在服务器集群中,需要有一台服务器作为调度者,客户端所有的请求都由调度者接收,调度者再根据每台服务器的负载情况,将请求分配给对应的服务器去处理;在这个过程中,调度者如何合理分配任务,保证所有服务器将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡的问题了。实现方式1、Http重定向过程描述当用户向服务器发起请求时,请求首...
2020-01-02 20:08:48
144
转载 Nginx配置反向代理
Nginx配置反向代理Nginx 的其中一个用途是做 HTTP 反向代理,下面简单介绍 Nginx 作为反向代理服务器的方法。场景描述:访问服务器上的README.md文件, http://192.168.6.6/readme.md, 服务器进行反向代理,从https://github.com/yidao620c/scrapy-cookbook/blob/master/README.md获取...
2020-01-02 19:59:37
152
转载 Nginx的核心特点 Nginx搭建反向代理服务器
Nginx搭建反向代理服务器一、反向代理:Web服务器的“经纪人”1.1 反向代理初印象反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。链接: https://www.jianshu.com/p/ca3b1a9...
2020-01-02 19:48:06
250
原创 Nginx 配置虚拟主机的三种方法
链接: https://blog.youkuaiyun.com/baikeliang/article/details/72677687.链接: https://www.cnblogs.com/crazylqy/p/6891954.html. Nginx 配置虚拟主机的三种方法虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成...
2020-01-02 19:24:38
404
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人