(二)Redis 数据类型 - String 参考资料 : 《Redis 设计与实现》String字符数组数值型【int】bitmapListSetSorted SetHashHelpredis-cli 中,使用 help 可以查看帮助,不同帮助按照组划分,@ 前缀# 通用组@generic# 不同数据类型@string@list@set@sorted_set@hash@pubsub@transactions@connection@server@scripting@hyperloglog@.
(一)Redis安装与概述 参考资料 Redis中文概述 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), .
Spring事务的传播属性/机制/行为(7种) 预计阅读时间: 10分钟事务的传播什么是事务的传播?传播,意味着是有两个事务参与的,单个事务是没有 ”传播“ 的概念的事务的传播机制(propagation behavior),即为在一个事务方法中调用另一个事务方法时,事务该如何执行。7种传播属性首先简要介绍事务的7种传播属性,事务方法 methodA 调用事务方法 methodB传播属性含义PROPAGATION_REQUIREDrequired 含义是 必须有事务, 如果存在一个事务,则支持当前事务。如果没有事务.
分布式系统 CAP 理论 C : (consistency) 数据一致性所有 节点拥有数据的最新版本A : (availability) 可用性P : (partition-tolerance) 分区容错性 : **容忍网络出现分区,**分区之间网络不可达集群同一个业务,部署在多个服务器上 (不同的服务器运行同样的代码,干同一件事)通过多台计算机完成同一个工作,达到更高的效率。两机或多机内容、工作过程等完全一样。如果一台死机,另一台可以起作用。分布式分布式系统是一组计算机,通过网络相互连接传递消息与.
HTTPS 秘钥交换过程/四次握手 HTTPS = HTTP + SSL传统的HTTP协议通信:传统的HTTP报文是直接将报文信息传输到TCP然后TCP再通过TCP套接字发送给目的主机上。HTTPS协议通信:HTTPS是HTTP报文直接将报文信息传输给SSL套接字进行加密,SSL加密后将加密后的报文发送给TCP套接字,然后TCP套接字再将加密后的报文发送给目的主机,目的主机将通过TCP套接字获取加密后的报文给SSL套接字,SSL解密后交给对应进程。HTTPS加密请求(一次握手)过程首先,客户端发起握手请求,以明文传输请求信息.
BlockingQueue - 阻塞队列(一) 本文介绍阻塞队列基本原理以及两种基本的阻塞队列 ArrayBlockingQueue & LinkedBlockingQueue 阻塞队列是线程池中的一个重要角色,JDK 原生实现的阻塞队列有四种 LinkedBlockingQueue、SynchronousQueue、ArrayBlockingQueue 以及 PriorityBlockingQueue 阻塞队列与其他队列显著的区别有两点:既然用于线程池,必须要支持并发(线程安全)提供阻塞添加与阻塞删除方法在传统队列的基.
SSH修改登录端口并配置免密登录(非root) 实验环境本地 MacOS 10.14.4远程服务器CentOS 7.5 64位Firewalld本地命令前缀 [admin@MacBookPro]$服务器命令前缀 [A@CentOS]$ 最近在建站后,发现不到2天我的小破站就有600次ssh远程登录的尝试。心中不免一阵寒意,为了解决这个问题特地读取了ssh官方的文档,对网站的ssh登录进行了一些措施。 首先要了解 SSH免密登录的原理,免密登录需要使用 ssh 的非对称加密方式,登录无需密码,但是需要携带秘钥。本地若想登录.
HashMap在JDK1.7和JDK1.8的改动 Integer.MAX_VALUE = 2 ^ 31 - 1;HashMap table 的最大大小 1 << 30 = 2 ^ 30HashMap 查找的时间复杂度 O(1) + O(n) (before JDK 1.7) | O(1) + O(logN) (after JDK 1.8)JDK 1.7 和 1.8 的区别JDK1.7用的是头插法,而JDK1.8及之后使用的都是尾插法,那么他们为什么要这样做呢?因为JDK1.7是用单链表进行的纵向延伸,当采用头插法时会容易出现逆序且.
JVM_05 运行时数据区与指令集 JVM Runtime data area and JVM instructions<previous next>一、Java 内存布局 图 1 java 内存布局 PC线程私有program counter , 保存下一条指令的位置。 PC 是唯一不会发生 OOM 的内存区域。虚拟机执行的过程类似于以下的伪代码:while (not end) { get from pc; get 对应位置指令; 执行该指令; pc ++;}JVM Stack线程私.
JVM_04 指令重排序原则 < previous next >一、Java 8 大原子操作(目前这种说法已弃用)参考资料 《深入理解java虚拟机》page: 364指令作用区解释lock主内存标识变量为线程独占unlock主内存解锁read主内存读到工作内存write主内存写到主内存load工作内存read后的值放到线程本地变量副本store工作内存存储值到主内存给 write 备用use工作内存传值给执行引擎ass.
JVM_03 CPU的乱序执行 上次我们提到了JVM为了安全推出的 双亲委派机制那么双亲委派机制可能被打破吗?可以,那么如何打破呢? ClassLoader.loadClass 方法定义了类加载的双亲委派机制,重写该方法即可跳出双亲委派。历史上出现过几次双亲委派被破坏的案例JDK 1.2 之前,想自己实现类的加载必须重写 loanClass 方法。Thread.ContextClassLoader 中的线程上下文加载器,不是按照双亲委派机制运行的。热启动、热部署等场景,每一个 WebApplication 都有自己的 C.
JVM_02 类加载机制 JVM 类加载步骤loading - 装载linking - 链接verification - 验证preparation - 准备resolution - 解析intializing - 初始化装载1. 通过一个类的 全限定名 来获取定义此类的 二进制字节流2. 将这个字节流所代表的 静态存储结构 转化为 方法区的 运行时数据结构3. 在 Java 堆中生成一个代表这个类的 java.lang.Class 对象,作为方法区访问这些数据的入口。验证: 检查载入Cla
JVM_01 Class文件格式 JVM 知识体系图1 jvm 结构问题1: Java 是编译执行的还是解释执行的?解释 + 热点代码编译 执行 (混合执行)**解析:**其实 JVM 主要对 class 文件中的字节码使用 字节码解释器 进行解释并执行。但是当某一方法调用次数达到即时编译定义的阈值时,就会触发即时编译,这时即时编译器会将IR进行优化,并生成这个方法的机器码,后面再调用这个方法,就会直接调用机器码执行相关参数:-Xmixed 混合执行-Xint 解释执行模式-Xcomp 编译执行模式图2 j...
Java 线程&锁(三) public static void shortSleep(Duration duration) { try { TimeUnit.MILLISECONDS.sleep(duration.toMillis()); } catch (InterruptedException e) { e.printStackTrace(); } }synchronized问题一:synchronized 锁的...
Java 线程&锁(一) 摘要:锁的本质是什么CAS如何实现?如何处理 ABA 问题互斥锁:同一时刻,只能有一个线程持有锁原始的线程通讯 -> o.wait(); o.notify(); 在调用 o.wait(); 时,线程会进入等待队列;CASCAS = compareAndSet/compareAndSwap - 自旋锁: 失败时候重试自旋锁引发的 ABA 问题:int m = 0;// 线程①取 m 值运算,经过运算后将 m 更新为 1, 更新之前会判断 m 是否仍然为 0, 如果为0, 则将 .
Java 线程&锁(二) 概要 : 线程Thread 进程 纤程/协程Fiber图 1 冯诺依曼计算机体系结构进程与线程的区别进程:操作系统资源分配的基本单位线程:CPU执行的基本单位,也是一个进程里面最小的执行单元一个CPU(核)在同一时刻可以执行几个线程? 除非有超线程存在,否则1个线程切换ALU: 运算单元Register: 寄存器PC: 程序计数器Cache: 缓存线程切换的时候,需要把寄存器和程序计数器中的内容保存(保护线程),然后在切换到其他线程执行,再切换回来。JVM 是运行在操作.
Collection [集合] & Collections [集合工具类] Collection [集合] & Collections [集合工具类]标签: java 数据结构 集合java.util.* 中的集合结构Collection 类中定义的基本方法// 对集合的基础操作:int size(); // 获取元素个数boolean isEmpty(); // 是否个数为 0boolean contains(Object element...
Java 引用传递与值传递 Java 引用传递与值传递【背景】首先 Java 中没有值传递和引用传递的概念,所谓 pass by value 和 pass by reference 只是从其他语言引申的概念而已。所以你会听到有人说 ”Java 中没有引用传递,全部都是值传递“,然而在使用过程中却又总能遇到 ”方法调用确实改变了某些值“ 的情况。一、基本类型与引用类型基本类型:byte/char/int/long/...
Apollo 学习(一) Apollo 学习(一)演示环境GitHub一、namespace1. 什么是Namespace?Namespace是配置项的集合,类似于一个配置文件的概念。2. 什么是“application”的Namespace?Apollo在创建项目的时候,都会默认创建一个“application”的Namespace。顾名思义,“application”是给应用自身使用的,熟悉Sprin...
Crontab表达式 Crontab表达式Linux 的 crontab 表达式可以用于表示任何时间,常用于定时任务的时间测算友情链接:在线工具-crontab一、表达式格式< * * * * * * >用 6 个 * 分别来表示 分 时 日 月 周 (年) , 其中年字段为可选取值范围:分(1-59)(*或*/1表示每分钟)时(1-23)(0表示0点)日(1-31)月(1-1...