0%

在 Linux 中,程序经过编译后会生成 object file,这个文件是没办法直接运行的,还需要经过 link 和 load 阶段。在 load 阶段会通过系统调用创建逻辑地址空间,读取 link 后的 elf 文件加载到内存里,并设置其运行的地址空间为对应的逻辑地址空间。CPU 运行加载在内存中的程序,读取指令,生成 逻辑地址 (或者叫做虚拟地址)。

段选择器和段寄存器

在 x86 中需要区分 3 种地址:

  • 逻辑地址:一个逻辑地址的内容表示一个操作数或者指令,逻辑地址本身由段选择符段内偏移量组成。比如下图的指令 4,表示为 [CS:EIP],即 CS 表示段选择符,EIP 表示段内偏移量
  • 线性地址:32bit 无符号数表达的连续地址
  • 物理地址:CPU 往内存地址上发送的信号所表达的内存单元地址

它们的关系如图所示:

Read more »

什么是在线广告

伴随着智能手机的普及,在线广告已经在我们的生活中无处不在了。当然,如果你仍然使用的是功能机的话,那么在线广告可能对你的影响不会那么大。当我们打开手机的上的应用,第一个画面往往就是一个在线广告。例如我刚刚打开了我的腾讯视频 APP,第一个画面是下面这个样子,显然是一个携程的广告:

Read more »

安装 Go

  1. 下载 Go 安装包,不同的系统下载对应的安装包。
  2. 直接运行对应的安装包
Read more »

接触计算广告其实很久了,但是真正在实践中去尝试,却是 2020 年开始的故事了。也从 2020 年开始,运气不错的站在了传统企业数字化转型的风口,当了一次会飞的猪。这一组 Blog 将会总结我在过去的几年中实际遇到的,可以落地的计算广告的场景、技术和方法,虽然可能没有一堆堆的论文和宣传软文那么高大上,但是这些是实实在在发生在我身边的故事。如果有人看到了能有所收获,我也算运气不错了。

我是一个非常讨厌广告的人,过去是,现在是,不出意外的话将来也是。

我的计算广告的故事应该要从 计算广告 开始。

leetcode 的第 9 题,考察简单数学。

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
Read more »

所谓理论

朴素贝叶斯基于一个定理,和一个假设。定理即贝叶斯定理,假设呢就是各个特征条件独立,这个假设也是朴素贝叶斯名字里含有“朴素”俩字的原因。回顾一下贝叶斯定理:

\[ \begin{split} & P(a|b)=\frac{P(b|a)P(a)}{P(b)} \\ & \text{subject to } P(b) \neq 0 \end{split} \]

Read more »

leetcode 的第 8 题,考察字符串和数学。

请你来实现一个 atoi 函数,使其能将字符串转换成整数。

首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。

当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。

该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响。

注意:假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时,则你的函数不需要进行转换。

在任何情况下,若函数不能进行有效的转换时,请返回 0。
Read more »

leetcode 的第 7 题,考察简单数学。

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
Read more »

leetcode 的第 6 题,考察数组的数组的遍历。

将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。

比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:
    
    L   C   I   R
    E T O E S I I G
    E   D   H   N
Read more »

leetcode 的第 5 题,考察数组的数组的遍历。

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
Read more »