自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 javac 编译期拓展之实现 CallSuper 注解功能

实现一个程序,提供一个注解 MustCallSuper 注解,其它项目的父类方法加上了此注解后,如果子类重写了此方法但是没在最开始调用super.这个方法,就编译报错。没调用父类方法编译报错 System . out . println(123);} }基础条件: 可以基于java自带的注解处理器(Annotation Processing Tool),在此拓展功能其它:为了使用方便使用,创建一个maven项目,然后打包,写入 spi 等信息,借助 spi 自动完成 注解处理器调用。问题注意。

2023-01-03 18:26:58 488 1

原创 编程在生活中的小应用

充值: 50, 余额: 57 --消费: 19, 余额: 38 --消费: 19, 余额: 19 --消费: 19, 余额: 0 --消费: 0, ^^^^余额: 0。这时候我脑袋里蹦出一个问题,要是我突然不想在这吃了,我该如何用最少的充值消费次数把钱用完。这次看着没问题了,我把限制次数从1一直设置到5,终于有了结果,也就是最短4次操作后能将余额化为0。直接爆栈了,因为除了余额(balance), 没有其它终止条件了,比如充值那就可以一直加一直加。但是这在数学上应该是一个线性规划问题,要想明白还不简单。

2022-09-17 00:24:38 1789

原创 兑换了一个力扣鼠标垫

兑换了一个力扣鼠标垫

2022-09-05 21:42:32 1411

原创 maven-assembly-plugin 打包后 grpc请求异常

描述: 一个 grpc 客户端项目,在本地直接通过idea启动测试都没问题。而打成可执行jar包后,请求服务端时会抛出io.grpc.StatusRuntimeException:UNKNOWN 、 java.nio.channels.UnsupportedAddressTypeException 异常。

2022-08-21 11:36:32 1181

原创 使用 idea 自带的 http client 工具测试 grpc 请求

如何使用 idea 自带的 http client 工具,简单的测试 grpc 请求

2022-08-13 22:19:25 1764

原创 WSL2中 使用 minikube 无法访问 pod 中服务的问题

Because you are using a Docker driver on linux, the terminal needs to be open to run it.

2022-06-18 18:50:48 1133

原创 Fiddler 抓包,查看 Spring Cloud 微服务间调用的具体信息

关于用 Fiddler 抓包,查看 Spring Cloud 微服务间调用的具体信息 今天一个朋友问我说,他们基于 Spring Cloud 开发,中间涉及服务间的调用问题,比如举个例子:一个 Upms 服务调用 Order 服务,但是有很多人同时在开发Order 服务,又不可能每个人单独搭一个注册中心,所以一般都是连接同一个注册中心开发调试,这样就导致注册中心上有很多 Order 服务实例,由于负载均衡机制,多次调用结果不一致,不知道具体调的谁的服务,导致开发调试变得麻烦。我有时也遇到这种问题,需要.

2022-05-03 12:33:27 1017

原创 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 3689

原创 spring 中多线程批处理及事务问题 & springmvc 子线程获取不到 RequestAttributes 问题

spring 中多线程批处理及事务问题 & springmvc 子线程获取不到 RequestAttributes 问题 项目地址一个功能,需要对大量数据进行操作、验证、写库等等。比如处理一个一百万条数据的 List ,采用多线程优化一下,简单的思路是拆分这个 List 比如拆分成十个List 一个List 十万条数据,然后用十个线程执行。这里我采用 CompletableFuture 的方式来实现, 简单写下代码 : /** * 拆分list * *.

2022-03-22 11:54:03 2059

原创 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 54356 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 577 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 1668

原创 nginx location 常用配置示例

nginx location 常用配置示例1、location 匹配规则官方文档 locationlocation = / { [ configuration A ]}location / { [ configuration B ]}location /documents/ { [ configuration C ]}location ^~ /images/ { [ configuration D ]}location ~* \.(gi

2021-08-29 13:01:18 3152 19

原创 arthas的核心原理浅析

Arthas 等 Java 诊断工具核心原理浅析 项目地址看了会 arthas 源码,结合资料 。用一个小 demo 展示下 arthas 的核心实现java instrument agent + ASM新建一个普通的java项目,包结构如下三个包 :target 目标类 模拟平时要维护的服务client 客户端 模拟arthas客户端agent 代理程序 客户端挂载target 再执行 target 的jar包 ,提供修改字节码等功能主要执行流.

2021-06-30 14:52:56 2826

原创 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 1175

原创 基于 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 1017

原创 javac 编译拓展,像 lombok 一样通过注解生成 自定义方法

javac 编译拓展,像 lombok 一样通过注解生成 自定义方法<<深入理解java虚拟机>> 第十章介绍了javac的相关知识,提到可以通过拓展 javax.annotation.processing.Processor在编译阶段可以自定义一些操作。还提到lombok也是通过这种方式进行代码生成。所以尝试自己来写一个玩玩,根据注解生成一个方法。参照书上的做法 :新建一个项目,结构如下具体内容:CreatePrint注解:package com.rxf113;

2021-04-10 17:15:00 763

原创 idea 插件开发教程

idea 插件开发教程项目地址根据 官方文档 选择开发方式这里我采用DevKit这种开发方式,如果开发的功能多复杂用前两种比较合适下下载并安装好 IDEA Community 社区版按照文档新建一个项目根据官方文档 建立开发环境配置完后大概这样开始开发目标:实现一个将 下划线字符串选中并转换成驼峰标识的功能。1、新建一个Action类,继承AnAction2、完成基本功能代码:3、注册Action官方文档地址根据文档,开启代码检查功能 ,具体操作为: idea左

2021-01-24 15:47:49 1289

原创 mysql 同步数据到 hdfs问题分析

datax hdfswriter 的部分问题,Permission denied: user=xxxxx 用户权限问题windows下 hdfs目录被删除问题背景: 准备用 datax 从 mysql 同步数据到 hdfs , 记录下 遇到的问题,及解决思路先测试将本txt地文件同步到hdfsjson job :{ "setting": {}, "job": { "setting": { "speed": {

2021-01-13 16:54:39 885

原创 开源 ETL 工具 DataX 实践,从mysql到mysql的全量同步和批量更新

开源 ETL 工具 DataX 实践,从mysql 到不同结构的另一个mysql的全量同步和批量更新链接: datax官方项目地址 查看全量同步 查看批量更新实践步骤:参照官方文档,采用方法一部署如果点击下载没反应,手动复制地址,把http换成https下载解压完成,运行自检脚本File “datax.py”, line 114 print readerRef 。因为我电脑安装的是python3 ,脚本里是python2语法修改下 datax.p

2021-01-09 14:56:29 3161

原创 自定义 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 4877 2

原创 Flutter实现实时搜索框

Flutter实现实时搜索框效果图最近学习了点flutter,练习下,实现一个普通的实时搜索功能,有些细节还未完善,大体写完了如下:版本号:IDE: idea 2019效果图项目地址

2020-08-25 17:42:58 1736 1

原创 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 1965

原创 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 1333

原创 sharding-jdbc 学习 2

接着上一篇,InlineShardingStrategyConfiguration不支持范围分片操作。看看文档选用StandardShardingStrategy 标准分片策略。修改原来的分库分表策略代码:// 配置分库 + 分表策略//orderTableRuleConfig.setDatabaseShardingStrategyConfig(new InlineSha...

2020-04-21 17:49:29 439

原创 sharding-jdbc 学习 1

shardingsphere官方文档先看看数据分片 =>数据分片链接使用基于java编码的规则配置1 获取Datasource把截图代码cv过来稍加改造后dataSourceUtils 截图:datasources.properties 截图:数据库 截图插入6条数据试试结果:根...

2020-04-15 16:09:32 611 1

原创 自定义cas操作类

cas操作在jdk1.8 的java.util.concurrent包下很多类都有cas操作,来保证操作原子性可以看到是Unsafe类里面的方法,而且都是native方法。根据这些代码 模拟一个cas操作类试试看此类需要的:Unsafe 属性 unsafe volatile修饰的属性 statestate在内存中的位置 stateOffset期望值(state的...

2020-04-13 23:19:42 320

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除