<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel>
<title><![CDATA[Deed&#039;s博客]]></title> 
<atom:link href="https://www.minedeed.com/rss.php" rel="self" type="application/rss+xml" />
<description><![CDATA[Java 技术 分享 学习]]></description>
<link>https://www.minedeed.com/</link>
<language>zh-cn</language>
<generator>www.emlog.net</generator>
<item>
    <title>1</title>
    <link>https://www.minedeed.com/?post=38</link>
    <description><![CDATA[<p>传喜悦，吉祥氛围飘万里；钟声响，雪花飘，温馨浪漫到你家；隔千山，离万水，友谊在心不会淡；欢喜夜，送祝福，祝你一生永平安。T连夜 mA:/瑰宝6🐑过活x</p>]]></description>
    <pubDate>Fri, 17 Apr 2026 23:10:23 +0800</pubDate>
    <dc:creator>deed</dc:creator>
    <guid>https://www.minedeed.com/?post=38</guid>
</item>
<item>
    <title>解决群晖百度套件提示name &quot;baiduapp&quot; dupliacted</title>
    <link>https://www.minedeed.com/?post=33</link>
    <description><![CDATA[<p>如果你的群晖经过一系列操作或者更新了引导等操作，安装百度网盘就会大概率出现下面这个提示name "baiduapp" dupliacted</p><p><img src="https://cdn.19950826.xyz/content/uploadfile/2024/07/OSSRWfl20240719225409.png" alt="" data-href="https://cdn.19950826.xyz/content/uploadfile/2024/07/OSSRWfl20240719225409.png" style="width: 588.00px;height: 377.57px;"/></p><p>这是docker套件项目中已经存在了一个baiduapp的项目，我们要做的目的是删除baiduapp(因为这个是套件安装的，这个没办法删除的，群晖的逻辑问题)</p><p><img src="https://cdn.19950826.xyz/content/uploadfile/2024/07/OSSTs2a20240719230053.png" alt="" data-href="https://cdn.19950826.xyz/content/uploadfile/2024/07/OSSTs2a20240719230053.png" style="width: 671.00px;height: 441.12px;"/></p><p>这个时候我们就可以通过ssh去连接群晖，然后用sudo su命令切换到超级管理员权限，输入以下命令来定位目录</p><pre><code >cd /var/packages/ContainerManager/etc/projects/</code></pre><p>如果你跟我一样只有三个文件，那么恭喜你，直接rm -rf *全部删除(注意一定要在projects目录操作)</p><pre><code >rm rf *</code></pre><p>或者你也可以</p><pre><code >rm -rf /var/packages/ContainerManager/etc/projects/</code></pre><p><img src="https://cdn.19950826.xyz/content/uploadfile/2024/07/OSSIycr20240719225813.png" alt="" data-href="https://cdn.19950826.xyz/content/uploadfile/2024/07/OSSIycr20240719225813.png" style="width: 740.50px;height: 395.60px;"/></p><p>如果有其他的项目文件,那你就用下面命令过滤出baiduapp在哪个文件</p><pre><code >find | xargs grep "baiduapp"</code></pre><p><img src="https://cdn.19950826.xyz/content/uploadfile/2024/07/OSSkxQX20240719230445.png" alt="" data-href="https://cdn.19950826.xyz/content/uploadfile/2024/07/OSSkxQX20240719230445.png" style="width: 896.50px;height: 167.50px;"/></p><p><br></p><p>然后执行下面这个命令</p><pre><code >rm -rf ca12fba0-adbb-4558-9394-046a4579fd8b*</code></pre><p>或者</p><pre><code >rm -rf /var/packages/ContainerManager/etc/ca12fba0-adbb-4558-9394-046a4579fd8b*</code></pre><p>删除以后，群晖docker就会没有baiduapp这个项目了，到此，你的群晖套件百度网盘重新安装应该就可以正常用了(记得要在网络环境好的前提下安装，因为需要装依赖)。</p><p><br></p><p><br></p><p><br></p>]]></description>
    <pubDate>Fri, 19 Jul 2024 22:53:00 +0800</pubDate>
    <dc:creator>deed</dc:creator>
    <guid>https://www.minedeed.com/?post=33</guid>
</item>
<item>
    <title>2023年3月16日 Maven项目引入第三方本地jar包</title>
    <link>https://www.minedeed.com/?post=32</link>
    <description><![CDATA[<h1>一、背景</h1>
<pre><code>项目需要引入第三方公司封装的私有jar包，jar包没有在公共仓库中
只能复制到项目resources文件夹下</code></pre>
<hr />
<pre><code>idea中通过Project Structure 方法引入jar包所在文件夹，每次用Maven clean命令就会出现问题
需要手动把jar包重新导入下</code></pre>
<h1>二、解决方案</h1>
<p>在项目的pom文件中配置Maven依赖坐标，即可不用重复以上操作<br />
具体依赖坐标代码如下：</p>
<pre><code class="language-xml">&lt;dependency&gt;
    &lt;groupId&gt;xxx&lt;/groupId&gt;
    &lt;artifactId&gt;xxx&lt;/artifactId&gt;
    &lt;version&gt;1.0.0&lt;/version&gt;
    &lt;scope&gt;system&lt;/scope&gt;
    &lt;systemPath&gt;${project.basedir}/src/main/resources/lib/xxx.jar&lt;/systemPath&gt;
&lt;/dependency&gt;</code></pre>
<p>注：<code>groupId</code>、<code>artifactId</code>设置为jar包的名称即可，<code>version</code>版本号需要看第三方jar有没有版本号，没有就自由定义。</p>]]></description>
    <pubDate>Thu, 16 Mar 2023 16:02:58 +0800</pubDate>
    <dc:creator>Mahalalel</dc:creator>
    <guid>https://www.minedeed.com/?post=32</guid>
</item>
<item>
    <title>2022年8月23日nginx反向代理配置去除前缀</title>
    <link>https://www.minedeed.com/?post=31</link>
    <description><![CDATA[<p>使用nginx做反向代理的时候，可以简单的直接把请求原封不动的转发给下一个服务。设置proxy_pass请求只会替换域名，如果要根据不同的url后缀来访问不同的服务，则需要通过如下方法：</p>
<h1>方法1:加&quot;/&quot;</h1>
<pre><code class="language-shell">    server {
        listen              8000;
        server_name         abc.com;
        access_log  "pipe:rollback /data/log/nginx/access.log interval=1d baknum=7 maxsize=1G"  main;

        location ^~/user/ {
            proxy_set_header Host $host;
            proxy_set_header  X-Real-IP        $remote_addr;
            proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;

            proxy_pass http://user/;
        }

        location ^~/order/ {
            proxy_set_header Host $host;
            proxy_set_header  X-Real-IP        $remote_addr;
            proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;

            proxy_pass http://order/;
        }
    }</code></pre>
<p>^~/user/表示匹配前缀是user的请求，proxy_pass的结尾有/， 则会把/user/*后面的路径直接拼接到后面，即移除user。</p>
<h1>方法2：rewrite</h1>
<pre><code class="language-shell">
    upstream user {
      server localhost:8089 weight=5;
    }
    upstream order {
      server localhost:8090 weight=5;
    }

    server {
        listen              80;
        server_name  abc.com;
        access_log  "pipe:rollback /data/log/nginx/access.log interval=1d baknum=7 maxsize=1G"  main;

        location ^~/user/ {
            proxy_set_header Host $host;
            proxy_set_header  X-Real-IP        $remote_addr;
            proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;

            rewrite ^/user/(.*)$ /$1 break;
            proxy_pass http://user;
        }

        location ^~/order/ {
            proxy_set_header Host $host;
            proxy_set_header  X-Real-IP        $remote_addr;
            proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;

            rewrite ^/order/(.*)$ /$1 break;
            proxy_pass http://order;
        }
    }

proxy_pass结尾没有/， rewrite重写了url。</code></pre>]]></description>
    <pubDate>Tue, 23 Aug 2022 15:15:16 +0800</pubDate>
    <dc:creator>deed</dc:creator>
    <guid>https://www.minedeed.com/?post=31</guid>
</item>
<item>
    <title>2022年8月1日 ts-node 运行报错`Cannot find name &#039;console&#039;.`</title>
    <link>https://www.minedeed.com/?post=30</link>
    <description><![CDATA[<h1>背景</h1>
<p>最近小编在学习TypeScript，运行基本demo的时候，遇到一个报错，特此记录下。<br />
异常如下：</p>
<pre><code>D:\develop\nvm\v14.17.0\node_global\node_modules\ts-node\src\index.ts:859
    return new TSError(diagnosticText, diagnosticCodes, diagnostics);
           ^
TSError: ⨯ Unable to compile TypeScript:
demo.ts:15:3 - error TS2584: Cannot find name 'console'. Do you need to change your target library? Try changing the 'lib' compiler option to include 'dom'.

15   console.log(a);
     ~~~~~~~

    at createTSError (D:\develop\nvm\v14.17.0\node_global\node_modules\ts-node\src\index.ts:859:12)
    at reportTSError (D:\develop\nvm\v14.17.0\node_global\node_modules\ts-node\src\index.ts:863:19)
    at getOutput (D:\develop\nvm\v14.17.0\node_global\node_modules\ts-node\src\index.ts:1077:36)
    at Object.compile (D:\develop\nvm\v14.17.0\node_global\node_modules\ts-node\src\index.ts:1433:41)
    at Module.m._compile (D:\develop\nvm\v14.17.0\node_global\node_modules\ts-node\src\index.ts:1617:30)
    at Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
    at Object.require.extensions.&lt;computed&gt; [as .ts] (D:\develop\nvm\v14.17.0\node_global\node_modules\ts-node\src\index.ts:1621:12)
    at Module.load (internal/modules/cjs/loader.js:933:32)
    at Function.Module._load (internal/modules/cjs/loader.js:774:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12) {
  diagnosticCodes: [ 2584 ]
}</code></pre>
<p>问题是<code>demo.ts:15:3 - error TS2584: Cannot find name 'console'. Do you need to change your target library? Try changing the 'lib' compiler option to include 'dom'.</code>;</p>
<p>原因就在于，无法识别<code>console</code>函数。</p>
<h1>解决</h1>
<h2>1、全局安装 ts-node 运行依赖包</h2>
<p>命令如下：</p>
<pre><code>npm install -g tslib @types/node</code></pre>
<h3>@types/node解释</h3>
<p>关于<code>@types</code>，可以参考下 <a href="https://jkchao.github.io/typescript-book-chinese/typings/types.html" title="深入理解TypeScript  @types">深入理解TypeScript  @types</a>；</p>
<p>在 <a href="https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/README.zh.md" title="类型定义">类型定义</a>中，可以看到 <code>@types</code> 是 <code>一个高质量的TypeScript类型定义的仓库</code>。</p>
<p><code>@types/node</code>是TS文件做声明作用的。</p>
<h3>tslib解释</h3>
<p>npm库中对其定义为<code>这是一个包含所有 TypeScript 辅助函数的 TypeScript运行时库</code>。</p>
<h2>2、降低ts-node版本</h2>
<p>网络上还有一种方法，降低ts-node的版本，可以解决这个问题，</p>
<p>注：此种办法，并未做测试。</p>]]></description>
    <pubDate>Mon, 01 Aug 2022 10:46:03 +0800</pubDate>
    <dc:creator>Mahalalel</dc:creator>
    <guid>https://www.minedeed.com/?post=30</guid>
</item>
<item>
    <title>2022年7月13日 Gradle项目打包相关配置</title>
    <link>https://www.minedeed.com/?post=29</link>
    <description><![CDATA[<p>近期，小编在用Gradle构建工具来开发项目，期间遇到了打包的问题。<br />
众所周知，SpringBoot项目可以通过配置Maven的打包插件，就可以很轻松构建依赖jar与可执行jar。</p>
<p>特此记录下Gradle项目的打包配置</p>
<h1>一、SpringBoot可执行jar打包</h1>
<h2>1.1、配置打包插件</h2>
<p>首先需要在项目根目录下的build.gradle文件中配置插件</p>
<pre><code>plugins {
    id "org.springframework.boot" version "2.4.2"
}</code></pre>
<h2>1.2、指定使用插件 并配置main方法入口类</h2>
<p>配置指定使用的插件，尤其是在多模块工程下</p>
<pre><code>// 配置所有项目公共的内容
allprojects {
    // springboot项目打jar包
    apply plugin: "org.springframework.boot"

    // 指定main方法所在的class
    springBoot {
        mainClass = "com.xxx.xxx.xxx.XxxXxxApplication"
    }
}</code></pre>
<h2>1.3、子模块配置依赖jar</h2>
<p>启动部署模块，需要依赖其他模块，故此，在部署模块的依赖module的build.gradle中配置</p>
<pre><code>jar {
    enabled = true
}</code></pre>
<h2>1.4、打包</h2>
<p>打开IDEA开发工具中找到 gradle 窗口<br />
在启动类所在模块中找到 Tasks ==&gt;&gt; build ==&gt;&gt; bootJar</p>
<p><img src="https://cdn.19950826.xyz/content/uploadfile/202207/09311657699319.png" alt="Gradle打Jar包" title="Gradle打Jar包" /></p>
<p>点击运行，即可在模块下 build ==&gt;&gt; libs ==&gt;&gt; xxx.jar</p>
<p><img src="https://cdn.19950826.xyz/content/uploadfile/202207/0c201657697174.png" alt="Gradle打包后目录" title="Gradle打包后目录" /></p>
<h1>二、SpringBoot项目war类型打包</h1>
<h2>2.1、指定使用插件</h2>
<p>配置使用的插件</p>
<pre><code>allprojects {

    apply plugin: 'war'
    // 指定main方法所在的class
    springBoot {
        mainClass = "com.xxx.xxx.xxx.XxxXxxApplication"
    }
}</code></pre>
<h2>2.2、新建Initializer类并继承SpringBootServletInitializer，重写configure</h2>
<p>注：Initializer类应该与项目的启动类在同一级目录下</p>
<pre><code class="language-java">package com.xxxx.demo;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
                                    //Application的类名
        return application.sources(XxxApplication.class);
    }
}</code></pre>
<h2>2.3、同1.3</h2>
<h2>2.4、打war包</h2>
<p>打开IDEA开发工具中找到 gradle 窗口<br />
在启动类所在模块中找到 Tasks ==&gt;&gt; build ==&gt;&gt; bootWar<br />
<img src="https://cdn.19950826.xyz/content/uploadfile/202207/93691657697046.png" alt="Gradle打包命令" title="Gradle打包命令" /><br />
点击运行，即可在模块下 build ==&gt;&gt; libs ==&gt;&gt; xxx.war</p>
<h1>三、SpringBoot依赖jar包打包</h1>
<p>在build.gradle中加入以下配置</p>
<pre><code>jar {
    enabled = true
    // 分类器（打包成功后的会以 `项目名-dependency` 为包名）
    classifier = "dependency"
}</code></pre>
<p>执行jar任务，即可将项目打成依赖包<br />
<img src="https://cdn.19950826.xyz/content/uploadfile/202207/c1701657701170.png" alt="SpringBoot生成依赖jar包" title="SpringBoot生成依赖jar包" /></p>]]></description>
    <pubDate>Wed, 13 Jul 2022 15:04:58 +0800</pubDate>
    <dc:creator>Mahalalel</dc:creator>
    <guid>https://www.minedeed.com/?post=29</guid>
</item>
<item>
    <title>2022年6月23日 Windows 杀死进程</title>
    <link>https://www.minedeed.com/?post=28</link>
    <description><![CDATA[<h1>背景</h1>
<p>小编服务上午启动起来，跑的好好地，下午看的时候，发现报了这样一个异常</p>
<pre><code>
***************************
APPLICATION FAILED TO START
***************************

Description:

The Tomcat connector configured to listen on port 1001 failed to start. The port may already be in use or the connector may be misconfigured.

Action:

Verify the connector's configuration, identify and stop any process that's listening on port 1001, or configure this application to listen on another port.</code></pre>
<p>Eureka服务和Gateway服务，都是相同的异常，服务直接宕机了！</p>
<p>小编重启ide都没法解决问题。</p>
<p>说明有服务在占用了端口号，把Eureka服务和Gateway服务挤掉了。</p>
<h1>解决</h1>
<h2>1、修改服务的端口号</h2>
<p>简单粗暴，直接修改工程中的启动端口号，但是这样的话，修改的地方有点多！</p>
<h2>2、杀死占用端口的进程</h2>
<h3>2.1、查看端口进程</h3>
<pre><code>netstat -aon | findStr "1001"</code></pre>
<p><img src="https://cdn.19950826.xyz/content/uploadfile/202206/8b471655971845.png" alt="查看进程1" title="查看进程1" /></p>
<h3>2.2、杀死进程</h3>
<pre><code>taskkill /pid 15136 /f</code></pre>
<p><img src="https://cdn.19950826.xyz/content/uploadfile/202206/92271655971936.png" alt="杀死进程" title="杀死进程" /></p>
<p>重新运行项目即可</p>]]></description>
    <pubDate>Thu, 23 Jun 2022 16:04:06 +0800</pubDate>
    <dc:creator>Mahalalel</dc:creator>
    <guid>https://www.minedeed.com/?post=28</guid>
</item>
<item>
    <title>2022年6月16日 查看服务器异常IP访问以及处理</title>
    <link>https://www.minedeed.com/?post=27</link>
    <description><![CDATA[<h1>背景</h1>
<p>小编在登录云服务器时，登录信息显示了如下的一段文字。<br />
<code>There were 8000 failed login attempts since the last successful login.</code><br />
然后意识到了，这是有人试图攻击我的服务器，进而想进行<code>挖矿</code>或者其他非法行为。</p>
<h1>查看</h1>
<p>既然有那么多的异常访问，那么肯定是有IP访问记录的。这些都在登录日志里面。<br />
如果想查看的话，日志文件的完整路径是<code>/var/log/secure</code><br />
可以使用以下命令来查看</p>
<pre><code>tail /var/log/secure</code></pre>
<p>但是文件打开之后，一些关键的信息我们很难筛选出来，那么我们可以使用以下命令来筛选我们需要的信息<code>异常的IP访问</code></p>
<h2>grep筛选</h2>
<pre><code>grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more</code></pre>
<p>执行命令后，就会显示异常ip以及试图登录次数</p>
<p>参考链接：<a href="https://blog.csdn.net/han0373/article/details/122204573" title="查看异常ip访问">查看异常ip访问</a></p>
<h2>查看登录失败的用户信息</h2>
<pre><code>lastb</code></pre>
<p>此命令可以显示所有的登录信息<br />
<img src="https://cdn.19950826.xyz/content/uploadfile/202206/16501655345637.png" alt="登录失败用户信息" title="登录失败用户信息" /></p>
<h1>禁止IP访问</h1>
<h2>使用iptables禁止</h2>
<pre><code>iptables -I INPUT -s {source_ip} -j DROP</code></pre>
<p>注：<code>{source_ip}</code> 这里要填写上异常ip</p>]]></description>
    <pubDate>Thu, 16 Jun 2022 09:58:11 +0800</pubDate>
    <dc:creator>Mahalalel</dc:creator>
    <guid>https://www.minedeed.com/?post=27</guid>
</item>
<item>
    <title>2022年6月15日 Linux删除用户</title>
    <link>https://www.minedeed.com/?post=26</link>
    <description><![CDATA[<h1>查询用户</h1>
<p>最常用的命令是</p>
<pre><code>cat /etc/passwd</code></pre>
<p>但是此命令展示的信息很杂乱，不利于我们排查<br />
<img src="https://cdn.19950826.xyz/content/uploadfile/202206/1ace1655260167.png" alt="Linux用户列表" title="Linux用户列表" /></p>
<p>在网上找到了下面一条命令，帮助我们筛选了有效信息</p>
<pre><code>cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'|more</code></pre>
<p>显示的信息如下<br />
<img src="https://cdn.19950826.xyz/content/uploadfile/202206/d2cb1655260354.png" alt="Linux有效用户信息" title="Linux有效用户信息" /><br />
参考：<a href="https://blog.csdn.net/rainbow702/article/details/50985672" title="Linux下查看用户列表">Linux下查看用户列表</a></p>
<h1>移除用户</h1>
<pre><code>userdel -r postgres</code></pre>
<p>执行命令时，发现用户被进程占用了<br />
<code>userdel: user postgres is currently used by process 2147</code><br />
杀死进程<br />
<code>kill -9 2147</code></p>
<p><img src="https://cdn.19950826.xyz/content/uploadfile/202206/96ae1655260496.png" alt="删除用户" title="删除用户" /></p>]]></description>
    <pubDate>Wed, 15 Jun 2022 10:26:23 +0800</pubDate>
    <dc:creator>Mahalalel</dc:creator>
    <guid>https://www.minedeed.com/?post=26</guid>
</item>
<item>
    <title>2022年6月8日 AntDesignPro文档Demo示例[后置拦截器]报错</title>
    <link>https://www.minedeed.com/?post=25</link>
    <description><![CDATA[<h1>场景</h1>
<p>使用AntDesignPro的文档，写Demo示例时，使用了文档中的后置拦截器，运行以后，报了以下错误：</p>
<pre><code>Unhandled Rejection (TypeError): Failed to execute 'append' on 'Headers': Headers are immutable

authResponseInterceptors
./src/app.ts:38
  35 | };
  36 | 
  37 | const authResponseInterceptors = (response: Response, options: RequestOptionsInit) =&gt; {
&gt; 38 |   response.headers.append('interceptors', 'yes yo');
  39 |   return response;
  40 | };
  41 | 
View compiled
(anonymous function)
./node_modules/umi-request/dist/index.esm.js:718
This screen is visible only in development. It will not appear if the app crashes in production.
Open your browser’s developer console to further inspect this error.  Click the 'X' or hit ESC to dismiss this message.</code></pre>
<h1>问题</h1>
<pre><code>Unhandled Rejection (TypeError): Failed to execute 'append' on 'Headers': Headers are immutable</code></pre>
<p>上面的异常信息，给我们提示了错误的原因，原来，‘Headers’是不可变的，所以没有办法使用append()方法。</p>
<p>后置拦截器，不能修改Headers的内容。</p>
<p>所以，注释掉<code>response.headers.append('interceptors', 'yes yo');</code>该行代码，报错即可消失。</p>]]></description>
    <pubDate>Wed, 08 Jun 2022 14:10:24 +0800</pubDate>
    <dc:creator>Mahalalel</dc:creator>
    <guid>https://www.minedeed.com/?post=25</guid>
</item></channel>
</rss>