自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Primary_wind的专栏

理论不懂就实践,实践不会就学理论!

  • 博客(313)
  • 资源 (3)
  • 收藏
  • 关注

原创 java泛型导致运行期异常

实际类型经过object声明后,会导致编译器无法强校验,导运行时才暴露异常。

2023-10-28 02:21:10 143

原创 intellij idea 自定义选中字符的背景颜色和右侧滚动条上显示的颜色

1.看下图2.如果选中一个变量名,但是其变量在声明变量的时候没有被选中,看下图

2023-10-21 01:19:41 223

原创 分享一个配置 IntelliJ IDEA 2023 主题(自己定制化)

链接: https://pan.baidu.com/s/12aKleeQG2g1PiEwzNP7WpA 提取码: qh9m 复制这段内容后打开百度网盘手机 App,操作更方便哦。主要考虑到护眼、变量高亮显式、简洁等因素,自己作为码农每天 10 多个小时使用,都没有眼睛很累的感觉,有喜欢的小伙伴可以直接下载导入。本人基本使用过网上能搜到的各种主题配置,最后调整修改成了上面定制的一款主题;

2023-10-12 01:31:33 332

原创 java 中集合与数组的相互转换

toArray 方法的一个变体形式,提供一个所需类型而且长度为 0 的数组。toArray 方法返回的数组是一个 Object [] 数组, 不能改变它的类型。如果需要把一个数组转换为集合,Arrays.asList 包装器可以达到这个目的。在这种情况下,不会创建新数组。

2023-10-12 01:11:17 299

原创 Maven 仓库地址

8、oschina thinkgem 中央仓库(需要 x 墙哟)6、alfresco.com 中央仓库(第 3 推荐使用)10、github.com 中央仓库(需要 x 墙哟)9、java.net 中央仓库(需要 x 墙哟)4、maven.apache.org 中央仓库。7、oschina 中央仓库(需要 x 墙哟)5、maven.org 中央仓库。

2023-10-11 02:02:57 15964

原创 下面2 段代码性能上哪个更优?

下面2 段代码性能上哪个更优?

2023-10-09 02:30:45 87

原创 java 中 声明 static final 和 final static 区别

实际上是等效的,它们都用于声明常量(constant)。在这两种情况下,变量的值在声明后不能再被修改,并且在类加载时即初始化。在语法上,它们的顺序并不影响其含义。是一个修饰符,它表示变量属于类而不是实例。当修饰符的顺序与常见的习惯一致时,代码更易读懂。的方式来声明常量,因为这符合广泛接受的 Java 编码标准。注意,在 Java 中,惯例是将。关键字之前,这是因为。

2023-07-22 00:10:18 455

原创 FutureCallback 中 抛出异常 处理方式

回调方法中的异常,也不会自动处理它们。所以,如果你在回调方法中抛出异常,它将会传播到调用者并中断继续执行。方法内部进行异常处理,而不是将异常抛出。比如将异常记录日志,返回默认值,或者进行其他合适的处理。方法中抛出异常,这个异常会传播到调用者,并可能导致调用者的任务中断或异常处理逻辑执行。中抛出异常时,这取决于你在回调方法中的具体实现。任务的执行是异步的,因此当抛出异常时,调用者的线程和。的执行线程,但仍然会影响到调用者的逻辑。中捕获异常并继续执行,你可以在。的执行线程是不同的。的异常不会直接传播到。

2023-07-21 02:31:20 354

原创 java 内存分析工具

YourKit Java Profiler:这是另一款商业级的Java分析工具,用于性能和内存分析。它提供了实时的CPU和内存使用情况监视、线程分析、内存泄漏检测等功能。它能够解析和分析Java堆转储文件(例如使用jmap或jconsole工具生成的.hprof文件),帮助你识别内存泄漏和内存消耗过高的原因。JProfiler:这是一款商业级的Java分析工具,提供实时的内存分析和性能分析功能。它提供了一种可视化的界面,显示垃圾收集器的运行情况、堆的使用情况以及对象的分配和回收等信息。

2023-07-20 01:47:30 3319

原创 java 多线程中虚假唤醒

多线程环境的编程中,我们经常遇到让多个线程等待在一个条件上,等到这个条件成立的时候我们再去唤醒这些线程,让它们接着往下执行代码的场景。假如某一时刻条件成立,所有的线程都被唤醒了,然后去竞争锁,因为同一时刻只会有一个线程能拿到锁,其他的线程都会阻塞到锁上无法往下执行,等到成功争抢到锁的线程消费完条件,释放了锁,后面的线程继续运行,拿到锁时这个条件很可能已经不满足了,这个时候线程应该继续在这个条件上阻塞下去,而不应该继续执行,如果继续执行了,就说发生了虚假唤醒。在这里我给出一个自己的定义,用来理解虚假唤醒。

2023-07-18 02:39:49 399

原创 compareAndSet 的理解

是一种很重量级的操作。时间消耗很高,而不断试错 (自旋锁) 的成本很低。他们的目标是相同的。我自旋锁虽然要去看一万遍有没有空的房间,但是成本依然很低,因为现在的 cpu 性能都很高。当尝试的结果返回 true 的时候执行一些列的操作。就好比你去上厕所要不停地去检查有没有一间厕所门是开着的。让最先看见的人去上厕所,其余人回去睡觉 (wait)。相反一般配合 notify 使用,你第一次没抢到厕所,会有人上完之后温馨提醒你去有空的厕所。让最先看见的人去上 ,不停看厕所有没有人,但是这样也是很消耗 cpu 的。

2023-07-16 01:13:40 292

原创 log4j2 配置说明

如果在 log4j2 配置中的 logger 中只定义了 name 和 level,并且没有定义 AppenderRef,日志将会被输出到根 logger 的 Appender 中。所以,如果在配置中只定义了 logger 的 name 和 level,并没有显式指定 AppenderRef,日志将会被发送到根 logger 的 Appender 中,根据根 logger 的配置进行处理,通常是输出到控制台或者其他指定的目标。在上述配置中,根 logger 被定义为级别为 “debug”,并且通过。

2023-06-25 09:43:57 389

原创 flink 如何分析及处理反压

需要注意的是,反压是一个复杂的问题,解决反压问题需要综合考虑任务的整体架构、数据流的特性以及计算资源的配置等多个因素。在 Apache Flink 中,反压(Backpressure)是指当数据源产生的数据速度超过处理程序的处理能力时,处理程序需要向数据源发送信号来减慢数据产生的速度,以避免数据积压和系统崩溃。增加任务的并行度可以使任务能够处理更多的数据,从而减轻反压的问题。引入异步操作:在一些场景下,可以将一些耗时的操作转化为异步操作,从而减少任务的处理时间,提高整体处理能力,减轻反压的问题。

2023-06-24 23:35:40 520

原创 TransmitableThreadLocal 实现原理

TransmittableThreadLocal(TTL)是阿里巴巴开源的一个Java工具类库,用于解决线程池或异步任务场景下,子线程无法获取父线程中ThreadLocal变量值的问题。TTL通过在线程池或异步任务的边界传递ThreadLocal变量的值,确保在子线程中可以访问到父线程中的相同值。TTL的实现原理如下:基于ThreadLocal:TTL利用Java的ThreadLocal机制实现。

2023-06-23 21:37:34 916

原创 如何设置 javaagent

编写代理代码:在Java代理项目中编写代理代码。在Java应用程序中,可以使用Java代理(Java Agent)来在运行时修改或增强字节码,从而实现各种功能,例如性能监控、日志记录、代码注入等。代理生效:代理JAR文件将在目标应用程序启动时被加载,并且代理代码将开始修改目标应用程序的字节码。将代理JAR文件与目标应用程序一起部署:将代理JAR文件与目标应用程序放置在同一个目录下或将其添加到目标应用程序的类路径中。创建一个Java代理项目:创建一个新的Java项目,并确保项目中包含所需的构建和依赖项。

2023-06-23 19:57:19 2053 1

原创 javassist 动态修改 jar 包中 class

请注意,Javassist仅在运行时修改了类的字节码,不会直接修改Jar包中的类文件。如果你需要将修改后的类保存到Jar包中,你需要在运行时将其另存为新的类文件,并将其添加到目标Jar包中。使用Javassist,可以通过修改现有的类或创建新的类来实现动态修改Jar包中的类。需要注意的是,对于受保护的或私有的方法和字段,你需要使用相应的Javassist方法来进行访问和修改。此外,Javassist还提供了丰富的API,可以进行更复杂的类操作,如修改类的继承关系、添加接口实现等。方法获取了需要修改的类(

2023-06-23 18:59:27 1650

原创 阿里TTL线程变量使用

TTL线程变量是对ThreadLocal的增强,它可以在父线程中创建的变量值在子线程中被传递和访问。当你创建一个匿名Runnable对象并将其提交给线程池执行时,TTL会自动将父线程的变量值复制到子线程中,因此你可以在子线程中访问到父线程的TTL线程变量。通过阿里的Transmittable Thread Local(TTL)线程变量,是可以在创建匿名Runnable对象并使用线程池执行时,将父线程的变量传递给子线程的。当子线程运行时,它将能够访问父线程的TTL线程变量,并输出其值。

2023-06-23 17:04:36 1122

原创 强大的编辑器 Cursor,免费集成了 ChatGPT-4

最近,有一个编辑器火上了天,他就是 Cursor,免费集成了 openAI 的 gpt-4,不需要科学上网,重点是免费。就在上一周是 AI,集体亮相的一周,ChatGPT-4、new-bing、文心一言、Claude 等等,一一体验过这些工具,能明显感觉到作为 CV 工程师的焦虑。看起来这个编辑器是比较简单,重要是实用,能给人带来强大的助力,真的要感叹技术改变生活,恐怕以后各个开发工具都会集成 AI 进来,实现智能化时代。AI 时代来临,还不会利用工具帮助你工作,很容易就会被淘汰了。

2023-03-26 00:44:34 2685 2

原创 Eclipse memory analyze 内存分析

Eclipse 菜单文件→打开堆转储 => 选择 hprof 文件,如 java_pid3524.hprof。window -> preferences 勾选。Eclipse 菜单窗口→打开透视图→内存分析器。

2023-03-04 17:40:24 241

原创 chrome插件开发(manifest_version版本V3 + Ant Design Vue)

谷歌浏览器插件是一种小型的定制浏览器体验的程序,通过插件可以自定义浏览器的一些行为来适合个人的需求,例如上面的查看服务器状态插件。在应用商店中下载下来的插件基本上都是以.crx 为文件后缀,该文件其实就是一个压缩包,包括插件所需要的 HTML,Javascript,CSS 、图片资源等等文件。开发 Chrome 插件只需要会 HTML,Javascript,CSS 就可以动手开发了。

2022-11-26 17:37:36 9187 5

原创 jmh测试实践(针对不同准备数据测试)

通过不同准备数据进行测试。

2022-11-19 21:01:51 151

原创 guava常见用法整理(不定期更新)

guava场景用法整理,持续更新

2022-11-15 08:02:17 503

原创 删除链表的倒数第 N 个结点

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2,3,4,5], n = 2。下面贴一下官方解答,实际上可以使用快慢指针一次循环解决。输入:head = [1,2], n = 1。输入:head = [1], n = 1。进阶:你能尝试使用一趟扫描实现吗?输出:[1,2,3,5]链表中结点的数目为 sz。

2022-11-13 16:47:55 421

原创 按序打印

有三个线程会被异步启动。输入 [1,2,3] 表示线程 A 将会调用 first() 方法,线程 B 将会调用 second() 方法,线程 C 将会调用 third() 方法。输入 [1,3,2] 表示线程 A 将会调用 first() 方法,线程 B 将会调用 third() 方法,线程 C 将会调用 second() 方法。请设计修改程序,以确保 second() 方法在 first() 方法之后被执行,third() 方法在 second() 方法之后被执行。输入:nums = [1,2,3]

2022-10-23 18:32:49 112

原创 java 6种常用控制线程方式整理

【代码】java 6种常用控制线程方式。

2022-10-22 00:15:53 315 1

原创 IntelliJ IDEA 2022.3 EAP (Ultimate Edition) 版本体验

版本信息:macOS 11.1Cores: 16。

2022-10-17 23:47:44 1239

原创 flink AsyncWaitOperator 采坑 java.io.EOFException: No more bytes left

AsyncWaitOperator中没有显示使用自定义state,但是AsyncWaitOperator在执行快照时,其实会把异步队列中的数据序列化保存到state中,所以这里显然是input对象中新增了一个double类型导致异步数据从state中序列化失败,从而导致从state恢复失败。最终这里去掉@Builder后,重新编译,@Data就能生成无参构造器,符合POJO的规则 ,能够被flink POJO序列化器直接序列化支持扩展,所以这里就是踩了@Builder的坑,

2022-10-16 00:15:00 1283

原创 flink TestHarnessUtil框架源码初析

这里的output方法,已经在前面setup初始化,替换为MockOutPut(org.apache.flink.streaming.util.AbstractStreamOperatorTestHarness#setup),所以在执行function的process方法时,结果会保存在org.apache.flink.streaming.util.AbstractStreamOperatorTestHarness#outputList。底层用到了 java.util.Arrays#deepEquals。

2022-10-11 22:19:02 459

原创 美团 CAT 本地执行抛No such file or directory

本地执行,cat.logEvent抛 No such file or directory。看源码,这里可以通过设置环境变量解决 CAT_ENABLED=false。

2022-10-09 00:11:03 249

原创 阿里云 Alibaba Cloud Linux 3.2104 LTS 64位 安装 Mysql5.7 提示 GPG 密钥不存在 / 不合适

【代码】阿里云 Alibaba Cloud Linux 3.2104 LTS 64位 安装 Mysql5.7 提示 GPG 密钥不存在 / 不合适。

2022-10-04 21:37:06 526

原创 阿里云 ssh连接出现 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED

【代码】ssh连接出现 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED。

2022-10-04 00:40:47 302

原创 【python】InvalidHeader: Invalid return character or leading space in header: user-agent

python 爬虫运行报错:前面空格去掉。

2022-10-03 22:43:52 264

原创 电话号码的字母组合

输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。digits[i] 是范围 [‘2’, ‘9’] 的一个数字。输入:digits = “23”输出:[“a”,“b”,“c”]输入:digits = “2”输入:digits = “”这里采用队列的方式处理。

2022-10-03 21:12:47 99

原创 最接近的三数之和

给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2)。输入:nums = [-1,2,1,-4], target = 1。输入:nums = [0,0,0], target = 1。假定每组输入只存在恰好一个解。和求三数之和非常类似,双指针。

2022-10-03 19:24:41 84

原创 IntelliJ IDEA 2022.3首个EAP版本发布

有关 IntelliJ IDEA 2022.3 EAP 的完整列表,请参阅发行说明:https://youtrack.jetbrains.com/articles/IDEA-A-236159439/IntelliJ-IDEA-20223-EAP-1-223488469-build-Release-Notes。IntelliJ IDEA 2022.3 的抢先体验计划现已开放,第一个 EAP 通过可选的设置提供了对新 UI 的访问、改进了多屏幕工作的用户体验、以及与 Maven 相关的更新等。

2022-10-01 01:19:51 1204

原创 flink中vcore概念怎么理解?

这是因为集群中可能不是所有的机器都是同一种规格的,有的cpu处理能力强,有的弱。假设性能强的一个physical core计算能力相当于弱的3倍,这个时候,可以指定处理能力强的那个cpu一个physical core为3个vcore,而弱的一个physical core为1个vcore,分配资源的如果需要提供6个vcore,那计算能力强的那个只需要提供2个physical core即可,达到了负载均衡的效果,更加合理的利用了资源。

2022-09-22 22:59:04 917

原创 IntelliJ IDEA 2022.2 (Ultimate Edition) plugin插件开发

不用添加plugin configution 配置,直接点击gradle run plugin脚本即可。这里默认创建的iml文件module type有问题,需要修改为PLUGIN_MODULE。升级org.jetbrains.intellij 版本到最新1.9.0版本,避免采坑。可能因为github请求超时导致如下报错,忽略即可。替换为aliyun镜像加快构建速度。

2022-09-11 18:07:13 2203 1

转载 整数转罗马数字

数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。例如, 罗马数字 2 写做 II ,即为两个并列的 1。X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。解释: M = 1000, CM = 900, XC = 90, IV = 4.I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。解释: L = 50, V = 5, III = 3.

2022-09-03 00:18:56 136

原创 x 的平方根

注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5。解释:8 的算术平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去。给你一个非负整数 x ,计算并返回 x 的 算术平方根。...

2022-08-28 18:46:03 122

原创 四数之和

给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):0 ...

2022-07-12 01:00:53 184

Java_TCPIP_Socket编程.pdf

Java_TCPIP_Socket编程.pdf

2012-05-11

UML基础、案例与应用(第三版)

UML基础、案例与应用(第三版) 很适合初学者的一本书

2012-05-11

PHP内容管理系统_Joomla快速建站指南].陈红飞.扫描版.pdf

PHP内容管理系统_Joomla快速建站指南].陈红飞.扫描版.pdf 入门很好的一本书

2012-05-11

空空如也

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

TA关注的人

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