自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

转载 趣谈linux操作系统--Linux文件管理笔记

- 文件系统的功能- 以块为单位的存储组织形式- 要有索引, 方便查找- 热点文件应该有缓存- 可以以文件夹形式组织, 方便管理- 在内存中维护数据结构, 保存哪些文件被哪些进程打开/使用文件系统相关命令行格式化, 组织成一定格式的文件系统; Windows→NTFS, Linux→ext3/ext4fdisk -l 查看分区mkfs.ext3/mkfs.ext4 /dev/… 进行格式化可建立多个分区, 再分别以不同文件系统进行格式化fdisk /dev/… 打开交互式程

2021-03-23 14:34:26 360

转载 趣谈linux操作系统--Linux内存管理笔记

内存管理包含: 物理内存管理; 虚拟内存管理; 两者的映射除了内存管理模块, 其他都使用虚拟地址(包括内核)虚拟内存空间包含: 内核空间(高地址); 用户空间(低地址)用户空间从低到高布局为: 代码段; DATA 段; BSS 段(未初始化静态变量); 堆段; 内存映射段; 栈地址空间段多个进程看到的用户空间是独立的内核空间: 多个进程看到同一内核空间, 但内核栈每个进程不一样内核代码也仅能访问内核空间内核也有内核代码段, DATA 段, 和 BSS 段; 位于..

2021-03-22 14:25:30 469

原创 趣谈linux操作系统--Linux进程管理笔记

TASK_KILLABLE,可以终止的新睡眠状态从定义可以看出,TASK_WAKEKILL 用于在接收到致命信号时唤醒进程,而 TASK_KILLABLE 相当于这两位都设置了。#define TASK_KILLABLE (TASK_WAKEKILL | TASK_UNINTERRUPTIBLE) **task_struct** //是否在运行队列上int on_rq;//优先级int prio;int static_prio;int normal_prio;unsigned ...

2021-03-20 21:55:00 576

转载 linux系统调用

什么是系统调用?系统调用是操作系统提供给程序设计人员使用系统服务的接口系统调用流程Linux 提供了 glibc 库, 它封装了系统调用接口, 对上层更友好的提供服务, 系统调用最终都会通过 DO_CALL 发起, 这是一个宏定义, 其 32 位和 64 位的定义是不同的32 位系统调用用户态将请求参数保存到寄存器将系统调用名称转为系统调用号保存到寄存器 eax 中通过软中断 ENTER_KERNEL 进入内核态内核态将用户态的寄存器保存到 pt_regs 中在系统调用函

2021-03-18 17:06:42 167

转载 Redis单线程处理IO请求性能瓶颈

Redis单线程处理IO请求性能瓶颈主要包括2个方面:1、任意一个请求在server中一旦发生耗时,都会影响整个server的性能,也就是说后面的请求都要等前面这个耗时请求处理完成,自己才能被处理到。耗时的操作包括以下几种:a、操作bigkey:写入一个bigkey在分配内存时需要消耗更多的时间,同样,删除bigkey释放内存同样会产生耗时;b、使用复杂度过高的命令:例如SORT/SUNION/ZUNIONSTORE,或者O(N)命令,但是N很大,例如lrange key 0 -1一次查询全量数据;

2021-02-06 01:22:28 760

转载 mysql主从关键特性

binlog 的三种格式:一种是 statement,一种是 row。可能你在其他资料上还会看到有第三种格式,叫作 mixed,其实它就是前两种格式的混合。进入mysql的bin目录,用mysqlbinlog工具查看binlog。例如mysqlbinlog ../data/mysql-bin.000011 --base64-output=decode-rows -v | more 其中的: --base64-output=decode-rows –v 选项解析中,base64-output,可以..

2021-02-05 00:30:20 192

转载 MySQL 是“怎么保证 redo log 和 binlog 是完整的”

1.事务执行过程中先把日志写到binlog cache ,事务提交的时候再把binlog cache 写入到binlog文件中2.binlog cache ,系统为每个线程分配了一片binlog cache内存。,参数binlog_cache_size控制单个线程内binlog cache大小。如果超过这个大小就要暂存到磁盘3.事务提交的时候,执行器把binlog cache 里完整的事务写入binlog中。并清空binlog cache。 4.每个线程都有自己的binlog cache,共用一份bin

2021-02-04 23:39:57 310

转载 mysql引起查询变慢的原因

2021-02-04 22:54:54 235

转载 mysql 45讲中对加锁规则的总结

2021-02-04 22:30:13 372

转载 mysql特性之WAL两阶段提交(redolog+binlog)

问题一:在两阶段提交的不同时刻,MySQL 异常重启会出现什么现象?1.如果在图中时刻 A 的地方,也就是写入 redo log 处于 prepare 阶段之后、写 binlog 之前,发生了崩溃(crash),由于此时 binlog 还没写,redo log 也还没提交,所以崩溃恢复的时候,这个事务会回滚。这时候,binlog 还没写,所以也不会传到备库。2.在时刻 B,也就是 binlog 写完,redo log 还没 commit 前发生 crash,那崩溃恢复的时候 MySQL 会怎么处理?.

2021-02-02 00:48:23 942

原创 mysql之count(*)为啥这么慢

结论:MyISAM 表虽然 count() 很快,但是不支持事务;show table status 命令虽然返回很快,但是不准确;InnoDB 表直接 count() 会遍历全表,虽然结果准确,但会导致性能问题。如果你现在有一个页面经常要显示交易系统的操作记录总数,到底应该怎么办呢?答案是,我们只能自己计数。count(*)优化策略InnoDB 是索引组织表,主键索引树的叶子节点是数据,而普通索引树的叶子节点是主键值。所以,普通索引树比主键索引树小很多。对于 count(*) 这样的操作,遍历哪

2021-02-02 00:20:39 198

原创 mysql crud造成数据空洞的原因

mysql数据空洞删除时,如果重新添加新的数据还在(删除所包含的区间),且不会产生页分裂的情况下,该空洞可以被复用如果数据页写满的时候,会产生页分裂,会产生新的数据空洞 页合并是页分裂的逆过程,当两个相邻页面利用率较低时,会发生页合并。如果数据是按照索引递增顺序插入的,那么索引是紧凑的。但如果数据是随机插入的,就可能造成索引的数据页分裂。另外,更新索引上的值,可以理解为删除一个旧的值,再插入一个新值。不难理解,这也是会造成空洞的。解决方案alter table A engine=InnoDB

2021-02-01 23:52:10 397

原创 mysql刷脏页的过程

刷脏页的场景:1.redo log写满(redo log本质是一个定长的循环队列) 2.内存写满(淘汰页面) 3.定时写回 4.关闭mysql时写回 3.4影响较小。InnoDB 的刷盘速度两个因素:一个是脏页比例,一个是 redo log 写盘速度。参数 innodb_max_dirty_pages_pct 是脏页比例上限,默认值是 75%;按照 innodb_io_capacity 定义的能力乘以 R% 来控制刷脏页的速度;一个场景例子buffer pool里维护着一个脏页列表,假设现

2021-02-01 22:09:34 732

转载 mvcc方便理解版本

一个数据版本,对于一个事务视图来说,除了自己的更新总是可见以外,有三种情况:版本未提交,不可见;版本已提交,但是是在视图创建后提交的,不可见;版本已提交,而且是在视图创建前提交的,可见。现在,我们用这个规则来判断图 4 中的查询结果,事务 A 的查询语句的视图数组是在事务 A 启动的时候生成的,这时候:(1,3) 还没提交,属于情况 1,不可见;(1,2) 虽然提交了,但是是在视图数组创建之后提交的,属于情况 2,不可见;(1,1) 是在视图数组创建之前提交的,可见。...

2021-01-31 22:17:02 170

转载 mysql锁

FTWRL 前有读写的话 ,FTWRL 都会等待 读写执行完毕后才执行FTWRL 执行的时候要刷脏页的数据到磁盘,因为要保持数据的一致性 ,理解的执行FTWRL时候是 所有事务 都提交完毕的时候mysqldump + -single-transaction 也是保证事务的一致性,但他只针对 有支持事务 引擎,比如 innodb所以 还是强烈建议大家在创建实例,表时候需要innodb 引擎 为好全库只读 readonly = true 还有个情况在 slave 上 如果用户有超级权限的话 readon

2021-01-31 17:01:46 125

原创 mysql 索引

1、覆盖索引:如果查询条件使用的是普通索引(或是联合索引的最左原则字段),查询结果是联合索引的字段或是主键,不用回表操作,直接返回结果,减少IO磁盘读写读取正行数据2、最左前缀:联合索引的最左 N 个字段,也可以是字符串索引的最左 M 个字符3、联合索引:根据创建联合索引的顺序,以最左原则进行where检索,比如(age,name)以age=1 或 age= 1 and name=‘张三’可以使用索引,单以name=‘张三’ 不会使用索引,考虑到存储空间的问题,还请根据业务需求,将查找频繁的数据进行靠左

2021-01-31 16:16:30 157

转载 mysql事物相关

1.事务的概念是什么?事务是对数据库中数据操作的保证数据逻辑一致的最小操作单位。2.mysql的事务隔离级别读未提交, 读已提交, 可重复读, 串行各是什么意思?读未提交:一个事务读取到了其他事务未提交的操作。读已提交:一个事务读取到了其他事务已经提交的操作。可重复读:一个事务从它开始到结束整个生命周期中,所能读取到的数据内容和它启动的时候所能读到的数据内容是相同的。不会出现在事务运行的整个过程中,不同的时间点读取到的数据不一样的情况。串行化:所有的事务都进行排队执行,事务之间不存才并发的情况。

2021-01-31 15:10:23 320 1

转载 位运算奇技淫巧

作者:力扣(LeetCode)链接:https://www.zhihu.com/question/38206659/answer/736472332来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。位操作符& 与运算 两个位都是 1 时,结果才为 1,否则为 0,如 1 0 0 1 1 & 1 1 0 0 1 ------------------------------ 1 0 0 0 1 | 或运算 两个位都是 0 时,结果才为 0,否则为 1,

2020-12-07 13:08:00 326 1

原创 函数调用过程

(1)把参数和返回地址准备好,(2)然后大家都遵循约定, 每次新函数都要建立新的函数帧:"把寄存器ebp的值压到栈里去““把esp的值赋给ebp”(3) 函数调用完了, 重置 ebp 和esp ,让他们重新指向调用着的栈帧。函数调用的秘密...

2020-12-02 19:30:40 175

原创 linux性能分析 linux_perf_tools_full

2020-12-01 21:14:44 190

转载 linux系统调用全过程

什么是系统调用?系统调用是操作系统提供给程序设计人员使用系统服务的接口系统调用流程Linux 提供了 glibc 库, 它封装了系统调用接口, 对上层更友好的提供服务, 系统调用最终都会通过 DO_CALL 发起, 这是一个宏定义, 其 32 位和 64 位的定义是不同的32 位系统调用用户态将请求参数保存到寄存器将系统调用名称转为系统调用号保存到寄存器 eax 中通过软中断 ENTER_KERNEL 进入内核态内核态将用户态的寄存器保存到 pt_regs 中在系统调用.

2020-11-23 10:21:18 506

转载 从bios到bootloader

实模式只有 1MB 内存寻址空间(X86)加电, 重置 CS 为 0xFFFF , IP 为 0x0000, 对应 BIOS 程序0xF0000-0xFFFFF 映射到 BIOS 程序(存储在ROM中), BIOS 做以下三件事:检查硬件提供基本输入(中断)输出(显存映射)服务加载 MBR 到内存(0x7c00)MRB: 启动盘第一个扇区(512B, 由 Grub2 写入 boot.img 镜像)boot.img 加载 Grub2 的 core.img 镜像core.img 包括 d.

2020-11-23 10:03:27 156

转载 linux内核启动流程

内核初始化, 运行 start_kernel() 函数(位于 init/main.c), 初始化做三件事创建样板进程, 及各个模块初始化创建管理/创建用户态进程的进程创建管理/创建内核态进程的进程创建样板进程,及各个模块初始化创建第一个进程, 0号进程. set_task_stack_end_magic(&init_task) and struct task_struct init_task = INIT_TASK(init_task)初始化中断, trap_init().

2020-11-23 09:53:40 143

转载 java内存模型-volatile写操作前为什么不加LoadStore屏障

只要说到并发编程,volatile是永远绕不开的一个点。理解了volatile,基本上也就理解了JMM。Java内存模型中的happens-before、as-if-serial等在前文介绍过,这里只介绍volatile的内存语义实现。在JSR-133之后,volatile可以实现线程之间的通信,加强了volatile的内存语义,即禁止volatile变量与普通变量的重排序,使得volatile的写-读与锁的释放-获取有相同的语义。对于volatile内存语义的描述,几乎都出自于http://gee.c

2020-11-13 20:26:25 963 1

原创 Java并发之深入理解JMM(java内存模型)

http://ifeve.com/java-memory-model-0/

2020-11-08 19:21:02 92

转载 java并发之Java线程的状态及主要转化方法

Java线程的状态及主要转化方法1 操作系统中的线程状态转换首先我们来看看操作系统中的线程状态转换。在现在的操作系统中,线程是被视为轻量级进程的,所以操作系统线程的状态其实和操作系统进程的状态是一致的。操作系统线程主要有以下三个状态:就绪状态(ready):线程正在等待使用CPU,经调度程序调用之后可进入running状态。执行状态(running):线程正在使用CPU。等待状态(waiting): 线程经过等待事件的调用或者正在等待其他资源(如I/O)。2 Java线程的6个状态

2020-11-08 18:13:14 233

原创 java并发之线程使用和状态转换

一、使用线程有三种使用线程的方法:实现 Runnable 接口;实现 Callable 接口;继承 Thread 类。实现 Runnable 和 Callable 接口的类只能当做一个可以在线程中运行的任务,不是真正意义上的线程,因此最后还需要通过 Thread 来调用。可以理解为任务是通过线程驱动从而执行的。实现 Runnable 接口我们来看一下Runnable接口(JDK 1.8 +):@FunctionalInterfacepublic interface Runnable {

2020-11-08 18:07:27 149

原创 java异常处理机制

Throwable 可以用来表示任何可以作为异常抛出的类,分为两种: Error 和 Exception。其中 Error 用来表示 JVM 无法处理的错误,Exception 分为两种:受检异常 :需要用 try…catch… 语句捕获并进行处理,并且可以从异常中恢复;非受检异常 :是程序运行时错误,例如除 0 会引发 Arithmetic Exception,此时程序崩溃并且无法恢复。 深入理解java异常处理机制Java Exception Interview Questi

2020-11-06 16:05:47 120

转载 java基础之String深度解析

StringTableString的基本特性String:字符串,使用一对 ”” 引起来表示String s1 = “mogublog” ; // 字面量的定义方式String s2 = new String(“moxi”);string声明为final的,不可被继承String实现了Serializable接口:表示字符串是支持序列化的。实现了Comparable接口:表示string可以比较大小string在jdk8及以前内部定义了final char[] value用于存储

2020-11-06 11:24:56 178

原创 CAS实现单点登录官方流程图

2020-11-05 15:53:06 631 3

转载 什么是URL encoding

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2020-11-05 15:50:33 144

原创 java校招面经解析day-01

前言本系列内容题目来自牛客网 java工程师精选面经合集,今天内容来自以下面经深信服,Java一面凉经深信服java一面——28min多益互联网产品研发java一面凉经面经一question作者:Rorke链接:https://www.nowcoder.com/discuss/538841来源:牛客网自我介绍介绍项目spring iocspringboot 注解垃圾回收类加载多线程数据库索引B+树TCP与UDP三次握手的过程Java反射项目用什么ormli

2020-10-14 21:56:02 230 1

原创 Netty4.1源码分析之服务启动

一、服务启动官方example// Echoes back any received data from a client. */public final class EchoServer { static final boolean SSL = System.getProperty("ssl") != null; static final int PORT = Integer.parseInt(System.getProperty("port", "8007")); pu

2020-10-11 19:53:10 185

转载 netty事件传播机制

netty是基于事件驱动的,因此事件在netty中十分重要。当数据进入和出去时会发生事件,而我们会定义多个handler来处理这些事件,那么这些事件发生的顺序是怎样的呢,netty又是怎么实现的。在了解这些之前,需要了解几个类,ChannelHandler系列:包括ChannelOutboundHandler,ChannelInboundHandler等,还需要了解ChannelPipeline,ChannelHandlerContext系列。核心类ChannelHandlerChannelHand

2020-10-09 09:05:26 360

原创 SQL语句是如何执行的(mysql)

一 、mysql架构图二 、sql执行顺序select 语句sql执行顺序(1)from(3) join(2) on(4) where(5)group by(开始使用select中的别名,后面的语句中都可以使用)(6) avg,sum…(7)having(8) select(9) distinct(10) order by(11) limit...

2020-10-05 15:35:04 211

原创 MIT 6.824 Lab1 MapReduce实现 2020 Spring

一、环境准备1.Linux系统2.Go环境的安装二、准备实验的代码通过课程地址获取 https://pdos.csail.mit.edu/6.824/labs/lab-mr.html$ git clone git://g.csail.mit.edu/6.824-golabs-2020 6.824$ cd 6.824$ lsMakefile src三、学习go语言1.基本语法2.学习途径主要通过learn-go-with-tests项目边写代码边学习3.学习笔记Linu

2020-09-30 18:30:37 592

转载 MapReduce: Simplified Data Processing on Large Clusters(面向大型集群的简化数据处理) 阅读笔记

一 、参考资料1.论文原文2.论文翻译二、MapReduce问题来源在 2004 年以前,Google 团队为处理各种原始数据实现了上百个专用计算程序,比如对原始网页文档生成倒排索引,数据量少时单机处理就行,但数据量过大后单机处理就太耗时了,只能将数据分布在多个主机上并行处理,最后聚合各节点生成的索引数据。分布式计算降低了耗时,但也必须解决一些问题:如何分发数据?多节点如何保证负载均衡?如何处理节点失效?… 多节点调度工作并不简单。类似的大数据处理场景在谷歌内部还有很多。于是 Jeff 团队就将

2020-09-30 16:10:02 369

原创 6.深入解析 ConcurrentHashMap 实现内幕

https://juejin.im/post/5dee05ac6fb9a0163f77beb6?utm_source=gold_browser_extension

2019-12-09 22:53:41 107

原创 5.单例设计模式

单例:某个类只有唯一一个实例1.饿汉式枚举类(里面只有一个)enum SingleEum{ INSTANCE; public static void test(){ }}参见JAVA设计模式之单例模式

2019-12-07 16:09:59 116

原创 4.多线程之生产者消费者

/** * @author summer * @date 2019/12/7 - 11:12 */public class TestProducerAndConsumer {//简单的生产者消费者问题 public static void main(String[] args) { Table t=new Table(); Producer prod...

2019-12-07 15:48:08 102

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除