程序员必须掌握的600个英语单词

application 应用程式 应用、应用程序application framework 应用程式框架、应用框架 应用程序框架architecture 架构、系统架构 体系结构argument 引数(传给函式的值)。叁见 parameter 叁数、实质叁数、实叁、自变量array 阵列 数组arrow operator arrow(箭头)运算子 箭头操作符assembly 装配件assembly
阅读本文

基于 CSP 的设计思想和 OOP 设计思想的异同

LinkerLin 下面,我们来看一个例子,如果我们有一个项目,需要做一个TCP连接中继器(请原谅我的用词)。我们先按照OOP来设计下:系统的结构:需要有一个客户端和一个服务器端。分两个进程分别跑在不同机器上。系统对象关系拆分(这里有所简化,E-R图等省略):连接中继器类--系统的主类、config类--描述配置的类、connection类--每个连接一个conn类的实例、pipe类--提供一个管
阅读本文

C语言函数入参和返回值是结构体时的汇编分析

在C语言程序中,一般不会直接传一个结构体给一个函数,也不会让函数的返回值直接返回一个结构体,这样会拷贝过多影响效率。但是这样也是合法的,有时候也会使用,并且有时候效率也并不会变得太差。 C函数传参:参数少或者传入的结构体小只借助寄存器即可,否则借助栈。 C函数返回值:如果返回一个比较小的结构体,借助寄存器即可,否则依旧借助栈。按调用约定,当返回值是较大的结构体时,会在caller栈里产生一个临时
阅读本文

mysql 数据引擎

Mysql中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型),MySql默认配置了许多不同的存储引擎,可以预先设置或者在MySql服务器中启
阅读本文

《Java并发编程的艺术》笔记二——Java并发机制的底层实现原理.md

0.Java代码执行过程 Java代码在编译之后会变成Java字节码,Java字节码被类加载器加载到JVM中,JVM执行字节码,最终转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖与JVM的实现和CPU的执行。 b本节探讨下Java并发机制的实现原理。 1. volatile的应用 在并发编程中synchronized和volatile都扮演者重要角色。volatile是轻量级的syn
阅读本文

ARM下的位置无关和相关码

为什么需要位置无关码?  见 :   U-BOOT详解(什么是《编译地址》?什么是《运行地址》?)  http://bbs.21ic.com/forum.php?mod=viewthread&tid=857037&typeid=114       ARM位置无关代码设计规范  http://wenku.baidu.com/view/5ef25b890b4c2e3f562763a8.html位置
阅读本文

自己动手写操作系统:4.模拟软盘的数据结构,加载指定软盘扇区中的数据

前面两节介绍了如何在系统加载的时候在屏幕上打印出Hello OS! 我们是使用汇编直接对cpu进行操作,我们的数据容量只有启动扇区的512字节,这样的空间显然不够以后的开发使用。本节我们引入软盘的数据结构,对软盘的数据结构进行模拟,并加载软盘中指定扇区的内容。 本节按照一下结构组织:1.介绍软盘的物理以及逻辑结构2.根据软盘逻辑结构,使用C语言创建软盘映像文件,并把数据写入软盘扇区3.介绍如何使用
阅读本文

大跃进

而加载器要把“真正的程序”加载到内存得肯定得知道几件事情。1.首先得知道“真正的程序”在硬盘上的起始扇区?2.这个程序占用了硬盘多少个扇区。3.内存中的什么地方是空闲的?4.怎么样把它们从硬盘上搬到内存里面。5.搬进来之后,让CPU如何跳到那块程序代码区执行指令。所以,用户程序中。 大概分为两部分: 一部分是我们之间写的代码。 指令和数据。另外一部分是这个程序的一些特征信息:程序有多大,要
阅读本文

C语言条件编译及编译预处理阶段

1. 宏定义(宏代换,宏替换,宏: 宏定义是C语言提供的3中预处理功能中的一种)2.文件包含3.条件编译  ---------------------------------- ---------------------------------- ---------------------------------- ---------------------------------- ------
阅读本文

自己动手写操作系统:1.cpu中寄存器、汇编语言及其它基础知识

一、寄存器16位寄存器,原来都是8位的,为了表示区分,在后面加上后缀 X 表示 extent 扩展的意思 AX accumulator 累加寄存器    AH  高八位     AL  低八位 CX counter        计数寄存器    CH  高八位     CL  低八位 DX data             数据寄存器    DH  高八位     DL  低八位
阅读本文

【连载】计算机组成原理 --- 第一章计算机系统概述

1.1:计算机的发展历程 1.1.1) 硬件: 四代变化:电子管,晶体管,中小规模集成电路时代,超大规模集成电路时代。 元件的更新: 1:摩尔定律  --- 当价格不变时,集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将提升一倍。这一定律揭示了信息技术进步的速度。 2:半导体存储器的发展。 3:微处理器的发展。 1.1.2)软件: 语言:
阅读本文

STM8S汇编入门(1-3)

不知是心血来潮,还是其它因素,突然又想起玩汇编语言了。这几年也没少跟单片机打交道,包括51系列,430系列,ARM系列,但都是用C语言来开发。不过由于使用C语言,实际上对这些CPU的了解还是不够深刻,当然除了51之外,因为那是我多年前曾经用汇编开发过的芯片。尽管当今C语言已经在嵌入式产品的开发过程中成为主流,但我个人依然认为,要想真正了解CPU的特点,还得用汇编语言。不知道这种观点是对还是错,也许
阅读本文

Win10下IIS配置、项目发布、添加网站

Win10下IIS配置 1.找到控制面板:【开始】菜单鼠标右击,打开【控制面板】 2.打开控制面板,点击【程序】,点击【启用或关闭Windows功能】 下一步,点击【启用虎关闭Windows功能】 3. 开始修改IIS了,我是这样勾上的,有可能比较多。 4. 验证IIS是否正确安装,等待几分钟后IIS配置完成.在浏览器输入http://localhost/iisstart.htm会
阅读本文

编程语言,操作系统及软硬件之间的关联

编程语言,是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。就像人与人之间交流需要用语言去沟通一样,我们与计算机之间沟通的方式就是编程语言。编程语言又分为:机器语言(machine language)是一种指令集的体系。这种指令集,称机器码(machine code
阅读本文

Python入门 语法

编程语言: 机器语言,汇编语言,高级语言按转换方式分为编译型和解释型。PYTHON解释型。编译型  优点:先将程序源代码“翻译”成机器指令,并保存成二进制文件,可以直接在机器上运行,速度比解释型的快。  缺点:调试麻烦。解释型优点:调试程序方便缺点:效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器。只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如
阅读本文

生成、打包应用程序及类型

将类型生成到模块中  本节讨论如何将源代码文件转换成可以部署的文件。先看下面这个简单的示例:将文件的后缀名修改为.cs 在命令行执行以下命令: C:WindowsMicrosoft.NETFramework64v4.0.30319csc.exe /out:Program.exe /t:exe /r:MSCorLib.dll Program.cs 执行结果如下: 命令说明: MSCorL
阅读本文

《汇编语言(第3版)》王爽 实验16 编写包含多个功能子程序的中断例程

1、 org 200h 是个坑,网上看别的答案搞出来的,超出了书本已知范围,——是不是有别的处理方式啊?2、int7ch之后的返回要用 iret 而不是 ret,子程序可以 ret,但是要作为中断例程,就要用iret3、设置前景色时候,要把当前后景色取出来,也就是不能改变后景色;设置后景色一样道理。4、如果要连续多次设置前景色时,实现自动在0~7之间循环变色的功能,而不是仅仅按al中的值设置一次就
阅读本文

汇编第五日

mov ax, offset 标号:取得标号相对于伪代码后第一条指令地址0的相对偏移量即标号地址 可以发现汇编指令中的idata会直接反映在机器码中 jmp指令可以修改IP或CS和IP的值,具体格式如下:①jmp short 标号(段内转移)(IP) = (IP)+ 8位位移8位位移含义是:标号地址减去jmp指令的下一条指令地址即为相对位移地址(可正可负,但是范围必须在8位数据能表示之内)并不是直
阅读本文

[转]现代Linux系统上的栈溢出攻击

1. 基本内容这个教程试着向读者展示最基本的栈溢出攻击和现代Linux发行版中针对这种攻击的防御机制。为此我选择了最新版本的Ubuntu系统(12.10),因为它默认集成了几个安全防御机制,而且它也是一个非常流行的发行版。安装和使用都很方便。我们选择的系统是X86_64的。读者将会了解到栈溢出是怎样在那些默认没有安全防御机制的老系统上面成功的溢出的。而且还会解释在最新版本的Ubuntu上这些保护措
阅读本文