草庐IT

day03-3私聊功能

多用户即时通讯系统034.编码实现024.4功能实现-私聊功能实现4.4.1思路分析客户端-发送者:用户在控制台输入信息,客户端接收内容将消息构建成Messgae对象,通过对应的socket发送给服务器服务器:可以读取到客户端(发送者)发送给某个用户(接收者)的消息从管理线程的集合中,根据messgae对象的信息,获取到接收者的userId,从而获取接收者的socket最后将Message对象转发给指定客户(接收者)客户端-接收者:在接收者的线程(通信线程中),读取到发送者的message消息,并显示即可4.4.2代码实现1.客户端1.MessageClientService类这里新建一个类,

聊一聊责任链模式

将一堆“事情”串联在一起,有序执行,就叫责任链一、概述责任链模式(ChainofResponsibilityPattern)是将链中每一个节点看作是一个对象,每个节点处理的请求均不同,且内部自动维护一个下一节点对象。当一个请求从链式的首端发出时,会沿着链的路径依次传递给每一个节点对象,直至有对象处理这个请求为止,属于行为型模式。下面放一张足球比赛的图,通过层层传递,最终射门。通过这张图,可以更好的理解责任链模式。二、入门案例2.1类图2.2基础类介绍抽象接口RequestHandler/***@author往事如风*@version1.0*@date2022/10/2513:41*@descr

聊一聊责任链模式

将一堆“事情”串联在一起,有序执行,就叫责任链一、概述责任链模式(ChainofResponsibilityPattern)是将链中每一个节点看作是一个对象,每个节点处理的请求均不同,且内部自动维护一个下一节点对象。当一个请求从链式的首端发出时,会沿着链的路径依次传递给每一个节点对象,直至有对象处理这个请求为止,属于行为型模式。下面放一张足球比赛的图,通过层层传递,最终射门。通过这张图,可以更好的理解责任链模式。二、入门案例2.1类图2.2基础类介绍抽象接口RequestHandler/***@author往事如风*@version1.0*@date2022/10/2513:41*@descr

聊一聊装饰者模式

是你,还是你,一切都有你!——装饰者模式一、概述装饰者模式(DecoratorPattern)允许向一个现有的对象扩展新的功能,同时不改变其结构。主要解决直接继承下因功能的不断横向扩展导致子类膨胀的问题,无需考虑子类的维护。装饰者模式有4种角色:抽象构件角色(Component):具体构件类和抽象装饰者类的共同父类。具体构件角色(ConcreteComponent):抽象构件的子类,装饰者类可以给它增加额外的职责。装饰角色(Decorator):抽象构件的子类,具体装饰类的父类,用于给具体构件增加职责,但在子类中实现。具体装饰角色(ConcreteDecorator):具体装饰类,定义了一些新

聊一聊装饰者模式

是你,还是你,一切都有你!——装饰者模式一、概述装饰者模式(DecoratorPattern)允许向一个现有的对象扩展新的功能,同时不改变其结构。主要解决直接继承下因功能的不断横向扩展导致子类膨胀的问题,无需考虑子类的维护。装饰者模式有4种角色:抽象构件角色(Component):具体构件类和抽象装饰者类的共同父类。具体构件角色(ConcreteComponent):抽象构件的子类,装饰者类可以给它增加额外的职责。装饰角色(Decorator):抽象构件的子类,具体装饰类的父类,用于给具体构件增加职责,但在子类中实现。具体装饰角色(ConcreteDecorator):具体装饰类,定义了一些新

【面试必备】我跟面试官聊了一个小时线程池!

大家好,这篇文章主要跟大家聊下Java线程池面试中可能会问到的一些问题。全程干货,耐心看完,你能轻松应对各种线程池面试。相信各位Javaer在面试中或多或少肯定被问到过线程池相关问题吧,线程池是一个相对比较复杂的体系,基于此可以问出各种各样、五花八门的问题。若你很熟悉线程池,如果可以,完全可以滔滔不绝跟面试官扯一个小时线程池,一般面试也就一个小时左右,那么这样留给面试官问其他问题的时间就很少了,或者其他问题可能问的也就不深入了,那你通过面试的几率是不就更大点了呢。下面我们开始列下线程池面试可能会被问到的问题以及该怎么回答,以下只是参考答案,你也可以加入自己的理解。1.面试官:日常工作中有用到线

【面试必备】我跟面试官聊了一个小时线程池!

大家好,这篇文章主要跟大家聊下Java线程池面试中可能会问到的一些问题。全程干货,耐心看完,你能轻松应对各种线程池面试。相信各位Javaer在面试中或多或少肯定被问到过线程池相关问题吧,线程池是一个相对比较复杂的体系,基于此可以问出各种各样、五花八门的问题。若你很熟悉线程池,如果可以,完全可以滔滔不绝跟面试官扯一个小时线程池,一般面试也就一个小时左右,那么这样留给面试官问其他问题的时间就很少了,或者其他问题可能问的也就不深入了,那你通过面试的几率是不就更大点了呢。下面我们开始列下线程池面试可能会被问到的问题以及该怎么回答,以下只是参考答案,你也可以加入自己的理解。1.面试官:日常工作中有用到线

不堆概念、换个角度聊多线程并发编程

不堆概念、换个角度聊多线程并发编程大家好,又见面了。在上一篇文档《JAVA基于CompletableFuture的流水线并行处理深度实践,满满干货》中,我们一起探讨了JAVA中并行编码的相关内容,在文中也一起比较了并行与并发的区别。作为姊妹篇,这里我们就再展开聊一聊关于并发相关的内容。俗话说,双拳难敌四手。俗话还说,人多力量大。在现实生活中,我们通过团队化的方式来获得比单兵作战更高的单位时间内整体产出速度。同样,在编码世界中,为了提升处理效率,并发一直以来都是软件开发设计场景中无法绕过的话题。不管是微观层面的单个进程内多线程处理模式,还是宏观层面整个系统集群化多节点部署策略,为了提升系统的整体

不堆概念、换个角度聊多线程并发编程

不堆概念、换个角度聊多线程并发编程大家好,又见面了。在上一篇文档《JAVA基于CompletableFuture的流水线并行处理深度实践,满满干货》中,我们一起探讨了JAVA中并行编码的相关内容,在文中也一起比较了并行与并发的区别。作为姊妹篇,这里我们就再展开聊一聊关于并发相关的内容。俗话说,双拳难敌四手。俗话还说,人多力量大。在现实生活中,我们通过团队化的方式来获得比单兵作战更高的单位时间内整体产出速度。同样,在编码世界中,为了提升处理效率,并发一直以来都是软件开发设计场景中无法绕过的话题。不管是微观层面的单个进程内多线程处理模式,还是宏观层面整个系统集群化多节点部署策略,为了提升系统的整体

又拍云邵海杨:25年Linux老兵聊DevOps八荣八耻

通过采访和约稿的方式,请运维领域老炮输出深刻洞见,共同碰撞,以期形成一些先进的共识,推动行业更好得前进。这一期我们邀请到的是又拍云科技的邵海杨,一个25年的Linux老炮,邵总醉心技术,一步一步往上走,是普通运维人员的典型成长路径,希望今天的采访可以对你有那么一些启发。这里是接地气、有高度的《​​运维百家讲坛​​》第4期,开讲!您好邵总,请您先做个自我介绍吧,聊聊您的履历和现状,让大家更好的认识您,了解您的背景也有助于读者理解后面的采访内容我是来自又拍云科技的邵海杨,从1998年开始使用Linux至今快25年了,资深(老鸟)Linux系统运维/架构师,DevOps八荣八耻倡导者,业余撰稿人;精