- 博客(29)
- 收藏
- 关注
原创 Mysql当中的各种log
一、MySQL日志文件类型其中,比较重要的包括 redo log 、 undo log 和。redo log 是重做日志,提供前滚操作;undo log 是回滚日志,提供回滚操作。
2024-10-31 03:29:04
1262
原创 MySQL-MVCC多版本并发控制
多版本并发控制,通过管理记录的多个版本,实现了数据库事务并发时的一致性读,即当前事务读取正在被其他事务更新的行时,能读到该记录被更新之前的版本。解决了读写冲突。多版本并发控制。顾名思义,MVCC 是通过数据行的多个版本管理来实现数据库的 并发控制。这项技术使得在InnoDB的事务隔离级别下执行一致性读操作有了保证。换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到它们被更新之前的值,这样在做查询的时候就不用等待另一个事务释放锁。MVCC没有正式的标准。
2024-10-31 03:21:45
202
原创 Java线上服务OOM及假死排查手册
SpringBoot线上服务假死,CPU内存正常,什么情况?背景开发小伙伴都知道线上服务挂掉,基本都是因为cpu或者内存不足,出现GC频繁OOM之类的情况。本篇文章区别以上的情况给小伙伴们带来不一样的服务挂掉。问题排查老规矩在集群环境中同一个服务几个节点无响应。如不及时解决会可能形成雪崩效应。优先查看服务日志是否有报错,礼貌习惯性查看服务cpu及内存情况。先复习下,若服务无报错。cpu或内存出现异常,按如下步骤排查。常规排查1、查看服务进程中线程情况或2、查看系统异常线程16进制。
2024-10-29 02:23:07
2022
原创 Kubernetes部署练习
kubernetes,是一个全新的基于容器技术的分布式架构领先方案,是谷歌严格保密十几年的秘密武器----Borg系统的一个开源版本,于2014年9月发布第一个版本,2015年7月发布第一个正式版本。kubernetes的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。目的是实现资源管理的自动化,主要提供了如下的主要功能:自我修复:一旦某一个容器崩溃,能够在1秒中左右迅速启动新的容器弹性伸缩:可以根据需要,自动对集群中正在运行的容器数量进行调整。
2024-10-19 00:55:35
747
原创 代码演示同类中调用@Transcation注解失效原因
Spring在扫描bean的时候,如果扫描到方法上有这些注解,那么spring会通过动态代理模式,为这个bean动态地生成一个代理类,在代理类中,会对有注解的这个方法,做一些增强处理,如给有@Transactional注解的方法开启transaction。当我们想要调用这个方法时,实际上是先调用了代理对象中被增强的方法,然后在代理对象中,又会调用我们实际的目标对象中的方法。在通过代理对象中转的这一过程中,像上边说的开启和提交transaction就实现了。
2024-07-31 22:48:58
481
原创 golang快速入门
附8小时快速入门语法文档版:https://www.yuque.com/aceld/mo95lb。链接如下:https://gin-gonic.com/zh-cn/docs/golang快速入门可以按照如下步骤进行。看完文档后可看gin框架,推荐看官方文档。后续可以看下context,推荐视频学习。可以按照如上过程学习基础算法结构,推荐任意视频学习网站均可。
2024-07-28 23:30:36
570
原创 java 逃逸分析
逃逸分析,是一种可以有效减少Java 程序中同步负载和内存堆分配压力的跨函数全局数据流分析算法。通过逃逸分析,Java Hotspot编译器能够分析出一个新的对象的引用的使用范围从而决定是否要将这个对象分配到堆上。jdk6才开始引入该技术,jdk7开始默认开启逃逸分析。‐XX:+DoEscapeAnalysis //表示开启逃逸分析 (jdk1.8默认开启)这个对象甚至可能被其它线程访问到,例如赋值给类变量或可以在其它线程中访问的实例变量。‐XX:‐DoEscapeAnalysis //表示关闭逃逸分析。
2024-05-29 11:39:08
294
原创 docker常用命令
systemctl start dockersystemctl stop dockersystemctl restart dockersystemctl status dockersystemctl enable dockerdocker infodocker --helpdocker 命令 --helpexample:docker run --help列出本地主机上有的镜像字段解析:REPOSITORY:表示镜像的仓库源TAG:镜像的标签版本号IMAGE ID:镜像IDCREATED:镜像创建时
2024-05-21 10:52:17
667
原创 java当中的16种锁
偏是指偏心,它的意思是这个锁会偏向于第一个获得它的线程,如果在接下来的执行过程中,该锁一直没有被其他的线程获取,则持有偏向锁的线程将永远不需要再进行同步。为了提高性能, Java提供了读写锁,在读的地方使用读锁,在写的地方使用写锁,灵活控制,如果没有写锁的情况下,读是无阻塞的,在一定程度上提高了程序的执行效率。在并发环境中,每个线程会先查看此锁维护的等待队列,如果当前等待队列为空,则占有锁,如果等待队列不为空,则加入到等待队列的末尾,按照FIFO的原则从队列中拿到线程,然后占有锁。
2024-05-20 11:58:55
512
原创 java JMM模型
主要存储当前方法的所有本地变量(工作内存中存储着主内存中的变量副本拷贝),每个线程只能访问自己的工作内存,即线程中的本地变量对其他线程是不可见的,就算是两个线程执行的是同一段代码,它们也会各自在自己的工作内存中创建属于当前线程的本地变量,当然也包括了字节码行号指示器、相关Native方法的信息。2 :因为工作内存所更新的变量并不会立即同步到主内存,所以虽然线程A在工作内存当中已经把变量s的值更新成3,但是线程B从主内存得到的变量s的值仍然是0,从而输出 s=0。保持多个线程对共享数据操作内存的可见性。
2024-05-20 10:45:43
594
原创 clickhouse 快速入门
表中的数据可以按照指定的字段分区存储,每个分区在文件系统中都是都以目录的形式存在。常用时间字段作为分区字段,数据量大的表可以按照小时分区,数据量小的表可以在按照天分区或者月分区,查询时,使用分区字段作为Where条件,可以有效的过滤掉大量非结果集数据。在集群配置中,Shard标签里面配置的replica互为副本,将internal_replication设置成true,此时写入同一个Shard内的任意一个节点的本地表,ZooKeeper会自动异步的将数据同步到互为副本的另一个节点。1.2 查看表相关信息。
2024-04-27 02:12:08
493
原创 java性能优化及问题排查方法
cpu使用率 :CPU使用率是指CPU在特定时间段内的工作负载情况,通常以百分比表示。CPU使用率 = (1 - 空闲时间 / 总时间) * 100%cpu负载:CPU负载是指在一段时间内,CPU正在处理以及等待处理的进程数的总和交换区:磁盘上的一部分,用于当系统物理内存(RAM)被用尽时暂时存储被交换出来的数据页。磁盘IO:磁盘的输入输出操作,包括向磁盘写入数据和从磁盘读取数据。物理内存:它是计算机硬件提供的真实内存大小。
2024-04-11 13:46:05
1274
2
原创 shell快速翻阅
shell英文翻译过来是外壳的意思,作为计算机语言来理解可以认为它是操作系统的外壳。我们可以通过shell命令来操作和控制操作系统,比如Linux中的shell命令就包括lscdpwd等等。shell是站在内核的基础上编写的一个应用程序,它连接了用户和Linux内核,从而让用户能够更加便捷、高效、安全的使用linux内核,这其实就是shell的本质。使用专业术语的说法来解释,Shell其实是一个命令解释器,它通过接受用户输入的Shell命令来启动、暂停、停止程序的运行或对计算机进行控制。
2023-12-16 21:39:24
121
1
转载 mysql执行成本
mysql的innodb存储引擎会把数据存储到磁盘上,这时候无论怎么优化SQL,都是需要从磁盘中读取数据到内存,就是IO成本,每次读取磁盘,至少耗时0.01秒,至少读一页,innodb一个页的数据存储大小是16KB,这个磁盘的IO时间成本是1.0,这里的1.0没有单位,就是个比较值。从磁盘读到数据后要放到内存中处理数据的过程,这是CPU成本。读取后并且检测可能的where条件,这个CPU的IO时间成本为0.2,这里的1.0和0.2被称之为成本常数。
2023-09-25 00:45:22
303
1
转载 转载:mysql索引
官方介绍索引是帮助MySQL高效获取数据的数据结构。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往是存储在磁盘上的文件中的(可能存储在单独的索引文件中,也可能和数据一起存储在数据文件中)。我们通常所说的索引,包括聚集索引、覆盖索引、组合索引、前缀索引、唯一索引等,没有特别说明,默认都是使用B+树结构组织(多路搜索树,并不一定是二叉的)的索引。看到这里,你是不是对于自己的sql语句里面的索引的有了更多优化想法呢。
2023-08-18 16:00:18
118
1
原创 线程占用CPU高问题排查
对于cpu爆满问题,常常会分析是否存在问题线程,本文记录一种通过top快速找到问题线程nid的方式。通过top找到问题进程,例如下面有个进程CPU占用率高达99%,他的PID=270973。其中-p 270973表示查找指定进程270973的信息,-H表示线程模式。其中0x%x的0x是固定字符串,%x是printf的十六进制的转换类型。通过top -p 270973 -H查找问题线程。经对比,发现问题线程的PID=2447223。将线程PID转换为nid。
2023-08-17 15:41:05
322
1
原创 Memory Analyzer内存泄漏OOM基础概念
Shallow Heap 代表一个对象结构自身所占用的内存大小,不包括其属性引用对象所占的内存。一个对象的 Retained Set,指的是该对象被 GC 回收后,所有能被回收的对象集合(如下图所示,G的 Retain Set 只有 G 并不包含 H,原因是虽然 H 也被 G 引用,但由于 H 也被 F 引用 ,G 被垃圾回收时无法释放 H);注 1:Dump 文件包含快照被转储时刻的 Java 对象 在堆内存中的分布情况,但快照只是瞬间的记录,所以不包含对象在何时、在哪个方法中被分配这类信息。
2023-08-10 02:33:50
5363
1
原创 kafka常用命令大全
kafka常用命令,自己记录自己用的,如果安装有kafka manager 或者kafka eagle可以不用熟悉一下命令:–提示 --zookeeper的命令可能需要在后面加入/kafka 因为一般企业都会建节点的时候建个父目录kafka常用命令相关概念Brokerkafka节点,多个broker组成kafka集群。Topic即主题,kafka通过Topic对消息进行分类,发布到kafka的消息都需要指定Topic。Producer即消息生产者,向Broker发送消息的客户端。
2023-03-03 14:31:21
2429
原创 关于Iframe的内存的泄漏问题
工作日志 在这里插入代码片上个星期终于把手头的工作忙完了,内网通过三次nginx反向代理终于可以把所有资源全部访问到了,包括阿里云服务器当中的资源。 不到上线,你永远不知道有多少坑,以为一切都正常了的时候,我开始了性能测试,前端测试的时候,发现iframe概率加载失败,作为一个认为一定是什么原因导致的,打开内存查看工具,占用内存168MB,电脑是8GB的,分配给IE浏览器的内存有2GB,足够用了。
2020-12-17 22:58:12
2917
2
原创 记录nginx反向代理流程
今天接到的需求是,由于是内网环境,我们的服务器没法直接访问互联网,那么,就需要用到nginx了,通过nginx反向代理,可以解决无法访问服务器的问题一 nginx服务器的安装1 安装 pcre wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz2 解压文件,./configure 完成后,回到 pcre 目录下执行 make 继续执行执行 make install3 执行命令 安装gc++环境,
2020-12-14 13:48:52
249
原创 浏览器实现滚动截屏
工作日志:实现浏览器滚动截屏,并且是指定的iframe在跨域的情况下。首先拿到这个需求的时候,想了一下,实现滚动截屏并不难,难的具体的情况如下,在IE浏览器的情况下,在前端实现,并且iframe是跨域的,还要自动上传服务器,万事开头难,尝试了HTML2canvas之后发现,它并不能解决跨域问题,而且不同浏览器其图片会有差异,并且最重要的一点,svg图在IE浏览器中截图是空白。当然,遇到需求,一定要解决,研究了IE设计接口,终于实现了,整体的思路是,拿到浏览器的接口对象,使用递归遍历,找到指定的ifra
2020-12-03 11:08:11
5752
8
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人