- 博客(69)
- 收藏
- 关注
原创 Docker常用命令总结
docker run --name name02 --volumes-from name01 name:tag,启动name02容器,共享name01数据卷,name01称为数据卷容器;docker logs -f -t --tail=20 name,查看name容器中的日志,-f表示跟踪日志输出,-t显示时间戳,–tail n,只显示最新的n条日志信息;docker run -it name,以交互方式新建启动容器,此处name为image的,非容器的,此时容器name随机;
2023-10-31 17:30:58 63
原创 jvm启动参数总计
Spring Boot 提供了一种方便的方式来管理应用程序的配置,可以使用 application.properties 或 application.yml 文件来配置应用程序的属性。-XX:MinHeapFreeRatio=20 设置最小堆空闲比例为20%,即当堆中的空闲空间占整个堆的容量的比例低于20%时,JVM 可以考虑申请更多的堆空间。-XX:MaxHeapFreeRatio=50 设置最大堆空闲比例为50%,即当堆中的空闲空间占整个堆的容量的比例超过50%时,JVM 可以考虑释放多余的空间。
2023-09-25 15:44:19 380
原创 Docker容器iptables命令最小权限配置
以普通用户进入容器当中,执行iptables没有权限,需要配置普通用户就可以执行iptables的权限。
2023-09-12 20:57:15 253
转载 RDB、AOF学习
redis的持久化方式RDB和AOF的区别RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上) redis databaseAOF持久化(原理是将Reids的操作日志以追加的方式写入文件) append only file区别RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,
2020-09-25 14:12:11 131
转载 分布式、集群、微服务的理解
集群、分布式、微服务概念和区别1.分布式:一个业务分拆多个子业务,部署在不同的服务器上(多个人在一起作不同的事 。)2.集群:同一个业务,部署在多个服务器上(多个人在一起作同样的事 。)分布式是指将不同的业务分布在不同的地方。而集群指的是将几台服务器集中在一起,实现同一业务。分布式中的每一个节点,都可以做集群。而集群并不一定就是分布式的。简单的说,微服务是架构设计方式,分布式是系统部署方式,两者概念不同一分钟弄懂什么是分布式和微服务大白话解说,半分钟就懂 — 分布式与集群是什么 ? 区别是什么?
2020-09-24 12:45:13 252
转载 序列化、反序列化学习
1.Java序列化与反序列化Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。2.为什么需要序列化与反序列化我们知道,当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本、图片、音频、视频等, 而这些数据都会以二进制序列的形式在网络上传送。那么当两个Java进程进行通信时,能否实现进程间的对象传送呢?答案是可以的。如何做到呢?这就需要Java序列化与反序列化了。换句话说,一方面,发送方需要把这个Java对象转换为字节序列,然后在网
2020-09-24 10:39:36 76
转载 MySQL为什么选B+树
平衡二叉树(AVL树)B 树又叫平衡多路查找树为什么MySQL索引更适合B+树而不是二叉树、B树MySQL学习笔记索引篇:B树和B+树为什么Mysql用B+树做索引而不用B树从Mysql(Inoodb)的角度来看,B+树是用来充当索引的,一般来说索引非常大,尤其是关系性数据库这种数据量大的索引能达到亿级别,所以为了减少内存的占用,索引也会被存储在磁盘上。那么Mysql如何衡量查询效率呢?磁盘IO次数,B-树(B类树)的特定就是每层节点数目非常多,层数很少,目的就是为了就少磁盘IO次数,当查询数据
2020-09-23 15:30:59 449
转载 一致性哈希算法
一致性哈希算法原理一致性哈希将整个哈希值空间组织成一个虚拟的圆环,如假设某哈希函数H的值空间为0-2^32-1(即哈希值是一个32位无符号整形),整个哈希空间环如下:Memcached简介一致性哈希算法一致性HASH算法的JAVA实现一致性哈希算法的两种优化方案...
2020-09-23 15:09:13 86
转载 数据路连接池的学习
数据库连接池学习笔记(一):原理介绍+常用连接池介绍什么是连接池数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。为什么要使用连接池数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。 一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完都关闭连接,这样造成系统的 性能低下。 数据库连接池的解决方案是在应用程序启动时建立足够的数据库连接,并讲这些连接组成一个连接池(简单说:在一个
2020-09-21 14:27:41 68
转载 无状态,无连接的理解
为什么说http协议是无状态协议对服务器程序来说,究竟是有状态服务,还是无状态服务,其判断依旧是指两个来自相同发起者的请求在服务器端是否具备上下文关系。如果是状态化请求,那么服务器端一般都要保存请求的相关信息,每个请求可以默认地使用以前的请求信息。而对于无状态请求,服务器端所能够处理的过程必须全部来自于请求所携带的信息,以及其他服务器端自身所保存的、并且可以被所有请求所使用的公共信息。无状态的服务器程序,最著名的就是WEB服务器。每次HTTP请求和以前都没有啥关系,只是获取目标URI。得到目标内容之后,
2020-09-21 13:56:28 694
转载 ConcurrentHashMap源码解析
ConcurrentHashMap源码分析(1.8)ConcurrentHashMap源码解析ConcurrentHashMap能完全替代HashTable吗?hash table虽然性能上不如ConcurrentHashMap,但并不能完全被取代,两者的迭代器的一致性不同的,hash table的迭代器是强一致性的,而concurrenthashmap是弱一致的。 ConcurrentHashMap的get,clear,iterator 都是弱一致性的。下面是大白话的解释:Hashtable的
2020-09-18 18:29:20 85
原创 LRU、LFU学习
深入理解LinkedHashMap和LRU缓存LRU Least Recently Used 最近最久未使用 (如果数据最近被访问过,那么将来被访问的几率也更高)。底层是LinkedHashMap,初始化的时候第三个参数(accessOrder参数)需要true,再重写removeEldestEntry函数。**如果第三个初参数为false,且重写removeEldestEntry函数为FIFO的缓存形式。**如果,第三个参数为false,不重写removeEldestEntry函数,则
2020-09-16 20:20:13 148
转载 mysql联合索引学习
mysql 联合索引生效的条件、索引失效的条件mysql索引最左匹配原则的理解联合索引是什么对多个字段同时建立的索引(有顺序,ABC,ACB是完全不同的两种联合索引。)为什么要用以联合索引(a,b,c)为例1 建立这样的索引相当于建立了索引a、ab、abc三个索引。一个索引顶三个索引当然是好事,毕竟每多一个索引,都会增加写操作的开销和磁盘空间的开销。2 覆盖(动词)索引。同样的有联合索引(a,b,c),如果有如下的sql: select a,b,c from table where
2020-09-15 13:13:12 1859
原创 java中IO学习
Java读取文件的几种方法java中比较字符串的大小(compareTo方法的使用)换行:"\n"java读写Txt文件从一个文件中读取所有行的字符串,再进行大到小的排序写入到另一个文件下。import java.io.*;import java.util.ArrayList;import java.util.Collections;import java.util.List;class Main { public static void main(String[] args) .
2020-09-14 22:13:01 103
转载 堆排序——Java实现
堆排序——Java实现堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序是不稳定的:比如:3 27 36 27,如果堆顶3先输出,则,第三层的27(最后一个27)跑到堆顶,然后堆稳定,继续输出堆顶,是刚才那个27,这样说明后面的27先于第二个位置的27输出,不稳定。...
2020-09-14 20:39:58 107
转载 Semaphore源码分析
死磕 java同步系列之Semaphore源码解析Semaphore有两种模式,公平模式和非公平模式。公平模式就是调用acquire的顺序就是获取许可证的顺序,遵循FIFO;非公平模式是抢占式的,也就是有可能一个新的获取线程恰好在一个许可证释放时得到了这个许可证,而前面还有等待的线程。JDK1.8源码分析之Semaphore初始状态 state=2;acquire许可,没有获取到就阻塞进入到队列。release是释放许可,队列中的阻塞线程按照顺序获取许可。(非公平模式下,默认的,队列外新的
2020-09-11 17:30:27 69
转载 CyclicBarrier源码分析
CyclicBarrier源码解读CyclicBarrier源码解析Java并发工具三剑客之CyclicBarrier源码解析首先CountDownLatch在await之后必须依靠别的线程来给它countDown,打开门闩;其次CountDownLatch在countDown到0之后,该CountDownLatch的生命周期就结束了,它不能重用。那么有没有既可以自己给自己打开门闩而且还能重用的呢,有的,那就是CyclicBarrier,译作回环栅栏。它的使用方法和CountDownLatch差不多,
2020-09-11 16:21:01 75
转载 CountDownLanch源码解析
countdownlatch的使用详解(好懂!!)CountDownLatch源码探究 (JDK 1.8)CountDownLatch实现原理CountDownLatch源码解析添加链接描述import java.util.concurrent.CountDownLatch;public class Main { public static void main(String[] args) { CountDownLatch count = new CountDownLatc
2020-09-11 14:46:29 214
转载 ReentrantLock(重入锁)源码学习
Java并发之AQS详解为什么基于FIFO的同步队列可以实现非公平锁?由FIFO队列的特性知,先加入同步队列等待的线程会比后加入的线程更靠近队列的头部,那么它将比后者更早的被唤醒,它也就能更早的得到锁。从这个意义上,对于在同步队列中等待的线程而言,它们获得锁的顺序和加入同步队列的顺序一致,这显然是一种公平模式。**然而,线程并非只有在加入队列后才有机会获得锁,哪怕同步队列中已有线程在等待,非公平锁的不公平之处就在于此 **。回看下非公平锁的加锁流程,线程在进入同步队列等待之前有两次抢占锁的机会:第..
2020-09-10 21:14:08 103
转载 偏向锁->轻量级锁->重量级锁
轻量级锁到底是怎么回事啊啊啊啊自旋锁的应用场景:线程的阻塞和唤醒需要CPU从用户态转为核心态,频繁的阻塞和唤醒对CPU来说是一件负担很重的工作,势必会给系统的并发性能带来很大的压力。同时我们发现在许多应用上面,对象锁的锁状态只会持续很短一段时间,为了这一段很短的时间频繁地阻塞和唤醒线程是非常不值得的,所以引入自旋锁。若一个线程等待获取锁对象所持续的时间非常短,这时适合使用自旋锁。所谓自旋锁,就是等待锁的线程并不进入阻塞状态,而是执行一个无意义的循环。在循环结束后查看锁是否已经被释放,若已经释放则直接
2020-09-10 16:50:15 81
转载 synchronized的底层原理
synchronized七种场景应用总结1 两个线程同时访问一个对象的同步方法(首先是同一个对象,并且是同步方法,这属于对象锁中的普通同步方法锁,效果是线程顺序执行)2 两个线程访问的两个对象的同步方法(访问不同的对象,如果要实现同步的话,锁的级别应该到类锁,但题中是同步方法,属于对象级别的,所以,不同对象不受干扰,线程并行运行)3 两个线程访问的是synchronized静态方法(锁的级别是类锁,不管是不是同一个对象,线程都是顺序同步执行)4 同时访问同步方法和非同步方法(一个线程访问同步
2020-09-09 23:39:11 160
转载 CAS,synchronized,Lock的使用场景
Lock和synchronized的选择1)Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现;2)synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而Lock在发生异常时,如果没有主动通过unLock()去释放锁,则很可能造成死锁现象,因此使用Lock时需要在finally块中释放锁;3)Lock可以让等待锁的线程响应中断,而synchronized却不行,使用synchronized时,等待的线程会一直
2020-09-09 23:16:02 1032
转载 AQS源码学习
AQS源码分析(含图解详细流程)Java并发之AQS详解Java技术之AQS详解1.ReentrantLock下面有三个内部类:Sync,NonfairSync,FairSync2.AQS继承AOS2.Sync继承AQS3.NonfairSync(非公平锁)、FairSync(公平锁)分别继承Sync...
2020-09-09 17:34:33 99
转载 红黑树
红黑树本质上是一种二叉查找树,但它在二叉查找树的基础上额外添加了一个标记(颜色),同时具有一定的规则。这些规则使红黑树保证了一种平衡。插入、删除、查找的最坏时间复杂度都为 O(log2n)。重温数据结构:深入理解红黑树黑色高度从根节点到叶节点的路径上黑色节点的个数,叫做树的黑色高度。红黑树的 5 个特性红黑树在原有的二叉查找树基础上增加了如下几个要求:1 每个节点要么是红色,要么是黑色;2 根节点永远是黑色的;3 所有的叶节点都是是黑色的(注意这里说叶子节点其实是上图中的 NIL 节
2020-08-26 23:06:31 144
转载 哈夫曼树
哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层数)。树的带权路径长度记为WPL=(W1L1+W2L2+W3L3+…+ WnLn),N个权值Wi(i=1,2,…n)构成一棵有N个叶结点的二叉树,相应的叶结点的路径长度为Li(i=1,2,…n)。哈夫曼树原理,及构造方法构造哈夫曼树的算法如下1)对给定的n个权值{W1,W2,W3,...,Wi,...,Wn}构成n棵二
2020-08-26 22:29:54 207
转载 哪些情况适合建索引
哪些情况适合建索引?主键自动建立唯一索引。频繁作为查询条件的字段应该创建索引。3.查询中与其他表关联的字段,外键关系建立索引。单键/组合索引的选择问题,who?(在高并发下倾向创建组合索引)。查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度。(索引干两件事:检索和排序)。查询中统计或者分组字段。哪些情况不适合建索引?7. 频繁更新的字段不适合创建索引,因为每次更新不单单是更新了记录还会更新索引文件。8. where条件里用不到的字段不创建索引。9. 表记录太少。10.
2020-08-26 21:16:49 1491
转载 排序算法的比较与应用
图片 文字 为转载,如侵删:应用场景(1)若n较小(如n≤50),可采用直接插入或直接选择排序。当记录规模较小时,直接插入排序较好;否则因为直接选择移动的记录数少于直接插人,应选直接选择排序为宜。(2)若文件初始状态基本有序(指正序),则应选用直接插人、冒泡或随机的快速排序为宜;(3)若n较大,则应采用时间复杂度为O(nlgn)的排序方法:快速排序、堆排序或归并排序。 快速排序是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短
2020-08-26 21:06:38 161
转载 Sql 中内连接、外连接、全连接、交叉连接的区别
Sql 中内连接、外连接、全连接、交叉连接的区别全外连接是在结果中除了显示满足连接的条件的行外,还显示了join两侧表中所有满足检索条件的行左连接 ,右连接,内连接和全外连接的4者区别...
2020-08-25 23:34:57 144
转载 输入URL后的全过程
输入URL后的全过程输入网址到网页显示的过程是什么?http是基于tcpHTTP使用TCP而不是UDP的原因在于(打开)一个网页必须传送很多数据,而TCP协议提供传输控制,按顺序组织数据,和错误纠正。...
2020-08-25 23:14:39 326
转载 枚举的学习
Java枚举详解Java 枚举(enum) 详解7种常见的用法为什么要用枚举呢?重要理解:在JDK1.5之前,Java有两种方式定义新类型:类和接口。对于大部分面向对象编程来说,这两种方法看起来似乎足够了。但是在一些特殊情况下,这些方法就不适合。例如,想定义一个Color类,它只能有RED、GREEN、BLUE 3种值,其他的任何值都是非法的,那么JDK1.5之前虽然可以构造这样的代码,但是要做很多的工作,就可能带来很多不安全的问题。而JDK1.5之后引入的枚举类型就能解决这些问题。
2020-08-24 15:51:53 115
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人