<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Korbin的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/MrKorbin</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; MrKorbin]]></copyright><item><title><![CDATA[React 前端面试基础问题]]></title><link>https://blog.youkuaiyun.com/MrKorbin/article/details/141225546</link><guid>https://blog.youkuaiyun.com/MrKorbin/article/details/141225546</guid><author>MrKorbin</author><pubDate>Thu, 15 Aug 2024 16:27:19 +0800</pubDate><description><![CDATA[答案：-1，React 状态更新是异步的，改变值后不会立即重新渲染，而是放入一个队列中，在同一个渲染周期内，相同 state 做 setState 操作时为了避免重复渲染会做一定优化处理，非函数式调用时是最后一个操作覆盖前面的，函数式时为了传递最新的值，会依次调用队列中的 set 操作。深拷贝是指完全复制原始数据，包括所有层级的对象和数组，修改复制后的数据不会影响到原始数据。在 JavaScript 中，任务队列（Task Queue）是一个用于管理待执行任务的队列，它是实现异步执行的重要机制之一。]]></description><category></category></item><item><title><![CDATA[Grafana 可视化监控和告警]]></title><link>https://blog.youkuaiyun.com/MrKorbin/article/details/141167945</link><guid>https://blog.youkuaiyun.com/MrKorbin/article/details/141167945</guid><author>MrKorbin</author><pubDate>Tue, 13 Aug 2024 16:48:50 +0800</pubDate><description><![CDATA[什么是 Grafana？Grafana 是一个监控仪表系统，专门用于监控指标数据的图形化展示，支持多种数据来源，Prometheus 便是其中一种。它看上去是这样的：[外链图片转存中…(img-yvS46ihY-1723538656269)]Grafana 还带有告警功能，在系统出现问题时通知你。且告警规则可在监控图形上直接配置！官方文档：https://grafana.com/docs/grafana/latest/fundamentals/dashboards-overview/]]></description><category></category></item><item><title><![CDATA[Prometheus 监控指标采集]]></title><link>https://blog.youkuaiyun.com/MrKorbin/article/details/141167890</link><guid>https://blog.youkuaiyun.com/MrKorbin/article/details/141167890</guid><author>MrKorbin</author><pubDate>Tue, 13 Aug 2024 16:44:01 +0800</pubDate><description><![CDATA[在现代分布式系统和云原生环境中，为了确保复杂的分布式系统和服务的高可用性、可靠性和性能，通常采用实时可视化监控和分析，实现故障快速响应、资源优化和安全保障，从而提升用户满意度和运营效率。在目前主流的解决方案中，Prometheus和Grafana是两个使用 Go 开发的强大开源工具，通常一起使用来实现全面的监控和可视化系统。其中Prometheus负责采集和存储监控对象的时序数据。]]></description><category></category></item><item><title><![CDATA[K3S 和 Rancher 安装部署&配置]]></title><link>https://blog.youkuaiyun.com/MrKorbin/article/details/140877739</link><guid>https://blog.youkuaiyun.com/MrKorbin/article/details/140877739</guid><author>MrKorbin</author><pubDate>Fri, 02 Aug 2024 18:24:36 +0800</pubDate><description><![CDATA[K3s 是轻量级的 Kubernetes。K3s 易于安装，仅需要 Kubernetes 内存的一半，所有组件都在一个小于 100 MB 的二进制文件中。K3s 是一个完全兼容的 Kubernetes 发行版，具有一些增强功能。]]></description><category></category></item><item><title><![CDATA[React 划选评论或高亮功能实现]]></title><link>https://blog.youkuaiyun.com/MrKorbin/article/details/140877713</link><guid>https://blog.youkuaiyun.com/MrKorbin/article/details/140877713</guid><author>MrKorbin</author><pubDate>Fri, 02 Aug 2024 18:23:24 +0800</pubDate><description><![CDATA[最近负责了一个对文本划选批注和高亮的功能开发，大致类似钉钉文档的划选评论功能：第一眼看到这个需求时瞬间压力就拉满了😭，这种程度的交互，对于我这半道出家前端的来说，显得有点复杂 …进一步还了解到Selection下的Range至此至少划选改变样式的功能就能实现了，当我欣喜于这功能也没想象中的那么难时，就发现了事情似乎并不简单。]]></description><category></category></item><item><title><![CDATA[JavaScript 的 Range 和 DocumentFragment]]></title><link>https://blog.youkuaiyun.com/MrKorbin/article/details/140877696</link><guid>https://blog.youkuaiyun.com/MrKorbin/article/details/140877696</guid><author>MrKorbin</author><pubDate>Fri, 02 Aug 2024 18:22:43 +0800</pubDate><description><![CDATA[Range对象表示文档中节点和文本节点的一部分。它允许你创建、操作和检测文档中的任意部分。文档：https://developer.mozilla.org/en-US/docs/Web/API/Range。]]></description><category></category></item><item><title><![CDATA[Golang 性能分析]]></title><link>https://blog.youkuaiyun.com/MrKorbin/article/details/140877673</link><guid>https://blog.youkuaiyun.com/MrKorbin/article/details/140877673</guid><author>MrKorbin</author><pubDate>Fri, 02 Aug 2024 18:21:26 +0800</pubDate><description><![CDATA[性能分析是一种评估软件系统性能的方法，它涉及测量和评估程序或系统的运行效率，包括但不限于处理速度、资源使用效率、响应时间等。当你的系统存在性能瓶颈，想要优化代码、提高系统的整体性能和响应速度的时候，就需要做性能分析了。]]></description><category></category></item><item><title><![CDATA[Pulsar - 新一代消息中间件引擎]]></title><link>https://blog.youkuaiyun.com/MrKorbin/article/details/140877586</link><guid>https://blog.youkuaiyun.com/MrKorbin/article/details/140877586</guid><author>MrKorbin</author><pubDate>Fri, 02 Aug 2024 18:17:12 +0800</pubDate><description><![CDATA[Pulsar是一个多租户、高性能的服务器到服务器消息传递解决方案。]]></description><category></category></item><item><title><![CDATA[Green Sock | GSAP 动画库]]></title><link>https://blog.youkuaiyun.com/MrKorbin/article/details/135368807</link><guid>https://blog.youkuaiyun.com/MrKorbin/article/details/135368807</guid><author>MrKorbin</author><pubDate>Wed, 03 Jan 2024 17:20:00 +0800</pubDate><description><![CDATA[**GreenSock Animation Platform（GSAP）**是一个业界知名的动画工具套件，在超过1100万个网站上使用，其中包括大量获奖网站！ 您可以使用GSAP在任何框架中制作几乎任何JavaScript可以触及的动画。无论你是想制作UI、SVG、Three.js还是React组件的动画，GSAP都能满足你的需求。核心库包含创建快速、跨浏览器友好的动画所需的一切。除了核心，还有各种插件。你不需要学习它们来开始，但它们可以帮助解决特定的动画挑战，如基于滚动的动画，可拖动的交互，变形等。]]></description><category></category></item><item><title><![CDATA[LRU 算法]]></title><link>https://blog.youkuaiyun.com/MrKorbin/article/details/132169834</link><guid>https://blog.youkuaiyun.com/MrKorbin/article/details/132169834</guid><author>MrKorbin</author><pubDate>Tue, 08 Aug 2023 16:23:44 +0800</pubDate><description><![CDATA[上述我们的容器最大容量的单位是键值对的个数，这是不太合理的，因为实际中我们应该限制的是缓存占用大小，因此可以将最大限制改成byte为单位，而且需要对淘汰算法进行优化，这时候我们可能超出容量后，需要淘汰的不止是一个缓存，可以是多个，直到当前已用内存小于最大内存。这样做的目的是更好地适应特定访问模式，对于某些场景可以提供更好的性能。那么该数据结构就是当存储队列到达上限时，清除的是最久未被访问的节点，该节点一般认为是最可能无用的节点，保留下来的是最近都有使用过的节点，因此可以实现对"有用"数据的最大程度保留。]]></description><category></category></item><item><title><![CDATA[etcd]]></title><link>https://blog.youkuaiyun.com/MrKorbin/article/details/132103845</link><guid>https://blog.youkuaiyun.com/MrKorbin/article/details/132103845</guid><author>MrKorbin</author><pubDate>Fri, 04 Aug 2023 14:38:23 +0800</pubDate><description><![CDATA[民间文档：http://www.topgoer.com/%E6%95%B0%E6%8D%AE%E5%BA%93%E6%93%8D%E4%BD%9C/go%E6%93%8D%E4%BD%9Cetcd/%E6%93%8D%E4%BD%9Cetcd.html官方文档：https://github.com/etcd-io/etcd/blob/main/client/v3/README.md。]]></description><category></category></item><item><title><![CDATA[oh my zsh及其插件安装]]></title><link>https://blog.youkuaiyun.com/MrKorbin/article/details/124777136</link><guid>https://blog.youkuaiyun.com/MrKorbin/article/details/124777136</guid><author>MrKorbin</author><pubDate>Sun, 15 May 2022 01:00:25 +0800</pubDate><description><![CDATA[1.oh my zsh安装
oh-my-zsh依赖于zsh，需要先安装zsh:
yum -y install zsh


如果当前的shell不是zsh，输入chsh后，输入/bin/zsh，回车。

安装oh my zsh，执行官方的脚本：
zsh -c "$(curl -fsSL https://gitee.com/whereabouts-fork/ohmyzsh/blob/master/tools/install.sh)"

若失败则手动安装：
git clone https://gitee.com/]]></description><category></category></item><item><title><![CDATA[发布npm命令行脚本]]></title><link>https://blog.youkuaiyun.com/MrKorbin/article/details/121182433</link><guid>https://blog.youkuaiyun.com/MrKorbin/article/details/121182433</guid><author>MrKorbin</author><pubDate>Sat, 06 Nov 2021 18:03:19 +0800</pubDate><description><![CDATA[1.初始化npm项目
npm init -y

执行命令后会生成package.json文件，文件中有一些配置项，根据实际情况修改：

name：包的名字，默认是这个文件夹的名字，要求不能是npm上重名的。
version：包的版本，默认是1.0.0
description：包描述
main：入口文件，默认是index.js
keyword：包的关键词，用于npm上搜索。
author：作者
license：开源协议

2.编写脚本
入口文件index.js，需要在第一行添加 #!/usr/bin/env ]]></description><category></category></item><item><title><![CDATA[Node.js中使用ES6报错]]></title><link>https://blog.youkuaiyun.com/MrKorbin/article/details/121179906</link><guid>https://blog.youkuaiyun.com/MrKorbin/article/details/121179906</guid><author>MrKorbin</author><pubDate>Sat, 06 Nov 2021 15:35:26 +0800</pubDate><description><![CDATA[背景
index.js：
import hello from './cpoy';
hello();

cpoy/index.js：
const hello = () =&gt; {
    console.log("hello world!")
}
export default hello

在 package.json 中添加了"type": "module"配置。
报错
Directory import xxxx is not supported resolving ES modules importe]]></description><category></category></item><item><title><![CDATA[Axios使用封装和跨域]]></title><link>https://blog.youkuaiyun.com/MrKorbin/article/details/120591240</link><guid>https://blog.youkuaiyun.com/MrKorbin/article/details/120591240</guid><author>MrKorbin</author><pubDate>Sun, 03 Oct 2021 03:34:57 +0800</pubDate><description><![CDATA[1.安装
npm install axios --save
# 或者
yarn add axios

2.请求方式
Get、Delete请求：
这类请求也称作query请求。第一种方式为拼接url的形式传参：
axios.get('/user?username=korbin&amp;password=12345')
.then(function (res) {
    console.log(res);
}).catch(function (err) {
    console.log(err);
});
]]></description><category></category></item><item><title><![CDATA[DDD领域驱动Golang实践]]></title><link>https://blog.youkuaiyun.com/MrKorbin/article/details/120213465</link><guid>https://blog.youkuaiyun.com/MrKorbin/article/details/120213465</guid><author>MrKorbin</author><pubDate>Fri, 10 Sep 2021 01:06:40 +0800</pubDate><description><![CDATA[web-template-ddd
Github地址：https://github.com/whereabouts/web-template-ddd
1.简述
基于DDD架构的Web服务快速构建模板。

DDD领域驱动设计是一个很宽泛的方法论，涉及到的概念也很多，DDD并没有给出标准的代码模型，不同的人可能会有不同理解。
该模板项目尝试通过不断的理解领域驱动，结合DDD的思想和规范，构建出一个代码目录结构，将DDD落地。

2.DDD分层架构
分层架构有一个重要的原则：每层只能与位于其下方的层发生耦合。具体又]]></description><category></category></item><item><title><![CDATA[React中ESLint对a标签href属性警告]]></title><link>https://blog.youkuaiyun.com/MrKorbin/article/details/120170249</link><guid>https://blog.youkuaiyun.com/MrKorbin/article/details/120170249</guid><author>MrKorbin</author><pubDate>Wed, 08 Sep 2021 00:25:18 +0800</pubDate><description><![CDATA[问题描述
在React中如果使用了a标签，但是又没有给a标签的href属性赋值有效的链接地址，则ESLint会警告，看着很烦。
The href attribute is required for an anchor to be keyboard accessible. Provide a valid, navigable address as the href value. If you cannot provide an href, but still need the element to resem]]></description><category></category></item><item><title><![CDATA[protobuf中的omitempty字段处理]]></title><link>https://blog.youkuaiyun.com/MrKorbin/article/details/120142325</link><guid>https://blog.youkuaiyun.com/MrKorbin/article/details/120142325</guid><author>MrKorbin</author><pubDate>Mon, 06 Sep 2021 19:07:35 +0800</pubDate><description><![CDATA[问题描述
proto文件自动生成.pb.go文件的代码中tag上会自动加上omitempty字段，如下：
type RoleUser struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id        string       `protobuf:"bytes,1,opt,name=id,proto3" json]]></description><category></category></item><item><title><![CDATA[React 笔记]]></title><link>https://blog.youkuaiyun.com/MrKorbin/article/details/119962979</link><guid>https://blog.youkuaiyun.com/MrKorbin/article/details/119962979</guid><author>MrKorbin</author><pubDate>Tue, 31 Aug 2021 23:26:02 +0800</pubDate><description><![CDATA[文章目录简介虚拟DOMReact脚手架函数式组件类式组件组件3大核心属性React路由setState生命周期React UI组件库 AntdLazyLoadFragmentContextRedux组件通信方式总结Component优化Error boundary(错误边界)使用自定义配置文件CSS IN JS
持续补充中…
简介

由Facebook开源的，用于动态构建用户界面的 JavaScript 库(只关注于视图)。具有如下特点：
　
1.声明式编码
2.组件化编码
3.React Native 编]]></description><category></category></item><item><title><![CDATA[yarn快速上手]]></title><link>https://blog.youkuaiyun.com/MrKorbin/article/details/119969392</link><guid>https://blog.youkuaiyun.com/MrKorbin/article/details/119969392</guid><author>MrKorbin</author><pubDate>Sat, 28 Aug 2021 16:55:15 +0800</pubDate><description><![CDATA[1.介绍
在 Node.js 生态系统中，依赖通常安装在项目的 node_modules 文件夹中。然而，这个文件的结构和实际依赖树可能有所区别，因为重复的依赖可以合并到一起。npm 客户端把依赖安装到 node_modules 目录的过程具有不确定性。这意味着当依赖的安装顺序不同时，node_modules 目录的结构可能会发生变化。这种差异可能会导致类似 “我的电脑上可以运行，别人的电脑上不行” （即：完整可运行的项目上传到 git 上，别人 Pull 下来以后，npm install 会报错） 的情况]]></description><category></category></item></channel></rss>