摘要:
gRpc简介 gRPC 是Google公司开发的一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。 gRpc官网地址:https://www.grpc.io gRpc中文文档地址:http://doc.oschina.net/grpc gRPC是一款RPC框架,那么先了解Rpc 阅读全文
摘要:
垃圾回收机制简介 垃圾回收的全称是 Garbage Collection 通常被简称为GC。是对内存中堆区域进行清理的一种技术。 为什么需要垃圾回收机制 1、内存溢出。 2、程序效率降低。 如何知道一个对象是否可以被回收 1、 引用计数算法:判断对象的引用数量。 原理就是为每个对象创建一个引用计数, 阅读全文
摘要:
make()和new()函数的区别 make和new函数都是go语言的内建函数来分配内存空间的。但是还是有区别的。 1.make是用来分配引用类型的内存,比如slice,map以及channel(管道)。new是用来分配除了引用类型之外的所有其他类型,比如int,数组,struct等等。 func 阅读全文
摘要:
一.MySQL8.0简介 mysql8.0现在已经发布,2016-09-12第一个DM(development milestone)版本8.0.0发布。新的版本带来很多新功能和新特性,对性能也得到了很大对提升。官方表示 MySQL 8 比之前mysql版本有很大提升,它的速度是 MySQL 5.7 阅读全文
摘要:
ElasticSearch介绍 1.ElasticSearch是一款基于Apache Lucene构建的开源高性能分布式开源搜索引擎。目前ElasticSearch官方的公司Elastic已经在美国纽约上市。 2.采用java编写并提供简单易用的Restful Api。 3.可以很容易横向扩展,能支 阅读全文
摘要:
Golang调度器 先看看golang调度的由来。 一. 单进程时代不需要调度器 在早期操作系统是单进程的,一个进程拥有整个系统的所有资源,所以也不需要调度器。 但是单进程的操作系统也有明显的缺点: 1. 采用单一的执行流程,计算机只能一个任务一个任务处理。 2. 进程阻塞所造成CPU资源的浪费。 阅读全文
摘要:
有哪些影响Redis性能的因素 Redis 内部的阻塞式操作。 CPU 核和 NUMA 架构的影响。 Redis 关键系统配置。 Redis 内存碎片。 Redis 缓冲区。 1. 客户端的阻塞 Redis 使用了 IO 多路复用机制,能避免主线程一直处于等待状态,所以网络 IO不是导致 Redis 阅读全文
摘要:
什么是TCP/IP? TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议。并不只有TCP与IP两种协议,而是一个应用于不同网络间信息传输的协议簇,它对网络中各结构层 阅读全文
摘要:
背景 我们在项目中大量使用Redis承接海量数据的冲击,但是使用过程中也会遇到一些特殊的情况,这个就是缓存击穿、缓存穿透、缓存雪崩。 缓存穿透问题 先来看一个常见的缓存使用方式:读请求来了,先查下缓存,缓存有值命中,就直接返回;缓存没命中,就去查数据库,然后把数据库的值更新到缓存,再返回。 缓存穿透 阅读全文
摘要:
利用了 PageCache 缓存 磁盘顺序写 零拷贝技术 pull 拉模式 阅读全文
摘要:
前言 Sql语句优化是Mysql性能优化的一部分,我们看下常见Sql语句优化及注意的有哪些。 一、查询SQL尽量不要使用select *,而是具体字段 1. 反例 SELECT * FROM user; 2. 正例 SELECT id,name,tel FROM user 说明: 只返回需要的字段, 阅读全文
摘要:
1. 背景 Redis现在广泛应用于大中型互联网项目中,最重要的场景就是作为分布式缓存,来应对大流量高并发的冲击,那么为什么Redis有如此高的性能,这篇文章就来分析一下Redis高性能实现原理。 2. Redis高性能能分析 2.1 存储模式:基于内存存储实现 我们都知道内存读写是比在磁盘快很多的 阅读全文
摘要:
Map底层实现原理 Go Map是一种key-value的键值对存储结构,其中key不能重复。它是一个指针,占用8字节,指向一个hmap结构体。 Map的数据结构源代码在src/runtime/map.go中 我们通过go env 命令先找到go源代码路径 找到对应文件map.go 找到hmap结构 阅读全文
摘要:
什么是Java线程模型 因为Java字节码运行在JVM中,而JVM运行在各个操作系统上,所以当JVM想要进行线程创建和回收的这种操作时,是必须要调用操作系统的相关接口,也就是说JVM线程与操作系统线程之间存在着某种映射关系。 这两种不同维度的线程之间的规范和协议呢,就是线程模型。有人可能要问了那为什 阅读全文
摘要:
1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。 JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。 具体来说 JD 阅读全文
摘要:
Golang的错误设计相比php和java要简单明了。Golang是通过声明error类或者调用errors包中的New函数来实现的一种非常简单的错误处理机制。 Go 语言为错误处理定义了一个标准模式,即 error 接口,该接口的定义非常简单: type error interface { Err 阅读全文