
Java基础知识
潇潇凤儿
快乐过好每一天,时刻向上得了厅堂,下得了厨房,写得了代码的好码农进步。
展开
-
Java集合Set、Map、HashSet、HashMap、TreeSet、TreeMap等
1、Set和Map的关系:Set代表一种集合元素无序、不可重复的集合,Map代表一种由多个key-value对组成的集合。Set的集合继承体系:Map关系集合Map集合的key特征:所有key不能重复,key之间没有顺序。Map集合的所有key将具有set集合的特征。对Set做改造可将Set改造成Map集合;2、HashSet和HashMap的区别和联系:原创 2015-11-14 16:50:39 · 7896 阅读 · 1 评论 -
Java虚拟机垃圾回收机制问题总结
看完了《深入理解Java虚拟机》一书,对于垃圾回收机制也有一定了解,现在总结下,加深下理解。先说说Java虚拟机的内存模型,知道哪些对象分别存在JVM的哪个区域,垃圾收集器主要负责回收哪块区域:1. Java虚拟机运行时内存模型Java虚拟机的内存区域分成五块,其中三个是线程私有的:程序计数器、Java虚拟机栈、本地方法栈;另两个是线程共享的:Java堆、方法区。线程私有的区域等到线程结束时(栈帧...原创 2018-07-04 11:02:45 · 2849 阅读 · 0 评论 -
Java虚拟机中对象探秘--对象头创建、对象头、对象锁、synchoronized底层实现
今天看别人的博客,讲到面试相关的问题,其中有一个知识点是:synchronized关键字,Java对象头、Markword概念、synchronized底层实现,monitorenter和monitorexit指令,一脸蒙逼,虽然早期把《深入理解Java虚拟机》这本书看过一遍了,可是发现当时只是走马观花的看,对于这些知识点,还是不知道,今天特意把Java对象这一节再次重新读一遍,加深记忆。对上面这...原创 2018-05-18 16:26:01 · 8156 阅读 · 3 评论 -
TCP的三次握手、四次挥手--非常详细讲解
本篇文章转自 TCP的三次握手(建立连接)和四次挥手(关闭连接) 建立连接: 理解:窗口和滑动窗口TCP的流量控制TCP使用窗口机制进行流量控制什么是窗口?连接建立时,各端分配一块缓冲区用来存储接收的数据,并将缓冲区的尺寸发送给另一端接收方发送的确认信息中包含了自己剩余的缓冲区尺寸剩余缓冲区空间的数量叫做窗口2. TCP的流控过程(滑动窗口)TCP(T转载 2017-10-13 15:43:03 · 66558 阅读 · 5 评论 -
Hashmap\LinkedHashMap的实现原理分析
虽然网上已有很多人写关于HashMap源码分析的文章,但看完过一段时间后,又有点模糊了,觉得只有自己真正再将其履一遍,并真正把它能讲清楚,自己才算真正掌握了。在读本文之前如果你对以下几个问题都了如指掌,此文可略过。 1. HashMap的数据结构是什么?hash冲突是指什么? 2. HashMap是怎么解决hash冲突的,链表法是如何实现的? 3. 为什么HashMap的容量必须是2的指数幂?原创 2017-10-13 11:04:59 · 3438 阅读 · 1 评论 -
Effective Java--序列化--你以为只要实现Serializable接口就行了吗
前言相信大家对于序列化都有一些了解,实现也很简单,只需要实现Serializable接口,将类加上序列化的标记,编译器就会自动给我们类对象添加序列化和反序列化实现,这样我们就可以happy的进行数据持久化,保存到磁盘上或是通过网络传输。真的这么简单的,你想过以下问题么?子类和父类序列化,父类不序列化,子类序列化,父类变量是否会被序列化,应该怎么实现父类的变量也能序列化?自定义序列化怎么实现?wr原创 2017-07-18 17:53:40 · 7743 阅读 · 6 评论 -
Effective java第二版读书笔记
下面对Effective java第二版中的技术点进行总结 技巧 优点 缺点及注意事项 用静态工厂方法代替构造器 有名称, 不必在每次调用时都创建一个新对象,可返回原返回类型的任何子类型对象,创建参数化实例时,代码更简洁 若类不含有公有或受保护的构造器,不能被子类化,它们与其他静态方法实际上没有任何区别 多个构造器参数时考虑用构造器 Builder模式,利用所有必要的参原创 2017-05-16 17:39:39 · 1819 阅读 · 0 评论 -
Java中数组、对象及其内存管理、回收
这几天看李刚写的《Java程序员的基本修养》一书,挺有感触的,以前对数组、对象都是拿来主义,但对里面的内存分配都不大关心,而一般互联网公司在笔试题部分或多或少都会涉及此方面的知识,下面就我近期的学习进行总结。 从问题答案的方法入手来理解: 1、Java中声明并创建数组过程中,内存是如何分配的? 先看看下面的代码:public clas原创 2015-11-14 10:37:27 · 8900 阅读 · 0 评论