WSL2 如何一键设置代理

新建配置脚本 .proxyrc

1
nano ~/.proxyrc

内容,端口号换成自己的v2rayn监听的端口

1
2
3
#!/bin/bash
host_ip=$(cat /etc/resolv.conf |grep "nameserver" |cut -f 2 -d " ")
export ALL_PROXY="http://$host_ip:7890"

使用生效

1
source .proxyrc

Hexo文章如何置顶

hexo-generator-index-pin-top是一个文章置顶功能插件,在置顶之外实现文章按发表时间倒序功能,该插件用于替换hexo-generator-index插件

卸载系统自带的排序插件

1
npm uninstall hexo-generator-index

添加替代插件

1
npm install hexo-generator-index-pin-top --save

使用,添加top:xxx,数值越大越靠前:

1
2
3
4
5
6
7
8
9
---
title: Ubuntu22安装Docker
date: 2023-07-04 16:22:53
categories:
- Linux
tags:
- Ubuntu
top: 10
---

WSL 子系统如何默认root登入

进入目录:%HOMEPATH%\AppData\Local\Microsoft\WindowsApps\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc

黑色部分为Ubuntu子系统的文件夹,其他系统应该都差不多

执行命令:

1
ubuntu.exe config --default-user root

重启WSL子系统即可看到效果,默认登入的就是root账户了。

如何删除Windows资源管理器左侧计算机同级目录

打开注册表

直接按CTRL+F 搜索Synology Drive

在NameSpace 中会看到搜索结果,直接删除即可。

IntelliJ IDEA 控制台乱码

IntelliJ IDEA 控制台乱码问题可以通过以下方式解决:
方法一:
1. 打开IntelliJ IDEA
2. 点击菜单Help,选择Edit Custom VM Options
3. 在打开的文件中,找到文件的末尾,添加一行-Dfile.encoding=UTF-8
4. 再次启动IntelliJ IDEA,查看编码是否已经修复

方法二:
1. 打开IntelliJ IDEA
2. 点击菜单File -> Settings(或者使用快捷键Ctrl+Alt+S)
3. 在打开的对话框中,选择Editor -> File Encodings
4. 在右侧,Global Encoding和Project Encoding选择UTF-8,Default encoding for properties files选择UTF-8
5. 确认后,再次启动IntelliJ IDEA,查看编码是否已经修复

方法三:
在Run/Debug Configurations -> Configuration -> VM options 里面加上 -Dfile.encoding=UTF-8 参数。

注意: 以上更改可能需要重启IntelliJ IDEA才能生效。

docker 启动报错 library initialization failed - unable to allocate file descriptor table - out of memory

docker 启动报错

1
library initialization failed - unable to allocate file descriptor table - out of memory

1.报错日志

1
library initialization failed - unable to allocate file descriptor table - out of memory/cm-server/aiboxCloud-web/boot/entrypoint.sh: line 2: 6 Aborted (core dumped) java -Xms1024m -Xmx2048m -jar -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:/cm-server/logs/gc-%t.log -Dfile.encoding=utf-8 -Duser.timezone=GMT+8 -XX:MaxDirectMemorySize=512m .runtime/modular-bpm-runtime.jar

2.原因
(1) LimitNOFILE=infinity 虽然是不限制,但是在systemctl版本小于234的时候不生效,查看systemctl版本:systemctl –version
(2) docker容器的ulimit太小了,有文档说太大也不行
3.解决方法
解决方法1
修改/lib/systemd/system/docker.service文件

1
2
3
LimitCORE=infinity
LimitNOFILE=infinity
LimitNPROC=infinity

改成

1
2
3
LimitCORE=65535
LimitNOFILE=65535
LimitNPROC=65535

重启docker服务

1
systemctl daemon-reload && systemctl restart docker

解决方法2
问题:因运存不足无法给进程分配更多的文件句柄数而异常退出
原运行指令

1
docker run --name sentinel -p 8079:8858 -td bladex/sentinel-dashboard

改为

1
docker run --ulimit nofile=1024 --name sentinel -p 8079:8858 -td bladex/sentinel-dashboard

解决方法3
在 /etc/systemd/system/ 目录下, 创建 docker.service.d 目录
进入该目录,创建一个文件,名为 docker.conf
在文件中加入以下配置:

1
2
3
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --default-ulimit nofile=65535:65535 -H fd://

Kotlin JSON反序列化使用枚举作为类型时参数解析使用的是下标而不是实际的值问题

在 Kotlin 中使用 JSON.parseObject 方法将 JSON 字符串解析为一个对象时,如果该对象包含枚举类型,并且 JSON 中的枚举值是以整数下标表示的,而不是枚举名称,那么需要确保枚举类的定义和解析逻辑能够正确处理这种情况。

假设你有一个 DuYunDto 类,其中包含枚举类型的字段,例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
data class DuYunDto(
val cmd: MyEnum,
val state: MyEnum,
val event: MyEnum,
val vbat: Double,
val csq: Int
)

enum class MyEnum {
VALUE0, // 对应于 JSON 中的 0
VALUE1, // 对应于 JSON 中的 1
VALUE2 // 对应于 JSON 中的 2
}

在这种情况下,你需要自定义枚举的解析逻辑。可以使用 @JsonCreator 注解和一个静态方法来实现自定义解析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import com.alibaba.fastjson.JSON
import com.fasterxml.jackson.annotation.JsonCreator
import com.fasterxml.jackson.annotation.JsonValue

data class DuYunDto(
val cmd: MyEnum,
val state: MyEnum,
val event: MyEnum,
val vbat: Double,
val csq: Int
)

enum class MyEnum(val value: Int) {
VALUE0(0),
VALUE1(1),
VALUE2(2);

companion object {
@JsonCreator
@JvmStatic
fun fromValue(value: Int): MyEnum {
return values().firstOrNull { it.value == value }
?: throw IllegalArgumentException("Invalid enum value: $value")
}
}

@JsonValue
fun toValue(): Int {
return value
}
}

fun main() {
val d = """
{"cmd":2,"state":0,"event":2,"vbat":3.02,"csq":8}
""".trimIndent()
val c = JSON.parseObject(d, DuYunDto::class.java)
println(c)
}

在这个例子中:

  1. MyEnum 枚举类包含一个 value 属性来表示对应的整数值。
  2. 使用 @JsonCreator 注解和 fromValue 静态方法来实现自定义解析逻辑,确保 JSON 中的整数值可以正确转换为枚举值。
  3. @JsonValue 注解和 toValue 方法用于将枚举值转换回整数值,以便在序列化时使用。

这样,JSON.parseObject 方法在解析 JSON 字符串时会使用自定义的解析逻辑,将整数值正确转换为对应的枚举值。