Welcome 微信登录

首页 / 操作系统 / Linux

Java 多态——与C++的比较

Java 多态——与C++的比较

学习了Java和C++之后,由于长期不使用C++,而java的基础知识掌握不牢,现在已经搞不清java多态了。现在先来谈谈java多态,稍后有时间再更新C++的多态,并进行比较~一. Java的多态首先什么是Java的多态?多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作。实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法...
servlet监听器实现在线人数统计源码实例

servlet监听器实现在线人数统计源码实例

servlet监听器实现在线人数统计 一.准备知识1.servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。2.filter:filter是一个可以复用的代码片段,可以用来转换HTTP请求、响应和头信息。Filter不像Servlet,它不能产生一个请求或者响应,它只是修改对某一资源的请求,或者修改从某一的响应。3.listener:监听器,从字...
C++程序之前需要注意的事项

C++程序之前需要注意的事项

1.类设计核查表类设计核查表出自《c++沉思录》你的类需要构造函数吗你的数据成员是私有的吗你的类需要一个无参的构造函数吗是不是每个构造函数初始化所有的数据成员类需要析构函数吗你的类需要复制构造函数吗你的类需要一个赋值运算符吗你的赋值运算符能够正确地将对象赋给对象本身吗你的类需要定义关系操作符吗删除数组时你记住使用delete[]吗记得在赋值构造函数和赋值操作的参数类型中加上const修饰符了吗如果函数有引用参数,他们应该是const引用吗2.C++中的co...
从汇编来看C语言

从汇编来看C语言

一、 学习过程从C语言的角度提出一些问题,这些问题再从汇编的角度考虑,还真的很有意思。(1) 我们用高级语言编程时,一般不可能不用到变量,但是一定要用到变量吗?还有这些变量从汇编的角度是怎么实现的呢?毕竟寄存器和内存空间是不可能存储一个变化的值的,要改变寄存器和内存空间的值,只有重新赋值。但是原来老师讲过,变量的声明是给变量名开辟一个固定大小的内存空间,所以声明变量时一定要给定变量类型。如果不用变量的话,可以给每次要用到的参数重新赋值,但这样就不能用循环等...
配置TC2.0运行环境

配置TC2.0运行环境

一、学习过程下载TC2.0并打开如图:这是一个集成的C语言环境包,包括TC、dosbox和一些编译工具,很明显这样我无法判断单个程序的功能,也无法区分哪些程序是必须的。那么为了搞清楚哪些文件是用来解决哪些功能的,我新建一个文件夹C:minic用来存放已知要解决问题的文件。避免程序通过设置搜索路径的方法找到不在相同目录的相关文件有两种方法:(1)不让设置的默认路径指向真的包含相关文件的目录。(2)把我们所要研究的系统的所有文件都拷贝到一个不可能是系统设置的搜...
基于toyix的进程和轻权进程的学习

基于toyix的进程和轻权进程的学习

我们在平时的计算机课上学习过进程,知道程序的执行的背后其实就是进程在进行一些操作。大家都知道打开windows的任务管理器可以看到正在运行的进程,当程序卡死时,可以在任务管理器里强制关闭相关程序的进程,这样就可以关闭卡死的程序,所以我们知道进程就是程序执行所产生的,但是我们对进程没有很清楚的认识。什么是进程?进程在程序的执行过程中到底起了什么样的作用?我们在toyix平台上来对进程进行研究学习。一、什么是toyix?Toyix是王爽老师为了进行操作系统基础...
高级语言里的函数在汇编里的实现方式

高级语言里的函数在汇编里的实现方式

一、学习过程在高级语言中我们为什么要用变量呢?因为我们要存储数据,而且因为要使用循环等语法结构,存储的数据需要不断地变化,变量的特性可以很好地解决这个问题。在前面我已经讨论过了,变量的声明实际上就是在内存中开辟一个内存空间,我们在汇编语言里使用循环,主要是把数据存在si、di等寄存器中来进行操作,存储数据是把数据放在寄存器、内存空间(普通的和栈)里面。编写程序ur1.c,并编译连接:用debug加载ur1.exe,用u命令查看编译后的机器码和汇编代码:发现...
栈以及内存操作在汇编中的实现

栈以及内存操作在汇编中的实现

一、学习过程要在计算机中用到一段存储空间,必须要知道两个信息:(1)存储空间在哪?(2)存储空间有多大。对于寄存器来说,只要给出寄存器的名字就可以了,因为每个寄存器在计算机中都是唯一的,而且寄存器大小是规定的。对于内存空间来说,就要给出地址和数据类型,数据类型就代表一个存储空间的大小。以前学习C语言的时候,并没有仔细研究过,原来C语言中还可以以这种语法直接向内存单元中写入数据:*(char*)0x2000=’a’;向偏移地址为200...
为什么C程序里一定要写main函数

为什么C程序里一定要写main函数

为什么C程序里一定要写main函数一、学习过程编写程序f.c:对其进行编译,正常通过,再对其进行连接,出现错误:显示的出错信息为:翻译成中文是:在c0s模块没有定义符号’_main’。那么这个错误信息可能与文件c0s.obj有关。那么是什么原因导致编译出错呢?既然已经将程序编译成了obj文件,那么用之前我们经常使用的link.exe能否将它连接呢?结果是可以的:用debug查看f.exe:程序是从06fb:0到06fb:001c,一...
关于C语言不定参数的研究

关于C语言不定参数的研究

一、学习过程编写程序如下:编译连接并用debug加载,观察main函数的内容:Showchar函数的内容:观察发现,main函数要传递两个参数‘a’和2,在汇编代码中是先将2赋给ax,再将ax入栈,然后将a赋给ax,将ax入栈。在showchar函数中,程序将sp赋给bp,再从bp+4处取出形参a赋给al,再将al中的值赋给b800:690h,然后再从bp+6处取出形参b赋给al,再将al中的值赋给b800:691h。可见main函...
关于tcc、tlink的编译链接机制的研究

关于tcc、tlink的编译链接机制的研究

1、学习过程在c:下建立文件夹c,并将编译器tcc.exe、连接器tlink.exe、相关文件c0s.obj、cs.lib、emu.lib、maths.lib放入文件夹中。要搭建一个简单的C语言编译环境,需要TC2.0、c0s.obj、emu.lib、maths.lib、graphics.lib、cs.lib文件。而这里用编译器tcc.exe、连接器tlink.exe代替了TC2.0,而且相关文件也少了graphics.lib,为什么这样也可以呢?我们先尝...
从汇编来看C语言之变量

从汇编来看C语言之变量

1、基础研究对如图程序进行编译连接,再用debug加载。我们在偏移地址1fa处查看main函数的内容:执行到1fd处,发现n的偏移地址为01a6,段地址存储在ds寄存器里,为07c4.再查看函数f2:参数a、b的值是用栈来传递的,它们的段地址都存放在ss寄存器中:局部变量c的值在这里是用si寄存器存储的,因为c正好是int型,那么子函数里定义的局部变量是用寄存器存储吗?我们在这里加一条赋值语句看看会如何:可见,局部变量d是放在栈里的,而c是放在寄存器si里...
obj文件的连接问题以及tlib的基本用法

obj文件的连接问题以及tlib的基本用法

1、基础研究用tcc将程序编译为.obj文件。这里也可以使用tcc-lincluderun.c来将run.c文件编译成run.obj文件。再用tcc对下面的程序进行编译链接,发现提示错误:提示标志f在程序中未定义。这说明如果程序里出现未定义的变量或函数,编译器能够正常将原文件编译成.obj文件,只是会提示而已。要怎么生成正确的exe文件呢,我们要把run1.c中未定义的f函数链接进来,但是我们之前的链接都是链接的系统提供的相关文件,怎么链接自带文件呢?我们...
使用Fake和Paket编写F#脚本

使用Fake和Paket编写F#脚本

编写F#脚本一般使用.fsx文件和F# Interactive(Fsi)。对于需复用的脚本,Paket和Fake提供了处理各种用例的特性。Fake用于构造复杂的脚本,Paket则提供了依赖管理。Fake虽然Fake本身是一种构建工具,但是其构建目标(Target)体系也可用于编写脚本。这是由于构建目标可用相互之间的关系定义,这同样也是脚本的惯用写法。使用Fake可以调用所有.Net库。下面的代码片段定义了运行FluentMigrator Migration...
JavaScript变量提升(Hoisting)

JavaScript变量提升(Hoisting)

定义:函数声明和变量声明总是被JavaScript解释器隐式地提升(hoist)到包含他们的作用域的最顶端。注意这里说的是变量或函数的"声明"会被提升到其作用域顶端另一个需要注意的是作用域。我们知道Javascript中的作用域只有两种,一种是全局作用域,一种是函数作用域(局部作用域) 。是没有块级作用域等概念的。下面我们根据这个定义来解释解释变量提升这个特性首先来一段代码var x = "good";(function () { console.log(...
Java collection集合之 扑克牌游戏

Java collection集合之 扑克牌游戏

主要内容:这里使用collection集合,模拟香港电影中大佬们玩的扑克牌游戏。1、游戏规则:两个玩家每人手中发两张牌,进行比较。比较每个玩家手中牌最大的点数,大小由A-2,点数大者获胜。如果点数相同,则比较花色,大小由黑(4)、红(3)、梅(2)、方(1),花色大者获胜。2、实现步骤:创建一副扑克牌A-2,四种花色黑(4)、红(3)、梅(2)、方(1)共52张牌;创建两个玩家包含玩家ID和姓名、所持牌Card信息;洗牌并向两位玩家各发两张牌;比较玩家手中...
在Python应用中使用MongoDB

在Python应用中使用MongoDB

Python是开发社区中用于许多不同类型应用的强大编程语言。很多人都知道它是可以处理几乎任何任务的灵活语言。因此,在Python应用中需要一个什么样的与语言本身一样灵活的数据库呢?那就是NoSQL,比如MongoDB。1、SQL vs NoSQL 如果你不是很熟悉NoSQL这个概念,MongoDB就是一个NoSQL数据库。近几年来它越来越受到整个行业的欢迎。NoSQL数据库提供了一个和关系型数据库非常不同的检索方式和存储数据功能。 在NoSQL出现的几...
C语言中的指针

C语言中的指针

1、什么是指针?指针就是地址。为了说清楚什么是指针,必须先弄清楚数据在内存中是如何存储的,又是如何读取的。如果在程序中定义了一个变量,在对程序进行编译时,系统就会给这个变量分配内存单元。编译系统根据程序中定义的变量的类型,分配一定长度的空间。内存区的每一个字节都会有一个编号,这就是“地址”,它相当于旅馆中的房间号,在地址所标志的内存单元中存放的数据则相当于旅馆房间中居住的旅客。一个变量的地址,称为该变量的指针。2、指针变量(1)、存...
<< 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 >>