05 2020 档案
摘要:线上有一个非常繁忙的服务的 JVM 进程 CPU 经常跑到 100% 以上,下面写了一下排查的过程。通过阅读这篇文章你会了解到下面这些知识。 Java 程序 CPU 占用高的排查思路 可能造成线上服务大量异常的 log4j 假异步 Kafka 异步发送的优化 On-CPU 火焰图的原理和解读 使用
阅读全文
摘要:本文搜集来自网络:http://www.hollischuang.com/archives/4856 第一次技术面(60min) 说一说你使用的是什么样的线程池,自定义线程池的几个参数是什么 说一说线程池的执行流程 你的项目中定义的核心线程数、最大线程数和队列大小是如何定义的?为什么这样定义?(这道
阅读全文
摘要:一、集中式系统 在学习分布式之前,先了解一下与之相对应的集中式系统是什么样的。 集中式系统用一句话概括就是:一个主机带多个终端。终端没有数据处理能力,仅负责数据的录入和输出。而运算、存储等全部在主机上进行。现在的银行系统,大部分都是这种集中式的系统,此外,在大型企业、科研单位、军队、政府等也有分布。
阅读全文
摘要:一、应用场景: 订单超过 30 分钟未支付,则自动取消。 外卖商家超时未接单,则自动取消。 医生抢单电话点诊,超过 30 分钟未打电话,则自动退款。等等场景都可以用定时任务去轮询实现,但是当数据量过大的时候,高频轮询数据库会消耗大量的资源,此时用延迟队列来应对这类场景比较好。 二、需求 消息存储 过
阅读全文
摘要:1.什么是redis? Redis 是一个基于内存的高性能key-value数据库。 2.Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作
阅读全文
摘要:什么是延迟队列 延迟队列存储的对象肯定是对应的延迟消息,所谓”延迟消息”是指当消息被发送以后,并不想让消费者立即拿到消息,而是等待指定时间后,消费者才拿到这个消息进行消费。 场景一:在订单系统中,一个用户下单之后通常有30分钟的时间进行支付,如果30分钟之内没有支付成功,那么这个订单将进行一场处理。
阅读全文
摘要:转自:https://www.cnblogs.com/shenyixin/p/9084249.html RabbitMQ中,所有生产者提交的消息都由Exchange来接受,然后Exchange按照特定的策略转发到Queue进行存储 RabbitMQ提供了四种Exchange:fanout,direc
阅读全文
摘要:生产者和消费者,具有相同的交换机名称(Exchange)、交换机类型和相同的密匙(routingKey),那么消费者即可成功获取到消息。(PS:相对比只要交换机名称即可接收到消息的广播模式(fanout),direct模式在其基础上,多加了一层密码限制(routingKey)。) 一、什么是dire
阅读全文
摘要:export命令 功能说明:设置或显示环境变量。 语 法:export [-fnp][变量名称]=[变量设置值] 补充说明:在shell中执行程序时,shell会提供一组环境变量。 export可新增,修改或删除环境变量,供后续执行的程序使用。 export的效力仅及于该此登陆操作。 参 数: -f
阅读全文
摘要:1.在k8s mster节点执行 1.kubectl get nodes 发现node节点没起来 [root@guanbin-k8s-master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION guanbin-k8s-master Ready
阅读全文
摘要:一、内存溢出(OOM)的原因 在JVM中,有哪些内存区间? 堆溢出 public static void main(String args[]){ ArrayList<byte[]> list=new ArrayList<byte[]>(); for(int i=0;i<1024;i++){ lis
阅读全文
摘要:一、系统性能监控 系统性能工具用于确定系统运行的整体状态,基本定位问题所在。 Linux – uptime • 系统时间 • 运行时间 n 例子中为7分钟 • 连接数 n 每一个终端算一个连接 • 1,5,15分钟内的系统平均负载 n 运行队列中的平均进程数 – Top • 第一行同uptime •
阅读全文
摘要:一、什么是ClassLoader? 大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都被封装在不同的class文件当中,所以经常要从这个
阅读全文
摘要:一、堆的回顾 新生代中的98%对象都是“朝生夕死”的,所以并不需要按照1:1的比例来划分内存空间,而是将内存分为一块比较大的Eden空间和两块较小的Survivor空间,每次使用Eden和其中一块Survivor。当回收时,将Eden和Survivor中还存活着的对象一次性地复制到另外一块Survi
阅读全文
摘要:我们前面说到了JVM的常用的配置参数,其中就涉及了GC相关的知识,趁热打铁,我们今天就学习下GC的算法有哪些,种类又有哪些,让我们进一步的认识GC这个神奇的东西,帮助我们解决了C 一直挺头疼的内存回收问题。 一、GC的概念 首先在介绍GC概念之前,我们先知道下为什么GC,然后我们再讲解GC。众所周知
阅读全文
摘要:在做虚拟化时候,遇到划分CPU的问题,因此考虑到CPU不知道具体怎么划分,查询一些资料后就写成本文。 a. 物理CPU:物理CPU是相对于虚拟CPU而言的概念,指实际存在的处理器,就是我们可以看的见,摸得着的CPU,就是插在主板上面的。如下图: b. 物理核:CPU中包含的物理内核个数,比如我们通常
阅读全文
摘要:原文链接:https://www.cnblogs.com/pony1223/p/8661219.html 在IDE的后台打印GC日志: 既然学习JVM,阅读GC日志是处理Java虚拟机内存问题的基础技能,它只是一些人为确定的规则,没有太多技术含量。 既然如此,那么在IDE的控制台打印GC日志是必不可
阅读全文
摘要:Docker 的核心组件包括: Docker 客户端 - Client Docker 服务器 - Docker daemon Docker 镜像 - Image Registry Docker 容器 - Container Docker 架构如下图所示: Docker 采用的是 Client/Ser
阅读全文
摘要:1.服务器型号 [root@guanbin-k8s-master ~]# dmidecode|grep "System Information" -A9|egrep "Manufacturer|Product" Manufacturer: VMware, Inc. Product Name: VMw
阅读全文
摘要:先查询当前redis的服务是否已经启动 ps -ef|grep redis [root@guanbin-k8s-master ~]# ps -ef|grep redis redis 1557 1 0 5月07 ? 00:33:06 /usr/bin/redis-server 127.0.0.1:63
阅读全文
摘要:PoolingHttpClientConnectionManager是一个HttpClientConnection的连接池,可以为多线程提供并发请求服务。主要作用就是分配连接,回收连接等。同一个route的请求,会优先使用连接池提供的空闲长连接。 源码版本4.5.2,因为代码太多,很多不是自己关心的
阅读全文
摘要:1、使用Yum 来安装依赖包 yum -y install sendmail yum -y install mailx 2、获取授权码 下面以腾讯为例 https://service.mail.qq.com/cgi-bin/help?subtype=1&&no=1001256&&id=28 3.修改
阅读全文
摘要:dmesg命令被用于检查和控制内核的环形缓冲区。kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息保存在/var/log/dmesg文件里。 语法格式:dmesg [参数] 常用参数: -c 显示信息后,清除ring buffer中的
阅读全文
摘要:Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下。 首先构建一个简单的 Spring Boot 项目,然后给项目添加 Docker 支持,最后对项目进行部署。 一个简单 Spring Boot 项目在
阅读全文
摘要:一、背景 由于windows和linux对换行的标识不一样,不同系统的代码传递导致代码格式的改变中可能会带来程序无法正常编译通过的问题。因此根据一些编译的错误提示,可以定位到是文件格式的问题,要对程序的文本文件进行转换。 二、解决方法 windows标识一行的结束用的是回车换行符,即'\r\n',也
阅读全文
摘要:源于:https://mp.weixin.qq.com/s/VPs-IXY6RoxbltHIxtIbng which命令 我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索: which 查看可执行文件的位置。 whereis 查看文件的位置。 locate 配合数
阅读全文
摘要:字节跳动4面核心面试题 01 Zookeeper 部分 CAP定理 ZAB协议 leader选举算法和流程 02 Redis 部分 Redis的应用场景 Redis支持的数据类型(必考) zset跳表的数据结构(必考) Redis的数据过期策略(必考) Redis的LRU过期策略的具体实现 如何解决
阅读全文
摘要:1、为什么要用锁? 锁-是为了解决并发操作引起的脏读、数据不一致的问题。 2、锁实现的基本原理 2.1、volatile Java编程语言允许线程访问共享变量, 为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量。Java语言提供了volatile,在某些情况下比锁要更加方
阅读全文
摘要:UTF-8、en_US.UTF-8和zh_CN.UTF-8的区别 en_US.UTF-8、zh_CN.UTF-8叫做字符集,就是说‘A’、‘B’、‘中’、‘国’等对应的整数值,en_US.UTF-8只包含了ASCII码,zh_CN.UTF-8包含了6000多个汉字?如果是这样的话,那所谓UTF-8,
阅读全文
摘要:>>> from urllib.parse import urlparse >>> o = urlparse('http://www.cwi.nl:80/%7Eguido/Python.html') >>> o ParseResult(scheme='http', netloc='www.cwi.n
阅读全文
摘要:本节中的函数返回JSON值的属性。 JSON_DEPTH(json_doc) 返回JSON文档的最大深度。NULL如果参数为,则 返回 NULL。如果参数不是有效的JSON文档,则会发生错误。 一个空数组,一个空对象或标量值的深度为1。一个仅包含深度为1的元素的非空数组,或者仅包含深度为1的成员值的
阅读全文
摘要:修改JSON值的函数 本节中的函数将修改JSON值并返回结果。 JSON_APPEND(json_doc, path, val[, path, val] ...) 将值附加到JSON文档中指定数组的末尾并返回结果。该功能JSON_ARRAY_APPEND() 在MySQL 5.7.9中已重命名;别名
阅读全文
摘要:本节中的函数对JSON值执行搜索操作,以从其中提取数据,报告数据是否在其中的某个位置或报告其中的数据的路径。 JSON_CONTAINS(target, candidate[, path]) 通过返回1或0指示给定的candidateJSON文档是否包含在targetJSON文档中,或者(如果提供了
阅读全文
摘要:本节中列出的功能由组件元素组成JSON值。 JSON_ARRAY([val[, val] ...]) 计算(可能为空)值列表,并返回包含这些值的JSON数组。 mysql> SELECT JSON_ARRAY(1, "abc", NULL, TRUE, CURTIME()); + + | JSON_
阅读全文
摘要:JSON函数相关文章均来自官网,此处仅做记录,以便以后查询方便。 https://dev.mysql.com/doc/refman/5.7/en/json-functions.html JSON函数参考 JSON函数 名称描述 -> 评估路径后从JSON列返回值;等效于JSON_EXTRACT()。
阅读全文
摘要:这几个接口都在 java.util.function 包下的,分别是Consumer(消费型)、supplier(供给型)、predicate(谓词型)、function(功能性); 那么,下面,我们从具体的应用场景来讲讲这个接口的用法! 1 Consumer接口 从字面意思上我们就可以看得出啦,c
阅读全文
摘要:出处:https://my.oschina.net/hosee/blog/711632 在学校期间大家都写过不少程序,比如写个hello world服务类,然后本地调用下,如下所示。这些程序的特点是服务消费方和服务提供方是本地调用关系。 public class Test { public stat
阅读全文