Vitrual Memory In order to manage memory more efficiently and with fewer errors, modern systems provide an abstraction of main memory known as virtual memory (VM). Virtual memory is an elegant interaction of hardware exceptions, hardware ad-dress tra…
3.1 程序的机器级表示 发展历史 Intel,AMD,ARM 等企业各有又是,CPU 从 8 位发展到 16 位,再到 32 位,近几年发展到 64 位,当下的 CPU 体系被称为 x86-64 体系结构,主要是 Intel 和 AMD 两家的产品. IA32 处理器体系结构是 32 位芯片. CPU 的微观视图架构 当下的计算机大多是采用冯诺伊曼体系结构,计算机由存储器,运算器,控制器,输入设备,输出设备组成. IA32 的寄存器 通用寄存器的特殊用法 EAX:扩展累加寄存器.在乘法和除法指…
存储器层次系统 笔记,应该不是一个大而全的文件,笔记应该是提纲挈领,是对思想的汇总浓缩,如果追求详实的内容反而是丢了初心. 计算机是抽象的,它的设计者努力让计算机变得简单,在设计上高度抽象,而计算机的存储系统就是这样一个对用户透明的部分,程序员布恩那个直接操作内存的控制,但是可以通过理解内存的组织结构,运行特点编写对内存友好的程序,编写具有较好时间局部性,空间局部性的程序. 存储器是多样的,从高速缓存 Cache 到主存,再到磁盘,机械硬盘,固态硬盘,他们是各有特色,一般来说,越接近 CPU 的…
原文地址:https://billc.io/2019/04/csapp-bomblab/ 写在前面 CS:APP是这学期的一门硬核课程,应该是目前接触到最底层的课程了.学校的教学也是尝试着尽量和CMU同步,课件和习题都直接照搬原版.包括现在着手的第二个实验室Bomb Lab.这个lab很有意思,没有提供全部c语言代码,需要手动根据反汇编语言推测在每一个阶段需要输入的内容,输入正确就可以进入下一个阶段. 理论上每个人获取到的lab都是不一样的,但对于自学学生而言在官网http://csapp.cs…
刚刚完成注册博客,想写一篇随笔,方便以后自己回顾.如果恰好也能帮助到你,是我的荣幸. 这次随笔是记载我的计算机系统(CS:APP,Computer Systems:A Programer's Perspective)课程的一次实验 为了实现这15个函数,参考了(抄袭了- -)网上很多大佬的解答,但是过程中也有了自己的一些体会. 下面分享一下自己的理解,每个函数的实现都附有相应解释,有个别自己还不是很理解就没有写解释,见谅啊. 注:实验环境 ubuntu 12.04 每次修改bits.c时,都要m…
CS:APP:Lab3-ATTACK 0. 环境要求 关于环境已经在lab1里配置过了.lab1的连接如下 实验的下载地址如下 说明文档如下 http://csapp.cs.cmu.edu/3e/attacklab.pdf 这是实验的分数和一些简介下面就开始我们的实验吧 1. Part I: Code Injection Attacks 1.1 Level 1 对于第一个我们不需要注入新的代码.只需要重定向我们的程序就可 1 void test() 2 { 3 int val; 4 val =…
下的第一UBUNTU12.04下Y86模拟器的安装:(參考http://archive.cnblogs.com/a/1865627/ 作适当改动) 1.安装bison和flex词法分析工具 sudo apt-get install bison flex 2.下载sim解压.地址http://csapp.cs.cmu.edu/public/students.html Chapter 4: Processor Architecture Y86 tools and documentation Sour…
What every programmer should know about memory, Part 1(笔记) 每个程序员都应该了解的内存知识[第一部分] 2.商用硬件现状      现在硬件的组成对于pc机而言基本上都是一下的结构:       由2部分组成:南桥,北桥 CPU通过FSB(前端总线)连接到北桥芯片,北桥芯片主要包含内存控制器和其他一些组件,内存控制器决定了内存的类型,SDRAM,DRAM等都需要不同类型的内存控制器. 南桥芯片主要是通过多条不同的总线和设备通信,主要有PC…
4.52以后的题目中的代码大多是书上的,如需使用请联系 randy.bryant@cs.cmu.edu 更新:关于编译Y86-64中遇到的问题,可以参考一下CS:APP3e 深入理解计算机系统_3e Y86-64模拟器指南 流水线部分只写了偶数题号的,这几天太浮躁,落下了好多课... 4.45 A. 不正确,当REG为%rsp时,这样会压入%rsp - 8而非%rsp B. 对于 pushq REG: movq REG, -8(%rsp) subq $8, %rsp 4.46 A. 不正确,当R…
9.11 A. 00001001 111100 B. +----------------------------+ | Parameter Value | +----------------------------+ | VPN 0x09 | | TLB index 0x01 | | TLB tag 0x02 | | TLB hit? N | | Page fault? N | | PPN 0x17 | +----------------------------+ C. 010111 11110…
前言:以下内容均为学习慕课网高级实战课程的实践爬坑笔记. 项目github地址:https://github.com/66Web/ljq_vue_music,欢迎Star. 歌单及详情页 排行榜及详情页 一.歌单详情页开发 歌单详情页布局介绍及Vuex实现路由数据通讯 components->disc目录下:创建disc.vue router->index.js中:给Recommend添加二级子路由Disc { path: '/recommend', component: Recommend,…
前言:以下内容均为学习慕课网高级实战课程的实践爬坑笔记. 项目github地址:https://github.com/66Web/ljq_vue_music,欢迎Star. 播放模式切换 歌词滚动显示 一.播放器模式切换功能实现 按钮样式随模式改变而改变 动态绑定iconMode图标class: <i :class="iconMode"></i> import {playMode} from '@/common/js/config' iconMode(){ re…
前言:以下内容均为学习慕课网高级实战课程的实践爬坑笔记. 项目github地址:https://github.com/66Web/ljq_vue_music,欢迎Star. 歌曲列表 歌曲播放 一.子路由配置以及转场动画实现 components->singer-detail目录下:创建singer-detai.vue route->index.js中:引入并配置Singer子路由SingerDetail import SingerDetail from '@/components/singe…
前言:以下内容均为学习慕课网高级实战课程的实践爬坑笔记. 上一篇总结了项目概述.项目准备.页面骨架搭建.这一篇重点梳理推荐页面开发.项目github地址:https://github.com/66Web/ljq_vue_music,欢迎Star. 一.页面简介+轮播图数据分析 数据:从QQ音乐抓取的真实数据 轮播图 热门歌单推荐 二.JSONP原理介绍 一句话解释JSONP原理:动态生成一个JavaScript标签,其src由接口url.请求参数.callback函数名拼接而成:利用js标签没有…
来源公开课笔记!!! 1.黑盒测试 是否正确并如设计的一样正常运行.测试自动化回归测试 2.测试主要关注参数: CPU.内存.耗电量.流量.FRS(流畅度).同时关注APP安装耗时和启动耗时 3.适配兼容性 a.在不同品牌机型安装.拉起.点击和卸载是否正常 b.在不同操作系统安装.拉起.点击.卸载是否正常  实际过程中会遇到 A.在某个品牌某个系统,app安装不上 B.在某个品牌某个系统,app无法拉起 C.在某个品牌某个系统,app拉起后无响应或拉起后黑屏.花屏 D..在某个品牌某个系统,ap…
一.移动互联网产品在变化 UI=用户界面 用户的界面-从属关系-视觉传达与美化界面设计 用户与界面-交互关系-从视觉"看到"->执行交互 层级化与理性思维 层级化 层级化是一种管理模式,是集权与分权化的一种组织结构方式.层级化使app的功能组织结构简洁有条理,便于用户理解和使用. 如何进行层级化的管理,这需要我们使用理性的思维去对功能进行合理的分类与组合,并将它们合理地安排在不同的界面中.否则,不当的层级化管理也会破坏产品的整体设计. 理性思维分析四部曲 我们需要明确对于一个“功…
文/MikeZhangpy(简书作者)原文链接:http://www.jianshu.com/p/4ed3e5ed99c6著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 最近在做一个项目用到了原生App与H5交互,之前有做过简单的H5页面直接调用原生方法的例子,就是利用UIWebView中的代理方法 //webview每次加载之前都会调用这个方法,利用该代理方法截取JS的href来调用原生的方法 - (BOOL)webView:(UIWebView*)webView should…
1 前言 如果我们要做一个属于自己的App需要达到那些目标呢,今天就来介绍一下. 2 详述 2.1 关注用户及其需求 你的主要目标永远都是在设计方案之前先想好用户用例.有些开发人员喜欢编写用户故事来确认用户的各种需求都能实现. 2.2 遵循既定惯例 苹果公司的内置应用中有很多出色的行为,手势应用,跟着他们的脚步是一个很明智的做法. 2.3 保持一致性 人们会凭直观了解你的应用程序模式,所以请保证整个应用的外观和手感是一致的.如果你需要偏离前面两点,那么这一点尤其重要. 2.4 降低复杂度 设计一…
<深入理解计算机系统>第三章的bomb lab,拆弹实验:给出一个linux的可执行文件bomb,执行后文件要求分别进行6次输入,每一次输入错误都会导致炸弹爆炸,程序终止.需要通过反汇编来逆向关键代码,得出通关密钥. 相关实验材料可以在CMU的官网下载:http://csapp.cs.cmu.edu/3e/labs.html 目前的水平只能完成到1-3关,详细记录攻关过程. 1.正式开始前的分析 先执行一下bomb,随便输入一个字串123. 首先要做的是在炸弹爆炸前设置断点,看程序都做了什么事…
Disk Geometry: 磁盘的结构如图,每个面为surface,surface上的同心圆为track,track包含sector,不同的surface的同半径track构成cylinder.越外围的的track应该包含越多的sectors,这样用于分割sectors的spare space不至于太多而浪费. SSD: 传统的机械硬盘读写时需要旋转,而固态硬盘则不必如此故而得名.SSD是以flash memory为基础,由blocks组成,每个block又包含pages.一旦某个page的数…
8.9 关于并行的定义我之前写过一篇文章,参考: 并发与并行的区别 The differences between Concurrency and Parallel +----------------------------+ | Process pair Concurrent?| +----------------------------+ | AB N | | | | AC Y | | | | AD Y | | | | BC Y | | | | BD Y | | | | CD Y | +--…
第一章 APP用户界面基础 1.1 手机UI设计相关基本概念 1.1.1 什么是UI设计 UI(User's Interface)即用户界面,它不仅仅是美化界面,还需要研究用户,让界面变得更友好.简洁.舒适.易用.用户界面无处不在.它可以是登录界面,也可以是软件界面,手机.PC上都有: 1.1.2 手机UI与平面UI的不同 手机UI将范围基本锁定在手机的APP/客户端上.平面UI范围则非常广泛,包括了绝大部分的UI领域. 1.1.3 什么是APP/客户端 APP(application)指的是应…
第一章 概述 什么是移动产品? 移动产品是一个可以在移动设备上安装的App,或者一个可以在移动设备上访问的定制页面. 1.1 研发流程 互联网产品的研发过程主要涉及以下职位分工. 产品经理:负责产品方向或需求规划,需求可能来自于产品经理本人或者由其代理的第三方客户 项目经理:负责项目实施安排,资源.进度.变更.风险等 设计师:产出设计原型 开发:产出可运行的实际产品,也可细分为架构师.后台开发.web前端开发.Android开发.IOS开发 测试:质量把关,负责产品的功能.性能.稳定性的测试 运…
1 App后台入门 1.1 App后台的功能 (1)远程存储数据: (2)消息中转. 1.2 App后台架构 架构设计的流程 (1) 根据App的设计,梳理出App的业务流程: (2) 把每个业务流程可能会遇到的问题整理出来: (3) 根据整理出来的问题,探讨可行的技术解决方案: (4) 把所有的技术解决方案有机融合,就是一个App后台的初步架构. 架构设计的特点 (1) 架构是和业务紧密相关: (2) 架构的演变是由业务驱动: (3) 架构不是为了炫耀技术. 1.3 App和App后台的通信…
-------------------------------------------------------------------------------------------------- Author: YuManZI 2014/06/23  1.1-3.5 2014/06/24  3.6-3.8 2014/06/27  4.1 2014/06/28  4.2-4.5 -----------------------------------------------------------…
注:tiny.c csapp.c csapp.h等示例代码均可在Code Examples获取 11.6 A. 书上写的示例代码已经完成了大部分工作:doit函数中的printf("%s", buf);语句打印出了请求行:read_requesthdrs函数打印出了剩下的请求报头,但是要注意书上写的是: void read_requesthdrs(rio_t *rp) { char buf[MAXLINE]; Rio_readlineb(rp, buf, MAXLINE); while…
初始完成日期:2017.9.26 许可:除2.55对应代码外(如需使用请联系 randy.bryant@cs.cmu.edu),任何人可以自由的使用,修改,分发本文档的代码. 本机环境: (有一些需要在多种机器上测试的就没有试验) frank@under:~/tmp$ uname -a Linux under 4.10.0-35-generic #39~16.04.1-Ubuntu SMP Wed Sep 13 09:02:42 UTC 2017 x86_64 x86_64 x86_64 GNU…
前言:以下内容均为学习慕课网高级实战课程的实践爬坑笔记. 项目github地址:https://github.com/66Web/ljq_vue_music,欢迎Star. 歌曲列表 收藏歌曲 一.用户个人中心开发 基础功能开发 设置路由跳转 在components->user-center目录下:创建user-center.vue router->index.js中配置路由: { path: '/user', component: UserCenter } m-header.vue中通过&l…
前言:以下内容均为学习慕课网高级实战课程的实践爬坑笔记. 项目github地址:https://github.com/66Web/ljq_vue_music,欢迎Star. 当前歌曲播放列表 添加歌曲到队列 components->playlist目录下:创建playlist.vue -- 在play.vue中应用 一..歌曲列表组件显示和隐藏的控制 data中维护一个数据 showFlag: false 使用v-show判断showFlag控制显示隐藏 <div class="pl…
前言:以下内容均为学习慕课网高级实战课程的实践爬坑笔记. 项目github地址:https://github.com/66Web/ljq_vue_music,欢迎Star. 搜索歌手歌曲 搜索历史保存 一.搜索页面布局 search-Box组件开发 <div class="search-box"> <i class="icon-search"></i> <input class="box" v-model…