前言:

今天要分享的是关于 《Head First Java》这本书的读后感,这本书有点小厚差不多有七百页左右,所以我花了几乎整个国庆的时间去阅读,学习。读完之后发现,受益颇多。正如书名所说的,它是一本重视大脑的学习指南。无论你是Java开发工程师,还是android开发工程师,这本书都是良师益友。下面让我们一起看看,我会以零碎的列表方式呈现,并以通俗的方式讲解那些你迷糊不清的细节?(细心的你恐怕已经发现了,这个系列的文章的前言都是一毛一样的,因为我不确定你先点开的是第几篇,哈哈)

正文:

[1]将被序列化的对象写到文件中,然后就可以让你的程序去文件中读取序列化的对象并把它们展开回到活生生的状态。序列化的文件时很难让一般人阅读的,但他比纯文本文件更容易让程序恢复会原来的状态,也比较安全,因为一般人不会知道如何动手动脚改数据。
[2] Stream这类串流需要两两连接才能做出有意义的事情,一个是低层的串流,一个高层的串流,这样的设计是出于面向对象考虑,一个类只做好一件事。同时通过组合不同的串流,又可以变化出很多花样。
[3]序列化的对象保存了实例变量的值,因此之后可以在堆上带回一模一样的实例。比较叼的就是当对象被序列化时,被该对象引用的实例变量也会被序列化。且所有被引用的对象也会被序列化。。。。最棒的是,这些操作都是自动进行的!
[4]如果要让类能够被序列化,就实现SerializableSerializable接口又被称为markertag类的标记用接口,因为此接口并没有任何方法需要实现的。如果某类事可序列化的,则它的子类也自动地可以序列化(接口的本意就是如此)。
[5]如果一个类中有引用到其他不可序列化的对象,那么这个类也是无法序列化的,切记!如果有变量不想被序列化的,则用transient来修饰变量即可。那些变量主数据类型值会变成默认值,引用的变量会变成null
[6]如果有两个对象都有引用实例变量指向相同的对象对怎么样?例如两个Cat都有相同的Owner对象?那Owner会被存储两次吗?答案:序列化聪明得足以分辨两个对象是否相同,在此情况下只有一个对象会被存储,其他引用会复原成指向改对象。
[7] FileInputStreamObjectInputStream组合使用的时候,如果os.close();的话FileInputStream会自动跟着关掉!
[8]被序列化的对象在解序列化的时候,它的构造函数是不会执行的!切记!
[9]静态变量,它们会被序列化吗?答案:不会。要记得static代表“每个类一个”而不是“每个对象一个”。当对象被还原时,静态变量会维持类中原本的样子,而不是存储时的样子,自己测试哈。
[10]关于File有个很有用的功能就是它提供一种比使用字符串文件名来表示文件更安全的方式。
[11]缓冲区的奥妙之处就在于使用缓冲区比没有使用缓冲区的效率更高。因为每趟磁盘操作都会比内存操作要花费跟多时间。通过BufferedWriterFileWriter的链接,BufferedWriter可以暂存一堆数据,然后到满的时候再实际写入磁盘,这样就可以减少对磁盘操作的次数,从而提高效率。
[12]如果想要强制缓冲区立即写入,只要调用writer.flush()这个方法即可
[13] Stringsplit()可以把字符串拆开成数组。
[14]每台服务器上都有65536个端口,但是我们自己在写测试socket的时候,用的端口都要在1023之后,因为0~1023都已经被保留给已知的特定服务。
[15] Socket serverSocket = new Socket("127.0.0.1",5000)这是建立服务器的Socket连接写法。Socket sock = serverSocket.accept();当用户连上来的时,此方法会返回一个Socket(在不同的端口上)以便与客户端通信。SocketServerSocket的端口不相同,因此ServerSocket可以空出来等待其他的用户。
[16]当启动多线程的时候,我们会觉得同时在做好几件事情,其实只有真正的多处理器系统能够同时执行好几件事,所以其实多线程只是在执行空间里面非常地快速来回交换执行而已。
[17] Runnable threadJob = new MyRunnable();,该类就是你对线程要执行的任务的定义,也就是说此方法会在线程的执行空间运行。
[18]一旦线程执行.start();线程会进入可执行状态,它会在可执行与执行中两种状态中来来去去,同时也有另外一种状态:暂时不可执行(又称为被堵塞状态)。
[19]当多个线程同时操作同一个对象的时候,容易发生数据错误的情况,解决方式就是同步化方法,synchronized。当对象有一个或多个同步化的方法时,线程只有在取得对象锁的钥匙时才能进入同步化的方法。从而保护数据的安全。(不过代价就是损耗性能,需要自己权衡)同时注意死锁的情况。
[20]每个Java对象都有一个锁,每个锁只有一把钥匙。类也有个锁,?
[21]高级java类设计中,泛型的使用是非常高明的,什么是泛型,只要你看到<>就是了,其实到处都是。以泛型的观点来说,extend代表extendimplement。哈哈,不看不知道哈
[22]数组的类型是在运行期间检查的,但集合的类型检查只会发生在编译期间,在多态赋值的时候,集合可没那么容易让你过哈,?
[23]远程过程调用的设计,要创建4种东西:服务器,客户端,服务器辅助设施和客户端辅助设施。其实真相就是两个辅助设施两者在负责通信,客户端跟服务器只是把命令给他们,结果拿回来而已。

总结:

大结局啦,?,其实这三篇文章是我看完之后,觉得有必要从七百多页的书中提出去来的要点,也希望对大家有帮助。我们可是攻城狮,fight!

《Head First Java》的思考总结:第三篇相关推荐

  1. 初学Java ssh之Spring 第三篇

    在这篇中,我学习了依赖注入的两种方式:设值注入和构造注入. 在我们以前的思维中,如果调用一个类时,我们都需要将其手动实例化,当我们创建被调用的工作不需要我们完成时,这就是控制反转,当这个将被调用的实例 ...

  2. 总结java创建文件夹的4种方法及其优缺点-JAVA IO基础总结第三篇

    本文是Java IO总结系列篇的第3篇,前篇的访问地址如下: 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇 ...

  3. cmd 将文件夹下文件剪切到另外一个文件_总结java中文件拷贝剪切的5种方式-JAVA IO基础总结第五篇...

    本文是Java IO总结系列篇的第5篇,前篇的访问地址如下: 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇 ...

  4. Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream

    Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/ ...

  5. 我的面试标准:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架!...

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:hsm_computer www.cnblogs.com/J ...

  6. java tcp 三次握手_用Java代码分析TCP的三次握手四次挥手过程

    (1)客户端发送一个带SYN标志的TCP报文到服务器.这是三次握手过程中的报文1. (2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志.因此它表示对刚才客户 ...

  7. 2021年4月22日 阿里供应链Java开发实习面试(三面)(含总结)

    title: 2021年4月22日 阿里供应链Java开发实习面试(三面) tags: 面经 2021年4月22日 阿里供应链Java开发实习面试(三面) 上来就手撕一道代码--输入一个数,然后顺时针 ...

  8. Java NIO 学习笔记(三)----Selector

    目录: Java NIO 学习笔记(一)----概述,Channel/Buffer Java NIO 学习笔记(二)----聚集和分散,通道到通道 Java NIO 学习笔记(三)----Select ...

  9. 零基础学Java需要先具备的三项技能

    随着互联网的发展,许多公司都在招Java工程师,很多零基础的Java小白看中了Java的高薪资,也都想转行做Java,但是零基础学Java需要先具备哪些技能呢?本文小千整理了零基础学Java需要先具备 ...

最新文章

  1. 2022-2028年中国新型氟塑料行业市场发展模式及投资机会预测报告
  2. sql查询父节点所有子节点id_5招搞定SQL棘手问题,同事看到直呼“内行”
  3. 送你6份最新开源代码!含NLP、ML、计算机视觉方向(附代码论文)
  4. 深入C#学习系列一:序列化(Serialize)、反序列化(Deserialize)
  5. linux socket中 send recv函数的 flags参数
  6. 手机内存解读以及android刷机原理
  7. 利用JS实现点击上一周或下一周却换
  8. Pgbouncer 介绍
  9. Android Fragment (一)
  10. Axios和Ajax处理后台返回文件流实现文件下载(图片和Excel)
  11. 【转载】Android加载大图片OOM异常解决
  12. Svchost进程应用技巧
  13. Process相关函数
  14. 心电自动分析技术综述-Phililps DXL / GE Marquette / Glasgow / HES Hannover / Mortara / 福田 / 光电...
  15. 贴片二极管正负极如何区分
  16. 关于人工智能研究思路的一点设想
  17. 【清华大学陈渝】第三章 计算机体系结构
  18. 想用FPGA加速神经网络,这两个开源项目你必须要了解
  19. 【Hadoop】P2 Hadoop简介
  20. Mac 硬件驱动(.kext)安装方法

热门文章

  1. 提高PHP编程效率的53个要点(转)
  2. 收集的网络上大型的开源图像处理软件代码(提供下载链接)
  3. react-dnd中context丢失解决方法
  4. hbase设计方案1
  5. Vmware安装提示在关闭以下进程 之前,无法进行安装的解决办法
  6. Ignoring unused library classes...java.io.IOException: You have to specify '-keep' options for the s
  7. PLSQL_性能优化系列04_Oracle Optimizer优化器
  8. PHP遇到json解决的两个办法,转为数组,直接取值
  9. 对SQLSERVER进行性能监控
  10. 关闭windows窗口时操作