- 博客(119)
- 收藏
- 关注
原创 Java泛型
List 运行时无法判断T的类型,T data = new T();只支持引用数据类型,最终泛型会被擦除成具体类型。读取元素不能保证元素是什么类型,只能用Object来表示。如:List、List 运行时都会变成List。泛型表示:<T,E,K,V>泛型默认是不变的,禁止协变。ps:数组支持协变。
2025-05-07 16:37:19
257
原创 cookie、session与token详解
Token 完全由应用管理,所以它可以避开同源策略Token 可以避免 CSRF 攻击Token 可以是无状态的,可以在多个服务间共享。
2025-04-27 11:06:32
810
原创 web字符转义
当URL地址里包含非西欧字符的字符串时(比如中文),系统会将这些非西欧转换成如图所示的特殊字符串,那么编码过程中可能涉及将普通字符串和这种特殊字符串的相关转换,这就是需要使用URLDecoder和URLEncoder类。application/x-www-form-rulencoded MIME字符串。URLDecoder和URLEncoder它的作用主要是用于。
2025-04-27 10:39:23
144
原创 @Retryable
Retryable注解被注解的方法发生异常时会重试value:指定发生的异常进行重试include:和value一样,默认空,当exclude也为空时,所有异常都重试exclude:指定异常不重试,默认空,当include也为空时,所有异常都重试maxAttemps:重试次数,默认3backoff:重试补偿机制,默认没有。
2025-04-25 10:46:09
177
原创 ModBus协议
Modbus协议,首先从字面理解它包括Mod和Bus两部分,首先它是一种bus,即总线协议。Modbus支持单主机,最多支持。Modbus在7层OSI参考模型中属于第七层应用层,数据链路层有两种:基于标准串口协议和TCP协议,物理层可使用3线232、2线485、4线422,或光纤、网线、无线等多种传输介质。Modbus协议是一种请求/应答方式的交互过程,主机主动发起通讯请求,从机响应主机的请求,从机在没有收到主机的请求时,不会主动发送数据,从机之间不会进行通讯。
2025-04-24 14:17:28
913
原创 Spring Boot整合MongoDB
此外,Spring Data MongoDB还提供了一个MongoTemplate来操作MongoDB。执行命令如下命令:需进入安装目录的bin文件夹中。安装为服务时,需要以管理员的身份运行。
2025-04-24 13:32:14
252
原创 Spring Boot知识点详解
Spring Boot在启动的时候从类路径下的META-INF/spring.factories中获EnableAutoConfifiguration指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作;**6.jar包外部的application-{profifile}.properties或application.yml(带spring.profifile)配置文件 ****项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;
2025-04-24 13:26:26
839
原创 强、软、弱、虚引用类型
Java中4种引用的级别和强度由高到低依次为:强引用 -> 软引用 -> 弱引用 -> 虚引用当垃圾回收器回收时,某些对象会被回收,某些不会被回收。垃圾回收器会从根对象Object来标记存活的对象,然后将某些不可达的对象和一些引用的对象进行回收。引用类型被垃圾回收时间用途生存时间强引用从来不会对象的一般状态JVM停止运行时终止软引用当内存不足时对象缓存内存不足时终止弱引用正常垃圾回收时对象缓存垃圾回收后终止虚引用正常垃圾回收时跟踪对象的垃圾回收垃圾回收后终止。
2025-04-23 10:36:22
691
原创 自定义注解
注解是一种能被添加到java源代码中的元数据,方法、类、参数和包都可以用注解来修饰。注解可以看作是一种特殊的标记,可以用在方法、类、参数和包上,程序在编译或者运行时可以检测到这些标记而进行一些特殊的处理。
2025-04-22 15:02:55
215
原创 File工具总结
java Io流共涉及40多个类,这些类看上去很杂乱,但实际上很有规则,而且彼此之间存在非常紧密的联系, Java Io流的40多个类都是从如下4个抽象类基类中派生出来的。class.getResource()和class.getResourceAsStream()方式的使用在路径上是一致的。其中的参数path有两种形式,一种是以“/”开头的,另一种是不以"/"开头;2、通过response写到浏览器只能够(响应头【文件名称】、响应体)1、文件的路径、名称、内容。即classPath。
2025-04-21 15:12:18
417
翻译 TyperScript笔记【尚硅谷李立超】
要创建对象,必须要先定义类,所谓的类可以理解为对象的模型,程序中可以根据类创建指定类型的对象,举例来说:可以通过Person类来创建人的对象,通过Dog类创建狗的对象,通过Car类来创建汽车的对象,不同的类可以用来创建不同的对象。上例中,test函数有一个参数类型不确定,但是能确定的时其返回值的类型和参数的类型是相同的,由于类型不确定所以参数和返回值均使用了any,但是很明显这样做是不合适的,首先使用any会关闭TS的类型检查,其次这样设置也不能体现出参数和返回值是相同的类型。
2024-04-11 09:44:49
215
原创 Vue入门基础
数据项在Vue实例中,但删除操作要在组件中完成,那么组件如何才能删除Vue实例中的数据,此时就涉及到了参数传递与事件分发了,Vue为我们提供了自定义事件的功能很好的解决了这个问题:使用this.$emit(''自定义事件名",参数)。
2024-03-16 11:03:13
1145
原创 清除Navicate16注册码
环境:电脑需要安装python环境。直接执行如下python代码import winregimport osimport timefrom collections import dequefrom typing import Any# rootHKEY_CURRENT_USER = winreg.HKEY_CURRENT_USER# key pathPREMIUM_PATH = r'Software\PremiumSoft'CLSID_PATH = r'Software\Clas
2022-03-27 18:05:06
7132
6
原创 Spring Boot打包后读取static目录找不到文件,出现感叹号符号
windows下将Spring Boot打包好的Jar执行后。通过如下代码读取:String path = Thread.currentThread().getContextClassLoader().getResource("static/pointConfig.xlsx").getPath(); File file = new File(path);附加断点发现该文件找不到,文件路径为:file:///D:/Code/Java/demo/target/pump-datasource
2022-03-04 16:48:58
3989
1
原创 Sping boot操作文件的几种方式
一、获取文件路径获取文件路径1、class.getResource(path)其中的参数path有两种形式,一种是以“/”开头的,另一种是不以"/"开头;「以’/'开头的表示」:从项目的根路径下去获取文件即classPath目录下。不以"/"开头:以该类对象所在位置**为根路径来进行查找的。// 1.获取当前文件所在的路径System.out.println(this.getClass().getResource("").getPath());// 2.获取再 target 下 clas
2021-11-01 14:29:33
200
转载 秒懂编码和加密
一、URLENCODE(1)为什么使用1、是因为当字符串数据以url的形式传递给web服务器时,字符串中是不允许出现空格和特殊字符的。2、因为 url 对字符有限制,比如把一个邮箱放入 url,就需要使用 urlencode 函数,因为 url 中不能包含 @ 字符。3、url转义其实也只是为了符合url的规范而已。因为在标准的url规范中中文和很多的字符是不允许出现在url中的。(2)转换规则urlencode:返回字符串,此字符串中除了-_.之外的所有非字母数字字符都将被替换成百分号(%)
2021-10-18 10:55:13
1280
原创 Java NIO
一、操作系统概念1、内核态和用户态内核态:cpu可以访问内存的所有数据,包括外围设备,例如硬盘,网卡,cpu也可以将自己从一个程序切换到另一个程序。用户态:只能受限的访问内存,且不允许访问外围设备,占用cpu的能力被剥夺。为什么要有用户态和内核态?由于需要限制不同的程序之间的访问能力,防止他们获取别的程序的内存数据,或者获取外围设备的数据。并发送到网络,CPU划分出两个权限等级用户态和内核态。什么时候会发生内核态和用户态的切换【用户态在需要申请外部资源的时候会切换至内核态】。比如执行系统调用
2021-09-22 10:38:12
308
原创 Java AVRO序列化入门
Apache Avro是一个数据序列化系统。序列化就是将对象转换成二进制流,相应的反序列化就是将二进制流再转换成对应的对象。因此,Avro就是用来在传输数据之前,将对象转换成二进制流,然后此二进制流达到目标地址后,Avro再将二进制流转换成对象。Avro提供:丰富的数据结构一个紧凑的,快速的,二进制的数据格式一个容器文件,来存储持久化数据远程过程调用(RPC)简单的动态语言集成。代码生成不需要读写数据文件,也不要使用或实现RPC协议。代码生成是作为一个可选的优化,只对静态类型的语言值得实
2021-09-15 21:15:45
2381
原创 JVM线程堆栈
jps命令jps(Java Virtual Machine Process Status Tool)是JDK1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。很多人都是用过unix系统里的ps命令,这个命令主要是用来显示当前系统的进程情况,有哪些进程以及进程id。 jps 也是一样,它的作用是显示当前系统的java进程情况及进程id。我们可以通过它来查看我们到底启动了几个java进程(因为每一个java程序都会独占一
2021-08-31 19:56:14
359
翻译 Yapi工具
来源:【https://www.yuque.com/testops/igzdgd/vin3i5】YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 API,YApi 还为用户提供了优秀的交互体验,开发人员只需利用平台提供的接口数据写入工具以及简单的点击操作就可以实现接口的管理。一、安装这里通过Docker来完成Yapi的安装。如果过程出现意外安装错误希望从头开始,通过这个命令清空所有镜像(请在自己干净的dock
2021-06-21 13:35:48
449
原创 Spring Boot整合MongoDB
一、安装教程http://www.macrozheng.com/#/architect/mall_arch_08注意:安装为服务时,需要以管理员的身份运行。执行命令如下命令:需进入安装目录的bin文件夹中服务相关命令#启动服务:net start MongoDB#关闭服务:net stop MongoDB#移除服务:D:\MongoDB\bin\mongod.exe --remove二、整合步骤1、导入maven依赖<dependency> <gr
2021-04-17 11:48:55
244
1
原创 Spring Boot发送邮箱
1、获取邮箱授权码1、点击设置2、点击账户3、开启服务。2、发送简单邮件1、创建Spring Boot工程,添加maven依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> <version>2.2.8.RELEASE</ve
2021-03-14 21:24:12
455
原创 JVM总结笔记
一、JVM体系结构JVM 是运行在操作系统之上的,它与硬件没有直接交互。JVM 的整个体系结构图二、类装载器 ClassLoader类装载器 ClassLoader 是负责加载class文件的,将class文件字节码内容加载到内存中,并将这些内容转换成方法区中的运行时数据结构。ClassLoader只负责文件的加载,至于它是否可运行,则由Execution Engine决定。在这里需要区分一下class与Class。小写的class,是指编译 Java 代码后所生成的以.class为后缀名的字
2021-03-09 23:30:22
235
翻译 楠哥Java SE总结详细笔记
Java SE总结一、Java体系1、Java 基础1、跨平台2、面向对象编程语言3、分布式计算2、Java 的运行机制编程 Java 程序编译 Java 文件JVM 读取字节码文件运行程序3、Java的三大体系Java SE(J2SE)Java ME(J2ME)Java EE(J2EE)4、配置 Java 环境JRE、JDKJRE:Java Runtime Environment Java 运行环境JDK:Java Devlopment K
2021-02-19 17:28:36
7361
35
原创 Docker-compose
Docker-compose一、简介DockerDockerFile build run 手动操作,单个容器。微服务。100个微服务!依赖关系。Docker Compose 来轻松高效的管理容器!定义运行多个容器。官方介绍定义、运行多个容器。YAML file配置文件二、作用批量容器编排三、安装#官方下载sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-
2021-02-01 17:44:23
177
原创 MySQL知识点总结
Mysql知识点1、SQL1.1、DDL(数据定义语言)用来定义数据库对象:创建库,表,列等。创建数据库修改数据库添加一列查看表的字段信息修改一个表得字段类型删除一列修改表名查看表的创建细节修改表的列名删除表修改表的字符集1.2、DML(数据操作语言)用来操作数据库表中的记录,是对表中的数据进行增,删,改的操作。插入操作更新操作删除操作DELETETRUNCATE1.3、DQL(数据查询语言)用来查询数据条件查询where运行符及关
2021-01-25 22:51:19
366
1
原创 MySQL常见概念
MySQL常见试题1、存储引擎 MyISAM 和 InnoDB区别InnoDB支持事务,MyISAM不支持。MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及涉及到安全性较高的应用。InnoDB支持外键,MyISAM不支持。从MySQL5.5.5以后,InnoDB是默认引擎。MyISAM支持全文类型索引,而InnoDB不支持全文索引。InnoDB中不保存表的总行数,select count() from table时,InnoDB需要扫描整个表计算有多少行,但MyISAM只
2021-01-25 22:45:52
162
原创 Mac配置MVM环境变量
Mac配置MVM环境变量使用idea自带的mavenjdk 1.8版本1、创建配置文件vim ~/.bash_profile2、设置JDK与MVN环境变量export MAVEN_HOME=/Applications/IntelliJ\ IDEA.app/Contents/plugins/maven/lib/maven3export PATH=$PATH:$MAVEN_HOME/binexport JAVA_HOME=/Library/Java/JavaVirtualMachines/
2021-01-25 22:35:04
454
原创 OKHttp3
OKHttp3OKHtto3执行过程Get请求1、无参数@RestController@Configurationpublic class Okhttp { OkHttpClient okHttpClient = new OkHttpClient() .newBuilder() .connectTimeout(10,TimeUnit.SECONDS) .readTimeout(10, TimeUnit.SECONDS)
2021-01-24 21:45:35
429
原创 @Retryable
@Retryable@Retryable注解被注解的方法发生异常时会重试value:指定发生的异常进行重试include:和value一样,默认空,当exclude也为空时,所有异常都重试exclude:指定异常不重试,默认空,当include也为空时,所有异常都重试maxAttemps:重试次数,默认3backoff:重试补偿机制,默认没有一、导入相应的包<dependency> <groupId>org.springframework.retry<
2021-01-17 16:45:12
412
1
原创 HandlerMethodArgumentResolver统一获取当前登录用户
HandlerMethodArgumentResolver统一获取当前登录用户场景:前端每次请求都传token,后端封装一方法tokenUtils.getUserByToken(token),根据token解析得到currentUserInfo。由于是自定义的规则,所以每次都需要手动调用方法获取UserInfo,所以使用拦截器来获取当前登陆用户的信息。一、自定义权限拦截器@Componentpublic class AuthenticationInterceptor implements Hand
2021-01-17 16:43:41
619
1
原创 idea中聚合工程 springboot错误: 找不到或无法加载主类springboot错误: 找不到或无法加载主类
最近在做spring boot聚合工程时,由于多个maven项目相互依赖,如图:启动时其中一个spring Boot项目时,一直报错。在网上找了很多方法都没有用。最后发现,比较实用的方法就是,将所有maven项目中除src和pom.xml的其余文件全部删除掉,然后重新用idea打开选中启动入口,最后运行即可。...
2020-07-19 22:42:30
1562
原创 java中数组的复制方式
java中数组的复制方式1、五种方式for循环、clone方法、System.arraycopy方法、Arrays.copyOf方法、Arrays.copyOfRange方法。2、示例2.1、for循环//源数组int[] source = {10,30,20,40};//目标数组int[] target = new int[source.length];for (int i = 0;i < source.length;i++){ target[i] = sour
2020-07-14 19:04:24
6084
原创 常用设计模式
设计模式从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题。设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联和组合关系的充分理解。正确使用设计模式具有一下优点:1、可以提高程序员的思维能力、编码能力和设计能力。2、使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期。3、使设计的代码可重用性高、可读性强、可靠行高、灵活性好、可维护性强。1、3大类创建性模式:单例模式、工厂模式、抽象工厂模式、建造者
2020-06-29 21:41:01
16687
7
原创 Maven
Maven简介Maven是什么Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具,通过pom.xml文件的配置获取jar包,而不用手动去添加jar包,合理叙述项目间的依赖关系。Maven下载安装安装直接解压就可以。目录结构bin :包含了Maven的运行脚本文件boot:Maven的依赖的类加载器conf:Maven的全局配置文件(settings.xml),定制Maven
2020-06-26 16:22:51
158
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人