从DDR发展到DDR4,内存核心频率指标其实基本上就没太大的进步
从DDR发展到DDR4,内存核心频率指标其实基本上就没太大的进步

从2001年DDR内存面世以来发展到2019年的今天,已经走过了DDR、DDR2、DDR3、DDR4四个大的规格时代了。内存的工作频率也从DDR时代的266MHz进化到了今天的3200MHz。这个频率在操作系统里叫Speed、在内存术语里叫等效频率、或干脆直接简称频率。这个频率越高,每秒钟内存IO的

2020-11-02 00:49:43阅读全文

带你深入理解内存对齐最底层原理
带你深入理解内存对齐最底层原理

相信绝大多数的人都了解内存对齐,都知道变量应该按8字节去对齐,这样性能高。但是其最最底层的原理是啥呢? 有的人可能会说,因为高速缓存是以8字节为单位进行的。读者你很聪明,这是原因之一。但我今天想挖的是更底层一点的原理,让我们去内存的物理构成里找找答案!

2020-11-01 22:40:25阅读全文

追踪将服务器CPU耗光的凶手
追踪将服务器CPU耗光的凶手

前面我们讨论系统调用的时候结论是耗时200ns-15us不等。不过我今天说的我的这个遭遇可能会让你进一步认识系统调用的真正开销。在本节里你会看到一个耗时2.5ms的connect系统调用,注意是毫秒,相当于2500us!

2020-11-01 18:37:20阅读全文

深入分析Spring 与 Spring MVC容器
深入分析Spring 与 Spring MVC容器

Spring Framework本身没有Web功能,Spring MVC使用WebApplicationContext类扩展ApplicationContext,使得拥有web功能。那么,Spring MVC是如何在web环境中创建IoC容器呢?web环境中的IoC容器的结构又是什么结构呢?web环

2020-11-01 15:15:10阅读全文

函数调用太多了会有性能问题吗?
函数调用太多了会有性能问题吗?

在现代的开发工作中,相信绝大部分的同学手头的项目都不是从第零行代码开始搭建的。各个语言都有自己流行的代码框架,如PHP的有Laravel、CodeIgniter、ThinkPHP等等。大家都是在自己的框架的基础上添加自己的业务代码逻辑,开启开发工作。还记得我们团队有位开发同学当时问过我一个问题,我们

2020-11-01 11:41:05阅读全文

内存泄露与内存溢出的区别
内存泄露与内存溢出的区别

是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。

2020-11-01 10:21:42阅读全文

linux网络编程常见API详解
linux网络编程常见API详解

Linux网络编程API函数初步剖析

2020-11-01 08:42:20阅读全文

一次简单的redis网络请求会有哪些CPU开销?
一次简单的redis网络请求会有哪些CPU开销?

我问大家一个问题,下图中一个最简单的例子,会导致哪些CPU开销产生?你是否能够说清楚?

2020-11-01 08:22:04阅读全文

虚拟机-搭建3主3从redis集群
虚拟机-搭建3主3从redis集群

搭建3主3从的redis cluster:基于redis分布式锁。

2020-11-01 08:05:14阅读全文

为什么 Go 占用那么多的虚拟内存?
为什么 Go 占用那么多的虚拟内存?

前段时间,某同学说某服务的容器因为超出内存限制,不断地重启,问我们是不是有内存泄露,赶紧排查,然后解决掉,省的出问题。我们大为震惊,赶紧查看监控+报警系统和性能分析,发现应用指标压根就不高,不像有泄露的样子。

2020-11-01 07:30:53阅读全文

Linux内核-进程间通信组件的实现
Linux内核-进程间通信组件的实现

一个完整的Linux内核一般由五大部分组成,他们分别是内存管理,进程管理,进程间通信,虚拟文件系统和网络接口。

2020-11-01 05:28:48阅读全文

谈谈如何学习Linux内核
谈谈如何学习Linux内核

学习内核的好处很多,在学习过程中不仅可以夯实大量理论基础,还可以学习到很多编码惯用法,提升学习能力和分析能力。

2020-11-01 02:36:36阅读全文

进程/线程上下文切换会用掉你多少CPU?
进程/线程上下文切换会用掉你多少CPU?

进程是操作系统的伟大发明之一,对应用程序屏蔽了CPU调度、内存管理等硬件细节,而抽象出一个进程的概念,让应用程序专心于实现自己的业务逻辑既可,而且在有限的CPU上可以“同时”进行许多个任务。但是它为用户带来方便的同时,也引入了一些额外的开销。如下图,在进程运行中间的时间里,虽然CPU也在忙于干活,但

2020-11-01 02:36:32阅读全文

C/C++后台研发需要点亮哪些技能树?
C/C++后台研发需要点亮哪些技能树?

在快结束的秋季招聘中,后台开发或服务器开发的岗位需求一度火热,甚至超过了算法岗。不少同学从诸神黄昏的算法岗战场上退下,转向更偏向工程能力的后台开发岗,从而造成后台开发岗位竞争的大爆发。

2020-11-01 01:41:23阅读全文

一次系统调用开销到底有多大?
一次系统调用开销到底有多大?

首先说说系统调用是什么,当你的代码需要做IO操作(open、read、write)、或者是进行内存操作(mmpa、sbrk)、甚至是说要获取一个系统时间(gettimeofday),就需要通过系统调用来和内核进行交互。无论你的用户程序是用什么语言实现的,是php、c、java还是go,只要你是建立在

2020-11-01 00:42:08阅读全文

协程究竟比线程能省多少开销?
协程究竟比线程能省多少开销?

前文中中我们用实验的方式验证了Linux进程和线程的上下文切换开销,大约是3-5us之间。当运行在一般的计算机程序时,这个开销确实不算大。但是海量互联网服务端和一般的计算机程序相比,特点是:

2020-10-31 21:48:39阅读全文

记一次PHP源码编译过程
记一次PHP源码编译过程

很久没有源码编译过php了。

2020-10-31 21:24:29阅读全文

深入了解C++linux工程师的技术需求,为你以后的职业发展定方向
深入了解C++linux工程师的技术需求,为你以后的职业发展定方向

一、C++服务器程序员(流媒体后台,游戏后台,高性能服务器后台)

2020-10-31 18:51:17阅读全文

虚拟机-centos集群搭建
虚拟机-centos集群搭建

我们在搭建redis集群、zookeper集群、hadoop集群、或者kafaka集群时候,都需要使用多台机器,所以搭建集群服务器是一个后端程序员基本素养。本文目标是:准备搭建5台linux虚拟机

2020-10-31 16:56:06阅读全文

Spring MVC 到 Spring Boot 的简化之路
Spring MVC 到 Spring Boot 的简化之路

从Servlet技术到Spring和Spring MVC,开发Web应用变得越来越简捷。但是Spring和Spring MVC的众多配置有时却让人望而却步,相信有过Spring MVC开发经验的朋友能深刻体会到这一痛苦。因为即使是开发一个Hello-World的Web应用,都需要我们在pom文件中导

2020-10-31 16:54:07阅读全文

普通本科毕业校招进阿里云就拿23k*13?
普通本科毕业校招进阿里云就拿23k*13?

秋招结束,有人欢喜有人愁,拿到心仪的offer固然心喜,手里的offer不尽如人意也先别气馁,offer不如人也许并不是你技术比谁差,而是你的学习方向跟面试过程出了一些小小的问题。

2020-10-31 13:28:28阅读全文

花十分钟时间来武装一下你的代码库吧!
花十分钟时间来武装一下你的代码库吧!

当我们的代码库由很多人维护时,经常会出现代码风格不一致或者代码质量不过关,提交信息紊乱的情况,当然啦,即使是一个人的代码库,有的时候,自己写代码时不太注意细节,也会出现风格不一致的情况。

2020-10-31 12:06:33阅读全文

使用Go进行io_uring的动手实践
使用Go进行io_uring的动手实践

在Linux中,系统调用(syscalls)是一切的核心。 它们是应用程序与内核交互的主要接口。 因此,至关重要的是它们要快。 尤其在后Spectre / Meltdown后世界中,这一点尤为重要。

2020-10-31 10:38:28阅读全文

Bash技巧:介绍一个批量复制文件到指定目录的Shell脚本
Bash技巧:介绍一个批量复制文件到指定目录的Shell脚本

本篇文章介绍一个可以批量复制文件到指定目录的 shell 脚本。

2020-10-31 07:46:52阅读全文

linux基础命令,吐血万字整理,赶紧收藏起来!
linux基础命令,吐血万字整理,赶紧收藏起来!

我通过以下四点介绍什么操作系统:

2020-10-31 04:09:28阅读全文

算法数据结构——这张图说尽动态规划算法
算法数据结构——这张图说尽动态规划算法

算法中有个专题,动态规划,它十分的重要,大厂面试中或多或少有所涉及,来网易之前,刷了部分dp,这次正好再次梳理一遍,希望对你们有一点点帮助。

2020-10-31 02:15:21阅读全文

Linux常用命令集合(后端专用操作手册)
Linux常用命令集合(后端专用操作手册)

  Linux 的命令的主要分为对文件基本信息的操作、对文件与目录的操作命令、对用户和用户组的操作的命令、对磁盘管理的操作命令、以及 vim、yum、apt.在这里 ,我们只是介绍一些简单的 linux 的操作,比如说对文件与目录的操作,对文件基本信息的操作,以及 vim 指令,这些操作足以满足一个

2020-10-31 02:13:47阅读全文

c/c++ Linux多线程编程
c/c++ Linux多线程编程

Linux多线程编程

2020-10-31 00:29:41阅读全文

linux下定位多线程内存越界问题实践总结
linux下定位多线程内存越界问题实践总结

最近定位了在一个多线程服务器程序(OceanBase MergeServer)中,一个线程非法篡改另一个线程的内存而导致程序core掉的问题。定位这个问题历经曲折,尝试了各种内存调试的办法。往往感觉就要柳暗花明了,却发现又进入了另一个死胡同。最后,使用强大的mprotect+backtrace+li

2020-10-30 22:35:22阅读全文

TLB缓存是个神马鬼,如何查看TLB miss?
TLB缓存是个神马鬼,如何查看TLB miss?

介绍TLB之前,我们先来回顾一个操作系统里的基本概念,虚拟内存。

2020-10-30 12:19:29阅读全文

Linux 制作系统镜像
Linux 制作系统镜像

在 RHEL 7.3 上面搭建好了 Apache Web 服务,现在想把 RHEL 8.1 系统镜像上传到 Apache Web 根目录,但由于 RHEL 8.1 系统镜像的大小为 7.31 GB,已经超过 4 GB ,通过 rz 无法上传。解决方法是把 RHEL 8.1 系统镜像挂载到 RHEL

2020-10-30 11:45:57阅读全文

听说你只知内存,而不知缓存?CPU表示很伤心!
听说你只知内存,而不知缓存?CPU表示很伤心!

一般我们的开发同学们都知道自己机器的CPU是几核、内存是多大。但是对于CPU内部对程序性能影响较大的缓存却是一知半解。有些开发同学都是计算机的缓存有L1、L2、L3,但是再详细一点的问题,可能就很少有同学能答的完整了。如果下面这几个问题你能脱口而出,请跳过本节。例如:

2020-10-30 11:36:16阅读全文

SonarQube快速集成钉钉群机器人
SonarQube快速集成钉钉群机器人

https://github.com/viodo/sonar-dingtalk-plugin觉得有用的别忘了点个star哦 _

2020-10-30 00:51:36阅读全文

Spring学习笔记,菜鸟必看,带你吃透Spring
Spring学习笔记,菜鸟必看,带你吃透Spring

Spring 是一个开源框架,是一个分层的 JavaEE 一站式框架。

2020-10-29 23:12:15阅读全文

大牛的Linux编程-线程池的设计与实现(详细完整版)
大牛的Linux编程-线程池的设计与实现(详细完整版)

假设服务器的硬件资源“充裕”,那么提高服务器性能的一个很直接的方法就是空间换时间,即“浪费”服务器的硬件资源,以换取其运行效率。提升服务器性能的一个重要方法就是采用“池”的思路,即对一组资源在服务器启动之初就被完全创建好并初始化,这称为静态资源分配。当服务器进入正式运行阶段,即开始处理客户端请求时,

2020-10-29 21:52:33阅读全文