自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 Java实现树的遍历

树的创建树有很多创建方式,本文采用二叉链表的创建方法二叉树的三种遍历方法前序遍历规则是若二叉树为空,则空操作~否则先访间根结点,然后前序遍历左子树,再前序遍历右子树。上图所示树前序遍历结果为:ABDHKECFIG public void preOrder(node p) { System.out.print(p.data+" "); if (p.lchild!=null) { preOrder(p.lchild); } if(p.rchild!=null) { pre

2021-03-09 21:40:25 968 1

原创 计算机网络自顶向下方法套接字编程作业3

作业3:邮件客户要求开发一个简单的邮件客户端,向任何收件人发送电子邮件。客户需要连接到邮件服务器,使用 SMTP 协议与邮件服务器进行对话,并向邮件服务器发送电子邮件。代码客户端代码框架已经给出,需要将其补充完整,需要填写代码的位置在开始时标记为#Fill,在结束时标记为#Fill。每个地方可能需要一行或多行代码。from socket import *msg = "\r\n I love computer networks!" endmsg = "\r\n.\r\n"# Choose

2021-03-05 20:30:47 458

原创 计算机网络自顶向下方法套接字编程作业2

作业2:UDP ping程序要求用python采用UDP协议编写一个ping程序,发送一个简单的ping报文,接收一个从服务器返回的pong报文,并确定从客户发送ping报文到接受到pong报文为止的往返时延(RTT) 。客户不能无限期地等待服务器的响应,等待时间至多为1s,否则,客户假定该分组丢失并打印一条报文。服务器代码已给出,任务是写出客户代码。服务器代码在运行客户端程序之前,需要编译和运行此代码,不需要修改此代码。在此服务器代码中,30% 的客户包被模拟为丢失。# UDPPingerS

2021-03-05 20:29:54 321

原创 计算机网络自顶向下方法套接字编程作业1

作业1:Web服务器要求开发一个Web服务器,一次处理一个HTTP请求。您的网络服务器应接受并解析HTTP请求,从服务器的文件系统中获取请求的文件,创建由请求的文件组成的HTTP响应消息,并在标头行之前添加该消息,然后将响应直接发送给客户端。如果服务器中不存在所请求的文件,则服务器应向客户端发送HTTP“ 404未找到”消息。代码Web服务器的框架代码已给出。需要填写代码的位置在开始时标记为#Fill,在结束时标记为#Fill。每个地方可能需要一行或多行代码。#import socket modu

2021-03-05 20:28:14 752 1

原创 Java实现数据结构串的KMP算法

在关于字符串定位的算法中,朴素模式匹配算法极其低效。在很多年前我们的科学家们,觉得像有多个重复字符的字符串, 却需要挨个遍历的算法是非常糟糕的事情。 于是有三位前辈, D.E.Knutb、****J.H.Morris和 V.R.Pratt(其中Knuth 和Pratt共同研究, Morris独立研究)发表了一个模式匹配算法,可以大大避免重复遍历的情况, 我们把它称之为克努特一莫里斯—普拉特算法, 简称KMP算 法。朴素模式匹配算法与KMP模式匹配算法的原理不在此说明。以下为利用Java语言实现的KMP算法

2020-12-05 17:37:36 129 1

原创 Java实现数据结构单链表

单链表的主要操作包括链表的创建,元素的添加、插入和删除,其用Java语言实现的代码如下:public class singleList<T> { private Node<T> head;//头结点 private int size = 0;//链表长度 class Node<T> { private T elem;//数据域 Node<T> next;//指针域 Node() {}

2020-11-26 20:12:05 131

原创 Head First Java学习笔记(18):远程部署的RMI

RMI:Remote Methodd Invocation(远程方法调用)远程过程调用的设计要创建出4种东西:服务器、客户端、服务器辅助设施和客户端辅助设施。1.创建客户端和服务器应用程序。服务器应用程序是个远程服务,是个带有客户端会调用的方法的对象。2.创建客户端和服务器端的辅助设施。它们会处理所有客户端和服务器的低层网络输入/输出细节,让你的客户端和程序好像在处理本机调用一样。辅助设施1.客户端对象看起来像是在调用远程的方法。但实际上它只是在调用本地处理Socket和串流细节的代理。2

2020-11-26 17:22:42 169

原创 Head First Java学习笔记(17):包、jar存档文件和部署

Java的部署Java程序是由一组类所组成的,那就是开发过程的输出。部署的选择:1.本机:整个程序都在用户的计算机上以独立、可携的GUI执行,并以可执行的Jar来部署。2.两种之间的组合:应用程序被分散为在用户本地系统运行的客户端,以及连接到执行应用程序服务的服务器部分。3.远程:整个应用程序都在服务器端执行,客户端通过非Java形式,可能是浏览器的装置来存取。组织类1.组织类就是讲源文件与类文件分离。2.编译时加上“-d”选项,可以指定编译过的程序要摆在哪里。1.编译%cd MyP

2020-11-26 16:17:41 188

原创 Head First Java学习笔记(16):集合与泛型

常用的集合1.ArrayList2.TreeSet :以有序状态保存并可防止数据重复。3.HashMap: 以键值对的形式保存数据。4.LinkedList: 针对经常插入或删除中间元素所设计的高效率集合。5.HashSet:防止重复的集合,可快速地寻找相符的元素。6.LinkedHashMap:与HashMap类似。关于泛型// 创建被泛型化的类List<Song> songList = new ArrayList<Song>();// 声明泛型类型的方法p

2020-11-26 15:00:01 128

原创 Head First Java学习笔记(15):网络与线程

socket连接。1.Socket是一个代表两台机器之间网络连接的对象。2.要创建Socket连接必须指定两项关于服务器的信息:它在哪里以及用哪个端口来收发数据。即IP地址与端口号。Socket chatSocket = new Socket(“196.164.1.103”, 5000);196.164.1.103:IP地址5000:端口号3.Socket连接的建立代表两台机器之间存有对方的信息,包括网络地址和TCP的端口号。端口1.TCP端口只是一个16位宽,用来识别服务器上特定程序的数

2020-11-25 20:37:11 100

原创 Head First Java学习笔记(14):序列化和文件的输入/输出

对象可以被序列化也可以展开对象序列化的步骤:1.创建出FileOutputStreamFileOutputStream fileStream = new FileOutputStream("MyGame.ser");//如果文件不存在,它会自动创建出来2.创建ObjectOutputStreamObjectOutputStream os = new ObjectOutputStream(fileStream);3.写入对象os.writeObject(characterOne);os.wri

2020-11-25 19:32:42 164 1

原创 Head First Java学习笔记(13):Swing

Swing组件1.组件是比widget更为正确的术语,从技术上来说,widget是个Swing的组件,几乎所有的GUI组件都来自于javax.swing.JComponent。2.组件是可以嵌套的,在swing中,几乎所有组件都能够安置其他的组件。一般来说,可以将用户交互组件放在框架和背景组件上。3.JPanel通常用作背景。布局管理器1.布局管理器是个与特定组件关联的Java对象,它大多数是背景组件。布局管理器,负责组件的大小和位置。2.布局管理器用来控制所关联组件上携带的其他组件。3.如果

2020-11-25 17:04:24 108

原创 Head First Java学习笔记(12):图形用户接口

JFrameJFrame是个代表屏幕上窗口的对象。你可以把 button / text / checkbox 等接口放在窗口上面。创建GUI(Graphical User Interface,图形用户界面)的步骤:1.创建frameJFrame frame = new JFrame();2.创建widget(组件)JButton button = new JButton("Click me");3.把widget加到frame上frame.getContentPane().add(butto

2020-11-24 17:00:25 134

原创 Head First Java学习笔记(11):异常处理

try/catch编译器需要确定你了解所调用的方法是有风险的,只要你把有风险的程序代码包含在try/catch块中,编译器就不会报错。异常是一种Exception类型的对象,Exception类型的对象可以是任何它的子类的实例。try { //危险动作} catch(Exception ex) { //尝试恢复}异常是由有异常的方法丢出的:1.方法可以抓住其他方法所抛出的异常,异常总是会丢回给调用方。2.会抛出异常的方法必须要声明它有可能会这么做。//会抛出异常的方法public

2020-11-24 16:13:25 182

原创 Head First Java学习笔记(10):数字与静态

Math方法Java中不存在全局的对象,但有些方法不需要依靠实例变量值,,如Math这个类中的取绝对值方法,它只依赖于传入的参数,而不依赖于实例变量的状态。因此,调用Math中的方法时,无需创建Math的实例,实际上编译器也不允许创建Math的实例,因为Math的构造函数被标记为私有的。在Math这个类中的所有方法都不需要实例变量值,因为这些方法都是静态的。Math在的一些方法:Math.random():返回介于0.0~1..0之间的双精度浮点数。Math.abs():返回双精度浮点数类型参数的

2020-11-24 15:15:44 97

原创 Head First Java学习笔记(9):构造器与垃圾收集器

栈与堆栈: 栈是方法调用及局部变量的生存空间。局部变量和方法的参数都是声明在方法中,它们是暂时的,其生命周期只限于方法被放在栈上的期间,也就是方法调用至执行完毕为止。堆: 堆又称为可垃圾回收的堆,是对象生存的空间。注意:1.实例变量是被声明在类中,而不是方法里面。因此,实例变量存在于所属的对象中,即实例变量在堆上。 2.局部变量如果是一个对对象的引用,则只有变量本身会放在栈上,对象永远都只在堆上。方法调用: 当方法被调用时,它会在调用栈的栈顶,直到执行完毕。①调用doStuff()②d

2020-11-24 13:36:52 80

原创 Head First Java学习笔记(8):接口与抽象类

抽象类1.有些类不应该被初始化。2.当设计继承结构时,必须决定哪些类是抽象的,哪些类是具体的。具体的类是实际可以被初始化为对象的。3.设计抽象类的方法:在类的声明前面加上关键词abstract。4.抽象类代表没人能创建该类的实例,可以使用抽象类来声明为引用类型给多态使用,却不用担心创建出该类型的对象,编译器会确保这件事。5.抽象类除了被继承过之外,是没有用途、没有值、没有目的的。抽象方法1.方法也可以标记为abstract的,抽象方法必须被覆盖。2.抽象的方法没有方法体,应该直接以分号结束,

2020-11-22 16:32:47 128

原创 Head First Java学习笔记(7):继承与多态

继承子类继承父类: 子类继承了父类的成员,即父类的实例变量和方法。子类可以重写继承下来的父类的方法,也可以加入自己的实例变量和方法。设计继承树: ①找出具有共同属性和行为的对象。②设计代表共同状态与行为的类。③决定子类是否需要让某项行为(也就是方法的实现)有特定不同的运作方式。④通过寻找使用共同行为的子类来找出更多抽象化的机会。⑤完成类的继承层次。方法调用: 当调用对象引用的方法时,最低阶的会胜出。即JVM会从层次树最下方开始找起,并往上寻找直到找到为止。IS-A与HAS-A: IS-A:判

2020-11-22 15:29:31 199

原创 Head First Java学习笔记(6):认识Java的API

ArrayListArrayList是Java函数库中的一个类,它有预先定义好的一系列方法。1.一般数组在创建时就必须确定大小,而ArrayList只需创建出其对象,它可以在添加或删除元素时自动调整大小。2.存放对象给一般数组时必须指定位置,使用ArrayList时可以用add(Int,Object)指定索引值,也可以使用add(Object)来自行管理大小。3.一般数组使用特殊的语法,但ArrayList是个普通对象,没有特殊的语法。例如[方括号]是只用在数组上的特殊语法。4.在Java5.0中

2020-11-22 14:16:38 131 2

原创 Head First Java学习笔记(5):编写程序

开发类编写程序的推荐步骤:1.找出类应该做的事情。2.列出实例变量和方法。3.编写方法的伪码。4.编写方法的测试用程序。5.实现类。6.测试方法。7.除错或重新设计。伪码、测试码、真实码伪码: 伪码能帮你专注于逻辑而不需要顾虑到程序语法。测试码: 测试用的程序代码。真实码: 实际设计出的真正Java程序代码。for循环基本for循环: for(int i=0;i<100;i++){}加强版for循环: for(String name:nameArray){}:对nameA

2020-11-22 12:05:29 115

原创 Head First Java学习笔记(4):方法操作实例变量

实例变量和方法1.状态影响行为,行为影响状态。2.实例变量就是状态,方法就是行为。形参与实参方法会运用形参,调用的一方会传入实参。实参是传给方法的值,传入方法后就成了形参。返回方法可以声明为无返回值和有返回值。// 无返回值void go() {}如果方法声明为有返回值,必须返回所声明类型的值,如:// 无返回值void getAge() {return 21;}值传递Java传给方法的值是拷贝值,在方法中改变该值不会改变调用方法所传入的参数。Getter与Sette

2020-11-21 16:29:02 89 1

原创 Head First Java学习笔记(3):Primitive主数据类型和引用

声明变量variable must have a type:变量必须拥有类型variable must have a name:变量必须拥有名称Primitive主数据类型类型 位数 值域boolean true/falsechar 16 bits 0~65535byte 8 bits -128~127short

2020-11-21 15:53:57 185

原创 Head First Java学习笔记(2):类与对象

类1.类是定义同一类所有对象的变量和方法的蓝图或原型。2.实例变量的值由类的每个实例提供。当创建类的实例时,就创建了这种类型的一个对象,然后系统为类定义的实例变量分配内存。然后可以调用对象的实例方法实现一些功能。3.除了实例变量和方法,类也可以定义类变量和类方法。类与对象类不是对象,却是用来创建对象的模型。类会告诉虚拟机如何创建某种类型的对象。main()的用途1.测试真正的类2.启动java程序猜数字游戏public class GuessGame { Player p1; Pl

2020-11-21 15:10:29 167 1

原创 Head First Java学习笔记(1):基本概念

Head First Java学习笔记(1):基本概念Java的工作方式源代码——编译器——输出字节码——Java虚拟机读取并执行字节码你要做的事1.编辑源代码文件,如Party.java。2.执行javac程序编译源文件,若无错误则生成Party.class文件,此文件是由字节码组成的。javac Party.java3.启动java虚拟机(JVM)运行class文件。JVM会将字节码转换成平台能够理解的形式运行。java PartyJava的程序结构类存与源文件里面,方法存于类中

2020-11-21 14:39:43 378 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除