前言最近由于等保相关问题以及本地开发的需要，需同时安装多个版本的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_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION" # General and Slow logging. log-output=FILE general-log=1 general_log_file="general_log.log" slow-query-log=1 slow_query_log_file="slow_query.log" long_query_time=10 # Error Logging. log-error="error_log.err" # ***** Group Replication Related ***** # Specifies the base name to use for binary log files. With binary logging # enabled, the server logs all statements that change data to the binary # log, which is used for backup and replication. log-bin="DESKTOP-xxx-bin" # ***** Group Replication Related ***** # Specifies the server ID. For servers that are used in a replication topology, # you must specify a unique server ID for each replication server, in the # range from 1 to 2^32 − 1. “Unique” means that each ID must be different # from every other ID in use by any other source or replica. server-id=1 # Indicates how table and database names are stored on disk and used in MySQL. # Value 0 = Table and database names are stored on disk using the lettercase specified in the CREATE # TABLE or CREATE DATABASE statement. Name comparisons are case-sensitive. You should not # set this variable to 0 if you are running MySQL on a system that has case-insensitive file # names (such as Windows or macOS). If you force this variable to 0 with # --lower-case-table-names=0 on a case-insensitive file system and access MyISAM tablenames # using different lettercases, index corruption may result. # Value 1 = Table names are stored in lowercase on disk and name comparisons are not case-sensitive. # MySQL converts all table names to lowercase on storage and lookup. This behavior also applies # to database names and table aliases. # Value 2 = Table and database names are stored on disk using the lettercase specified in the CREATE TABLE # or CREATE DATABASE statement, but MySQL converts them to lowercase on lookup. Name comparisons # are not case-sensitive. This works only on file systems that are not case-sensitive! InnoDB # table names and view names are stored in lowercase, as for lower_case_table_names=1. lower_case_table_names=1 # This variable is used to limit the effect of data import and export operations, such as # those performed by the LOAD DATA and SELECT ... INTO OUTFILE statements and the # LOAD_FILE() function. These operations are permitted only to users who have the FILE privilege. secure-file-priv="D:/dev/mysql/Uploads" # The maximum amount of concurrent sessions the MySQL server will # allow. One of these connections will be reserved for a user with # SUPER privileges to allow the administrator to login even if the # connection limit has been reached. max_connections=151 # The number of open tables for all threads. Increasing this value increases the number # of file descriptors that mysqld requires. table_open_cache=4000 # Defines the maximum amount of memory that can be occupied by the TempTable # storage engine before it starts storing data on disk. temptable_max_ram=1G # Defines the maximum size of internal in-memory temporary tables created # by the MEMORY storage engine and, as of MySQL 8.0.28, the TempTable storage # engine. If an internal in-memory temporary table exceeds this size, it is # automatically converted to an on-disk internal temporary table. tmp_table_size=77M # The storage engine for in-memory internal temporary tables (see Section 8.4.4, “Internal # Temporary Table Use in MySQL”). Permitted values are TempTable (the default) and MEMORY. internal_tmp_mem_storage_engine=TempTable #*** MyISAM Specific options # The maximum size of the temporary file that MySQL is permitted to use while re-creating a # MyISAM index (during REPAIR TABLE, ALTER TABLE, or LOAD DATA). If the file size would be # larger than this value, the index is created using the key cache instead, which is slower. # The value is given in bytes. myisam_max_sort_file_size=2146435072 # The size of the buffer that is allocated when sorting MyISAM indexes during a REPAIR TABLE # or when creating indexes with CREATE INDEX or ALTER TABLE. myisam_sort_buffer_size=145M # Size of the Key Buffer, used to cache index blocks for MyISAM tables. # Do not set it larger than 30% of your available memory, as some memory # is also required by the OS to cache rows. Even if you're not using # MyISAM tables, you should still set it to 8-64M as it will also be # used for internal temporary disk tables. key_buffer_size=8M # Each thread that does a sequential scan for a MyISAM table allocates a buffer # of this size (in bytes) for each table it scans. If you do many sequential # scans, you might want to increase this value, which defaults to 131072. The # value of this variable should be a multiple of 4KB. If it is set to a value # that is not a multiple of 4KB, its value is rounded down to the nearest multiple # of 4KB. read_buffer_size=128K # This variable is used for reads from MyISAM tables, and, for any storage engine, # for Multi-Range Read optimization. read_rnd_buffer_size=256K #*** INNODB Specific options *** # innodb_data_home_dir= # Use this option if you have a MySQL server with InnoDB support enabled # but you do not plan to use it. This will save memory and disk space # and speed up some things. # skip-innodb # If set to 1, InnoDB will flush (fsync) the transaction logs to the # disk at each commit, which offers full ACID behavior. If you are # willing to compromise this safety, and you are running small # transactions, you may set this to 0 or 2 to reduce disk I/O to the # logs. Value 0 means that the log is only written to the log file and # the log file flushed to disk approximately once per second. Value 2 # means the log is written to the log file at each commit, but the log # file is only flushed to disk approximately once per second. innodb_flush_log_at_trx_commit=1 # The size in bytes of the buffer that InnoDB uses to write to the log files on # disk. The default value changed from 8MB to 16MB with the introduction of 32KB # and 64KB innodb_page_size values. A large log buffer enables large transactions # to run without the need to write the log to disk before the transactions commit. # Thus, if you have transactions that update, insert, or delete many rows, making # the log buffer larger saves disk I/O. innodb_log_buffer_size=16M # The size in bytes of the buffer pool, the memory area where InnoDB caches table # and index data. The default value is 134217728 bytes (128MB). The maximum value # depends on the CPU architecture; the maximum is 4294967295 (232-1) on 32-bit systems # and 18446744073709551615 (264-1) on 64-bit systems. On 32-bit systems, the CPU # architecture and operating system may impose a lower practical maximum size than the # stated maximum. When the size of the buffer pool is greater than 1GB, setting # innodb_buffer_pool_instances to a value greater than 1 can improve the scalability on # a busy server. innodb_buffer_pool_size=128M # Defines the maximum number of threads permitted inside of InnoDB. A value # of 0 (the default) is interpreted as infinite concurrency (no limit). This # variable is intended for performance tuning on high concurrency systems. # InnoDB tries to keep the number of threads inside InnoDB less than or equal to # the innodb_thread_concurrency limit. Once the limit is reached, additional threads # are placed into a “First In, First Out” (FIFO) queue for waiting threads. Threads # waiting for locks are not counted in the number of concurrently executing threads. innodb_thread_concurrency=25 # The increment size (in MB) for extending the size of an auto-extend InnoDB system tablespace file when it becomes full. innodb_autoextend_increment=64 # The number of regions that the InnoDB buffer pool is divided into. # For systems with buffer pools in the multi-gigabyte range, dividing the buffer pool into separate instances can improve concurrency, # by reducing contention as different threads read and write to cached pages. innodb_buffer_pool_instances=8 # Determines the number of threads that can enter InnoDB concurrently. innodb_concurrency_tickets=5000 # Specifies how long in milliseconds (ms) a block inserted into the old sublist must stay there after its first access before # it can be moved to the new sublist. innodb_old_blocks_time=1000 # When this variable is enabled, InnoDB updates statistics during metadata statements. innodb_stats_on_metadata=0 # When innodb_file_per_table is enabled (the default in 5.6.6 and higher), InnoDB stores the data and indexes for each newly created table # in a separate .ibd file, rather than in the system tablespace. innodb_file_per_table=1 # Use the following list of values: 0 for crc32, 1 for strict_crc32, 2 for innodb, 3 for strict_innodb, 4 for none, 5 for strict_none. innodb_checksum_algorithm=0 # If this is set to a nonzero value, all tables are closed every flush_time seconds to free up resources and # synchronize unflushed data to disk. # This option is best used only on systems with minimal resources. flush_time=0 # The minimum size of the buffer that is used for plain index scans, range index scans, and joins that do not use # indexes and thus perform full table scans. join_buffer_size=256K # The maximum size of one packet or any generated or intermediate string, or any parameter sent by the # mysql_stmt_send_long_data() C API function. max_allowed_packet=64M # If more than this many successive connection requests from a host are interrupted without a successful connection, # the server blocks that host from performing further connections. max_connect_errors=100 # The number of file descriptors available to mysqld from the operating system # Try increasing the value of this option if mysqld gives the error "Too many open files". open_files_limit=8161 # If you see many sort_merge_passes per second in SHOW GLOBAL STATUS output, you can consider increasing the # sort_buffer_size value to speed up ORDER BY or GROUP BY operations that cannot be improved with query optimization # or improved indexing. sort_buffer_size=256K # Specify the maximum size of a row-based binary log event, in bytes. # Rows are grouped into events smaller than this size if possible. The value should be a multiple of 256. binlog_row_event_max_size=8K # If the value of this variable is greater than 0, a replica synchronizes its master.info file to disk. # (using fdatasync()) after every sync_source_info events. sync_source_info=10000 # If the value of this variable is greater than 0, the MySQL server synchronizes its relay log to disk. # (using fdatasync()) after every sync_relay_log writes to the relay log. sync_relay_log=10000 # If the value of this variable is greater than 0, a replica synchronizes its relay-log.info file to disk. # (using fdatasync()) after every sync_relay_log_info transactions. sync_relay_log_info=10000 # Load mysql plugins at start."plugin_x ; plugin_y". # plugin_load # The TCP/IP Port the MySQL Server X Protocol will listen on. loose_mysqlx_port=33060用管理员权限打开一个cmd窗口，并切换到安装目录，执行命令并记录root密码：mysqld.exe --defaults-file=D:\dev\mysql\my.ini --initialize --console如果当前环境变量中已有其它mysqld环境变量，可以通过增加全路径来执行，防止因为环境变量原因使用了其它路径上的mysqld。没有错误的话则可以安装为服务了，如果执行初始化成功，服务器启动失败，确认一下是否是因为mysqld环境变量的原因，解决方式同上，命令如下：# 最好使用全路径，防止其它的mysqld环境变量 d:\dev\mysql\bin\mysqld.exe --install MySQL --defaults-file=D:\dev\mysql\my.ini还有一种服务起不来的情况可能是因为缺少Uploads目录，需要手动创建该目录，目录具体位置参考配置项：secure-file-priv如果服务还是启动失败可以在命令行中执行上面的命令，然后根据错误排查原因。结论通过以上步骤大概率就安装成功了，适合需要安装多个版本的情况，完结撒花🌸🌸🌸参考参考1参考2
前言打算换一下主题，在此记录一下，以防后面要改过来。主题设置1、首先需要修改主题为：Default2、添加以下自定义样式： 结束应用一下就可以了。
前言大概两个月前迫于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自动的鼠标手势确实不错，但是作为一名开发者电脑上只装一款浏览器显然是不够的。
黑五看到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; }好了，睡觉去了，虽然还不怎么困🤣
前言之前提到过当前公司正在进行国产化方面的东西，目前有个桌面软件需要迁移到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下的处理相对灵活很多，不亏是一切皆文件。
前言最近公司打算将操作系统迁移到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进行了改动，造成的指针错误，后来才发现原来是自己错了，如果项目中再出现段错误了，那么就要仔细对比每个数据类型了，通常是类型封送错了。
前言最近部署到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调试的，哪怕是最基础的操作，至少在出现问题不会抓瞎。
起因最近在论坛里看到有人部署的小说网站，感觉界面还挺好看，联想到之前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的部分配置了。
起因前一段时间发觉公司的网络是越来越差，一直怀疑是路由器性能不行，因为不但ping外网丢包，就连ping网关竟然也会丢包，可是在问了其他同事之后才发现竟然只有我自己会出现，于是感觉应该是网卡出问题了，于是在设备高级里瞎改了一通配置，发现毫无卵用，于是作罢。解决最近几天实在是受不了了，越是在你需要用网的时候越容易丢包，于是摸索了一下，设备是联想的E480，有点年头了，网卡是realtek rtl8822ce无线网卡，俗称的螃蟹卡，这两年也还有品牌在用。网上查了一下这个卡的问题还真是挺多的，看评论说是Windows更新跟卡的驱动有冲突，联想到了之前用联想软件升级驱动的事情，于是参考这里,下载了2024.0.8.127版本的驱动，发现貌似确实解决了丢包问题，虽然说还会时不时的ping值会变高一点，但是也相当稳定了。具体的下载方式是打开文中的链接，找到下面的Wireless,然后搜索rtl8822ce关键字，点开对应的链接，跳转到最后一页，然后再搜索2024.0.8.127版本就可以了，具体可以参考上面的链接。顺便看了一下联想官网的驱动版本，竟然只是2024.0.8.1，感觉像是小版本被截断了。结束好了，折磨了一段时间的网络问题终于解决了。还有记得最好关闭网卡的省电模式，方法是：此电脑->右键->计算机管理->设备管理器->右侧的网络适配器->选中使用中的网卡->右键->属性->电源管理->允许计算机关闭此设备以节约电源。