ThreadPoolExecutor原理解析 成员变量ctl是Integer的原子变量,使用一个变量同时记录线程池状态和线程池中线程个数,假设计算机硬件的Integer类型是32位二进制标示,如下面代码所示,其中高3位用来表示线程池状态,后面29位用来记录线程池线程个数。当用户线程提交任务到线程池后,在线程池没有执行拒绝策略的情况下,用户线 程会马上返回,而提交的任务要么直接切换到线程池中的Worker线程来执行,要么先放入线程池的阻塞队列里面,稍后再由Worker线程来执行。
loki+promtail+grafana日志框架搭建 下载loki promtail grafana#loki promtail https://github.com/grafana/loki/releases#grafanahttps://grafana.com/grafana/download?pg=get&plcmt=selfmanaged-box1-cta1启动命令./grafana-server web &nohup /mnt/data/filebeat/filebeat -e > logs/stdout
JVM调优(CMS+PerNew垃圾回收) 0.问题及排查思路0.1 线上故障 线上服务器服务进程假死,进程还存在,但是日志已经不打印了,访问失败超时不响应。0.2 排查思路 0.2.1 使用 jps -l 查看java进程的进程号 假设进程号为9999[root@izbp1bym5hklu4zctqz logs]$ jps -l24611 com.alibaba.dubbo.container.Main11015 sun.tools.jps.Jps15113 com.alibaba.dubbo...
dubbo设置自定义路由 1.新建路由工厂import org.apache.dubbo.common.URL;import org.apache.dubbo.common.extension.Activate;import org.apache.dubbo.rpc.cluster.Router;import org.apache.dubbo.rpc.cluster.RouterFactory;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/**
dubbo自定义集群扩展 新建集群 import com.alibaba.dubbo.rpc.Invoker;import com.alibaba.dubbo.rpc.RpcException;import com.alibaba.dubbo.rpc.cluster.Cluster;import com.alibaba.dubbo.rpc.cluster.Directory;public class IpRouteCluster implements Cluster { public final static
java内存及线程问题排查常用命令 0. 观察进程的上下文切换vmstat 1 3代表每秒收集一次性能指标,总共获取3次procsr:等待运行的进程数b:处于非中断睡眠状态的进程数memoryswpd:虚拟内存使用情况free:空闲的内存buff:用来作为缓冲的内存数cache:缓存大小swapsi:从磁盘交换到内存的交换页数量so:从内存交换到磁盘的交换页数量iobi:发送到块设备的块数bo:从块设备接收到的块数systemin:每秒中断数cs:每秒上下文切换次数cpuus:用户CPU使用时间
Linux挂载硬盘 #查看硬盘详细信息fdisk -l#分区初始化fdisk /dev/xvde输入n设定新的硬盘分割区 输入p硬盘为主要分割区primary分区数 默认值 回车起始扇区 默认值 回车last扇区 默认值 回车w保存#加载分区partprobe#在分区建立文件系统mkfs -t ext4 /dev/xvde1#挂载mount /dev/xvde1 /mnt#备份文件cp /etc/fstab /etc/fstab.bak#设置开机主动挂载echo .
LeetCode-20[有效的括号] description :给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = "()"输出:true示例2:输入:s = "()[]{}"输出:true示例3:输入:s = "(]"输出:false示例4:输入:s = "([)]"输出:false示例5:输入:s = "{[]}"输出:tr...
LeetCode-14[最长公共前缀] description:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例 1:输入:strs = ["flower","flow","flight"]输出:"fl"示例 2:输入:strs = ["dog","racecar","car"]输出:""解释:输入不存在公共前缀。提示:1 <= strs.length <= 200 0 <= strs[i].length <= 200 str.
LeetCode-13[罗马数字转整数] discribtion:罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列的 1。12 写做XII,即为X+II。 27 写做XXVII, 即为XX...
LeetCode-7[整数反转] 题目给你一个 32 位的有符号整数x,返回将x中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围[−231, 231 − 1],就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x = 0输出:0提示:-231 <= x <...
LeetCode-9 [回文数] class Solution { /** * 首先明确 /是取整(即商的整数) %是取余(左边小于右边,结果为左边,左边大于右边,结果为余数) * 思路: 1.假设为4位数 x/1000的结果为千位数字 x%10的结果为个位数字 比较千位数与个位数是否相等 * 2.取出中间数字 继续循环比较 * * @param x 入参 * @return 是否为回文数 */ public boolean isPalindrome(.