- 博客(27)
- 收藏
- 关注
原创 CAS(乐观锁)
CAS算法即是:Compare And Swap,比较并且替换CAS算法存在着三个参数,内存值V,旧的预期值A,以及要更新的值B。当且仅当内存值V和预期值B相等的时候,才会将内存值修改为B,否则什么也不做,直接返回false;比如说某一个线程要修改某个字段的值,当这个值初始化的时候会在内存中完成,根据Java内存模型,该线程保存着这个变量的一个副本;当且仅当这个变量的副本和内存的值如果相同,那...
2020-05-05 23:37:33 296
原创 SpringMVC的工作流程与主要注解
用户发起请求到前端控制器(DispatcherServlet),该控制器会过滤出哪些请求可以访问Servlet、哪些不能访问。就是url-pattern的作用,并且会加载springmvc.xml配置文件。前端控制器会找到处理器映射器(HandlerMapping),通过HandlerMapping完成url到controller映射的组件,简单来说,就是将在springmvc.xml中配置的...
2020-04-28 18:21:40 169
原创 Linux的常用命令
linux常用命令1、普通用户切换root用户:(1)su 回车password:输入root用户密码 ,回车切换到root用户(2)su - root 回车password:输入root用户密码 ,回车切换到root用户root用户切换普通用户:su 自己的用户名,回车2、重启虚拟机输入命令 :sudo reboot3、CentOS7图形界面与命令行界面切换:在图形界面...
2020-04-28 17:57:45 144
原创 sql连接
CROSS JOIN连接用于生成两张表的笛卡尔集。INNER JOIN 多表联接建立记录集是十分有用的。left join连接查询是关系数据库中最主要的查询,主要包括内连接、外连接和交叉连接等。通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。 在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在...
2020-04-28 17:55:04 307
原创 nginx介绍
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx的主要功能nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现静态HTTP服务器...
2020-04-27 19:31:44 105
原创 redis的缓存过期策略与内存淘汰机制
redis采用了 “定期删除+惰性删除” 的过期策略定期删除原理:定期删除指的是redis默认每隔100ms就随机抽取一些设置了过期时间的key,检测这些key是否过期,如果过期了就将其删掉。为什么会选择一部分,而不是全部:因为如果这是redis里面有大量的key都设置了过期时间,那么如果全部去检测一遍,CPU负载就会很高,会浪费大量的时间在检测上面,甚至直接导致redis挂掉。所有只会抽取...
2020-04-26 13:40:47 156
原创 redis的持久化方案
RDB什么是RDB对redis中的数据执行周期性的持久化,通过配置文件中设置检查间隔时间与备份触发条件来对数据进行周期性的持久化 RDB持久化优点 RDB会生成多个数据文件,每个数据文件都代表了某一个时刻中redis的数据,这种多个数据文件的方式,非常适合做冷备份。RDB对redis对外提供的读写服务,影响非常小,可以让redis保持高性能,因为redis主进程只需要fork一个子...
2020-04-26 13:38:48 130
原创 布隆过滤器
布隆过滤器它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中,它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。优点相比于其它的数据结构,布隆过滤器在空间和时间方面都有巨大的优势。布隆过滤器存储空间和插入/查询时间都是常数。另外, Hash函数相互之间没有关系,方便由硬件并行实现。布隆过滤器不需要存储元素本身...
2020-04-25 20:52:14 87
原创 分布式锁
分布式锁是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互...
2020-04-25 20:22:20 87
原创 Redis
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。redis与memcache的区别是什么redis支持持久化,memcache不支持memcache支持string,redis支持tring(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合...
2020-04-25 20:10:36 87
原创 分布式事务方案
TCC方案最大的特点是实时性高。这种方案不借助MQ,如果你的系统是基于dubbo等微服务架构,那么就必须依靠这种方案实现分布式事务了。 一.TCC方案的实现 1.一个完整的业务活动由一个主业务服务与若干从业务服务组成; 2.主业务服务负责发起并完成整个业务活动,它是整个事务活动的主控制; 3.从业务服务提供TCC型业务操作; 4.业务活动管理器控制业务活动的一致性,...
2020-04-24 21:14:01 101
原创 CAP原则与BASE理论
CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。CAP原则是NOSQL数据库的基石。分布式系统的CAP理论:理论首先把分布式系统中的三个特性进行了如下归纳:一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同...
2020-04-24 20:21:57 128
原创 HashMap
数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。数组1数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。哈希表那么我们能不能综合两者的特性,做出一种寻址...
2020-04-24 20:16:14 105
原创 分布式事务和什么是本地事务
事务类型事务可以分为本地事务和分布式事务两种类型。这两种事务类型是根据访问并更新的数据资源的多少来进行区分的。本地事务是在单个数据源上进行数据的访问和更新,而分布式事务是跨越多个数据源来进行数据的访问和更新。在这里要说的事务是基于数据库这种数据源的什么是分布式事务分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解...
2020-04-23 19:43:52 1069
原创 事务的特性
原子性(Atomicity)原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。⑵ 一致性(Consistency)一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。拿转账来说,假设...
2020-04-23 19:40:13 237
原创 数据库的锁分类
锁是网络数据库中的一个非常重要的概念,当多个用户同时对数据库并发操作时,会带来数据不一致的问题,所以,锁主要用于多用户环境下保证数据库完整性和一致性数据库锁出现的目的:处理并发问题并发控制的主要采用的技术手段:乐观锁、悲观锁和时间戳锁分类从数据库系统角度分为三种:排他锁、共享锁、更新锁。从程序员角度分为两种:一种是悲观锁,一种乐观锁。悲观锁(Pessimistic Lock)顾名思义...
2020-04-23 19:37:47 211
原创 数据库结构优化
数据库结构优化的目的是为了减少数据冗余尽量避免数据维护中出现更新,插入和删除异常.节约数据存储空间提高查询效率数据库设计范式第一范式数据库表中的所有字段都自由单一属性单一属性的列是由基本的数据类型锁构成的设计出来的表都是简单的二维表综上: 几乎只要能在当今数据库中建立起来的表都是第一范式,但是很可能有很大的优化空间我们有一个学生选课表,太过于冗余,明显可以拆成:...
2020-04-22 19:10:52 295
原创 索引
什么是索引:在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引以找到特定值,然后顺指针找到包含该值的行...
2020-04-21 19:24:47 110
原创 tomcat类加载
Tomcat的类加载机制是违反了双亲委托原则的,对于一些未加载的非基础类(Object,String等),各个web应用自己的类加载器(WebAppClassLoader)会优先加载,加载不到时再交给commonClassLoader走双亲委托我们在这张图中看到很多类加载器,除了Jdk自带的类加载器,我们尤其关心Tomcat自身持有的类加载器。仔细一点我们很容易发现:Catalina类加载器和...
2020-04-21 18:08:33 244
原创 类加载器
每个编写的".java"拓展名类文件都存储着需要执行的程序逻辑,这些".java"文件经过Java编译器编译成拓展名为".class"的文件,".class"文件中保存着Java代码经转换后的虚拟机指令,当需要使用某个类时,虚拟机将会加载它的".class"文件,并创建对应的class对象,将class文件加载到虚拟机的内存,这个过程称为类加载,这里我们需要了解一下类加载的过程,如下:加载:类...
2020-04-21 15:45:24 92
原创 Java的类加载器
每个编写的”.java”拓展名类文件都存储着需要执行的程序逻辑,这些”.java”文件经过Java编译器编译成拓展名为”.class”的文件,”.class”文件中保存着Java代码经转换后的虚拟机指令,当需要使用某个类时,虚拟机将会加载它的”.class”文件,并创建对应的class对象,将class文件加载到虚拟机的内存,这个过程称为类加载,这里我们需要了解一下类加载的过程,如下:加载:类...
2020-04-17 23:10:36 92
原创 微信小程序登录流程
登录流程时序1.首先通过wx.login获取登录code(登录校验码),然后通过wx.request将code发送到开发者服务器,凭借用户的Appid和code从微信服务器获取session_key(本次会话密钥)和openid,在本地服务器根据这两个信息定义用户的登录状态,并且将用户的登录状态返回到界面,这就是一次完整的用户授权过程2.授权注意点A.过去老版本的API中可以直接通过wx....
2020-04-16 11:19:27 401
原创 Spring IOC 和AOP
spring 的优点?1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦2.可以使用容易提供的众多服务,如事务管理,消息服务等3.容器提供单例模式支持4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能5.容器提供了众多的辅助类,能加快应用的开发6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等7.spring属于低侵...
2020-04-14 21:44:06 111
原创 G1垃圾收集器
G1中提供了三种模式垃圾回收模式,Young GC、Mixed GC 和 Full GC,在不同的条件下被触发Young GCYoung GC主要是对Eden区进行GC,它在Eden空间耗尽时会被触发。Eden 空间的数据移动到Survivor空间中,如果Survivor空间不够,Eden空间的部分数据会直接晋升到年老代空间。Survivor 区的数据移动到新的Survivor区中,也...
2020-04-12 22:41:15 142
原创 JVM的内存结构
jdk1.7的堆内存模型Young 年轻区(代)Young区被划分为三部分,Eden区和两个大小严格相同的Survivor区,其中,Survivor区间中,某一时刻只有其中一个是被使用的,另外一个留做垃圾收集时复制对象用,在Eden区间变满的时候, GC就会将存活的对象移到空闲的Survivor区间中,根据JVM的策略,在经过几次垃圾收集后,任然存活于Survivor的对象将被移动到...
2020-04-12 22:32:03 151
原创 rabbitmq几种工作模式
一.基于erlang语言: 是一种支持高并发的语言RabbitMQ的六种工作模式:1.1 simple简单模式消息产生着§将消息放入队列消息的消费者(consumer) 监听(while) 消息队列,如果队列中有消息,就消费掉,消息被拿走后,自动从队列中删除(隐患 消息可能没有被消费者正确处理,已经从队列中消失了,造成消息的丢失)应用场景:聊天(中间有一个过度的服务器;p端,c端)1....
2020-04-10 21:29:17 255
原创 nginx负载均衡策略有几种
1、轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。upstream backserver {server 192.168.0.14;server 192.168.0.15;}2、指定权重指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。upstream backserver {server 192.168....
2020-01-03 19:58:08 367
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人