Hellojxl - hellojxl
type: channel
link: https://www.hellojxl.com/index.php/author/1/
description: hellojxl
items: Windows下多版本MySQL的安装
items: 自用的哪吒探针主题
items: 叛逃回google chrome的原因
items: 迁移至新服务器
items: https://www.hellojxl.com/index.php/archives/52/
items: Linux下桌面快捷方式启动路径问题
items: 解决p/invoke在Linux下的段错误问题
items: GDB调试笔记
items: Linux下的中文乱码问题
items: 解决realtek rtl8822ce无线网卡丢包卡顿问题

Windows下多版本MySQL的安装
type: item
date: 2025-12-08T10:36:00+00:00
description: 前言最近由于等保相关问题以及本地开发的需要，需同时安装多个版本的MySQL，因此只能根据zip进行手动安装，期间遇到一些问题，在此记录一下。手动安装过程首先从官网下载zip格式的压缩包，并解压到向安装的目录在安装目录新建一个my.ini配置文件，文件内容如下，大部分是默认配置(log相关名称已改)，可按自己需要修改。 --------太长已折叠，点击查看具体配置-------[mysql] no-beep default-character-set=utf8mb4 # SERVER SECTION # ---------------------------------------------------------------------- # # The following options will be read by the MySQL Server. Make sure that # you have installed the server correctly (see above) so it reads this # file. # # server_type=3 [mysqld] # The next three options are mutually exclusive to SERVER_PORT below. # skip-networking # enable-named-pipe # shared-memory # shared-memory-base-name=MYSQL # The Pipe the MySQL Server will use. # socket=MYSQL # The access control granted to clients on the named pipe created by the MySQL Server. # named-pipe-full-access-group= # The TCP/IP Port the MySQL Server will listen on port=3306 tls_version=TLSv1.2,TLSv1.3 innodb_force_recovery=0 # Path to installation directory. All paths are usually resolved relative to this. basedir="D:/dev/mysql/" # Path to the database root datadir=D:/dev/mysql/Data # The default character set that will be used when a new schema or table is # created and no character set is defined # character-set-server= # Administers multifactor authentication (MFA) capabilities. It applies to the authentication # factor-related clauses of CREATE USER and ALTER USER statements used to manage MySQL account # definitions, where “factor” corresponds to an authentication method or plugin associated # with an account. authentication_policy=*,, # The default storage engine that will be used when create new tables when default-storage-engine=INNODB # The current server SQL mode, which can be set dynamically. # Modes affect the SQL syntax MySQL supports and the data validation checks it performs. This # makes it easier to use MySQL in different environments and to use MySQL together with other # database servers. sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZER…

自用的哪吒探针主题
type: item
date: 2025-01-11T12:18:00+00:00
description: 前言打算换一下主题，在此记录一下，以防后面要改过来。主题设置1、首先需要修改主题为：Default2、添加以下自定义样式： 结束应用一下就可以了。

叛逃回google chrome的原因
type: item
date: 2024-11-29T09:58:00+00:00
description: 前言大概两个月前迫于chrome提示纯净版的鼠标手势插件crxMouse Chrome™ 手势被下架，一时间没有找到好用的鼠标手势，于是短暂的转到了基于火狐版本的LibreWolf,这两天又叛逃回chrome了。弃用LibreWolf的原因大概原因主要有四点：其一：占用内存比较大，直接都说chrome占用内存比较大，但是librewolf占用的内存感觉可能会更多，基于平常的使用习惯，最多的时候会占用到2个多G的内存，超过了idea成为了占用内存最多的软件，刚才看了下chrome大概占用了1.2个多G，标签应该大概差不多，并且chrome并没有开启节省内存的选项；其二：观看YouTube时大概率的会转圈圈，起初以为时网络问题，但是刷新后却能变正常，用chrome也是正常的，不能不怀疑是google作恶的结果，但真的很蛋疼；其三：打开必应新闻时会打开标签但是内容确实空白的，刷新一下页面才会进去，这个问题也是最近几天才出现的，不确定是不是更新导致的；最后一点：终于在chrome上找到了一款简洁的鼠标手势；结合以上原因终于让我抛弃了librewolf，重新回到了chrome的怀抱。常用的chrome插件1、AdBlock，用于广告拦截，可能有更好的，但是因为多年来一直在用，懒得换了。2、Bitwarden密码管理器，因为是自建的，这么多小鸡不能白放着不是。3、Proxy SwitchyOmega 3 又名：ZeroOmega，chrome提示老的插件不支持V3协议了，有开发者适配了V3协议并上架到google商店了。4、simpleGestures，看样子是日本开发者开发的一款鼠标手势，功能非常简单，只支持鼠标手势不支持超级拖拽，我只需要手势并且是简单的几种，对我来说足够了。5、可可翻译，用于代替google的内置翻译，需要简单配置一下就可以使用了。结束正好今天看到新闻说google联合了几个浏览器厂商建立了[浏览器选择联盟]为的是反edge，因此也就有了这篇文章，不过话说edge自动的鼠标手势确实不错，但是作为一名开发者电脑上只装一款浏览器显然是不够的。

迁移至新服务器
type: item
date: 2023-12-16T17:43:00+00:00
description: 黑五看到RN又在卖DC2的服务器，忍不住又入手一个，谁知cc家圣诞也卖了，配置差不多，流量还多了一个T，还便宜几分钱，这谁能忍？于是乎又入手一个，于是手里的VPS就太多了，打算之前那个就不续费了，还包括一个圣何塞的，于是就把博客迁移到新服务器上了。迁移的时候打算换个博客系统，虽然弄过好多次了，但是本身不是干这个的，不过找来找去也没有太合适的，于是又部署了一遍，用typecho自动的备份迁移了过来，还好数据没问题，只有主题需要重新弄一下了，懒得直接从原来的服务器同步，于是乎就想在网上找一下下载地址，找来找去就找到目前这个主题Jasmine，看到网上的配置的挺好看，结果自己弄下来看着不太一样，看文档也没弄明白怎么弄，直到看到作者在评论里说设置外观才发现原来需要点击设置外观最旁边的设置外观才行，然后照着配置瞎弄了一下，总算能看得过去了。配置的时候突然发现目录多了一个index.php，看着怪碍眼的，于是在网上找了半天解决方案，都没有效果，突然看到旧文章里面的链接都带着index.php，于是乎就在设置->永久链接里看到了是否使用地址重写功能，强制开启了之后果然index.php消失了，但是文章访问不了了，不过还好，看到过解决方案： location / { root /usr/share/nginx/html; index index.php; #增加下面这句 try_files $uri $uri/ /index.php?$query_string; }好了，睡觉去了，虽然还不怎么困🤣

https://www.hellojxl.com/index.php/archives/52/
type: item
date: 2023-12-16T16:03:00+00:00
description: 终于成功了，庆祝一下😏😏😏

Linux下桌面快捷方式启动路径问题
type: item
date: 2023-04-11T09:22:00+00:00
description: 前言之前提到过当前公司正在进行国产化方面的东西，目前有个桌面软件需要迁移到Linux下，于是通过Avalonia UI实现了一下，具体实现过程还算顺利，跟WPF相比虽说有些差异但感觉可以接受，也可能跟本身项目不复杂有关，毕竟就三个窗口。在添加完桌面快捷方式之后遇到了点问题，于是就有了这篇日志。创建桌面快捷方式新建一个utf-8格式的文本，名称改为应用名称，后缀改为.desktop就可以了，为避免误人子弟，常用内容可参考这里,下面是例子：[Desktop Entry] Name=XXXX Type=Application Exec=/home/test/xxx Path=/home/test/xxx Icon=/home/text/xxx.png StartupNotify=true完了之后只要将该文件复制到桌面上就变成启动快捷方式了，如果想在开始菜单中或启动器中看到，就把该文件复制到/usr/share/applications目录中就可以了。也可以增加Categories指名应用分类，这样就可以出现在开始菜单或启动器中的不同分类下面了，具体分类可以参考这里路径问题正常项目启动时会生成日志文件，但是在桌面启动时却没有生成，研究了一下，找到两种解决办法，增加Path这个关键字，该参数可以指名工作路径，处理非常简单，这也是项目里使用的办法。可以定义一个脚本，和应用放到一起，通过启动脚本来解决路径问题，对比增加关键字，这种方式更加灵活一点，下面是脚本内容： #! /bin/bash # shellcheck disable=SC2046 cd $(dirname $0) || exit ./xxx然后需要将.desktop文件里替换掉Exec=后面的内容，改为：sh /home/test/xxx.sh就可以了。结束对比windows，linux下的处理相对灵活很多，不亏是一切皆文件。

解决p/invoke在Linux下的段错误问题
type: item
date: 2023-03-19T13:56:00+00:00
description: 前言最近公司打算将操作系统迁移到Linux环境下，于是调研了一下现有引用类库的情况，项目中有个最主要的引用是国产的TLQ，多个项目引用了，看了一下TLQ的介绍，本身就是跨平台的，不过公司在用的是官方给的.net framework版本，本身不是跨平台的，经过协商，对方把源码发了过来，改为.net standard2.0也编译通过了，在Linux下却出问题了。Lib引用对于源码中所有P/invoke相关的将dll去掉，在Linux系统下，会自动查找lib开头的类库，如果仍然查找不到，就要设置类库的加载位置了，很简单，一共两种方式，一种是增加LD_LIBRARY_PATH的环境变量，一种是编辑/etc/ld.so.conf文件，增加类库目录，由于网上讲解很多，不再赘述。内存对齐遇到的最大问题是在Windows下一切正常，但是在Linux下会报段错误，第一次遇到的时候还很懵逼，后来查了一下原来是指针越界或重复释放内存之类的操作，刚开始的时候由于改动了代码，一直以为是自己改出来的问题，尝试了很多方式都一无所获，后来又经过协商才发现跟自己的改动完全没有关系，问题是出在了一个结构体上，这个结构体一直没有动过，所以没有往这个方向去想，并且项目是在收消息的时候才出现的错误，且只有在第二次收消息的时候才会出段错误，经过了半天调试依然没有头绪，就在快要放弃时突然发现原来类库方为了做跨平台在引用线程时增加了区分，windows下用的int32来代替线程id，Linux下则直接用的Thread_t，那么Thread_t在Linux下是什么类型呢？网上查了一下，果然跟Windows不一样，类型为uint64_t，对应的c#格式为：ulong。查到这个答案的时候心里并没有在意，因为前面已经尝试过n种方法了，但是在改动完之后在Linux上测试，奇迹却出现了，完全正常了。结束原本一直以为运行时在进行底层调用时对Intptr进行了改动，造成的指针错误，后来才发现原来是自己错了，如果项目中再出现段错误了，那么就要仔细对比每个数据类型了，通常是类型封送错了。

GDB调试笔记
type: item
date: 2023-02-15T08:16:00+00:00
description: 前言最近部署到linux的程序遇到段错误，网上查了一些原因，基本上看不出有用的东西出来，于是只能根据gdb进行排查。寻找core文件就是内存转储文件，程序崩溃时会自动提示：段错误（内核已转储），gdb调试的时候必须依赖转储文件才能调试。要进行调试还需要知道两个问题：core文件在哪以及为什么没有生成文件位置要查看文件在哪，可以直接执行 cat /proc/sys/kernel/core_pattern根据输出内容进行判断，如果为core则代表在执行文件同目录生成，如果为/usr/lib/systemd/systemd-coredump %P %u %g %s %t %e 则代表着被coredumpctl接管了，下面说一下如何从coredumpctl提取core文件，其实很简单#查看所有的内存转储文件 coredumpctl list #默认会显示出所有的内存转储文件，我们大部分关心的应该是最后一项，拿到pid后 coredumpctl -o core dump pid执行完之后就会在当前目录中生成core文件了，文件名可以自定义。文件没有生成默认系统是关闭core文件生成的，可以通过命令查看ulimit -c #或 ulimit -a real-time non-blocking time (microseconds, -R) unlimited core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 62283 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 62283 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited如果输出为0或core file size为0则代表的允许的最大core文件大小为0，即禁止输出core文件，修改大小可以通过#修改为1个G，文件单位为kbyte ulimit -c 1024000 #或不限制 ulimit -c unlimited当前限制仅针对当前shell，如果要持久化可以配置到/etc/sysctl.conf。另外core文件感觉通常都很大，如果core的实际大小超过了限制大小，则会覆盖，gdb也会提示错误，如果只是临时生成一下，可以设置成不限制。GDB调试由于是初次接触gdb调试，使用的方式是：gdb [执行文件] core文件，比如，执行文件为a.out，core文件为b.coregdb a.out b.core然后gdb会给出一段提示，直接按回车后，输入bt回车后，会打印出异常的地方。结尾通过这一次找问题，感觉还是需要掌握gdb调试的，哪怕是最基础的操作，至少在出现问题不会抓瞎。

Linux下的中文乱码问题
type: item
date: 2023-01-11T13:27:00+00:00
description: 起因最近在论坛里看到有人部署的小说网站，感觉界面还挺好看，联想到之前DP家的100G硬盘的VPS，本来部署的图床，可惜不怎么用，就想折腾弄成小说站，话说也不能浪费了之前下载的15G的小说是吧。乱码问题本身用的是Java写的，就一个jar包很简单，直接放到VPS上启动，但是访问的时候总是提示：malformed input or input contains unmappable characters，后面跟着一个路径，一眼看上去路径最后的图片名都是????.jpg，很明显是编码问题,怎么解决呢？因为大部分的VPS用的都是debian的系统，于是查了一下，说是要配置中文，于是通过dpkg-reconfigure locales命令重新配置，并且默认选用zh_CN.UTF-8，但是依然不起作用，看了一下bashrc的配置，发现原来为了登录的时候不提示错误，配置的export LAN=C，改为zh_CN.UTF-8依然不起作用，为此还重启了一次。后来看到可以通过配置java的启动环境变量来配置java -Dfile.encoding="UTF-8" -Dsun.jnu.encoding="UTF-8" -jar xx.jar启动的时候果然显示正确了，但是依然提示上面的错误，后来又在一个git的issue界面看到说直接配置为C.UTF-8就可以了，于是改为下面这样export LAN=C.UTF-8 export LC_ALL=C.UTF-8 export LC_LANG=zh_CN.UTF-8 #重新加载bashrc source ~/.bashrc再启动就可以了，完全不用配置java的启动环境变量，Centos下可能需要配置/etc/sysconfig/i18n，流程基本上都差不多。结束最近在捣鼓统信的系统，基本上都是基于centos的，可是自己偏偏喜欢用debian，没办法，看来还要学习一下centos的部分配置了。

解决realtek rtl8822ce无线网卡丢包卡顿问题
type: item
date: 2023-01-11T04:50:00+00:00
description: 起因前一段时间发觉公司的网络是越来越差，一直怀疑是路由器性能不行，因为不但ping外网丢包，就连ping网关竟然也会丢包，可是在问了其他同事之后才发现竟然只有我自己会出现，于是感觉应该是网卡出问题了，于是在设备高级里瞎改了一通配置，发现毫无卵用，于是作罢。解决最近几天实在是受不了了，越是在你需要用网的时候越容易丢包，于是摸索了一下，设备是联想的E480，有点年头了，网卡是realtek rtl8822ce无线网卡，俗称的螃蟹卡，这两年也还有品牌在用。网上查了一下这个卡的问题还真是挺多的，看评论说是Windows更新跟卡的驱动有冲突，联想到了之前用联想软件升级驱动的事情，于是参考这里,下载了2024.0.8.127版本的驱动，发现貌似确实解决了丢包问题，虽然说还会时不时的ping值会变高一点，但是也相当稳定了。具体的下载方式是打开文中的链接，找到下面的Wireless,然后搜索rtl8822ce关键字，点开对应的链接，跳转到最后一页，然后再搜索2024.0.8.127版本就可以了，具体可以参考上面的链接。顺便看了一下联想官网的驱动版本，竟然只是2024.0.8.1，感觉像是小版本被截断了。结束好了，折磨了一段时间的网络问题终于解决了。还有记得最好关闭网卡的省电模式，方法是：此电脑->右键->计算机管理->设备管理器->右侧的网络适配器->选中使用中的网卡->右键->属性->电源管理->允许计算机关闭此设备以节约电源。