- 博客(25)
- 收藏
- 关注
转载 CAS 乐观锁
乐观锁乐观锁( Optimistic Locking)其实是一种思想。相对悲观锁而言,乐观锁假设认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让返回用户错误的信息,让用户决定如何去做。上面提到的乐观锁的概念中其实已经阐述了他的具体实现细节:主要就是两个步骤:冲突检测和数据更新。其实现方式有一种比较典型的就是Compare an...
2020-05-06 09:38:15
236
原创 SQL的连接查询
连接查询连接查询是将多张表中记录按照指定的条件进行连接的查询方式如下两表内连接:内连接是返回连接表中符合连接条件或查询条件记录的连接查询显示内连接语法:SELECT 字段 FROM 表1 INNER JOIN 表2 ON 连接条件 WHERE 条件示例:SELECT newsTitle,topicName FROM news AS n INNER JOIN topi...
2020-04-28 22:56:08
754
2
原创 Linux的常用命令
文件和目录的操作命令显示当前工作目录 命令pwd, 即print working directory列表目录命令:格式: ls [参数] 用于显示文件或目录信息选项: -l 每行显示一个文件和目录信息(长格式),简写:ll等同于ls -l注意:当参数是文件时,显示此文件全部信息当参数是目录时,显示此目录内文件及子目录信息若要显示指定目录的详细信息 ,在“l”(这是英文l...
2020-04-28 22:24:48
205
原创 nginx的应用
什么是NginxNginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师伊戈尔·西索夫(Igor Sysoev)所开发,官方测试 nginx 能够支支撑 5 万并发链接,并且 cpu、内存等资源消耗却非常低,运行非常稳定。Nginx 应用场景:1、http 服务器。Nginx 是一个 http 服务可以独立提供 http ...
2020-04-27 22:11:53
400
原创 Redis缓存的过期策略和淘汰机制
Redis内存淘汰机制如上图:其实我们只要知道这些机制就可以,在其配置文件redis.conf(Windows系统是redis.windows.conf)都有配置,我们如果需要,只要将其启用就可以(如下)。Redis过期策略Redis过期策略有三种方式:定时删除含义:在设置key的过期时间的同时,为该key创建一个定时器,让定时器在key的过期时间来临时,对key进行删除优点:保...
2020-04-26 22:20:30
299
原创 Redis持久化方案
持久化持久化,就是将数据保存到磁盘,机器宕机或者重启数据不丢失,如果存储到内存中的数据,会丢失。Redis持久化分为:Rdb方式和Aof方式一、Rdb方式Redis默认的方式,redis通过快照来将数据持久化到磁盘中。Rdb方式下Redis降数据保存在内存中,因此读写速度非常快;快照恢复过程:Redis启动后会读取RDB快照文件,将数据从硬盘载入到内存,一般情况下1GB的快照文件载入到...
2020-04-26 22:00:35
148
原创 Redis与memcached的区别,及Redis的高效率
一 性能对比:redis 是单核,而 memcached 可以使用多核,所以平均每一个核上 redis 在存储小数据时比 memcached 性能更高。而在 100k 以上的数据中,memcached 性能要高于 redis,虽然 redis 最近也在存储大数据的性能上进行优化,但是比起 memcached,还是稍有逊色。二 其他不同点数据类型不同,redis可存储五种数据类型:list ...
2020-04-26 15:21:04
314
转载 Redis分布式锁的实现
SETNX命令简介SETNX key value将key的值设为value,并且仅当key不存在。若给定的key已经存在,则SETNX不做任何操作。SETNX 是SET if Not eXists的简写。返回整数,具体为1,当 key 的值被设置0,当 key 的值没被设置使用SETNX实现分布式锁。多个进程执行以下Redis命令:SETNX lock.foo <cu...
2020-04-26 15:05:27
146
原创 HashMap的数据结构
HashMap 根据键的 hashCode 值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。 HashMap 最多只允许一条记录的键为 null,允许多条记录的值为 null。HashMap 非线程安全,即任一时刻可以有多个线程同时写 HashMap,可能会导致数据的不一致。HashMap数据结构HashMap 里面是一个数组,然后数组中每个元素...
2020-04-24 23:13:56
634
原创 CAP 理论与BASE理论
一、CAP原则CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。CAP原则是NOSQL数据库的基石。分布式系统的CAP理论:理论首先把分布式系统中的三个特性进行了如下归纳:一致性(C): 在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等...
2020-04-24 22:53:47
252
转载 分布式事务的解决方案
分布式事务分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。分布式事务 解决方案:2PC,TCC以及...
2020-04-24 22:36:52
342
1
原创 事务的隔离级别
事务的隔离级别Read Uncommitted,读写均不使用锁,数据的一致性最差,也会出现许多逻辑错误。Read committed,使用写锁,但是读会出现不一致,不可重复度。Repeatable Read,使用读锁和写锁,解决不可重复读的问题,但会有幻读。Serializable,使用事务串行化调度,避免出现因为插入数据没法加锁导致的不一致的情况。脏读,不可重复度,幻读脏读 :...
2020-04-23 22:45:52
174
原创 数据库锁
数据库的锁分类按锁的粒度划分:表级锁、行级锁、页级锁按锁级别划分:共享锁、排它锁、意向锁按加锁方式划分:自动锁、显示锁按使用方式划分:乐观锁、悲观锁行级锁、表级锁和页级锁行级锁:行级锁分为共享锁和排他锁。行级锁是MySQL中锁定粒度最细的锁。InnoDB引擎支持行级锁和表级锁,只有在通过索引条件检索数据的时候,才使用行级锁,否就使用表级锁。行级锁开销大,加锁慢,锁定粒度最小,发生锁冲...
2020-04-23 22:29:26
136
原创 数据库结构优化
一、数据类型选择1、使用可以存下你的数据的最小的数据类型。(时间类型数据:可以使用varchar类型,可以使用int类型,也可以使用时间戳类型)2、使用简单的数据类型,int要比varchar类型在mysql处理上简单。(int类型存储时间是最好的选择)3、尽可能的使用not null定义字段。(innodb的特性所决定,非not null的值,需要额外的在字段存储,同时也会增加IO和存储...
2020-04-22 22:39:35
299
转载 MySQL的索引
一、什么是索引?为什么要建立索引?索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有一个索引,MySQL能够快速到达一个位置去搜索数据文件,而不必查看所有数据,那么将会节省很大一部分时间。例如:有一张person表,其中有2W条记录,记录着2W个人的信息。有一个Phone的字段...
2020-04-21 23:48:32
1502
原创 Tomcat类加载机制
Tomcat的类加载机制Tomcat的类加载机制是违反了双亲委托原则的,对于一些未加载的非基础类(Object,String等),各个web应用自己的类加载器(WebAppClassLoader)会优先加载,加载不到时再交给commonClassLoader走双亲委托。对于JVM来说:因此,按照这个过程可以想到,如果同样在CLASSPATH指定的目录中和自己工作目录中存放相同的class,会...
2020-04-21 14:50:56
163
原创 JVM类加载机制
JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化,如图:类加载器:JVM 提供了 3 种类加载器:启动类加载器(Bootstrap ClassLoader)负责加载 JAVA_HOME\lib 目录中的,或通过-Xbootclasspath 参数指定路径中的,且被虚拟机认可(按文件名识别,如 rt.jar)的类。扩展类加载器(Extension ClassLoader)...
2020-04-21 11:39:53
148
原创 微信小程序登录流程
利用OpenId 创建新用户这种方式我的理解大体上就是一种静默登录,获取用户信息之后解密用户信息并通过OpenId直接创建新用户登录流程时序调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。调用 auth.code2Session 接口,换取 用户唯一标识 OpenID 和 会话密钥 session_key。几个核心API和核心字段wx.login() 调用...
2020-04-17 12:08:09
326
原创 Spring IOC控制反转和AOP切面编程
Spring IOC控制反转又叫DI(Dependency Injection)原理:Spring 通过一个配置文件描述 Bean 及 Bean 之间的依赖关系,利用 Java 语言的反射功能实例化Bean 并建立 Bean 之间的依赖关系。Spring 的 IOC容器在完成这些底层工作的基础上,还提供了 Bean 实例缓存、生命周期管理、 Bean 实例代理、事件发布、资源装载等高级服务。...
2020-04-14 22:55:50
218
转载 JVM内存结构
java内存结构主要分为5部分第一部分:方法区:这个区域是所有线程共享的,主要存储类的信息,常量、静态变量、就是编译器编译后的代码等,这块区域也是垃圾回收器主要针对的区域。第二部分:栈: 用于存放对象实例,绝大多数创建的对象都会被存放到这里(部分方法引用的对象),这块区域的回收严重影响了vm的性能,所以也是垃圾回收最主要针对的对象。第三部分:方法栈: 用于vm的方法,vm自己管理我们不...
2020-04-13 11:17:40
111
原创 GC垃圾收集的算法
常见的垃圾回收算法有:引用计数法、标记清除法、标记压缩法、复制算法、分代算法等。1.引用计数法**原理:**假设有一个对象A,任何一个对象对A的引用,那么对象A的引用计数器+1,当引用失败 时,对象A的引用计数器就-1,如果对象A的计数器的值为0,就说明对象A没有引用了, 可以被回收。优点:实时性较高,无需等到内存不够的时候,才开始回收,运行时根据对象的计数器是否 为0,就可以直接回收...
2020-04-13 11:09:57
173
原创 JDK1.7和JDK1.8堆内存的区别
jdk1.7的堆内存模型Young 年轻区(代)Young区被划分为三部分,Eden区和两个大小严格相同的Survivor区,其中, Survivor区间中,某一时刻只有其中一个是被使用的,另外一个留做垃圾收集时复制 对象用,在Eden区间变满的时候, GC就会将存活的对象移到空闲的Survivor区间 中,根据JVM的策略,在经过几次垃圾收集后,任然存活于Survivor的对象将被移动 到...
2020-04-12 21:58:44
1353
1
原创 Spring中@Autowired @Resource @Qualifier的区别
@Autowired 这个注解是属于Spring,默认类型进行装配,配合@QUalifier(@Autowired@QUalifier)可以按照名称进行装配。@Resource 属于J2EE的,默认是按照名称进行装配,找不到名称时才会用类型进行装配,但name一旦被指定就只会按照名称进行装配。1、@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在sett...
2020-04-12 20:15:25
143
原创 事务的四大特性
事物的四大特性ACDI,就是原子性(Atomicity)、一致性(Consistency)、持久性(Durability)、隔离性(Isolation)原子性:原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何就是事务的一致性。一致性 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,...
2020-04-10 21:54:42
271
原创 RabbitMQ工作模式
RabbitMQ的四种工作模式介绍1. Direct--路由模式任何发送到Direct Exchange的消息都会被转发到RouteKey指定的Queue。这种模式下不需要将Exchange进行任何绑定(binding)操作。消息传递时需要一个“RouteKey”,可以简单的理解为要发送到的队列名字。如果vhost中不存在RouteKey中指定的队列名,则该消息会被抛弃。2. Fanout--发布/订阅模式任何发送到Fanout Exchange的消息都会被转发到与该Exchange绑定(B
2020-04-10 21:47:19
239
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人