运用模块方式写单片机程序 2017年02月05日 19 阅读 环境描述:Keil+ Proteus电路仿真首先在Keil里创建一个工程,在工程里建立三个文件,文件名分别是:“头文件.c”,“delay.c”,“delay.h”分别在 头文件.c、delay.c、delay.h写入相应内容:(注意不要将 delay.h文件插入工程文件中) 1 #include<reg51.h> 2 #include"delay.h" 34 main()...
Java 中包的概念,常量,静态与继承 2017年02月05日 22 阅读 一、Java包的概念:创建,使用。1.新建包:最上面一行,之前不能再有其它代码了。package 包名;注意:包名一般都有命名的规范。例如:com.itnba.maya.zy(从大到小)。2.使用包:import 包名.*;import 包名.类名;例如:import com.itnba.maya.zy.*;注意:import不要放在package的上面上package com.itnba.maya.zy;import com.itnba.maya.zyy...
Java 字符串操作和日期操作 2017年02月05日 19 阅读 一、Java字符串操作创建字符串String s2 = new String("Hello World");String s1 = "Hello World";1.字符串连接多个字符串链接时,每个字符串之间用+相连,+就是字符串链接,连接之后生成一个新的字符串。2.获取字符串长度 a.lenght() 根据索引从0开始,截取字符串长度 a.substring(1,3) ; 从1号位开始截取到3号位。3.获取指定字符串的索引位置 indexOf()方法;la...
Java程序员的日常—— Arrays工具类的使用 2017年02月05日 20 阅读 这个类在日常的开发中,还是非常常用的。今天就总结一下Arrays工具类的常用方法。最常用的就是asList,sort,toStream,equals,copyOf了。另外可以深入学习下Arrays的排序算法,这个还是非常有用的。所有的方法都是在下面的类中进行测试的:public class ArraysTest {String[] array = new String[]{"a","c","2","1","b"};Integer[] ints = new ...
Python中三目运算符的正确用法及短路逻辑 2017年02月05日 22 阅读 今天在看别人代码时看到这样一种写法, 感觉是个挺容易踩到的坑, 搞清楚后写出来备忘.短路逻辑Python中进行逻辑运算的时候, 默认采用的是一种叫做短路逻辑的运算规则. 名字是很形象的, 下面直接看代码print True and 1# 1print True or 1# Trueprint False and 1# Falseprint False or 1# 1可以看到, 虽然1会被当做布尔值计算, 但整个表达式的计算结果却不一定是布尔值, 而是根据表...
Java消息队列--ActiveMQ 实战 2017年02月05日 19 阅读 Java消息队列--ActiveMQ 实战1、下载安装ActiveMQ ActiveMQ官网下载地址:http://activemq.apache.org/download.html ActiveMQ 提供了Windows 和Linux、Unix 等几个版本,楼主这里选择了Linux 版本下进行开发。 下载完安装包,解压之后的目录: 从它的目录来说,还是很简单的:bin存放的是脚本文件conf存放的是基本配置文件data存放的是日志文件docs存放...
Java 多态——与C++的比较 2017年02月05日 20 阅读 学习了Java和C++之后,由于长期不使用C++,而java的基础知识掌握不牢,现在已经搞不清java多态了。现在先来谈谈java多态,稍后有时间再更新C++的多态,并进行比较~一. Java的多态首先什么是Java的多态?多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作。实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法...
servlet监听器实现在线人数统计源码实例 2017年02月05日 19 阅读 servlet监听器实现在线人数统计 一.准备知识1.servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。2.filter:filter是一个可以复用的代码片段,可以用来转换HTTP请求、响应和头信息。Filter不像Servlet,它不能产生一个请求或者响应,它只是修改对某一资源的请求,或者修改从某一的响应。3.listener:监听器,从字...
C++程序之前需要注意的事项 2017年02月05日 19 阅读 1.类设计核查表类设计核查表出自《c++沉思录》你的类需要构造函数吗你的数据成员是私有的吗你的类需要一个无参的构造函数吗是不是每个构造函数初始化所有的数据成员类需要析构函数吗你的类需要复制构造函数吗你的类需要一个赋值运算符吗你的赋值运算符能够正确地将对象赋给对象本身吗你的类需要定义关系操作符吗删除数组时你记住使用delete[]吗记得在赋值构造函数和赋值操作的参数类型中加上const修饰符了吗如果函数有引用参数,他们应该是const引用吗2.C++中的co...
从汇编来看C语言 2017年02月05日 19 阅读 一、 学习过程从C语言的角度提出一些问题,这些问题再从汇编的角度考虑,还真的很有意思。(1) 我们用高级语言编程时,一般不可能不用到变量,但是一定要用到变量吗?还有这些变量从汇编的角度是怎么实现的呢?毕竟寄存器和内存空间是不可能存储一个变化的值的,要改变寄存器和内存空间的值,只有重新赋值。但是原来老师讲过,变量的声明是给变量名开辟一个固定大小的内存空间,所以声明变量时一定要给定变量类型。如果不用变量的话,可以给每次要用到的参数重新赋值,但这样就不能用循环等...
配置TC2.0运行环境 2017年02月05日 19 阅读 一、学习过程下载TC2.0并打开如图:这是一个集成的C语言环境包,包括TC、dosbox和一些编译工具,很明显这样我无法判断单个程序的功能,也无法区分哪些程序是必须的。那么为了搞清楚哪些文件是用来解决哪些功能的,我新建一个文件夹C:minic用来存放已知要解决问题的文件。避免程序通过设置搜索路径的方法找到不在相同目录的相关文件有两种方法:(1)不让设置的默认路径指向真的包含相关文件的目录。(2)把我们所要研究的系统的所有文件都拷贝到一个不可能是系统设置的搜...
基于toyix的进程和轻权进程的学习 2017年02月05日 19 阅读 我们在平时的计算机课上学习过进程,知道程序的执行的背后其实就是进程在进行一些操作。大家都知道打开windows的任务管理器可以看到正在运行的进程,当程序卡死时,可以在任务管理器里强制关闭相关程序的进程,这样就可以关闭卡死的程序,所以我们知道进程就是程序执行所产生的,但是我们对进程没有很清楚的认识。什么是进程?进程在程序的执行过程中到底起了什么样的作用?我们在toyix平台上来对进程进行研究学习。一、什么是toyix?Toyix是王爽老师为了进行操作系统基础...
高级语言里的函数在汇编里的实现方式 2017年02月05日 19 阅读 一、学习过程在高级语言中我们为什么要用变量呢?因为我们要存储数据,而且因为要使用循环等语法结构,存储的数据需要不断地变化,变量的特性可以很好地解决这个问题。在前面我已经讨论过了,变量的声明实际上就是在内存中开辟一个内存空间,我们在汇编语言里使用循环,主要是把数据存在si、di等寄存器中来进行操作,存储数据是把数据放在寄存器、内存空间(普通的和栈)里面。编写程序ur1.c,并编译连接:用debug加载ur1.exe,用u命令查看编译后的机器码和汇编代码:发现...
栈以及内存操作在汇编中的实现 2017年02月05日 20 阅读 一、学习过程要在计算机中用到一段存储空间,必须要知道两个信息:(1)存储空间在哪?(2)存储空间有多大。对于寄存器来说,只要给出寄存器的名字就可以了,因为每个寄存器在计算机中都是唯一的,而且寄存器大小是规定的。对于内存空间来说,就要给出地址和数据类型,数据类型就代表一个存储空间的大小。以前学习C语言的时候,并没有仔细研究过,原来C语言中还可以以这种语法直接向内存单元中写入数据:*(char*)0x2000=’a’;向偏移地址为200...
为什么C程序里一定要写main函数 2017年02月05日 22 阅读 为什么C程序里一定要写main函数一、学习过程编写程序f.c:对其进行编译,正常通过,再对其进行连接,出现错误:显示的出错信息为:翻译成中文是:在c0s模块没有定义符号’_main’。那么这个错误信息可能与文件c0s.obj有关。那么是什么原因导致编译出错呢?既然已经将程序编译成了obj文件,那么用之前我们经常使用的link.exe能否将它连接呢?结果是可以的:用debug查看f.exe:程序是从06fb:0到06fb:001c,一...
关于C语言不定参数的研究 2017年02月05日 19 阅读 一、学习过程编写程序如下:编译连接并用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的编译链接机制的研究 2017年02月05日 20 阅读 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语言之变量 2017年02月05日 20 阅读 1、基础研究对如图程序进行编译连接,再用debug加载。我们在偏移地址1fa处查看main函数的内容:执行到1fd处,发现n的偏移地址为01a6,段地址存储在ds寄存器里,为07c4.再查看函数f2:参数a、b的值是用栈来传递的,它们的段地址都存放在ss寄存器中:局部变量c的值在这里是用si寄存器存储的,因为c正好是int型,那么子函数里定义的局部变量是用寄存器存储吗?我们在这里加一条赋值语句看看会如何:可见,局部变量d是放在栈里的,而c是放在寄存器si里...
obj文件的连接问题以及tlib的基本用法 2017年02月05日 19 阅读 1、基础研究用tcc将程序编译为.obj文件。这里也可以使用tcc-lincluderun.c来将run.c文件编译成run.obj文件。再用tcc对下面的程序进行编译链接,发现提示错误:提示标志f在程序中未定义。这说明如果程序里出现未定义的变量或函数,编译器能够正常将原文件编译成.obj文件,只是会提示而已。要怎么生成正确的exe文件呢,我们要把run1.c中未定义的f函数链接进来,但是我们之前的链接都是链接的系统提供的相关文件,怎么链接自带文件呢?我们...
使用Fake和Paket编写F#脚本 2017年02月05日 19 阅读 编写F#脚本一般使用.fsx文件和F# Interactive(Fsi)。对于需复用的脚本,Paket和Fake提供了处理各种用例的特性。Fake用于构造复杂的脚本,Paket则提供了依赖管理。Fake虽然Fake本身是一种构建工具,但是其构建目标(Target)体系也可用于编写脚本。这是由于构建目标可用相互之间的关系定义,这同样也是脚本的惯用写法。使用Fake可以调用所有.Net库。下面的代码片段定义了运行FluentMigrator Migration...