摘要:
您可能凭直觉知道应用程序在 Intel x86 计算机中的功能有限,并且只有操作系统代码才能执行某些任务,但是您知道它是如何工作的吗?这篇文章介绍了 x86权限级别,操作系统和 CPU 合力限制用户模式程序可以做什么的机制。有四个特权级别,编号为 0(最高特权)到 3(最低特权),并且受保护的三个主
阅读全文
posted @ 2022-01-02 21:08
CharyGao
阅读(984)
推荐(0)
摘要:
内存中的程序剖析 | 许多但有限 内存管理是操作系统的核心;它对于编程和系统管理都至关重要。在接下来的几篇文章中,我将着眼于实际方面来介绍内存,但不会回避内部问题。虽然这些概念是通用的,但示例主要来自 32 位 x86 上的 Linux 和 Windows。第一篇文章描述了程序在内存中的布局。 多任
阅读全文
posted @ 2022-01-02 12:52
CharyGao
阅读(145)
推荐(0)
摘要:
Ubuntu 命令行的垃圾箱 – VITUX 作为 Linux 用户,您可能需要不时从系统中删除文件。我们在删除文件时往往要谨慎,尤其是在永久删除文件时,因为我们不想错误地永远丢失有用的信息。不幸的是,在某些情况下,我们错误地删除了某些内容并且无法恢复它。或者,我们打算只删除文件夹中的文件,但错误地
阅读全文
posted @ 2022-01-02 11:20
CharyGao
阅读(2892)
推荐(0)
摘要:
数据丢失带来的损失是相当昂贵的。关键数据的丢失会对各种规模的企业带来影响。有几种方法来备份Linux系统,包括rsync的和rsnapshot等。本文提供有关使用dd命令备份Linux系统的6个实例。 dd是一个功能强大的UNIX工具,由Linux内核的makefile进行引导映像,它也可以用来复制
阅读全文
posted @ 2022-01-02 10:29
CharyGao
阅读(226)
推荐(0)
摘要:
Shell也叫做命令行界面,它是*nix操作系统下用户和计算机的交互界面。Shell这个词是指操作系统中提供访问内核服务的程序。 这篇文章向大家介绍Shell一些非广为人知、但却实用有趣的知识,权当品尝shell主食后的甜点吧。 科普 先科普几个你可能不知道的事实: Shell几乎是和Unix操作系
阅读全文
posted @ 2021-12-30 10:54
CharyGao
阅读(180)
推荐(0)
摘要:
说明: 1、历史命令是被保存在内存和~/.bash_history中,当退出或者登录shell时,会自动保存或读取 2、在常见的Linux发行版本中,通常默认存储1000条历史命令,该数量是由环境变量HISTSIZE进行控制 3、/usr/bin目录下保存当前系统的命令文件,可以用 ls /usr/
阅读全文
posted @ 2021-12-30 10:32
CharyGao
阅读(1949)
推荐(1)
摘要:
【感谢 @风枫峰 投递本文】 故事一:背景介绍:RT是一个外包公司,ZWZX是项目承接公司,YD是甲方。 RT公司每天下班的时候都会接到ZWZX负责人的电话,询问一天的工作情况,然后布置任务要求晚上加班做完,RT公司的员工很无奈也很气愤因为每天都要加班,员工们就问项目经理:“为什么天天加班赶需求,今
阅读全文
posted @ 2021-12-29 16:56
CharyGao
阅读(231)
推荐(0)
摘要:
我们知道,HTTP是无状态的,所以,当我们需要获得用户是否在登录的状态时,我们需要检查用户的登录状态,一般来说,用户的登录成功后,服务器会发一个登录凭证(又被叫作Token),就像你去访问某个公司,在前台被认证过合法后,这个公司的前台会给你的一个访客卡一样,之后,你在这个公司内去到哪都用这个访客卡来
阅读全文
posted @ 2021-12-29 16:26
CharyGao
阅读(639)
推荐(0)
摘要:
Nmon 开源性能监控工具,用于监控linux系统的资源消耗信息,并能把结果输出到文件中,然后通过nmon_analyser工具产生数据文件与图形化结果。 目录 一、安装软件 二、实时监控 三、数据采集 四、生成分析报表 一、安装软件 下载 nmon安装包: http://nmon.sourcefo
阅读全文
posted @ 2021-12-28 21:09
CharyGao
阅读(425)
推荐(0)
摘要:
VivioJS MESI 帮助https://www.scss.tcd.ie/Jeremy.Jones/VivioJS/caches/MESIHelp.htm 这个 VivioJS 动画旨在帮助您了解 MESI 缓存一致性协议。 描述了一个多处理器系统,包括 3 个带有本地缓存和主存储器的 CP
阅读全文
posted @ 2021-12-28 01:06
CharyGao
阅读(167)
推荐(0)
摘要:
培训班不会毁了互联网行业,只会毁了一部分本来就应该被淘汰掉的互联网程序员。而培训班反而会促进互联网行业的发展。 程序员是像远古时代的巫师,是“和机器交流的人”,程序员告诉机器去做什么,然后机器把结果告诉程序员。在计算机的上古时代,程序员就是可以和电脑沟通的“巫师”。其他人看到电脑,只能望而却步。 在
阅读全文
posted @ 2021-12-26 14:18
CharyGao
阅读(206)
推荐(0)
摘要:
一.简介 pcap文件是常用的数据报存储格式,可以理解为就是一种文件格式,只不过里面的数据是按照特定格式存储的,所以我们想要解析里面的数据,也必须按照一定的格式。普通的记事本打开pcap文件显示的是乱码,用安装了HEX-Editor插件的Notepad++打开,能够以16进制数据的格式显示,用wir
阅读全文
posted @ 2021-12-21 16:51
CharyGao
阅读(11107)
推荐(2)
摘要:
Keepalived原理_清塘荷韵_kathy的博客-CSDN博客_keepalived工作原理 Keepalived简介 Keepalived是Linux下一个轻量级别的高可用解决方案。高可用:广义来讲,是指整个系统的高可用行;狭义的来讲就是主机的冗余和接管。 它与HeartBeat实现类似的功能
阅读全文
posted @ 2021-12-21 15:42
CharyGao
阅读(210)
推荐(0)
摘要:
JMM概述_牧竹子-CSDN博客_jmm 简介 什么是JMM 内存模型可以理解为在特定的操作协议下,对特定的内存或者高速缓存进行读写访问的过程抽象描述,不同架构下的物理机拥有不一样的内存模型,Java虚拟机是一个实现了跨平台的虚拟系统,因此它也有自己的内存模型,即Java内存模型(Java Memo
阅读全文
posted @ 2021-12-21 14:23
CharyGao
阅读(254)
推荐(1)
摘要:
传统进程的缺点 fork一个子进程的消耗是很大的,fork是一个昂贵的系统调用,即使使用现代的写时复制(copy-on-write)技术。 各个进程拥有自己独立的地址空间,进程间的协作需要复杂的IPC技术,如消息传递和共享内存等。 多线程的优缺点线程:其实可以先简单理解成cpu的一个执行流,指令序列
阅读全文
posted @ 2021-12-20 14:07
CharyGao
阅读(415)
推荐(0)
摘要:
注:阅读本文大约需要 8 分钟。 前言 本文除列举了 Windows 11 常用的键盘快捷键之外,还附带描述了使用方法和记忆方法,读完本文,希望能够帮助IT之家家友进行快速记忆,以期学以致用,提高工作效率。 如下图所示,以系统的触摸键盘为例,红色框标记的按键即为Windows 徽标键,这个标识很像汉
阅读全文
posted @ 2021-12-16 13:11
CharyGao
阅读(1737)
推荐(0)
摘要:
两万字长文从虚拟内存、I/O 缓冲区,用户态&内核态以及 I/O 模式等等知识点全面而又详尽地剖析 Linux 系统的 I/O 底层原理,分析了 Linux 传统的 I/O 模式的弊端,进而引入 Linux Zero-copy 零拷贝技术的介绍和原理解析,将零拷贝技术和传统的 I/O 模式进行区分和
阅读全文
posted @ 2021-12-15 23:00
CharyGao
阅读(382)
推荐(0)
摘要:
低并发编程 战略上藐视技术,战术上重视技术 今天终于成功 debug 了 Linux 内核,允许我一惊一乍给大家分享下喜悦吧! 之前读 Linux 的源码,一直想着如果能 debug 就好了。 无奈 Java 出身的我,本来对 c 就很不熟,跑起一个 c 代码就很费劲了,更别说调试,而且还是调试这种
阅读全文
posted @ 2021-12-13 11:11
CharyGao
阅读(6265)
推荐(0)
摘要:
大家都知道,在计算机中,IO一直是一个瓶颈,很多框架以及技术甚至硬件都是为了降低IO操作而生,今天聊一聊过滤器,先说一个场景: 我们业务后端涉及数据库,当请求消息查询某些信息时,可能先检查缓存中是否有相关信息,有的话返回,如果没有的话可能就要去数据库里面查询,这时候有一个问题,如果很多请求是在请求数
阅读全文
posted @ 2021-12-13 11:01
CharyGao
阅读(1419)
推荐(0)
摘要:
背景 从 JDK 1.7 开始,Oracle 团队就开始对 HotSpot VM 的永久代(PermGen)大刀阔斧的修改、移除,导致 HotSpot 的内存区域发生了很多改变,最终在 JDK 1.8 元空间(Metaspace)取代了永久代成为 HotSpot VM 对方法区的实现。 我们入门虚拟
阅读全文
posted @ 2021-12-09 10:37
CharyGao
阅读(3011)
推荐(3)
摘要:
https://docs.microsoft.com/en-us/cpp/build/reference/base-base-address?view=msvc-170 The /BASE option sets a base address for the program, overriding
阅读全文
posted @ 2021-12-02 16:18
CharyGao
阅读(9127)
推荐(0)
摘要:
关键call 在此,剩下的自己搞定。 参考:https://www.52pojie.cn/thread-1451831-1-1.html 话不多说先上代码:<ignore_js_op>接下来就是话要多说的环节了堆栈是一块儿连续的内存区域,通常情况下,由栈顶向栈底压入内容可以将堆栈抽象的理解为一个放在
阅读全文
posted @ 2021-11-26 18:27
CharyGao
阅读(1137)
推荐(0)
摘要:
概述 我们在写代码时,总会遇到头文件多次包含的情况,刚开始时我们使用宏定义进行控制,之后发现有#pragma once这样简单的东西,当时是很兴奋,以为#pragma就这一种用法。唉~,现在想想当时还是年轻啊,不过还是年轻好啊。 1、什么是预处理 预处理是将源文件的文本作为翻译的第一阶段操作的文本处
阅读全文
posted @ 2021-11-15 17:50
CharyGao
阅读(961)
推荐(0)
摘要:
生成pem文件 Covert Private Key to OpenSSH Format... 转换私有密钥为 OpenSSH 格式。 2个文件 KEY,KEY.pub 新建连接,设置SSH2的Authentication,设置属性Properties... Use global public ke
阅读全文
posted @ 2021-11-13 14:59
CharyGao
阅读(406)
推荐(0)
摘要:
SpringSecurity原理剖析及其实战(一) https://blog.csdn.net/weixin_43934626/article/details/121050704 1.Spring Security介绍 1.1 Spring Security定义 Spring Security是一个
阅读全文
posted @ 2021-11-13 14:54
CharyGao
阅读(103)
推荐(0)
摘要:
字符串前面加L表示该字符串是Unicode字符串。_T是一个宏,如果项目使用了Unicode字符集(定义了UNICODE宏),则自动在字符串前面加上L,否则字符串不变。因此,Visual C++里边定义字符串的时候,用_T来保证兼容性。VC支持ascii和unicode两种字符类型,用_T可以保证从
阅读全文
posted @ 2021-11-12 13:27
CharyGao
阅读(451)
推荐(0)
摘要:
寻找64位系统某符号特征码时发现他的MOV指令用的是相对地址,之前32位下从来没听说MOV还能用相对地址,故查阅了下Intel指令手册。在MOV指令介绍下找到如下介绍: In 64-bit mode, the instruction’s default operation size is 32 bi
阅读全文
posted @ 2021-11-11 16:06
CharyGao
阅读(2422)
推荐(1)
摘要:
gRPC快速入门(一)——Protobuf简介 https://blog.51cto.com/u_9291927/2331980 gRPC快速入门(一)——Protobuf简介 一、Protobuf简介 1、Protobuf简介 Protobuf即Protocol Buffers,是Google公司
阅读全文
posted @ 2021-11-03 16:03
CharyGao
阅读(626)
推荐(0)
摘要:
1. 准备环境 16G 4核CPU 主机一台 2. 安装virtual box 3. 安装vagrant 4. Vagrantfile # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.require_version ">= 1.6.0" boxes
阅读全文
posted @ 2021-10-30 00:32
CharyGao
阅读(1116)
推荐(0)
摘要:
文章转载自:http://blog.csdn.net/ithzhang/article/details/20160009 在各个版本的编译器中,我们可以通过配置选项来设置程序使用的C和C++运行时库的类型。如下图(其他版本编译器大同小异): MT选项:链接LIB版的C和C++运行库。在链接时就会在将
阅读全文
posted @ 2021-10-29 15:15
CharyGao
阅读(3061)
推荐(0)
摘要:
常用削去警告办法: #pragma warning(disable:4035) //no return value #pragma warning(disable:4068) // unknown pragma #pragma warning(disable:4201) //nonstandard
阅读全文
posted @ 2021-10-29 09:57
CharyGao
阅读(1107)
推荐(0)
摘要:
前言 shell脚本绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看。而且当我在看其他人写的脚本的时候,总觉得难以阅读。毕竟shell脚本这个东西不算是正经的编程语言,他更像是一个工具,用来杂糅不同的程序供我们调用。因此很多人在写的时候也是想到哪里写到哪里,基本上都像是一段超长的
阅读全文
posted @ 2021-10-28 19:34
CharyGao
阅读(1108)
推荐(0)
摘要:
大家都知道,在 C++ 中可以通过 typedef 重定义一个类型: typedef unsigned int uint_t; 被重定义的类型并不是一个新的类型,仅仅只是原有的类型取了一个新的名字。因此,下面这样将不是合法的函数重载: void func(unsigned int);void fun
阅读全文
posted @ 2021-10-27 16:17
CharyGao
阅读(1426)
推荐(0)
摘要:
LRU LRU(Least Recently Used)是一种常见的页面置换算法,在计算中,所有的文件操作都要放在内存中进行,然而计算机内存大小是固定的,所以我们不可能把所有的文件都加载到内存,因此我们需要制定一种策略对加入到内存中的文件进项选择。 常见的页面置换算法有如下几种: LRU 最近最久未
阅读全文
posted @ 2021-10-26 11:18
CharyGao
阅读(180)
推荐(0)
摘要:
(1)书写结构 k&r风格: 缩进一个水平制符,k&r提倡8格.左花括号紧接其后不另起一行(函数体的左括号除外).if(...) { ...; ...;} else if(...) { ...; ...;} else { ...; ...;} while(...) { ...; ...;} do {
阅读全文
posted @ 2021-10-25 09:46
CharyGao
阅读(1348)
推荐(0)
摘要:
https://en.wikipedia.org/wiki/Buddy_memory_allocation 原文地址:http://blog.csdn.net/vanbreaker/article/details/7605367 伙伴系统的概述 Linux内核内存管理的一项重要工作就是如何在频繁申请
阅读全文
posted @ 2021-10-23 16:10
CharyGao
阅读(1004)
推荐(0)
摘要:
计算机网络、编译原理和操作系统相关知识,肯定不会过时。 文件夹与目录结构这些帮助前几代人理解计算机的基本理论,在很多年轻一代看来已经成了一种莫名其妙的“疯话”。 两代人之间的碰撞 天体物理学家 Catherine Garland 从 2017 年开始逐渐意识到这个问题。当时她正在教授一门工程课程,要
阅读全文
posted @ 2021-10-19 10:25
CharyGao
阅读(166)
推荐(0)
摘要:
官网链接: https://www.kernel.org/ HTTP https://www.kernel.org/pub/ GIT https://git.kernel.org/ 官网下载经常速度太慢,无法下载,提供另一个链接: http://ftp.sjtu.edu.cn/sites/ftp.k
阅读全文
posted @ 2021-10-11 19:16
CharyGao
阅读(3235)
推荐(0)
摘要:
9.11 strace:跟踪进程的系统调用 、ltrace:跟踪进程调用库函数 strace 是Linux环境下的一款程序调试工具,用于检查一个应用程序所使用的系统调用以及它所接收的系统信息。strace会追踪程序运行时的整个生命周期,输出每一个系统调用的名字、参数、返回值和执行所消耗的时间等,是高
阅读全文
posted @ 2021-10-09 10:16
CharyGao
阅读(1930)
推荐(0)
摘要:
C10K问题由来 随着互联网的普及,应用的用户群体几何倍增长,此时服务器性能问题就出现。最初的服务器是基于进程/线程模型。新到来一个TCP连接,就需要分配一个进程。假如有C10K,就需要创建1W个进程,可想而知单机是无法承受的。那么如何突破单机性能是高性能网络编程必须要面对的问题,进而这些局限和问题
阅读全文
posted @ 2021-10-08 14:07
CharyGao
阅读(1192)
推荐(0)