iOS逆向
华为云云享专家认证|阿里云开发社区博客专家,定期分享Java、iOS资讯(包括基础知识储备)、小程序开发与运营、阅读与写作。只为你呈现有价值的信息,专注于移动端技术研究领域。
展开
-
Java开发的深入浅出-专栏总目录(持续更新)
文章目录引言I 、 基础概念II、 JVMIII、 案例:学术交流论坛系统的设计与实现see also引言欢迎大家来到#公众号:iOS逆向的《Java开发的深入浅出》专栏本文列出学习大纲,同时这也可以作为大家学习《Java开发的深入浅出》这个专栏的索引。文中的蓝字都是传送门,点击进入即可I 、 基础概念基本概念:【指令、基本术语、命名规范】数据库概论II、 JVMJava虚拟机:内存管理、GC(垃圾回收)、class文件的结构、JIT中比较常见的优化手段III、 案例原创 2021-01-20 14:45:49 · 6476 阅读 · 0 评论 -
maven 解决依赖库版本冲突:案例 easyexcel导入问题(NoSuchMethodError: UnsynchronizedByteArrayOutputStream)【commons-io】
其他库依赖了不同版本的 commons-io,可能会导致版本冲突。检查项目的依赖管理工具,解决版本冲突。如果不使用依赖管理工具,可以手动删除或排除掉项目中不需要的旧版本 commons-io。定义依赖管理来统一版本号。原创 2024-07-22 11:48:48 · 5 阅读 · 0 评论 -
签名优化:请求数据类型不是`application/json`,将只对随机数进行签名计算,例如文件上传接口。
背景:文件上传接口的请求数据类型通常为,方便携带文本域和使用接口文档进行调试。如果携带JSON数据,不方便调试接口。原创 2024-07-18 10:37:19 · 607 阅读 · 1 评论 -
Optional让我们的判空更加优雅
遍历打印 userInfoList。获取List的第一个元素。原创 2024-07-18 09:20:21 · 34 阅读 · 0 评论 -
Java小技能:多级组织机构排序并返回树结构(包含每个层级的子节点和业务数据集合)
包含每个层级的子节点和业务数据集合。原创 2024-07-17 11:53:21 · 4231 阅读 · 0 评论 -
Spring Boot请求参数映射:@RequestBody、@RequestParam和@RequestPart的应用
使用该注解时,需要在方法参数中声明与请求参数同名的参数,并可以通过该注解的value属性指定请求参数的名称。使用该注解时,需要在方法参数中声明MultipartFile类型的参数,Spring MVC框架会自动将上传的文件转换为MultipartFile类型的对象。参数前写了@RequestParam(xxx),那么前端必须有对应的xxx名字才行(不管其是否有值,当然可以通过设置该注解的required属性来调节是否必须传),如果没有xxx名的话,那么请求会出错,报400;后端使用数组去接收处理。原创 2024-07-15 16:19:14 · 1216 阅读 · 0 评论 -
集成excel工具:自定义导入回调监听器、自定义类型转换器、web中的读、捕获文件格式转换错误ExcelDataConvertException
*** excel 导出* @param data 数据源* @param fileName 文件名* @param tClass 对应Class*/try {// 这里URLEncoder.encode可以防止中文乱码// 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postmanEasyExcel.write(response.getOutputStream(), tClass).sheet("模板").doWrite(data);原创 2024-07-13 11:45:39 · 503 阅读 · 0 评论 -
自定义枚举对象序列化规则: 在Json中以枚举的code值表示枚举;枚举序列化时,新增枚举描述字段;String到IEnum的转换
GetterENABLE("1", "启用"),DEACTIVATE("0", "停用");@EnumValue// 自定义toString方法返回code@Override。原创 2024-07-09 16:57:17 · 122 阅读 · 0 评论 -
接口签名、日志、token校验优化
需要签名的接口,要求请求参数是自定义对象,因为签名计算是将参数解析为map,即SIGN_REQJSONBODY_ERROR("SIGN_REQJSONBODY_ERROR" , "需要签名的接口,要求请求参数是自定义对象,因为签名计算是将参数解析为map,即java.util.LinkedHashMap")//2。将json请求对象转为Maptry {});原创 2024-07-05 10:53:06 · 37 阅读 · 0 评论 -
智慧渔港:海域感知与岸线监控实施方案(智慧渔港渔船综合管控平台)
H5Player 使用 WebSocket 通道,承载 RTSP/RTP 大华包协议来实现音视频信令和数据的传输,可以理解 WebSocket 为高速公路,RTSP/RTP。备端则会返回数据,客户端拿到数据后,通过 MSE 技术和大华解码库的 WASM 技术方式进行视频、音频解码及播放。利用渔船现有的定位导航通讯设备等资源,实现岸线和近岸海域内违法船舶和可疑船舶预警、抓拍、跟踪和行为分析。端发送至平台,平台负责解码并显示出船舶所在位置的风速、风向、温度、湿度、大气压强,气象信息可通过服。原创 2024-07-01 15:10:20 · 80 阅读 · 0 评论 -
eclipse基础工程配置( tomcat配置JRE环境)
使用"tomcat7W.exe",运行这个程序时,它会打开一个窗口,你可以在这个窗口中配置Tomcat服务的属性,例如启动类型、登录账户、运行环境等。JRE版本配置很重要,因为每个版本支持的特性不一样,比如JRE8支持下面的语法(允许JSP支持java代码)下载运行环境:Server JRE (Java SE Runtime Environment) 8u401。配置工程名称和Context-root。查看servers详情即可编辑运行环境。场景:修改Java代码。原创 2024-06-28 16:17:11 · 172 阅读 · 0 评论 -
Spring Cloud Gateway 跨域配置和跨服务请求跟踪
背景: 服务之间调用需要携带一些用户信息之类的 所以实现了Feign的RequestInterceptor拦截器复制请求头,复制的时候是所有头都复制的,调用方日志request_id:752583312D。被调用日志request_id:752583312D。将请求ID添加到MDC。原创 2024-06-26 10:09:49 · 239 阅读 · 0 评论 -
Spring Cloud Gateway网关下的文档聚合(knife4j)
【代码】Spring Cloud Gateway网关下的文档聚合(knife4j)原创 2024-06-20 11:31:32 · 173 阅读 · 0 评论 -
Knife4j 全局鉴权需求 (在OpenAPI3规范中添加Authorization鉴权请求Header)
原因: 如果当前OpenAPI3规范中的接口定义并没有security属性对象,那么Knife4j会认为该接口不需要鉴权。解决方案: 借助GlobalOpenApiCustomizer接口,给某一个OpenAPI实例分组下的所有接口添加鉴权方案。在Knife4j的界面将OpenAPI3规范中定义的鉴权方案显示出来,但是在调试界面中并不会显示。参考代码Knife4jJakartaOperationCustomizer.java。参考代码:Knife4jOpenApiCustomizer.java。原创 2024-06-11 10:16:59 · 224 阅读 · 0 评论 -
限流(服务降级):基于自定义注解+切面的方式实现接口调用频率限制
背景:提供接口给下游(外部厂商)的接口,通过控制IP地址来限制接口的调用频率,可以有效保护系统的稳定性和安全性。限制接口调用频率实现方案:2.1 检查IP是否超过频率限制 (无法灵活控制限制时间范围)共用一个RateLimiter,无法灵活控制限制时间范围。使用CacheBuilder来构建LoadingCache实例,可以链式调用多个方法来配置缓存的行为。其中CacheLoader可以理解为一个固定的加载器,在创建LoadingCache时指定,然后简单地重写V load(K key) throws原创 2024-06-07 15:40:54 · 85 阅读 · 0 评论 -
Jar包部署为linux系统服务
标签: 指定了 Spring Boot 应用程序的主类,主类是 Spring Boot 应用程序的入口点,即可执行 JAR 文件的入口点,当你运行 JAR 文件时,这个类的 main 方法会被执行。build中的plugins,它定义了 spring-boot-maven-plugin 插件的使用,用于将项目打包成可执行的 JAR 文件,并执行其他与 Spring Boot 相关的任务。一个JAR文件通常包含一个名为MANIFEST.MF的清单文件,这个文件定义了关于JAR文件的各种元数据。原创 2024-06-07 10:48:35 · 134 阅读 · 0 评论 -
开放平台接口安全验证
第一步,设所有发送的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…第二步,在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,得到sign值signValue。我们推荐生成随机数算法如下:调用随机数函数生成,将得到的值转换为字符串。统一使用sign签名验证,签名规则也会在本文档中,详细说明。◆ 如果参数的值为空不参与签名;原创 2024-06-05 14:36:39 · 305 阅读 · 0 评论 -
SpringBoot项目使用CXF框架开发SOAP通信接口
webService三要素: soap用来描述传递信息的格式, WSDL 用来描述如何访问具体的接口, uddi(Universal Description Discovery and Integration)用来管理,分发,查询webService。B、Header(报头)元素,可选,包含头部信息(包含了使消息在到达最终目的地之前,能够被路由到一个或多个中间节点的信息)。D、Fault元素,位于Body内,可选,提供有关处理此消息所发生错误的信息。接口一般会有权限设置。.class 反编译。原创 2024-06-04 17:03:27 · 171 阅读 · 0 评论 -
idea常用配置
进入偏好设置,在构件执行部署-构件工具-maven-已经忽略的文件,去掉对应的pom.xml。InteliJ 将文件视为项目中的文件,文件夹在主视图上显示为蓝色方块。解决方案2:maven–>Ignored Files 将清单中对应项目的pom.xml文件取消选中。原因:操作的时候不小心点到了ignore pom.xml 即pom.xml文件被设置在maven忽略文件清单中。解决方案1: 选中pom.xml ->右键->maven-> 取消忽略项目。原因: 新迁入的pom.xml被maven忽略了。原创 2024-05-31 13:52:41 · 227 阅读 · 0 评论 -
签名安全规范:解决【请求对象json序列化时,时间字段被强制转换成时间戳的问题】
API接口协议中包含字段nonce_str,主要保证签名不可预测。我们推荐生成随机数算法如下:调用随机数函数生成,将得到的值转换为字符串。接口协议中包含字段nonce_str,主要保证签名不可预测。我们推荐生成随机数算法如下:调用随机数函数生成,将得到的值转换为字符串。尤其是涉及敏感词操作的接口:支付、密码、登陆、验证码等接口。允许的请求头字段: 添加sign。原创 2024-05-31 11:17:46 · 472 阅读 · 0 评论 -
经纬度和度分秒转换
全球经纬度的取值范围为:纬度-90 ~ 90,经度-180 ~ 180。例如: 经度 = 116°20.12’,纬度 = 39°12.34’经度 = 116 + 20.12 / 60 = 116.33533°。度分转换: 将度分单位数据转换为度单位数据,公式:度=度+分/60。纬度 = 39 + 12.34 / 60 = 39.20567°。应用场景: 海图点线图形绘制。原创 2024-05-30 09:06:03 · 48 阅读 · 0 评论 -
java小技能: 数字和字母组合的验证码图片(生成验证码字符并加上噪点,干扰线)
获取HttpServletRequest的信息。对图片进行处理的类和方法。原创 2024-05-29 16:16:17 · 241 阅读 · 0 评论 -
等级保护应用安全验证测试:身份鉴别缺陷、SQL注入漏洞、敏感信息明文传输
风险分析: 攻击者可以通过构造特殊URL的手段,利用SQL注入漏洞从数据库中获取敏感数据、修改数据库数据(插入/更新/删除)、执行数据库管理操作(如关闭数据库管理系统)、恢复存在于数据库文件系统中的指定文件内容,在某些情况下能执行操作系统命令。漏洞描述: 应采用校验技术或密码技术保证重要数据在传输过程中不存在篡改或重放攻击,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等。风险分析: 攻击者可利用该漏洞,盗用用户会话信息,进行恶意操作。原创 2024-05-28 08:32:37 · 92 阅读 · 0 评论 -
信息安全等级保护测评: 登陆日志
等保测评是信息安全等级保护测评的简称,是对信息和信息载体按照重要性等级分级别进行检测、评估的过程。背景:近期AIS监控平台(网页版)等保测评,发现没有登陆日志,现要求整改,补上登陆日志。原创 2024-05-25 16:27:33 · 46 阅读 · 0 评论 -
SpringMVC: 跨线程获取requests请求对象
主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,特别适用于各个线程依赖不同的变量值完成操作的场景。方法,将原本放在ThreadLocal对象中的属性放到了类型为InheritableThreadLocal的对象中,启动的子线程可以获取到父线程中的属性。对于不同的线程,每次获取副本值时,别的线程并不能获取到当前线程的副本值,形成了副本的隔离,互不干扰。问题: 子线程无法获取父线程中的HttpServletRequest请求对象。原创 2024-05-24 09:33:39 · 43 阅读 · 0 评论 -
Spring MVC的数据转换及数据格式化:java 转换器接口(将一种类型的对象转换为另一种类型及其子类对象)
将一种类型的对象转换为另一种类型及其子类对象,比如将String类型转换为Number以及Number的子类Integer、Double等对象。就需要一系列的Converter。该接口的作用就是将这一系列的相同的Converter封装在一起。是Spring中最简单的一个转换器接口。该方法负责将S类型转换为T类型的对象。Spring MVC的数据转换及数据格式化。原创 2024-05-22 11:34:45 · 177 阅读 · 0 评论 -
定制Jackson 的ObjectMapper(编程式),自定义json转换处理器来指定序列化和反序列化规则。
Spring Boot在类加载路径中检测到Jackson库(spring-boot-starter-web 里面默认就依赖了Jackson库),就会自动配置ObjectMapper(转换XML用其子类:XmlMapper)。方式3:完全替换Spring Boot的ObjectMapper, Spring Boot将会使用自定义的Jackson2ObjectMapperBuilder来创建ObjectMapper。方式2:通过自定义Module进行定制。原创 2024-05-22 10:03:44 · 129 阅读 · 0 评论 -
数据库规范
如果有新功能参数需要加密保存,使用AES的方式,不要用DES了,不然后面如果需要直接用sql导出数据,没办法解密。属性类型连续两个大写的属性名不要前面那个字母 ,否则序列化的时候 可能会有问题。禁用保留字,如 desc、range、match、delayed 等。进行生产测试时,注意上下游数据,提交给上游的数据是无法回滚的。同一个字段在各个表做到统一。原创 2024-05-21 15:37:09 · 76 阅读 · 0 评论 -
JWT Authorization header using the Bearer scheme
使用 Bearer Authentication 而不是 apiKey 的方式,它将会在 http header 中自动增加。引入swagger后,在services.AddSwaggerGen中增加如下内容。swagger发请求的时候自动添加Bearer。原创 2024-05-20 11:52:04 · 121 阅读 · 0 评论 -
Aspect打印接口请求信息和返回内容
解决方案:通过RequestContextHolder进行获取HttpServletRequest。问题: 无法对HttpServletRequest对象进行JSON序列化。原创 2024-05-18 13:56:22 · 48 阅读 · 0 评论 -
Java Error : java.io.InvalidClassException 解决方案
由于序列化时该类的serialVersionUID是JVM根据类名及其属性的哈希值生成的。当类的属性有变动时,serialVersionUID也会相应变动,从而导致redis中的老数据反序列化时,serialVersionUID匹配不上而报错。方法将数据反序列化到bean对象,如果当前bean对象发生变化的话,即加了属性的话,就会导致serialVersionUID会变。对象序列化的时候会存到redis内存中,然后又再通过。原创 2024-05-17 15:27:34 · 20 阅读 · 0 评论 -
YAML文件的键值采用变量引用
操作符被用于合并两个字典,并将右边字典中的所有键值对插入到左边字典中。如果左边字典已有与右边字典中的键相同的项,则这些项将被重写。操作符要求在它的右边有一个键值对,左边是要插入键值对的地方。如果左边的字典中不存在键,则会导致解析错误。在YAML文件中,一个配置量的 值 可以通过引用另一个变量来设置。说明:用&定义锚点时,注意锚点名前后的空格。学会使用YML配置可以减少很多重复配置。要想替换键,则需要用到锚点。2. 仅引入配置的值。原创 2024-05-15 14:14:47 · 270 阅读 · 0 评论 -
主机扫漏:升级tomcat解决Apache Tomcat 环境问题漏洞(CVE-2023-46589)
目前厂商已经发布了升级补丁以修复此安全问题,补丁获取链接:https://lists.apache.org/thread/0rqq6ktozqc42ro8hhxdmmdjm1k1tpxr。Apache Tomcat存在环境问题漏洞,该漏洞源于存在不正确的输入验证漏洞,可能会导致将单个请求视为多个请求,从而在反向代理后面出现请求走私。原创 2024-05-13 15:15:50 · 507 阅读 · 0 评论 -
Spring Boot警告:TLSv1 was negotiated【 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接】
下的java.security改安全协议的配置即可。Java新版本禁用了些老的加密算法引起的。解决方案:修改驱动版本。原创 2024-05-13 09:20:52 · 385 阅读 · 1 评论 -
Logback 日志配置
springProperty: 读取spring环境ConfigurableEnvironment配置,即application.yml或者application.peroperties中的配置--springProperty: 读取spring环境ConfigurableEnvironment配置,即application.yml或者application.peroperties中的配置--原创 2024-05-11 14:28:54 · 139 阅读 · 0 评论 -
SpringBoot内置插件的使用(jackson和lombok)
Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法。比如@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”),将时间格式化为“年-月-日 时:分:秒”。注解@Data作用在类上,会为类的所有属性自动生成setter/getter、equals、hasCode、toString方法。jackson包含很多注解,用于个性化序列化和反序列化操作。可以用注解@Slf4j。原创 2024-05-11 13:44:23 · 110 阅读 · 0 评论 -
撤销 git add 操作(忽略被追踪的文件)
使用git rm命令来取消暂存。这个命令用来删除文件,并将删除操作添加到暂存区。如果我们使用这个命令来删除一个被误添加到暂存区的文件,那么就可以同时取消添加和删除操作。在Git 2.23版本中引入了新的命令git restore,该命令用来恢复工作区中的文件,也可以用来取消文件的暂存.从暂存区移回工作区,但不会影响文件内容的改变。表示将文件从暂存区中恢复到工作区中。原创 2024-05-11 11:09:54 · 155 阅读 · 0 评论 -
spring boot 线程池的应用
应用场景:封装线程池任务执行器:在任务提交时,会将父线程的request_id,带入子线程,用于请求日志跟踪。SpringBootApplication启动类上需要加入注解@EnableAsync或者在配置类上使用。封装线程池任务执行器:在任务提交时,会将父线程的request_id,带入子线程,用于请求日志跟踪。原创 2024-05-10 16:30:18 · 130 阅读 · 0 评论 -
spring boot 优雅处理枚举映射(实现枚举类型自动转换)
EnumValue注解用于指定枚举类型字段的转换规则。mybatis-plus实现了对“实体类指定了枚举类型,查询时返回的是枚举值而非value值”,“插入数据时,实体赋值的是枚举类型,想入库时插入对应的value值”。通过在实体类枚举字段上添加 @EnumValue 注解,开发者可以轻松地实现枚举值与数据库字段的映射,避免了手动转换的繁琐步骤。注解是MyBatis Plus提供的一种注解,用于标识实体类中的枚举字段,指定枚举值与数据库字段之间的映射关系。是Mybatis-plus 下的枚举转换,要在。原创 2024-05-10 13:27:13 · 240 阅读 · 0 评论 -
SpringBoot过滤器的应用:跟踪请求日志、处理跨域问题
Interceptor需要在SpringMVC中配置,依赖于框架;拦截器不可以修改request的任何内容,但是能抛出异常或者返回false暂停Request的执行。指定要过滤的URL模式,也可使用属性value来声明(指定要过滤的URL模式是必选属性)Filter需要在web.xml中配置,依赖于Servlet;存储request_id,用于跟踪请求日志。接口的类定义为过滤器。原创 2024-05-10 11:40:15 · 121 阅读 · 1 评论