java高并发设计(十一)

Wesley13
• 阅读 681

一直在写java高并发的博客,突然想起自己刚开始学习相关技术开发的境况,一切都只是理论,案例是最能讲解的地方,后面的章节将从采用netty通信实现rpc的服务调用,采用hession序列化来设计netty的编码解码操作。该项目将涉及到单例设计,回调设计,数据安全设计,数据加载设计,面向接口设计。会涉及java自身的线程池,多线程执行,高并发数据安全,同时也出现借助google的guava插件实现更好的线程池操作,借助common工具包实现反射,整合jdk的动态代理。

首先,你可以了解netty,也可以不了解netty,根据demo中出现的类或者方法,我将一一讲解,并说明相关的使用,也许会有一部分瑕疵,毕竟自己也是学习者,不能保证所有观念都是完全正确的,但是保证demo可以执行多线程,高并发的应用场景,满足互联网开发的需求。

再者,你要熟悉java的核心内容,你要了解java的常用设计模式,最简单的就是安全的单例模式(要求是性能)。熟悉jdk中的各个集合,知道在什么时候用什么样的数据集合,什么时候用安全的数据集合,什么时候用非安全的数据集合。熟悉java处理异步的线程操作,并且熟悉怎么保证多线程执行中性能的保护,减少不必要的垃圾回收。多线程肯定会设计到线程安全,熟悉常用的线程安全设计和关键字用法。熟悉jdk的动态代理和反射机制,怎么更好的利用动态代理和反射来完成功能架构。

最后,你要选择一个你熟悉的序列化工具包,一般都不会用jdk自身的序列化框架,性能和效率不敢恭维,这里选择hession是因为熟悉的原因,当然后期也会启程kyvo和messagepack两个序列化工具包,你也可以选择自己熟悉的序列化工具包,序列化的操作主要体现在netty消息流中进行数据的编码,解码操作,实现最小容量,最快速度的效果。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
Netty之缓冲区ByteBuf解读(一)
!(https://oscimg.oschina.net/oscnet/up6de4d71f462d9846befe00ec6505125a928.JPEG)\Netty在数据传输过程中,会使用缓冲区设计来提高传输效率。虽然,Java在NIO编程中已提供ByteBuffer类进行使用,但是在使用过程中,其编码方式相对来说不太友好,也
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
00_设计模式之语言选择
设计模式之语言选择设计模式简介背景设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。设计模式(Designpattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究