自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【持续更新】Java 中使用 @SuppressWarnings 警告压制汇总

根据个人实际代码中遇到的警告问题进行汇总,持续更新。标准用法一般常用在普通 JavaSE 项目中。关键字用途allto suppress all warningsboxing to suppress warnings relative to boxing/unboxing operationscastto suppress warnings relative to cast operationsdep-annto suppress warnings r

2022-05-22 12:36:24 1596

原创 【HomeAssistant】启动失败:No IPv4 address found on en0

3、解决方法:自定义配置(配置文件自动生成在~/.homeassistant中)。2、查看本机网络信息,可以看到 en0 网卡是不可用状态,en1 是可用状态。4、配置完成重新启动:hass --open-ui。

2023-05-19 18:40:23 1686

原创 【CXF】apache cxf 整合 Spring 增加异常处理器

当发生异常时,会通过遍历exceptionMappers找出ExceptionMapper进行异常处理,同时会根据ExceptionMapper的实现类上的异常类型,根据业务方法抛出的异常找到最适合处理异常的ExceptionMapper的实现类,取第一个进行执行。2、通过反射注册到Server。1、多个异常处理器的决策。2、注册到Server。1、定义异常处理器、1、定义异常处理器。

2023-04-26 13:34:56 344

原创 JackSon序列化和反序列化枚举类型

【代码】JackSon序列化和反序列化枚举类型。

2023-04-07 16:44:53 592

原创 简述普通 Java 与 Spring 工程中 hibernate 的使用与工作原理

1.在 Maven 项目中使用 Hibernate,这里省略数据库驱动与数据源的依赖坐标。2.创建配置文件 src/main/resources/META-INF/persistence.xml。3.配置与表映射的 Java Entity。4.修改 persistence.xml hibernate.hbm2ddl.auto=create 设置 Hibernate 根据 Entity 配置自动建表,注意表结构创建好之后一般后续都修改 hibernate.hbm2ddl.auto 为 none。5.使

2022-09-22 20:34:32 561 1

原创 TCP 状态转换

TCP 状态转换图

2022-09-18 14:53:03 595

原创 TCP 中 Flags 标志位 ACK、SYN 与 seq、ack

ack 只管带上期望位置的字节数据编号,接收端根据接收到的数据长度 + 最近一次 ACK=1 的 seq + 1 作为下次 ack 期望值。循环往复,直到 FIN=1 结束 TCP 连接。

2022-09-17 00:47:20 5900 2

原创 Java 函数式编程柯理化写法

【代码】Java 函数式编程柯理化写法。

2022-09-12 15:42:29 167

原创 fast-request-2.1.3 免费版

https://github.com/lmmarisej/fast-request-release/releases/tag/fast-request-2.1.3

2022-08-05 13:35:52 5575 5

原创 Docker 中 Minio 创建

–console-address : web 管理端地址。

2022-07-07 14:33:22 505 3

原创 Mac 切换 Shell 环境默认 java -version 版本

mac 下的 JDK 版本切换有点奇怪,死活切换不了,不过可以借助三方工具 jenv 来简化。Bash 执行:zsh 执行:jenv 安装完毕。将上面获得的 java home 文件目录 add 到 jenv 就 OK。4、 查看 jenv 管理的 JDK 表示正在使用的版本,通过 也能查看当前正在使用的 java 版本。6、查看 jenv 对 mac 系统当前 java 版本的影响终于切换成功了。......

2022-07-06 12:11:20 570

原创 Mac 上 VMvare 虚拟机 Centos 上的 Docker 容器中的文件夹共享到 Mac 实体机

1、启动 centos。2、点开设置-共享,在主机创建一个文件夹与 centos 共享。3、左下角会提示安装 vm-tools。4、安装 vm-tools,我这里已经安装了,显示重新安装。5、因为centos 没有 GUI,需要进入命令行安装。进入 centos 终端。6、依次执行命令:7、映射目录在 ,根据我自己的情况,将其软连接到 下方便使用。8、进行共享测试。.............................................................

2022-07-04 15:00:46 851

原创 Centos 服务器 Grafana 性能监控

1、下载安装2、防火墙放行 web 端口3、访问 web 界面 admin/admin

2022-07-04 14:46:47 871

原创 SSH 登录指纹验证

SSL 一般是很安全的,但自签SSL证书最容易受到SSL中间人攻击,基于 SSL 的 SSH 登录一般会在第一次要求验证公钥签名。1、查看服务使用的密钥。2、对服务器公钥进行签名。3、远程 SSH 登录,第一次登录会给出服务器公钥的签名。此时,需要你肉眼比对终端设备给出的 SHA256 指纹,与步骤二中 SHA256 指纹,有任意一条匹配就能确定连接使用的公钥是对应的服务器的,也就可以安全链接,可以确定没有被中间人攻击。......

2022-07-04 10:54:40 1467

原创 手动实现 Spring @Value 属性动态刷新

属性动态刷新。

2022-06-05 20:30:59 2113 4

原创 SpringBoot FilterRegistrationBean 动态向 Web 容器注册 Filter 的原理

我们通过向 IoC 容器注入 FilterRegistrationBean 的实例,SpringBoot 就自动使其作为一个 Filter 在 Web 容器中生效。那这是什么原理呢?

2022-06-03 05:50:34 1549

原创 Netty SimpleChannelInboundHandler 自动判断是否需要调用 Handler 处理 Message 的原理

场景假设我们基于 Netty 自定义实现我们自己的 RPC 框架,那么需要先从网络 I/O 从根据原始的 byte[]字节流转为Java 对象(ByteToMessageDecoder)。由于 RPC 是请求响应模型,那么 Netty 框架对 RPC 包进行处理的流程就是 Byte -> Message -> Request/Response。问题也就是说,Netty 的 Message 对应到 RPC 有两条具体的实现,分别是 Request/Response。对应到我们的 RPC 协

2022-05-23 16:25:53 1788

原创 Java 延迟写入:Unsafe.put/getOrdered、put/getVolatile 与 volatile

volatile为了后续理解,先简单说下 volatile 关键字。volatile 修饰变量提供内存可见性,JSR-133 增强了 volatile 的内存语义(happens-before):限制编译器和处理器对 volatile 变量与普通变量的重排序。JVM 提供的禁止重排序支持,实现原理是内存屏障:读屏障(Load Barrier)和写屏障(Store Barrier)。内存屏障作用:阻止屏障两侧的指令重排序。强制把写缓冲区 / 高速缓存中的脏数据等写回主内存,或者让缓存中相应的数据

2022-05-21 19:08:49 590

原创 解决 OCS: No schema for XXX at xx index, context <Quirks> 警告

一年以前我就发现从某天开始就出现了这个问题,一直不得解,经过长达一年的强迫症忍受和 N 次的尝试,终于得以解决。原因分析OC 编辑器的版本与 config.plist 不兼容,出现这个问题的原因是 OC 编辑器自动升级了,并且你用了这个升级后的软件来编辑你的 config.plist 文件。或者说一开始你的 OC 就与 config.plist 文件版本不匹配。如上原因导致的,并非是 config.plist 文件中配置项少了个 Schema。解决方法第一步,升级 OC 编辑器到最.

2022-05-20 18:05:42 16822

原创 MySQL InnoDB RR 下存在幻读?到底是幻读还是数据不一致?

MySQL InnoDB RR 存在幻读?或许你听过此说法,但可能未必如此。

2022-05-14 18:14:53 357

原创 解决Docker Unable to connect to the server: EOF

问题描述$ kubectl get pod -n istio-systemUnable to connect to the server: EOF问题原因分析我看了下我的host文件,在安装了k8s后自动增加了一条对kubernetes.docker.internal的地址解析。 cat /etc/hosts# Added by Docker Desktop# To allow the same kube context to work on the host and the contai

2022-05-09 13:07:38 3524 1

原创 为什么AQS使用双向链表

看注释一眼看去以为AQS是使用的CLH队列,单向链表实现的同步队列。再看代码实现,每个Node实例节点却是维护了前后节点的指针,也就是双向链表结构。那么问题来了,按理说CLH这种单向的链表结构应该够用了(入队、出队、唤醒),那为什么还需要多此一举?重新仔细阅读注释:结合注释我们发现,prev和next指针主要是中断和唤醒后续阻塞线程时需要用到,这也就是为什么用双向链表的原因,也就是本文的答案。中断用于在AQS#acquireInterruptibly(int arg)获取锁的过程中处理中断.

2022-05-02 04:31:17 8862 6

原创 解决Mac有个软件图标一直卡在屏幕最上方

Mac系统的Bug,虽然重启能解决,但我不希望重启,这会打断我的工作状态。对付Bug的方法,就是使用魔法打败魔法。第一步,打开launch:第二步,任意找一个图标:第三步,点击该图标,不撒手,再按空格键,你会发现卡在屏幕最上方的图标消失了。...

2022-05-01 23:01:53 2315 10

原创 Java内省API PropertyDescriptor#createPropertyEditor(javaBean)返回null造成空指针

问题描述 propertyDescriptor.setPropertyEditorClass(DatePropertyEditor.class); PropertyEditor propertyEditor = propertyDescriptor.createPropertyEditor(user); // 返回null解决方法——外部类自定义的属性编辑器DatePropertyEditor没有用public修饰,给DatePropertyEditor加上public。解决方法——内部类

2022-04-29 01:09:00 499

原创 vim设置自动保存快捷键、执行当前正在编写的Shell脚本快捷键

打开vim配置文件vim ~/.vimrc向vim配置文件添加以下内容:添加保存快捷键——按下F10快捷键保存不退出" 将缓冲区写入文件map <F10> <ESC>:w<CR>imap <F10> <ESC>:w<CR>测试:按下F10:添加运行快捷键——按下F9运行当前正在编写的脚本文件" 直接执行当前正在编辑的shell脚本map <F9> <ESC> :!sh % <CR

2022-04-26 01:52:24 2125

原创 macOS使用快捷键控制安卓手机音乐播放器

0 准备安卓下一曲/上一曲/播放/暂停:https://developer.android.com/reference/android/view/KeyEvent#KEYCODE_MEDIA_NEXT如上:我们在谷歌开发文档中直到安卓的下一曲code是87,记下。实现思路:mac使用adb连接手机,建立基本的通讯连接,再使用mac的自动操作(AppleScript)与键盘快捷键进行映射。1 连接手机手机开启监听服务:建立连接:注:上面是局域网,需要在同一个nat(WiFi)下才行。若是需要

2022-04-12 00:43:10 3330

原创 为什么Java中Integer.MIN_VALUE等于负Integer.MIN_VALUE

Integer.MIN_VALUE == -Integer.MIN_VALUEpublic static void main(String[] args) { // Place your declaration for i here int i = Integer.MIN_VALUE; System.out.println(Integer.toBinaryString(i)); // 10000000000000000000000000000000 System.

2022-03-14 18:17:05 1097

原创 Java避免在构造器中调用可覆写方法

class Point { protected final int x, y; private final String name; // Cached at construction time Point(int x, int y) { this.x = x; this.y = y; name = makeName(); // 调用实例方法,实例方法访问实例属性,然而实例属性并未初始化 } prot

2022-03-14 17:20:35 1137

原创 Java静态final域在被初始化之前可能被访问

public class Elvis { public static final Elvis INSTANCE = new Elvis(); private final int beltSize; private static final int CURRENT_YEAR = Calendar.getInstance().get(Calendar.YEAR); // 0,正确的结果应该是:2022 // 不要在构造器中读取final静态变量 private

2022-03-14 16:59:58 646

原创 Java中的数值运算自动拓宽导致bug

在Java中,+运算符会导致参与操作的变量自动提升为其中最大宽度的类型。比如:short+int,会导致short自动提升为int再相加,变成int+int。int+String,会导致int自动提升为String再相加,变成String+String。对于复合运算符来说,也是如此,且看下面一个死循环:public static void main(String[] args) { // Place your declaration for i here short i = -

2022-03-14 14:55:30 669

原创 Java中byte和char的区别

类型符号大小表示范围是 -128-127byte有符号1 字节大小范围是 -128-127char无符号2字节大小范围为 0-66535 ( 对应的 Unicode BMP 码位置)注意1Java 设计时 Unicode 的码点上限还是 0xFFFF,也就是Java 中 Char 2个字节长度的由来(UTF-16 code unit)。也就是说Java中的Char只能表示简化版的Unicode,即 BMP(第0平面)范围内的字符。有些字符...

2022-03-13 18:53:14 3387

原创 解决IntelIj IDEA下同一个Maven聚合工程中,子工程中类不能互相引用问题

这种情况一般是idea缓存的项目索引出现了问题,重建即可。一般重建之后都能解决,不能解决再使用Invalidate Caches,重建idea全局索引。

2022-03-01 15:46:47 750

原创 Java 泛型 ? extends 与 ? super

我们经常在集合的泛型中用到 extends、super 关键字。先看下 List 集合中获取和放入接口的定义:通过类定义可以看到,泛型的具体类型在创建集合实例时指定,用于限定该实例的 get/set 取出和放入时的集合元素类型。了解上述后,再看下面你就不会觉得奇怪。第一条语句编译错误,为什么呢?第二条语句正常编译,为什么呢?第一条语句编译正常,为什么呢?第二条语句正常编译,为什么呢?在上面的例子中,我们至少能看出:我们用 Java 对现实世界的水果进行简单的抽象,水果抽象为 Fruit,Apple

2022-02-11 18:27:43 11845 10

原创 Java Unsafe CAS、volatile与可见性

多核CPU中光用lock+cmpxchg指令来保证原子、可见和禁止重排序是不够的,还需要C++在asm后紧跟volatile提供禁止GCC重排序功能。而Java volatile与Java CAS相比,Java CAS还缺失了Java volatile具有的禁止重排序功能,为什么???Java CAS用到了C++的volatile吗?没错,至少在JVM的C++层面实现是相同的,但是Java属于编译+解释型语言,Java在编译具有volatile的属性get/set时会自动添加能触发内存屏障的指令!!!而对于

2022-01-21 23:54:01 705 3

原创 针对Intel芯片mac、win平台对cpu功耗、频率、电源等信息检测

按照英特尔的官方文档操作:https://www.intel.com/content/www/us/en/developer/articles/tool/power-gadget.html,就是下载、安装、重启。注意:一定要按照官方文档详细操作。查看效果:Intel官方监控工具:第三方工具也能使用该驱动:附:mac下的变频测试软件:cpu-s,https://pan.baidu.com/s/14r2RVniViY0q_qhfSVdMZQ&shfl=sharepset,密码:xccc.

2021-12-26 03:25:41 1508 1

原创 mac monterey、big sur、Catalina原生heic、jpg壁纸,并将壁纸拷贝到系统文件夹下教程

要的自取:链接: https://pan.baidu.com/s/1jaN4aCZ2kj0JdZhacRBW8Q 提取码: ****

2021-12-21 15:56:17 1548 1

原创 pycharm修改掉参数红色的颜色

Java写多了,见不惯红色。如下图,对着修改即可:

2021-12-06 15:31:20 1495 3

原创 mac通过HDMI/DP控制显示器OSD亮度和音量

https://github.com/MonitorControl/MonitorControl,功能强大,能解决HDMI这种输出无法控制音量的弊端;还支持native OSD亮度调节功能。

2021-11-30 22:02:19 2892

原创 解决macos下devServer代理无效

把proxy中的localhost或127.0.0.1这种ipv4的本地环回地址写法改为ipv6的写法,比如http://localhost:90改为http://[::1]:90。前端是真的费时且无趣。一大堆框架兼容性差不说,API升级个小版本都跟变脸一样。...

2021-10-25 02:22:18 580 2

原创 mac下docker搭建consul集群

准备1.安装docker。brew install docker-machine。2.mac的沙箱安全机制较为严格,先确认或添加宿主机可用目录。3.consul image。无需担心,直接用latest,docker会在创建时自动拉取。手动:docker pull consul。创建集群1.第一个节点docker run -d --name consul1 -v /var/folders/consul:/data --restart=always -p 8500:8500 -p 8300:83

2021-10-24 17:42:50 496

空空如也

空空如也

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

TA关注的人

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