java hashmap为什么初始16(HashMap是什么东西)
大家好,今天来为大家分享java hashmap为什么初始16的一些知识点,和HashMap是什么东西的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
jdk8中的ConcurrentHashMap究竟为什么高效
从源码来窥其一斑!
我们都知道hashMap不是线程安全的,因为在扩容方法中很容易出现死循环,hashTable使用锁的方式比较简单暴力,几乎在所有操作方法上都加了synchronized锁,导致总体性能很差,concurrentHashmap凭借线程安全且性能优异一直都是高并发中的首选key-value型数据结构;
concurrentHashmap的高性能有以下原因:
一,分段锁:jdk8中对concurrentHashmap进行了改进,抛弃了jdk7中新建segment作为分段锁的过程,jdk8中虽沿用了这种分段锁的思想,却直接使用数组中的数据作为分段锁保证concurrentHashmap在上锁的时候只针对数组下标下的数据进行上锁(比如如果数组长度为256,那么每次put平均只有1/256的数据被锁),而大多数其他的数据还是能进行正常的增删改操作,无需阻塞等待,这无疑极大的降低了锁的粒度,提升了性能。
二,红黑树:jdk8中引入了红黑树结构,在单个数组下标内的数据达到8以后,会自动转换为红黑树进行存储,使用大O表示法表示效率的话,红黑树的查找效率为O(log(n)),而链表的效率为O(n),当数据量越来越大的时候,红黑树的效率明显好于链表,所以concurrentHashmap性能得到很大提升;
现在我们主要从put方法中的主要方法来分析性能的提升:
spread(key.hashCode());//作用是再次哈希,减少冲突,源码如下
其中涉及到的位运算有
>>> 16:无符号右移16位,空位以0补齐。
^:异或运算符-->相同为0,不同为1;&:与运算符-->全1得1,否则0;
(h ^(h>>> 16))& HASH_BITS;所以这句代码的意思就是不仅消除高16位的影响,同时获得正整数的hash值
再来看后面的方法,如上图:
1,就是判断当这个hash表还是空的时候,调用initTable进行初始化; 2,使用(n- 1)& hash)计算数组下标,如果数据指定下标处为null,则直接插入,注: cas是java8中的concurrentHashmap引入的线程安全判断,CAS算法做为乐观锁;
3,(fh= f.hash)== MOVED,走到此处说明下标内有node,且该node的值为-1(MODED=-1),搜索全类发现MODED是在调用有参构造器ForwardingNode中默认写入的,而这个调用处刚好在transfer方法中,所以我们推断,扩容的时候先将数组下标内的node.hash置为-1!同时在3这一步中调用helpTransfer(tab, f)参与扩容,并把数据写入;
4,走到这说明node不是空的,也没在扩容,那么锁住该下标下的node,并把新value插入链表中; 5,如果锁住的这个node能实例化为TreeBin,则代表已经转化为红黑树进行存储,将数据插入红黑树中; 6,判断在4,5中计算得到的数组下标内所有节点总数,如果满足转化为红黑树的条件(节点数大于8),则自动转化为红黑树进行存储!
总的来说,concurrentHashmap之所以性能高就是因为使用了分段锁和红黑树!
至于conrrentHashmap其他的方法的源码分析,后期会补上的,更多的技术分享,敬请关注!
HashMap是什么东西
HashMap,中文名哈希映射,HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry。这些个键值对(Entry)分散存储在一个数组当中,这个数组就是HashMap的主干。HashMap数组每一个元素的初始值都是Null。
HashMap是基于哈希表的 Map接口的实现。此实现提供所有可选的映射操作,并允许使用 null值和 null键。(除了非同步和允许使用 null之外,HashMap类与 Hashtable大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
扩展资料:
因为HashMap的长度是有限的,当插入的Entry越来越多时,再完美的Hash函数也难免会出现index冲突的情况。
HashMap数组的每一个元素不止是一个Entry对象,也是一个链表的头节点。每一个Entry对象通过Next指针指向它的下一个Entry节点。当新来的Entry映射到冲突的数组位置时,只需要插入到对应的链表即可。
参考资料来源:
百度百科-Hashmap
求韩顺平讲java 中sql数据库中的那两张表的源码
我这边有韩顺平的视频讲座,很基础,从最基本的开始讲的,你需要的话我给你,下面是清单:
韩顺平循序渐进学 java从入门到精通第0讲-开山篇
韩顺平循序渐进学 java从入门到精通第1讲-内容介绍项目演示原理剖析
内容介绍:本章讲解以下内容:(1)课程介绍(2)项目演示(坦克游戏,雷霆战舰,满汉楼,爆炸人..)(3)java介绍(4)java开发工具介绍(5)java语言的特点(6)jdk的安装和配置演示(7)java运行原理剖析(Hello,wrold)
韩顺平循序渐进学 java从入门到精通第2讲-变量数据类型
内容介绍:本章讲解以下内容:(1)初识变量(2)java的基本数据类型(3)定义变量、初始化、赋值(4)基本数据类型的转换 a.自动转换 b.强制转换 c.计算中的转换
韩顺平循序渐进学 java从入门到精通第3讲-运算符流程控制
内容介绍:本章讲解以下内容:(1)java的算术运算符(2)java的关系运算符(3)java的逻辑运算符(4)java的三大流程控制-顺序控制(5)java的三大流程控制-分支控制
韩顺平循序渐进学 java从入门到精通第4讲-流程控制
内容介绍:本章讲解以下内容:(1)java的三大流程控制-分支控制(2)java的三大流程控制-循环控制(3)作业布置
韩顺平循序渐进学 java从入门到精通第5讲-类对象
内容介绍:本章讲解以下内容:(1)类的介绍(2)对象的介绍(3)类和对象关系(4)类和对象的区别和联系(5)如何定义类(6)如何创建类
韩顺平循序渐进学 java从入门到精通第6讲-成员属性成员方法
内容介绍:本章讲解以下内容:(1)类的成员属性(2)如何访问(使用)对象的成员变量(3)对象在内存的形式(4)类的成员方法的定义和使用
韩顺平循序渐进学 java从入门到精通第7讲-成员方法构造方法
内容介绍:本章讲解以下内容:(1)类的成员方法的理解(2)方法-调用过程(3)类的成员方法(函数)-注意事项(4)类的成员方法的定义和使用(5)类的构造方法(默认构造方法)(6)类的构造方法小结
韩顺平循序渐进学 java从入门到精通第8讲-this类变量
内容介绍:本章讲解以下内容:(1)this代词详讲(2)类变量详讲
韩顺平循序渐进学 java从入门到精通第9讲-类方法封装
内容介绍:本章讲解以下内容:(1)类方法详解(2)抽象(3)封装(4)四个访问修饰符 public private protected默认(5)包
韩顺平循序渐进学 java从入门到精通第10讲-访问修饰符重载覆盖
内容介绍:本章讲解以下内容:(1)四个访问修饰符的详解(2)继承详解(3)方法的重载
(4)方法的覆盖
韩顺平循序渐进学 java从入门到精通第11讲-约瑟夫问题
内容介绍:本章讲解以下内容:(1)约瑟夫问题详解(用链表解决)
韩顺平循序渐进学 java从入门到精通第12讲-多态
内容介绍:本章讲解以下内容:(1)多态详解
韩顺平循序渐进学 java从入门到精通第13讲-抽象类接口
内容介绍:本章讲解以下内容:(1)抽象类详解(2)接口的详解
韩顺平循序渐进学 java从入门到精通第14讲-final作业评讲
内容介绍:本章讲解以下内容:(1)用接口实现多态(2)实现接口 vs继承类(3)final修饰符详解
(4)作业评讲
韩顺平循序渐进学 java从入门到精通第15讲-作业测试题
(1)作业、测试题评讲
韩顺平循序渐进学 java从入门到精通第16讲-数组
(1)数组详解(2)简单数据类型的数组(3)对象数组
韩顺平循序渐进学 java从入门到精通第17讲-排序
(1)排序介绍(2)冒泡排序(3)选择排序
韩顺平循序渐进学 java从入门到精通第18讲-排序查找
(1)插入排序法(2)快速排序法(3)外部排序法(4)查找介绍(5)顺序查找和二分查找
韩顺平循序渐进学 java从入门到精通第19讲-多维数组
(1)多维数组讲解
韩顺平循序渐进学 java从入门到精通第20讲-二进制位运算位移运算
内容介绍:本章讲解以下内容:(1)二进制(原码、反码、补码)(2)位运算(取反,位与,位异或,位或)(3)位移运算(算术右移,算术左移,逻辑左移)
韩顺平循序渐进学 java从入门到精通第21讲-集合
内容介绍:本章讲解以下内容:(1)集合框架图,体系介绍(2)ArrayList详解
韩顺平循序渐进学 java从入门到精通第22讲-集合
内容介绍:本章讲解以下内容:(1)使用ArryaList完成雇员薪水管理系统(2)LinkedList的介绍和使用(3)Vector的介绍和使用(4)Stack(栈)的介绍和使用
韩顺平循序渐进学 java从入门到精通第23讲-集合
内容介绍:本章讲解以下内容:(1)HashMap的介绍和使用(2)Hashtable的介绍和使用(3) HashMap、Hashtable的区别(4) ArrayList、Vector的区别
韩顺平循序渐进学 java从入门到精通第24讲-集合补充
内容介绍:本章讲解以下内容:(1)对集合使用的补充说明.
韩顺平循序渐进学 java从入门到精通第25讲-泛型异常
内容介绍:本章讲解以下内容:(1)java泛型介绍(2)java泛型举例详解(3)java泛型的优点
(4)异常的介绍和异常的分类
韩顺平循序渐进学 java从入门到精通第26讲-异常
内容介绍:本章讲解以下内容:(1)异常的处理-try catch finally(2)异常的处理-throws
韩顺平循序渐进学 java从入门到精通第27讲-作业评讲
内容介绍:本章讲解以下内容:(1)作业评讲(最佳裁判、学生成绩...)
韩顺平循序渐进学 java从入门到精通第28讲-面试题评讲
内容介绍:本章讲解以下内容:(1)赛迪网程序员面试题评讲[最后待定...]
韩顺平循序渐进学 java从入门到精通第29讲-满汉楼 swing介绍
内容介绍:本章讲解以下内容:(1)图形用户界面编程介绍(gui)(2)满汉楼餐饮系统演示
(3)awt swing swt jface关系(4)eclipse介绍(5)swing组件介绍(6)swing的窗体组件和按钮组件
韩顺平循序渐进学 java从入门到精通第30讲-布局管理器
内容介绍:本章讲解以下内容:(1)布局管理器介绍(2)BorderLayout边界布局(3)FlowLayout流式布局(4)GridLayout网格布局
韩顺平循序渐进学 java从入门到精通第31讲-常用组件
内容介绍:本章讲解以下内容:(1)JPanle的介绍和使用(2)布局管理器的综合使用
(3)swing常用组件JTextField JPasswordField JLabel(4)swing常用组件JCheckBox JRadioButton(5)swing常用组件 JComboBox JList JScrollPane
韩顺平循序渐进学 java从入门到精通第32讲-swing编程实战
内容介绍:本章讲解以下内容:(1)swing编程实战-金山词霸界面(2)swing编程实战-qq聊天界面(3)swing编程实战-qq登录界面(4)swing编程实战-记事本界面(5)swing组件 JSplitPane JTextArea JTabbedPane(6)swing组件JMenuBar JMenu JMenuItem JToolBar
韩顺平循序渐进学 java从入门到精通第33讲-绘图技术坦克大战1
内容介绍:本章讲解以下内容:(1)坦克大战游戏演示(2)java绘图坐标系
(3)像素的概念(4)java绘图技术-原理(5)java绘图常用的方法
韩顺平循序渐进学 java从入门到精通第34讲-绘图技术坦克大战2
内容介绍:本章讲解以下内容:(1)坦克大战游戏-绘出坦克(2)作业-画蛤蟆和王八
韩顺平循序渐进学 java从入门到精通第35讲-事件处理坦克大战3
内容介绍:本章讲解以下内容:(1)java事件处理机制-原理(2)java事件处理机制案例详解
(3)事件源事件事件监听者事件处理方法详解(4)java事件处理机制通俗版理解
(5)让一个小球可以被控制上下左右移动(键盘监听)
韩顺平循序渐进学 java从入门到精通第36讲-事件监听坦克大战4
内容介绍:本章讲解以下内容:(1)java事件处理机制继续讲解(2)事件监听器接口
(3)事件处理机制的一些案例
韩顺平循序渐进学 java从入门到精通第37讲-事件总结坦克大战5
内容介绍:本章讲解以下内容:(1)java事件处理编程总结(2)坦克大战游戏---让自己的坦克可以自由的移动.
韩顺平循序渐进学 java从入门到精通第38讲-线程坦克大战6
内容介绍:本章讲解以下内容:(1)进程的介绍(2)线程的介绍及其作用
(3)用继承Thread类的方法来开发线程(4)用实现Runnable接口的方法来开发线程
韩顺平循序渐进学 java从入门到精通第39讲-线程坦克大战7
内容介绍:本章讲解以下内容:(1)如何更好的理解线程(2)继承Thread和实现Runnable接口的区别(3)线程的实际运用---坦克大战游戏(3.0)玩家可以发射子弹.
韩顺平循序渐进学 java从入门到精通第40讲-线程
内容介绍:本章讲解以下内容:(1)线程使用的经验之谈(2)线程同步处理方式
(3)对象锁和线程安全(4)synchronized的具体使用
韩顺平循序渐进学 java从入门到精通第41讲-坦克大战8
内容介绍:本章讲解以下内容:(1)坦克大战游戏升级(3.0)玩家可以连续发射子弹
(2)坦克大战游戏升级(3.0)当击中敌人坦克时,敌人坦克就消失
韩顺平循序渐进学 java从入门到精通第42讲-坦克大战9
内容介绍:本章讲解以下内容:
(1)坦克大战游戏升级(4.0)当击中敌人坦克时,敌人坦克就消失,并出现爆炸效果
(2)坦克大战游戏升级(4.0)敌人坦克可以自由移动
(3)坦克大战游戏升级(4.0)敌人坦克可以移动控制在区域内
(4)坦克大战游戏升级(4.0)敌人坦克可以发射子弹
(5)坦克大战游戏升级(4.0)敌人坦克可以连发子弹
韩顺平循序渐进学 java从入门到精通第43讲-io编程坦克大战10
内容介绍:本章讲解以下内容:
(1)坦克大战游戏升级(4.0)当敌人的坦克击中我的坦克时,我的坦克爆炸并消失
(2)坦克大战游戏升级(4.0)如何控制敌人坦克重迭运动
(3)java io编程(文件编程)初步介绍
(4)文件和文件流的基本概念
(5)java io流类一览表
(6)文件流的分类字节流和字符流的介绍
韩顺平循序渐进学 java从入门到精通第44讲-io编程
内容介绍:本章讲解以下内容:(1)java常用 io流-文件类(File)(2)演示如何得到文件信息
(3)演示如何创建文件夹,遍历文件,创建新文件
(4)FileInputStream和 FileOutputStream类的使用案例
韩顺平循序渐进学 java从入门到精通第45讲-io编程
内容介绍:本章讲解以下内容:
(1)使用FileInputStream和 FileOutputStream完成图片拷贝
(2)文件字符流的使用案例 FileReader FileWriter
(3)缓冲字符流的使用案例 BufferedReader BufferedWriter
(4)打印输出流的案例 PrintWriter
韩顺平循序渐进学 java从入门到精通第46讲-io编程记事本开发
内容介绍:本章讲解以下内容:(1)java io编程综合案例(2)一个简单的文件记事本开发
韩顺平循序渐进学 java从入门到精通第47讲-坦克大战11
内容介绍:本章讲解以下内容:(1)坦克大战游戏升级(5.0)如何控制敌人坦克重迭运动
韩顺平循序渐进学 java从入门到精通第48讲-坦克大战12
(1)坦克大战游戏升级(5.0)可以分关
(2)坦克大战游戏升级(5.0)闪烁效果
(3)坦克大战游戏升级(5.0)可以在玩游戏的时候暂停和继续
(4)坦克大战游戏升级(5.0)可以记录玩家的成绩
韩顺平循序渐进学 java从入门到精通第49讲-坦克大战13
(1)坦克大战游戏升级(5.0)可以存盘退出
(2)坦克大战游戏升级(5.0)可以恢复到退出状态接着上一局玩
韩顺平循序渐进学 java从入门到精通第50讲-坦克大战14
(1)坦克大战游戏升级(5.0) java播放声音文件(2)播放经典的fc坦克大战游戏开始音.
韩顺平循序渐进学 java从入门到精通第51讲-作业评讲
内容介绍:本章讲解以下内容:(1)老猴排序-作业评讲
韩顺平循序渐进学 java从入门到精通第52讲-试题评讲
内容介绍:本章讲解以下内容:(1)赛迪网初级程序员笔试题评讲
韩顺平循序渐进学 java从入门到精通第53讲-数据库概念
(1)数据库的基本概念(2)数据库的基本结构(3)数据库的基本特点(4)目前主流数据库的介绍
韩顺平循序渐进学 java从入门到精通第54讲-sql server安装配置卸载
(1)sql server数据库的安装、配置、卸载
韩顺平循序渐进学 java从入门到精通第55讲-sql server基本使用
(1)数据库sa用户和普通用户的创建和密码分派(2)windows验证和混合验证的讲解
(3)企业管理器的基本使用案例
韩顺平循序渐进学 java从入门到精通第56讲-查询分析器 ddl dml dql
(1)查询分析器的基本使用案例(2)简单的ddl、dml和 dql语句使用案例
韩顺平循序渐进学 java从入门到精通第57讲-sql server数据类型
(1)表名和列名的命名规则(2)表支持的数据类型-字符型char varchar text ntext nchar nvarchar(3)表支持的数据类型-数字类型 bit
韩顺平循序渐进学 java从入门到精通第58讲-sql server数据类型
(1)表支持的数据类型-数字类型 int bigint float numeric
(2)表支持的数据类型-日期类型 datetime timestamp
(3)表支持的数据类型-image binary
(4)表的基本操作(建表,增,删,改)
韩顺平循序渐进学 java从入门到精通第59讲-sql server基本查询
(1)表的主键和外键(2)查询所有列,指定列,取消重复行(3)使用算术表达式,使用列的别名(4)使用where子句(5)模糊查询(like)
韩顺平循序渐进学 java从入门到精通第60讲-sql server基本查询
(1)在where条件中使用in(2)使用is null的操作符(3)使用逻辑操作符号(4)使用order by字句
(5)使用列的别名排序(6)数据分组-max,min,avg,sum,count(7)group by和 having子句
(8)对数据分组的总结
韩顺平循序渐进学 java从入门到精通第61讲-sql server复杂查询
(1)多表查询(2)自连接(3)子查询单行子查询多行子查询
韩顺平循序渐进学 java从入门到精通第62讲-sql server复杂查询
(1)在from子句中使用子查询(2)分页查询(3)内连接(4)外连接(左外连接右外连接)
韩顺平循序渐进学 java从入门到精通第63讲-sql server约束
(1)维护数据的完整性(2)主键外键 not null foreign key unique check
韩顺平循序渐进学 java从入门到精通第64讲-sql server备份恢复 jdbc-odbc
(1)使用企业管理器完成数据库的分离、附加(2)使用企业管理器完成数据库的备份和恢复
(3)使用查询分析器完成数据库的备份和恢复(4)crud介绍
(5)jdbc介绍和jdbc驱动的分类(6)jdbc-odbc桥连接的案例详解
韩顺平循序渐进学 java从入门到精通第65讲-sql server jdbc
(1)jdbc-odbc桥连案例详解(2)sql注入漏洞解析(3)使用PreparedStatement技巧
(4)Statement和PreparedStatement的区别
韩顺平循序渐进学 java从入门到精通第66讲-sql server jdbc
(1)jdbc驱动直连数据库(2)jdbc的案例详解(3)在java程序中创建,删除数据库(表)
(4)在java程序中备份,恢复数据库(表)
韩顺平循序渐进学 java从入门到精通第67讲-sql server作业评讲
(1)对表操作的测试题评讲(重要!)
韩顺平循序渐进学 java从入门到精通第68讲-项目开发流程
(1)软件开发项目流程介绍(2)满汉楼餐饮系统简单介绍和分析
韩顺平循序渐进学 java从入门到精通第69讲-学生管理系统1项目分析
(1)学生管理系统开发流程详细介绍1.使用jude作出流程图2.设计数据库3.功能分析
(3)数据库编程实战之一--学生管理系统1
韩顺平循序渐进学 java从入门到精通第70讲-学生管理系统2
(1)数据库编程实战之一--学生管理系统2
韩顺平循序渐进学 java从入门到精通第71讲-学生管理系统3增删改
(1)数据库编程实战之一--学生管理系统3完成对学生的增加、删除、修改
韩顺平循序渐进学 java从入门到精通第72讲-学生管理系统4 model2模式
(1)数据库编程实战之一--学生管理系统4
完成对学生信息的修改
(2)提出模式的概念(3)对学生管理系统从model1模式改为model2模式
韩顺平循序渐进学 java从入门到精通第73讲-学生管理系统5 dao sqlhelper
(1)数据库编程实战之一--学生管理系统5
在model2模式中对model层再次分层.业务层和DAO层.
(2)编写一个DAO类 SqlHelper(3)完成学生管理系统并总结
韩顺平循序渐进学 java从入门到精通第74讲-满汉楼系统1项目分析
(1)java项目实训之--满汉楼餐饮系统1
满汉楼餐饮系统设计分析
满汉楼餐饮系统使用演示
满汉楼餐饮系统设计文档说明
(2)充分理解项目开发五大流程.
韩顺平循序渐进学 java从入门到精通第75讲-满汉楼系统2项目分析
(1)java项目实训之--满汉楼餐饮系统2
满汉楼餐饮系统安装与配置
满汉楼餐饮系统的操作流程
韩顺平循序渐进学 java从入门到精通第76讲-满汉楼系统3实现闪屏登录
(1)java项目实训之--满汉楼餐饮系统3
a.实现登录闪屏效果b.实现登录界面
韩顺平循序渐进学 java从入门到精通第77讲-满汉楼系统4菜单
(1)java项目实训之--满汉楼餐饮系统4
a.实现登录界面所有b.实现经理,主管,系统管理员的操作主界面-菜单部分
韩顺平循序渐进学 java从入门到精通第78讲-满汉楼系统5工具栏状态栏
(1)java项目实训之--满汉楼餐饮系统5
a.对主界面的布局结构进行分析
b.实现经理,主管,系统管理员的操作主界面-工具栏和状态栏
韩顺平循序渐进学 java从入门到精通第79讲-满汉楼系统6登录验证
(1)java项目实训之--满汉楼餐饮系统6
a.编写数据层,业务层的部分类,完成用户到数据库的登录验证
b.加深对model2模式的认识.c.编写SqlHelper工具类
韩顺平循序渐进学 java从入门到精通第80讲-满汉楼系统7窗口拆分
(1)java项目实训之--满汉楼餐饮系统7
a.完成经理,主管,系统管理员的操作主界面-八个可选操作选项
b.完成窗口的拆分显示
韩顺平循序渐进学 java从入门到精通第81讲-满汉楼系统8界面切换
(1)java项目实训之--满汉楼餐饮系统8
a.完成经理,主管,系统管理员的操作主界面-人事管理和登录管理切换
b.完成主界面一些特效
韩顺平循序渐进学 java从入门到精通第82讲-满汉楼系统9人事管理
(1)java项目实训之--满汉楼餐饮系统9
a.完成经理,主管,系统管理员的操作主界面-人事管理的显示,增加,删除和修改
韩顺平循序渐进学 java从入门到精通第83讲-满汉楼系统10报表统计 uml图
(1)java项目实训之--满汉楼餐饮系统10
a.完成经理,主管,系统管理员的操作主界面-报表统计的显示
b.如何使用jude软件设计uml的用例图,类图,和时序图(重要)
c.满汉楼项目实训之-结束语
韩顺平循序渐进学 java从入门到精通第84讲-网络基础
(0)java网络编程开篇名义(1)山寨版qq项目演示(2)为什么选择qq来讲解网络编程
(3)网线,网卡,无线网卡(4)协议(tcp/ip)介绍(5)ip地址介绍(6)Ip地址与包的路由传递
韩顺平循序渐进学 java从入门到精通第85讲-port url socket编程原理
(1)端口port(2)url地址(3)单工、半双工和全双工概念.(4)java网络编程基本原理图
(5)客户端向服务器端互发信息(半双工通讯)
韩顺平循序渐进学 java从入门到精通第86讲-半双工双全工
(1)客户端向服务器端互发信息(半双工通讯)
在案例一得基础上增加,可以从控制台输入信息,相互通讯.
(2)客户端和服务器端,可以任意互发信息,带界面
韩顺平循序渐进学 java从入门到精通第87讲-山寨qq项目1登录界面
(1)山寨版qq天下项目实战之一(2)完成山寨版qq登录界面
韩顺平循序渐进学 java从入门到精通第88讲-山寨qq项目2好友列表界面
(1)山寨版qq天下项目实战之二(2)完成山寨版qq的好友列表界面
韩顺平循序渐进学 java从入门到精通第89讲-山寨qq项目3聊天界面对象流
(1)山寨版qq天下项目实战之三(2)完成山寨版qq聊天界面(3)讲解如何在网络间传递对象流
韩顺平循序渐进学 java从入门到精通第90讲-山寨qq项目4登录验证
(1)山寨版qq天下项目实战之四(2)完成服务器控制界面
(3)完成客户端和服务器端得程序结构分析(4)完成用户的登录验证(到服务器去验证)
韩顺平循序渐进学 java从入门到精通第91讲-山寨qq项目5一对一的聊天
(1)山寨版qq天下项目实战之五
(2)完成鼠标移动到那个好友就高亮他,双击可以跳出聊天窗口(3)完成一对一的聊天
韩顺平循序渐进学 java从入门到精通第92讲-山寨qq项目6多对多的聊天
(1)山寨版qq天下项目实战之六(2)完成山寨版qq多对多的聊天
韩顺平循序渐进学 java从入门到精通第93讲-山寨qq项目7好友在线提示
(1)山寨版qq天下项目实战之七(2)完成山寨版qq多对多的聊天的显示
(3)完成山寨版qq如何好友在线则显示彩色头像,如果不在线则显示灰色的头像.
韩顺平循序渐进学 java从入门到精通第94讲-山寨qq项目8好友在线提示
(1)山寨版qq天下项目实战之八(2)完成山寨版qq当一个好友上线,可以通知所有
在线的好友,并让他的头像显示彩色头像.
(3)提出要完成的新任务.
1.不让同一个账号反复登录
2.如果好友不在线,则不能聊天.
********************************************************************
关于java hashmap为什么初始16到此分享完毕,希望能帮助到您。