自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (33)
  • 收藏
  • 关注

原创 X86 CPU 漏洞 Meltdown 原理及google攻击代码

meltdown的原理其实很简单了,访问一个虚拟地址要走page table walk, 现在一般都是4级页表了,页的属性中有一位标志是区分是内核页还是用户页的。程序执行在用户模式下是不允许访问内核地址的原因就是,用户态使用用户态下的页完成虚拟地址向物理地址的转换,同理内核态使用内核态的页。那好了,meltdown发生的窗口期就是因为乱序执行,当用户态非法访问一个内核态的地址时,还没来得及做页属性...

2018-08-25 23:20:26 1758

原创 Spectre Meltdown attack 攻击原理之 speculative execution

最近比较火的X86 bug, spectre meltdown 以及及其变种,攻击的前提是cpu具有speculative execution 的能力,也就是推测执行的能力。当然现代架构的cpu都具备推测执行的能力了。推测执行的时机有多种,比如在执行分支跳转(jmp)、函数调用(call)时,但是核心就是预取数据。当cpu多次执行一段代码时,就会推测执行,比如说一段代码需要循环执行10次,但是cp...

2018-08-18 22:41:05 1890

原创 intel bug - L1 Terminal Fault

L1 Terminal Fault 这个bug 详情和处理方式, 详情请参考linux kernel 官方文档:https://www.kernel.org/doc/html/latest/admin-guide/l1tf.html其中介绍该bug的主要一段话:L1 Terminal Fault is a hardware vulnerability which allows unpr...

2018-10-07 23:06:00 766

原创 linux kernel 学习中, #define ICPU(model){ X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, } 的用法

define ICPU(model) { X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, }可以当做是自定义的数据模型,可以当做数组但是不能用数组方式调用,可以当做结构体用来为结构体赋值,等等。 比如:#include <stdio.h>#define X86_VENDOR_INTEL 100#define X86_FEATURE_ANY 1000#

2017-07-20 20:51:57 434

原创 win10 安装 .Net Framework 3.5 采用 netframework3.5.cab文件安装

从微软官网下载netframework.exe不能安装,故采用下面方法。 1 根据win 10 是32位的还是64位的分别下载相应的netframework.cab文件,并把该文件放进本地一个文件夹下, 例如 d:\sources\sxs 2 以管理员运行命令提示符 cmd 3 输入以下命令後按 Enter dism /online /add-package /packagepath:

2017-07-15 15:39:12 14687

原创 图邻接矩阵的c语言实现 graph_adj_matrix.cpp

gra_adj_matrix.cpp 文件#include <iostream>#include <stdlib.h>#include <limits.h>using namespace std;#define Vertex_MAX 15#define Edge_MAX 15*(15-1)typedef int elemtype;//typedef float elemtype;i

2017-07-11 07:43:39 2982

原创 图邻接链表c语言实现 graph_adj_link.cpp

graph_adj_link.cpp 文件#include <iostream>#include <stdio.h>#include <stdlib.h>using namespace std;#define Vertex_MAX 50#define Edge_MAX 50*(50-1)int Vertex_n1 = 0;int Edge_n1 = 0;typedef int elem

2017-07-11 07:43:00 1487

原创 二叉树c语言实现 bittree.h 和 bittree.h

bittree.h 文件#ifndef _BIT_TREE_H_#define _BIT_TREE_H_#include <stdio.h>#include <stdlib.h>#include <string.h>//树的定义是递归定义的,节点下面又拆分为左子树和右子树//树是由节点组成,除了叶子节点,其他节点又是相对的根节点,//相对的根节点下有相对的左右子树//树的遍历的本质就是

2017-07-11 07:42:04 2363

原创 循环链表c语言实现 circlelinklist.h 和 circlelinklist.c

circlelinklist.h 文件#ifndef _CIRCLE_LINK_LIST_H_#define _CIRCLE_LINK_LIST_H_#include <stdio.h>#include <stdlib.h>#include <string.h>//循环链表//链表操作精髓在于操作关系节点,引入辅助指针pcurrent,pnext.从表头开始遍历各关系节点。//链表就是

2017-07-10 07:50:54 571

原创 双向链表c语言实现 doublelinklist.h 和 doublelinklist.c

doublelinklist.h 文件#ifndef _DOUBLE_LINK_LIST_H_#define _DOUBLE_LINK_LIST_H_#include <stdio.h>#include <stdlib.h>#include <string.h>//链表就是一个一个的表通过关系节点连接的//双向链表//链表操作精髓在于操作关系节点,引入辅助指针pcurrent,pnex

2017-07-10 07:50:29 1238

原创 单向链表装载用户自定义数据的c语言实现 linklistpackagenode.h 和 linklistpackagenode.c

linklistpackagenode.h 文件#ifndef _LINKLIST_PACKAGENODE_H_#define _LINKLIST_PACKAGENODE_H_#include <stdio.h>#include <stdlib.h>#include <string.h>//单向链表//链表操作精髓在于操作关系节点,引入辅助指针pcurrent,pnext.从表头开始遍历

2017-07-10 07:49:50 590

原创 链表的链性表的c语言实现方式 linklist.h 和 linklist.c

linklist.h 文件#ifndef _LINKLIST_H_#define _LINKLIST_H_#include <stdio.h>#include <stdlib.h>#include <string.h>//链表就是一个一个的表通过关系节点连接的//单向链表//链表操作精髓在于操作关系节点,引入辅助指针pcurrent,pnext.从表头开始遍历各关系节点。//让业务节点

2017-07-10 07:49:04 5002

原创 队列链性表c语言实现方式 linkqueue.h 和 linkqueue.c

.h 文件#ifndef _LINK_QUEUE_H_#define _LINK_QUEUE_H_#include <stdio.h>#include <stdlib.h>#include <string.h>typedef void Queue;typedef struct _tag_LinkQueueNode{ LinkListConnectedNode connected_n

2017-07-10 07:47:57 1398

原创 栈的链性表的c语言实现方式 linkstack.h 和 linkstack.c

.h 文件#ifndef _LINK_STACK_H_#define _LINK_STACK_H_#include <stdio.h>#include <stdlib.h>#include <string.h>//用线性表的链式存储模拟栈的链式存储,在头部插入删除元素不会涉及大量元素移动typedef void Stack;//把业务节点弄到底层,只需传入业务数据指针,在底层函数中//

2017-07-09 14:15:23 2549

原创 链表线性表的c语言实现方式 seqlist.h 和 seqlist.c

.h 文件#ifndef _SEQLIST_H_#define _SEQLIST_H_#include <stdio.h>#include <stdlib.h>#include <string.h>//线性表//线性表顺序存储 类似于数组,存的元素节点,只有业务节点,//业务节点之间没有关系,线性关系不是链性关系,可以[]操作typedef void List;typedef vo

2017-07-09 14:12:23 2398

原创 队列线性表的c语言实现方式 seqqueue.h 和 seqqueue.c

.h 文件#ifndef _SEQ_QUEUE_H_#define _SEQ_QUEUE_H_#include <stdio.h>#include <stdlib.h>#include <string.h>typedef void Queue;#ifndef bool#define bool int#define true 1#define false 0#endifQueue* S

2017-07-09 14:09:22 2083

原创 栈线性表的实现方式 seqstack.h 和 seqstack.c

.h 文件#ifndef _SEQ_STACK_H_#define _SEQ_STACK_H_#include <stdio.h>#include <stdlib.h>#include <string.h>//用线性表的顺序存储模拟栈的顺序存储,在尾部插入删除元素不会涉及大量元素移动typedef void Stack;#ifndef bool#define bool int#def

2017-07-09 14:05:37 2526

原创 Python学习03 — 从11Game 爬取dota竞技场 TOP 100 用户名

#import pandas as pdimport requestsclass DotaRank(): def __init__(self): self.url = 'http://score.5211game.com/Arena/request/handler.ashx' self.headers = {'User-Agent':'Mozilla

2017-07-08 14:41:37 516

原创 Python学习02 — 输入文件相对路径名,统计字母个数,不区分大小写

#输入文件相对路径名,统计字母个数,不区分大小写import os.pathdef main(): filename = input("Enter a filename:").strip() if os.path.isfile(filename): #判断是否为文件 print("File exists") infile = open(filen

2017-07-08 12:33:12 2245

原创 Python学习01 — 随机生成10个大写、小写字母、特殊字符

#利用chr()和大小写字母的ASCII实现枚举所有大小写字母#coding:utf-8#利用python生成一个随机10位的字符串import stringimport randomimport relist = [chr(i) for i in range(65,91)] + [chr(i) for i in range(97,123)] + [ str(i) for i in ra

2017-07-07 19:45:53 15904

转载 关于如何建立你的知识体系,看这篇就够了!(作者写的很有道理,特借来学习,值得看完)

摘要: 知识焦虑的第一个原因是没有学习方向但又觉得需要学习,结果是四处乱学,无效!第二个原因是在任何领域都是入门级,从未达到专业水平,因而无法产生价值,加剧了焦虑。拥有某个领域的知识体系是专业水平的一个体现, ...知识焦虑的第一个原因是没有学习方向但又觉得需要学习,结果是四处乱学,无效!第二个原因是在任何领域都是入门级,从未达到专业水平,因而无法产

2017-07-06 19:24:49 2138

转载 IA32中的5种caching type(也叫memory type)

大部分内容来至于IA32手册第三卷10.3 METHODS OF CACHING AVAILABLE英文部分是绝对正确的,因为是原文。中文部分是一些自己的总结与理解,凑活着看吧。 IA32现在一共有5种caching type(也叫memory type)Table 10-2. Memory Types and Their PropertiesMemor

2017-07-03 16:57:53 1603

原创 IA32处理器任务切换过程 学习总结

IA32处理器任务切换以下4中情况会使处理器跳转到其它任务: (1)当前的程序或任务执行JMP或CALL指令指向GDT中TSS描述符。 (2)当前的程序或任务执行JMP或CALL指令指向GDT或当前LDT中的任务门描述符。 (3)一个中断或异常指向IDT中的任务门描述符。 (4)当EFLAGS寄存器中NT标志置位时,当前任务执行IRET指令。当切换到新任务时,处理器完成以下操作: (1)从

2017-07-01 18:55:17 622

原创 描述符表(descriptor table) 学习总结

主要包括GDT LDT IDT 总结 描述符表(descriptor table) 描述符表主要包括GDT,LDT和IDT。保存描述符。 GDT(The global descriptor table)全局描述符表,每一个系统只能有一个,所有的程序和任务共享使用。GDT中第一个描述符不被使用,为空描述符。通过指令lgdt将GDT的入口地址加载到GDTR寄存器中。LDT(The local de

2017-07-01 17:48:22 4133

原创 段寄存器(segement register) 段选择符(segement selector) 段描述符(segement descriptor) 学习总结

段寄存器(segement register) 段选择符(segement selector) 段描述符(segement descriptor) 学习总结1 段寄存器 段寄存器包括CS,SS,DS,ES,FS,GS。结构如下图: 段寄存器包括可见部分和不可见部分。可见部分是段选择符字段,不可见部分包括基地址字段、界限字段和访问信息。段寄存器首先加载段选择符来填充可见部分,不可见部分的字段

2017-07-01 17:40:27 3482

原创 TSS(任务状态段) TSS描述符 任务寄存器(TR) 任务门描述符 学习总结

1 任务状态段(TSS) 任务状态段(Task-State Segment(TSS)),保存任务状态信息的系统段为任务状态段。图7-2描述32位CPU的TSS信息。TSS主要分为动态字段和静态字段。 在任务切换过程中当任务挂起时,处理器会更新动态字段,动态字段有:  (1)通用寄存器字段—任务切换之前,EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI寄存器状态。 

2017-07-01 17:26:01 10949

原创 CPL RPL DPL 一致代码段 非一致代码段 总结

访问不同的数据段和代码段会产生特权级检查。CPL—当前执行任务或程序的特权级,在CS和SS段寄存器的0、1位保存。正常情况下CPL与取指令的代码段特权级相同,当程序跳转到不同特权级的代码段时,CPL会随着改变。但是,处理器在访问不同特权级的一致代码段时,CPL不会改变。一致代码段可以被数值上大于等于其DPL的一致代码段访问。(一致代码段,CPL>=DPL(数值>=,相反地,特权

2017-07-01 16:14:31 669

原创 中断处理特权级转换

中断处理得特权级转换是通过门描述符(gate descriptor)和相关指令来完成的。一个门描述符就是一个系统类型的段描述符,一共有4个子类型:调用门描述符(call-gate descriptor),中断门描述符(interrupt-gate descriptor),陷阱门描述符(trap-gate descriptor)和任务门描述符(task-gate descriptor)。与中

2017-06-27 18:26:48 1630

原创 门描述符(gate descriptors)总结

在保护模式下,中断描述符表(IDT)中的每个表项由8个字节组成,其中的每个表项叫做一个门描述符(Gate Descriptor), “门”的含义是指当中断发生时必须先访问这些“门”,能够“开门”(即将要进行的处理需通过特权检查,符合设定的权限等约束)后,然后才能进入相应的处理程序。而门描述符则描述了“门”的属性(如特权级、段内偏移量等)。在IDT中,可以包含如下3种类型的系统段描述符:

2017-06-27 18:19:17 5472

转载 栈帧详解

一、 什么是栈帧?    什么是栈帧,相信很多从事C编程的童鞋还是没有搞明白,首先引用百度百科的经典解释:“栈帧也叫过程活动记录,是编译器用来实现过程/函数调用的一种数据结构。”。    实际上,可以简单理解为:栈帧就是存储在用户栈上的(当然内核栈同样适用)每一次函数调用涉及的相关信息的记录单元。也许这样感觉更复杂了,好吧,让我们从栈开始来理解什么是栈帧...二、

2017-06-27 17:10:25 1377

原创 编译后的程序是如何在操作系统(linux)中运行的,虚拟地址空间到实际物理内存的访问

Linux中,每个进程通过一个task_struct结构体描述,每个进程地址虚拟空间通过一个mm_struct描述,c语言中每个段空间通过vm_area_struct描述,关系如下,当执行一个程序时,linux创建一个进程,通过sys_exec()将该程序的内容(程序编译后产生的是虚拟地址空间)映射到进程的虚拟地址空间中而不是物理内存中,生成一组vm_area_st

2017-06-25 18:20:56 2885 1

原创 Linux 内核空间地址映射 高端内存 总结

内核空间映射到物理内存是从最低地址0x00000000开始,如下图所示假设内核地址空间的简单线性地址转换关系为:物理地址 =虚拟地址– 0xC0000000,内核虚拟地址空间对应的物理内存范围0x00000000~0x40000000,只有1G,显然不合理。内核地址空间划分3部分:ZONE_DMA(16M)、ZONE_NORMAL(16~896M)和ZO

2017-06-25 18:07:47 3492

原创 linux 进程调度类型 总结

进程按照调度类型可以分为:SCHED_FIFO:先进先出的实时进程,如果没有其它更高优先级的可运行实时进程,就可以一直使用cpu运行。对于这种进程,时间片长度是没有意义的。SCHED_RR:时间片轮转的实时进程,所具有相同优先级(且都是当前情况下优先级最高)的SCHED_RR以时间片轮转的方式公平使用cpu。SCHED_NORMAL:时间片轮转的普通进程,时间片

2017-06-25 17:59:52 2177

原创 Linux中硬链接和软链接的区别

硬链接:给一个文件副本同时建立两者之间的链接关系,修改其中一个,与其链接的文件同时被修改。软连接:符号链接,对源文件建立的类似于windows下的快捷方式,当删除源文件时,该链接无效;当删除该链接时,不影响源文件。具体关系模型如下:      从上图中可得:硬链接与源文件的inode一致,软链接不一致;对源文件删除,会导致软链接不可用,而硬链接不受影响;对源

2017-06-25 17:51:49 266

原创 Linux内核同步的方法 总结

Linux内核同步的方法 总结

2017-06-25 17:41:40 650

原创 程序编译后的结构和动态编译重定位,程序编译知识

程序编译知识:程序被编译后的结构模型如下,正文段(.text):由cpu执行的机器指令部分,通常正文段可共享、只读的;初始化数据段(.data):包含程序中需要赋初值得变量;非初始化数据段(.bss):存放不需要初始化的变量;栈(.stack):保存局部变量和函数每次调用需保存的信息,栈的空间向下增长;堆(.heap):动态分配内存,堆的空间向上增长。程序装入和重定位知

2017-06-25 17:29:43 689

原创 MBR 和 GPT分区的区别

Bios + MBR启动操作系统,系统支持的硬盘容量最大只有2TB,(MBR是为32位系统设计的,其硬盘寻址的扇区地址为32位,硬盘的每个扇区为512字节,故232 * 512Byte= 2TB )。系统可以采用UEFI(Unified ExtensibleFirmware Interface) + GPT(GUID Partition Table)方式使得操作系统硬盘支持到2TB以上

2017-06-25 17:20:59 460

原创 Linux操作系统启动过程

Intel 80x86系列的CPU可以分别在实时模式和保护模式下运行,最开始启动运行在16位实时模式。通过硬件逻辑设计上电瞬间使CS的值置为0xFFFF,IP置为0x0000,使得CS:IP指向0xFFFF0位置即BIOS代码区。BIOS完成自检工作,并在内存中建立中断向量表和中断服务程序。CPU会接收一个 int 0x19中断,通过中断向量表找到中断服务程序的入口地址,执

2017-06-25 17:09:27 291

原创 Urllib库在python2.x与3.x中的区别和联系

urllib库是python提供的一个用于操作URL的模块,在python2中有urllib和urllib2,在python3中urllib2合并到urllib中,区别和联系如下:

2017-06-25 15:48:05 1206

原创 ubutnu linux 下升级python版本,以2.x升级到3.x为例

ubutnu linux 下升级python版本,以2.x升级到3.x为例

2017-06-25 15:25:12 1970 5

isca2018.7z

International Symposium on Computer Architecture papers 收集2018年计算机体系结构顶级会议ISCA的论文

2019-05-11

isca2017.7z

International Symposium on Computer Architecture papers 收集2017年计算机体系结构顶级会议ISCA的论文

2019-05-11

isca2016.7z

International Symposium on Computer Architecture papers 收集2016年计算机体系结构顶级会议ISCA的论文

2019-05-11

isca2015.7z

International Symposium on Computer Architecture papers 收集2015年计算机体系结构顶级会议ISCA的论文

2019-05-11

isca2014.7z

International Symposium on Computer Architecture papers 收集2014年计算机体系结构顶级会议ISCA的论文

2019-05-11

isca2013.7z

International Symposium on Computer Architecture papers 收集2013年计算机体系结构顶级会议ISCA的论文

2019-05-11

Intel Virtualization Technology for Direct I/O

intel VT-d 技术官方文档。I/O虚拟化,有需要的同学可以下载下来学习。

2019-04-03

韦玮老师-精通python网络爬虫源代码

韦玮老师《精通python网络爬虫》源代码,资源还可以,适合自学。

2018-10-31

chronograf-1.6.2-windows

与influxdb数据库搭配,堪称完美。在windows下对influxdb进行web管理和数据可视化。

2018-10-30

influxdb-1.6.4_windows_amd64

当前最流行的时间序列数据库,windows版本,influxdb。科学上网,才下载下来,你懂得。数据库比较小,易学习和使用。童鞋们,抓紧时间用起来吧。

2018-10-29

AMD64 Architecture Programmer’s Manual Volume 1-3卷,AMD cpu 开发手册和规范

(1)AMD64 Architecture Programmer’s Manual Volume 1 Application Programming .pdf (2)AMD64 Architecture Programmer’s Manual Volume 2 System Programming .pdf (3) AMD64 Architecture Programmer’s Manual Volume 3 General-Purpose and System Instructions .pdf

2018-10-24

计算机体系结构-NUMA

Un-shared memory access.最新的X86 CPU体系结构。多核多线程,共享cache访问。

2017-11-05

microsoft-windows-netfx3-x86-package.cab

.Net Framework3.5 win10-x86

2017-07-15

microsoft-windows-netfx3-x64-package.cab

.Net Framework3.5 win10-x64

2017-07-15

Intel64 and IA-32 architectures software developer's manual.pdf

Intel64 and IA-32 architectures software developer's manual

2017-06-26

图解机器学习.pdf

机器学习

2017-06-26

计算机体系结构量化研究方法(第4版).pdf

计算机体系结构量化研究方法

2017-06-26

Understanding Network Hacks Attack and Defense with Python.pdf

pythion 网络安全 黑客技术

2017-06-07

python hack program

python hack 逆向工程 黑客

2017-06-07

Packet Artificial Intelligence with Python

Python 人工智能

2017-06-07

Learn Python The Hard Way(第三版).pdf

不一样的python 学习

2017-06-07

汇编语言+小甲鱼+课件+源码

汇编语言+小甲鱼+课件+源码

2016-08-15

锐捷Linux版

校园网锐捷客户端的同学们,linux版锐捷,亲测可用

2016-08-11

VS ClistCtrl 简单应用

ClistCtrl 中简单应用,并添加了选中其中一项,右击弹出删除菜单。删除之后,又插入到最后一行。

2015-08-17

EMD VS2008

在VS2008 下移植EMD ,里面有详细代码 ,详细内容请看我的博客,单击review ,选择要处理的原始数据,单击emd,生成处理后的数据。

2015-06-22

飞思卡尔电磁组程序

第九届飞思卡尔比赛电磁组,可以来下。初赛15秒,决赛30秒。未能进国赛,很是遗憾

2014-09-03

飞思卡尔 17秒程序

第八届飞思卡尔摄像头OV7620 程序,加上停车程序,就能进决赛

2013-07-24

三轴加速度传感器12864显示

MMA7455测加速度,12864显示,X,Y,Z轴方向加速度

2012-09-10

空空如也

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

TA关注的人

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