add logistic regression details
This commit is contained in:
@@ -18,26 +18,6 @@
|
||||
<p>More info: <a href="https://hexo.io/docs/one-command-deployment.html">Deployment</a></p>
|
||||
]]></content>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>C lang</title>
|
||||
<url>/posts/12462.html</url>
|
||||
<content><![CDATA[<h3 id="c-lang在windows下的开发(VS-code)"><a href="#c-lang在windows下的开发(VS-code)" class="headerlink" title="c lang在windows下的开发(VS code)"></a>c lang在windows下的开发(VS code)</h3><p><a href="https://winlibs.com/#download-release">WinLibs - GCC+MinGW-w64 compiler for Windows</a>下载你需要的版本<br>解压到<code>D:\ProgramModule</code>,并将 <code>bin\</code>加入环境变量<code>PATH</code><br>打开新的<code>Terminal</code>输入<code>gcc -v</code>,查看<code>gcc</code>是否安装成功<br>在<code>VS code</code> 的插件管理下载<code>Code Runner</code>、<code>C\C++</code>这两个插件<br>在<code>*.c</code>源文件的内容区,右键点击<code>Run Code</code> ,即可运行成功<br><img src="/img/language/c-env-conf.png"></p>
|
||||
<h3 id="数据类型"><a href="#数据类型" class="headerlink" title="数据类型"></a>数据类型</h3><ul>
|
||||
<li>整数类型<figure class="highlight c"><table><tr><td class="code"><pre><span class="line"> <span class="type">short</span> a = <span class="number">12</span>;</span><br><span class="line"> <span class="type">int</span> b = <span class="number">100</span>;</span><br><span class="line"> <span class="type">long</span> c = <span class="number">1000L</span>;</span><br><span class="line"> <span class="type">long</span> <span class="type">long</span> d = <span class="number">1000000LL</span>;</span><br><span class="line"> <span class="type">unsigned</span> <span class="type">int</span> e = <span class="number">10</span>;</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"a: %hd\n"</span>,a);</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"b: %d\n"</span>,b);</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"c: %ld\n"</span>,c);</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"d: %lld\n"</span>,d);</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"e: %u\n"</span>,e);</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"f: %.3f\n"</span>,f);</span><br></pre></td></tr></table></figure></li>
|
||||
<li>小数类型<figure class="highlight c"><table><tr><td class="code"><pre><span class="line"><span class="type">float</span> f = <span class="number">3.14F</span>;</span><br><span class="line"><span class="built_in">printf</span>(<span class="string">"f: %.3f\n"</span>,f);</span><br><span class="line"><span class="type">double</span> g = <span class="number">5.65</span>;</span><br><span class="line"><span class="built_in">printf</span>(<span class="string">"g: %.2lf\n"</span>,g);</span><br></pre></td></tr></table></figure></li>
|
||||
<li>字符类型<figure class="highlight c"><table><tr><td class="code"><pre><span class="line"><span class="type">char</span> h = <span class="string">'x'</span>;</span><br><span class="line"><span class="built_in">printf</span>(<span class="string">"x: %c\n"</span>,x);</span><br></pre></td></tr></table></figure></li>
|
||||
</ul>
|
||||
<h3 id="类型转换"><a href="#类型转换" class="headerlink" title="类型转换"></a>类型转换</h3><ul>
|
||||
<li>隐式转换</li>
|
||||
<li>强制转换<figure class="highlight c"><table><tr><td class="code"><pre><span class="line"><span class="type">int</span> b = <span class="number">23</span>;</span><br><span class="line"><span class="type">short</span> c = (<span class="type">short</span>) b;</span><br></pre></td></tr></table></figure></li>
|
||||
</ul>
|
||||
<h3 id="数组"><a href="#数组" class="headerlink" title="数组"></a>数组</h3><figure class="highlight c"><table><tr><td class="code"><pre><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string"><stdio.h></span></span></span><br><span class="line"></span><br><span class="line"><span class="type">int</span> <span class="title function_">main</span><span class="params">()</span>{</span><br><span class="line"> <span class="type">int</span> arr [<span class="number">10</span>] = {<span class="number">2</span>,<span class="number">3</span>,<span class="number">4</span>,<span class="number">5</span>,<span class="number">6</span>,<span class="number">7</span>,<span class="number">8</span>,<span class="number">9</span>,<span class="number">10</span>,<span class="number">11</span>};</span><br><span class="line"> arr[<span class="number">0</span>] = <span class="number">1525</span>;</span><br><span class="line"> *(arr+<span class="number">1</span>) = <span class="number">25</span>;</span><br><span class="line"> <span class="type">int</span> len = <span class="keyword">sizeof</span>(arr)/<span class="keyword">sizeof</span>(arr[<span class="number">0</span>]);</span><br><span class="line"> <span class="type">void</span> <span class="title function_">printArr</span><span class="params">(<span class="type">int</span> arr[], <span class="type">int</span> len)</span>{</span><br><span class="line"> <span class="keyword">for</span> (<span class="type">int</span> i = <span class="number">0</span>; i < len;i++){</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"%d\t"</span>,arr[i]);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> printArr(arr,len);</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
|
||||
<h3 id="指针"><a href="#指针" class="headerlink" title="指针"></a>指针</h3><figure class="highlight c"><table><tr><td class="code"><pre><span class="line"><span class="comment">// swap the value of a and b</span></span><br><span class="line"> <span class="type">void</span> <span class="title function_">swap</span><span class="params">(<span class="type">int</span>* x, <span class="type">int</span>* y)</span>{</span><br><span class="line"> <span class="type">int</span> temp = *x;</span><br><span class="line"> *x = *y;</span><br><span class="line"> *y = temp;</span><br><span class="line"></span><br><span class="line"> }</span><br><span class="line"> <span class="type">int</span> a = <span class="number">5</span>;</span><br><span class="line"> <span class="type">int</span> b = <span class="number">10</span>;</span><br><span class="line"> swap(&a, &b);</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"a = %d b = %d\n"</span>, a, b);</span><br></pre></td></tr></table></figure>
|
||||
]]></content>
|
||||
<tags>
|
||||
<tag>C C++</tag>
|
||||
</tags>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>page</title>
|
||||
<url>/posts/1441.html</url>
|
||||
@@ -46,15 +26,6 @@
|
||||
<li></li>
|
||||
</ul>
|
||||
]]></content>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>script</title>
|
||||
<url>/posts/34849.html</url>
|
||||
<content><![CDATA[<h3 id="查看CPU、内存使用率"><a href="#查看CPU、内存使用率" class="headerlink" title="查看CPU、内存使用率"></a>查看CPU、内存使用率</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="meta">#!/bin/bash</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 定义颜色</span></span><br><span class="line">RED=<span class="string">'\033[0;31m'</span></span><br><span class="line">GREEN=<span class="string">'\033[0;32m'</span></span><br><span class="line">YELLOW=<span class="string">'\033[0;33m'</span></span><br><span class="line">BLUE=<span class="string">'\033[0;34m'</span></span><br><span class="line">NC=<span class="string">'\033[0m'</span> <span class="comment"># 无颜色</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">while</span> <span class="literal">true</span>; <span class="keyword">do</span></span><br><span class="line"> <span class="comment"># 获取所有进程的CPU使用率和内存使用率</span></span><br><span class="line"> cpu_usage=$(ps aux | awk <span class="string">'{sum_cpu += $3} END {print sum_cpu}'</span>)</span><br><span class="line"> mem_usage=$(ps aux | awk <span class="string">'{sum_mem += $4} END {print sum_mem}'</span>)</span><br><span class="line"> </span><br><span class="line"> <span class="comment"># 打印结果,带有时间戳、分隔线和颜色高亮</span></span><br><span class="line"> <span class="built_in">echo</span> -e <span class="string">"<span class="variable">${BLUE}</span>==============================<span class="variable">${NC}</span>"</span></span><br><span class="line"> <span class="built_in">echo</span> -e <span class="string">"<span class="variable">${YELLOW}</span>Timestamp: <span class="subst">$(date)</span><span class="variable">${NC}</span>"</span></span><br><span class="line"> <span class="built_in">echo</span> -e <span class="string">"<span class="variable">${BLUE}</span>==============================<span class="variable">${NC}</span>"</span></span><br><span class="line"> <span class="built_in">echo</span> -e <span class="string">"<span class="variable">${GREEN}</span>Total CPU usage: <span class="variable">${RED}</span><span class="variable">$cpu_usage</span>%<span class="variable">${NC}</span>"</span></span><br><span class="line"> <span class="built_in">echo</span> -e <span class="string">"<span class="variable">${GREEN}</span>Total Memory usage: <span class="variable">${RED}</span><span class="variable">$mem_usage</span>%<span class="variable">${NC}</span>"</span></span><br><span class="line"> <span class="built_in">echo</span> -e <span class="string">"<span class="variable">${BLUE}</span>==============================<span class="variable">${NC}</span>"</span></span><br><span class="line"> </span><br><span class="line"> <span class="comment"># 等待5秒后再次执行</span></span><br><span class="line"> <span class="built_in">sleep</span> 5</span><br><span class="line"><span class="keyword">done</span></span><br><span class="line"></span><br></pre></td></tr></table></figure>
|
||||
<p><strong>保存脚本到/usr/local/bin目录下</strong></p>
|
||||
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="built_in">mv</span> usage.sh /usr/local/bin/usage</span><br></pre></td></tr></table></figure>
|
||||
|
||||
<h3 id="Shell脚本编写的基本信息"><a href="#Shell脚本编写的基本信息" class="headerlink" title="Shell脚本编写的基本信息"></a>Shell脚本编写的基本信息</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="meta">#! /bin/bash</span></span><br><span class="line"><span class="comment"># -------------------------------------------------</span></span><br><span class="line"><span class="comment"># Filename: test.sh</span></span><br><span class="line"><span class="comment"># Version: 1.0</span></span><br><span class="line"><span class="comment"># Date: 2024/05/02</span></span><br><span class="line"><span class="comment"># Author: shenjianZ</span></span><br><span class="line"><span class="comment"># Email: shenjianZLT@gmail.com</span></span><br><span class="line"><span class="comment"># Website: https://blog.shenjianl.cn</span></span><br><span class="line"><span class="comment"># Description: this is a test shell</span></span><br><span class="line"><span class="comment"># CopyRight: 2024 All rights reserved shenjianZ</span></span><br><span class="line"><span class="comment"># License GPL</span></span><br><span class="line"><span class="comment"># ------------------------------------------------</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="comment"># Your script logic goes here</span></span><br></pre></td></tr></table></figure>]]></content>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>k近邻算法(K-Nearest Neighbors)KNN</title>
|
||||
@@ -118,6 +89,47 @@
|
||||
<tag>machinelearning</tag>
|
||||
</tags>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>逻辑回归</title>
|
||||
<url>/posts/60504.html</url>
|
||||
<content><![CDATA[<h3 id="logistic-regression-code"><a href="#logistic-regression-code" class="headerlink" title="logistic regression code"></a>logistic regression code</h3><figure class="highlight python"><table><tr><td class="code"><pre><span class="line"><span class="keyword">import</span> pandas <span class="keyword">as</span> pd</span><br><span class="line"><span class="keyword">import</span> numpy <span class="keyword">as</span> np</span><br><span class="line"><span class="keyword">from</span> sklearn.datasets <span class="keyword">import</span> load_breast_cancer</span><br><span class="line"><span class="keyword">from</span> sklearn.model_selection <span class="keyword">import</span> train_test_split</span><br><span class="line"><span class="keyword">from</span> sklearn.preprocessing <span class="keyword">import</span> StandardScaler</span><br><span class="line"><span class="keyword">from</span> sklearn.linear_model <span class="keyword">import</span> LogisticRegression</span><br><span class="line"><span class="comment"># 1. 加载乳腺癌数据集</span></span><br><span class="line">data = load_breast_cancer()</span><br><span class="line"><span class="comment"># 2.1 数据集基本处理</span></span><br><span class="line">df = pd.DataFrame(data.data, columns=data.feature_names)</span><br><span class="line">df[<span class="string">'target'</span>] = data.target</span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> df.columns:</span><br><span class="line"> <span class="comment"># 检查列是否有缺失值</span></span><br><span class="line"> <span class="keyword">if</span> np.<span class="built_in">any</span>(pd.isnull(df[i])):</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">f"Filling missing values in column: <span class="subst">{i}</span>"</span>)</span><br><span class="line"><span class="comment">#2.2 确认特征值、目标值</span></span><br><span class="line">X = df.iloc[:,<span class="number">0</span>:df.shape[<span class="number">1</span>] - <span class="number">1</span>]</span><br><span class="line">y = df.loc[:,<span class="string">"target"</span>]</span><br><span class="line"><span class="comment"># 2.3 分割数据</span></span><br><span class="line">X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=<span class="number">0.3</span>)</span><br><span class="line"><span class="comment"># 显示前几行数据</span></span><br><span class="line">df.head(<span class="number">1</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 3. 特征工程 标准化</span></span><br><span class="line">transfer = StandardScaler()</span><br><span class="line">X_train = transfer.fit_transform(X_train)</span><br><span class="line">X_test = transfer.transform(X_test)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 4 机器学习 逻辑回归</span></span><br><span class="line">estimator = LogisticRegression()</span><br><span class="line">estimator.fit(X_train,y_train)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 5. 模型评估</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f"模型准确率:<span class="subst">{estimator.score(X_test,y_test)}</span>"</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f"模型预测值为:\n<span class="subst">{estimator.predict(X_test)}</span>"</span>)</span><br></pre></td></tr></table></figure>
|
||||
|
||||
<h3 id="分类评估的参数"><a href="#分类评估的参数" class="headerlink" title="分类评估的参数"></a>分类评估的参数</h3><ul>
|
||||
<li><p>准确率<br>准确率是所有预测正确的样本占总样本的比例<br>$$Accuracy = \frac{TP+TN}{TP+FN+FP+TN}$$</p>
|
||||
</li>
|
||||
<li><p>精准率<br>精准率(又称查准率)是指所有被预测为正类的样本中,真正为正类的比例<br>$$Precision = \frac{TP}{TP+FP}$$</p>
|
||||
</li>
|
||||
<li><p>召回率<br>召回率(又称查全率)是指所有实际为正类的样本中,被正确预测为正类的比例<br>$$Recall = \frac{TP}{TP+FN}$$</p>
|
||||
</li>
|
||||
<li><p>F1-score<br>F1 值(F1 Score)是精准率和召回率的调和平均数,综合考虑了精准率和召回率的影响。<br>$$ F1 = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} $$</p>
|
||||
</li>
|
||||
<li><p>roc曲线<br>tpr、fpr来衡量不平衡的二分类问题</p>
|
||||
</li>
|
||||
</ul>
|
||||
<figure class="highlight python"><table><tr><td class="code"><pre><span class="line"><span class="keyword">import</span> pandas <span class="keyword">as</span> pd</span><br><span class="line"><span class="keyword">import</span> numpy <span class="keyword">as</span> np</span><br><span class="line"><span class="keyword">from</span> sklearn.datasets <span class="keyword">import</span> load_breast_cancer</span><br><span class="line"><span class="keyword">from</span> sklearn.model_selection <span class="keyword">import</span> train_test_split</span><br><span class="line"><span class="keyword">from</span> sklearn.preprocessing <span class="keyword">import</span> StandardScaler</span><br><span class="line"><span class="keyword">from</span> sklearn.linear_model <span class="keyword">import</span> LogisticRegression</span><br><span class="line"><span class="keyword">from</span> sklearn.metrics <span class="keyword">import</span> classification_report, roc_auc_score</span><br><span class="line"><span class="comment"># 1. 加载乳腺癌数据集</span></span><br><span class="line">data = load_breast_cancer()</span><br><span class="line"><span class="comment"># 2.1 数据集基本处理</span></span><br><span class="line">df = pd.DataFrame(data.data, columns=data.feature_names)</span><br><span class="line">df[<span class="string">'target'</span>] = data.target</span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> df.columns:</span><br><span class="line"> <span class="comment"># 检查列是否有缺失值</span></span><br><span class="line"> <span class="keyword">if</span> np.<span class="built_in">any</span>(pd.isnull(df[i])):</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">f"Filling missing values in column: <span class="subst">{i}</span>"</span>)</span><br><span class="line"><span class="comment"># 2.2 确认特征值、目标值</span></span><br><span class="line">X = df.iloc[:, <span class="number">0</span>:df.shape[<span class="number">1</span>] - <span class="number">1</span>]</span><br><span class="line">y = df.loc[:, <span class="string">"target"</span>]</span><br><span class="line"><span class="comment"># 2.3 分割数据</span></span><br><span class="line">X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=<span class="number">0.3</span>)</span><br><span class="line"><span class="comment"># 显示前几行数据</span></span><br><span class="line">df.head(<span class="number">1</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 3. 特征工程 标准化</span></span><br><span class="line">transfer = StandardScaler()</span><br><span class="line">X_train = transfer.fit_transform(X_train)</span><br><span class="line">X_test = transfer.transform(X_test)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 4 机器学习 逻辑回归</span></span><br><span class="line">estimator = LogisticRegression()</span><br><span class="line">estimator.fit(X_train, y_train)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 5. 模型评估</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f"模型准确率:<span class="subst">{estimator.score(X_test, y_test)}</span>"</span>)</span><br><span class="line">y_pred = estimator.predict(X_test)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f"模型预测值为:\n<span class="subst">{y_pred}</span>"</span>)</span><br><span class="line"><span class="comment"># 5.1 精确率、召回率</span></span><br><span class="line">ret = classification_report(y_test, y_pred, labels=[<span class="number">1</span>, <span class="number">0</span>], target_names=[<span class="string">"良性"</span>, <span class="string">"恶性"</span>])</span><br><span class="line">roc_score = roc_auc_score(y_test, y_pred)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f"准确率、召回率:<span class="subst">{ret}</span>"</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f"roc_score:<span class="subst">{roc_score}</span>"</span>)</span><br></pre></td></tr></table></figure>
|
||||
|
||||
<h3 id="类别不平衡的处理"><a href="#类别不平衡的处理" class="headerlink" title="类别不平衡的处理"></a>类别不平衡的处理</h3><p>先准备类别不平衡的数据</p>
|
||||
<figure class="highlight python"><table><tr><td class="code"><pre><span class="line"><span class="keyword">from</span> imblearn.over_sampling <span class="keyword">import</span> RandomOverSampler,SMOTE</span><br><span class="line"><span class="keyword">from</span> imblearn.under_sampling <span class="keyword">import</span> RandomUnderSampler</span><br><span class="line"><span class="keyword">from</span> sklearn.datasets <span class="keyword">import</span> make_classification</span><br><span class="line"><span class="keyword">import</span> matplotlib.pyplot <span class="keyword">as</span> plt</span><br><span class="line"><span class="keyword">from</span> collections <span class="keyword">import</span> Counter</span><br><span class="line"></span><br><span class="line"><span class="comment"># 1.准备类别不平衡的数据</span></span><br><span class="line">X, y = make_classification(</span><br><span class="line"> n_samples=<span class="number">5000</span>,</span><br><span class="line"> n_features=<span class="number">2</span>,</span><br><span class="line"> n_informative=<span class="number">2</span>,</span><br><span class="line"> n_redundant=<span class="number">0</span>,</span><br><span class="line"> n_repeated=<span class="number">0</span>,</span><br><span class="line"> n_classes=<span class="number">3</span>,</span><br><span class="line"> n_clusters_per_class=<span class="number">1</span>,</span><br><span class="line"> weights=[<span class="number">0.01</span>, <span class="number">0.05</span>, <span class="number">0.94</span>],</span><br><span class="line"> random_state=<span class="number">0</span>,</span><br><span class="line">)</span><br><span class="line">counter = Counter(y)</span><br><span class="line">plt.scatter(X[:,<span class="number">0</span>],X[:,<span class="number">1</span>],c=y)</span><br><span class="line">plt.show()</span><br></pre></td></tr></table></figure>
|
||||
|
||||
<ul>
|
||||
<li>过采样<br>增加训练集的少数的类别的样本,使得正反例样本数据接近 <ul>
|
||||
<li>随机过采样(RandomOverSampler)<figure class="highlight python"><table><tr><td class="code"><pre><span class="line">ros = RandomOverSampler()</span><br><span class="line">X_resampled,y_resampled = ros.fit_resample(X,y)</span><br><span class="line"><span class="built_in">print</span>(Counter(y_resampled))</span><br><span class="line">plt.scatter(X_resampled[:,<span class="number">0</span>],X_resampled[:,<span class="number">1</span>],c=y_resampled)</span><br><span class="line">plt.show()</span><br></pre></td></tr></table></figure>
|
||||
<img src="/img/machinelearning/over_random_sampling.png"></li>
|
||||
<li><code>SMOTE</code>过采样(SMOTE)<figure class="highlight python"><table><tr><td class="code"><pre><span class="line">smote = SMOTE()</span><br><span class="line">X_resampled,y_resampled = smote.fit_resample(X,y)</span><br><span class="line"><span class="built_in">print</span>(Counter(y_resampled))</span><br><span class="line">plt.scatter(X_resampled[:,<span class="number">0</span>],X_resampled[:,<span class="number">1</span>],c=y_resampled)</span><br><span class="line">plt.show()</span><br></pre></td></tr></table></figure>
|
||||
<img src="/img/machinelearning/over_smote_sampling.png"></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>欠采样<br>减少训练集的多数的类别的样本,使得正反例样本数据接近<ul>
|
||||
<li>随机欠采样(RandomUnderSampler)<figure class="highlight python"><table><tr><td class="code"><pre><span class="line">rus = RandomUnderSampler(random_state=<span class="number">0</span>)</span><br><span class="line">X_resampled,y_resampled = rus.fit_resample(X,y)</span><br><span class="line"><span class="built_in">print</span>(Counter(y_resampled))</span><br><span class="line">plt.scatter(X_resampled[:,<span class="number">0</span>],X_resampled[:,<span class="number">1</span>],c=y_resampled)</span><br><span class="line">plt.show()</span><br></pre></td></tr></table></figure>
|
||||
<img src="/img/machinelearning/under_sampling.png"></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
]]></content>
|
||||
<tags>
|
||||
<tag>logistic-regression</tag>
|
||||
</tags>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>线性回归</title>
|
||||
<url>/posts/52662.html</url>
|
||||
@@ -153,11 +165,40 @@
|
||||
<tag>linear-regression</tag>
|
||||
</tags>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>script</title>
|
||||
<url>/posts/34849.html</url>
|
||||
<content><![CDATA[<h3 id="查看CPU、内存使用率"><a href="#查看CPU、内存使用率" class="headerlink" title="查看CPU、内存使用率"></a>查看CPU、内存使用率</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="meta">#!/bin/bash</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 定义颜色</span></span><br><span class="line">RED=<span class="string">'\033[0;31m'</span></span><br><span class="line">GREEN=<span class="string">'\033[0;32m'</span></span><br><span class="line">YELLOW=<span class="string">'\033[0;33m'</span></span><br><span class="line">BLUE=<span class="string">'\033[0;34m'</span></span><br><span class="line">NC=<span class="string">'\033[0m'</span> <span class="comment"># 无颜色</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">while</span> <span class="literal">true</span>; <span class="keyword">do</span></span><br><span class="line"> <span class="comment"># 获取所有进程的CPU使用率和内存使用率</span></span><br><span class="line"> cpu_usage=$(ps aux | awk <span class="string">'{sum_cpu += $3} END {print sum_cpu}'</span>)</span><br><span class="line"> mem_usage=$(ps aux | awk <span class="string">'{sum_mem += $4} END {print sum_mem}'</span>)</span><br><span class="line"> </span><br><span class="line"> <span class="comment"># 打印结果,带有时间戳、分隔线和颜色高亮</span></span><br><span class="line"> <span class="built_in">echo</span> -e <span class="string">"<span class="variable">${BLUE}</span>==============================<span class="variable">${NC}</span>"</span></span><br><span class="line"> <span class="built_in">echo</span> -e <span class="string">"<span class="variable">${YELLOW}</span>Timestamp: <span class="subst">$(date)</span><span class="variable">${NC}</span>"</span></span><br><span class="line"> <span class="built_in">echo</span> -e <span class="string">"<span class="variable">${BLUE}</span>==============================<span class="variable">${NC}</span>"</span></span><br><span class="line"> <span class="built_in">echo</span> -e <span class="string">"<span class="variable">${GREEN}</span>Total CPU usage: <span class="variable">${RED}</span><span class="variable">$cpu_usage</span>%<span class="variable">${NC}</span>"</span></span><br><span class="line"> <span class="built_in">echo</span> -e <span class="string">"<span class="variable">${GREEN}</span>Total Memory usage: <span class="variable">${RED}</span><span class="variable">$mem_usage</span>%<span class="variable">${NC}</span>"</span></span><br><span class="line"> <span class="built_in">echo</span> -e <span class="string">"<span class="variable">${BLUE}</span>==============================<span class="variable">${NC}</span>"</span></span><br><span class="line"> </span><br><span class="line"> <span class="comment"># 等待5秒后再次执行</span></span><br><span class="line"> <span class="built_in">sleep</span> 5</span><br><span class="line"><span class="keyword">done</span></span><br><span class="line"></span><br></pre></td></tr></table></figure>
|
||||
<p><strong>保存脚本到/usr/local/bin目录下</strong></p>
|
||||
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="built_in">mv</span> usage.sh /usr/local/bin/usage</span><br></pre></td></tr></table></figure>
|
||||
|
||||
<h3 id="Shell脚本编写的基本信息"><a href="#Shell脚本编写的基本信息" class="headerlink" title="Shell脚本编写的基本信息"></a>Shell脚本编写的基本信息</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="meta">#! /bin/bash</span></span><br><span class="line"><span class="comment"># -------------------------------------------------</span></span><br><span class="line"><span class="comment"># Filename: test.sh</span></span><br><span class="line"><span class="comment"># Version: 1.0</span></span><br><span class="line"><span class="comment"># Date: 2024/05/02</span></span><br><span class="line"><span class="comment"># Author: shenjianZ</span></span><br><span class="line"><span class="comment"># Email: shenjianZLT@gmail.com</span></span><br><span class="line"><span class="comment"># Website: https://blog.shenjianl.cn</span></span><br><span class="line"><span class="comment"># Description: this is a test shell</span></span><br><span class="line"><span class="comment"># CopyRight: 2024 All rights reserved shenjianZ</span></span><br><span class="line"><span class="comment"># License GPL</span></span><br><span class="line"><span class="comment"># ------------------------------------------------</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="comment"># Your script logic goes here</span></span><br></pre></td></tr></table></figure>]]></content>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>网络相关</title>
|
||||
<url>/posts/41168.html</url>
|
||||
<content><![CDATA[]]></content>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>C lang</title>
|
||||
<url>/posts/12462.html</url>
|
||||
<content><![CDATA[<h3 id="c-lang在windows下的开发(VS-code)"><a href="#c-lang在windows下的开发(VS-code)" class="headerlink" title="c lang在windows下的开发(VS code)"></a>c lang在windows下的开发(VS code)</h3><p><a href="https://winlibs.com/#download-release">WinLibs - GCC+MinGW-w64 compiler for Windows</a>下载你需要的版本<br>解压到<code>D:\ProgramModule</code>,并将 <code>bin\</code>加入环境变量<code>PATH</code><br>打开新的<code>Terminal</code>输入<code>gcc -v</code>,查看<code>gcc</code>是否安装成功<br>在<code>VS code</code> 的插件管理下载<code>Code Runner</code>、<code>C\C++</code>这两个插件<br>在<code>*.c</code>源文件的内容区,右键点击<code>Run Code</code> ,即可运行成功<br><img src="/img/language/c-env-conf.png"></p>
|
||||
<h3 id="数据类型"><a href="#数据类型" class="headerlink" title="数据类型"></a>数据类型</h3><ul>
|
||||
<li>整数类型<figure class="highlight c"><table><tr><td class="code"><pre><span class="line"> <span class="type">short</span> a = <span class="number">12</span>;</span><br><span class="line"> <span class="type">int</span> b = <span class="number">100</span>;</span><br><span class="line"> <span class="type">long</span> c = <span class="number">1000L</span>;</span><br><span class="line"> <span class="type">long</span> <span class="type">long</span> d = <span class="number">1000000LL</span>;</span><br><span class="line"> <span class="type">unsigned</span> <span class="type">int</span> e = <span class="number">10</span>;</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"a: %hd\n"</span>,a);</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"b: %d\n"</span>,b);</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"c: %ld\n"</span>,c);</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"d: %lld\n"</span>,d);</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"e: %u\n"</span>,e);</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"f: %.3f\n"</span>,f);</span><br></pre></td></tr></table></figure></li>
|
||||
<li>小数类型<figure class="highlight c"><table><tr><td class="code"><pre><span class="line"><span class="type">float</span> f = <span class="number">3.14F</span>;</span><br><span class="line"><span class="built_in">printf</span>(<span class="string">"f: %.3f\n"</span>,f);</span><br><span class="line"><span class="type">double</span> g = <span class="number">5.65</span>;</span><br><span class="line"><span class="built_in">printf</span>(<span class="string">"g: %.2lf\n"</span>,g);</span><br></pre></td></tr></table></figure></li>
|
||||
<li>字符类型<figure class="highlight c"><table><tr><td class="code"><pre><span class="line"><span class="type">char</span> h = <span class="string">'x'</span>;</span><br><span class="line"><span class="built_in">printf</span>(<span class="string">"x: %c\n"</span>,x);</span><br></pre></td></tr></table></figure></li>
|
||||
</ul>
|
||||
<h3 id="类型转换"><a href="#类型转换" class="headerlink" title="类型转换"></a>类型转换</h3><ul>
|
||||
<li>隐式转换</li>
|
||||
<li>强制转换<figure class="highlight c"><table><tr><td class="code"><pre><span class="line"><span class="type">int</span> b = <span class="number">23</span>;</span><br><span class="line"><span class="type">short</span> c = (<span class="type">short</span>) b;</span><br></pre></td></tr></table></figure></li>
|
||||
</ul>
|
||||
<h3 id="数组"><a href="#数组" class="headerlink" title="数组"></a>数组</h3><figure class="highlight c"><table><tr><td class="code"><pre><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string"><stdio.h></span></span></span><br><span class="line"></span><br><span class="line"><span class="type">int</span> <span class="title function_">main</span><span class="params">()</span>{</span><br><span class="line"> <span class="type">int</span> arr [<span class="number">10</span>] = {<span class="number">2</span>,<span class="number">3</span>,<span class="number">4</span>,<span class="number">5</span>,<span class="number">6</span>,<span class="number">7</span>,<span class="number">8</span>,<span class="number">9</span>,<span class="number">10</span>,<span class="number">11</span>};</span><br><span class="line"> arr[<span class="number">0</span>] = <span class="number">1525</span>;</span><br><span class="line"> *(arr+<span class="number">1</span>) = <span class="number">25</span>;</span><br><span class="line"> <span class="type">int</span> len = <span class="keyword">sizeof</span>(arr)/<span class="keyword">sizeof</span>(arr[<span class="number">0</span>]);</span><br><span class="line"> <span class="type">void</span> <span class="title function_">printArr</span><span class="params">(<span class="type">int</span> arr[], <span class="type">int</span> len)</span>{</span><br><span class="line"> <span class="keyword">for</span> (<span class="type">int</span> i = <span class="number">0</span>; i < len;i++){</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"%d\t"</span>,arr[i]);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> printArr(arr,len);</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
|
||||
<h3 id="指针"><a href="#指针" class="headerlink" title="指针"></a>指针</h3><figure class="highlight c"><table><tr><td class="code"><pre><span class="line"><span class="comment">// swap the value of a and b</span></span><br><span class="line"> <span class="type">void</span> <span class="title function_">swap</span><span class="params">(<span class="type">int</span>* x, <span class="type">int</span>* y)</span>{</span><br><span class="line"> <span class="type">int</span> temp = *x;</span><br><span class="line"> *x = *y;</span><br><span class="line"> *y = temp;</span><br><span class="line"></span><br><span class="line"> }</span><br><span class="line"> <span class="type">int</span> a = <span class="number">5</span>;</span><br><span class="line"> <span class="type">int</span> b = <span class="number">10</span>;</span><br><span class="line"> swap(&a, &b);</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"a = %d b = %d\n"</span>, a, b);</span><br></pre></td></tr></table></figure>
|
||||
]]></content>
|
||||
<tags>
|
||||
<tag>C C++</tag>
|
||||
</tags>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>郑伯克段于鄢</title>
|
||||
<url>/posts/58638.html</url>
|
||||
@@ -172,44 +213,78 @@
|
||||
</tags>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>Hadoop集群Zookeeper配置</title>
|
||||
<url>/posts/61251.html</url>
|
||||
<content><![CDATA[<h3 id="Zookeeper脚本配置"><a href="#Zookeeper脚本配置" class="headerlink" title="Zookeeper脚本配置"></a>Zookeeper脚本配置</h3><ul>
|
||||
<li>拷贝ips<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="built_in">cp</span> ips ips_zookeeper</span><br></pre></td></tr></table></figure>
|
||||
修改为<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">nn1</span><br><span class="line">nn2</span><br><span class="line">nn3</span><br></pre></td></tr></table></figure></li>
|
||||
<li>拷贝三个脚本<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="built_in">cp</span> scp_all.sh scp_all_zookeeper.sh </span><br><span class="line"><span class="built_in">cp</span> ssh_all.sh ssh_all_zookeeper.sh </span><br><span class="line"><span class="built_in">cp</span> ssh_root.sh ssh_root_zookeeper.sh</span><br></pre></td></tr></table></figure></li>
|
||||
<li>修改脚本<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">vim scp_all_zookeeper.sh </span><br><span class="line">vim ssh_all_zookeeper.sh </span><br><span class="line">vim ssh_root_zookeeper.sh </span><br></pre></td></tr></table></figure>
|
||||
<title>组件使用</title>
|
||||
<url>/posts/33957.html</url>
|
||||
<content><![CDATA[<h3 id="组件自动导入"><a href="#组件自动导入" class="headerlink" title="组件自动导入"></a>组件自动导入</h3><figure class="highlight json"><table><tr><td class="code"><pre><span class="line"><span class="attr">"easycom"</span><span class="punctuation">:</span><span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"autoscan"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"custom"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"^tui-(.*)"</span><span class="punctuation">:</span> <span class="string">"@/components/thorui/tui-$1/tui-$1.vue"</span> <span class="comment">// 匹配components目录内的vue文件</span></span><br><span class="line"> <span class="punctuation">}</span></span><br><span class="line"><span class="punctuation">}</span></span><br></pre></td></tr></table></figure>
|
||||
|
||||
将三个脚本中的ips改为ips_zookeeper</li>
|
||||
<h3 id="tui-sticky-吸顶容器"><a href="#tui-sticky-吸顶容器" class="headerlink" title="tui-sticky 吸顶容器"></a><code>tui-sticky 吸顶容器</code></h3><blockquote>
|
||||
<p>包含 以下 <code>tui</code> 组件 :</p>
|
||||
<ul>
|
||||
<li>tui-sticky</li>
|
||||
<li>tui-list-view</li>
|
||||
<li>tui-list-cell</li>
|
||||
</ul>
|
||||
<h3 id="Zookeeper安装"><a href="#Zookeeper安装" class="headerlink" title="Zookeeper安装"></a>Zookeeper安装</h3><ul>
|
||||
<li>上传到<code>/tmp</code>目录下,解压 <figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="built_in">sudo</span> tar -zxvf /tmp/zookeeper-3.4.8.tar.gz -C /usr/local/</span><br><span class="line">scp -r /usr/local/zookeeper-3.4.8/ root@nn2:/usr/local/</span><br><span class="line">scp -r /usr/local/zookeeper-3.4.8/ root@nn3:/usr/local/</span><br><span class="line">ssh_root_zookeeper.sh <span class="built_in">chown</span> -R hadoop:hadoop /usr/local/zookeeper-3.4.8</span><br><span class="line">ssh_root_zookeeper.s <span class="built_in">ln</span> -s /usr/local/zookeeper-3.4.8/ /usr/local/zookeeper</span><br></pre></td></tr></table></figure></li>
|
||||
</ul>
|
||||
<h3 id="Zookeeper配置"><a href="#Zookeeper配置" class="headerlink" title="Zookeeper配置"></a>Zookeeper配置</h3><ul>
|
||||
<li><p>zoo.cfg配置</p>
|
||||
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="built_in">cd</span> /usr/local/zookeeper/conf/</span><br><span class="line"><span class="built_in">cp</span> zoo_sample.cfg zoo.cfg</span><br></pre></td></tr></table></figure>
|
||||
<p>然后<code>vim zoo.cfg</code>,修改如下:</p>
|
||||
<figure class="highlight properties"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 修改dataDir</span></span><br><span class="line"><span class="attr">dataDir</span>=<span class="string">/data/zookeeper</span></span><br><span class="line"><span class="comment"># 添加一下内容</span></span><br><span class="line"><span class="attr">server.1</span>=<span class="string">nn1:2888:3888 </span></span><br><span class="line"><span class="attr">server.2</span>=<span class="string">nn2:2888:3888 </span></span><br><span class="line"><span class="attr">server.3</span>=<span class="string">nn3:2888:3888</span></span><br></pre></td></tr></table></figure>
|
||||
<p>分发给nn2、nn3<br> <code>scp_all_zookeeper.sh /usr/local/zookeeper/conf/zoo.cfg /usr/local/zookeeper/conf/</code></p>
|
||||
</li>
|
||||
<li><p><code>zkEnv.sh</code>配置<br><code>vim /usr/local/zookeeper/bin/zkEnv.sh</code><br><img src="/../../../img/000001.png" alt="000001.png"><br>分发到nn2、nn3</p>
|
||||
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">scp_all_zookeeper.sh /usr/local/zookeeper/bin/zkEnv.sh /usr/local/zookeeper/bin/</span><br></pre></td></tr></table></figure></li>
|
||||
<li><p>创建zookeeper数据目录</p>
|
||||
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">ssh_root_zookeeper.sh <span class="built_in">mkdir</span> -p /data/zookeeper</span><br><span class="line">ssh_root_zookeeper.sh <span class="built_in">chown</span> -R hadoop:hadoop /data</span><br></pre></td></tr></table></figure></li>
|
||||
<li><p>创建myid文件</p>
|
||||
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">ssh nn1 <span class="string">'echo "1" > /data/zookeeper/myid'</span></span><br><span class="line">ssh nn2 <span class="string">'echo "2" > /data/zookeeper/myid'</span></span><br><span class="line">ssh nn3 <span class="string">'echo "3" > /data/zookeeper/myid'</span></span><br></pre></td></tr></table></figure></li>
|
||||
<li><p>配置Zookeeper环境变量</p>
|
||||
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 在其他所有主机也执行</span></span><br><span class="line"><span class="built_in">sudo</span> <span class="built_in">chown</span> -R hadoop:hadoop /etc/profile.d/myEnv.sh</span><br></pre></td></tr></table></figure>
|
||||
|
||||
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="built_in">echo</span> <span class="string">'export ZOOKEEPER_HOME=/usr/local/zookeeper'</span> >> /etc/profile.d/myEnv.sh</span><br><span class="line"><span class="built_in">echo</span> <span class="string">'export PATH=$PATH:$ZOOKEEPER_HOME/bin'</span> >> /etc/profile.d/myEnv.sh</span><br></pre></td></tr></table></figure>
|
||||
|
||||
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 分发到nn2、nn3</span></span><br><span class="line">scp_all_zookeeper.sh /etc/profile.d/myEnv.sh /etc/profile.d/</span><br><span class="line"><span class="comment"># source 环境变量</span></span><br><span class="line">ssh_all_zookeeper.sh <span class="built_in">source</span> /etc/profile</span><br></pre></td></tr></table></figure></li>
|
||||
</ul>
|
||||
<h3 id="Zookeeper的命令"><a href="#Zookeeper的命令" class="headerlink" title="Zookeeper的命令"></a>Zookeeper的命令</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="comment">#启动zk服务</span></span><br><span class="line">ssh_all_zookeeper.sh /usr/local/zookeeper/bin/zkServer.sh start</span><br><span class="line"><span class="comment">#查看每个机器ZK运行的状态</span></span><br><span class="line">ssh_all_zookeeper.sh /usr/local/zookeeper/bin/zkServer.sh status</span><br><span class="line"><span class="comment">#整体停止服务</span></span><br><span class="line">ssh_all_zookeeper.sh /usr/local/zookeeper/bin/zkServer.sh stop </span><br><span class="line"><span class="comment">#重启zk服务</span></span><br><span class="line">ssh_all_zookeeper.sh /usr/local/zookeeper/bin/zkServer.sh restart</span><br></pre></td></tr></table></figure>
|
||||
|
||||
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta prompt_">#</span><span class="language-bash">启动zookeeper客户端,并连接zookeeper集群</span></span><br><span class="line">/usr/local/zookeeper/bin/zkCli.sh -server nn1:2181</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">可以简化为:</span></span><br><span class="line">zkCli.sh</span><br></pre></td></tr></table></figure>
|
||||
|
||||
</blockquote>
|
||||
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="tag"><<span class="name">tui-sticky</span> <span class="attr">:scrollTop</span>=<span class="string">"scrollTop"</span> <span class="attr">stickyHeight</span>=<span class="string">"104rpx"</span> <span class="attr">container</span>></span></span><br><span class="line"> <span class="comment"><!-- header start --></span></span><br><span class="line"> <span class="tag"><<span class="name">template</span> <span class="attr">v-slot:header</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">view</span> <span class="attr">class</span>=<span class="string">"sticky-item"</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">view</span> <span class="attr">class</span>=<span class="string">"setting"</span>></span>设置<span class="tag"></<span class="name">view</span>></span></span><br><span class="line"> <span class="tag"></<span class="name">view</span>></span></span><br><span class="line"> <span class="tag"></<span class="name">template</span>></span></span><br><span class="line"> <span class="comment"><!-- header end --></span></span><br><span class="line"> <span class="comment"><!--内容 start--></span></span><br><span class="line"> <span class="tag"><<span class="name">template</span> <span class="attr">v-slot:content</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">tui-list-view</span> <span class="attr">class</span>=<span class="string">"content"</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">tui-list-cell</span> <span class="attr">:arrow</span>=<span class="string">"false"</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">switch</span> <span class="attr">class</span>=<span class="string">'switch'</span> <span class="attr">checked</span> <span class="attr">color</span>=<span class="string">"#FFCC33"</span> /></span></span><br><span class="line"> <span class="tag"></<span class="name">tui-list-cell</span>></span></span><br><span class="line"> <span class="tag"></<span class="name">tui-list-view</span>></span></span><br><span class="line"> <span class="tag"></<span class="name">template</span>></span></span><br><span class="line"> <span class="comment"><!--内容 end--></span></span><br><span class="line"><span class="tag"></<span class="name">tui-sticky</span>></span></span><br><span class="line"></span><br><span class="line"><span class="tag"><<span class="name">script</span> <span class="attr">setup</span>></span><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript"> <span class="keyword">import</span> { ref } <span class="keyword">from</span> <span class="string">'vue'</span></span></span><br><span class="line"><span class="language-javascript"> <span class="keyword">import</span> { onPageScroll } <span class="keyword">from</span> <span class="string">'@dcloudio/uni-app'</span></span></span><br><span class="line"><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript"> <span class="comment">// 定义 scrollTop 响应式变量</span></span></span><br><span class="line"><span class="language-javascript"> <span class="keyword">const</span> scrollTop = <span class="title function_">ref</span>(<span class="number">0</span>)</span></span><br><span class="line"><span class="language-javascript"> <span class="comment">// 监听页面滚动事件</span></span></span><br><span class="line"><span class="language-javascript"> <span class="title function_">onPageScroll</span>(<span class="function">(<span class="params">e</span>) =></span> {</span></span><br><span class="line"><span class="language-javascript"> scrollTop.<span class="property">value</span> = e.<span class="property">scrollTop</span></span></span><br><span class="line"><span class="language-javascript"> })</span></span><br><span class="line"><span class="language-javascript"></span><span class="tag"></<span class="name">script</span>></span></span><br></pre></td></tr></table></figure>
|
||||
]]></content>
|
||||
<tags>
|
||||
<tag>uniapp</tag>
|
||||
</tags>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>Docker被墙,如何继续使用?</title>
|
||||
<url>/posts/47807.html</url>
|
||||
<content><![CDATA[<h2 id="Docker-Download"><a href="#Docker-Download" class="headerlink" title="Docker Download"></a>Docker Download</h2><blockquote>
|
||||
<p>自从docker官方仓库在中国大陆被墙后,docker的部署方式也发生了改变。<br>解决docker安装问题:<a href="https://github.com/shenjianZ/docker_installer">https://github.com/shenjianZ/docker_installer</a></p>
|
||||
</blockquote>
|
||||
<ol>
|
||||
<li><p>安装docker </p>
|
||||
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">sudo curl -fsSL https://gitee.com/tech-shrimp/docker_installer/releases/download/latest/linux.sh| bash -s docker --mirror Aliyun</span><br></pre></td></tr></table></figure>
|
||||
</li>
|
||||
<li><p>启动docker</p>
|
||||
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">sudo systemctl start docker</span><br></pre></td></tr></table></figure>
|
||||
</li>
|
||||
<li><p>设置开机自启</p>
|
||||
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">sudo systemctl enable docker</span><br></pre></td></tr></table></figure>
|
||||
</li>
|
||||
<li><p>Docker pull images</p>
|
||||
<blockquote>
|
||||
<p>将image下载到阿里云镜像仓库中<br>解决docker pull 镜像问题:<a href="https://github.com/shenjianZ/docker_image_pusher">https://github.com/shenjianZ/docker_image_pusher</a></p>
|
||||
</blockquote>
|
||||
<ol>
|
||||
<li><p><strong>登录阿里云镜像服务</strong> <a href="https://cr.console.aliyun.com/">https://cr.console.aliyun.com/</a>,</p>
|
||||
<p>启用个人实例,创建一个命名空间(<code>ALIYUN_NAME_SPACE</code>)</p>
|
||||
</li>
|
||||
<li><p>在<strong>访问凭证</strong> 可以看到账号 用户名(<code>ALIYUN_REGISTRY_USER</code>)</p>
|
||||
<p>密码(<code>ALIYUN_REGISTRY_PASSWORD</code>)</p>
|
||||
<p>仓库地址(<code>ALIYUN_REGISTRY</code>)</p>
|
||||
</li>
|
||||
<li><p><strong>启动Action</strong><br>进入您自己的项目,点击<code>Action</code>,启用<code>Github Action</code>功能</p>
|
||||
</li>
|
||||
<li><p><strong>配置环境变量</strong><br>进入Settings->Secret and variables->Actions->New Repository secret<br> 将上一步的四个值<br> <code>ALIYUN_NAME_SPACE</code>,</p>
|
||||
<p> <code> ALIYUN_REGISTRY_USER</code>,</p>
|
||||
<p> <code>ALIYUN_REGISTRY_PASSWORD</code>,</p>
|
||||
<p> <code>ALIYUN_REGISTRY</code><br> 配置成环境变量</p>
|
||||
</li>
|
||||
<li><p><strong>添加镜像</strong><br> 打开<code>images.txt</code>文件,添加你想要的镜像 可以加tag</p>
|
||||
</li>
|
||||
<li><p>使用镜像<br>回到阿里云,镜像仓库,点击任意镜像,可查看镜像状态。(可以改成公开,拉取镜像免登录)</p>
|
||||
</li>
|
||||
</ol>
|
||||
</li>
|
||||
</ol>
|
||||
]]></content>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>uniapp 开发</title>
|
||||
<url>/posts/58817.html</url>
|
||||
<content><![CDATA[<ul>
|
||||
<li><a href="../component1">uniapp component</a></li>
|
||||
</ul>
|
||||
]]></content>
|
||||
<tags>
|
||||
<tag>uniapp</tag>
|
||||
</tags>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>Hadoop集群搭建基础环境</title>
|
||||
@@ -269,6 +344,46 @@
|
||||
<li><p>将 <code>/home/hadoop/bin</code>添加到hadoop用户的环境变量,需要切换到<code>hadoop</code>用户</p>
|
||||
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="built_in">echo</span> <span class="string">'export PATH=$PATH:/home/hadoop/bin'</span> >> ~/.bashrc && <span class="built_in">source</span> ~/.bashrc</span><br><span class="line">scp_all.sh /home/hadoop/.bashrc /home/hadoop/</span><br><span class="line">ssh_all.sh <span class="built_in">source</span> ~/.bashrc </span><br></pre></td></tr></table></figure></li>
|
||||
</ul>
|
||||
]]></content>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>Hadoop集群Zookeeper配置</title>
|
||||
<url>/posts/61251.html</url>
|
||||
<content><![CDATA[<h3 id="Zookeeper脚本配置"><a href="#Zookeeper脚本配置" class="headerlink" title="Zookeeper脚本配置"></a>Zookeeper脚本配置</h3><ul>
|
||||
<li>拷贝ips<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="built_in">cp</span> ips ips_zookeeper</span><br></pre></td></tr></table></figure>
|
||||
修改为<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">nn1</span><br><span class="line">nn2</span><br><span class="line">nn3</span><br></pre></td></tr></table></figure></li>
|
||||
<li>拷贝三个脚本<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="built_in">cp</span> scp_all.sh scp_all_zookeeper.sh </span><br><span class="line"><span class="built_in">cp</span> ssh_all.sh ssh_all_zookeeper.sh </span><br><span class="line"><span class="built_in">cp</span> ssh_root.sh ssh_root_zookeeper.sh</span><br></pre></td></tr></table></figure></li>
|
||||
<li>修改脚本<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">vim scp_all_zookeeper.sh </span><br><span class="line">vim ssh_all_zookeeper.sh </span><br><span class="line">vim ssh_root_zookeeper.sh </span><br></pre></td></tr></table></figure>
|
||||
|
||||
将三个脚本中的ips改为ips_zookeeper</li>
|
||||
</ul>
|
||||
<h3 id="Zookeeper安装"><a href="#Zookeeper安装" class="headerlink" title="Zookeeper安装"></a>Zookeeper安装</h3><ul>
|
||||
<li>上传到<code>/tmp</code>目录下,解压 <figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="built_in">sudo</span> tar -zxvf /tmp/zookeeper-3.4.8.tar.gz -C /usr/local/</span><br><span class="line">scp -r /usr/local/zookeeper-3.4.8/ root@nn2:/usr/local/</span><br><span class="line">scp -r /usr/local/zookeeper-3.4.8/ root@nn3:/usr/local/</span><br><span class="line">ssh_root_zookeeper.sh <span class="built_in">chown</span> -R hadoop:hadoop /usr/local/zookeeper-3.4.8</span><br><span class="line">ssh_root_zookeeper.s <span class="built_in">ln</span> -s /usr/local/zookeeper-3.4.8/ /usr/local/zookeeper</span><br></pre></td></tr></table></figure></li>
|
||||
</ul>
|
||||
<h3 id="Zookeeper配置"><a href="#Zookeeper配置" class="headerlink" title="Zookeeper配置"></a>Zookeeper配置</h3><ul>
|
||||
<li><p>zoo.cfg配置</p>
|
||||
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="built_in">cd</span> /usr/local/zookeeper/conf/</span><br><span class="line"><span class="built_in">cp</span> zoo_sample.cfg zoo.cfg</span><br></pre></td></tr></table></figure>
|
||||
<p>然后<code>vim zoo.cfg</code>,修改如下:</p>
|
||||
<figure class="highlight properties"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 修改dataDir</span></span><br><span class="line"><span class="attr">dataDir</span>=<span class="string">/data/zookeeper</span></span><br><span class="line"><span class="comment"># 添加一下内容</span></span><br><span class="line"><span class="attr">server.1</span>=<span class="string">nn1:2888:3888 </span></span><br><span class="line"><span class="attr">server.2</span>=<span class="string">nn2:2888:3888 </span></span><br><span class="line"><span class="attr">server.3</span>=<span class="string">nn3:2888:3888</span></span><br></pre></td></tr></table></figure>
|
||||
<p>分发给nn2、nn3<br> <code>scp_all_zookeeper.sh /usr/local/zookeeper/conf/zoo.cfg /usr/local/zookeeper/conf/</code></p>
|
||||
</li>
|
||||
<li><p><code>zkEnv.sh</code>配置<br><code>vim /usr/local/zookeeper/bin/zkEnv.sh</code><br><img src="/../../../img/000001.png" alt="000001.png"><br>分发到nn2、nn3</p>
|
||||
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">scp_all_zookeeper.sh /usr/local/zookeeper/bin/zkEnv.sh /usr/local/zookeeper/bin/</span><br></pre></td></tr></table></figure></li>
|
||||
<li><p>创建zookeeper数据目录</p>
|
||||
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">ssh_root_zookeeper.sh <span class="built_in">mkdir</span> -p /data/zookeeper</span><br><span class="line">ssh_root_zookeeper.sh <span class="built_in">chown</span> -R hadoop:hadoop /data</span><br></pre></td></tr></table></figure></li>
|
||||
<li><p>创建myid文件</p>
|
||||
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">ssh nn1 <span class="string">'echo "1" > /data/zookeeper/myid'</span></span><br><span class="line">ssh nn2 <span class="string">'echo "2" > /data/zookeeper/myid'</span></span><br><span class="line">ssh nn3 <span class="string">'echo "3" > /data/zookeeper/myid'</span></span><br></pre></td></tr></table></figure></li>
|
||||
<li><p>配置Zookeeper环境变量</p>
|
||||
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 在其他所有主机也执行</span></span><br><span class="line"><span class="built_in">sudo</span> <span class="built_in">chown</span> -R hadoop:hadoop /etc/profile.d/myEnv.sh</span><br></pre></td></tr></table></figure>
|
||||
|
||||
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="built_in">echo</span> <span class="string">'export ZOOKEEPER_HOME=/usr/local/zookeeper'</span> >> /etc/profile.d/myEnv.sh</span><br><span class="line"><span class="built_in">echo</span> <span class="string">'export PATH=$PATH:$ZOOKEEPER_HOME/bin'</span> >> /etc/profile.d/myEnv.sh</span><br></pre></td></tr></table></figure>
|
||||
|
||||
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 分发到nn2、nn3</span></span><br><span class="line">scp_all_zookeeper.sh /etc/profile.d/myEnv.sh /etc/profile.d/</span><br><span class="line"><span class="comment"># source 环境变量</span></span><br><span class="line">ssh_all_zookeeper.sh <span class="built_in">source</span> /etc/profile</span><br></pre></td></tr></table></figure></li>
|
||||
</ul>
|
||||
<h3 id="Zookeeper的命令"><a href="#Zookeeper的命令" class="headerlink" title="Zookeeper的命令"></a>Zookeeper的命令</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="comment">#启动zk服务</span></span><br><span class="line">ssh_all_zookeeper.sh /usr/local/zookeeper/bin/zkServer.sh start</span><br><span class="line"><span class="comment">#查看每个机器ZK运行的状态</span></span><br><span class="line">ssh_all_zookeeper.sh /usr/local/zookeeper/bin/zkServer.sh status</span><br><span class="line"><span class="comment">#整体停止服务</span></span><br><span class="line">ssh_all_zookeeper.sh /usr/local/zookeeper/bin/zkServer.sh stop </span><br><span class="line"><span class="comment">#重启zk服务</span></span><br><span class="line">ssh_all_zookeeper.sh /usr/local/zookeeper/bin/zkServer.sh restart</span><br></pre></td></tr></table></figure>
|
||||
|
||||
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta prompt_">#</span><span class="language-bash">启动zookeeper客户端,并连接zookeeper集群</span></span><br><span class="line">/usr/local/zookeeper/bin/zkCli.sh -server nn1:2181</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">可以简化为:</span></span><br><span class="line">zkCli.sh</span><br></pre></td></tr></table></figure>
|
||||
|
||||
]]></content>
|
||||
</entry>
|
||||
<entry>
|
||||
@@ -318,80 +433,6 @@
|
||||
</ul>
|
||||
<h3 id="集群启动"><a href="#集群启动" class="headerlink" title="集群启动"></a>集群启动</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">start-dfs.sh</span><br></pre></td></tr></table></figure>]]></content>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>Docker被墙,如何继续使用?</title>
|
||||
<url>/posts/47807.html</url>
|
||||
<content><![CDATA[<h2 id="Docker-Download"><a href="#Docker-Download" class="headerlink" title="Docker Download"></a>Docker Download</h2><blockquote>
|
||||
<p>自从docker官方仓库在中国大陆被墙后,docker的部署方式也发生了改变。<br>解决docker安装问题:<a href="https://github.com/shenjianZ/docker_installer">https://github.com/shenjianZ/docker_installer</a></p>
|
||||
</blockquote>
|
||||
<ol>
|
||||
<li><p>安装docker </p>
|
||||
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">sudo curl -fsSL https://gitee.com/tech-shrimp/docker_installer/releases/download/latest/linux.sh| bash -s docker --mirror Aliyun</span><br></pre></td></tr></table></figure>
|
||||
</li>
|
||||
<li><p>启动docker</p>
|
||||
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">sudo systemctl start docker</span><br></pre></td></tr></table></figure>
|
||||
</li>
|
||||
<li><p>设置开机自启</p>
|
||||
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">sudo systemctl enable docker</span><br></pre></td></tr></table></figure>
|
||||
</li>
|
||||
<li><p>Docker pull images</p>
|
||||
<blockquote>
|
||||
<p>将image下载到阿里云镜像仓库中<br>解决docker pull 镜像问题:<a href="https://github.com/shenjianZ/docker_image_pusher">https://github.com/shenjianZ/docker_image_pusher</a></p>
|
||||
</blockquote>
|
||||
<ol>
|
||||
<li><p><strong>登录阿里云镜像服务</strong> <a href="https://cr.console.aliyun.com/">https://cr.console.aliyun.com/</a>,</p>
|
||||
<p>启用个人实例,创建一个命名空间(<code>ALIYUN_NAME_SPACE</code>)</p>
|
||||
</li>
|
||||
<li><p>在<strong>访问凭证</strong> 可以看到账号 用户名(<code>ALIYUN_REGISTRY_USER</code>)</p>
|
||||
<p>密码(<code>ALIYUN_REGISTRY_PASSWORD</code>)</p>
|
||||
<p>仓库地址(<code>ALIYUN_REGISTRY</code>)</p>
|
||||
</li>
|
||||
<li><p><strong>启动Action</strong><br>进入您自己的项目,点击<code>Action</code>,启用<code>Github Action</code>功能</p>
|
||||
</li>
|
||||
<li><p><strong>配置环境变量</strong><br>进入Settings->Secret and variables->Actions->New Repository secret<br> 将上一步的四个值<br> <code>ALIYUN_NAME_SPACE</code>,</p>
|
||||
<p> <code> ALIYUN_REGISTRY_USER</code>,</p>
|
||||
<p> <code>ALIYUN_REGISTRY_PASSWORD</code>,</p>
|
||||
<p> <code>ALIYUN_REGISTRY</code><br> 配置成环境变量</p>
|
||||
</li>
|
||||
<li><p><strong>添加镜像</strong><br> 打开<code>images.txt</code>文件,添加你想要的镜像 可以加tag</p>
|
||||
</li>
|
||||
<li><p>使用镜像<br>回到阿里云,镜像仓库,点击任意镜像,可查看镜像状态。(可以改成公开,拉取镜像免登录)</p>
|
||||
</li>
|
||||
</ol>
|
||||
</li>
|
||||
</ol>
|
||||
]]></content>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>组件使用</title>
|
||||
<url>/posts/33957.html</url>
|
||||
<content><![CDATA[<h3 id="组件自动导入"><a href="#组件自动导入" class="headerlink" title="组件自动导入"></a>组件自动导入</h3><figure class="highlight json"><table><tr><td class="code"><pre><span class="line"><span class="attr">"easycom"</span><span class="punctuation">:</span><span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"autoscan"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"custom"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"^tui-(.*)"</span><span class="punctuation">:</span> <span class="string">"@/components/thorui/tui-$1/tui-$1.vue"</span> <span class="comment">// 匹配components目录内的vue文件</span></span><br><span class="line"> <span class="punctuation">}</span></span><br><span class="line"><span class="punctuation">}</span></span><br></pre></td></tr></table></figure>
|
||||
|
||||
<h3 id="tui-sticky-吸顶容器"><a href="#tui-sticky-吸顶容器" class="headerlink" title="tui-sticky 吸顶容器"></a><code>tui-sticky 吸顶容器</code></h3><blockquote>
|
||||
<p>包含 以下 <code>tui</code> 组件 :</p>
|
||||
<ul>
|
||||
<li>tui-sticky</li>
|
||||
<li>tui-list-view</li>
|
||||
<li>tui-list-cell</li>
|
||||
</ul>
|
||||
</blockquote>
|
||||
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="tag"><<span class="name">tui-sticky</span> <span class="attr">:scrollTop</span>=<span class="string">"scrollTop"</span> <span class="attr">stickyHeight</span>=<span class="string">"104rpx"</span> <span class="attr">container</span>></span></span><br><span class="line"> <span class="comment"><!-- header start --></span></span><br><span class="line"> <span class="tag"><<span class="name">template</span> <span class="attr">v-slot:header</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">view</span> <span class="attr">class</span>=<span class="string">"sticky-item"</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">view</span> <span class="attr">class</span>=<span class="string">"setting"</span>></span>设置<span class="tag"></<span class="name">view</span>></span></span><br><span class="line"> <span class="tag"></<span class="name">view</span>></span></span><br><span class="line"> <span class="tag"></<span class="name">template</span>></span></span><br><span class="line"> <span class="comment"><!-- header end --></span></span><br><span class="line"> <span class="comment"><!--内容 start--></span></span><br><span class="line"> <span class="tag"><<span class="name">template</span> <span class="attr">v-slot:content</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">tui-list-view</span> <span class="attr">class</span>=<span class="string">"content"</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">tui-list-cell</span> <span class="attr">:arrow</span>=<span class="string">"false"</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">switch</span> <span class="attr">class</span>=<span class="string">'switch'</span> <span class="attr">checked</span> <span class="attr">color</span>=<span class="string">"#FFCC33"</span> /></span></span><br><span class="line"> <span class="tag"></<span class="name">tui-list-cell</span>></span></span><br><span class="line"> <span class="tag"></<span class="name">tui-list-view</span>></span></span><br><span class="line"> <span class="tag"></<span class="name">template</span>></span></span><br><span class="line"> <span class="comment"><!--内容 end--></span></span><br><span class="line"><span class="tag"></<span class="name">tui-sticky</span>></span></span><br><span class="line"></span><br><span class="line"><span class="tag"><<span class="name">script</span> <span class="attr">setup</span>></span><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript"> <span class="keyword">import</span> { ref } <span class="keyword">from</span> <span class="string">'vue'</span></span></span><br><span class="line"><span class="language-javascript"> <span class="keyword">import</span> { onPageScroll } <span class="keyword">from</span> <span class="string">'@dcloudio/uni-app'</span></span></span><br><span class="line"><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript"> <span class="comment">// 定义 scrollTop 响应式变量</span></span></span><br><span class="line"><span class="language-javascript"> <span class="keyword">const</span> scrollTop = <span class="title function_">ref</span>(<span class="number">0</span>)</span></span><br><span class="line"><span class="language-javascript"> <span class="comment">// 监听页面滚动事件</span></span></span><br><span class="line"><span class="language-javascript"> <span class="title function_">onPageScroll</span>(<span class="function">(<span class="params">e</span>) =></span> {</span></span><br><span class="line"><span class="language-javascript"> scrollTop.<span class="property">value</span> = e.<span class="property">scrollTop</span></span></span><br><span class="line"><span class="language-javascript"> })</span></span><br><span class="line"><span class="language-javascript"></span><span class="tag"></<span class="name">script</span>></span></span><br></pre></td></tr></table></figure>
|
||||
]]></content>
|
||||
<tags>
|
||||
<tag>uniapp</tag>
|
||||
</tags>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>uniapp 开发</title>
|
||||
<url>/posts/58817.html</url>
|
||||
<content><![CDATA[<ul>
|
||||
<li><a href="../component1">uniapp component</a></li>
|
||||
</ul>
|
||||
]]></content>
|
||||
<tags>
|
||||
<tag>uniapp</tag>
|
||||
</tags>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>无法访问外网?需要订阅代理服务?</title>
|
||||
<url>/posts/14011.html</url>
|
||||
|
||||
Reference in New Issue
Block a user