打赏
摘要: 更多技术分享可关注我 前言 前面,在Netty在接收完新连接后,默认为何要为其注册读事件,其处理I/O事件的优先级是什么?这篇文章,分析到了Netty处理I/O事件的优先级——读事件优先,写事件仅仅是需要写的时候才注册,为什么要这样设计呢?下面抛出两个问题,可以带着这两个问题阅读本篇文章:​恶劣的网 阅读全文
posted @ 2020-04-20 10:40 dashuai的博客 阅读(2779) 评论(1) 推荐(0) 编辑
摘要: 更多技术分享可关注我 前言 原文:Netty服务端接收的新连接是如何绑定到worker线程池的? 前面分析Netty服务端检测新连接的过程提到了NioServerSocketChannel读完新连接后会循环调用服务端Channel绑定的pipeline.fireChannelRead()方法,将每条 阅读全文
posted @ 2020-04-18 14:39 dashuai的博客 阅读(1775) 评论(0) 推荐(0) 编辑
摘要: 更多技术分享可关注我 前言 原文:Netty如何封装Socket客户端Channel,Netty的Channel都有哪些类型? 前面分析过Netty封装的服务端Channel——NioServerSocketChannel,对应的客户端也会封装一个Channel——NioSocketChannel, 阅读全文
posted @ 2020-04-18 00:03 dashuai的博客 阅读(3618) 评论(1) 推荐(0) 编辑
摘要: 更多技术分享可关注我 前言 前面的分析从Netty服务端启动过程入手,一路走到了Netty的心脏——NioEventLoop,又总结了Netty的异步API和设计原理,现在回到Netty服务端本身,看看服务端对客户端新连接接入的处理是怎么样的过程。 原文:​Netty是如何处理新连接接入事件的? J 阅读全文
posted @ 2020-04-17 23:38 dashuai的博客 阅读(3272) 评论(0) 推荐(2) 编辑
摘要: 更多技术分享可关注我 前言 本文重点总结Netty多线程的一些编码最佳实践和注意事项,并且顺便对Netty的线程调度模型,和异步模型做了一个汇总。原文:​​结合异步模型,再次总结Netty多线程编码最佳实践 Netty多线程编码的最佳实践总结 接该文:Netty的线程调度模型分析(10)《Netty 阅读全文
posted @ 2020-04-08 10:10 dashuai的博客 阅读(1892) 评论(1) 推荐(0) 编辑
摘要: 更多技术分享可关注我 前言 如果仔细阅读过Netty的线程调度模型的源码,或者NIO线程对象及其线程池的创建源码,那么肯定会遇到类似“AtomicIntegerFieldUpdater”的身影,不禁想知道——Netty为何不直接使用原子类包装普通的比如计数的变量? 下面带着这个疑问,深入Netty以 阅读全文
posted @ 2020-04-07 00:10 dashuai的博客 阅读(711) 评论(0) 推荐(0) 编辑
摘要: 更多技术分享可关注我 前言 Netty以高性能著称,但是在实际使用中,不可避免会遇到耗时的业务逻辑,那么这些耗时操作应该写在哪儿呢,有什么注意的坑吗?本篇文章将一一总结。原文:​Netty耗时的业务逻辑应该写在哪儿,有什么注意事项? Netty线程调度模型回顾 这部分内容前面都有总结,很简单,只要心 阅读全文
posted @ 2020-04-06 11:58 dashuai的博客 阅读(5553) 评论(5) 推荐(1) 编辑
摘要: 文章集合 Netty的异步模型分析(1) Netty的异步模型分析(1) 从最常见,最简单的bind入手——如何正确启动一个Netty服务器 “你”怎么定义异步? 正确启动服务器的方式 前面扯了那么多Netty的线程调度模型,以及Netty底层的高性能实现细节,从本篇开始看看Netty的API的用法 阅读全文
posted @ 2020-03-28 01:32 dashuai的博客 阅读(1116) 评论(0) 推荐(0) 编辑
摘要: 前言和目标 首先,好久之前写了:Netty 学习笔记(1)Netty 通信原理,可惜很久没更新了,不少博客园的网友经常问,到底还写不写,后来连问都不问了,深表惭愧,从今天开始,重新开启这个系列文章——Netty源码学习笔记。 其次,立意不同于一些零散的个人博客文章,打算从头到尾,形成一个系列,也不想 阅读全文
posted @ 2020-03-08 01:22 dashuai的博客 阅读(1302) 评论(0) 推荐(0) 编辑
摘要: 1、前言 本模式用的不是特别多,知道即可,本文主要是平时的读书笔记的整理 2、出现的动机和概念 备忘录模式——也叫 Memo 模式,或者快照模式等,顾名思义就是实现历史记录的作用,比如可以实现游戏关卡的角色复活,任务进度保存,命令的撤销,以及系统的快照留存记录等功能。 备忘录模式的用意是在不破坏封装 阅读全文
posted @ 2019-03-05 23:29 dashuai的博客 阅读(1824) 评论(0) 推荐(0) 编辑
摘要: 1、前言 本模式经 遍历“容器”的优雅方法——总结迭代器模式 引出,继续看最后的子菜单的案例 2、组合模式的概念 组合模式,也叫 Composite 模式……是构造型的设计模式之一。 组合模式允许对象组合成树形结构,来表现“整体/部分”的层次结构,使得客户端对单个对象和组合对象的使用具有一致性。 C 阅读全文
posted @ 2019-03-05 02:34 dashuai的博客 阅读(3963) 评论(1) 推荐(3) 编辑
摘要: 前言 本文主要是读书笔记的整理,自己总结的倒不多,做个记录 聚集(集合)的概念 如果能把多个普通类的对象聚在一起形成一个总体,这个总体就被称之为聚集(Aggregate),举例子: 1、在任何编程语言中:数组都是最基本的聚集,在Java中,数组也是其他的 JAVA 聚集对象的设计基础。 2、在Jav 阅读全文
posted @ 2019-03-03 21:00 dashuai的博客 阅读(2179) 评论(0) 推荐(1) 编辑
摘要: 前言 非常重要的一个设计模式,也很常见,很多框架都有它的影子。定义就不多说了。两点: 1、为其它对象提供一个代理服务,间接控制对这个对象的访问,联想 Spring 事务机制,在合适的方法上加个 transaction 注解,就分分钟实现了事务。 2、除了1,代理对象还能充当中介的角色。 为什么要有代 阅读全文
posted @ 2019-03-01 01:04 dashuai的博客 阅读(1764) 评论(0) 推荐(0) 编辑
摘要: 前言 总的结论就是:不推荐使用JDK自带的观察者API,而是自定义实现,但是可以借鉴其好的思想。 java.util.Observer 接口源码分析 该接口十分简单,是各个观察者需要实现的接口 package java.util; public interface Observer { void u 阅读全文
posted @ 2019-02-10 21:10 dashuai的博客 阅读(770) 评论(0) 推荐(0) 编辑
摘要: 前言 这是一个原理非常重要,写法很常见的一个模式,值得深入理解和总结一下 可以想 zookeeper 等,有时系统需要定时(可插拔)接收或者监听其他服务的动态,这类需求经常见到,那么观察者模式就是做这个的: 一个软件系统里面包含了各种对象,就像一片欣欣向荣的森林充满了各种生物一样。在一片森林中,各种 阅读全文
posted @ 2019-02-10 17:51 dashuai的博客 阅读(1758) 评论(0) 推荐(0) 编辑
摘要: 前言 外观模式也叫门面模式,英文是 facade。这是很常见的一种设计模式,它比如 JDK 中的 Socket 接口就应用了外观模式,参考:门面模式的典型应用 Socket 和 Http(post,get)、TCP/IP 协议的关系总结 外观模式也非常简单,它提供了一个统一的对外的高层次接口,用来访 阅读全文
posted @ 2019-02-10 17:02 dashuai的博客 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 前言 中介者模式,感觉也没什么好说的,就是字面意思:对复杂对象之间进行管理,但是这个管理是双向的,既可以接受反馈,也能发出指令,实现对象之间联系的解耦合,是对象的行为型模式。故叫做中介者,或者调停者模式。 简单的理解,就是可以把一对多的复杂对象关系转为一对一的简单关系。 实现代码——简易聊天室案例 阅读全文
posted @ 2019-02-09 17:02 dashuai的博客 阅读(1003) 评论(0) 推荐(0) 编辑
摘要: 前言 适配器模式的定义很简单,就是做一个中间转换,类似港版的 iPad,iPhone 等电源插头,需要一个转换器,才能使用大陆的插座。 直接上代码,很简单,不多总结了。 类的适配器 被适配的类,可以看成是一个旧系统里的稳定的类 public class Adaptee { // 被适配的类 publ 阅读全文
posted @ 2019-02-08 20:45 dashuai的博客 阅读(1667) 评论(0) 推荐(0) 编辑
摘要: 前言 个人感觉,该模式主要还是在多线程程序的设计中比较常用,尤其是一些异步任务执行的过程。但是本文还是打算先在单线程程序里总结它的用法,至于多线程环境中命令模式的用法,还是想在多线程的设计模式里重点总结。 实现思路 其实思路很简单,就是把方法的请求调用和具体执行过程分开,让客户端不知道该请求是如何、 阅读全文
posted @ 2019-02-06 21:49 dashuai的博客 阅读(677) 评论(0) 推荐(0) 编辑
摘要: 前言 简单工厂模式,工厂方法模式,抽象工厂模式,这三个模式,当然还有单例模式,建造者模式等等,应该是日常工作中常用的,尤其是工厂模式,应该是最最常见的模式,对理解面向对象有重要的实际意义。 简单工厂模式 最简单,最直接,能满足大部分日常需求,不足是工厂类太简单——无法满足开闭原则,对多个产品的扩展不 阅读全文
posted @ 2019-02-06 13:49 dashuai的博客 阅读(7066) 评论(1) 推荐(1) 编辑
摘要: 简单工厂模式严格来说不算一个设计模式——缺点 继续说之前提到的简单工厂模式,严格来说,这不算一个设计模式……而且在业务量比较多了之后,它也有诸多的隐患 1、由于工厂类集中了所有实例的创建逻辑,这就直接导致一旦这个工厂出了问题,所有的客户端都会受到牵连 2、由于简单工厂模式的产品基于一个共同的抽象类或 阅读全文
posted @ 2019-02-05 22:42 dashuai的博客 阅读(1380) 评论(0) 推荐(0) 编辑
摘要: 除了 new 之外的创建对象的方法 通过 new 创建对象,会使得程序面向实现编程,先举个例子,某个果园里现在有两种水果,一种是苹果,一种是香蕉,有客户想采摘园子里的水果,要求用get()方法表示即可 一般情况下,最直接的写法为: public class Apple { public void g 阅读全文
posted @ 2019-02-05 22:41 dashuai的博客 阅读(3760) 评论(0) 推荐(1) 编辑
摘要: 前言 如下是之前总结的 C++ 版的;软件开发常用设计模式—单例模式总结(c++版),对比发现 Java 实现的单例模式和 C++ 的在线程安全上还是有些区别的。 概念不多说,没意思,我自己总结就是: 有这样一个类,该类在生命周期内有且只能有一个实例,该类必须自己创建自己的这个唯一实例,该类必须给所 阅读全文
posted @ 2019-02-04 11:11 dashuai的博客 阅读(1267) 评论(0) 推荐(0) 编辑
摘要: 前言 装饰模式顾名思义就是在不改变原对象的前提下,将新功能优雅的附加(装饰)到该对象上,可以实现对复合算法(策略)的优雅封装、对需要协作的算法(策略)进行有机组合。 装饰模式和策略模式用法类似,但是也有明显区别——策略模式运行时只能运行一个算法,且其各个算法(算法族)之间必须相互独立,不能有联系,装 阅读全文
posted @ 2019-02-02 00:57 dashuai的博客 阅读(703) 评论(0) 推荐(0) 编辑
摘要: 前言 Java允许我们在内存中创建可复用的Java对象,但一般情况下,这些对象的生命周期不会比JVM的生命周期更长。但在现实应用中,可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象 Java对象序列化就能够帮助我们实现该功能。使用Java对象序列化,在保存对象时 阅读全文
posted @ 2019-02-01 21:48 dashuai的博客 阅读(17189) 评论(1) 推荐(1) 编辑
摘要: 前言 继续接 创建多个“产品”的方式——工厂方法模式总结。 现在又有了新的需求:果厂里新进了一批进口水果:进口香蕉,进口苹果,进口梨,同样的是需要采集水果,之前的程序只是对工厂进行了抽象,使得不同的产品对应各自的工厂,而产品仅是国内水果,现在涉及到了进口水果,现在有了两大类的产品,每个产品又分为不同 阅读全文
posted @ 2019-01-31 23:10 dashuai的博客 阅读(2327) 评论(0) 推荐(0) 编辑
摘要: 1、三层构架和 MVC 意思一样么? Java WEB 开发中,服务端通常分为表示层、业务层、持久层,这就是所谓的三层架构: 1、表示层负责接收用户请求、转发请求、生成数据的视图等; 2、业务层负责组织业务逻辑; 3、持久层负责持久化业务对象; 这三个分层,每一层都有不同的模式,即架构模式,如下图: 阅读全文
posted @ 2019-01-31 00:20 dashuai的博客 阅读(4138) 评论(0) 推荐(0) 编辑
摘要: 1、Java 开发的 dao 层和 service 层都使用接口,是否是为使用接口而使用接口? Java 中 dao 层和 service 层都使用接口,是否是为使用接口而使用接口? 个人认为,如果没有搞懂为什么用接口,那么有些人就会逢类就要实现接口……在一些业务不复杂的场景下,真的没有必要这样做, 阅读全文
posted @ 2019-01-30 23:52 dashuai的博客 阅读(465) 评论(0) 推荐(0) 编辑
摘要: 1、接口的作用概述 接口的作用简单可以概括为: 1、避免客户端去实例化某个类 2、向上转型的使用——多态 3、扩展:Java中还能依靠接口实现多继承 2、接口的引进 先看这样一个场景:某个果园里现在有两种水果,一种是苹果,一种是香蕉,有客户想采摘园子里的水果,要求用 get() 方法表示,代码如下: 阅读全文
posted @ 2019-01-30 22:56 dashuai的博客 阅读(897) 评论(0) 推荐(0) 编辑
摘要: 前言 本文主要从 select 和 epoll 系统调用入手,来打开 Netty 的大门,从认识 Netty 的基础原理 —— I/O 多路复用模型开始。如下是微信公号系列文章,持续更新 开篇:Netty源码学习系列 Netty 学习笔记(1)Netty 通信原理 Netty服务端与客户端初始化流程 阅读全文
posted @ 2018-08-29 23:50 dashuai的博客 阅读(3095) 评论(2) 推荐(0) 编辑
摘要: 前言 目前接触的一个服务,它的7层负载均衡使用Nginx,4层使用的是我司自研的弹性负载均衡ELB。 而本文介绍和实战的是工作在4层负载均衡之一的LVS(Linux Virtual Server),权当抛砖引玉,实战是从工作中简化而来。 概念 章文嵩博士在 1998 年 5 月成立了 Linux V 阅读全文
posted @ 2017-09-10 20:04 dashuai的博客 阅读(1826) 评论(4) 推荐(6) 编辑
摘要: 前言 学习任何知识都会有一个学习背景 最近,我们团队乃至我司整个云服务,上go的呼声越来越高!新服务已经开始用go开发,部分现有Java版的服务重构为go也只是时间问题而已,故相关技术积累势在必行!在云网络的分布式服务乃至在一切高并发,分布式后台服务中,golang都有着很大的优势。 据我对国内互联 阅读全文
posted @ 2017-09-09 19:26 dashuai的博客 阅读(1627) 评论(4) 推荐(3) 编辑
只有注册用户登录后才能阅读该文。 阅读全文
posted @ 2017-01-15 16:46 dashuai的博客 阅读(3852) 评论(8) 推荐(8) 编辑
摘要: 2017-01-07 整理 DNS原理 域名到IP地址的解析过程 IP地址到域名的反向域名解析过程 抓包分析DNS报文和具体解析过程 DNS服务器搭建和配置 这个东东也是今年博主参见校招的时候被很多公司问过的,虽然理论性比较强,但是作为一个程序员,个人认为熟悉DNS是非常重要的,要理解它并能帮助解决 阅读全文
posted @ 2017-01-14 18:51 dashuai的博客 阅读(4412) 评论(0) 推荐(5) 编辑
摘要: 2017-03-03 更新于末尾 1、Windows7 — Ubuntu 远程桌面连接中 Tab 键不能补全的解决办法 2、xrdp远程连接ubuntu无法使用原机的中文输入法 2017-02-22 更新于末尾 1、真机完全安装ubuntu时的问题解决 2、远程连接真实ubuntu操作系统的方法(远 阅读全文
posted @ 2017-01-02 10:58 dashuai的博客 阅读(4197) 评论(3) 推荐(1) 编辑
摘要: 2017年的秋招彻底结束了,感觉Java上面的最常见的集合相关的问题就是hash……系列和一些常用并发集合和队列,堆等结合算法一起考察,不完全统计,本人经历:先后百度、唯品会、58同城、新浪微博、趣分期、美团点评等都在1、2……面的时候被问过无数次,都问吐了&_&,其他公司笔试的时候,但凡有Java 阅读全文
posted @ 2016-12-12 23:00 dashuai的博客 阅读(4135) 评论(7) 推荐(10) 编辑
摘要: 2016-10-19 说说&和&&的区别 初级问题,但是还是加入了笔记,因为得满分不容易。 &和&&都可以用作逻辑与的运算(两边是boolean类型),全真则真,一假则假。 &&还具有短路的功能,即第一个表达式为false,则不再计算第二个表达式。例如, if(str != null&& !str. 阅读全文
posted @ 2016-10-19 18:42 dashuai的博客 阅读(1062) 评论(0) 推荐(0) 编辑
摘要: 2016-10-18 整理 写一个程序判断整数的奇偶 public static boolean isOdd(int i){ return i % 2 == 1; } 百度百科定义:奇数(英文:odd)数学术语 ,口语中也称作单数, 整数中,能被2整除的数是偶数,不能被2整除的数是奇数,奇数个位为1 阅读全文
posted @ 2016-10-19 18:04 dashuai的博客 阅读(1730) 评论(0) 推荐(0) 编辑
摘要: 所有代码均在本地编译运行测试,环境为 Windows7 32位机器 + eclipse Mars.2 Release (4.5.2) 2016-10-17 整理 字符,字符串类问题 正则表达式问题 Java字符编码问题 字符串内存问题 简述String和StringBuffer、StringBuil 阅读全文
posted @ 2016-10-18 14:14 dashuai的博客 阅读(1315) 评论(0) 推荐(1) 编辑
摘要: 所有代码均在本地编译运行测试,环境为 Windows7 32位机器 + eclipse Mars.2 Release (4.5.2) 2016-10-17 整理 下面的代码输出结果是多少?为什么?并由此总结几个编程规范。 1 class smallT { 2 public static void m 阅读全文
posted @ 2016-10-17 19:28 dashuai的博客 阅读(2744) 评论(2) 推荐(9) 编辑
Flag Counter欢迎关注微信公众号