Archive 2017

MySQL中的锁机制

发布于:2018-05-02

MySQL中锁类型分类概述 按锁的粒度可划分为:表锁、行锁、页锁 按锁的机制可划分为:乐观锁、悲观锁 按锁的兼容性可划分为:共享锁、排他锁 按锁的算法模式可划分为:记录锁、间隙锁、临键锁、意向锁、插入意向锁 锁粒度 表锁 表锁的锁定颗粒度在MySQL中是最粗的,InnoDB、MyISAM引擎中都有应用,对当前整张表加锁。 表锁不适合高并发的场景,但开销小,加锁快,不会出现死锁,发生锁冲突的概率最大。 手动加锁方式: LOCK TABLES xx READ/WRITE; 行锁 行锁的锁定颗粒度在MySQL中是最细的,应用于InnoDB存储引擎,只针对操作的当前行进行加锁。并发情况下,产生锁等待的 …...

进入阅读

GC垃圾回收原理解析

发布于:2017-12-16

GC GC(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象占据的内存空间的一种机制。 GC机制是区别C++的一个重要特征,C++需要开发者自己实现垃圾回收的逻辑,而JAVA开发者则只需要专注于业务开发,因为垃圾回收这件繁琐的事情JVM已经为我们代劳了。 GC分代和收集算法 现代的垃圾收集器基本都是采用分代收集算法,其主要思想: 将Java的堆内存逻辑上分成块:新生代、老年代,处理堆内存外还有一个特殊的区域叫永久代,针对不同存活周期、不同大小的对象采取不同的垃圾回收策略。 新生代(Young Generation) …...

进入阅读

Go的异常处理-panic,defer,recover

发布于:2017-12-14

Go的异常处理 Go语言追求简洁优雅,所以,Go语言不支持传统的 try…catch…finally 这种异常,因为Go语言的设计者们认为,将异常与控制结构混在一起会很容易使得代码变得混乱。 在Go语言中,使用多值返回来返回错误。不要用异常代替错误,更不要用来控制流程。在极个别的情况下,也就是说,遇到真正的异常的情况下(比如除数为0了)。才使用Go中引入的Exception处理:defer, panic, recover。 Go的异常处理可以这么简单描述:Go中可以抛出一个panic的异常,然后在defer中通过recover捕获这个异常,然后正常处理 panic Golang里比较常见的错误 …...

进入阅读

JIT即时编译原理解析

发布于:2017-10-15

JIT JIT是(just in time)的缩写, 也就是即时编译编译器。使用即时编译器技术,能够加速Java程序的执行速度。 Java编译器通常通过javac将程序源代码编译,转换成java字节码,JVM通过解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释翻译。很显然,经过解释执行,其执行速度必然会比可执行的二进制字节码程序慢很多。为了提高执行速度,引入了JIT技术。 JIT编译狭义来说是当某段代码即将第一次被执行时进行编译,因而叫“即时编译”。JIT技术,将字节码编译成平台相关的原生机器码,并进行各个层次的优化,这些机器码会被缓存起来,以备下次使用。 如果JIT对每条字节码都进行编 …...

进入阅读

JVM原理解析

发布于:2017-07-11

JVM JVM是Java虚拟机(Java virtual machine)的简称,是运行Java程序必不可少的机制。编译后的Java程序指令并不直接在硬件系统的CPU上执行,而是由JVM执行。 JVM实现了Java语言最重要的特征:即平台无关性。JVM屏蔽了与具体平台相关的信息,使Java语言编译程序只需要生成在JVM上运行的目标字节码(.class),就可以在多种平台上不加修改地运行。 JVM是编译后的Java程序(.class文件)和硬件系统之间的接口。javac是收录于JDK中的Java语言编译器,该工具可以将后缀名为.java的源文件编译为后缀名为.class的可以运行于Java虚拟机 …...

进入阅读

Go语言并发编程

发布于:2017-03-12

并发编程 Go语言是在多核和网络化的时代背景下诞生的原生支持并发的编程语言。毫不夸张的说Go语言的这一特性是吸引很多编程玩家痴迷于Go语言开发的重要原因。 在早期,CPU都是以单核的形式顺序执行机器指令,Go语言的祖先C语言正是这种顺序编程语言的代表。所有的指令都是以串行的方式执行,在相同的时刻有且仅有一个CPU在顺序执行程序的指令。 随着处理器技术的发展,单核时代以提升处理器频率来提高运行效率的方式遇到了瓶颈,目前各种主流的CPU频率基本被锁定在了3GHZ附近。单核CPU的发展的停滞,给多核CPU的发展带来了机遇。相应地,编程语言也开始逐步向并行化的方向发展。 常见的并发编程主要是基于多线程 …...

进入阅读

数据库并发控制——事务隔离

发布于:2017-03-02

事务隔离与并发控制 事务隔离定义了数据库系统中一个事务中操作的结果在何时以何种方式对其他并发事务操作可见。 并发控制描述了数据库事务隔离以保证数据正确性的机制。为了保证并行事务执行的准确执行,数据库和存储引擎在设计的时候着重强调了并发控制这一点。典型的事务相关机制限制数据的访问顺序以满足可序列化和可恢复性,限制数据访问意味着降低了执行的性能,并发控制机制就是要保证在满足这些限制的前提下提供尽可能高的性能。 两阶段锁是关系数据库中最常见的提供了可序列化和可恢复性的并发控制机制。为了访问一个数据库对象,事务首先要获得这个对象的锁。对于不同的访问类型(如对对象的读写操作)和锁的类型,如果另外一个事务 …...

进入阅读

Go语言中的数据类型

发布于:2017-01-21

Go语言类型分类分类 Go语言将数据类型分为四类: 基础类型:数值、字符串、布尔型 复合类型:数组、结构体 引用类型:指针、切片、字典、函数、通道 接口类型:接口、错误 数值类型 Go语言的数值类型包括几种不同大小的整数、浮点数和复数,每种数值类型都决定了对应的大小范围和是否支持正负符号。 有符号整数类型包括:int8、int16、int32和int64 无符号整数类型包括:uint8、uint16、uint32和uint64 浮点数类型包括:float32、float64 复数类型包括:complex64、complex128 还有两种一般对应特定CPU平台机器字大小的有符号和无符号整 …...

进入阅读

分类

开发
    --go (9)
    --java (5)
    --php (11)
    --mysql (9)
    --javascript (3)
    --html (1)
    --算法 (6)
架构
    --理论 (9)
    --网络 (3)
    --服务器 (2)
    --消息队列 (3)
    --容器 (5)
    --监控 (1)
    --搜索引擎 (3)
    --大数据 (0)
    --测试 (1)
系统
    --linux (10)
    --mac (2)
    --windows (1)
足球
    --世界杯 (60)
    --欧洲杯 (28)
    --文迷 (3)
大学时光
    --校园生活 (96)
    --假期生活 (17)
    --广院杯那些事 (14)
    --北京奥运 (6)
    --胡思乱写 (17)


最近发布

零拷贝技术介绍

服务网格技术简介

C语言标准和标准库简介

Kubernetes简介及环境搭建

Go语言开发的顶级项目


归档

2006 (109)
2007 (40)
2008 (47)
2009 (10)
2010 (6)
2012 (10)
2013 (14)
2014 (27)
2015 (15)
2016 (6)
2017 (8)
2018 (11)
2019 (17)
2020 (5)