linux linux之lsof lsof命令是什么? 可以列出被进程所打开的文件的信息。被打开的文件可以是 普通的文件 目录 网络文件系统的文件 字符设备文件 (函数)共享库 管道,命名管道 符号链接 底层的socket字流,网络socket,unix域名socket 在linux里面,大部分的东西都是被当做文件的…..还有其他很多 lsof使用 列出所有打开的文件: lsof 备注: 如果不加任何参数,就会打开所有被打开的文件,建议加上一下参数来具体定位 查看谁正在使用某个文件 lsof /filepath/file 递归查看某个目录的文件信息 lsof +D /filepath/
java java-mysql时区问题 问题 数据库时间展示正常,但是web页面时间与数据库时间差 13/14 个小时 原因 mysql采用的是CST时区,而java使用的是北京时间,两个时区有时差13个小时有时差14个小时,故从数据库查出数据后,如果直接展示无问题,但是如果通过java程序 SimpleDateFormat转换,就会出现问题 解决方案 在通过SimpleDateFormat转换时间时,设置时区为 CST 此方案,后续所有使用SimpleDateFormat转换数据库时间时,都需要指定TimeZone 但是通过SimpleDateFormat转换非数据库date(如 当前date)时,不需要指定TimeZone format.setTimeZone(TimeZone.getTimeZone("CST&
java之DelayQueue延时队列的使用及实现 DelayQueue的使用 Item item1 = new Item("item1", 5, TimeUnit.SECONDS); Item item2 = new Item("item2", 10, TimeUnit.SECONDS); Item item3 = new Item("item3", 15, TimeUnit.SECONDS); DelayQueue<
java jvm之内存自适应 案例1 配置 -Xmx2000m -Xms2000m -XX:NewRatio=4 -XX:SurvivorRatio=4 jstat bash-4.3$ jstat -gc 18 S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
java Feign RequestInterceptor 部分ThreadLocal值获取不到 问题 在RequestInterceptor实现方法apply()中,部分feign请求能够正常获取ThreadLocal值,部分feign获取不到ThreadLocal值。 环境 spring boot 版本 2.2.0.RELEASE 分析 能够获取到值的情况 获取不到的情况 发现获取不到值时,线程栈是通过CompletableFuture启动的新的线程故获取不到
java spring bean factory介绍 问题 singletonObjects与earlySingletonObjects的作用 如果singletonFactories中存放的内容 如何解决循环引用问题 aop对应的代理类如何保存实例 spring 缓存 singletonObjects-一级缓存 private final Map<String, Object> singletonObjects = new ConcurrentHashMap<>(256); spring 单例对象集合,所有的实例实例化完成后均需要保存在该变量中,该变量的key为bean name,value为spring管理的实例 在spring 创建实例完成后,添加至该缓存中,并且将该实例从earlySingletonObjects中移除,且将该实例对应的factory从singletonFactories中移除 singletonFactories-三级缓存
java feign 使用tcp连接池 feign实现 跟踪程序断点发现feign每次调用时,均通过(HttpURLConnection) new URL(request.url()).openConnection()建立新的连接 feign使用连接池 pom配置 <dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-httpclient</artifactId> </dependency&
linux zuul Tcp close wait排查 问题 查看服务时,发现某服务中存在一个closewait状态的tcp连接,而且一直无法断开连接 所有服务均为k8s pod 方式部署 分析 查看远端ip bash-4.3$ netstat -tpn|grep 58142 tcp 1 0 10.5.165.124:58142 10.5.185.11:8080 CLOSE_WAIT 1/java bash-4.
http http2.0实战 生成证书 keystore以及服务器密钥对儿的生成 bogon:cert liukai$ keytool -genkeypair -alias rabbitsslkey -keyalg RSA -validity 3650 -keystore rabbitkeystore.jks 输入密钥库口令: 再次输入新口令: 您的名字与姓氏是什么? [Unknown]: localhost 您的组织单位名称是什么? [Unknown]: localhost 您的组织名称是什么? [Unknown]: localhost 您所在的城市或区域名称是什么? [Unknown]: localhost 您所在的省/市/自治区名称是什么?
redis redis键莫名不存在问题排查 问题描述 程序运行过程中,莫名其妙的找不到value,程序代码一切正常,该值设置了过期时间,但是未到过期时间 原因 [root@VM-3-11-centos ~]# redis-cli -h 10.3.x.xx 10.3.9.19:6379[2]> config get maxmemory 1) "maxmemory" 2) "1073741824"
http wireshark配置chrome抓取https报文 启动chrome /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --user-data-dir=/tmp/chrome --ssl-key-log-file=/tmp/chrome/.ssl-key.log 启动wireshark并进行配置 perferences -> Protocols -> TLS 抓取报文 通过上述方式启动的chrome访问https://baidu.com 发现在wireshark中可正常抓取到报文
http http2.0 静态表编码 静态表类型 静态表很简单,只包含已知的header字段。分为两种: name和value都可以完全确定,比如:metho: GET、:status: 200 该情况很好理解,已知键值对直接使用一个字符表示; 只能够确定name:比如:authority、cookie 此种情况稍微说明下:首先将name部分先用一个字符(比如cookie)来表示,同时,根据情况判断是否告知服务端,将 cookie: xxxxxxx 添加到动态表中(我们这里默认假定是从客户端向服务端发送消息) 静态表使用 HTTP/2 将 61
http HTTPS加密及优化 加密算法 AES AES 只支持 3 种不同的密钥长度,分别是 128 位、192 位和 256 位,它们的安全性依次升高,运算时间也更长。比如,当密钥为 128 比特位时,需要经过十轮操作,其中每轮要用移位法、替换法、异或操作等对明文做 4 次变换。而当密钥是 192 位时,则要经过 12 轮操作,密钥为 256
redis Redis键空间通知事件 作用 键空间通知使得客户端可以通过订阅频道或模式, 来接收那些以某种方式改动了 Redis 数据集的事件。 事件通过 Redis 的订阅与发布功能(pub/sub)来进行分发, 因此所有支持订阅与发布功能的客户端都可以在无须做任何修改的情况下, 直接使用键空间通知功能。 因为 Redis 目前的订阅与发布功能采取的是发送即忘(fire and forget)策略, 所以如果你的程序需要可靠事件通知(reliable notification of events), 那么目前的键空间通知可能并不适合你: 当订阅事件的客户端断线时, 它会丢失所有在断线期间分发给它的事件。 开启键空间通知 因为开启键空间通知功能需要消耗一些 CPU , 所以在默认配置下, 该功能处于关闭状态。
linux linux之TCP调优 tcp握手 客户端在等待服务器回复的 ACK 报文。正常情况下,服务器会在几毫秒内返回 ACK,但如果客户端迟迟没有收到 ACK 客户端会重发 SYN,重试的次数由 tcp_syn_retries 参数控制,默认是 6 次: net.ipv4.tcp_syn_retries = 6 第 1 次重试发生在 1 秒钟后,接着会以翻倍的方式在第 2、4、
linux linux之内存&cpu分享 问题 RAM与ROM分别是什么? RAM为什么不能持久化? 内存管理的最小单位是什么? 什么是虚拟内存? cache line的作用? volatile的具体实现? RAM RAM作用 内存的存储单元采用了随机读取存储器(RAM, Random Access Memory)。所谓的“随机读取”,是指存储器的读取时间和数据所在位置无关。与之相对,很多存储器的读取时间和数据所在位置有关。就拿磁带来说,我们想听其中的一首歌,必须转动带子。如果那首歌是第一首,那么立即就可以播放。如果那首歌恰巧是最后一首,我们快进到可以播放的位置就需要花很长时间。 RAM的存储 RAM依赖电容器存储数据。电容器充满电后代表1(二进制),未充电的代表0。 这样的话,
mysql mysql中tinyint、smallint、int、bigint的区别 tinyint 从 -2^7 (-128) 到 2^7 - 1 (123) 的整型数据。存储大小为 1 个字节。 unsigned 是从 0 到 255 的整型数据。 所以建表的时候 只能是tinyint(3),哪怕你建tinyint(100),他最大还是3位这么多。 smallint 从 -2^15 (-32,768)
linux linux之cpu cache CPU缓存概述 为什么需要CPU缓存 cpu缓存访问速度 cpu缓存介绍 CPU Cache Cache 结构 cache寻址方式 Cache Entry & Cache line L3 Cache CPU高速缓存读操作 直接映射寻址过程 组关联寻址过程 Cache Miss CPU高速缓存写操作 缓存写入策略 写直达 写回 缓存一致性协议 MESI MESI协议缓存状态 MESI状态转换 多核缓存协同操作 读写屏障 MESI优化和他们引入的问题 CPU切换状态阻塞解决-存储缓存(
other mac电脑cpu信息 查看cpu型号,核心数,线程 bogon:~ liukai$ sysctl machdep.cpu.brand_string # cpu型号 machdep.cpu.brand_string: Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz # 核 bogon:~ liukai$ sysctl -n machdep.cpu.core_count 4
linux 主板频率、内存频率与cpu频率 频率与超频 【频率】电子元件工作的时候会运行在一定的频率下,频率越高,这个元件的处理速度越快,这就和汽车发动机的马力一样,但是在电脑中,性能不单单只是由频率这一项参数决定,所以频率仅限相同的产品,同一代进行横向对比。 【超频】电子元件既然会照着一定的频率运行,这个频率肯定不是凭空而来,他是厂家在出厂的时候人为设定的,厂家会将频率设定在一个能长期稳定运行的状态下,既然频率是人为设定的,那我们也可以去人为更改,将默认的频率手动修改到更高,让元件超负荷运转,这就是俗称的超频,由于频率高了,电压与发热也会变高,因此超频虽然能免费提升性能,但也要承担相应风险。 内存条的标注频率 内存条的标注频率指的就是你在买内存的时候,商品标题所写的内存频率,这个就是代表了内存条的物理属性。 内存条的标注频率代表了这个内存最高可以稳定工作在什么样的频率下,这里有两个关键词就是最高和稳定,内存频率是人为设定的,只要你想,2400的内存同样可以设定为3200,
linux linux之CPU 问题 CPU的规格一样吗? 多核 CPU 和多个 CPU 有何区别? CPU线程切换时,CPU缓存中的数据如何变化? CPU概述 cpu作用 CPU只执行三种基本的操作,分别是读出数据、处理数据和往内存写数据。 cpu规格 主流CPU还是Intel和AMD两家的天下。无论是高端还是低端,两大品牌都有着全线的产品。 Intel和AMD的规格是不同的,根据根据主板的cpu接口选择适当的cpu,值得一提的是,同样的Intel,不同系列的cpu,规格也不同,如i3~9与至强系列 系列 尺寸 接口 i3~i9 37.5×
linux linux之手动实现容器 目录隔离 创建目录 在工作目录下创建/usr,并将本机该目录下的所有文件copy到工作目录中 启动程序 启动单独mount namespace的程序 unshare -m bash 如果通过unshare命令后,挂载目录后,在其它的mount namespace中仍然可以通过 mount 命令查到,则下载最新的unshare可执行文件 挂载目录 当通过docker run -v挂载目录时,将某个容器外的目录挂载至容器内 mount --bind /data1 data 发现在该mount namespace中,mount命令执行结果如下 [root@k8s-master mount]
linux linux系统之磁盘存储 问题 ls的size表示什么,与du查看大小的区别是什么? 为什么目录占空间大小为4096? 分区是按盘面还是柱面? 软连接和硬连接有什么区别? 文件名存储在inode还是文件对应的block中? 磁盘结构 盘片、盘面、磁头 硬盘中一般会有多个盘片组成,每个盘片包含两个面,每个盘面都对应地有一个读/写磁头。受到硬盘整体体积和生产成本的限制,盘片数量都受到限制,一般都在5片以内。盘片的编号自下向上从0开始,如最下边的盘片有0面和1面,再上一个盘片就编号为2面和3面。 磁道、扇区 磁道 上图显示的是一个盘面,盘面中一圈圈灰色同心圆为一条条磁道 扇区 从圆心向外画直线,可以将磁道划分为若干个弧段,每个磁道上一个弧段被称之为一个扇区(图践绿色部分) 扇区是磁盘的最小组成单元,通常是512字节。