Deprecated: Creation of dynamic property Typecho\Widget\Request::$feed is deprecated in /www/wwwroot/blog.iletter.top/var/Widget/Archive.php on line 253
白荼日记 - 故障 2025-07-14T17:11:31+08:00 Typecho https://blog.iletter.top/index.php/feed/atom/tag/%E6%95%85%E9%9A%9C/ <![CDATA[windows server 2019 docker安装]]> https://blog.iletter.top/index.php/archives/365.html 2025-07-14T17:11:31+08:00 2025-07-14T17:11:31+08:00 DelLevin https://blog.iletter.top windows server 2019 docker安装

最近把家里的旧服务器搬到出租屋里面来了,准备当服务器用来着,二十年前的老机器了。想着用微信hook的功能,所以选择的windows server。配置好一些环境之后开始配置docker环境除了一些问题。

启用Hyper-V和Containers功能

运行管理员权限powershell
Install-WindowsFeature -Name Hyper-V,Containers -IncludeAllSubFeature -IncludeManagementTools -Verbose

配置安装源

Install-Module -Name DockerMsftProvider -Repository PSGallery -Verbose

安装Docker

运行管理员权限powershell,国内安装可能会因为网络原因失败,可以尝试手动安装,如果按照成功这下面步骤不用进行了
Install-Package -Name docker -ProviderName DockerMsftProvider -Verbose

下载文件

PS C:\Users\Administrator\Desktop> Invoke-WebRequest -UseBasicParsing -OutFile D:\docker-28.3.2.zip https://download.docker.com/win/static/stable/x86_64/docker-28.3.2.zip

文件下载地址

https://download.docker.com/win/static/stable/x86_64/

配置系统环境变量Path

注册为系统服务

dockerd --register-service -H npipe:// -H tcp://0.0.0.0:2375 --config-file "D:\Env\docker\config\daemon.json"

配置文件内容

D:\Env\docker\config\daemon.json

{
  "dns": ["114.114.114.114", "8.8.8.8"],
  "data-root":  "D:\\Env\\docker\\data",
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

其他命令

设置Docker开机启动

Set-Service -Name docker -StartupType Automatic

启动 Docker 服务

Start-Service docker

重启 Docker 服务

Restart-Service Docker -Force

停止 Docker 服务

Stop-Service Docker

docker-compose下载

https://github.com/docker/compose/releases

1.下载适用于 Windows 的 docker-compose-Windows-x86_64.exe 文件。

2.将文件重命名为 docker-compose.exe 并移动到 Docker 安装目录(如 D:\Env\docker)

ps:安装完了我才发现,windows server 2019的docker不支持linux的容器,要想弄,还要一个wsl支持,或者升级机器配置。想想还是算了,直接换ubuntu 的server版了

]]>
<![CDATA[Window10 安装软件时报错:Called RunScript when not marked in progress]]> https://blog.iletter.top/index.php/archives/170.html 2024-10-13T23:54:00+08:00 2024-10-13T23:54:00+08:00 DelLevin https://blog.iletter.top Window10 安装软件时报错:Called RunScript when not marked in progress

解决办法:

  1. 进入 C:\Windows
  2. 找到"temp"文件夹 ---- 右键“属性” --- “高级” --- “更改”
  3. 然后点击 “高级”


输入电脑当前用户的姓名,进行搜索

]]>
<![CDATA[ERR_UNSAFE_PORT情况解决]]> https://blog.iletter.top/index.php/archives/131.html 2023-05-17T23:48:00+08:00 2023-05-17T23:48:00+08:00 DelLevin https://blog.iletter.top 起因是,今天看到一个有趣的项目(https://github.com/usememos/memos)想拉下来跑跑体验一下。结果在docker之后,指定好了端口,打开时却出现如下的情况

再次确认后台程序在跑的时候,已经基本确定就是某些操作的问题,或许是被拦截了。

在看到前端报错的时候发现他在告诉我这个情况

ERR_UNSAFE_PORT

仔细查询(https://zhuanlan.zhihu.com/p/383077079)了之后才发现这是浏览器的安全问题导致无法打开。虽说可以是强制打开,但是还是换个端口比较稳妥。

  1,    // tcpmux
  7,    // echo
  9,    // discard
  11,   // systat
  13,   // daytime
  15,   // netstat
  17,   // qotd
  19,   // chargen
  20,   // ftp data
  21,   // ftp access
  22,   // ssh
  23,   // telnet
  25,   // smtp
  37,   // time
  42,   // name
  43,   // nicname
  53,   // domain
  77,   // priv-rjs
  79,   // finger
  87,   // ttylink
  95,   // supdup
  101,  // hostriame
  102,  // iso-tsap
  103,  // gppitnp
  104,  // acr-nema
  109,  // pop2
  110,  // pop3
  111,  // sunrpc
  113,  // auth
  115,  // sftp
  117,  // uucp-path
  119,  // nntp
  123,  // NTP
  135,  // loc-srv /epmap
  139,  // netbios
  143,  // imap2
  179,  // BGP
  389,  // ldap
  465,  // smtp+ssl
  512,  // print / exec
  513,  // login
  514,  // shell
  515,  // printer
  526,  // tempo
  530,  // courier
  531,  // chat
  532,  // netnews
  540,  // uucp
  556,  // remotefs
  563,  // nntp+ssl
  587,  // stmp?
  601,  // ??
  636,  // ldap+ssl
  993,  // ldap+ssl
  995,  // pop3+ssl
  2049, // nfs
  3659, // apple-sasl / PasswordServer
  4045, // lockd
  6000, // X11
  6665, // Alternate IRC
  6666, // Alternate IRC
  6667, // Standard IRC
  6668, // Alternate IRC
  6669, // Alternate IRC
]]>
<![CDATA[TypeError: this.getOptions is not a function 的解决(vue,react)]]> https://blog.iletter.top/index.php/archives/121.html 2023-05-07T23:48:00+08:00 2023-05-07T23:48:00+08:00 DelLevin https://blog.iletter.top 卸载安装老版本的即可

npm uninstall less-loader

npm install less-loader@5.0.0

报错信息

TypeError: this.getOptions is not a function 这个是在运行项目是遇到的问题

vue


react

这个报错是类型错误,this.getOptions 不是一个函数 。这个错误是less-loader库里的错误。

主要是less-loader版本太高,不兼容this.getOptions方法。

解决方案

通过 npm uninstall less-loader 命令卸载原版本的 less-loader,然后 通过 npm install less-loader@5.0.0 命令下载降级版本的 less-loader,这个问题就可以解决了.

npm uninstall less-loader

npm install less-loader@5.0.0

或者可以删除node_modules文件夹,并且把package.json里less-loader里的版本改为5.0.0就行,然后npm install

不止 less-loader 同样 scss-loader ,css-loader,style-loader都有可能出现 。

只需要 看报错 具体 是什么 上图 为例 报的是css-loader .所以 卸载对应得就行。

npm uninstall css-loader

npm install css-loader@5.0.0

具体降到哪个版本 需要 看看 版本信息 比如 style-loader

style-loader)降低 到 之前的版本 比如 2.0.0

]]>
<![CDATA[数据库Error Code 1067 - Invalid default value 的解决办法]]> https://blog.iletter.top/index.php/archives/99.html 2023-04-24T23:48:00+08:00 2023-04-24T23:48:00+08:00 DelLevin https://blog.iletter.top 报错:

    Error Code: 1067 - Invalid default value for 'LOCK_TIME_'

查阅资料知道是mysql从5.7开始,默认是严格模式,严格遵从SQL92规范。

公司mysql版本:5.7.25

我的mysql版本:5.7.40

因为mysql差距不大的原因,所以猜测,应该是我没开启timestamp默认值规则

先查看是否开启了

 show variables like 'explicit_defaults_for_timestamp'; 

忘了截图了,不过查询出来的结果是off

设置开启

set global explicit_defaults_for_timestamp = ON;

再次查看是否开启

开启了,然后再次导入数据库。就可以了。

还有一种解决方式是去除掉关于时间这些not null字段,也可以,不过实在是太多了,所以就没有选择此种方法。

参考连接:

https://www.jianshu.com/p/523a0bf27095

https://blog.csdn.net/u010227042/article/details/123321421

]]>
<![CDATA[cb() never called!的解决办法]]> https://blog.iletter.top/index.php/archives/103.html 2023-04-24T23:48:00+08:00 2023-04-24T23:48:00+08:00 DelLevin https://blog.iletter.top npm ERR! cb() never called! npm ERR! This is an error with npm itself. Please report this error at: npm ERR! <https://npm.community> npm ERR! A complete log of this run can be found in: npm ERR! /Users/geekchief/.npm/_logs/2021-07-12T06_56_29_399Z-debug.log

github的issue的讨论: https://github.com/npm/cli/issues/417
错误的意思是,npm程序执行到未知流程节点中然后没有调用回调通知任务已执行完成,导致进程异常退出,据官方说法他们也没有太好的方式解决,不过网上的东西大多数不靠谱,但是有挺多人用的淘宝源,出这个错误的概率会大大提高。

先尝试清楚npm缓存再安装试试

npm cache clean -force

然后

npm install

不过这个办法多数时候不管用

造成这个办法的情况是使用的淘宝的源,建议换回官方的源,然后再次安装

查看是什么源

npm config get registry

淘宝的源,好的,果断替换

换回官方源

npm config set registry https://registry.npmjs.org/

再次查看

替换成功了,多数时候下载会失败或者很慢,这就需要我们科学上网了,设置npm代理的端口。

npm config set proxy=http://127.0.0.1:10809

然后如果想查看npm配置的话可以使用这个命令查看npm config list

再次npm install安装就会成功了

]]>
<![CDATA[Failed to start bean documentationPluginsBootstrapper]]> https://blog.iletter.top/index.php/archives/84.html 2023-04-03T23:48:00+08:00 2023-04-03T23:48:00+08:00 DelLevin https://blog.iletter.top 关于报错org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'


Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2023-04-03 00:08:57.651 ERROR 15032 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException
    at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:181) ~[spring-context-5.3.22.jar:5.3.22]
    at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:54) ~[spring-context-5.3.22.jar:5.3.22]
    at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356) ~[spring-context-5.3.22.jar:5.3.22]
    at java.base/java.lang.Iterable.forEach(Iterable.java:75) ~[na:na]
    at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:155) ~[spring-context-5.3.22.jar:5.3.22]
    at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:123) ~[spring-context-5.3.22.jar:5.3.22]
    at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:935) ~[spring-context-5.3.22.jar:5.3.22]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586) ~[spring-context-5.3.22.jar:5.3.22]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) ~[spring-boot-2.6.10.jar:2.6.10]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:745) ~[spring-boot-2.6.10.jar:2.6.10]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:420) ~[spring-boot-2.6.10.jar:2.6.10]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) ~[spring-boot-2.6.10.jar:2.6.10]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1317) ~[spring-boot-2.6.10.jar:2.6.10]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-2.6.10.jar:2.6.10]
    at com.wonder.UselessToolsApplication.main(UselessToolsApplication.java:14) ~[classes/:na]
Caused by: java.lang.NullPointerException: null
    at springfox.documentation.spi.service.contexts.Orderings$8.compare(Orderings.java:112) ~[springfox-spi-2.9.2.jar:null]
    at springfox.documentation.spi.service.contexts.Orderings$8.compare(Orderings.java:109) ~[springfox-spi-2.9.2.jar:null]
    at com.google.common.collect.ComparatorOrdering.compare(ComparatorOrdering.java:37) ~[guava-20.0.jar:na]
    at java.base/java.util.TimSort.countRunAndMakeAscending(TimSort.java:355) ~[na:na]
    at java.base/java.util.TimSort.sort(TimSort.java:220) ~[na:na]
    at java.base/java.util.Arrays.sort(Arrays.java:1441) ~[na:na]
    at com.google.common.collect.Ordering.sortedCopy(Ordering.java:855) ~[guava-20.0.jar:na]
    at springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider.requestHandlers(WebMvcRequestHandlerProvider.java:57) ~[springfox-spring-web-2.9.2.jar:null]
    at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper$2.apply(DocumentationPluginsBootstrapper.java:138) ~[springfox-spring-web-2.9.2.jar:null]
    at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper$2.apply(DocumentationPluginsBootstrapper.java:135) ~[springfox-spring-web-2.9.2.jar:null]
    at com.google.common.collect.Iterators$7.transform(Iterators.java:750) ~[guava-20.0.jar:na]
    at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:47) ~[guava-20.0.jar:na]
    at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:47) ~[guava-20.0.jar:na]
    at com.google.common.collect.MultitransformedIterator.hasNext(MultitransformedIterator.java:52) ~[guava-20.0.jar:na]
    at com.google.common.collect.MultitransformedIterator.hasNext(MultitransformedIterator.java:50) ~[guava-20.0.jar:na]
    at com.google.common.collect.ImmutableList.copyOf(ImmutableList.java:249) ~[guava-20.0.jar:na]
    at com.google.common.collect.ImmutableList.copyOf(ImmutableList.java:209) ~[guava-20.0.jar:na]
    at com.google.common.collect.FluentIterable.toList(FluentIterable.java:614) ~[guava-20.0.jar:na]
    at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.defaultContextBuilder(DocumentationPluginsBootstrapper.java:111) ~[springfox-spring-web-2.9.2.jar:null]
    at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.buildContext(DocumentationPluginsBootstrapper.java:96) ~[springfox-spring-web-2.9.2.jar:null]
    at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.start(DocumentationPluginsBootstrapper.java:167) ~[springfox-spring-web-2.9.2.jar:null]
    at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178) ~[spring-context-5.3.22.jar:5.3.22]
    ... 14 common frames omitted

问题分析

因为Springfox 使用的路径匹配是基于AntPathMatcher的,而Spring Boot 2.6.X使用的是PathPatternMatcher。

修复方案

修复方案一:降低Spring Boot 版本到2.6.x以下版本

比如下面版本组合是兼容的

Spring Boot版本Swagger 版本
2.5.62.9.2

修复方案二: SpringBoot版本不降级解决方案

比如下面版本组合是兼容的

Spring Boot版本Swagger 版本
2.6.53.0.0

修复方案三:设置application配置文件

spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

修复方案四,修改spring源文件

我没找到这个java文件。。。。没试过,估计应该可以。。

参考地址:https://github.com/springfox/springfox/issues/3462

  1. revert matching strategy spring.mvc.pathmatch.matching-strategy to ant-path-matcher
  2. hack springfox WebMvcRequestHandlerProvider to filter out actuator controllers which don't respect spring.mvc.pathmatch.matching-strategy

        public WebMvcRequestHandlerProvider(Optional<ServletContext> servletContext, HandlerMethodResolver methodResolver,
                List<RequestMappingInfoHandlerMapping> handlerMappings) {
            this.handlerMappings = handlerMappings.stream().filter(mapping -> mapping.getPatternParser() == null)
                    .collect(Collectors.toList());

swagger配置类

.apis(RequestHandlerSelectors.basePackage("com.wonder.controller"))

这里填写扫描包,对应类添加@API

package com.wonder.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;


import javax.servlet.ServletContext;
import java.util.Optional;

@Configuration // 标明是配置类
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)  // DocumentationType.SWAGGER_2 固定的,代表swagger2
//                .groupName("分布式任务系统") // 如果配置多个文档的时候,那么需要配置groupName来分组标识
                .apiInfo(apiInfo()) // 用于生成API信息
                .select() // select()函数返回一个ApiSelectorBuilder实例,用来控制接口被swagger做成文档
                .apis(RequestHandlerSelectors.basePackage("com.wonder.controller")) // 用于指定扫描哪个包下的接口
                .paths(PathSelectors.any())// 选择所有的API,如果你想只为部分API生成文档,可以配置这里
                .build();
    }

    /**
     * 用于定义API主界面的信息,比如可以声明所有的API的总标题、描述、版本
     * @return
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("项目API") //  可以用来自定义API的主标题
                .description("项目SwaggerAPI管理") // 可以用来描述整体的API
                //.termsOfServiceUrl("") // 用于定义服务的域名
                .version("1.0") // 可以用来定义版本。
                .build(); //
    }

}

访问地址:http://localhost:8080/swagger-ui.html

]]>
<![CDATA[U盘文件消失却占内存的解决方法]]> https://blog.iletter.top/index.php/archives/75.html 2023-04-02T23:48:00+08:00 2023-04-02T23:48:00+08:00 DelLevin https://blog.iletter.top

title: 'U盘文件消失却占内存的解决方法 '
updated: 2021-01-26 14:48:06Z
created: 2021-01-26 14:48:06Z
source: https://www.wonder1999.com/index.php/archives/18.html
tags:

  • windows
  • 故障

方法一

查看U盘属性,如果已用空间不为0,那么可以使用以下方法。在你的U盘里面直接新建一个txt文档在里面输入attrib -s -h /s /d保存。然后打开我的电脑->工具->文件夹选项->查看,将里面的隐藏已知文件扩展名前面的勾去掉。如果已经去掉了就不用这步操作了。然后再将刚刚新建的TXT文档改名为0.bat。双击运行即可。

方法二

如果你的U盘属性显示已用空间为0,那么我们可以借用软件来解决,首先下载一个EASY RECOVERY,可以在系统之家网站上下载此软件的汉化注册版,把文件恢复。

方法三

插入U盘,然后不要打开,而是右键单击盘符。选择“作为媒体便携设备打开”,文件全部显示出来了,但是不能打开,把它复制到本地硬盘就行了,数据备份好以后把U盘格式化。

以上方法适用于你的U盘文件没隐藏也没有中毒,如果是U盘中毒原因,可以使用杀毒软件或者专门对付U盘病毒的USBCleaner,可以非常有效的清理你的U盘病毒,还能给你的U盘加上免疫功能,U盘的价格如今已非常便宜,如果是硬件坏了的话就赶紧再买一个吧。

]]>
<![CDATA[office账号登录提示0x80190001错误码]]> https://blog.iletter.top/index.php/archives/79.html 2023-04-02T23:48:00+08:00 2023-04-02T23:48:00+08:00 DelLevin https://blog.iletter.top office登录账号时提示错误代码0x80190001,导致有些功能不能使用。

错误原因0x80190001是一个代理服务引起的错误(网络查找的原因,出现这个错误反馈office也无法发送成功)

解决方法一:

1、在Internet Explorer浏览器的右上角点击设置,打开Internet选项

2、在Internet选项界面,进入常规,单击删除,再点击确定,缓存文件就已经全部删除。

3、在Internet选项界面,进入高级, 单击 重置,即可。

Windows+R输入services.msc 找到Microsoft Account Sign-in Assistant右键启动是否正常(检查该服务是否已经启动)。

解决方法二:

检查是Internet选项 - 连接 - 局域网(LAN)设置 - 使用自动配置脚本影响导致。把勾去掉后就可以登录账户了

]]>
<![CDATA[lineNumber: 1; columnNumber: 1; 前言中不允许有内容]]> https://blog.iletter.top/index.php/archives/52.html 2023-03-30T23:48:00+08:00 2023-03-30T23:48:00+08:00 DelLevin https://blog.iletter.top bug日志

Line 1 in XML document from class path resource [application.yml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 前言中不允许有内容。

有可能是yml配置文件编码的问题utf-8 选择没有Bom的

排错发现是redis的配置。。。。

正确配置:

  redis:
    database: 0
    host: 127.0.0.1
    port: 6379
    password: 123456
    timeout: 1000
    jedis:
      pool:
        max-active: 8
        max-wait: -1
        max-idle: 8
        min-idle: 0

是jedis:不是lettuce:
用啥东西就写啥,不要瞎写。。。。之前用lettcue没有引入包。。。
两者区别:

Jedis在实现上是直接连接的redis server,如果在多线程环境下是非线程安全的,这个时候只有使用连接池,为每个Jedis实例增加物理连接

Lettuce的连接是基于Netty的,连接实例(StatefulRedisConnection)可以在多个线程间并发访问,应为StatefulRedisConnection是线程安全的,所以一个连接实例(StatefulRedisConnection)就可以满足多线程环境下的并发访问,当然这个也是可伸缩的设计,一个连接实例不够的情况也可以按需增加连接实例。

]]>