- 博客(20)
- 资源 (1)
- 收藏
- 关注
原创 实战02-selenium模拟QQ邮箱登录并批量爬取指定邮件的附件——体验版
实战02-selenium模拟QQ邮箱登录并批量爬取指定邮件的附件1.功能需求2.直接上代码3.数据作证4.掉坑经历1.功能需求诞生的背景:作为一个学委,尤其受疫情影响,同学发的一大堆邮件单个下载非常耗时,而且无聊。由此想到了用爬虫可以批量抓取,学了一天,果断四处找资源,终于可以解放收作业了(不过,还有待完善的地方,后面再贴出来)这个爬虫脚本实现的功能:首先模拟用户登录(通过账号、密码)...
2020-03-31 23:47:18 2621
原创 实战01-爬取“猫眼电影Top100”(参考“崔庆才老哥”教程)
实战01-爬取'猫眼电影Top100'1. 爬取的源代码2.一些经验1. 爬取的源代码import requestsfrom requests.exceptions import RequestExceptionimport reimport jsondef get_one_page(url): try: headers = { # 注意,这里要构造请求头部...
2020-03-30 22:00:09 1248 3
原创 16-内存管理篇(Part2: memory.c——mm的核心)
内存管理篇:Part2-memory.c0 写在前面1 页异常处理函数1.1 do_wp_page——写时复制实现1.1.0 do_wp_page函数的主要功能1.1.1 do_wp_page函数的流程图1.1.2 do_wp_page及其调用的函数代码与注释1.2 do_no_page缺页异常处理函数1.2.0 do_no_page函数的主要功能1.2.1 do_no_page函数的流程图1.2...
2020-03-28 20:58:23 346
原创 15-内存管理篇(Part1: 原理 + page.s + swap.c)
内存管理篇:part1-原理讲解0.0 内存管理(mm)目录下的文件及功能0.1 分页机制0.2 两个机制:写时复制机制 + 需求加载机制0.2.1 写时复制机制(Copy on write)0.2.2 需求加载机制(Load on demand)0.3 Linux中物理内存的管理和分配0.3.1 主内存区域示意图0.3.2 进程代码和数据在其逻辑地址空间的分布图1 page.s程序功能和代码注解...
2020-03-26 23:02:02 466
原创 14-main函数的初始化——内核主线
1.main程序主要功能1)利用前面setup设置的硬件参数确定主内存的开始地址、高速缓冲区末端地址等2)初始化工作,包括内存管理、块设备、字符设备和tty等的初始化3)move_to_user_mode()切换到任务0开始运行4)任务0 fork一个init进程(任务1)后,陷入不断执行pause的死循环中5)任务1执行init函数(1.execve创建进程2进行应用环境初始化 2.进...
2020-03-25 22:14:41 726
原创 13-阶段总结二:Bochs下调试bootsect.S、setup.S、head.s
调试bootsect.S setup.S head.s0. 编译、运行1. bootsect.S的调试(Intel汇编风格,16位)2. setup.S的调试(Intel汇编风格,16位)3. head.s的调试(AT&T汇编风格,32位)4. 小结0. 编译、运行1.如何用as86 ld86 及 gcc的as ld联合编译?编译bootsect.s : as86 -0 -a -o ...
2020-03-24 22:45:14 429
原创 12-调试bootsect.s的一个坑!
0 原本计划:前两天(2020-3-22),准备写一篇调试bootsect,setup,head三个程序的总结,但出师不利,调试bootsect 第一段代码(即移动本身到0x9000)就掉坑了,反复检查发现rep movw后0x9000竟然一片0x0000(就像我大脑 一片空白,一脸懵逼),折腾了2天,才解决!1 掉坑日志第一个坑:在BIOS加载引导程序bootsect到内存位置0x0...
2020-03-23 23:55:50 384
原创 01-复杂度分析与学习策略
2.为什么要学数据结构和算法?1.面试、编程角度1.1 通关大厂面试1.2 日常业务中不再CRUD,提高代码质量(有助于阅读框架源码、背后设计思想。更好处理日常业务需求)1.3 更高的要求、追求,高手之间比内功、细节2.个人角度2.1 不被行业淘汰,不再原地踏步2.2 对编程要有追求、不要满足现状2.3 训练大脑思维,对生活、事业都有裨益3. 如何学数据结构与算法?什么是数据...
2020-03-22 22:36:51 126
原创 11 阶段总结一:详解OS的引导启动过程(含Bochs模拟软件的使用)
0 前文总结前面10篇文章重点讲述了两个实例(一个引导程序boot.s的启动、两个任务A和B的轮流切换)、Linux0.12内核的boot目录下的bootsect.S/setup.S/head.s三个引导启动程序以及Linux内核体系结构和原理,最终将控制权交给了内核system模块的main程序(执行初始化工作)。摘要:这篇文章主要梳理自PC上电后如何加载内核到物理内存的一系列过程。...
2020-03-21 22:52:05 1867
原创 10-引导启动程序(Part3:head.s)
0 head.s程序的主要功能1)重置IDt、GDT表2)测试A20地址线是否开启,没有则死机3)检测PC是否含有数学协处理器芯片(80287、80387或其兼容芯片),并设置CR0相应位4)设置管理内存的分页处理机制(页目录表项、页表项设置)5)利用ret将预先放置堆栈中的/init/main程序的入口地址弹出,去运行main()程序head.s程序流程图如下1 head.s汇...
2020-03-20 20:42:02 182
原创 09-引导启动程序(Part2:setup.S)
0 setup.S功能简介1.利用BIOS中断将读取的机器系统数据放置0x90000开始的位置(覆盖掉了bootsect.S程序所在的地方),这些参数将被内核中相关程序使用2.将system模块(0x10000~0x8ffff)下移到内存绝对地址0x00000处3.加载中断描述符表寄存器和全局描述符表寄存器,并开启A20地址线4.重置两个中断控制芯片8259A,将硬件中断号重置为0x20~...
2020-03-19 21:17:10 245
原创 08-引导启动程序(Part1:bootsect.S)
#include <linux/config.h>.global begtext, begdata, begbss, endtext, enddata, endbss.textbegtext:.databegdata:.bssbegbss:.textSETUPSEG = 0x07c0SYSSIZE = DEF_SYSSIZE ! system模块的大小INITS...
2020-03-18 23:32:15 310
原创 07-Linux内核体系结构(重点)
07-Linux内核体系结构:重点1.1 整体式的单内核模式1.2 Linux内核系统体系结构1.3 Linux内核对内存的管理和使用1.4 中断机制1.5 Linux的系统调用1.6 系统时间和定时1.7 Linux进程空间1.8 Linux系统中堆栈的使用方法(重点)1.9 Linux0.12内核源代码的目录结构摘要:概述Linux内核体系的理论及主要功能函数1.1 整体式的单内核模式以...
2020-03-17 14:55:33 255
原创 06-分段分页机制、任务切换
0.概述: 分段分页机制属于内存管理,是两种不同的地址变换技术。 任务切换作为任务管理的核心,也是本文重点讲述的部分。 这两部分内容尽量以“图表”展示1.分段分页机制分段、分页机制是两种不同的地址变换机制。**分段机制**适应了程序中不同类型段和大小的逻辑分区,即段的大小是可变的。**分页机制**按固定页大小(通常4K)管理内存以支持“虚拟存储技术”(虚拟存储技术”:线性地址空间...
2020-03-16 22:54:23 191
原创 05-一个简单的多任务内核实例(part2:head.s)
# head.s 包含32位保护模式初始化设置代码、时钟中断代码、系统调用中断代码# 和两个任务的代码。在初始化完成后程序移动到任务0开始执行,并在时钟中断控制# 下进行任务0和1直接的切换操作LATCH = 11930 #定时器初始计算值,即每隔10ms发送一次中断请求SCRN_SEL = 0x18 #屏幕显示内存段选择符TSS0_SEL = 0x20 #任务0的TSS段选择...
2020-03-15 22:37:32 440 1
原创 一文搞定MySQL基本命令(更新中)
1.DDL1.1 数据库、表基本操作CREATE DATABASE DB_Test;USE DB_Test;SHOW TABLES;SHOW COLUMNS FROM <table_name>; # 等价于 DESC ts1;1.2 表操作—修改、删除、增加、创建# 创建CREATE TABLE ts1( id int PRIMARY KEY au...
2020-03-14 17:44:04 235
原创 04-一个简单的多任务内核实例(part1:boot.s)
! boot.s程序! 首先利用BIOS中断把内核代码(head代码)加载到内存0x10000处,然后移动到内存0处! 最后进入保护模式,并跳转到内存0(head代码)开始处继续运行...
2020-03-14 16:14:11 177
原创 03-C函数与汇编的相互调用
引个玉:按道理有四种组合:1.C函数之间的相互调用2.汇编例程的相互调用3.C函数调用汇编例程4.汇编例程调用C函数但这里,主讲1和4。因为2用四条指令即可完成:push pop call ret,而3则于4调用原理一样1.C函数调用机制exch.c源文件:void swap(int *a, int *b){ int c; c = *a, *a = *b;...
2020-03-13 19:58:51 262
原创 02-一个引导程序的框架——boot.s
准备知识:CPU上电后自动把CS设置为0xF000,段基地址为0xFFFF0000,段长度为64KB,而IP设置为0xFFF0故,CPU代码指针指向0xFFFFFFF0处,即ROM BIOS存放的位置,开始执行BIOS的硬件自检和初始化功能在执行完准备加载操作系统的引导程序到0x7c00处前,会检查引导程序是否有效,有效标志0xAA55.若有效,则跳转到0x7c00处开始执行引导程序...
2020-03-12 16:54:28 336
原创 01-Linux的诞生
抛个砖:谁促就了Linux系统的诞生?这个“谁”,就是五大支柱“UNIX、Minix、Internet、GNU、POSIX标准”下面主要讲解五大支柱。支柱一:UNIX系统Linus参考了M.J.Bach著的《UNIX操作系统设计》,Linus使用了该书的很多函数的算法(普及一点:UNIX是1969年由肯·汤普逊(Ken Thompson)因想在PDP-7计算机玩他非常喜欢的星际游...
2020-03-11 16:40:52 177
usb_1.1_2.0_3.0协议完整版.rar
2020-06-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人