- 博客(457)
- 资源 (1)
- 收藏
- 关注
转载 Transformer 里的 Q K V 是什么
Transformer 作为新 AI 时代的基石,有必要深入了解下。网上对 Transformer 的教学文章/视频非常多,很多讲得很好,像,以及。整个详细过程原理写不来,本文主要记录一下其中我觉得比较容易混淆的 Attention 模块运算过程,主要是里面的 Q K V 的概念/运算过程/作用。
2024-11-12 16:12:34
285
原创 configure.ac和Makefile.am的格式解析概述
Autotools是一系列工具autoscan可以通过调用autoscan命令,得到一个初始化的configure.scan文件。然后重命名为configure.ac后,在此基础上编辑configure.ac。autoscan会扫描源码,并生成一些通用的宏调用,输入的声明,以及输出的声明。尽管autoscan十分方便,但是没人能够在构建之前,就把源码完全写好。因此,autoscan通常用于初始化configure.ac,即生成configure.ac的雏形文件configure.scan。
2024-08-28 11:12:08
1067
转载 制作Yum源
如果我们要提供http服务的yum源,则还需要依赖于其他软件,这里我们以httpd为例。目录下会出现一个repodata目录,里面保存了yum源的数据。上面我们制作好了yum源,我们在本机上已经可以直接使用了。此时在其他的主机上,就可以使用这个yum源了。3.2.1 修改httpd的数据根目录与绑定端口(可选)下的rpm包有更新,则需要执行命令更新元数据。作为yum源的根目录,并把rpm包拷贝到。为本机IP,8050为提供服务的端口。httpd的数据根目录默认为。中修改如下两行,其中。
2024-04-25 16:09:08
312
转载 ZooKeeper 原理及其在 Hadoop 和 HBase 中的应用
ZooKeeper是一个开源的分布式协调服务,由雅虎创建,是GoogleChubby的开源实现。分布式应用程序可以基于ZooKeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。简介ZooKeeper是一个开源的分布式协调服务,由雅虎创建,是GoogleChubby的开源实现。分布式应用程序可以基于ZooKeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式..
2020-05-12 16:11:10
848
转载 Linux开机详细流程
计算机启动分为内核加载前、加载时和加载后3个大阶段,这3个大阶段又可以分为很多小阶段,本文将非常细化分析每一个重要的小阶段。内核加载前的阶段和操作系统无关,Linux或Windows在这部分的顺序是一样的。由于使用anaconda安装Linux时,默认的图形界面是不支持GPT分区的,即使是目前最新的CentOS 7.3也仍然不支持,所以在本文中主要介绍传统BIOS平台(MBR方式)的启动方式(...
2020-03-31 15:28:13
3112
转载 Linux 内存管理篇(2)内核初始化与内存管理启用
前言继内存寻址之后, 本篇开始介绍Linux内核地址空间初始化过程。通过内存寻址篇我们知道, Linux 系统运行过程中位于保护模式,系统必须要是用MMU来完成地址寻址, 这就依赖于段表跟页表。但是问题来了, 系统是如何将段表跟页表是如何装入的呢?本文通过 Linux 系统初始化过程,开始介绍内存管理的构建过程。BIOS 时代:当PC机加电的那一刻,主机开始获取操作指令,初...
2020-01-15 16:30:05
1012
转载 xen虚拟机的启动(引导)方式
xen虚拟机的启动(引导)方式有几种不同的方式来引导虚拟机,各有利弊。1.BIOS bootloader适用于全虚拟化,loader模拟了BIOS原文:Booting via the BIOS is available for hypervisors supporting full virtualization. In this case the BIOS has a boot ...
2020-01-13 16:06:16
1207
转载 libvirt 启动 qemu 的过程
1背景介绍gdb 调试多任务程序时会有些麻烦: fork 之后没法同时跟踪父进程和子进程,如果在子进程里设置了一个 breakpoint,那么子进程将会收到一个SIGTRAP信号并退出。gdb 手册里提到了一种小技巧,那就是在想要插入 breakpoint 的位置添加sleep()调用。但经过笔者试验,添加以下代码更加适合:static volatile int hol...
2019-05-16 10:05:16
4533
转载 TAP/TUN Vnet veth
TAP 设备与 VETH 设备TUN/TAP 设备是一种让用户态程序向内核协议栈注入数据的设备,一个工作在三层,一个工作在二层,使用较多的是 TAP 设备。VETH 设备出现较早,它的作用是反转通讯数据的方向,需要发送的数据会被转换成需要收到的数据重新送入内核网络层进行处理,从而间接的完成数据的注入。图 3 .TAP 设备和 VETH 设备工作过程 如图所示...
2019-05-15 13:34:02
1833
转载 Vmware 中Windows和虚拟机共享文件--VMware-tools补丁安装
结合之前搜到的一些讯息,大概可以判断出VMware Tools在Ubuntu下不稳定,一些功能会时不时自动失效,通过这个补丁来安装VMware Tools的话就能解决这些问题 现在就用这个补丁来安装VMware Tools吧!sudo apt-get install dkms linux-headers-$(uname -r) build-essential psmiscgit clone...
2019-04-17 10:27:36
1856
1
转载 IOMMU
在没有IOMMU的情况下,设备(指32bit或64bit设备,老的16bit的不提)的DMA操作可以访问整个物理地址空间,所以理论上设备可以向操作系统的代码段、数据段等内存区域做DMA,从而破坏整个系统。当然,通常来说不会有这样的设备。IOMMU的出现,可以实现地址空间上的隔离,使设备只能访问规定的内存区域。下面简要说一下intel的IOMMU怎么做到这点的: 目前PC架构最多有256PCI...
2019-01-23 15:47:48
11722
1
转载 从需求的角度去理解Linux系列:总线、设备和驱动
《从需求的角度去理解Linux系列:总线、设备和驱动》是一篇有关如何学习嵌入式Linux系统的方法论文章,也是从需求的角度去理解Linux系统软件的开篇。这是作者精心撰写的经验总结,希望嵌入式Linux的学习者仔细领会,多读几遍也无妨。一、软件、面向对象、软件框架软件是为了解决现实问题而产生的,面向对象的软件思维是解决普遍现实问题的一种有效的抽象方法,而软件框架指的是用面向对象的思维去解决...
2019-01-23 11:08:30
418
转载 linux使用vim浏览python源码
1.python tags生成脚本#! /usr/bin/env python# ptags## Create a tags file for Python programs, usable with vi.# Tagged are:# - functions (even inside other defs or classes)# - classes# - filename...
2019-01-16 16:34:04
899
转载 linux内核内存管理的三个阶段分析
----------------------------------------硬件:E500v2内核PowerPC ,linux版本:2.6.35----------------------------------------linux内核的内存管理分三个阶段。1. 启动---->bootmem初始化完成为第一阶段。此阶段只能使用memblock_reserve函数分配内存。 ...
2019-01-02 16:42:03
937
转载 VLAN原理详解
1.为什么需要VLAN1.1 什么是VLAN?VLAN(Virtual LAN),翻译成中文是“虚拟局域网”。LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络。VLAN所指的LAN特指使用路由器分割的网络——也就是广播域。在此让我们先复习一下广播域的概念。广播域,指的是广播帧(目标MAC地址全部为1)所能传递到的范围,亦即能够直接通信的范围。严格地说...
2018-12-27 11:14:07
889
转载 ext文件系统机制原理剖析
将磁盘进行分区,分区是将磁盘按柱面进行物理上的划分。划分好分区后还要进行格式化,然后再挂载才能使用(不考虑其他方法)。格式化分区的过程其实就是创建文件系统。文件系统的类型有很多种,如CentOS 5和CentOS 6上默认使用的ext2/ext3/ext4,CentOS 7上默认使用的xfs,windows上的NTFS,光盘类的文件系统ISO9660,MAC上的混合文件系统HFS,网络文件系统...
2018-12-07 09:50:45
483
原创 vim+cscope+nerdtree等
index.sh#!/bin/bash echo "delete cscope.files, cscope.out, tags" rm -f cscope.files cscope.out tags echo "create cscope.files" find `pwd` -name '*.h' -o -name '*.c' -o -name '*.S'> cscope.f...
2018-12-04 13:37:55
272
转载 Docker源码分析(一):Docker架构
1 背景1.1 Docker简介Docker是Docker公司开源的一个基于轻量级虚拟化技术的容器引擎项目,整个项目基于Go语言开发,并遵从Apache 2.0协议。目前,Docker可以在容器内部快速自动化部署应用,并可以通过内核虚拟化技术(namespaces及cgroups等)来提供容器的资源隔离与安全保障等。由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行...
2018-11-23 11:35:04
18546
转载 给开源编译器插入后门
说起 Ken Thompson,我们首先想到的是他发明的 UNIX 操作系统。他因此获得 1984 年的图灵奖。在图灵奖演讲上,Ken Thompson 提出了一个深刻的问题:看到了软件的源码,就意味着没有后门吗?编译器是否可能存在能自我复制的后门?KenThompson这篇发表在《ACM 通讯》上的论文只有短短三页,省略了很多细节。原理上有点像输出自身代码的 C 程序,但又比它难很多。我...
2018-11-20 15:26:24
2780
转载 VC维的来龙去脉(转)
目录:说说历史 Hoeffding不等式 Connection to Learning 学习可行的两个核心条件 Effective Number of Hypotheses Growth Function Break Point与Shatter VC Bound VC dimension 深度学习与VC维 小结 参考文献VC维在机器学习领域是一个很基础的概念,它给诸多机...
2018-11-15 16:07:06
324
转载 bootloader详解(转载)
一。bootloader介绍bootloader是硬件在加电开机后,除BIOS固化程序外最先运行的软件,负责载入真正的操作系统,可以理解为一个超小型的os。目前在Linux平台中主要有lilo、grub等,在Windows平台上主要有ntldr、bootmgr、grldr等。这里以grub-0.97为基础描述bootloader的启动过程。一般grub主要分为stage1和stage2两个...
2018-11-05 09:24:11
9517
转载 CPU的三种虚拟化机制
事实上,不同类型的虚拟化技术是从不同的地方开始引导虚拟机系统的:从模拟的 BIOS 开始引导的,支持 MBR、EFI、PXE 等启动方式,如 QEMU、VMWare; 从内核开始引导的,虚拟机镜像内不包含内核,如 KVM、Xen; 从 init 进程开始引导的,虚拟机是一个与主机共享内核的容器,会按照操作系统的引导过程启动各种系统服务,如 LXC、OpenVZ; 只运行一个特定的应用程序...
2018-11-02 13:47:08
39427
2
转载 区块链深入理解---BLOCKBENCH:A Framework for Analyzing Blockchains
论文发表在SIGMOD'2017 ,SIGMOD是数据库顶级会议。可见论文作者基本是数据库界的大牛,从论文中也可以看出这一点。这样也好,站在不同视角理解区块链。可能更开脑洞。本文的确是一篇分析私有(或许可型)区块链的难得好文。 下面是笔者在读这篇论文时做的一点笔记。 1、引言 区块链,也称分布式账本,本质上是系统互不信任的节点维护了一种只可附加的数据结构。(系统所有节点对存...
2018-10-29 18:54:41
1956
3
转载 qcow2文件分析
A qcow2 virtual disk contains an image header, a twolevel lookup table, a reference table, and data clusters, as shown in Figure 1. The image header resembles the superblock of a file system, which co...
2018-10-29 14:39:27
5002
1
转载 qemu-kvm分析
虚拟机运行概览首先直观的了解一下利用QEMU运行客户虚拟机的流程。在命令行中运行QEMU的系统模式的可执行文件,参数声明虚拟CPU的个数,内存大小,指定已经安装好的硬盘镜像,启动QEMU虚拟机主窗口。启动命令格式举例:qemu-system-x86_64 --enable-kvm -cpu host \ -smp cores=4,threads=2,sockets=4 \-m 16...
2018-10-24 13:54:47
1418
转载 虚拟化原理
1.1 虚拟化什么是虚拟化?按一般的感觉,虚拟化就是在一台物理机器上,可同时运行多个操作系统,而这些操作系统彼此之间不能感知。本质上说,虚拟化是通过空间上的分割,时间上的分时和模拟,将物理机上面的一份资源抽象成多份。虚拟机(Virtual Machine)是由虚拟化层提供的独立的虚拟计算机系统,每个虚拟机都拥有自己的虚拟硬件(CPU,内存,IO设备)。通过虚拟化层的模拟,虚拟机在上层软件看来,就...
2018-10-23 14:27:50
2284
转载 OpenStack架构分析
1、总体架构下图是OpenStack各Services之间的相互关系。Nova:管理VM的生命周期Neutron:为其它组件提供网络连接服务,负责创建和管理L2、L3网络。Glance:管理VM镜像Cinder:提供块存储服务Keystone:为其它组件提供认证和权限管理服务Ceilometer:提供监控告警和计量计费服务Horizon:为用户提供一个基于Web的自...
2018-10-15 15:11:25
528
转载 一段C语言和汇编的对应分析,揭示函数调用的本质
本文作者周平,原创作品转载请注明出处首先对会涉及到的一些CPU寄存器和汇编的基础知识罗列一下: 16位、32位、64位的CPU寄存器名称有所不同,比如指令地址寄存器ip,在16位中叫ip,32位中叫eip,64位叫rip 32位的汇编指令通常以l结尾,比如movl相当于mov的含义 ebp : 堆栈基地址 寄存器,这个寄存器保存的是当前执行绪的栈底地址 esp ...
2018-09-30 13:32:19
440
转载 深入理解 x86/x64 的中断体系--IVT VS IDT
实模式下的中断机制 中断向量表(IVT) 改变中断向量表地址 设置自己的中断服务例程 保护模式下的中断机制 查找 interrupt handler 入口 IDT 表中 descriptor 类型的检查 使用 16-bit gate descriptor IDT 表的 limit 检查 请求访问 interrupt handler 时的权限检查 gate 的权...
2018-09-26 16:13:34
3149
转载 TinyVMI: Porting LibVMI to Mini-OS
This blog post comes from Lele Ma, a Ph.D. student at William and Mary. He was recently a Google Summer of Code Intern working on the Honeynet Project. IntroductionThis post introduces the project...
2018-09-15 07:00:36
424
转载 QEMU和KVM 中断处理过程
本文讲述一个网络数据包从到达物理网卡,一直到中断注入给VM的整个过程。为了讲述清晰,假设宿主物理机有两个物理CPU,分别为CPU0和CPU1。假设GuestOS运行在CPU1上,物理网卡接到数据包后把中断请求发送到CPU0.1.网络数据包Package到达物理网卡NIC, NIC收到数据包后,向CPU0发送中断请求,通知CPU0有网络数据包到达。2.CPU0收到中断请求后,调用中断...
2018-09-13 15:47:52
1450
转载 KVM 实现机制---(很經典)
1. 概述1.1. KVM简介KVM是一个基于Linux内核的虚拟机,它属于完全虚拟化范畴,从Linux-2.6.20开始被包含在Linux内核中。KVM基于x86硬件虚拟化技术,它的运行要求Intel VT-x或AMD SVM的支持。一般认为,虚拟机监控的实现模型有两类:监控模型(Hypervisor)和宿主机模型(Host-based)。由于监控模型需要进行处理器调度,...
2018-09-11 16:29:47
1033
转载 使用QEMU创建虚拟机
解决办法: 执行:yum upgrade device-mapper-libsyum -y install avahi/etc/init.d/messagebus restart/etc/init.d/avahi-daemon restart/etc/init.d/libvirtd restartQEMU是一款高效而实用的模拟器及虚拟机监管器,本系列博客试图从最基本的安装使用...
2018-07-25 16:10:28
14463
原创 補丁文件patch制作流程
制作補丁文件需要借助git和diff工具1.先對原始文件執行初始化操作,即分別執行以下操作git init;其原理是對比兩個提交點:2.對於第一個提交點執行以下命令:git add . git commit -m "first_commit"3.開闢第二個分支點git branch fix_point之後編輯即可4.對於第二個提交點執行以下命令:gi...
2018-07-24 15:53:52
618
转载 Linux内核初始化阶段内存管理的几种阶段
本系列旨在讲述从引导到完全建立内存管理体系过程中,内核对内存管理所经历的几种状态.阅读本系列前,建议先阅读memblock的相关文章.一些讲在前面的话在很久很久以前,linux内核还是支持直接从磁盘直接启动,也就是内核镜像自带了一个可以引导的MBR,按照套路计算机上电以后BIOS会将MBR加载到0000:7c00处执行.后来时过境迁,linux内核必须通过grub这些东西来引导了.本文的故事就从g...
2018-07-09 15:35:33
3339
转载 临时内核页表的建立过程
Motivation:当内核被解压到线性地址0x100000后,为了继续启动内核,即启动内核的第一个swapper进程,内核需要建立一张临时页表供其使用。当内核从16位的实模式进入保护模式(通过在汇编代码中的setup函数中设置linux的cr0寄存器的PE位),内核要创建一个有限的地址空间,容纳内核的代码段、数据段、初始页表和用于存放动态数据结构的128KB大小的空间。程序设计者假定,内核使用的...
2018-07-09 14:41:05
1139
转载 virtio后端驱动详解
virtIO是一种半虚拟化驱动,广泛用于在XEN平台和KVM虚拟化平台,用于提高客户机IO的效率,事实证明,virtIO极大的提高了VM IO 效率,配备virtIO前后端驱动的情况下,客户机IO效率基本达到和宿主机一样的水平。咱们本次的分析以qemu-kvm架构的虚拟化平台为基础,分析virtIO前后端驱动。当然后端就指有qemu实现的虚拟PCI设备,而前端自然就是客户操作系统中的virtIO驱...
2018-07-04 16:36:08
7522
原创 qemu-kvm 安装
[felix@centos65 ~]$ wget http://wiki.qemu-project.org/download/qemu-2.3.1.tar.bz2[felix@centos65 ~]$ tar xjvf qemu-2.3.1.tar.bz2[felix@centos65 ~]$ cd qemu-2.3.1[felix@centos65 qemu-2.3.1]$ sudo yu...
2018-04-18 15:57:16
1517
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人