0.09

五煦查题

快速找到你需要的那道考题与答案

尔雅Java核心技术(进阶)课后答案(学习通2023完整答案)

84 min read

尔雅Java核心技术(进阶)课后答案(学习通2023完整答案)

第一章 Maven

第一章 Maven 作业

1、尔雅给定一个汉字句子,核心可以输出句子的技术进阶读音。可以借鉴第三方库:pinyin4j 。课后这个是答案网址:https://mvnrepository.com/artifact/com.belerweb/pinyin4j 。要求工程是学习Maven项目。需要Maven编译成功的通完截图、程序运行的整答截图、和代码截图。尔雅

第二章 单元测试和JUnit

第二章 单元测试和JUnit 作业

1、核心编写一个DateUtil的技术进阶类,里面有一个isLeapYear(int year) 的课后方法,判断输入年份是答案否是闰年。如果是学习闰年,返回true,通完其他返回false。闰年需要满足以下3个条件: 年份必须大于0,且小于等于10000。 年份不能整除100,且可以整除4。 年份可以整除100,且可以整除400。 请编写JUnit测试类DateUtilTest,采用以下用例,使用assertEquals来测试程序正确性。-100, 1000, 20000, 2020, 2019, 2000, 1900. 最后提交:DateUtil.java, DateUtilTest.java, JUnit运行截图,Maven test运行截图。

第三章 高级文本处理

第三章 高级文本处理 单元作业

1、=============第三章作业============== 前提:中文操作系统。如果是英文操作系统,则按照题目意思,重新构造输入,完成ResourceBundle搜索路径即可。 假设有msg_zh.properties (需要经过native2ascii转化) ############ university=华东师范大学 ############ msg_zh_CN.properties (需要经过native2ascii转化) ############ name=张三 ############ msg_en_US.properties ################# name=Tom ################# 仿照第三章第二节NewHelloWorld程序,输出university和name在zh_CN, en_NZ,en_US三种Locale的值。提交程序和运行结果截图(有异常输出,也请截图或者做好try-catch)。

第四章 高级文件处理

第四章 高级文件处理作业

1、读入以下的score.xml文件,并转化为JSON Object对象,输出JSON Object的字符串表达式。最后,根据JSON Object 的值和score.xml的样式,重新生成score2.xml。 <student> <name>Tom</name> <subject>math</subject> <score>80</score> </student> 读取和写入xml方法不限,JSON处理方法不限。 最后,需要提交源码,score.xml截图,json 字符串输出截图,score2.xml截图。

第四章 高级文件处理(续)

第四章 高级文件处理(续) 单元作业

1、读取student.xslx里面的数据,根据预设的student.docx模板,生成学生具体的信息文档,最后转化为pdf文档。 整个程序可以分成多个步骤,或者整合为一个程序。

第五章 Java多线程和并发编程

第五章 Java多线程和并发编程 单元作业

1、请分成6个线程,计算m到n的值(以1到100000000为例)的总和。要求每个线程计算的数字量之差不超过1.

第五章 Java多线程和并发编程(续)

第五章 Java多线程和并发编程(续) 单元作业

1、给定一个int数组,假设有10000个长度,里面放满1-100的随机整数。需要用串行循环计算、Executors框架和Fork-Join框架三种方法,实现查找并输出该数组中50的出现个数。 提交源程序和和执行结果截图。 预期执行结果如下(具体数量根据每个程序随机赋值决定) 串行搜索得到50的个数是5个。 Executors搜索得到50的个数是5个。 Fork-Join搜索得到50的个数是5个。

第六章 Java网络编程

第六章 Java网络编程 单元作业

1、请编写一个群聊的程序,包括服务端程序和客户端程序。 服务端功能:收到某客户端的信息,将消息在控制台输出,然后,发给其他另外的客户端。 客户端功能:每隔5秒发送一条信息给服务端。然后接收服务器转发过来的消息,并在控制台输出。 要求:最后提交程序源码和运行截图。运行截图在一个画面上,包括服务端截图和2个客户端的截图。

第六章 Java网络编程(续)

第六章 Java网络编程(续)

1、请基于NIO(第6章第六节的NIO,非AIO)编写一个群聊的程序,包括服务端程序和客户端程序。 服务端功能:只用一个线程,收到某客户端的信息,将消息在控制台输出,然后,发给其他另外的客户端。 客户端功能:每隔5秒发送一条信息给服务端。然后接收服务器转发过来的消息,并在控制台输出。 要求:最后提交程序源码和运行截图。运行截图在一个画面上,包括服务端截图和2个客户端的截图。

第七章 Java 数据库编程

第七章 Java 数据库编程 作业

1、假设数据库有一张表t_mail (id, from, to, subject, content), 里面存储着具体的邮件发件人、收件人、标题和内容。采用Druid连接池,读取id为1的记录,并基于Java Mail将该邮件发送出来。 需要提供:项目工程,项目运行输出日志(连接池构建成功、获取连接成功、获取数据成功、发送邮件成功),数据库t_mail数据信息截图,邮件收件箱截图。

第八章 Java混合编程

第八章 Java混合编程 单元作业

1、基于RMI技术,实现客户端和服务端功能。 服务端需要提供编译一个类和运行一个类的功能(采用Runtime的exec方法)。 客户端接受用户的输入,如输入javac HelloWorld,就通过RMI方法请求服务端的编译HelloWorld功能;如输入java HelloWorld,就通过RMI方法请求服务端的执行HelloWorld功能。服务端的执行结果,返回给客户端,并打印出来。 最后提交:工程代码,客户端输入输出截图,服务端输入输出截图,HelloWorld.java/HelloWorld.class 目录截图。

Java核心技术(进阶) 考试

Java核心技术(进阶)

1、注意注意注意!!! 1) 只能选择一个难度的题目完成考试,最后只提交一道题! 2) 考试不限时。 3) 只能提交一次。 最后提交的成果物如下: 1) Maven 项目,包括所有源码 2) 所有的运行过程、产生的文件、数据库表截图 3) readme.txt 说明所做的题目难度等级,和其他需要解释的内容 =========打造我们自己的Tomcat============= 1. 实现一个客户端和服务端(8001端口)。客户端发送字符串hello.html, 服务端返回以下字符串<head><body>hello world</body></html>。(50分) 2. 实现一个客户端和服务端(8001端口)。客户端发送字符串hello.html, 服务端读取hello-server.html的内容并返回。hello-server.html的内容是以下字符串<head><body>hello world</body></html>。客户端接受到反馈字符串后,保存为文件hello.html。(60分) 3. 实现一个客户端和服务端(8001端口)。客户端发送字符串hello.html, 服务端读取hello-server.html的内容并返回。hello-server.html的内容是以下字符串<head><body>hello world</body></html>。客户端接受到反馈字符串后,保存为文件hello.html。服务端采用Executors线程池实现。(70分) 4. 实现一个客户端和服务端(8001端口)。客户端发送字符串hello.html, 服务端读取hello-server.html的内容并返回。hello-server.html的内容是以下字符串<head><body>hello world</body></html>。客户端接受到反馈字符串后,保存为文件hello.html。客户端发送字符串HelloWorld.action, 服务端动态调用执行HelloWorld.class。HelloWorld.class将输出以下字符串<head><body>hello world 222</body></html>。客户端接受到反馈字符串后,保存为文件hello2.html。服务端采用Executors线程池实现。(80分) 5. 实现一个客户端和服务端(8001端口)。客户端发送字符串hello.html, 服务端读取hello-server.html的内容并返回。hello-server.html的内容是以下字符串<head><body>hello world</body></html>。客户端接受到反馈字符串后,保存为文件hello.html。客户端发送字符串HelloWorld.action, 服务端动态调用执行HelloWorld.class。HelloWorld.class将输出以下字符串<head><body>hello world 222</body></html>。客户端接受到反馈字符串后,保存为文件hello2.html。服务端采用Executors线程池实现。服务器端的文件关联配置,如hello.html和hello-server.html, HelloWorld.action和HelloWorld.class的对应关系,请从以下的server-mapping.xml读取。(90分) ======================server-mapping.xml start============ <file-mapping> <mapping> <client>hello.html</client> <server>hello-server.html</server> </mapping> <mapping> <client>HelloWorld.action</client> <server>HelloWorld.class</server> </mapping> </file-mapping> ======================server-mapping.xml end============ 6. 实现一个客户端和服务端(8001端口)。客户端发送字符串hello.html, 服务端读取hello-server.html的内容并返回。hello-server.html的内容是以下字符串<head><body>hello world</body></html>。客户端接受到反馈字符串后,保存为文件hello.html。客户端发送字符串HelloWorld.action, 服务端动态调用执行HelloWorld.class。HelloWorld.class将输出以下字符串<head><body>hello world 222</body></html>。客户端接受到反馈字符串后,保存为文件hello2.html。服务端采用Executors线程池实现。服务器端的文件关联配置,如hello.html和hello-server.xml, HelloWorld.action和HelloWorld.class的对应关系,请从以下的server-mapping.xml读取。 另外,服务端需要以Thread的方式,记录客户端的访问到数据库表t_client_access(id, ip_address, access_time, parameters)中。例如,数据(1, 192.168.1.100, '2019-03-18 12:00:00', 'hello.html') 。要求采用数据库连接池和PreparedStatement访问。(100分) ======================server-mapping.xml start============ <file-mapping> <mapping> <client>hello.html</client> <server>hello-server.html</server> </mapping> <mapping> <client>HelloWorld.action</client> <server>HelloWorld.class</server> </mapping> </file-mapping> ======================server-mapping.xml end============

学习通Java核心技术(进阶)

Java作为一门广泛应用于企业级应用和互联网应用的编程语言,其技术的学习和掌握已成为程序员们必备的技能之一。而在进阶阶段,掌握Java核心技术成为了必须要学习的内容。

一、Java泛型

Java泛型是Java SE5之后的一项新增特性,主要用于提高代码的安全性和可读性。它允许程序员在编译时检查一个集合中元素的类型,避免了运行时出现类型转换异常,同时增强了程序的可读性。

Java泛型可以应用于Java中的类、接口和方法,我们先来看一下Java泛型的定义方式:

<T>

其中T是类型参数,它可以代表任意一种Java类型。我们可以将泛型类型转化为具体类型,例如:

ArrayList<String> list = new ArrayList<String>();list.add(\Java\String str = list.get(0);

上述代码中,泛型ArrayList<String>表示这个集合只能存储String类型的数据,而不是任意一种类型的数据。这样就可以在编译时检查这个集合中元素的类型,避免了类型转换异常的出现。

二、Java反射机制

Java反射机制是Java语言的一种特性,它可以在程序运行时动态地获取类的属性、方法和构造函数等信息,同时也可以在运行时动态地创建对象、调用方法和设置属性等操作。

Java反射机制主要提供了以下三个类来实现操作:

  • Class:用于获取类的信息,例如类名、父类、接口、构造函数、方法和属性等。
  • Constructor:用于创建类的对象。
  • Method:用于调用类的方法。

Java反射机制可以通过以下代码来获取类的信息:

Class cls = MyClass.class;Constructor[] constructors = cls.getConstructors();Method[] methods = cls.getMethods();Field[] fields = cls.getFields();

在获取类的信息之后,我们就可以通过Java反射机制动态地创建对象、调用方法和设置属性等操作。

三、Java线程同步

Java线程同步是保证多个线程之间顺序执行的一种机制。在Java中,使用synchronized关键字和锁机制来实现线程同步。

Java中的synchronized关键字可以修饰方法和代码块,用于保证在同一时间内只有一个线程能够访问同步方法或同步代码块。我们可以通过以下代码来使用synchronized关键字:

public synchronized void myMethod() {     // 同步方法体}public void myMethod2() {     synchronized (obj) {         // 同步代码块    }}

在进行线程同步时,还需要使用锁机制来保证线程之间的互斥性。Java中可以使用以下方式来实现锁机制:

  • synchronized关键字:同步方法或同步代码块
  • Lock接口:通过Lock接口可以实现更细粒度的锁控制,例如公平锁和非公平锁等
  • await()和signal()方法:在Java中,可以使用await()和signal()方法来实现线程的等待和唤醒操作,从而实现线程同步。

四、Java网络编程

Java网络编程是Java语言在网络上进行通信的一种方法,它可以建立客户端和服务器之间的连接,实现数据的传输和交换。

在Java网络编程中,主要使用Socket和ServerSocket两个类来实现客户端和服务器之间的通信。

Socket类用于建立客户端和服务器之间的连接,它提供了以下方法来实现数据的传输和交换:

  • getInputStream():获取输入流,用于从服务器读取数据。
  • getOutputStream():获取输出流,用于向服务器发送数据。
  • connect():连接服务器。
  • close():关闭连接。

ServerSocket类用于建立服务器,它提供了以下方法来接收客户端请求和处理数据:

  • bind():绑定服务器端口。
  • accept():接收客户端请求。
  • getInputStream():获取输入流,用于从客户端读取数据。
  • getOutputStream():获取输出流,用于向客户端发送数据。
  • close():关闭连接。

通过使用Socket和ServerSocket类,我们可以在Java中实现网络编程,实现客户端和服务器之间的通信。

五、Java异常处理

Java中的异常处理是程序员编写代码时必须要注意的问题之一。当程序出现异常时,如果不进行处理,程序就会中断执行,导致程序的不稳定性。

在Java中,可以使用try-catch-finally结构来处理异常。如果在try块中出现异常,系统会抛出一个异常对象,然后执行catch块中的代码来处理异常。finally块中的代码无论是否出现异常都会执行。

Java中的异常分为两种类型:

  • 受检异常:需要在方法声明中显式地抛出或捕获。
  • 非受检异常:不需要在方法声明中显式地抛出或捕获。

Java中的异常处理可以使用以下代码来实现:

try {     // 可能出现异常的代码块} catch (Exception e) {     // 异常处理代码块} finally {     // finally代码块}

通过以上代码,我们可以在Java中进行异常处理,保证程序的稳定性和可靠性。

六、Java反序列化与序列化

Java反序列化和序列化是Java语言中常用的一种数据存储和交换格式,它可以将Java对象序列化为字节序列,然后通过网络传输或保存到磁盘中。同时,也可以将字节序列反序列化为Java对象。

在Java中,可以使用ObjectOutputStream和ObjectInputStream类来实现Java对象的序列化和反序列化。以下是Java对象序列化和反序列化的代码示例:

// Java对象序列化ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(\data.ser\out.writeObject(obj);out.close();// Java对象反序列化ObjectInputStream in = new ObjectInputStream(new FileInputStream(\data.ser\Object obj = in.readObject();in.close();

通过Java对象的序列化和反序列化,我们可以将Java对象保存到磁盘中或通过网络进行交换。

总结

Java核心技术是Java语言中必须要掌握的重要内容之一,它涵盖了泛型、反射机制、线程同步、网络编程、异常处理和反序列化与序列化等方面。通过深入学习和实践,我们可以提高Java编程的能力和水平,为企业级应用和互联网应用的开发提供更加高效和可靠的基础。