- 博客(144)
- 收藏
- 关注
原创 Redis-7实现乐观锁
Redis-7实现乐观锁****************** 如有侵权请提示删除 *********************/** * @Description Java使用redis事务以及watch实现乐观锁秒杀 * 乐观锁基于CAS(Compare And Swap)思想(比较并替换),是不具有互斥性,不会产生等待而消耗资源,但是需要反复的重试,但也是因为重试的机制,能比较快的响应。因此我们可以利用redis来实现乐观锁。 * 思路: * 1.利用reids的watch功能,监控opti
2021-01-25 00:04:07
154
原创 Redis-6基本事务操作
Redis-6基本事务操作****************** 如有侵权请提示删除 *********************redis官网-事务Redis 事务本质:一组命令的集合! 一个事务中的所有命令都会被序列化,在事务执行过程的中,会按照顺序执行!一次性、顺序性、排他性!执行一些列的命令!------ 队列 set set set 执行------Redis事务没有没有隔离级别的概念!所有的命令在事务中,并没有直接被执行!只有发起执行命令的时候才会执行!ExecRedis单条命令
2021-01-25 00:03:28
125
原创 Redis-5数据类型详解
Redis-5数据类型详解****************** 如有侵权请提示删除 *********************Stringset key1 v1 # 设置值get key1 # 获得值keys * # 获得所有的keyEXISTS key1 # 判断某一个key是否存在 APPEND key1 "hello" # 追加字符串,如果当前key不存在,就相当于setkeySTRLEN key1 # 获取字符串的长度type name # 查看当前key的一个类型!ttl n
2021-01-25 00:02:57
195
原创 Redis-4基本命令
Redis-4基本命令****************** 如有侵权请提示删除 *********************127.0.0.1:6379> keys * ## 查看所有的key(empty array)127.0.0.1:6379> set name aaOK127.0.0.1:6379> keys *1) "name"127.0.0.1:6379> EXISTS name ##判断当前的key是否存在(integer) 1127.0.0
2021-01-25 00:02:19
239
原创 Redis-3基础知识
Redis-3基础知识****************** 如有侵权请提示删除 *********************官网简介:Redis官网Redis是开放源代码(BSD许可)的内存数据结构存储,用作数据库,缓存和消息代理。Redis提供数据结构,例如 字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,地理空间索引和流。Redis具有内置的复制,Lua脚本,LRU逐出,事务和不同级别的磁盘持久性,并通过以下方式提供高可用性Redis Sentinel和Redis Cluster自动
2021-01-25 00:01:50
231
原创 Redis-2 Redis.conf 详解
Redis-2 Redis.conf 详解****************** 如有侵权请提示删除 *********************1.单位# Note on units: when memory size is needed, it is possible to specify# it in the usual form of 1k 5GB 4M and so forth:## 1k => 1000 bytes# 1kb => 1024 bytes# 1m
2021-01-25 00:01:15
185
原创 Redis-1 简介与安装配置
Redis-1 简介与安装配置****************** 如有侵权请提示删除 *******************为什么用 NoSQLNoSQL代表MongDB、 Redis、Memcache关系型数据库与NoSQL的区别RDBMS高度组织化结构化数据结构化查询语言(SQL)数据和关系都存储在单独的表中。数据操纵语言,数据定义语言严格的一致性基础事务ACID关系型数据库遵循ACID规则NoSQL代表着不仅仅是SQL没有声明性查询语言没有预定义
2021-01-25 00:00:39
196
原创 阿里云超算揭秘:虚拟机的心脏,物理机的肌肉
阿里云超算揭秘:虚拟机的心脏,物理机的肌肉在汽车行业,过去有一句俗话,一辆车从设计到下线,“至少要11辆真实碰撞试验”,今天,在现代化的汽车制造业,通过长期发展的设计和仿真软件,几乎所有的环节,都可以做到设计与仿真一体化的高性能计算实现,这一进步的背后需要依赖更强的并行计算集群和灵活的数据流动,以及实现复杂算法的工业仿真软件。阅读全文...
2021-01-24 17:10:58
154
原创 跨域问题
跨域问题****************** 如有侵权请提示删除 *********************方案一:addCorsMappings方法/** * 跨域配置 * */@Configurationpublic class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.a
2021-01-20 18:39:23
246
原创 锁13---优化及注意事项
锁—优化及注意事项************ 如有侵权请提示删除 ***************文章目录锁---优化及注意事项1. 锁优化的思路和方法1.1 减小锁持有时间1.2 减小锁粒度1.3 读写分离锁来替换独占锁1.4 锁分离1.5 锁粗化1.6 锁消除2. Java虚拟机对锁优化所做的努力2.1 偏向锁2.2 轻量级锁2.3 自旋锁2.4 锁清除1. 锁优化的思路和方法锁的竞争会导致程序整体性能的下降,如何降低锁竞争带来的副作用是我们必须考虑的。下面提出几种优化的思路和方法:减少锁持
2021-01-19 16:47:10
282
原创 锁12---锁升级(锁膨胀)、锁降级
锁13—锁降级************ 如有侵权请提示删除 ***************未完待续!!!/** * @Description 锁降级 */public class CachedData { Object data; //volatile修饰,保持内存可见性 volatile boolean cacheValid; //可重入读写锁 final ReentrantReadWriteLock rwl = new ReentrantReadWr
2021-01-19 16:07:01
284
原创 锁11---读写锁(ReentranReadWriteLock&ReadWriteLock)使用详解
锁11—ReentrantLock(独占锁、可重入锁)1、概念:java除了使用关键字synchronized外,还可以使用ReentrantLock实现独占锁的功能。而且ReentrantLock相比synchronized而言功能更加丰富,使用起来更为灵活,也更适合复杂的并发场景。这篇文章主要是从使用的角度来分析一下ReentrantLock。一、简介ReentrantLock常常对比着synchronized来分析,我们先对比着来看然后再一点一点分析。(1)synchronized是独占锁,
2021-01-19 16:01:06
606
1
原创 锁---ReentrantLock(独占锁、可重入锁)
锁—ReentrantLock(独占锁、可重入锁)************ 如有侵权请提示删除 ***************文章目录锁---ReentrantLock(独占锁、可重入锁)简介使用简单使用公平锁实现非公平锁实现响应中断限时等待### 概念:java除了使用关键字synchronized外,还可以使用ReentrantLock实现独占锁的功能。而且ReentrantLock相比synchronized而言功能更加丰富,使用起来更为灵活,也更适合复杂的并发场景。这篇文章主要是从使用的
2021-01-19 15:47:43
337
原创 锁10---可重入锁 VS 非可重入锁
锁—可重入锁 VS 非可重入锁************ 如有侵权请提示删除 ***************1、概念:可重入锁又名递归锁,是指在同一个线程在外层方法获取锁的时候,再进入该线程的内层方法会自动获取锁(前提锁对象得是同一个对象或者class),不会因为之前已经获取过还没释放而阻塞。Java中ReentrantLock和synchronized都是可重入锁,可重入锁的一个优点是可一定程度避免死锁。下面用示例代码来进行分析:在上面的代码中,类中的两个方法都是被内置锁synchronized
2021-01-19 15:43:53
154
原创 锁9---自旋锁 VS 适应性自旋锁
锁—自旋锁 VS 适应性自旋锁************ 如有侵权请提示删除 ***************文章目录锁---自旋锁 VS 适应性自旋锁自旋锁1、概念:2、提出背景3、自旋锁的原理4、 自旋锁的优缺点5、自旋锁开启自适应自旋锁总结自旋锁1、概念:当一个线程尝试去获取某一把锁的时候,如果这个锁此时已经被别人获取(占用),那么此线程就无法获取到这把锁,该线程将会等待,间隔一段时间后会再次尝试获取。这种采用循环加锁 -> 等待的机制被称为自旋锁(spinlock)2、提出背景
2021-01-19 15:33:50
1094
原创 锁8---无锁 VS 偏向锁 VS 轻量级锁 VS 重量级锁
锁—无锁 VS 偏向锁 VS 轻量级锁 VS 重量级锁************ 如有侵权请提示删除 ***************1、概念:这四种锁是指锁的状态,专门针对synchronized的。首先为什么Synchronized能实现线程同步?在回答这个问题之前我们需要了解两个重要的概念:“Java对象头”、“Monitor”。Java对象头synchronized是悲观锁,在操作同步资源之前需要给同步资源先加锁,这把锁就是存在Java对象头里的,而Java对象头又是什么呢?我们以
2021-01-19 15:29:53
259
原创 锁7---分段锁(一种锁的形式)
锁—分段锁(一种锁的形式)1、概念:分段锁其实是一种锁的设计,并不是具体的一种锁,对于ConcurrentHashMap而言,其并发的实现就是通过分段锁的形式来实现高效的并发操作。我们以ConcurrentHashMap来说一下分段锁的含义以及设计思想,ConcurrentHashMap中的分段锁称为Segment,它即类似于HashMap(JDK7和JDK8中HashMap的实现)的结构,即内部拥有一个Entry数组,数组中的每个元素又是一个链表;同时又是一个ReentrantLock(Segmen
2021-01-19 15:24:05
4269
原创 锁6---公平锁 VS 非公平锁
锁—公平锁 VS 非公平锁1、概念公平锁是指多个线程按照申请锁的顺序来获取锁,线程直接进入队列中排队,队列中的第一个线程才能获得锁。公平锁的优点是等待锁的线程不会饿死。缺点是整体吞吐效率相对非公平锁要低,等待队列中除第一个线程以外的所有线程都会阻塞,CPU唤醒阻塞线程的开销比非公平锁大。非公平锁多个线程加锁时直接尝试获取锁,获取不到才会到等待队列的队尾等待。但如果此时锁刚好可用,那么这个线程可以无需阻塞直接获取到锁,所以非公平锁有可能出现后申请锁的线程先获取锁的场景。非公平锁的优点是可以减少唤起
2021-01-19 15:18:53
177
原创 设计模式之禅
设计模式之禅文章目录设计模式之禅1. 软件设计模式的概念与意义2. 软件设计模式的基本要素设计模式分类23种设计模式类图总结功能OOP 程序设计的原则Java设计模式1-单例模式定义举栗子应用场景Java设计模式2—工厂方法模式定义举栗子应用场景Java设计模式3—抽象工厂模式定义举栗子应用场景Java设计模式4—模板方法模式定义举栗子应用场景Java设计模式5—建造者模式定义举栗子应用场景Java设计模式6—代理模式定义举栗子应用场景代理模式的扩展普通代理:强制代理:静态代理:动态代理:Demo总
2021-01-19 15:18:07
807
原创 锁---可重入锁 VS 非可重入锁
锁—可重入锁 VS 非可重入锁****************** 如有侵权请提示删除 *******************1、概念:可重入锁又名递归锁,是指在同一个线程在外层方法获取锁的时候,再进入该线程的内层方法会自动获取锁(前提锁对象得是同一个对象或者class),不会因为之前已经获取过还没释放而阻塞。Java中ReentrantLock和synchronized都是可重入锁,可重入锁的一个优点是可一定程度避免死锁。下面用示例代码来进行分析:在上面的代码中,类中的两个方法都是被内
2021-01-18 01:18:08
148
原创 锁5---互斥锁 VS 读写锁
锁—互斥锁 VS 读写锁11、概念:独享锁/共享锁就是一种广义的说法,互斥锁/读写锁就是具体的实现。互斥锁在Java中的具体实现就是ReentrantLock。读写锁在Java中的具体实现就是ReadWriteLock。
2021-01-18 01:16:57
196
原创 锁4---独享锁 VS 共享锁
锁—独享锁 VS 共享锁****************** 如有侵权请提示删除 *******************独享锁和共享锁同样是一种概念。然后通过ReentrantLock和ReentrantReadWriteLock的源码来介绍独享锁和共享锁。1、概念:独享锁独享锁也叫排他锁,是指该锁一次只能被一个线程所持有。如果线程T对数据A加上排它锁后,则其他线程不能再对A加任何类型的锁。获得排它锁的线程即能读数据又能修改数据。JDK中的synchronized和JUC中Lock的实现
2021-01-18 01:16:04
343
原创 锁3---乐观锁 VS 悲观锁
锁—乐观锁 VS 悲观锁****************** 如有侵权请提示删除 *******************1、概念:乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度。在Java和数据库中都有此概念对应的实际应用。乐观锁:顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量,在Java中java.util.con
2021-01-18 01:14:41
179
原创 锁---Java主流锁
锁—Java主流锁****************** 如有侵权请提示删除 *******************乐观锁/悲观锁独享锁/共享锁互斥锁/读写锁可重入锁/非可重入锁公平锁/非公平锁分段锁无锁/偏向锁/轻量级锁/重量级锁自旋锁/适应性自旋锁1. 线程要不要锁住同步资源?锁住-----悲观锁不锁住-----乐观锁2. 锁住同步资源失败,线程要不要阻塞?阻塞-----悲观锁不阻塞。自旋锁。适应性自旋锁3. 多个线程竞争同步资源的流程细节有没有区别
2021-01-18 01:13:05
116
原创 锁2---预备知识Java的AQS
锁—预备知识Java的AQS****************** 如有侵权请提示删除 *******************1、概念:所谓AQS,指的是AbstractQueuedSynchronizer,它提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架,ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier等并发类均是基于AQS来实现的,具体用法是通过继承AQS实现其模板方法,然后将子类作为同步组件的内部类。了解一个框架最好
2021-01-18 01:11:44
148
原创 锁1---预备知识Java的CAS
锁—预备知识Java的CAS1、概念:CAS(Compare and Swap 比较并交换)是乐观锁技术,当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,而其他线程都失败,失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次尝试。CAS操作中包含三个操作数——需要读写的内存位置(V)、进行比较的预期原值(A)和拟写入的新值(B)。如果内存位置V的值与预期原值A相匹配,那么处理器会自动将该位置值更新为新值B,否则处理器不做任何操作。无论哪种情况,它都会在CAS指令之
2021-01-18 01:09:31
151
原创 Redis-3 linux 下配置开机自动启动
Redis-3 linux 下配置开机自动启动****************** 如有侵权请提示删除 *********************文章目录Redis-3 linux 下配置开机自动启动1.确保守护进程开启。2.编写开机自启动脚本3. 编写完成,保存4. 设置文件redis_6379的权限,让Linux可以执行5. 启动Redis服务测试,此处启动用的是第二步设置的启动脚本6. 设置开机自启动,chkconfig7. 检查、设置系统的各种服务8. 重启服务器,看redis有没有自动
2021-01-18 00:11:35
311
原创 Redis-2 Redis.conf 详解
Redis-2 Redis.conf 详解****************** 如有侵权请提示删除 *********************# Redis配置文件样例# Note on units: when memory size is needed, it is possible to specifiy# it in the usual form of 1k 5GB 4M and so forth:## 1k => 1000 bytes# 1kb => 1024 by
2021-01-18 00:07:11
87
原创 Redis-1 简介与安装配置
Redis-1 简介与安装配置****************** 如有侵权请提示删除 *******************文章目录Redis-1 简介与安装配置为什么用 NoSQL简介安装修改配置文件Redis启动服务端Redis启动客户端停止redis服务端redis配置密码常用指令 为什么用 NoSQL参考NoSQL代表MongDB、 Redis、Memcache关系型数据库与NoSQL的区别RDBMS高度组织化结构化数据结构化查询语言(SQL)数据和关系
2021-01-18 00:06:27
376
原创 架构演进
架构演进****************** 如有侵权请提示删除 *********************随着互联网的发展,网站应用或者企业应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进单一应用架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。垂直应用架构当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应
2021-01-15 21:58:04
110
原创 网络基础 TCP/IP协议面试常问知识点
网络基础 TCP/IP协议面试常问知识点****************** 如有侵权请提示删除 *********************1、网络包的组成:报头/起始帧分界符——MAC头部——IP头部——TCP头部——数据——FCS(帧校验序列)2、TCP头部由TCP模块负责添加,头部格式如下:(最小20字节)发送方端口号接收方端口号序号(发送数据的顺序编号):发送方告诉接收方该网络包发送的数据相当于所有发送数据的第几个字节。ACK号(接收数据的顺序编号)数据偏移量保留控制位:UR
2021-01-15 21:53:24
436
原创 网络基础-1 TCP三次握手和四次挥手的全过程
网络基础-1 TCP三次握手和四次挥手的全过程****************** 如有侵权请提示删除 *********************TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种表示:SYN(synchronous建立连接)ACK(acknowledgement 表示响应、确认)PSH(push表示有DATA数据传输)FIN(finish关闭连接)RST(reset表示连接重置)URG
2021-01-15 21:51:31
1690
原创 java基础 测试
java基础 测试简介软件的测试包含单元测试、集成测试、系统测试和回归测试四个阶段。软件测试,从测试方法上来区分可以分为黑盒测试、白盒测试和灰盒测试。黑盒测试黑盒测试,也称为功能测试。测试者不了解程序的内部情况,不需具备应用程序的代码、内部结构和编程语言的专门知识。只知道程序的输入、输出和系统的功能,这是从用户的角度针对软件界面、功能及外部结构进行测试,而不考虑程序内部逻辑结构。测试案例是依应用系统应该做的功能,照规范、规格或要求等设计。测试者选择有效输入和无效输入来验证是否正确的输出。
2021-01-15 21:49:45
420
原创 Java基础-1 基础数据类型及常用引用数据类型
Java基础-1 数据类型及常用引用数据类型基本数据类型java四类八种基本数据类型:基本数据类型占用字节默认值包装类表数范围byte字节型10Byte-128~127short(短整型)20Short-215~215-1int(整型)40Integer-231~231-1long(长整型)80.0Long-263~263-1float(浮点型)40.0fFloat-3.403E38~3.403E38
2021-01-15 21:46:19
163
原创 Nginx-15 常见问题
Nginx-15 常见问题************ 如有侵权请提示删除 ***************一、相同 server_name 多个虚拟主机优先级#当出现虚拟主机域名相同的情况,重启nginx时,会出现警告⚠️处理,但是并不不会阻止nginx继续使用server { listen 80; server_name www.baidu.com ...}server { listen 80; server_name www.baidu.com
2021-01-15 21:39:52
490
原创 Nginx-14 调优
Nginx-14 调优****************** 如有侵权请提示删除 *********************主配置段优化worker_processes 进程数最好与cpu一致CPU绑定提供缓存命中率为了让work能够更好的使用cpu的高速缓存,建议worker与cpu核心进行一对一绑定worker进程间的负载均衡accept_mutex参数,nginx 1_11.3之前是默认启用的,但是这种处理方式在处理并发连接较多时性能特别差。关闭的话,worker进程会被同时唤醒,但只
2021-01-15 21:39:22
18210
原创 Location 指令介绍
Nginx-13 Location 指令介绍************ 如有侵权请提示删除 ***************location:用来设定不同URI 的文件系统的路径映射,一个server中可以设置多个location,Nginx会根据用户请求的URI 地址来逐个判断location, 找出最佳匹配规则,然后应用该location中定义的配置。语法规则: location [=||*|^~] /uri/ { … }= 开头表示精确匹配^~ 开头表示uri以某个常规字符串开头
2021-01-15 21:38:50
4391
原创 Nginx-12 实战
Nginx-12 实战************ 如有侵权请提示删除 ***************实例一 限制访问速率limit_req_zone $binary_remote_addr zone=mylimit:10m rate=2r/s;server { location / { limit_req zone=mylimit; }}上述规则限制了每个IP访问的速度为2r/s,并将该规则作用于根目录。如果单个IP在非常短的时间内并发发送多个请求,结果
2021-01-15 21:38:18
256
原创 Nginx-11 配置与虚拟主机介绍
Nginx-11 配置与虚拟主机介绍如有侵权请提示删除***概念所谓的虚拟主机,在web服务里就是一个独立的网站站点,这个站点对应独立的域名(也可能是IP或者端口),具有独立的程序及资源目录,可以独立地对外提供服务供用户访问虚拟主机的类型常见的虚拟主机类型有如下几种基于域名的虚拟主机所谓基于域名的虚拟主机,意思就是通过不同的域名来区分不同的虚拟主机,基于域名的虚拟主机是企业应用最广的虚拟主机类型,几乎所有对外提供服务的网站都使用的基于域名的虚拟主机基于端口的虚拟主机同理,所谓基于
2021-01-15 21:37:21
387
原创 Nginx-10 做web服务器、轻量级
Nginx-10 做web服务器、轻量级****************** 如有侵权请提示删除 *********************静态资源类型非服务器动态运行生成的文件,换句话说,就是可以直接在服务器上找到对应文件的请求浏览器端渲染:HTML,CSS,JS图片:JPEG,GIF,PNG视频:FLV,MPEG文件:TXT,任意下载文件静态资源服务场景-CDN什么是CDN?例如一个北京用户要请求一个文件,而文件放在的新疆的资源存储中心,如果直接请求新疆距离太远,延迟久。使
2021-01-14 15:53:47
112
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人