<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LMFranK的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/LMFranK</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; LMFranK]]></copyright><item><title><![CDATA[容器引擎说明——Contianerd与Docker的区别以及Containerd换源操作]]></title><link>https://blog.youkuaiyun.com/LMFranK/article/details/141219783</link><guid>https://blog.youkuaiyun.com/LMFranK/article/details/141219783</guid><author>LMFranK</author><pubDate>Thu, 15 Aug 2024 13:32:14 +0800</pubDate><description><![CDATA[容器引擎是Kubernetes最重要的组件之一，负责管理镜像和容器的生命周期。Kubelet通过Container Runtime Interface (CRI) 与容器引擎交互，以管理镜像和容器。表1 容器引擎对比。]]></description><category></category></item><item><title><![CDATA[夜莺监控使用指南]]></title><link>https://blog.youkuaiyun.com/LMFranK/article/details/141024633</link><guid>https://blog.youkuaiyun.com/LMFranK/article/details/141024633</guid><author>LMFranK</author><pubDate>Thu, 08 Aug 2024 13:47:31 +0800</pubDate><description><![CDATA[本文用于解决在部署和应用夜莺监控中遇到的一些问题以及官方文档缺失的某些步骤可能会遇到的坑。自带的插件配置已经比较完善了，但是更改配置后，需要重启。这样在监控前端才能看到插件的监控数据。前端已经可以看到安装了。机器的相关监控信息。]]></description><category></category></item><item><title><![CDATA[使用containerd作为容器运行时拉取镜像的方法]]></title><link>https://blog.youkuaiyun.com/LMFranK/article/details/128205632</link><guid>https://blog.youkuaiyun.com/LMFranK/article/details/128205632</guid><author>LMFranK</author><pubDate>Tue, 06 Dec 2022 16:47:04 +0800</pubDate><description><![CDATA[k8s v1.24版本后默认使用containerd作为容器运行时，很多镜像库使用的是gcr.io，国内可能无法成功拉取。接下来将通过搭建Metrics Server来演示该情况的解决方法。]]></description><category></category></item><item><title><![CDATA[Linux端口是否运行，端口监听]]></title><link>https://blog.youkuaiyun.com/LMFranK/article/details/127869458</link><guid>https://blog.youkuaiyun.com/LMFranK/article/details/127869458</guid><author>LMFranK</author><pubDate>Tue, 15 Nov 2022 17:07:38 +0800</pubDate><description><![CDATA[Linux端口是否运行，端口监听]]></description><category></category></item><item><title><![CDATA[kubernetes中 kube-proxy 的代理模块]]></title><link>https://blog.youkuaiyun.com/LMFranK/article/details/127411313</link><guid>https://blog.youkuaiyun.com/LMFranK/article/details/127411313</guid><author>LMFranK</author><pubDate>Wed, 19 Oct 2022 16:54:45 +0800</pubDate><description><![CDATA[kube-proxy 代理模块的四种实现方案]]></description><category></category></item><item><title><![CDATA[【The connection to the server localhost:8080 was refused - did you specify the right host or port?】]]></title><link>https://blog.youkuaiyun.com/LMFranK/article/details/126701369</link><guid>https://blog.youkuaiyun.com/LMFranK/article/details/126701369</guid><author>LMFranK</author><pubDate>Mon, 05 Sep 2022 11:28:33 +0800</pubDate><description><![CDATA[k8s报错：The connection to the server localhost:8080 was refused - did you specify the right host or port?]]></description><category></category></item><item><title><![CDATA[记录minikube start无法进行的问题]]></title><link>https://blog.youkuaiyun.com/LMFranK/article/details/126161621</link><guid>https://blog.youkuaiyun.com/LMFranK/article/details/126161621</guid><author>LMFranK</author><pubDate>Thu, 04 Aug 2022 16:26:33 +0800</pubDate><description><![CDATA[记录minikube start无法进行的问题。]]></description><category></category></item><item><title><![CDATA[MySQL8.0新增用户及修改加密规则]]></title><link>https://blog.youkuaiyun.com/LMFranK/article/details/125672446</link><guid>https://blog.youkuaiyun.com/LMFranK/article/details/125672446</guid><author>LMFranK</author><pubDate>Fri, 08 Jul 2022 10:05:30 +0800</pubDate><description><![CDATA[Mysql8.0相较于5.6版本在新增用户以及加密规则都有更改，记录下踩坑]]></description><category></category></item><item><title><![CDATA[使用curl发送带有多个参数的请求遇到的问题]]></title><link>https://blog.youkuaiyun.com/LMFranK/article/details/117671244</link><guid>https://blog.youkuaiyun.com/LMFranK/article/details/117671244</guid><author>LMFranK</author><pubDate>Mon, 07 Jun 2021 18:31:58 +0800</pubDate><description><![CDATA[问题：
当我使用curl命令发送GET请求且带有多个参数
curl 127.0.0.1:8000/api/v1/tags?state=2&amp;name=1
这样写参数只能捕获到第一个，且会报错，：
'name' is not recognized as an internal or external command, operable program or batch file.
原因是cmd把&amp;识别为应用程序。
解决方法：
网上有些解决方法是使用\对&amp;进行转义，即：
curl 127.]]></description><category></category></item><item><title><![CDATA[golang性能调优工具pprof使用注意事项]]></title><link>https://blog.youkuaiyun.com/LMFranK/article/details/117445823</link><guid>https://blog.youkuaiyun.com/LMFranK/article/details/117445823</guid><author>LMFranK</author><pubDate>Tue, 01 Jun 2021 16:45:53 +0800</pubDate><description><![CDATA[前言
pprof是一个非常强大的golang性能调优工具，在win10环境下使用其web可视化功能时可能会出现问题，这里记录下解决方案。
问题

当我们输入web后应该会弹出web可使界面，但是如果没有安装过gvedit会报错：
Failed to execute dot. Is Graphviz installed? Error: exec: "dot": executable file not found in %PATH%
解决方案
gvedit官网：https://graphviz.gitlab.i]]></description><category></category></item><item><title><![CDATA[保存微信公众号付费文章至本地的方法]]></title><link>https://blog.youkuaiyun.com/LMFranK/article/details/112133640</link><guid>https://blog.youkuaiyun.com/LMFranK/article/details/112133640</guid><author>LMFranK</author><pubDate>Sun, 03 Jan 2021 13:01:55 +0800</pubDate><description><![CDATA[保存微信公众号付费文章至本地的方法
微信公众号付费文章完成付费后，并不能右键复制，所以很多优质文章无法保存。
本文将详述如何将微信公众号付费文章保存至本地。
工具：
1. fiddler
	用于抓包
2. https://zaixianwangyebianji.bmcx.com/
	用于将html文本转换为正常的文章

1、抓包
打开fiddler
工具——选项——HTTPS

寻找包含s?__biz=&amp;mid=字段的URL

寻找文章主体部分，可以参考查找&lt;div class="rich_m]]></description><category></category></item><item><title><![CDATA[Golang调度器GMP学习笔记（二）]]></title><link>https://blog.youkuaiyun.com/LMFranK/article/details/108515512</link><guid>https://blog.youkuaiyun.com/LMFranK/article/details/108515512</guid><author>LMFranK</author><pubDate>Thu, 10 Sep 2020 15:40:18 +0800</pubDate><description><![CDATA[调度器的设计策略


复用线程：避免频繁的创建、销毁线程


work stealing
当本线程无可运行的G时，尝试从其他线程绑定的P偷取G，而不是销毁线程


hand off
当本线程因为G进行系统调用阻塞时，线程释放绑定的P，把P转移给其他空闲的线程执行




利用并行
GOMAXPROCS


抢占
Go中，一个goroutine最多占用CPU 10ms，防止其他goroutine被饿死。其他语言的协程要等待一个协程主动让出CPU才执行下一个协程


全局G队列
在新的调度器中依然有全局G队列，]]></description><category></category></item><item><title><![CDATA[Golang调度器GMP学习笔记（一）]]></title><link>https://blog.youkuaiyun.com/LMFranK/article/details/108470969</link><guid>https://blog.youkuaiyun.com/LMFranK/article/details/108470969</guid><author>LMFranK</author><pubDate>Tue, 08 Sep 2020 16:08:52 +0800</pubDate><description><![CDATA[调度器的由来
单进程时代的问题


单一执行流程，计算机只能一个任务一个任务处理


进程阻塞所带来的CPU时间浪费


多进程、多线程的问题


设计变得复杂


进程/线程的数量越多，切换成本就越大


多线程伴随着同步竞争（锁、资源冲突等）




多进程、多线程的壁垒


高内存占用


高CPU调度消耗




协程的问题


N:1


无法利用多个CPU


出现阻塞的瓶颈




1:1


和多线程/多进程模型无异


切换协程成本代价反而变得昂贵




M:N


能够利用多核


过]]></description><category></category></item><item><title><![CDATA[Flask之前后端分离restful api学习笔记（二）—— 自定义错误返回、AOP思想解决全局错误返回]]></title><link>https://blog.youkuaiyun.com/LMFranK/article/details/108052298</link><guid>https://blog.youkuaiyun.com/LMFranK/article/details/108052298</guid><author>LMFranK</author><pubDate>Mon, 17 Aug 2020 11:24:25 +0800</pubDate><description><![CDATA[具体源码：https://github.com/LMFrank/Flask_api
自定义错误返回
Flask_api/app/libs/error.py
from flask import request, json
from werkzeug.exceptions import HTTPException


class APIException(HTTPException):
    code = 500
    msg = 'Sorry, we make a mistake!'
    error_]]></description><category></category></item><item><title><![CDATA[Flask之前后端分离restful api学习笔记（一）——Redprint]]></title><link>https://blog.youkuaiyun.com/LMFranK/article/details/108052257</link><guid>https://blog.youkuaiyun.com/LMFranK/article/details/108052257</guid><author>LMFranK</author><pubDate>Mon, 17 Aug 2020 11:23:16 +0800</pubDate><description><![CDATA[该项目参考https://coding.imooc.com/class/220.html，深入理解Flask前后端分离场景，在Flask框架基础上进行了一定的扩展来满足需求。
具体源码：https://github.com/LMFrank/Flask_api
Redpoint
Blueprint（蓝图）的缺点：


Blueprint本身不是用来拆分视图函数的，应该是用来模块级别的拆分


写路由时可能过于繁琐（v1/book/get和v1/book/delete）
当然，上述并不满足restful风格，但]]></description><category></category></item><item><title><![CDATA[在循环迭代器变量上使用goroutines所引发的问题]]></title><link>https://blog.youkuaiyun.com/LMFranK/article/details/107525259</link><guid>https://blog.youkuaiyun.com/LMFranK/article/details/107525259</guid><author>LMFranK</author><pubDate>Wed, 22 Jul 2020 22:38:51 +0800</pubDate><description><![CDATA[问题
在爬虫项目中，有一步开启了goroutine，并且内部使用了循环变量
/*
...
*/
for _, item := range result.Items {
	go func() {
    	e.ItemChan &lt;-item
	}()
}
/*
...
*/

我希望能够按照循环输出不同的item，但实际输出了很多相同的item，这就是在循环迭代器变量上使用goroutines所引发的问题
实例代码：
for i := 0; i &lt; 10; i++ {
	fmt.Println(i]]></description><category></category></item><item><title><![CDATA[使用requests时报错：requests.exceptions.SSLError: HTTPSConnectionPool]]></title><link>https://blog.youkuaiyun.com/LMFranK/article/details/107475246</link><guid>https://blog.youkuaiyun.com/LMFranK/article/details/107475246</guid><author>LMFranK</author><pubDate>Mon, 20 Jul 2020 22:02:50 +0800</pubDate><description><![CDATA[示例代码：
import requests
r = requests.get('https://www.12306.cn')
print(r.status_code)

报错：
requests.exceptions.SSLError: HTTPSConnectionPool(host='某某某网站', port=443): Max retries exceeded with url: /login/ (Caused by SSLError(SSLError("bad handshake: Error([(]]></description><category></category></item><item><title><![CDATA[Sql经典50题练习（未完）]]></title><link>https://blog.youkuaiyun.com/LMFranK/article/details/107095084</link><guid>https://blog.youkuaiyun.com/LMFranK/article/details/107095084</guid><author>LMFranK</author><pubDate>Thu, 02 Jul 2020 22:50:16 +0800</pubDate><description><![CDATA[文章目录Sql经典50题建表插入数据题目1. 简单查询2. 汇总分析3. 复杂查询
Sql经典50题

建表



学生表
CREATE TABLE student (
s_id VARCHAR(30),
s_name VARCHAR(30) NOT NULL,
s_birth date NOT NULL,
s_sex VARCHAR(10) NOT NULL,
PRIMARY KEY(s_id)
);



成绩表
CREATE TABLE score (
s_id VARCHAR(30),
c_id V]]></description><category></category></item><item><title><![CDATA[Redis总结（二）—— 缓存穿透、缓存击穿、缓存雪崩]]></title><link>https://blog.youkuaiyun.com/LMFranK/article/details/107073633</link><guid>https://blog.youkuaiyun.com/LMFranK/article/details/107073633</guid><author>LMFranK</author><pubDate>Wed, 01 Jul 2020 22:39:16 +0800</pubDate><description><![CDATA[文章目录1. 缓存穿透2. 缓存击穿3. 缓存雪崩4. 应对总结
1. 缓存穿透
同一时刻，大量的并发请求数据库中不存在的信息，他既不会命中缓存，也不会命中数据库，但是他会查找数据库
解决方案：


在接口层增加校验，比如用户鉴权校验，参数做校验，不合法的参数直接代码Return，比如：id 做基础校验，id &lt;=0的直接拦截等


当数据库查询结果为空时，数据也被缓存，但缓存有效期设置较短，以免影响正常数据的缓存


布隆过滤器：利用高效的数据结构和算法快速判断出你这个Key是否在数据库中存在，不存]]></description><category></category></item><item><title><![CDATA[Redis总结（四）—— 复制、哨兵]]></title><link>https://blog.youkuaiyun.com/LMFranK/article/details/107073586</link><guid>https://blog.youkuaiyun.com/LMFranK/article/details/107073586</guid><author>LMFranK</author><pubDate>Wed, 01 Jul 2020 22:36:18 +0800</pubDate><description><![CDATA[文章目录1. 复制2. 哨兵
1. 复制
Redis的复制功能分为同步(sync)和命令传播(command propagate)两个操作：


同步：将从服务器的数据库状态更新至主服务器当前所处的数据库状态


命令传播：在主服务器的数据库状态被修改， 导致主从服务器的数据库状态出现不一致时， 让主从服务器的数据库重新回到一致状态


复制过程：


从节点执行 slaveof [masterIP] [masterPort]，保存主节点信息。


从节点中的定时任务发现主节点信息，建立和主节点的 Sock]]></description><category></category></item></channel></rss>