自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhipingxi的博客

技术分享和交流,其它也不拒绝哟!

  • 博客(49)
  • 收藏
  • 关注

转载 C++中的虚函数(表)实现机制及模拟实现

前言大家都应该知道C++的精髓是虚函数吧? 虚函数带来的好处就是: 可以定义一个基类的指针, 其指向一个继承类, 当通过基类的指针去调用函数时, 可以在运行时决定该调用基类的函数还是继承类的函数. 虚函数是实现多态(动态绑定)/接口函数的基础. 可以说: 没有虚函数, C++将变得一无是处!既然是C++的精髓, 那么我们有必要了解一下她的实现方式吗? 有必要! 既然C++是从C语言的基础上发展而来的, 那么我们可以尝试用C语言来模拟实现吗? 有可能! 接下来, 就是我一步一步地来解析C++的虚函数的

2021-09-16 15:35:51 360

转载 动图详解:十大经典排序算法动画与解析

排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序。内部排序是数据记录在内存中进行排序。而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括:时间复杂度与空间复杂度关于时间复杂度: 平方阶 (O(n2)) 排序 各类简单排序:直接插入、直接选择和冒泡排序。 线性对数阶 (...

2020-11-17 20:53:08 279

转载 LevelDB 源码分析

本文基于leveldb 1.9.0代码。整体架构如上图,leveldb的数据存储在内存以及磁盘上,其中:memtable:存储在内存中的数据,使用skiplist实现。 immutable memtable:与memtable一样,只不过这个memtable不能再进行修改,会将其中的数据落盘到level 0的sstable中。 多层sstable:leveldb使用多个层次来存储sstable文件,这些文件分布在磁盘上,这些文件都是根据键值有序排列的,其中0级的sstable的键值可能会

2020-10-09 15:15:40 2128 2

转载 C++ 开源大全

程序员要站在巨人的肩膀上,C++拥有丰富的开源库,这里包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。标准库C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。 Standard Template Library:标准模板库 C POSIX library: POSIX系统的C标准库规范 ISO C++ Standards Committee:C++标准委员会框架C++通用框架..

2021-09-16 20:32:29 2507

转载 Unix网络 IO 模型及 Linux 的 IO 多路复用模型详解

本文主要探讨的问题有以下两个:Unix 中的五种网络 IO 模型; Linux 中 IO 多路复用的实现。一、基本概念在介绍网络模型之前,先简单介绍一些基本概念。 1.文件描述符 fd文件描述符(file descriptor,简称 fd)在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。...

2021-08-24 13:54:07 240

翻译 Linux神器之 strace

man strace: strace - trace system calls and signalsDESCRIPTION In the simplest case strace runs the specified command until it exits.It intercepts and records the system calls which are called by a process and the signals which arereceiv...

2020-11-20 10:18:52 600

原创 解决Python3 安装Scrapy和Twisted模块时出现[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed

自己在网络上搜集了一下,大多数方法都不管用,后来自己根据报错的详细信息去改了库代码,最后成功安装。一、网络上通用方法:1.全局取消证书验证(当项目对安全性问题不太重视时,推荐使用,可以全局取消证书的验证,简易方便)import sslssl._create_default_https_context = ssl._create_unverified_context2.使用ss...

2019-06-26 09:55:32 1056

转载 《RTTI、虚函数和虚基类的实现方式、开销分析及使用指导》

=================================================================转载链接:    http://www.baiy.cn/doc/cpp/inside_rtti.htm    “在正确的场合使用恰当的特性” 对称职的C++程序员来说是一个基本标准。想要做到这点,首先要了解语言中每个特性的实现方式及其开销。本文主要讨论相对于传统 C 而...

2018-03-28 10:24:26 513

转载 正向代理 VS 反向代理 原理详解

1、前言  最近工作中用到反向代理,发现网络代理的玩法还真不少,网络背后有很多需要去学习。而在此之前仅仅使用了过代理软件,曾经为了访问google,使用了代理软件,需要在浏览器中配置代理的地址。我只知道有代理这个概念,并不清楚代理还有正向和反向之分,于是赶紧学习一下,补充一下知识。首先弄清楚什么是正向代理,什么是反向代理,然后是二者在实际使用中展示的方式是什么样的,最后总结一下正向代理用来做什么,...

2018-03-23 09:22:16 1178 1

转载 从头到尾彻底理解KMP

从头到尾彻底理解KMP郑重声明:本文转自July大大的Blog,原博客文章下有大量评论,欢迎访问 :                    http://blog.csdn.net/v_july_v/article/details/7041827=======================我是分割线=======================作者:July时间:最初写于2011年12月,201...

2018-03-21 14:23:39 263

转载 Meltdown 论文翻译

摘要(Abstract)    The security of computer systems fundamentally relies on memory isolation, e.g., kernel address ranges are marked as non-accessible and are protected from user access. In this paper, w...

2018-02-10 23:28:25 2214

转载 2017年中国网络安全报告

本报告涵盖恶意软件与恶意网址、移动安全、互联网安全、趋势展望等多个章节,从解各方面分析 2017 中国网络安全态势。一、恶意软件与恶意网址(一)恶意软件1. 2017年病毒概述(1)病毒疫情总体概述2017年瑞星“云安全”系统共截获病毒样本总量5,003万个,病毒感染次数29.1亿次,病毒总体数量比2016年同期上涨15.62%。 报告期内,新增木马

2018-02-06 16:42:03 3455

转载 计算机网络笔记之传输层知识总结

计算机网络笔记之传输层知识总结传输层概述: 为什么要划分传输层?  既然网络层已经能把源主机上发出的数据传送给目的主机,那么为什么还需要加上一个传输层呢?这就需要我们理解主机用户应用层通信的主体,位于两台网络主机中真正的数据通信主体并不是这两台主机,而是两台主机中的各种网络应用进程.同一时间一台主机上可能有多个进程同时运行,这时候就需要为应用程序提供一个标识

2018-02-06 16:31:13 636

转载 计算机网络笔记之网络层之IP地址与子网

计算机网络笔记之网络层之IP地址与子网IPv4地址:      我们知道在网络层(TCP/IP体系结构的网际互联层),最重要的一个协议就是IP协议,现在正处于IPv4和IPv6的过渡时期,但目前来说,IPv4仍为主流,所以主要讲Ipv4.  IP地址基本格式:      计算机内部IP地址的格式是32位的二进制数表示的,为了让人们看起来方便,通常采用点分十进

2018-02-06 16:28:01 339

转载 计算机网络笔记之网络层知识点整理

计算机网络笔记之网络层知识点整理为什么要划分网络层?  不用的网络有不同的协议和标准,为了可以在不同网络之间互访,共享双方的资源,并且还要保持每个计算机网络本来的独立性,所以才划分出了网络层,并制定了专门的协议来负责网络间通信.网络层的主要功能:  1.屏蔽网络差异,提供透明传输.    为传输层提供服务:面向连接的网络服务(虚电路服务)

2018-02-06 16:25:58 1032

转载 计算机网络笔记之数据链据层上的设备详解

计算机网络笔记之数据链据层上的设备详解  在数据链路层工作的主要设备,常见的有网卡,网桥,和二层交换机. 网卡(网络适配器):  网卡,也叫网络适配器,是安装在计算机上,用来连接计算机网络的,是计算机网络中最基础的网络设备,网卡类型总的来说分为有线以太网卡,WLAN无线网卡两大类.  常见的有双绞线以太网卡:网卡的功能:  网卡和局域网之

2018-02-06 16:21:56 389

转载 计算机网络笔记之数据链据层之MAC子层

计算机网络笔记之数据链据层之MAC子层概述:  为什么需要介质访问控制子层(MAC)?  介质访问控制子层(MAC)是局域网体系结构中划分的子层,多路访问链路采用共享介质连接所有站点.发送站点通过广播方式发送数据并占用整个带宽,如果有多个站点同时发送信息,就会产生冲突,而在点对点链路网络中就不会存在这样的问题,因为在点对点网络中,目的节点是唯一的,不需要寻址,双方之

2018-02-06 16:20:33 1001

转载 计算机网络基础知识总结

阅读目录1. 网络层次划分2. OSI七层网络模型3. IP地址4. 子网掩码及网络划分5. ARP/RARP协议6. 路由选择协议7. TCP/IP协议8. UDP协议 9. DNS协议10. NAT协议11. DHCP协议12. HTTP协议13. 一个举例  计算机网络学习的核心内容就是网络协议的学习。网络协议是为计算机

2018-01-25 11:12:06 268

原创 Linux 系统时区

查看当前时间date查看当前timezonezdump  /etc/localtime通过 tzselect 命令获取当地时区的 TZ 值tzselect之后选取对应时区/地区最终 tzselect 会以 Posix TZ 格式(如‘Asia/Shanghai’)输出所在时区并记录。更改Linux系统时区rm  /etc/localtimel

2018-01-10 13:57:52 322

转载 模糊哈希算法的原理与应用

关于模糊哈希(Fuzzy Hashing)算法,目前网上有几篇中文资料介绍,但均不准确。写这篇文章以纠正,并对其原理和应用作详细的介绍。一、概述模糊哈希算法又叫基于内容分割的分片分片哈希算法(context triggered piecewise hashing, CTPH),主要用于文件的相似性比较。2006年,Jesse Kornblum [1] 提出CTPH,并给出一

2018-01-08 09:12:24 2120

转载 SR-IOV 简介

SR-IOV 简介SR-IOV 技术是一种基于硬件的虚拟化解决方案,可提高性能和可伸缩性。SR-IOV 标准允许在虚拟机之间高效共享 PCIe(Peripheral Component Interconnect Express,快速外设组件互连)设备,并且它是在硬件中实现的,可以获得能够与本机性能媲美的 I/O 性能。SR-IOV 规范定义了新的标准,根据该标准,创

2017-12-15 16:19:18 7415

转载 初识 VxLAN

1 背景1.1 云计算成为企业IT建设新形态任何技术的产生,都有其特定的时代背景与实际需求,VXLAN正是为了解决云计算时代虚拟化中的一系列问题而产生的一项技术。云计算,凭借其在系统利用率高、人力/管理成本低、灵活性/可扩展性强等方面表现出的优势,已经成为目前企业IT建设的新形态;而在云计算中,大量的采用和部署虚拟化是一个基本的技术模式。服务器虚拟化技术的广泛部

2017-12-07 16:09:30 980

转载 VXLAN介绍

为什么需要VXLAN?●  虚拟机规模受网络规格限制虚拟机规模受网络规格限制在大二层网络环境下,数据报文是通过查询MAC地址表进行二层转发,而MAC地址表的容量限制了虚拟机的数量。●  网络隔离能力限制当前主流的网络隔离技术是VLAN或VPN(Virtual Private Network),在大规模的虚拟化网络中部署存在如下限制:─  由于IEEE 802.1Q中定义的VLA...

2017-12-07 15:29:37 5751

转载 《Linux内核设计与实现》读书笔记(五)- 系统调用

主要内容:什么是系统调用Linux上的系统调用实现原理一个简单的系统调用的实现1. 什么是系统调用简单来说,系统调用就是用户程序和硬件设备之间的桥梁。用户程序在需要的时候,通过系统调用来使用硬件设备。系统调用的存在,有以下重要的意义:1)用户程序通过系统调用来使用硬件,而不用关心具体的硬件设备,这样大大简化了用户程序的开发。    比如:用户

2017-12-06 13:22:20 291

转载 《Linux内核设计与实现》读书笔记(六)- 内核数据结构

内核数据结构贯穿于整个内核代码中,这里介绍4个基本的内核数据结构。利用这4个基本的数据结构,可以在编写内核代码时节约大量时间。主要内容:链表队列映射红黑树 1. 链表链表是linux内核中最简单,同时也是应用最广泛的数据结构。内核中定义的是双向链表。 1.1 头文件简介内核中关于链表定义的代码位于: include/linux/list.

2017-12-06 13:19:06 264

转载 《Linux内核设计与实现》读书笔记(四)- 进程的调度

主要内容:什么是调度调度实现原理Linux上调度实现的方法调度相关的系统调用1. 什么是调度现在的操作系统都是多任务的,为了能让更多的任务能同时在系统上更好的运行,需要一个管理程序来管理计算机上同时运行的各个任务(也就是进程)。这个管理程序就是调度程序,它的功能说起来很简单:决定哪些进程运行,哪些进程等待决定每个进程运行多长时间此外,为了获得更好的用户体

2017-12-06 13:17:02 241

转载 阅读 netmap: a novel framework for fast packet I/O 文章总结

Abstract and Introductionnetmap:一个新型的框架,使得现在的操作系统可以在不需要特定硬件或针对应用进行改变的前提下,每秒钟通过1..10 Gbit/s的link处理百万级的packet。减少或移除了三处packet处理过程中的cost:每个packet的动态内存分配——通过预分配资源进行处理系统调用的开销——摊销到large bat

2017-11-29 09:37:04 924

转载 图解机器学习

警告:多图杀猫!每当提到机器学习,大家总是被其中的各种各样的算法和方法搞晕,觉得无从下手。确实,机器学习的各种套路确实不少,但是如果掌握了正确的路径和方法,其实还是有迹可循的,这里我推荐SAS的Li Hui的这篇博客,讲述了如何选择机器学习的各种方法。 另外,Scikit-learn 也提供了一幅清晰的路线图给大家选择:其实机器学习的基本算法都很简单,下面我们就利用二维数据和交

2017-11-24 10:41:06 352

转载 Makefile 使用总结

1. Makefile 简介Makefile 是和 make 命令一起配合使用的.很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂.Makefile的组织流程的能力如此之强, 不仅可以用来编译项目, 还可以用来组织我们平时的一些日常操作. 这个需要大家发挥自己的想象力. 本篇博客是

2017-10-24 09:42:46 410

转载 《Linux内核设计与实现》读书笔记(三)- Linux的进程

进程是所有操作系统的核心概念,同样在linux上也不例外。主要内容:进程和线程进程的生命周期进程的创建进程的终止1. 进程和线程进程和线程是程序运行时状态,是动态变化的,进程和线程的管理操作(比如,创建,销毁等)都是有内核来实现的。Linux中的进程于Windows相比是很轻量级的,而且不严格区分进程和线程,线程不过是一种特殊的进程。所以下面只讨论进程,只有

2017-10-24 09:39:58 263

转载 《Linux内核设计与实现》读书笔记(二)- 内核开发的准备

在尝试内核开发之前,需要对内核有个整体的了解。主要内容:获取内核源码内核源码的结构编译内核的方法内核开发的特点 1. 获取内核源码内核是开源的,所有获取源码特别方便,参照以下的网址,可以通过git或者直接下载压缩好的源码包。http://www.kernel.org 2. 内核源码的结构 目录说明

2017-10-24 09:26:11 261

转载 《Linux内核设计与实现》读书笔记(一)-内核简介

《Linux内核设计与实现》读书笔记(一)-内核简介本篇简单介绍内核相关的基本概念。主要内容:单内核和微内核内核版本号 1. 单内核和微内核 原理优势劣势单内核整个内核都在一个大内核地址空间上运行。1. 简单。2. 高效:所有内核都在一个大的地

2017-10-24 09:22:34 266

转载 Linux内核数据结构kfifo详解

Linux kernal 鬼斧神工,博大精深,让人叹为观止,拍手叫绝。然匠心独运的设计并非扑朔迷离、盘根错节,真正的匠心独运乃辞简理博、化繁为简,在简洁中昭显优雅和智慧,kfifo就是这样一种数据结构,它就是这样简约高效,匠心独运,妙不可言,下面就跟大家一起探讨学习。一、kfifo概述本文分析的原代码版本2.6.32.63kfifo的

2017-10-20 13:39:28 1187 1

转载 巧夺天工的 kfifo

Linux kernel里面从来就不缺少简洁,优雅和高效的代码,只是我们缺少发现和品味的眼光。在Linux kernel里面,简洁并不表示代码使用神出鬼没的超然技巧,相反,它使用的不过是大家非常熟悉的基础数据结构,但是kernel开发者能从基础的数据结构中,提炼出优美的特性。 kfifo就是这样的一类优美代码,它十分简洁,绝无多余的一行代码,却非常高效。 关于kfifo信息如下:

2017-10-20 11:29:17 286

转载 递归 与 尾递归 详解

前言:今天上网看帖子的时候,看到关于尾递归的应用(http://bbs.csdn.net/topics/390215312),大脑中感觉这个词好像在哪里见过,但是又想不起来具体是怎么回事。如是乎,在网上搜了一下,顿时豁然开朗,知道尾递归是怎么回事了。下面就递归与尾递归进行总结,以方便日后在工作中使用。1、递归  关于递归的概念,我们都不陌生。简单的来说递归就是一个函数直接或

2017-10-20 09:12:18 761

转载 九大排序算法详解 - C语言篇

概述    排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。    我们这里说说八大排序就是内部排序。        当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。   快速排序:是目前基于比较的内部排序中被认

2017-10-13 17:54:30 669

转载 服务器三大体系 SMP、NUMA、MPP 之详解

系统架构来看,目前的商用服务器大体可以分为三类,即    对称多处理器结构(SMP:Symmetric Multi-Processor);    非一致存储访问结构(NUMA:Non-Uniform Memory Access);    海量并行处理结构(MPP:Massive Parallel Processing);SMP(Symmetric Multi-Proce

2017-09-29 13:50:15 3550

转载 60著名条原则和定理

60著名条原则和定理1、蓝斯登原则:在你往上爬的时候。一定要保持梯子的整洁。否则你下来时可能会滑倒。提出者:美国管理学家蓝斯登。点评:进退有度,才不至进退维谷;宠辱皆忘。方能够宠辱不惊。 2、卢维斯定理:谦虚不是把自己想得非常糟。而是全然不想自己。提出者:美国心理学家卢维斯点评:假设把自己想得太好,

2017-09-28 15:22:55 1889

转载 关于端口聚合或端口聚合称呼的误区

经常有网友问我端口聚合是指链路聚合还是VLAN trunking啊?为什么老师给他们讲的都是这个名称呢,是老师讲错了,还是书上有错。    我学网络这么久了,也一直实际使用中在把这两个词混用,其实这完全不是一回事。    我在百度上查了一下定义:        链路聚合是将两个或更多数据信道结合成一个单个的信道,该信道以一个单个的更高带宽的逻辑链路出现。链路聚合一般用来连接

2017-09-22 10:34:01 6589 1

转载 神经网络浅讲:从神经元到深度学习

神经网络是一门重要的机器学习技术。它是目前最为火热的研究方向--深度学习的基础。学习神经网络不仅可以让你掌握一门强大的机器学习方法,同时也可以更好地帮助你理解深度学习技术。  本文以一种简单的,循序的方式讲解神经网络。适合对神经网络了解不多的同学。本文对阅读没有一定的前提要求,但是懂一些机器学习基础会更好地帮助理解本文。  神经网络是一种模拟人脑的神经网络以期能够实现类人工智能的机

2017-09-20 17:25:45 397

空空如也

空空如也

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

TA关注的人

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