●第一章 C是系统级编程的首选.C++显示支持抽象,属于应用级程序设计语言. 简单例子: 一个典型系统的硬件组成: 存储器的层次结构: 注:存储器层次结构的设计思想是,该层存储器作为下一层存储器的高速缓存 总结:计算机系统的一个重大主题就是提供不同层次的抽象表示,来隐藏实际实现的复杂性.  操作系统内核是应用程序和硬件之间的媒介.提供3个基本的抽象: (1)文件是对I/O设备的抽象 (2)虚拟存储器是对主存和磁盘的抽象 (3)进程是对处理器,I/O设备和主存的抽象. 虚拟机是对整个计算机(操作系…
理解python一切皆对象: 1.所有的类都是由type创建的 2.所有的类的基类都是object 3.type是类,也是实例,type的基类是object,type对象是由type创建的 4.object对象是由type创建的…
转自:http://www.cnblogs.com/likeyiyy/p/3837272.html 我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0xC0000000:这是内核地址空间的地址转换关系. 这句话瞬间让我惊呆了,根据我的CPU的知识,开启分页之后,任何寻址都要经过mmu的转换,也就是一个二级查表的过程(386) 难道内核很特殊,当mmu看到某个逻辑地址是内核传来的之后,就不查表了,直接减去0xC0000000,然后就传递给内存控制器…
我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0xC0000000:这是内核地址空间的地址转换关系. 这句话瞬间让我惊呆了,根据我的CPU的知识,开启分页之后,任何寻址都要经过mmu的转换,也就是一个二级查表的过程(386) 难道内核很特殊,当mmu看到某个逻辑地址是内核传来的之后,就不查表了,直接减去0xC0000000,然后就传递给内存控制器了??? 我发现网上也有人和我问了同样的问题,看这个问题 这句话太让人费解了,让人费解到以至于要怀疑…
1.在.NET Framework中,字符总是表示成16位unicode代码值(关于unicode.utf8等可以到http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html中查看). 2.在字符编码术语中,码位或编码位置,即英文的code point或code position,是组成码空间(或代码页)的数值.例如,ASCII码包含128个码位. 3.System.String代表一个不可变的(immutable)顺序…
原文地址:http://blog.csdn.net/hanekawa/article/details/51972259 第二章 Java内存区域与内存溢出异常 一,运行时数据区域: 1.        程序计数器:当前线程所执行的字节码的行号指示器,字节码解释器工作时就是通过改变这个计数器的值来选取下一跳需要执行的字节码指令.如果执行的是native方法,这个计数器的值则为空. 2.        Java虚拟机栈 线程私有,生命周期与线程相同.描述的是java方法执行的内存模型:每个方法在执行…
第二章 信息存储 (1)  多数计算机以一个字节作为最小可寻址的存储器单元. 机器级程序将存储器看成一个非常大的字节数组,称为虚拟存储器. 存储器的每个字节都由唯一的数字标识,称为它的地址. 所有可能地址的集合称为虚拟地址空间.        扩充:C语言中一个指针的值,无论它是指向一个整数,一个结构或是某个其他程序的对象,都是指针指向的存储块的第一个字节的虚拟地址.        C编译器还将每个指针和类型信息联系起来,这样就可以根据指针值的类型,生成不同的机器级代码来访问存储在指针指向位置的…
当用户登录终端的时候,通常会启动一个默认的交互式shell.系统究竟启动哪个shell,这取决于用户配置.一般这个shell都是/bin/shell.默认的系统shell(/bin/sh)用于系统shell脚本,如那些在系统启动时运行的脚本. 用于登录某个虚拟控制器终端或在GUI中运行终端仿真器时所启动的默认的交互shell,是一个父shell.在CLI提示符后输入/bin/bash命令或其他等效的bash命令时,会创建一个新的shell程序.这个shell程序被称为子shell. 使用$ps…
代码片段如下: package com.gosaint.shiro; import java.util.ArrayList; import java.util.List; public class HeadOOM { static class OOMObject{ } public static void main(String[] args) { List<OOMObject> list=new ArrayList<OOMObject>(); while(true){ list.…
#include <io.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> void reverse(char s[]) { int c,i,j; for(i = 0,j = strlen(s) - 1;i < j;i++,j--) c = s[i],s[i] = s[j],s[j] = c; } void itoa(int n,c…
#include <io.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> void reverse(char s[]) { int c,i,j; for(i = 0,j = strlen(s) - 1;i < j;i++,j--) c = s[i],s[i] = s[j],s[j] = c; } void itoa(int n,c…
Java堆OOM(Out-Of-Memory)异常 执行例如以下程序,爆出异常 java.lang.OutOfMemoryError: Java heap space /** * VM Args:-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError * @author zzm */ public class HeapOOM { static class OOMObject { } public static void main(String[] args…
先上一段代码和关系图 function Person(){} Person.prototype.name = "Nic" Person.prototype.age = 22 Person.prototype.job= "Software Engineer" Person.prototype.sayName = function(){ alert(this.name) } var person1 = new Person(); var person2 = new Pe…
前言 前段时间整理了ES6的读书笔记:<ES6读书笔记(一)>,<ES6读书笔记(二)>,现在为第三篇,本篇内容包括: 一.Promise 二.Iterator和for of循环 三.Generator 四.async 本文笔记也主要是根据阮一峰老师的<ECMAScript 6 入门>和平时的理解进行整理的,希望对你有所帮助,喜欢的就点个赞吧! 一.Promise 1. 执行顺序 let promise = new Promise(function(resolve, r…
前言 前段时间整理了ES6的读书笔记:<ES6读书笔记(一)>,现在为第二篇,本篇内容包括: 一.数组扩展 二.对象扩展 三.函数扩展 四.Set和Map数据结构 五.Reflect 本文笔记也主要是根据阮一峰老师的<ECMAScript 6 入门>和平时的理解进行整理的,希望对你有所帮助,喜欢的就点个赞吧! 一.数组扩展 1. 扩展运算符 ①复制数组: const a1 = [1, 2]; // 写法一 const a2 = [...a1]; // 写法二 const [...a…
<Redis设计与实现>读书笔记 很喜欢这本书的创作过程,以开源的方式,托管到Git上进行创作: 作者通读了Redis源码,并分享了详细的带注释的源码,让学习Redis的朋友轻松不少: 阅读优秀的源码作品能快速的提升编码内功,而像Redis这样代码量不大(2万多行)却句句精致的作品,当然不能错过: 有兴趣的朋友当好好享用: 源码:https://github.com/huangz1990/annotated_redis_source 以下是这本书重点环节的读书笔记: Redis的内部字符串实现…
文章目录 第一章 块级绑定 1. var 声明与变量提升 2. let 与 var 的区别 第二章 字符串与正则表达式 1.字符串扩展 1.1 includes().startsWith() .endsWith() 方法 1.2 repeat() 方法 1.3 padStart(),padEnd()方法 2.正则表达式扩展 2.1 正则表达式 y 标志 2.2 复制正则表达式 2.3 flags属性 3.模板字符串 第三章 函数 1.带参数默认值的函数 2.使用不具名参数 2.1 剩余参数 3.…
前言 前段时间整理了ES5的读书笔记:<你可能遗漏的JS知识点(一)>.<你可能遗漏的JS知识点(二)>,现在轮到ES6了,总共分为四篇,以便于知识点的梳理和查看,本篇内容包括: 一.let和const 二.解构赋值 三.字符串扩展 四.数值扩展 五.正则扩展 六.Symbol 本文笔记也主要是根据阮一峰老师的<ECMAScript 6 入门>和平时的理解进行整理的,希望对你有所帮助,喜欢的就点个赞吧! 一.let和const 1.1 let 1.声明变量的方法有6种:…
因为偶然的机会,在图书馆看到<深入理解C++ 11:C++11新特性解析和应用>这本书,大致扫下,受益匪浅,就果断借出来,对于其中的部分内容进行详读并亲自编程测试相关代码,也就有了整理写出这篇读书笔记的基础.C++作为踏入编程的最初语言,一直充满感情,而C++11作为新标准虽然推出一段时间了,却因为总总原因直到现在才去开始真正了解,不过一句话回荡在脑中:当你认为为时已晚的时候,恰恰是最早的时候!从C++98到C++11, C++11标准经历了10几年的沉淀,以全新的姿态迎接新的挑战,长话短说,…
一.bootstrap框架简介 Bootstrap是最流行的前端开发框架. 什么是框架:开发过程的半成品. bootstrap具有以下重要特性: (1)完整的CSS样式插件 (2)丰富的预定义样式表 (3)基于jQuery的插件集 (4)灵活的栅格系统 以下将简单介绍对bootstrap可能用到的知识进行梳理.   二.新手入门 笔者使用版本是3.3.x 在bootstrap中文官网可以找到以下界面     本书采用预编译的版本进行学习 三. 文件结构 生产环境使用bootstrap.min.c…
<深入理解计算机系统>Chapter 7 读书笔记 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(货被拷贝)到存储器并执行. 链接的时机 编译时,也就是在源代码被翻译成机器代码时 加载时,也就是在程序被加载器加载到存储器并执行时 运行时,由应用程序执行 链接器使分离编译称为可能. 一.编译器驱动程序 大部分编译系统提供编译驱动程序:代表用户在需要时调用语言预处理器.编译器.汇编器和链接器. 1.将示例程序从ASCⅡ码源文件翻译成可执行目标文件的步骤 ()运行…
前言 项目里用到了redis数据结构,不想只是简单的调用api,这里对我的读书笔记做一下记录.原文地址: http://www.redisbook.com/en/latest/internal-datastruct/sds.html 数据类型定义 与sds实现有关的数据类型有两个,一个是 sds: // 字符串类型的别名 typedef char *sds; 另一个是 sdshdr: // 持有sds的结构 struct sdshdr { // buf中已经被使用的字符串空间数量 int len…
1. 在 Analysis Service 分析服务中,Cube (多维数据集) 是以一个多维数据空间来呈现的.在Cube 中,每一个纬度的属性层次结构都形成了一个轴.沿着这个轴,在属性层次结构上的每一个成员包括 “ALL” 成员都在轴上占了一个点. 2. 包含度量值的纬度叫做事实纬度或者度量纬度,度量属性层次结构和其它属性层次结构的区别就是度量属性层次结构没有 ALL 这个成员. 3. 成员的引用 – 引用属性层次结构中的成员有很多方式,但基本的成员引用可以通过与它相关联的纬度和属性层次结构来…
第七章读书笔记 链接 链接:将各种代码和数据部分收集起来并组合成为一个单一文件的过程.(这个文件可被加载或拷贝到存储器并执行) 链接可以执行于编译,加载或运行时. 静态链接: 两个主要任务: 1 符号解析:将目标文件中的每个全局符号都绑定到一个唯一的定义 2 重定位:确定每个符号的最终存储器地址,并修改对那些目标的引用 符号表: typedef struct{ int name; //字符串表中的字节偏移,指向符号的以NULL结尾的名字 int value; //符号的地址,对于可重定位的模块是…
接上篇<深入理解Android2>读书笔记(二) PackageManagerService PackageManagerService负责系统中Package的管理,应用程序的安装.卸载.信息查询等. 1.IPackageManager接口类中定义了服务端和客户端通信的业务函数,还定义了内部类Stub,该类从Binder派生并实现了IPackageManager接口. 2.PackageManagerService继承自IPackageManager.Stub类,由于Stub类从Binder…
本内容由<深入理解java虚拟机>的部分读书笔记整理而成,本读者计划连载. 通过如下图和文字介绍来了解几个运行时数据区的概念. 方法区:它是各个线程共享的区域,用于内存已被VM加载的类信息.常量.静态变量.即时编译器编译的代码等数据.JVM规范对这个区域的限制很宽松,如同堆一样不需要连续的内存.可选择固定大小.可扩展的大小外,还可以选择不实现垃圾收集.因为在些区域的垃圾收集必要性不高且效果较差.如果回收也是常量池的回收和类型的卸载,但此操作异常困难.当方法区无法满足内存的分配时,抛OutOfM…
最近在看深入了解java虚拟机第一版(周志明著),特此写读书笔记,整理其中重要的东西和自己的理解. ”java与c++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出去” 这堵墙所说就是虚拟机,书中也提到了为什么要学习虚拟机: 对于Java程序员来说,在虚拟机的自动内存管理机制的帮助下,不在需要为每一个new的操作去写配对的delete/free代码而且不容易出现内存泄漏和内存溢出的问题,但是由于内存控制的权力全在交给了虚拟机,所以一旦出现内存泄漏和溢出方面…
<C#从现象到本质>读书笔记(五)第5章字符串 字符串是引用类型,但如果在某方法中,将字符串传入另一方法,在另一方法内部修改,执行完之后,字符串的只并不会改变,而引用类型无论是按值传递还是引用传递,值都会发生变化. 字符串的==操作符被重写为比较字符串的值而不是其引用. 当使用代码将字符串变量等于一个新的值时,堆上会出现一个新的字符串,然后,栈上的变量指向该新字符串.没有任何办法更改原来字符串的值.由于字符串所有非私有的属性和字段都是只读或常量,也没有任何办法修改字符数组的值,字符串的值也就不…
深入理解Java虚拟机 -- 读书笔记:JVM运行时数据区域 本文转载:http://blog.csdn.net/jubincn/article/details/8607790 本系列为<深入理解Java虚拟机 >(周志明著)读书笔记. Java程序员一般都知道JVM中存在栈和堆的,并简单了解对象是在堆上分配的,这点从C/C++转过Java的程序员很容易想到.但Java由于其自身的特性,还有一些其他的内存区域,如下图所示: 程序计数器 程序计数器占用的内存空间不大,里面记录了各线程当前字节码的…
接上篇<深入理解Android2>读书笔记(三) ActivityManagerService(AMS) 1.AMS由ActivityManagerNative(AMN)类派生,并实现Watchdog.Monitor和BatteryStatsImpl.BatteryCallback接口.而AMN由Binder派生,实现了IActivityManager接口. 2.客户端使用ActivityManager类.由于AMS是系统核心服务,很多API不能开放供客户端使用,因此设计者没有让Activit…