自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 收藏
  • 关注

原创 SpringSecurity+jwt权限管理demo

一,前言我发现很多开源项目在权限安全这方面用的都是Spring-Security。所以这段时间学习了 Spring-Security ,做了一个权限管理demo巩固一下。之前有做过一个 shiro 的权限管理demo,前端就是借用那个项目的,只有一点地方改变。shiro二,代码实践1,POM不止有这几个依赖,后面会提供源码 <dependency> <groupId>org.springframework.boot</grou

2021-03-27 23:37:17 638 1

原创 Springboot + shiro + jwt + vue 实现基本的认证,鉴权

一,前言最近在思考如何实现一个权限管理系统。在查阅一些资料和开源项目后,自己模仿着写了个demo二,概念1,RBAC模型RBAC(Role-Based Access Control)——基于角色的访问控制RBAC是一套成熟的权限模型。在传统权限模型中,我们直接把权限赋予用户。而在RBAC中,增加了“角色”的概念,我们首先把权限赋予角色,再把角色赋予用户。这样,由于增加了角色,授权会更加灵活方便。在RBAC中,根据权限的复杂程度,又可分为RBAC0、RBAC1、RBAC2、RBAC3。其中,R

2021-03-22 00:02:12 2182

原创 vuex模块的使用

一,前言在了解了vuex的知识后,对模块这方面理解的还不行于是去看了看几个开源项目的使用。总结以下:大致有两种风格,但都大同小异二,正文目录结构└── store ├── index.js # 我们组装模块并导出 store 的地方 ├── actions.js # 根级别的 action ├── mutations.js # 根级别的 mutation ├── getters.js # 根级别的 gette

2021-03-21 01:37:02 298

原创 Vuex 使用

一,前言vuex 是我学习vue中的一个薄弱点。不明白该如何在项目中使用。所以在此记录有关vux的使用二,正文1,简介Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化通俗点来说,就是用来共享变量。多个组件可以共享使用这个变量。2,vuex的简单使用每一个 Vuex 应用的核心就是 store(仓库)。“store”基本上就是一个容器,它包含着你的应用中大部分的状态 (state

2021-03-21 00:34:33 370

原创 axios 封装请求方法

一,前言Axios 不必多介绍了。在项目中,我们并不会直接使用 Axios,而是会对它进行一层封装。这里提供两种不同的风格,有简单的,也有相对复杂的二,正文一,第一种request.jsimport axios from 'axios'// 创建axios实例。统一配置const service = axios.create({ baseURL: process.env.BASE_API, // api的base_url timeout: 15000 // 请求超时时间

2021-03-20 18:59:21 5030

转载 设计模式 - 备忘录模式

1.前言每个人都有犯错误的时候,都希望有种“后悔药”能弥补自己的过失,让自己重新开始,但现实是残酷的。在计算机应用中,客户同样会常常犯错误,能否提供“后悔药”给他们呢?当然是可以的,而且是有必要的。这个功能由“备忘录模式”来实现。其实很多应用软件都提供了这项功能,如 Word、记事本、Photoshop、Eclipse 等软件在编辑时按 Ctrl+Z 组合键时能撤销当前操作,使文档恢复到之前的状态;还有在 IE 中的后退键、数据库事务管理中的回滚操作、玩游戏时的中间结果存档功能、数据库与操作系统的备份操

2021-02-24 21:54:54 92

转载 设计模式 - 迭代器模式

1.前言在现实生活以及程序设计中,经常要访问一个聚合对象中的各个元素,如“数据结构”中的链表遍历,通常的做法是将链表的创建和遍历都放在同一个类中,但这种方式不利于程序的扩展,如果要更换遍历方法就必须修改程序源代码,这违背了 “开闭原则”。既然将遍历方法封装在聚合类中不可取,那么聚合类中不提供遍历方法,将遍历方法由用户自己实现是否可行呢?答案是同样不可取,因为这种方式会存在两个缺点:暴露了聚合类的内部表示,使其数据不安全;增加了客户的负担“迭代器模式”能较好地克服以上缺点,它在客户访问类与聚合类

2021-02-24 21:49:28 115

原创 shiro + jwt

1,前言最近在做项目,做到权限模块,感觉登录功能也没这么简单。查阅了一些文档加博客,大致明白了如何写这个模块。所以记录一下。2,正文一,POM <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.

2021-02-06 10:38:55 362 1

转载 设计模式 -观察者模式

1.前言在现实世界中,许多对象并不是独立存在的,其中一个对象的行为发生改变可能会导致一个或者多个其他对象的行为也发生改变。例如,某种商品的物价上涨时会导致部分商家高兴,而消费者伤心;还有,当我们开车到交叉路口时,遇到红灯会停,遇到绿灯会行。这样的例子还有很多,例如,股票价格与股民、微信公众号与微信用户、气象局的天气预报与听众、小偷与警察等。在软件世界也是这样,例如,Excel 中的数据与折线图、饼状图、柱状图之间的关系;MVC 模式中的模型与视图的关系;事件模型中的事件源与事件处理者。所有这些,如果用观

2021-01-30 08:35:17 549 1

原创 自己实现简易版Ioc容器

一,前言最近了解了一下Spring的源码,为了加固对Spring源码的认识。想手写一个Spring的Ioc容器。基本思路自定义注解类MyComponent:注解在类上MyAutowired:注解在成员变量加载指定路径下的所有类:通过指定路径+全类名加载实例化并放入BeanFactory中;对于那些有MyComponent注解的类,做实例化完成依赖注入;遍历BeanFactory中的bean,对于Filed上有MyAutoWired注解的属性,完成依赖注入测试:检验Bean是

2021-01-25 15:36:19 262

转载 设计模式 - 解释器模式

1.前言在软件开发中,会遇到有些问题多次重复出现,而且有一定的相似性和规律性。如果将它们归纳成一种简单的语言,那么这些问题实例将是该语言的一些句子,这样就可以用“编译原理”中的解释器模式来实现了。虽然使用解释器模式的实例不是很多,但对于满足以上特点,且对运行效率要求不是很高的应用实例,如果用解释器模式来实现,其效果是非常好的,本文将介绍其工作原理与使用方法。2.模式的定义与特点解释器(Interpreter)模式的定义:给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句

2021-01-24 20:13:05 113

转载 设计模式 - 状态模式

1.前言在软件开发过程中,应用程序中的部分对象可能会根据不同的情况做出不同的行为,我们把这种对象称为有状态的对象,而把影响对象行为的一个或多个动态变化的属性称为状态。当有状态的对象与外部事件产生互动时,其内部状态就会发生改变,从而使其行为也发生改变。如人都有高兴和伤心的时候,不同的情绪有不同的行为,当然外界也会影响其情绪变化。对这种有状态的对象编程,传统的解决方案是:将这些所有可能发生的情况全都考虑到,然后使用 if-else 或 switch-case 语句来做状态判断,再进行不同情况的处理。但是显然

2021-01-23 10:18:31 320

转载 设计模式 - 责任链模式

1.前言在现实生活中,一个事件需要经过多个对象处理是很常见的场景。例如,采购审批流程、请假流程等。公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批准的天数不同,员工必须根据需要请假的天数去找不同的领导签名,也就是说员工必须记住每个领导的姓名、电话和地址等信息,这无疑增加了难度。在计算机软硬件中也有相关例子,如总线网中数据报传送,每台计算机根据目标地址是否同自己的地址相同来决定是否接收;还有异常处理中,处理程序根据异常的类型决定自己是否处理该异常;还有 Struts2 的拦截器、

2021-01-22 07:13:59 179

原创 spring - 自定义标签实现及使用

一,前言之前记录过一篇关于spring默认标签解析及注册实现的文章。这次记录自定义标签来结合那篇文章加深理解二,正文首先我们来理一理如何自定义一个spring的标签,像bean标签那样使用,我们先概览一些整体的流程:创建一个需要扩展的组件定义一个XSD文件,描述组件内容创建一个java类,实现BeanDefinitionParser接口,用来解析XSD文件中的定义和组件定义创建一个Handler类,扩展NameSpaceHandlerSupport,目的是将组件注册到容器。编写(添加)S

2021-01-20 23:26:59 395

原创 spring默认标签解析及注册实现

一,前言在使用spring的时候,会进场使用到bean,beans,import,aop等标签。下面将介绍spring的默认的自带标签解析流程。二,XML的验证模式(DTD&XSD)XML文件的验证模式保证了XML文件的正确性,而比较常用的验证模式有两种:DTD和XSD。DTD(Document Type Definition)即文档类型定义,是一种XML约束模式语言,是XML文件的验证机制,属于XML文件组成的一部分。DTD是一种保证XML文档格式正确的有效方法,可以通过比较XML文档

2021-01-20 23:16:07 277

原创 spring整体架构分析

一,前言我使用spring的时间并不长,也没有深入阅读过源码,但因为最近了解了以下spring的源码,想用自己的理解来描述spring,所以可能会有不恰当的地方,若有人读到及发现错误,希望提醒!!我们知道,spring最重要的两个概念是 Ioc 和 Aop,这贯穿着整个spring的使用。spring框架有一个很重要的角色,那就是bean。一切东西都是由bean引申出来bean来源哪里呢?如果创建bean呢?用什么结构来存储bean呢?用什么来管理所有的bean呢?…我们先说 be

2021-01-20 19:10:06 263

转载 设计模式 - 命令模式

1.前言在软件开发系统中,“方法的请求者”与“方法的实现者”之间经常存在紧密的耦合关系,这不利于软件功能的扩展与维护。例如,想对方法进行“撤销、重做、记录”等处理都很不方便,因此“如何将方法的请求者与实现者解耦?”变得很重要,命令模式就能很好地解决这个问题。在现实生活中,命令模式的例子也很多。比如看电视时,我们只需要轻轻一按遥控器就能完成频道的切换,这就是命令模式,将换台请求和换台处理完全解耦了。电视机遥控器(命令发送者)通过按钮(具体命令)来遥控电视机(命令接收者)。再比如,我们去餐厅吃饭,菜单不是

2021-01-19 23:52:04 359

转载 设计模式 - 策略设计模式

1.前言在现实生活中常常遇到实现某种目标存在多种策略可供选择的情况,例如,出行旅游可以乘坐飞机、乘坐火车、骑自行车或自己开私家车等,超市促销可以釆用打折、送商品、送积分等方法。在软件开发中也常常遇到类似的情况,当实现某一个功能存在多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能,如数据排序策略有冒泡排序、选择排序、插入排序、二叉树排序等。如果使用多重条件转移语句实现(即硬编码),不但使条件语句变得很复杂,而且增加、删除或更换算法要修改原代码,不易维护,违背开闭原则。如

2021-01-19 23:50:53 196

转载 spring 事务传播行为详解

一,前言Spring在TransactionDefinition接口中规定了7种类型的事务传播行为。事务传播行为是Spring框架独有的事务增强特性,他不属于的事务实际提供方数据库行为。这是Spring为我们提供的强大的工具箱,使用事务传播行可以为我们的开发工作提供许多便利。但是人们对他的误解也颇多,你一定也听过“service方法事务最好不要嵌套”的传言。要想正确的使用工具首先需要了解工具。本文对七种事务传播行为做详细介绍,内容主要代码示例的方式呈现。二,基础概念1,什么是事务传播行为?事务传播行

2021-01-18 21:46:17 171

原创 java - 序列化与反序列化

1.什么是序列化和反序列化java对象序列化的意思就是将对象的状态转化成字节流,以后可以通过这些值再生成相同状态的对象。对象序列化是对象持久化的一种实现方法,它是将对象的属性和方法转化为一种序列化的形式用于存储和传输。反序列化就是根据这些保存的信息重建对象的过程。序列化:将java对象转化为字节序列的过程反序列化:将字节序列转化为java对象的过程2.序列化的作用我们知道,当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本、图片、音频、视频等, 而这些数据都会以二进制序列的形式在网

2021-01-18 20:04:07 244

转载 设计模式 - 模板方法设计模式

1.前言在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和对银行工作人员进行评分的业务对每个客户是一样的,可以在父类中实现,但是办理具体业务却因人而异,它可能是存款、取款或者转账等,可以延迟到子类中实现。这样的例子在生活中还有很多,例如,一个人每天会起床、

2021-01-18 15:59:51 227

转载 java - netty解决TCP粘包和拆包问题

一,前言在RPC框架中,TCP粘包和拆包问题是必须解决一个问题,因为RPC框架中,各个微服务相互之间都是维系了一个TCP长连接,比如dubbo就是一个全双工的长连接。由于微服务往对方发送信息的时候,所有的请求都是使用的同一个连接,这样就会产生粘包和拆包的问题。本文首先会对TCP粘包和拆包问题进行描述,然后介绍其常用的解决方案,最后会对Netty提供的几种解决方案进行讲解。二,正文1,粘包和拆包产生TCP粘包和拆包问题的主要原因是,操作系统在发送TCP数据的时候,底层会有一个缓冲区,例如1024个字节

2021-01-17 23:13:20 1124 1

转载 java - netty(三)编解码器

Netty编解码器在了解Netty编解码之前,先了解Java的编解码:编码(Encode)称为序列化, 它将对象序列化为字节数组,用于网络传输、数据持久化或者其它用途。解码(Decode)称为反序列化,它把从网络、磁盘等读取的字节数组还原成原始对象(通常是原始对象的拷贝),以方便后续的业务逻辑操作。java序列化对象只需要实现java.io.Serializable接口并生成序列化ID,这个类就能够通过java.io.ObjectInput和java.io.ObjectOutput序列化和反序列

2021-01-17 22:38:43 1011

原创 springboot - 参数校验

1.前言何为参数校验?在我们写项目时,在写controller时,多多少少会写过类似这样的代码@RequestMapping("/{studentId}")public ResponseEntity<String> queryInfo(@PathVariable("studentId") String sudentId){ if(!StringUtils.isEmpty(sudentId)){ //.... }}我们需要对前端传过来的数据进行校验,再进行业务操作…或

2021-01-17 20:32:01 777

转载 设计模式 - 组合模式

1.前言在现实生活中,存在很多“部分-整体”的关系,例如,大学中的部门与学院、总公司中的部门与分公司、学习用品中的书与书包、生活用品中的衣服与衣柜、以及厨房中的锅碗瓢盆等。在软件开发中也是这样,例如,文件系统中的文件与文件夹、窗体程序中的简单控件与容器控件等。对这些简单对象与复合对象的处理,如果用组合模式来实现会很方便。2.组合模式的定义与特点组合(Composite Pattern)模式的定义:有时又叫作整体-部分(Part-Whole)模式,它是一种将对象组合成树状的层次结构的模式,用来表示“整体

2021-01-17 14:50:33 192

原创 BeanFactory 和 FactoryBean

1.前言BeanFactory 和 FactoryBean可以说是毫不相干的两个东西,但又有千丝万缕的关系。从字面上看,bean工厂 和 工厂bean,一句话描述它们之间的区别的关系:BeanFactory 是用来管理所有bean的工厂类,FactoryBean是一个bean,生产某种类的bean,它本身也是一个bean。2.深入了解我们所知道的bean的创建方式有哪几种呢?使用Spring XML方式配置,该方式用于在纯Spring 应用中,适用于简单的小应用,当应用变得复杂,将会导致XMl配置

2021-01-16 20:45:29 201

原创 什么是IoC 和 DI

1.概念IoC 即控制反转,DI即依赖注入简单来说,IoC是一种思想,而DI是这种思想的具体实现方式2.深入了解要了解控制反转( Inversion of Control ), 有必要先了解软件设计的一个重要思想:依赖倒置原则(Dependency Inversion Principle )。2.1 什么是依赖倒置原则假设我们设计一辆汽车:先设计轮子,然后根据轮子大小设计底盘,接着根据底盘设计车身,最后根据车身设计好整个汽车。这里就出现了一个“依赖”关系:汽车依赖车身,车身依赖底盘,底盘依赖轮子

2021-01-16 20:13:54 7091

转载 了解装机

1.前言心血来潮,想了解一下电脑的硬件,也有过自己组装一台电脑的想法。正好也学完的计算机组成原理,对这些有一定的了解。万一以后有妹子叫我帮她组装电脑呢。本人并不是专业的,是个小白,只是想了解,便查阅了一些资料,顺便记录2.电脑配件有哪些电脑主板,这块电路板上承载着CPU接口、GPU和内存插槽等一系列配件的接口插槽,而信号的输出输入也是需要通过主板上面的各种接口来实现的,是电脑的基础配件之一;CPU,中央处理器,是一个精密的集成电路,是电脑运算和控制的核心,信息处理和各部件之间的沟通都需要通过CPU

2021-01-08 16:46:24 3341

转载 设计模式 - 享元模式

1.前言在面向对象程序设计过程中,有时会面临要创建大量相同或相似对象实例的问题。创建那么多的对象将会耗费很多的系统资源,它是系统性能提高的一个瓶颈。例如,围棋和五子棋中的黑白棋子,图像中的坐标点或颜色,局域网中的路由器、交换机和集线器,教室里的桌子和凳子等。这些对象有很多相似的地方,如果能把它们相同的部分提取出来共享,则能节省大量的系统资源,这就是享元模式的产生背景。2.享元模式的定义与特点享元(Flyweight)模式的定义:运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来

2021-01-04 00:24:28 113

转载 设计模式 - 外观模式

1. 前言在现实生活中,常常存在办事较复杂的例子,如办房产证或注册一家公司,有时要同多个部门联系,这时要是有一个综合部门能解决一切手续问题就好了。软件设计也是这样,当一个系统的功能越来越强,子系统会越来越多,客户对系统的访问也变得越来越复杂。这时如果系统内部发生改变,客户端也要跟着改变,这违背了“开闭原则”,也违背了“迪米特法则”,所以有必要为多个子系统提供一个统一的接口,从而降低系统的耦合度,这就是外观模式的目标。图 1 给出了客户去当地房产局办理房产证过户要遇到的相关部门。2. 外观模式的定义

2020-12-31 06:54:54 184

转载 设计模式 - 装饰者模式

1.前言上班族大多都有睡懒觉的习惯,每天早上上班时间都很紧张,于是很多人为了多睡一会,就会用方便的方式解决早餐问题。有些人早餐可能会吃煎饼,煎饼中可以加鸡蛋,也可以加香肠,但是不管怎么“加码”,都还是一个煎饼。在现实生活中,常常需要对现有产品增加新的功能或美化其外观,如房子装修、相片加相框等,都是装饰器模式。在软件开发过程中,有时想用一些现存的组件。这些组件可能只是完成了一些核心功能。但在不改变其结构的情况下,可以动态地扩展其功能。所有这些都可以釆用装饰模式来实现。2.装饰模式的定义与特点装饰(De

2020-12-31 06:54:21 124

转载 设计模式 - 桥接模式

1. 前言在现实生活中,某些类具有两个或多个维度的变化,如图形既可按形状分,又可按颜色分。如何设计类似于 Photoshop 这样的软件,能画不同形状和不同颜色的图形呢?如果用继承方式,m 种形状和 n 种颜色的图形就有 m×n 种,不但对应的子类很多,而且扩展困难。当然,这样的例子还有很多,如不同颜色和字体的文字、不同品牌和功率的汽车、不同性别和职业的男女、支持不同平台和不同文件格式的媒体播放器等。如果用桥接模式就能很好地解决这些问题。2. 桥接模式的定义与特点桥接(Bridge)模式的定义如下:

2020-12-31 06:52:46 109

转载 设计模式 - 适配器模式

1. 前言在现实生活中,经常出现两个对象因接口不兼容而不能在一起工作的实例,这时需要第三者进行适配。例如,讲中文的人同讲英文的人对话时需要一个翻译,用直流电的笔记本电脑接交流电源时需要一个电源适配器,用计算机访问照相机的 SD 内存卡时需要一个读卡器等。在软件设计中也可能出现:需要开发的具有某种业务功能的组件在现有的组件库中已经存在,但它们与当前系统的接口规范不兼容,如果重新开发这些组件成本又很高,这时用适配器模式能很好地解决这些问题。2. 模式的定义与特点适配器模式(Adapter)的定义如下:将

2020-12-29 14:52:03 342

转载 Java - 注解

1.前言Annotation 中文译过来就是注解、标释的意思,在 Java 中注解是一个很重要的知识点,但经常还是有点让新手不容易理解。Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。Java 注解是从 Java5 开始添加到 Java 的。这是大多数网站上对于 Java 注解,解释确实正确,但是说实在话,我第一次学习的时候,头脑一片空白。这什么跟什么啊?听了像没有听一样。因为概念太过于抽象,所以初学者实在是比较吃力

2020-12-28 17:24:08 124

转载 Java - 建造者模式

1.前言在软件开发过程中有时需要创建一个复杂的对象,这个复杂对象通常由多个子部件按一定的步骤组合而成。例如,计算机是由 CPU、主板、内存、硬盘、显卡、机箱、显示器、键盘、鼠标等部件组装而成的,采购员不可能自己去组装计算机,而是将计算机的配置要求告诉计算机销售公司,计算机销售公司安排技术人员去组装计算机,然后再交给要买计算机的采购员。生活中这样的例子很多,如游戏中的不同角色,其性别、个性、能力、脸型、体型、服装、发型等特性都有所差异;还有汽车中的方向盘、发动机、车架、轮胎等部件也多种多样;每封电子邮件的

2020-12-26 08:18:03 187

原创 Java设计模式 - 原型模式

1. 前言在有些系统中,存在大量相同或相似对象的创建问题,如果用传统的构造函数来创建对象,会比较复杂且耗时耗资源,用原型模式生成对象就很高效,就像孙悟空拔下猴毛轻轻一吹就变出很多孙悟空一样简单。2. 原型模式的定义与特点原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。例如,Windows 操作系统的安装通常较耗时,如果复制就快了

2020-12-25 11:35:03 113

转载 java - IO流

1.流的概念和作用流:代表任何有能力产出数据的数据源对象或者是有能力接受数据的接收端对象。出自< Thinking in Java>流的本质:数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。作用:为数据源和目的地建立一个输送通道1.1 Java IO所采用的模型Java的IO模型设计非常优秀,它使用Decorator(装饰者)模式,按功能划分Stream,您可以动态装配这些Stream,以便获得您需要的功能。例如,您需要一个具有缓冲的文件输入流,则应当组合使用F

2020-12-25 07:26:48 173 1

转载 java - 反射(重要)

1.反射概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法,所以需要先获取到每一个字节码文件对应的Class类型的对象。通俗点反射就是把java类中的各种成分映射成一个个的Java对象。例如:一个类有:成员变量、方法、构造方法、包等等信息,利用反射

2020-12-24 14:45:07 94

转载 java - (二)netty 心跳监测机制

1.心跳检测机制1.1 定时断线重连客户端断线重连机制客户端数量多,且需要传递的数据量级较大。可以在周期性的发送数据的时候,使用。要求对数据的即时性不高的时候,才可使用。优点:可以使用数据缓存。不是每条数据进行一次数据交互。可以定时回收资源,对资源利用率高。相对来说,即时性可以通过其他方式保证。如: 120秒自动断线。数据变化1000次请求服务器一次。300秒中自动发送不足1000次的变化数据。对于长连接的程序断网重连几乎是程序的标配。断网重连具体可以分为两类:CONNECT失败,需要重连

2020-12-23 21:03:26 1620

转载 java - (一)netty

1.Netty 简介Netty 是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。JDK 原生 NIO 程序的问题JDK 原生也有一套网络应用程序 API,但是存在一系列问题,主要如下:NIO 的类库和 API 繁杂,使用麻烦。你需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer 等。需要具备其他的额外技能做铺垫。例如熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模

2020-12-23 20:30:32 631

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除