java

Java聊天室之实现客户端一对一聊天功能

2022-10-27
目录 一.题目描述 二.解题思路 三.代码详解 多学一个知识点 一.题目描述 题目实现:不同的客户端之间需要进行通信,一个客户端与指定的另一客户端进行通信,实现一对一聊天功能. 实现一个客户端与指定的另一客户端进行通信,运行程序,服务器启动后,启动3个客户端程序,分别以小小,虚虚,竹竹,登录 ,然后在左侧的用户列表中选择接收信息用户,输入聊天信息,发送到目标用户. 二.解题思路 创建一个服务类:ClientOneToOneServerFrame,继承JFrame类 定义ServerThread线

Kotlin 标准函数和静态方法示例详解

2022-10-27
目录 标准函数 with run Apply 定义静态方法 注解 顶层方法 标准函数 with with 的作用是可以在连续调用同一对象的多个方法时让代码变得更加精简 val result = with(obj){ //这里是obj的上下文 "value" //with 函数的返回值 } 看个例子,例如有一个水果列表,现在我们想吃完所有水果,并将结果打印出来 val list = listOf("Apple","Banana","Ora

Spring Cloud Gateway动态路由Apollo实现详解

2022-10-27
目录 背景 路由的加载 实现动态路由 背景 在之前我们了解的Spring Cloud Gateway配置路由方式有两种方式 通过配置文件 spring: cloud: gateway: routes: - id: test predicates: - Path=/ms/test/* filters: - StripPrefix=2 uri: http://localhost:9000 通过JavaBean @Bean public RouteLocator routeLocator(RouteL

如何在yml配置文件中使用中文注解

2022-10-27
目录 yml配置文件中使用中文注解 问题 根本原因 解决 yml配置文件简单语法及小坑 yml文件使用方法 yml配置文件中使用中文注解 问题 我们在yml中写注解一般是这样的 #xxxx 当我们启动时我们会遇到这样的问题 Failed to load property source from 'file:/D:/idea/bonc/server/monitor-streaming/target/classes/application.yml' (classpath:/application.y

java 安全 ysoserial CommonsCollections6 分析

2022-10-27
目录 利用链如下 1.InvokerTransformer.transform() 2.ChainedTransformer.transform() 3.LazyMap.get() 4.TiedMapEntry 5.HashMap 6.HashSet 利用链如下 其中LazyMap.get()->ChainedTransformer.transform()-InvokerTransformer.transform()与CC1链一致. /* Gadget chain: java.io.Object

SpringBoot配置文件加载方法详细讲解

2022-10-27
目录 配置文件的读取顺序 多坏境的配置文件 个性化配置 自定义配置文件名称和路径 加载yml文件 配置文件的读取顺序 根目录/config/application.properties 根目录/config/application.yml 根目录/application.properties 根目录/application.yml classpath目录/config/application.properties classpath目录/config/application.yml classp

java 安全ysoserial URLDNS利用链分析

2022-10-26
目录 JAVA序列化和反序列化的基本概念 序列化和反序列化的类 简单测试 重写的readobject方法 分析URLDNS的利用链 方法中遍历key值执行putVal方法 触发:URL类中的hashCode方法 触发DNS请求: JAVA序列化和反序列化的基本概念 在分析URLDNS之前,必须了解JAVA序列化和反序列化的基本概念. 其中几个重要的概念: 需要让某个对象支持序列化机制,就必须让其类是可序列化,为了让某类可序列化的,该类就必须实现如下两个接口之一: Serializable:标记接

SpringBoot配置自定义拦截器实现过程详解

2022-10-26
目录 1. HttpServletRequest包装类 2. 使用Filter将request传递下去 3. 添加拦截器 4. 全局异常处理器 5. 配置拦截器 1. HttpServletRequest包装类 因为HttpServletRequest只能读取一次,所以需要对request进行包装,变成可重复读的request. package net.lesscoding.interceptor; import javax.servlet.ReadListener; import javax.

如何给yml配置文件的密码加密(SpringBoot)

2022-10-26
目录 1.低版本2.x 1)引入jar包 2)生成密码 3)测下解密 4)yml配置 5)测测登录 2.高版本 3.x 1)引入jar包 2)生成密码 3)yml配置 最近在忙着解决规约扫描的问题,其一就是这个明文密码必须加密的问题,一般是数据库的配置.首先我用的是默认的PBEWithMD5AndDES默认的MD5加密方式, 弄好之后有要求使用AES_256/SM2/SM4等高级的算法加密,于是后来又升级了jar包使用默认的PBEWITHHMACSHA512ANDAES_256. JDK版本-1

mybatis-plus自带QueryWrapper自定义sql实现复杂查询实例详解

2022-10-26
目录 常用写法 自定义sql 补充: 查询条件中使用函数apply 补充: 末尾sql追加last 补充:排序 补充:Mybatis-Plus QueryWrapper +sql自定义查询 总结 常用写法 xxxDO=实体类, 相当于: select name, id from xxx group by name where delete_flag = 0 and status = 0 LambdaQueryWrapper<xxxDO> queryWrapper = Wrappers.lamb

使用MyBatis进行简单的更新与查询方式

2022-10-26
目录 MyBatis增删改查的用法 sql映射文件 myBatis框架的缓存 myBatis框架的新增 myBatis框架的更新 myBatis框架的删除 myBatis框架的简单查询 MyBatis框架的结果映射 resultType和resultMap总结 MyBatis增删改查的用法 sql映射文件 sql映射文件中的顶级元素说明 元素 说明 mapper sql映射文件的根元素,只有一个属性namespace,用于区分不同的mapper,必须全局唯一. cache 为给定命名空间配置缓存

Java Synchronized锁的使用详解

2022-10-25
目录 Synchronized的用法 同步示例方法 同步静态方法 同步代码块 Synchronized的用法 在多线程并发问题中,常用Synchronized锁解决问题.Synchronized锁通常用于同步示例方法,同步静态方法,同步代码块等. 同步示例方法 我们可能自己使用过在方法前加Synchronized锁修饰,在多线程并发同时调用同一个实例化对象时,如果这个方法加上了Synchronized锁,那么也是线程安全的.举个栗子: package Thread; import java.ut

Java聊天室之实现聊天室服务端功能

2022-10-25
目录 一.题目描述 二.解题思路 三.代码详解 多学一个知识点 一.题目描述 题目实现:实现聊天室服务器端功能.运行程序,服务端等待客户端连接,并显示客户端的连接信息. 二.解题思路 创建一个服务类:ChatServerFrame,继承JFrame类 定义一个Hashtable对象,用于存储登录用户的用户名和套接字对象. 定义createSocket()方法,用于创建服务器套接字对象.获得连接到服务器的客户端套接字对象以及启动线程对象对客户端发送的信息进行处理. 定义内部线程类ServerThr

工具类之关于RestTemplateUtil工具类的使用

2022-10-25
目录 工具类-RestTemplateUtil工具类 代码可直接复制使用 RestTemplate配置类和工具类 工具类-RestTemplateUtil工具类 代码可直接复制使用 配置RestTemplate import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http

Spring Retry重试框架的使用讲解

2022-10-25
目录 命令式 声明式(注解方式) 1. 用法 2. RetryTemplate 3. RecoveryCallback 4. Listeners 5. 声明式重试 重试的使用场景比较多,比如调用远程服务时,由于网络或者服务端响应慢导致调用超时,此时可以多重试几次.用定时任务也可以实现重试的效果,但比较麻烦,用Spring Retry的话一个注解搞定所有.话不多说,先看演示. 首先引入依赖 <dependency> <groupId>org.springframework.retry

MyBatis实现批量插入方法实例

2022-10-25
目录 一.SQL实现示例 二.Mybatis通过Mapper.xml文件实现 三.在Mapper接口上使用注解 四.限制一次批量插入数据的数量 总结 一.SQL实现示例 假设我们只插入一条数据的时候,SQL如下 insert into table ([列名],[列名]) values ([列值],[列值])); # 或者 insert into table values ([列值],[列值])) 当插入多条数据的时候,也就是需要批量插入的时候,SQL如下 insert into table ([

springboot&nbsp;themaleaf&nbsp;第一次进页面不加载css的问题

2022-10-25
目录 springboot themaleaf 第一次进页面不加载css springboot themaleaf 各种报错问题 springboot themaleaf 第一次进页面不加载css 近期在做springboot +themaleaf项目中遇到首页css样式不加载情况,后来发现是注册拦截器时没有加入css样式,下边是最开始代码 public void addInterceptors(InterceptorRegistry registry) { registry.addInterc

SpringBoot配置绑定方法详解

2022-10-25
目录 配置绑定 @Value基础类型配置 @ConfigurationProperties注解 @PropertySource 配置绑定 所谓“配置绑定”就是把配置文件中的值与 JavaBean 中对应的属性进行绑定.通常,我们会把一些配置信息(例如,数据库配置)放在配置文件中,然后通过 Java 代码去读取该配置文件,并且把配置文件中指定的配置封装到 JavaBean(实体类)中. SpringBoot提供了以下两种方式进行配置绑定: 使用@Value注解 使用@ConfigurationPr

Java响应式编程之handle用法解析

2022-10-25
目录 Java handle用法 handle的标准使用方式 handle的基类 handle运用实例 Java handle用法 JAVA响应式编程reactor中如果需要对一个flux中的数据进行提前返回 可以使用handle 具体如下: @GetMapping("/a") public Mono<Object> a() throws InterruptedException { long begin = System.currentTimeMillis(); Mono

SpringBoot实现动态定时任务的示例代码

2022-10-25
目录 前言 配置文件 定时任务核心类 提供修改cron表达式的controller 前言 之前在SpringBoot项目中简单使用定时任务,不过由于要借助cron表达式且都提前定义好放在配置文件里,不能在项目运行中动态修改任务执行时间,实在不太灵活.现在我们就来实现可以动态修改cron表达式的定时任务. 配置文件 application-task.yml,其余的配置 application.yml 等就按照springBoot正常配置即可 task: cron: 0/10 * * * * ? t