- 博客(22)
- 收藏
- 关注
原创 CAS(乐观锁)
什么是CAS?CAS是Central Authentication Service的缩写,中央认证服务,一种独立开放指令协议。CAS 是耶鲁大学(Yale University)发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。什么是悲观锁、乐观锁?在java语言里,总有一些名词看语义跟本不明白是...
2020-05-05 22:17:39
249
原创 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 23:20:10
279
原创 SpringMVC的工作流程与主要注解
文字描述:1.用户发送请求到前端控制器(DispatcherServlet)2.前端控制器请求处理器映射器(HandlerMapping)去查找处理器(Handler)3.找到之后处理器映射器(HandlerMapping)向前端控制器返回执行链(HandlerExecutionChain)4.前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter...
2020-04-28 23:18:37
274
原创 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 23:14:27
186
原创 redis的持久化方案
redis持久化方案持久化持久化,就是将数据保存到磁盘,机器宕机或者重启数据不丢失,如果存储到内存中的数据,会丢失。1Rdb方式Redis默认的方式,redis通过快照来将数据持久化到磁盘中。Rdb方式下Redis降数据保存在内存中,因此读写速度非常快; 快照恢复过程:Redis启动后会读取RDB快照文件,将数据从硬盘载入到内存,一般情况下1GB的快照文件载入到内存的时间约为20~30...
2020-04-26 20:47:22
281
原创 redis的缓存过期策略与内存淘汰机制
名词解释过期策略:即redis针对过期的key使用的清除策略,策略为,定期删除+惰性删除内存淘汰机制:即内存占用达到内存限制设定值时触发的redis的淘汰策略来删除键过期策略定期删除,redis默认每隔100ms检查,是否有过期的key,有过期key则删除。需要说明的是,redis不是每隔100ms将所有的key检查一次,而是随机抽取进行检查(如果每隔100ms,全部key进行检查,r...
2020-04-26 20:43:35
164
原创 布隆过滤器
什么是布隆过滤器本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。相比于传统的 List、Set、Map 等数据结构,它更高效、占用空间更少,但是缺点是其返回的结果是概率性的,而不是确切的。实现原理HashMap 的问题讲述布隆过滤器的原理之前,...
2020-04-26 20:40:27
131
原创 Redis分布式锁 setnx del
SETNX命令简介Redis有一系列的命令,特点是以NX结尾,NX是Not eXists的缩写,如SETNX命令就应该理解为:SET if Not eXists。这系列的命令非常有用,这里讲使用SETNX来实现分布式锁。用SETNX实现分布式锁利用SETNX非常简单地实现分布式锁。例如:某客户端要获得一个名字foo的锁,客户端使用下面的命令进行获取:SETNX lock.foo <c...
2020-04-26 20:32:59
254
原创 Redisd的基础理论
Redis有哪几种数据类型Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。String(字符串)string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。string 类型是二进制安全的。意思是 redis 的 str...
2020-04-26 20:28:02
262
原创 HashMap的数据结构
什么是HashMap?HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数...
2020-04-24 22:23:24
206
原创 CAP理论与BASE理论
什么是CAP理论CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼,只能选择其中两项。CAP原则是NOSQL数据库的基石。分布式系统的CAP理论:理论首先把分布式系统中的三个特性进行了如下归纳:一致性(C):在分布式系统中的所有数据备份,在同一时刻...
2020-04-24 22:12:52
292
原创 分布式事务解决方案:2PC,TCC以及基于消息的最终一致性
各种形态的分布式事务分布式事务有多种主流形态,包括:基于消息实现的分布式事务基于补偿实现的分布式事务基于TCC实现的分布式事务基于SAGA实现的分布式事务基于2PC实现的分布式事务这些形态的原理已经在很多文章中进行了剖析,用“分布式事务”关键字就能搜到对应的文章,本文不再赘述这些形态的原理,并将重点放在如何根据业务选择对应的分布式事务形态上。分布式事务解决方案汇总接下来,以一...
2020-04-24 22:05:10
926
原创 事务的四大特性和隔离级别
什么是事务百度百科中解释:指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。简单的说,事务就是并发控制的单位,是用户定义的一个操作序列。 而一个逻辑工作单元要成为事务,就必须满足ACID属性。A:原子性(Atomicity)事务中的操作要么都不做,要么就全做。 C:一致性(Consistency)事务执行的结果必须是从数据库从一个一致性状态转换到另一个一致性状态...
2020-04-23 21:51:36
223
原创 数据库的锁
数据库为什么会有锁?数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。为了保证数据的一致性。mysql数据库存在多种数据引擎,MySQL各存储引擎使用了三种类型(级别)的锁定机制:表级锁定,行级锁定和页级锁定。表级锁(table-level)(表级锁一次会将整个表锁定,所可以很好的避免死锁问题)(1)锁定粒度大,锁冲突概率高...
2020-04-23 21:28:27
275
原创 数据库优化:结构优化
良好的数据库逻辑设计和物理设计是数据库获得高性能的基础数据库结构优化的目的1.减少数据冗余2.尽量避免书维护中出现更新,插入和删除异常插入异常:如果表中的某个实体随着另一个实体而存在,则无法插入更新异常:如果更改表中的某个实体的单独属性时,需要对多行进行更新删除异常:如果删除表中的某一实体则会导致其他实体的消失3.节约数据存储空间4.提高查询效率逻辑涉及涉及数据的逻辑存储机构...
2020-04-22 21:18:08
360
原创 索引的应用
什么是索引?在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引以找到特定值,然后顺指针找到包含该值的...
2020-04-21 22:55:45
513
原创 类加载器和Tomcat类加载器
Java类加载机制类加载器虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。类加载器可以说是Java语言的一项创新,也是Java语言流行的重要原因之一,它最初是为了满足JavaApplet的需求而开发出来的。虽然目前JavaApple...
2020-04-20 21:44:39
123
原创 Spring IOC 和AOP
Spring是什么?Spring提供了很多轻量级应用开发实践的工具集合,这些工具集以接口、抽象类、或工具类的形式存在于Spring中。通过使用这些工具集,可以实现应用程序与各种开源技术及框架间的友好整合。比如有关jdbc封装的数据访问工具SpringJDBC,有关编写单元测试的spring test包以及spring-mock,有关访问动态脚本语言的SpringScript,另外还有发送邮...
2020-04-14 23:05:27
132
原创 JVM的运行参数的类型和jvm的内存模型
jvm的运行参数先说一下jvm的一个运行参数,以jdk1.8为标准。在jvm中有很多的参数可以进行设置,这样可以让jvm在各种环境中都能够高效的运行。一般情况下呢,绝大部分的参数保持默认就行。jvm的参数类型分为三类,分别是:标准参数:-help -version(jvm的标准参数,一般都是很稳定的,在未来的JVM版本中不会改变, 可以使用java -help 检索出所有的标准参数。...
2020-04-12 23:11:20
132
原创 RabbitMQ的四种工作模式及使用RabbitMq的好处
什么是RabbitMq?MQ(Message Queue,消息队列)是一种应用系统之间的通信方法。是通过读写出入队列的消息来通信的。AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。RabbitMQ是一个开源的A...
2020-04-10 21:37:45
843
1
转载 Nginx的五个重大问题
什么是Nginx?Nginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师伊戈尔·西索夫(Igor Sysoev)所开发,官方测试 nginx 能够支支撑 5 万并发链接,并且 cpu、内存等资源消耗却非常低,运行非常稳定。1.nginx的启动,停止,重新加载,配置文件的命令1.1启动/重启/停止sudo /etc/ini...
2020-01-02 19:24:57
391
原创 solr和IK中文分词器的简介
一.solr是什么?Solr是一个开源搜索平台,用于构建搜索应用程序。 它建立在Lucene(全文搜索引擎)之上。 Solr是企业级的,快速的和高度可扩展的。 使用Solr构建的应用程序非常复杂,可提供高性能。二.solr的安装1:安装 Tomcat,解压缩即可。2:解压 solr。3:把 solr 下的dist目录solr-4.10.3.war部署到 Tomcat\webapps下(去...
2020-01-02 15:22:06
388
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人