08 2021 档案
摘要:单向通信 容器间Link单向通信 容器IP易变化,使用容器名称通信 # 容器名web1 docker run -d --name web1 tomcat # 容器名 database docker run -d --name database -it centos /bin/sh # 查询容器信息
阅读全文
摘要:基本概念 Docker是容器化平台 Docker是提供应用打包,部署与运行应用的容器化平台 Docker Engine类似JVM Docker体系结构 docker使用C/S 架构,docker daemon 作为 server 端接受 client 的请求,并处理(创建、运 行、分发容器),他们可
阅读全文
摘要:Dockerfile构建镜像 Dockerfile是一个包含用于组合镜像的命令的文本文档 Docker通过读取Dockerfile中的指令按步自动生成镜像 docker build -t 机构/镜像名<:tags> Dockerfile目录 Dockerfile自动部署Tomcat应用步骤 创建do
阅读全文
摘要:击穿 缓存击穿是指缓存中没有但数据库中有的数据,当大量并发来找这个 key 的时候,这时候客户端去直接请求数据库,这就是击穿。 key 超过了过期时间 key 被 LRU LFU 清掉了 解决方案: 加互斥锁,只有获得锁的人才能去数据库查,没释放锁之前,其他并行进入的线程会等待sleep,再重新去缓
阅读全文
摘要:历史的演化 物理机时代 → 虚拟机时代 → 容器化时代 物理机时代 虚拟化时代 容器化时代 容器化技术比虚拟机更灵活,更小巧 容器化解决的问题 容器技术:有效的将单个操作系统的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求,这种技术就是容器技术。 Docker 将应用程序与该
阅读全文
摘要:主从复制解决HA问题,未解决容量有限问题 容量的问题 AKF 的 y轴 做纵向业务拆分,这样把存储的数据,在客户端层面就决定好每个redis存储一部分的数据。 如果数据可以分类,交集不多,可以考虑按业务拆分 如果数据量很大,光拆分了业务之后,还是每个业务拥有大量数据, 数据没有办法划分拆解 采用sh
阅读全文
摘要:单机、单节点、单实例 单点故障 容量有限 压力 集群方式 AKF拆分 AKF 立方体也叫做scala cube,它在《The Art of Scalability》一书中被首次提出,旨在提供一个系统化的扩展思路。AKF 把系统扩展分为以下三个维度: X 轴:直接水平复制应用进程来扩展系统。 Redi
阅读全文
摘要:单机持久化 存储层 快照/副本 日志 RDB 对应快照 时点性,是每隔一段时间存一下 阻塞,redis不对外提供服务 非阻塞,redis继续对外提供服务 非阻塞过程写个过程中存在修改,数据正确性不能保证,备份的时间点也无法确认,redis采用下图方式无法实现 非阻塞,fork方式 redis 子进程
阅读全文
摘要:集合 List Hash Set sorted_set List 双向链表 命令 LPUSH k1 a b c d e Prepend one or multiple values to a list RPUSH k2 e d c b a Append one or multiple values
阅读全文
摘要:redis进阶使用 管道(Pipelining) http://redis.cn/topics/pipelining.html 管道连接redis 一次发送多个命令,节省往返时间 安装nc yum install nc -y 通过nc连接redis nc localhost 6379 注意配置/et
阅读全文
摘要:常用命令 redis-cli 连接客户端 redis-cli -p 6380 连接制定端口 redis-cli -h 帮助文档 select 8 选择库(默认16个库) redis-cli -p 6380 -n 8 连接制定端口制定8号库 help @generic 查看通用组帮助 set key3
阅读全文
摘要:常识 磁盘: 1,寻址:ms 2,带宽:G/M 内存: 1,寻址:ns 2,带宽:很大 秒 毫秒 微秒 纳秒 磁盘比内存在寻址上慢了10W倍 I/O buffer:成本问题 磁盘与磁道,扇区,一扇区 512Byte带来一个成本变大:索引 4K 操作系统,无论你读多少,都是最少4k从磁盘拿 随着文件变
阅读全文
摘要:运行时数据区的构成 PC 程序计数器 存放指令位置 虚拟机的运行,类似于这样的循环: while( not end ) { 取PC中的位置,找到对应位置的指令; 执行该指令; PC ++; } JVM Stack Frame - 每个方法对应一个栈帧 Local Variable Tab
阅读全文
摘要:类加载流程 class 是怎么从硬盘中加载到内存中:编译 加载 初始化 Loading 双亲委派,主要出于安全来考虑 package com.mashibing.jvm.c2_classloader; public class T004_ParentAndChild { public static
阅读全文
摘要:Java并发内存模型 使用JavaAgent测试Object的大小 对象大小(64位机) 观察虚拟机配置 java XX:+PrintCommandLineFlags version 对象的内存布局 在HotSpot虚拟机里,对象在堆内存中的存储布局可以划分为三个部分:对象头(Header)、实例数
阅读全文
摘要:JMM 硬件层的并发优化基础知识 硬件层数据一致性 读取缓存以cache line为基本单位,目前64bytes 位于同一缓存行的两个不同数据,被两个不同CPU锁定,产生互相影响的伪共享问题 伪共享问题:JUC/c_028_FalseSharing 使用缓存行的对齐能够提高效率 package co
阅读全文
摘要:1:JVM基础知识 什么是JVM JAVA VIRTUAL MACHINE 从编码到运行过程 jvm跟class无关。任何语言只要能遵循class的规范,一样能被jvm 运行。 JDK、JRE、JVM的关系 jvm实现 2:ClassFileFormat 整个class文件的格式就是一个二进制字节流
阅读全文
摘要:ThreadLocal ThreadLocal 修饰的变量,是线程独有的 ThreadLocal源码 set方法 获取当前线程,并获取当前线程的ThreadLocalMap实例(从getMap(Thread t)中很容易看出来)。 如果获取到的map实例不为空,调用map.set()方法,否则调用构
阅读全文
摘要:面试题1 实现一个容器,提供两个方法add、size,写两个线程: 线程1,添加10个元素到容器中 线程2,实时监控元素个数,当个数到5个时,线程2给出提示并结束 wait¬ify /** * 曾经的面试题:(淘宝?) * 实现一个容器,提供两个方法,add,size * 写两个线程,线程1添
阅读全文
摘要:Atomic Vs Sync Vs LongAdder package com.mashibing.juc.c_018_00_AtomicXXX; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.Ato
阅读全文
摘要:volatile volatile作用 保证线程的 可见性 ,同时 禁止指令的重排序 可见性 堆内存是所有线程共享里面的内存,除了共享的内存之外呢,每个线程都有自己的专属的区域,都有自己的工作内存,如果说在共享内存里有一个值的话,当我们线程,某一个线程都要去访问这个值的时候,会将这个值copy一份,
阅读全文
摘要:多线程 基本概念 什么是叫一个进程? 什么叫一个线程? Program app QQ.exe 进程: 做一个简单的解释,你的硬盘上有一个简单的程序,这个程序叫QQ.exe,这是一个程序, 这个程序是一个静态的概念,它被扔在硬盘上也没人理他,但是当你双击它,弹出一个界面输入账 号密码登录进去了,OK,
阅读全文
摘要:JMH 官网 http://openjdk.java.net/projects/code-tools/jmh/ 创建JMH测试 创建Maven项目,添加依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apa
阅读全文
摘要:几类线程池 ThreadPoolExecutor:我们通常所说的线程池。多个线程共享同一个任务队列。 SingleThreadPool CachedThreadPool FixedThreadPool ScheduledPool ForkJoinPoll:先将任务分解,最后再汇总。每个线程有自己的任
阅读全文
摘要:面试题 LockSupport sync wait notify 线程池 三个接口 相关接口及类 Callable 类似Runnable 有返回值 Future 存储执行的将来才产生的结果 FutureTask 有返回值的任务,Runnable 与Future结合 CompletableFuture
阅读全文
摘要:容器图 一、MAP 1、不需要同步的情况 HashMap TreeMap LinkedHashMap 2、并发不高的情况 Hashtable Collections.synchronizedMap(); 3、高并发的情况 ConcurrentHashMap (分成16段,然后给各段加锁,多线程访问小
阅读全文
摘要:部署 idea旗舰版安装spring initailzr,选择spring-boot的web模块,自动生成main入口和pom文件 启动 三种方法 idea的run启动 命令 mvn spring-boot:run mvn install 打包,然后用java命令启动 java -jar manag
阅读全文