JWT解读与使用 使用 JWT 令牌的最佳位置是在服务器到服务器之间的通信。建议:修复算法,不允许客户端切换算法。在使用对称密钥对令牌进行签名时,请确保使用适当的密钥长度。确保添加到令牌的声明不包含个人信息。如果需要添加更多信息,请同时选择加密令牌。向项目添加足够的测试用例,以验证无效令牌是否确实不起作用。与第三方集成以检查您的令牌并不意味着您根本没有测试您的应用程序。
任务调度中心-XXL-JOB使用详解 XXL-JOB是一个分布式的任务调度平台,其核心设计目标是:学习简单、开发迅速、轻量级、易扩展,现在已经开放源代码并接入多家公司的线上产品线,开箱即用。xxl-job框架主要用于处理分布式的定时任务,其主要由调度中心和执行器组成。
java面试题(技术场景) 如果是所有接口都慢,可能是服务器资源、数据库或网络层的问题;不过,如果服务端的数据没有发生变更,会 一直 hold 住请求,直到服务端的数据发生变化,或者等待一定时间超时才会返回。该协议将消息的发布者(publisher)与订阅者(subscriber)进行分离,因此可以在不可靠的网络环境中,为远程连接的设备提供可靠的消息服务,使用方式与传统的 MQ 有点类似。但由于推送数据并不会频繁变更,无论后端此时是否有新的消息产生,客户端都会进行请求,势必会对服务端造成很大压力,浪费带宽和服务器资源。
java面试题(jvm) 程序计数器:线程私有的,每个线程一份,内部保存的字节码的行号。用于记录正在执行的字节码指令的地址。是一个线程共享的区域,主要用来保存对象实例,数组等,内存不够则抛出异常。由年轻代和老年代组成:年轻代:划分为三部分,Eden区和两个Survivor区老年代:主要保存生命周期长的对象其中jdk1.7和jdk1.8的区别:1.7中有一个永久代,存储类信息、静态变量、常量1.8中移除了永久代,把数据存储到了本地内存的元空间中,防止内存溢出方法区:是各个线程共享的内存区域。主要存储类的信息、运行时常量池。
java常见集合问题 Arrays.asList转换list之后,如果修改了数组的内容,list会受影响因为它的底层使用的Arrays类中的一个内部类ArrayList来构造的集合,在这个集合的构造器中,把我们传入的这个集合进行了包装而已,最终指向的都是同一个内存地址。比如原来的顺序是AB,扩容后的顺序是BA,线程二执行结束。二叉搜索树又名二叉査找树,有序二叉树或者排序二叉树,是二叉树中比较常用的一种类型二叉查找树要求,在树中的任意一个节点,其左子树中的每个节点的值,都要小于这个节点的值,而右子树节点的值都大于这个节点的值。
Java 服务限流方案 限流对于一个微服务架构系统来说具有非常重要的意义,否则其中的某个微服务将成为整个系统隐藏的雪崩因素,举例来讲,某个平台有多个微服务应用,但是作为底层的某个或某几个应用来说,将会被所有上层应用频繁调用,业务高峰期时,如果底层应用不做限流处理,该应用必将面临着巨大的压力,尤其是那些个别被高频调用的接口来说,最直接的表现就是导致后续新进来的请求阻塞、排队、响应超时...最后直到该服务所在JVM资源被耗尽。
人际交往沟通秘籍 在聊天中,是否常陷入这样的循环:精心准备的话题库,一到关键时刻却无从施展,随即而来的便是冷场与尴尬,进而或是匆忙准备更多话题,或是无奈放弃,如此往复,形成难以摆脱的“冷场循环”。无论是内向还是外向的人,都可以通过本文提供的方法,在日常生活中和特定社交活动中,逐步建立起与人交谈的自信。通过本文介绍的方法,读者可以逐步培养自己的幽默感,使生活更加丰富多彩,同时在社交中更加自如和受欢迎。无限话题聊天法不仅提供了一种有效的沟通工具,更是一种思维模式的转变,帮助人们在社交场合更加自如地表达自我,享受对话带来的乐趣。
Java SSE:实现服务器推送数据客户端 体验过大语言模型的人(chatgpt,文心一言,通义千问...)都知道,大模型的回答是一边思考一边返回数据的,属于流式响应。要达到这种效果就需要实现前后端的即时通讯。
WebSocket解决方案(springboot 基于Redis发布订阅) 因为一般的请求都是HTTP请求(单向通信),HTTP是一个短连接(非持久化),且通信只能由客户端发起,HTTP协议做不到服务器主动向客户端推送消息。WebSocket确能很好的解决这个问题,服务端可以主动向客户端推送消息,客户端也可以主动向服务端发送消息,实现了服务端和客户端真正的平等。3.WebSocket 服务器负责监听客户端的连接请求,一旦有客户端连接,服务器会创建一个 WebSocket 会话(Session)来管理这个连接。socket服务订阅redis的消息,订阅成功后进行推送。
Elasticsearch之集群化部署 一个集群就是由一个或多个服务器节点组织在一起,共同持有整个的数据,并一起提供索引和搜索功能。一个 Elasticsearch 集群有一个唯一的名字标识,这个名字默认就是”elasticsearch”。这个名字是重要的,因为一个节点只能通过指定某个集群的名字,来加入这个集群
Elasticsearch之JavaAPI-索引与文档 1.新建Maven工程。2.pom添加依赖-- elasticsearch 的客户端 -->-- elasticsearch 依赖 2.x 的 log4j -->-- junit 单元测试 -->3.连接Elasticsearch。
Elasticsearch之http-索引与文档 数据格式Elasticsearch是面向文档型数据库,一条数据在这就是一个文档。下图是Elasticsearch和mysql的概念类比:ES 里的 Index 可以看做一个库,而 Types 相当于表, Documents 则相当于表的行。这里 Types 的概念已经被逐渐弱化, Elasticsearch 6.X 中,一个 index 下已经只能包含一个type, Elasticsearch 7.X 中, Type 的概念已经被删除了。
Elasticsearch之入门与安装 Elaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单
MyCat2之分库分表 垂直分表: 将⼀个表按照字段分成多表,每个表存储其中⼀部分字段。垂直分库: 根据表的业务不同,分别存放在不同的库中,这些库分别部署在不同的服务器.水平分库: 把⼀张表的数据按照⼀定规则,分配到不同的数据库,每⼀个库只有这张表的部分数据.水平分表: 把⼀张表的数据按照⼀定规则,分配到同⼀个数据库的多张表中,每个表只有这个表的部分数据。
MyCat2之安装与配置文件介绍 位置:/mycat/conf/users/{用户名}.user.json,用来配置登录用户,也就是8806连接的用户信息"ip":null,dialect:数据库类型ip:白名单password:密码transactionType:事务隔离级别username:用户名。
Netty教程之NIO基础 NIO 全称java non-blocking IO(非阻塞 I/O),后续提供了一系列改进的输入/输出的新特性,被统称为 NIO(即 New IO),是同步非阻塞的。阻塞和非阻塞是进程在访问数据的时候,数据是否准备就绪的一种处理方式,当数据没有准备的时候。阻塞(Block):往往需要等待缓冲区中的数据准备好过后才处理其他的事情,否则一直等待在那里。非阻塞(Non-Block):当我们的进程访问我们的数据缓冲区的时候,如果数据没有准备好则直接返回,不会等待。如果数据已经准备好,也直接返回。
微习惯:简单到不可能失败的自我管理法则 微习惯就是你强迫自己每天做的微不足道的积极行为。微习惯策略只会帮你培养好习惯,给你的生活增添积极行为,持续丰富你的生活。消除坏习惯和建立好习惯有着共同的目标——用更好的行为方式取代原有的行为方式,按照微习惯策略行动,就是运用少量的意志力强迫自己做一件事情。微习惯体系的基础在于“微步骤”,那些“小得不可思议的一小步”。微习惯体系的威力体现在以下几个方面:应用、思维模式、固有正反馈循环机制、对自我效能感的自然提升。利用微习惯做事,你会收获巨大的惊喜。