Java
20230529 java.lang.reflect.InvocationHandler
介绍 java.lang.reflect.InvocationHandler public interface InvocationHandler API public invoke invokeDefault 调用接口的 default 方法
20230529 java.lang.reflect.AnnotatedElement
介绍 java.lang.reflect.AnnotatedElement public interface AnnotatedElement API isAnnotationPresent getAnnotation getAnnotations getAnnotationsByType getDeclaredAnnotation getDeclaredAnnotationsByType
VUE 打开新页面方法记录
1. 使用VUE Router 主要使用router的resolve方法进行路径及参数构造 jumpPage(){ let routeData = this.$router.resolve({ name: "newPage", query: { name: "zs" } }) window.o
Nacos源码 (5) Grpc服务端和客户端
Nacos 2.x在服务端与客户端直接增加了GRPC通信方式,本文通过2.0.2版本源码,简单分析GRPC通信方式: 服务器启动 客户端连接 客户端心跳 服务器监控检查 服务器 proto文件 api/src/main/proto/nacos_grpc_service.proto文件: 文件定义了通信层的service和message结构,业务层请求响应的序列化和反序列化是Nacos在Req
mybatis快速入门代码
参考根据02-MyBatis快速入门_哔哩哔哩_bilibili 项目文件结构 1、创建表 tb_user SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for tb_user -- ---------------------------- DR
BDUtilsMyBatis,Hibernate区别
他们都基于ORM DBU的sql是直接传递进去,不支持动态sql,不便于多表关联查询.SQL 夹杂在Java代码中耦合度高 维护不易且实际开发需求中 SQL 有变化,频繁修改的情况多见,代码冗长,开发效率低 MyBatis性能好,简单易学,SQL 和 Java 编码分开,功能边界清晰,学习以配置为主 而Hibernate有三者最高的封装性和自动化,基于全映射的全自动框架
Java Floyd 算法实现
思路 适用于矩阵算路,将m个节点的图,组成矩阵m*m,然后从第一个点开始,依次遍历矩阵中值,比较两两节点的权重和经过第一个点的值的大小,更新矩阵; 例如,第i行,第k列的值为V(i,k)(i∈(0,m),k∈(0,m),i!=k),将此值与V(i,1)+V(1,k)比较,较小值作为新的V(i,k); 当第一个点全都与矩阵值比较更新之后,开始第二个点的比较,依次类推; 当所有点都比较完,此矩阵即为所
refusing to merge unrelated histories
直接点下面的合并非相关历史,然后就能拉取了。 从网上查的资料: 如果git merge合并的时候出现refusing to merge unrelated histories的错误,原因是两个仓库不同而导致的。可以通过上面来拉取或者通过下面来实现: $git pull origin master –allow-unrelated-histo
Java KSP 算法实现
思路 KSP算法 先用BFS/Dijkstra算出第一条路径P; 把P上除了终点以外的其他点,作为偏移点,并将偏移点在P上的出路作为必排,偏移点作为起点,重新算出偏移点到终点的新路,补上起点到偏移点的路径,取所有新路里权重最小的路作为P2; 以P2作为原路径,重复上一步,得到P3; 依次循环k次(k人为决定),得到Pk。 代码 涉及的数据结构复用Java 迪杰斯特拉 算法实现 里的结构
基于Swing实现的PDFViewer
最近因项目需求,需要使用Swing实现PDFViewer,并且需要鼠标拖动,放大缩小等操作,一开始在网上也找到了PDF-Renderer,但是一看原理,不也就是将PDF文件转化为image而已,目前解决掉了拖动以及放大缩小的BUG问题。 如下使用apache-pdfbox转换的PDF,当然也可以替换为iText或者别的依赖 代码如下: 叶子的飘落,是风的追求,还是树的不挽留.
权限框架之jcasbin讲解
目录1 jcasbin1.1 前言1.2 工作原理1.2.1 PERM模型1.2.2 Model语法1.2.2.1 Request定义1.2.2.2 Policy定义1.2.2.3 Policy effect定义1.2.2.4 角色定义1.2.2.5 匹配器1.2.2.6 完整model.conf1.2.3 policy.csv1.3 准备1.3.1 mavan依赖1.3.2 配置文件1.2.3
slice()方法详解
JavaScript的slice()方法是一个可在数组或字符串上调用的方法,用于从数组中提取元素或从字符串中提取字符,生成一个新的数组或字符串。 数组的slice()方法: 语法: 参数: start: 可选参数,规定从何处开始选取,如果是负数,那么它规定从数组尾部开始算起的位置,例如,-1指最后一个元素,-2指倒数第二个元素,以此类推。 end: 可选参数,规定从何处结束选取,该参数是数组片
Linux下启动 jar 包的几种常见方式
Linux 下通过 java 命令启动 jar 包的几种常见方式方法一:直接启动 jar 包java -jar XXX.jar1缺点:当前ssh窗口会被锁定,不能再操作其他命令,如果需要执行其他命令,则需要打断进程,可按CTRL + C打断程序运行,或直接关闭窗口,程序也会退出。方法二:后台启动 jar 包java -jar XXX.jar &1&代表在后台运行。 缺点:当前ssh
git 命令合集 没事给自己看的
git remote 命令 git remote -v 作用是显示所有远程仓库 git remote show xx (xx为远程地址的别名) 显示某个远程仓库的信息 git remote add [name] [url] 作用是添加远程版本库 git remote rm name
MySQL安装--yum(CentOS7 + MySQL 5.7.35)
Linux系统-部署-运维系列导航 MySQL常用安装方式有3种:rpm安装、yum安装、二进制文件安装。 本文介绍yum安装方式。 组件安装操作步骤参考 组件安装部署手册模板,根据不同组件的安装目标,部分操作可以省略。 本文将按照该参考步骤执行。 一、获取组件可执行程序库,包括主程序,此为组件的基本文件 首先卸载mysql已安装版本,其中
力扣——1 [两数之和](https://leetcode.cn/problems/two-sum/)
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 示例 2: 示例 3: 提示: 2 <= nums.length <= 104 -109 <= nums
MySQL安装--rpm(CentOS7 + MySQL 5.7.35)
Linux系统-部署-运维系列导航 MySQL常用安装方式有3种:rpm安装、yum安装、二进制文件安装。 本文介绍rpm安装方式。 组件安装操作步骤参考 组件安装部署手册模板,根据不同组件的安装目标,部分操作可以省略。 本文将按照该参考步骤执行。 一、获取组件可执行程序库,包括主程序,此为组件的基本文件 首先卸载mysql已安装版本,其
uniapp网页微信JSsdk的使用
1.申请公众号,申请开发者获取appid,secret 2.设置安全访问ip,不然获取不到access_token 3.设置安全域名,h5网页访问的域名(不设置会报invalid url) 4.前端代码相关 安装 jssdk
ThreadLocal:线程中的全局变量
最近接了一个新需求,业务场景上需要在原有基础上新增2个字段,接口新增参数意味着很多类和方法的逻辑都需要改变,需要先判断是否属于该业务场景,再做对应的逻辑。原本的打算是在入口处新增变量,在操作数据的时候进行逻辑判断将变量进行存储或查询。 如果全链路都变更入参和结构,很明显代码上很不优雅,后续如果还要增加业务场景,又需要再改一遍。如果有一个方法可以传递全局变量,而且仅限于当前线程就好了。 到此,会想到
Java 获取格式化时间
所需 java 类 方法 由于 SimpleDateFormat 不是线程安全的,推荐在需要格式化的时候创建 SimpleDateFormat 的局部变量,而不要公用,否则可能会出现冲突,线程挂死等问题。
PropertyChangeSupport类学习
PropertyChangeSupport主要用于监听属性变更。 在类里增加监听器 补充监听方法 在属性set时补充监听 在具体的类里补充监听实现
transient关键字和序列化
transient和序列化 主要作用:被transient关键字修饰的成员属性变量不会被序列化。 需要序列化的对象类,必须实现序列化接口Java.lang.Serializable,可以通过instanceof Serializable来判断。 注意:反序列化后,添加transient修饰的属性值默认值为null,int类型默认值是0(这也说明了此属性值未被序列化)。 另外,static修饰符修饰