
java
文章平均质量分 75
我不是文盲
论文盲如何转行码农
展开
-
javac 编译期拓展之实现 CallSuper 注解功能
实现一个程序,提供一个注解 MustCallSuper 注解,其它项目的父类方法加上了此注解后,如果子类重写了此方法但是没在最开始调用super.这个方法,就编译报错。没调用父类方法编译报错 System . out . println(123);} }基础条件: 可以基于java自带的注解处理器(Annotation Processing Tool),在此拓展功能其它:为了使用方便使用,创建一个maven项目,然后打包,写入 spi 等信息,借助 spi 自动完成 注解处理器调用。问题注意。原创 2023-01-03 18:26:58 · 626 阅读 · 1 评论 -
编程在生活中的小应用
充值: 50, 余额: 57 --消费: 19, 余额: 38 --消费: 19, 余额: 19 --消费: 19, 余额: 0 --消费: 0, ^^^^余额: 0。这时候我脑袋里蹦出一个问题,要是我突然不想在这吃了,我该如何用最少的充值消费次数把钱用完。这次看着没问题了,我把限制次数从1一直设置到5,终于有了结果,也就是最短4次操作后能将余额化为0。直接爆栈了,因为除了余额(balance), 没有其它终止条件了,比如充值那就可以一直加一直加。但是这在数学上应该是一个线性规划问题,要想明白还不简单。原创 2022-09-17 00:24:38 · 2091 阅读 · 0 评论 -
兑换了一个力扣鼠标垫
兑换了一个力扣鼠标垫原创 2022-09-05 21:42:32 · 1560 阅读 · 0 评论 -
maven-assembly-plugin 打包后 grpc请求异常
描述: 一个 grpc 客户端项目,在本地直接通过idea启动测试都没问题。而打成可执行jar包后,请求服务端时会抛出io.grpc.StatusRuntimeException:UNKNOWN 、 java.nio.channels.UnsupportedAddressTypeException 异常。原创 2022-08-21 11:36:32 · 1472 阅读 · 0 评论 -
使用 idea 自带的 http client 工具测试 grpc 请求
如何使用 idea 自带的 http client 工具,简单的测试 grpc 请求原创 2022-08-13 22:19:25 · 2393 阅读 · 0 评论 -
Fiddler 抓包,查看 Spring Cloud 微服务间调用的具体信息
关于用 Fiddler 抓包,查看 Spring Cloud 微服务间调用的具体信息 今天一个朋友问我说,他们基于 Spring Cloud 开发,中间涉及服务间的调用问题,比如举个例子:一个 Upms 服务调用 Order 服务,但是有很多人同时在开发Order 服务,又不可能每个人单独搭一个注册中心,所以一般都是连接同一个注册中心开发调试,这样就导致注册中心上有很多 Order 服务实例,由于负载均衡机制,多次调用结果不一致,不知道具体调的谁的服务,导致开发调试变得麻烦。我有时也遇到这种问题,需要.原创 2022-05-03 12:33:27 · 1223 阅读 · 0 评论 -
java 中 String 拼接的问题
java 中 String 拼接的问题今天看到网上一个关于代码效率优化的视频,对下面这段字符串拼接的代码进行优化。因为上面的方式会多在栈中多创建一个引用。修改前:for (int i = 0; i < 1000_0000; i++) { String v1 = map.get("k1"); String v2 = map.get("k2"); String s = v1 + " " + v2;}修改后:for (int i = 0; i < 1000_00原创 2022-04-10 13:59:58 · 3835 阅读 · 0 评论 -
spring 中多线程批处理及事务问题 & springmvc 子线程获取不到 RequestAttributes 问题
spring 中多线程批处理及事务问题 & springmvc 子线程获取不到 RequestAttributes 问题 项目地址一个功能,需要对大量数据进行操作、验证、写库等等。比如处理一个一百万条数据的 List ,采用多线程优化一下,简单的思路是拆分这个 List 比如拆分成十个List 一个List 十万条数据,然后用十个线程执行。这里我采用 CompletableFuture 的方式来实现, 简单写下代码 : /** * 拆分list * *.原创 2022-03-22 11:54:03 · 2232 阅读 · 0 评论 -
Log4j 漏洞测试
Log4j 漏洞测试紧跟潮流,介绍在windows下进行 Log4j 漏洞测试,linux上步骤也都一样。1、参照项目,项目地址: https://github.com/mbechler/marshalsec克隆代码到本地,mvn clean package -DskipTests打包,target 目录下会生成marshalsec-0.0.3-SNAPSHOT-all.jar2、新建一个普通的 java 类,等会将此类注入到待测试的项目中。可以随便写逻辑 (生成文件、定时关机等)示例:功能是在原创 2021-12-12 12:04:42 · 55307 阅读 · 13 评论 -
自定义 springmvc 参数接收
自定义 springmvc 参数值接收项目地址今天一朋友问我,能不能想办法把 RequestBody 接收的实体类里面的某几个字段,像 RequestParam 一样写到方法参数里,挨个接收。大概就是这种样子把下面这种class Dto { private String name; private Integer age;}@PostMapping("/test")public Object test(@RequestBody Dto dto);变成下面这种情况@Po原创 2021-12-08 13:32:38 · 703 阅读 · 3 评论 -
maven-assembly-plugin 同名类覆盖时遇到的一点问题
maven-assembly-plugin 同名类覆盖时遇到的一点问题 背景:一个maven项目,依赖了一些jar包,我想修改某个jar包里面的某个类(比如: org.abc.classA)。由于它并没有提供很好的拓展入口,我选择投机取巧的方法,在当前项目下新建一个 org.abc.classA 类,实现我自己的逻辑。因为本地classes先于依赖的jar包被加载,同全限定类名只会被加载一次。所以就完成了对 org.abc.classA 类的覆盖。但是,实际打包后执行却发现加载的依旧是原来的类。我.原创 2021-10-12 22:59:05 · 2138 阅读 · 0 评论 -
arthas的核心原理浅析
Arthas 等 Java 诊断工具核心原理浅析 项目地址看了会 arthas 源码,结合资料 。用一个小 demo 展示下 arthas 的核心实现java instrument agent + ASM新建一个普通的java项目,包结构如下三个包 :target 目标类 模拟平时要维护的服务client 客户端 模拟arthas客户端agent 代理程序 客户端挂载target 再执行 target 的jar包 ,提供修改字节码等功能主要执行流.原创 2021-06-30 14:52:56 · 2985 阅读 · 0 评论 -
arthas调试springboot项目
Arthas 调试 Spring Boot 项目 1 安装 arthas idea 插件2 在springboot项目中加入依赖3 在项目中创建一个类,获取ApplicationContext@Componentpublic class ApplicationContextProvider implements ApplicationContextAware { private static ApplicationContext context; pu.原创 2021-06-24 14:44:51 · 1293 阅读 · 0 评论 -
基于 protobuf 浏览器通过 websocket 与 netty 服务端通信
基于 protobuf 浏览器通过 websocket 与 netty 服务端通信 项目地址前端前端采用 protobuf.js protobuf.js 项目地址 的方式,可以免去手动根据proto文件生成js代码目录截图,三个文件就够了,中间的文件是从下载的 protobuf.js 的Source code中拷贝出来的proto 文件:syntax = "proto3";package protoMsg;message Msg { string time .原创 2021-05-05 19:17:01 · 1234 阅读 · 0 评论 -
idea 插件开发教程
idea 插件开发教程项目地址根据 官方文档 选择开发方式这里我采用DevKit这种开发方式,如果开发的功能多复杂用前两种比较合适下下载并安装好 IDEA Community 社区版按照文档新建一个项目根据官方文档 建立开发环境配置完后大概这样开始开发目标:实现一个将 下划线字符串选中并转换成驼峰标识的功能。1、新建一个Action类,继承AnAction2、完成基本功能代码:3、注册Action官方文档地址根据文档,开启代码检查功能 ,具体操作为: idea左原创 2021-01-24 15:47:49 · 1419 阅读 · 0 评论 -
自定义 LocalDateTimeDeserializer 全局json反序列化处理时区格式转换问题
自定义 LocalDateTimeDeserializer 全局json反序列化处理时区格式转换问题点击 直接查看结论背景 :后端接收国际标准时间格式 yyyy-MM-ddTHH:mm:ss.SSSZ(eg: 2018-01-13T16:00:00.000Z) 的时间格式,要转换成东八区时间,也就是北京时间。我根据经验用如下这种常见的方式处理:@Configurationpublic class CusLocalDateTimeConfig { static final String原创 2020-12-31 20:19:28 · 5874 阅读 · 2 评论 -
jdk1.8 ConcurrentHashMap学习 2 addCount fullAddCount
jdk1.8 ConcurrentHashMap学习 2 addCount 的第一部分 之 fullAddCountaddCount() 就是ConcurrentHashMap put进去一个元素后,执行的增加size的操作,因为ConcurrentHashMap是能在并发环境下保证线程安全的,所以肯定不会是简单的++操作。那先看看size()方法可以发现,size的组成是 baseCount属性 加上CounterCell数组里面的所有值的和public int size() {原创 2020-06-29 23:38:10 · 2047 阅读 · 0 评论 -
Hashmap初始参数到底该怎么选
Hashmap初始参数到底该怎么选从源码分析Hashmap初始化参数该怎么选在new HashMap()的时候有些插件或是ide会提示给定初始化容量,但具体给多少,以前我都是预计装n个元素那就new HashMap(n); 现在还是决定看一下源码再做分析// An highlighted block//首先是单个参数Map<Long,String> map = new HashMap<>(9);public HashMap(int initialCapacity) {原创 2020-05-25 18:20:58 · 1530 阅读 · 0 评论