想和代码谈谈
玮仔的个人博客
2022-06-08T01:28:50.136Z
https://blog.wayneshao.com/
玮仔Wayne
Hexo
C# 发展历史
https://blog.wayneshao.com/posts/46320.html
2022-02-22T09:01:59.000Z
2022-06-08T01:28:50.136Z
<p>本文是从<a href="https://docs.microsoft.com/zh-cn/dotnet/csharp/whats-new/csharp-version-history">官方文档</a>加以摘录和修改而来,在语言版本的节点加入了对应框架版本的主要特征,主要用作记录以备作者自己查阅。<br>本页介绍了 C# 语言每个主要版本的发展历史。 C# 团队将继续创新,以添加新功能。 可以在 GitHub 上的 <a href="https://github.com/dotnet/roslyn/blob/main/docs/Language%20Feature%20Status.md">dotnet/roslyn 存储库</a>上找到详细的语言功能状态,包括考虑在即将发布的版本中添加的功能。</p>
腾讯面试题:40 亿 QQ 号问题
https://blog.wayneshao.com/posts/46319.html
2022-02-15T06:18:09.000Z
2022-06-08T01:28:50.183Z
<p>这是一道来自前同事腾讯一面的面试题,题面如下:<br>有一个 Excel 文档,只有一个 Sheet,只有一列,这一列的内容是 QQ 号,一共 40 亿行。</p>
<ol>
<li>请问这个文档有多大?</li>
<li>如果是一个40亿行的 txt 文档呢?</li>
<li>请设计算法对 QQ 号码去重,相同的 QQ 号码仅保留一个,内存限制为 1G。
阿铺工作经历总结及未来规划
https://blog.wayneshao.com/posts/46318.html
2022-01-03T02:42:46.000Z
2022-06-08T01:28:50.185Z
<p>2021 年 10 月 30 日 17 时 42 分,我签下了交接证明和离职证明,为我在深圳市阿铺科技有限公司 690 天的工作画上了句号。<br>如今距离离职已经两月有余,今日为这段经历做一个注脚。</p>
Docker原理解析——镜像
https://blog.wayneshao.com/posts/46317.html
2021-10-01T11:03:51.000Z
2022-06-08T01:28:50.142Z
<p> 上一篇,我们主要分析了 Docker 沙盒机制的实现原理。但是光有沙盒还不够,Docker 为了实现“一致性”,引入了 Docker 镜像这一项伟大的创举,使得容器的传递和迁移更加简单,这一篇我们来用一个扒一扒 Docker 镜像的具体原理。</p>
Docker原理解析——沙盒
https://blog.wayneshao.com/posts/46316.html
2021-09-26T11:03:51.000Z
2022-06-08T01:28:50.142Z
<p> 上一篇,顺着云计算的发展史,我们看到了兴起于 PaaS 技术普及的容器技术,看到了容器技术通过容器镜像彻底解决了打包问题,按照连续思维,其实接下来应该讲讲 Docker 出现之后有哪些竞争对手,为什么 Docker 可以胜出,连带着让 Docker 几乎等同于容器技术本身,容器编排竞争中 Swarm 为什么输给了 Kubernetes,不过出于个人对整个云原生知识网络的感受,我觉得可以在这次开个分支,先不谈历史,讲一下 Docker 的实现原理。</p>
<p>本文主要是解释 Docker 沙盒的工作原理,回答诸如但不限于以下问题:</p>
<ul>
<li>为什么容器里只能跑“一个进程”?</li>
<li>容器和虚拟机有什么区别?</li>
</ul>
Docker?Docker!
https://blog.wayneshao.com/posts/46315.html
2021-09-22T12:41:45.000Z
2022-06-08T01:28:50.144Z
<p><strong>是时代选择了 Docker?还是 Docker 选择了时代?</strong></p>
<p>本文是云原生系列的第二篇文章,主题是回顾容器的发展史。<br>在 PaaS 林立的时代,为什么开发者最终选择了 Docker?Docker 又是以怎样姿态给与了 PaaS 世界“降维打击”,直接宣告了 PaaS 时代的结束呢?</p>
云原生是什么?
https://blog.wayneshao.com/posts/46314.html
2021-09-20T08:51:08.000Z
2022-06-08T01:28:50.162Z
<p> 最近几年,相信大家都越来越多的在各种场合各种平台听到过了“云原生”这个词。<br> 比如,关于云原生应用的“<a href="https://12factor.net/">Twelve-Factor App</a>”理论,现在已经是基础设施的现象级容器技术,几乎已经等同于容器本身的 Docker,还有容器编排技术 Kubernetes,以及 Kubernetes 背后的 CNCF(云原生计算基金会)。<br> 那么,什么才是“云原生”呢?什么样的系统架构才能被称为云原生架构呢?</p>
时隔两个月的B站宕机分析
https://blog.wayneshao.com/posts/46313.html
2021-09-14T09:01:24.000Z
2022-06-08T01:28:50.173Z
<p> 本次的描述的主体是指发生在 2021 年 7 月 13 日晚上 23 点左右的,无响应时间持续约半小时左右,完全恢复时间约8小时的宕机事件。<br> <strong>本文内容是作者依据网上公开信息和个人在当时的体验综合分析而来,精确的时间线可能存在一定程度的错漏,仅代表作者本人的观点,如有雷同,纯属巧合。</strong><br>
将可执行文件加入环境变量Path的新姿势——ShimGen
https://blog.wayneshao.com/posts/46312.html
2021-09-08T01:47:17.000Z
2022-06-08T01:28:50.172Z
<p> 日常使用 Windows 系统时,如果需要在命令行中直接使用程序,则需要把程序的目录加到环境变量 Path 中,而很多时候,程序目录其实会包含很多程序的依赖文件,或者其他不适合在 Path 中的文件,每当有这种需求的时候都添加一条新的路径到 Path 中也不大友好,那么,如何操作,才能优雅又简单呢?<br><img src="https://qiniucdn.wayneshao.com/%E5%B0%86%E5%8F%AF%E6%89%A7%E8%A1%8C%E6%96%87%E4%BB%B6%E5%8A%A0%E5%85%A5%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E7%9A%84%E6%96%B0%E5%A7%BF%E5%8A%BF%E2%80%94%E2%80%94/20210908101041646.png"><br> 下面我借鉴 Windows 平台的老牌包管理工具 <a href="https://docs.chocolatey.org/en-us/">Chocolatey</a> ,使用其内置的工具 <a href="https://github.com/chocolatey/shimgen">ShimGen</a> 来解决这个问题。</p>
关于几种字符串查找算法的对比分析
https://blog.wayneshao.com/posts/46311.html
2021-09-02T11:37:16.000Z
2022-06-08T01:28:50.167Z
<p><img src="https://qiniucdn.wayneshao.com/%E5%85%B3%E4%BA%8E%E5%87%A0%E7%A7%8D%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%9F%A5%E6%89%BE%E7%AE%97%E6%B3%95%E7%9A%84%E5%AF%B9%E6%AF%94%E5%88%86%E6%9E%90/20210902074534094.png"><br>昨日在新生命团队钉钉群中,看到大石头老师分享了他们实现的 IndexOf 算法,据说可以做到 O(1),第一反应是几乎不可能,了解之后得知是使用了 Boyer Moore 字符串搜索算法,据说这种算法常用于 IDE 工具的查找,比 KMP 更快,所以有了对各种常用字符串查找算法做一下 Benchmark 的想法。</p>
WSL2安装CentOS8等其他官方没有直接提供的Linux版本
https://blog.wayneshao.com/posts/46310.html
2021-08-17T07:23:00.000Z
2022-06-08T01:28:50.148Z
<p>鉴于 Microsoft 官方并没有提供官方的 CentOS8 的 WSL2 包,甚至 CentOS 的官方也并没有提供对应的包(Ubuntu 是微软和官方都有提供的),联想到 WSL2 和 Docker 在某种意义上是十分类似的,rootfs 都是核心,猜测可能会有方法使用官方提供标准包更广泛的 Docker 包的 rootfs 直接建立 WSL2 应用,经过摸索,发现可以使用 LxRunOffline 搞定,遂记录。</p>
Let's Encrypt 通配符证书自动续期大法
https://blog.wayneshao.com/posts/46309.html
2021-08-07T01:56:00.000Z
2022-06-08T01:28:50.145Z
<p>鉴于大部分免费SSL证书都是针对特定二级域名的,而 Let’s Encrypt 提供通配符证书,却需要每三个月续期一次,经过摸索,鼓捣出了一个方案,遂记录。</p>
Windows11系统下劫持notepad.exe的方法
https://blog.wayneshao.com/posts/46308.html
2021-07-06T07:15:19.000Z
2022-06-08T01:28:50.149Z
<p> 在微软终于对 nodepad.exe 和 mspaint.exe 的界面下手,把这两个系统程序重构为UWP程序后,原有的镜像劫持替换 notepad.exe 的方法就直接失效了,经过研究,找到了亲测可行的替换方法,特此分享。</p>
使用Git提交记录中的文件更改时间来修改文件的更改时间
https://blog.wayneshao.com/posts/9412.html
2021-07-05T16:24:21.000Z
2022-06-08T01:28:50.164Z
<p>在今天更新文章的时候,实验性的使用了按照更新时间排序,却发现所有文章的更新时间都是当天,推测是因为读取了文件的更新时间,而文件更新时间由于仓库刚刚新拉取而通通保持了当期时间,所以有了标题所示的需求。</p>
用户无感知更新
https://blog.wayneshao.com/posts/9411.html
2021-06-24T08:24:21.000Z
2022-06-08T01:28:50.179Z
<p>公司目前的整个CI体系都是使用了GitLab的全家桶,基本已经趋于完善,目前最大的问题是每次发版都需要停机处理,用户感知明显,所以多数时候发版的时间都集中在晚上十点以后,故而决定设法解决这个问题。</p>
【代码仓库】命名风格转化
https://blog.wayneshao.com/posts/9410.html
2021-02-21T13:24:21.000Z
2021-02-21T14:06:56.682Z
<p>一个关于将名称在不同命名风格之间转换的帮助类</p>
使用 GitLab CI 进行 hexo 的持续集成
https://blog.wayneshao.com/posts/34874.html
2019-12-28T11:46:20.000Z
2022-06-08T01:28:50.164Z
<p>其实很早之前我就意识到,把博客的源码不加掩饰的直接托管在 Github 是一件颇为危险的事,配置文件中配置的各种平台的 key 随时有可能被窃取,只是一直懒得动手,今天得闲把整个流程捋顺了,遂记录一下。</p>
Git 和 GitFolw 的一些总结
https://blog.wayneshao.com/posts/40738.html
2019-12-19T11:16:03.000Z
2022-06-08T01:28:50.166Z
<p>总结一下 Git 日常开发使用常用指令,以及一个常见的 GitFlow 实践模型。</p>
GitLab 非 Docker .NET Core CI/CD搭建
https://blog.wayneshao.com/posts/33677.html
2019-12-17T11:26:52.000Z
2022-06-08T01:28:50.145Z
<p>公司的 GitLab 服务部署完了,但是领导出于性能方面的考虑,希望测试和生产环境不用 Docker 来部署,遂搭建了一套不基于Docker 的 GitLab CI/CD 负载均衡测试环境。</p>
CentOS8 使用 Docker 部署 GitLab-CE
https://blog.wayneshao.com/posts/51370.html
2019-12-13T12:36:10.000Z
2022-06-08T01:28:50.139Z
<h2 id="最近需要在公司的CentOS7服务器上部署一套GitLab服务,打算采用Docker来完成,记录一下部署过程。"><a href="#最近需要在公司的CentOS7服务器上部署一套GitLab服务,打算采用Docker来完成,记录一下部署过程。" class="headerlink" title="最近需要在公司的CentOS7服务器上部署一套GitLab服务,打算采用Docker来完成,记录一下部署过程。"></a>最近需要在公司的CentOS7服务器上部署一套GitLab服务,打算采用Docker来完成,记录一下部署过程。</h2><p>2021-07-05<br>更新:</p>
<ol>
<li>系统升级为CentOS8</li>
<li>因为GitLab新版本直接支持了中文且GitLab-CE-CN一直没有更新,故而镜像换成了GitLab-CE</li>
<li>redis 升级为最新版</li>
<li>实践中发现默认源安装的pip版本安装docker-compose时必然出错,故而加入更新pip步骤</li>
<li>实际使用过程中发现docker网段在阿里云非常容易和企业内网网段冲突,故而新建网络时增加指定生僻网段