高等数学复习(4)
高等数学复习(4)——微分学的概念
导数导数反应了函数在某一时刻的瞬间变化率,几何意义上就是该点切线的斜率。
在某一处导数存在,也可以说在该点可导,如果直接给出导数值,也证明这一点可导。
概念计算$\frac{函数的增量}{自变量的增量}$的极限,当自变量增量趋于 0 的时候,趋于 0 可以在 0 的左边,也可以在右边,不同的位置分别叫它左导数和右导数。
在某点处导数存在 $\Leftrightarrow$ 该函数的左右导数都存在并且相等。
连续不一定可导。($y=|x|$ 在 $x=0$ 处连续但是不可导)
可导一定连续。
定义
增量形式:$f’(x_0)=\lim\limits _{\triangle x\to 0} \frac{\triangle y}{\triangle x}=\lim\limits _{\triangle x\to 0} \frac{f(x_0+\triangle x)-f(x_0)}{\triangle x}$
定义形式:$f’(x_0)=\lim\limits _{\triangle x\to x ...
高等数学复习(3)
高等数学复习(3)——数函极限与连续性。
函数的极限邻域以点 $x_0$ 为中心的任何开区间称为点 $x_0$ 的邻域,记作 $U(x_0)$
函数极限的定义同数列极限:
$f(x)-A$ 可以足够小,当 $x\to x_0$ 时。
函数极限性质
唯一性:如果极限存在,那么极限只有一个
局部有界性
局部保号性
洛必达法则超级好用的一个定理。
对于极限 $\lim\limits _{x\to a} \frac{f(x)}{g(x)}$ 如果,$f(a)\to 0$ 且 $g(a)\to 0$ 或者 $f(a)\to \infty$ 且 $g(a)\to \infty$。
那么$\lim\limits _{x\to a} \frac{f(x)}{g(x)}=\lim\limits _{x\to a} \frac{f’(x)}{g’(x)}$。
就是直接上面求导比下面求导,如果求导还是这样,那么还可以继续用洛必达。
泰勒公式就是把函数展开为多项式的形式。
这样能快速记住一些等价无穷小的替换。
比如当 $x\to 0$ 的时候,可以用以下的多项式替换:
$\sin x ...
高等数学复习(2)
写在前面:中间闭关了一星期没有学习,主要是因为期末考试,再加上有师傅结合我当前的情况给我提了一些建议,我觉得很棒,把考研的目标院校转为了,希望最后能成功上岸吧,今天接着更新高数的笔记。
高等数学复习(2)——数列极限。
数列极限定义需要记住一种语言的说明:
$\lim\limits_{n\to\infty} {x_n}=a\Leftrightarrow \forall \epsilon >0,\exists N \in N_+,当n>N时,恒有|x_n-a|<\epsilon$
直白点就是讲,如果给定任意一个够小的数 $\epsilon$,我只要确定有一个整数 $N$ 使得它之后的值全部趋近于 a 即可,即 $<\epsilon$。
性质
唯一性:极限存在即唯一。
有界:极限存在则有界
保号:极限存在则可以确定极限值的符号,只能保部分的数列,不能保所有的。(important)
夹逼准则简单来讲,就是数列放缩,如果能放大到其中一个数列,算出极限值,再缩小到一个数列算出极限值。如果极限值一样,那么这样也能间接算出数列的极限值。
单调有界准则单调 ...
计算机组成原理复习(2)
考研复习第 3,4 天
计算机组成原理相关内容的复习
原码,补码,反码,移码
移位,加减法,乘法运算
数据编码原码,补码,反码,移码原码字面意思,有符号时,最高位只表示负号
补码最高位权值为负,其它与原码一致。
反码在原码的基础上,若最高位为1,则对原码除符号位所有位取反
移码看成无符号然后-一个偏置值即可。
单符号与双符号单符号一般写的时候用小数点隔开,但是不表示小数点的含义,比如 0.0001 如果是原码表示正数的1,1.0001 如果是原码表示负数的1。在此基础上,还可以再做一个符号的扩展,用于判断溢出。若出现 01,则表示正溢,若出现 10,则表示负溢。
比如 00.1111 如果表示原码就是正数的15,11.1111 如果表示原码就是负数的15,而 10.0001 不能表示一个正确的数,因为它溢出了,同样 01.0001 也不行。但是在下面的乘法算法的时候,允许临时溢出。
移位运算主要是循环移位有一个带进位和不带进位的区别。带进位就是说,在挪出去的过程中要算上 CF 一起,如果不带进位,那么原本被丢弃的位进入 CF 和最高位或者最低位。
乘法和除法有这么几种算法, ...
CS:APP第十二章学习
开始学 CSAPP的第十二章
最后一章了,不知不觉这本书已经看完了!!
梗概并发有很多用处,比如在进行 IO 访问,服务访问的时候,如果不能合理利用并发,那么有很多时钟周期会被浪费掉。
最简单的并发方式是使用多进程,让内核进行调度的方法来并发。
基于进程的并发编程父进程接受客户端连接请求,然后 fork 一个子进程,让子进程处理主要服务逻辑。
而在父进程中,需要及时的关闭连接描述的副本,否则会因为内存泄漏导致系统崩溃。
基于进程的并发服务器因为服务器通常会运行很长的时间,这意味着操作系统不会帮助进程回收内存,我们需要做到以下几点:
包括一个 SIGCHLD 处理程序来回收僵死进程,因为 Linux 的信号是不排队的,所以说一次要处理完所有的子进程。
对于父进程,需要在 fork 之后马上 close 建立连接的描述符,对于子进程来说,也要关闭所有的文件描述符。
进程的优劣进程共享文件表,但是不共享用户地址空间(这既是优点也是缺点),不会发生内存覆盖的情况,但是也造成了通信困难。
为了通信,需要使用 IPC(进程间通信)机制。
基于 I/O 多路复用的并发编 ...
高等数学复习(1)
谨以此笔记,记录考研的学习
函数基本定义函数具有一对一,多对一的性质,但是不能是一对多,即:一个确定的 x 不能有多个 y 值与之对应。
反函数从图像上来看,把所有点交换 $x$ 与 $y$ 的坐标值即得到对应反函数曲线,并且反函数和原函数关于 $y=x$ 对称。
严格单调的函数一定有反函数。
$y=f(x)$ 与 $x=f^{-1}(y)$ 完全一致,只有在后面表达式中交换 $x$ 和 $y$ 才得到反函数,即 $y=f^{-1}(x)$。
有反函数的不一定是单调函数,也可以是分段函数。
复合函数就是把外面函数的自变量用一个函数去替代。
如:
$f(x)=x^2+x$,那么 $f(g(x))=(g(x))^2+g(x)$
复合函数求导需要先把 $g(x)$ 当成自变量先求一次导,再乘上 $g(x)$ 的导数。
有界性有界一定要指明区间。
若能找到一个数使得 $|f(x)|\le M$ 则有界。
或者说,若在区间内,某点的极限算出来是无穷大,那么无界,否则有界。
单调性通俗的讲,沿着 $x$ 增加的方向,$y$ 也 ...
CS:APP第十一章学习
开始学 CSAPP的第十一章
逐步更新:
2023-02-06:开始写
梗概这一章就是讲了网络编程的实用性,我们身边要用到的所有跟网络有关的服务都需要用到网络编程,包括了浏览 Web、发送 email 信息或是玩在线游戏,你就正在使用网络应用程序。
这一节综合了前面一些理论知识,最后会做出一个成品来,期待ing。
客户端/服务器编程模型客户端/服务器编程模型(Client/Server)是网络编程的基本模型,模型中的基本操作是事务(transaction)
一个客户端—服务器事务由以下四步组成:
当一个客户端需要服务时,它向服务器发送一个请求,发起一个事务。例如,当 Web 浏览器需要一个文件时,它就发送一个请求给 Web 服务器。
服务器收到请求后,解释它,并以适当的方式操作它的资源。例如,当 Web 服务器收到浏览器发出的请求后,它就读一个磁盘文件。
服务器给客户端发送一个响应,并等待下一个请求。例如,Web 服务器将文件发送回客户端。
客户端收到响应并处理它。例如,当 Web 浏览器收到来自服务器的一页后,就在屏幕上显示此页。
这里需 ...
CS:APP第十章学习
开始学 CSAPP的第十章
逐步更新:
2023-02-01:开始写
梗概这里介绍了我们学习 Unix IO 的一个原因。第一点就是帮助我们理解更深层次的系统概念,第二点就是在某些编程环境下,除了最底层的 IO 我们别无选择。
Unix IO在 Linux 当中,一切皆文件,所有的 IO 设备都以文件的形式挂载在文件系统当中,我们需要输入输出只需要简单的读写文件即可,这使得我们访问任何设别都可以以简单一致的方式去访问:
打开文件:通过 open 函数打开一个文件,内核会记录这个文件的所有信息,用户层会返回一个文件描述符,用户层要操作文件只需要对文件描述符操作即可。
Linux在创建进程的时候有默认的三个打开的问及那:标准输入(stdin),标准输出(stdout),标准错误(stderr)。
改变当前文件的位置:对于每个打开的文件,内核会记录文件所在的位置 k,初始为 0,通过 seek 操作我们可以改变这个值。
读写文件:读文件就是把文件中从 k 开始到 k+size 的文件内容复制到内存,写文件就是把文件中从 k 开始到 k + size 的文件内容用内存中的某些值替换。 ...
吾爱破解2023红包题
吾爱破解2023红包题,由于太菜了,Android 难题都不太会写。
本篇文章主要精力在于分析第五天的题。
第二天直接拿 ida 动调,输入对应长度的字符串观察变化,发现主要和一个 data 段上等待数据比较。
就直接照着它的式子去写就ok了。
1234567891011121314151617181920212223242526272829#include<iostream>#include<stdio.h>using namespace std;unsigned char s[] ={ 0x98, 0x01, 0x00, 0x00, 0xB0, 0x01, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0x9C, 0x01, 0x00, 0x00, 0xEC, 0x01, 0x00, 0x00, 0xD4, 0x00, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xBC, 0x01, 0x00, 0x00, 0x28, 0x01, 0 ...
西湖论剑 2023 预赛 writeup
西湖论剑 2023 预赛 writeup
WEBWeb1[nodejs|原型链污染|ejs|拆分攻击]
前言主要是node 8.12.0的一个http.get解析洞,通过拆分攻击实现的SSRF攻击
和ejs RCE+safeobj原型链污染(CVE-2021-25928)
查了下这种属于拆分攻击(HTTP Splitting),和请求走私(HTTP Smuggling)有点区别。
RCE这里一开始挺简单,有个safeobj包,一看safeobj.expand(),游戏结束。
拿着POC测试了下环境,通过。
12345var safeObj = require("safe-obj");var obj = {};console.log("Before : " + {}.polluted);safeObj.expand(obj, '__proto__.polluted', 'Yes! Its Polluted');console.log("Afte ...