- 博客(46)
- 资源 (1)
- 收藏
- 关注
原创 搭建 Docker CE 源码编写和调试环境
查看 Docker-CE 源码当我们首次打开源码,在默认环境下 VSCode 会提示项目太大,不能有效追踪文件变化。这时需要修改 Linux 的内核参数,使用下面的命令修改就可以sudo suecho 'fs.inotify.max_user_watches=524288' > /etc/sysctl.conf sysctl -p使用 root 用户登录 Vscode Remote Dev由于 Docker 需要使用内核的功能,engine 需要使用 root 用于运行,而之前在 开
2021-05-02 23:46:18 1754 2
原创 拉取和编译 Docker-CE
Tips: 下面操作均在 开篇:搞定 Go 开发环境 中创建的 Linux 虚拟机中进行Docker-CE 的 cli 和 engineDocker-CE 的仓库在 20.10 版本后会被归档不再维护,原来的 Docker-CE 会被拆分成 docker/cli 和 moby/moby 两个项目。docker/cli 项目就是 Docker-CE 的命令行工具部分,moby/moby 仓库就是原来的 Docker Engine 部分。我们选择最新的 docker/cli 和 moby/moby 源.
2021-04-30 22:23:33 836 3
原创 开篇:搞定 Go 开发环境
开门见山,搞定一个合乎心意的 Go 开发环境一定要包括一个简单的 Linux 开发环境来适配生产环境,一个称心的编辑器/IDE来编写代码,一个 Go 代理屏蔽糟糕的国内网络环境。在开篇我会使用 Vagrant 来创建一个简单的 Linux 虚拟机,然后使用 VS Code 作为编辑器,使用 Go Proxy 来对 Go 进行加速代理,最终完成 Go Hello world 的编写使用 Vagrant 搞定 Linux 虚拟机Linux 可以说是世界上使用最广泛的服务器平台,众多服务器应用和工具也是围绕
2021-04-29 01:45:53 642
原创 浅析 Kubernetes 服务
Service API 是 Kubernetes 的组成部分,它是一种抽象用于通过网络暴露 Pod 组合。每个 Service 对象定义一个逻辑组的端点(通常这些端点是 Pod)以及如何才能访问这些 Pod 的策略。下面会以几个角度来阐述一下 Kubernetes 的服务。
2023-04-29 01:26:53 883
原创 浅析 Kubernetes 驱逐
Kubernetes 驱逐 Pod 的方式主要分为主动驱逐和被动驱逐,在官方文档中有三节有介绍 Pod 的驱逐,分别是 污点和容忍度,节点压力驱逐 和 API发起的驱逐
2023-04-28 17:22:39 1275
原创 阿里云 ECS 搭建 k8s 高可用集群踩坑记录
之前使用过 minikube 搭建过 k8s 玩具集群,最近想尝试一下搭建高可用集群。由于高可用集群至少需要三台 2C2G 的机器,一开始尝试使用本机的虚拟机搭建,但后面搭建过程中三台较高配的虚拟机高负载运行导致电脑死机。后面把目光转向云服务。阿里云和华为云都提供抢占式按时付费的 ECS,而腾讯云则没有,比较一下价格阿里云总体价格最便宜,所以就决定以阿里云抢占式 ECS 为基础尝试搭建一个 k8s 高可用集群。总体架构总体的架构就是在一个专用网络上 ECS 的互通来搭建集群。原本以为这个和在本地使用
2022-02-20 01:28:52 1979
原创 了解 Go 单元测试
单元测试单元测试是指对软件中的最小可测试单元进行检查和验证。这个最小可测试单元在实际编码过程中可大可小。一个完整的项目一定是包括了完善的单元测试。像 Docker 这种项目自然也包括了一批的单元测试代码。单元测试其实很简单,就是分两步,第一步执行代码获取输出,第二步检验输出是否符合预期。使用伪码表示如下result = func(arg1, arg2, arg3)assert.equal(result, '预期结果') # 如果 result 为 '预期结果' 那么测试通过。单元测试是一个功能
2021-05-20 00:40:26 411 2
原创 《微服务设计》阅读总结
《微服务设计》由 ThoughtWorks 的技术专家 Sam Newman 编写,整书 200 多页,从 “是什么”,“为什么”,“怎么样”阐述了如何正确的在业务中落地微服务。虽然微服务是如今很火的一个概念,但是并不是所有场景都适合落地微服务。书中是这样定义微服务的——微服务就是一些协同的小而自治的服务,所谓的小而自治就是指当修改一个服务并对其进行部署的时候不会影响其他的服务。使用微服务的架构...
2020-03-12 18:09:19 298
原创 使用 minikube 搭建 Kubernetes 实验环境
使用 minikube 搭建 Kubernetes 实验环境个人操作笔记,仅供参考系统环境及应用版本Debian 9Kubernetes 1.17.0Docker 18.09.3minikube 1.6.2前言最近由于在家闲的慌,就找点事做,准备学习一下 K8S。K8S 这种运维技术最重要的就是实验环境,官方也推荐使用 minikube 搭建 K8S 的实验环境,但是由于国...
2020-01-29 00:26:57 720
原创 理解 Docker 网络(番外) -- 《Docker 源码分析》勘误
理解 Docker 网络(番外) – 《Docker 源码分析》勘误前言本来打算这篇文章是分析 Docker Overlay 网络是如何建立以及如何手动实现 Docker 的跨主机通信的。但是在完成了上一篇文章之后,打算找一些文章或者书籍印证我的文章是否正确。这时看了一下案头的《Docker 源码分析》,翻到 Docker 容器网络部分,然后快速过了一遍,发现了有一段和我的观点不太一致。有问...
2019-11-17 22:26:45 431 5
翻译 8.8.1 通过 EXPLAIN 来优化查询
通过 EXPLAIN 来优化查询EXPLAIN 语句会提供 MySQL 如何执行查询的信息:EXPLAIN 可以对 SELECT,DELETE,INSERT,和 UPDATE 语句进行分析。当对一个可分析的语句进行 EXPLAIN 操作时,MySQL 会显示优化器的查询执行计划,也就是 MySQL 会分析出如何处理这条语句,包括不同表之间时如何联合的。关于如何使用 EXPLAIN 来...
2019-11-17 22:20:55 184
翻译 8.8 理解查询执行计划
8.8 理解查询执行计划8.8.1 使用 EXPLAIN 优化查询8.8.2 EXPLAIN 输出格式8.8.3 扩展 EXPLAIN 输出格式8.8.4 获取命名连接的执行计划信息8.8.5 评估查询性能MySQL 优化器会根据表结构,列结构,索引,以及 WHERE 子句中的条件,通过各种技术来优化 SQL 执行时的执行路径。对一个大表进行查询的时候并不会遍历所有行;多表联合查询的时...
2019-11-17 22:19:01 201
翻译 8.1 优化概述
8.1 优化概述数据库性能由多种因素决定,在数据库层面的因素有表结构,查询语句,和数据库配置等,这些因素会影响到 CPU 执行周期,I/O 等硬件因素,一般来说一个好的查询语句应该通过减少 CPU 执行周期和 I/O 操作来获得尽可能好的性能。对于新手来说处理数据库优化的问题,首先应该从数据库软件高级规则和指南入手,这时候只需要通过计时来衡量数据库的性能;如果你已经是个数据库优化方面的高手,你...
2019-11-17 22:16:58 171
原创 理解 Docker 网络(一) -- Docker 对 宿主机网络环境的影响
简介通过 Docker 容器可以实现文件系统, 网络和内核的隔离。 Docker 网络是使用 Docker 的一个很重要的知识点。 在不了解 Docker 网络的情况下使用 Docker 部署应用可能会出现 Docker 容器跨过宿主机防火墙(iptables)的限制直接与取得外网访问权的情况。 在这篇文章中将会分析安装 Docker 对宿主机网络设备和 iptables 两个重要的网络环境的...
2019-03-17 23:45:48 6361 5
原创 VirtualBox 使用心得——文件互联和网络互联
VirtualBox 使用心得——文件互联和网络互联前言VirtualBox 虚拟机和主机的网络互联VirtualBox 虚拟机和主机的文件互联Step1. 安装增强插件Step2. 选择需要共享的文件夹Step3. 修改权限总结前言VirtualBox 是一个非常流行的免费虚拟机软件,最近在学习 Docker 的时候,发现 Docker For Windows 需要 Windows10 Pr...
2018-11-11 00:26:52 484
原创 使用 Webpack 搭建前端 Typescript 模块化开发最小开发环境
使用 Webpack 搭建前端 Typescript 模块化开发最小开发环境前言题中所说的的Typescript最小开发环境是指能够模块化开发Web前端所需的最少组件组成的开发环境,所谓的模块化开发就是能够在分文件的情况下进行模块的分割和整合。虽然在不借助 Webpack 的情况下可以使用 Typescript 自带 namespace 实现模块化的开发,但相比于使用 import 和...
2018-08-12 17:56:36 1996 1
原创 回调地狱拯救者 —— 以MySql的 async/await 改造举例
回调地狱拯救者 —— 以MySql的 async/await 改造举例前言相信很多使用过Node的人对于回调地狱非常熟悉,回调地狱就是回调函数的不断嵌套造成的,回调地狱造成的后果就是代码的可维护性以及可读性降低。为了解决回调地狱的问题,社区提出了很多解决方案,一开始由Promise的方案,能够把回调函数抽出调用者来减少回调的层级,但并没有解决回调函数所带来的代码阅读困难的问题。这时候提...
2018-07-06 00:17:59 2375
翻译 Vue.js破浪——使用 Typescript 编写简单的单页面组件
Vue.js 破浪——使用 Typescript 编写简单的单页面组件 原文 TypeScript-Vue-Starter译序 已经很久没有更新博客了,最近在翻译 ASP.Net Core 的文档,又写了一下 JS ,发现写完强类型的 C# 后觉得 IDE 对弱类型的 JS 的自动补全简直天差地别。听说 TypeScript 在 Js 的基础上加入了类型系统,能够让 IDE 实现更好的自动补
2017-12-27 16:40:10 5734 1
翻译 ASP.NET Core 和 EF Core 系列教程——迁移
ASP.NET Core 和 EF Core 系列教程——迁移(4 / 10)作者:Tom Dykstra和Rick AndersonContoso 大学示例 web 应用程序演示如何使用 Entity Framework Core 和 Visual Studio 创建 ASP.NET Core MVC web 应用程序。 想要获取有关系列教程的信息,请参阅第一个教程。在本教程中,你会使用 EF C
2017-12-26 21:16:26 13111
翻译 ASP.NET Core 和 EF Core 系列教程——排序、筛选、分页和分组
ASP.NET Core 和 EF Core 系列教程——排序、筛选、分页和分组(3 / 10)作者:Tom Dykstra和Rick AndersonContoso 大学示例 web 应用程序演示如何使用 Entity Framework Core 和 Visual Studio 创建 ASP.NET Core MVC web 应用程序。 想要获取有关系列教程的信息,请参阅第一个教程。在前面的教程
2017-12-26 21:15:48 18648
翻译 ASP.NET Core 和 EF Core系列教程——CRUD
ASP.NET Core 和 Entity Framework Core系列教程——CRUD (2 / 10) CRUD 为创建、读取、更新、删除的英文首字母的缩写 作者:Tom Dykstra和Rick AndersonContoso 大学示例 web 应用程序演示了如何使用 Entity Framework Core 和 Visual Studio 创建 ASP.NET Core
2017-12-26 21:15:16 6956
翻译 ASP.NET Core 和 EF Core 系列教程——入门
ASP.NET Core 和 Entity Framework Core 系列教程——入门 (1 / 10)作者:Tom Dykstra和Rick Anderson此处提供了本教程的 Razor 页版本。 Razor 页版本更容易体现和覆盖 EF 的功能。 我们建议你学习本教程的 Razor 页版本。Contoso 大学示例 web 应用程序演示如何使用 Entity Framework (EF)
2017-12-26 21:14:14 41394 9
翻译 ASP.NET Core 和 Entity Framework 入门序
ASP.NET Core 和 Entity Framework 入门序序 .Net Core 估计大家都有所听闻,可以简单理解为 .Net Framework 的跨平台版本,接下来我会对 MSDN 上的一系列文章进行翻译,主要是 MSDN 官网上关于 ASP.NET Core 和 Entity Framework Core 的大多数文章都是机翻,翻译质量堪忧。所以我就着手翻译了一些入门文章,带领大
2017-12-26 21:13:24 729
原创 div+background-image和img标签的选择
标签和div+background-image的选择前言 一般情况下,标签和div+background-image都能在块级元素中显示图片,之前就在想,这两种方式有什么区别。通过这两天的实践,逐渐摸清了他们之间的区别以及适用情况,在这篇文章中总结他们的使用要点。区别浏览器上下文的区别 使用div+background-image实现图片显示的时候,该块级元素的上下文为普通的块级上下文而使用im
2017-10-17 18:52:27 7091
原创 JavaScript面向对象程序设计——属性
JavaScript面向对象程序设计——属性前言 在前两篇文章中详细介绍了在JavaScript语言下进行面向对象编程的 构建对象 和 继承 的实现步骤。这篇文章将会详细介绍JavaScript面向对象设计中属性定义相关的问题。这篇文章也是《JavaScript面向对象精要》的阅读总结属性的类型 在JavaScript中属性主要分为数据属性和访问器属性,数据属性就是最常用的,如var perso
2017-10-12 13:01:51 373
原创 前端面试拾遗——this、类型检测、es6
前端面试拾遗——this、类型检测、es6前言 上一篇文章主要讲了我到某公司面试前端岗位时跟CSS有关的部分,这一篇文章将会总结一下面试过程中跟JS有关的部分,JS部分面试官主要问到了JS的类型以及ES6新增的类型,如何改变函数中this指针的指向,以及说一下平常使用过的ES6新特性。下面会有我面试后查阅资料后的相关解答。this相关 关于this的详细介绍可以查看 MDN this 。在谈如何改变
2017-09-18 15:54:02 1315
原创 前端面试拾遗——CSS选择器、Flex布局、position
前端面试拾遗——CSS选择器、Flex布局、position前言 在某公司的前端面试中,被问到了关于CSS选择器跟flex布局相关的问题,在这篇文章中整理一下相关知识点。CSS选择器 关于CSS选择器跟属性的所有详细信息都可以在MDN CSS参考中获取,CSS选择器的主要分类有基本选择器 元素选择器类选择器ID选择器通配选择器属性选择器组合选择器 相邻兄弟选择器普通兄弟选择器子
2017-09-17 15:53:14 5497
原创 浅谈JavaScript应用重构
浅谈JavaScript应用重构前言 最近一直在做一个多屏互动的弹幕播放器的开发工作,其中“HTML使用Canvas实现弹幕功能”和“HTML5全屏模式下隐藏默认视频控制栏”是开发过程遇到的部分问题的解决方案。最近差不多把整个网页部分的代码粗糙的完成了。完整的前端页面包括点播功能,弹幕播放功能和Ajax通信功能。在一开始编写代码的过程中只是简单的代码堆砌,抽象程度不足,代码冗余度很高。基本上这两年做
2017-09-06 15:06:39 323
翻译 深度学习基础——神经网络起步
深度学习基础——神经网络起步 原文地址Fundamentals of Deep Learning – Starting with Artificial Neural Network前言 深度学习和神经网络如今驱动着计算机科学的进步,两者拥有强大的通过数据和环境学习获取信息的能力,这也导致他们是机器学习领域的首选手段。 深度学习和神经网络是自动驾驶,图像识别和推荐系统等产品的核心。而且,他们
2017-08-16 13:49:32 2423
原创 [Vue.js破浪]——单文件组件(一)
Vue.js破浪——Vue-Cli生成工程的目录结构详解前言 单文件组件在大型的应用中能够有很好的模块化效果,使用单页面应用我们肯定离不开构建系统,其中最常用的构建系统就是Webpack和Browserify。在这篇文章中将会解析使用vue-cli生成的文件来学习关于webpack构建系统的相关知识。通过对webpack构建系统的学习,为后面真正使用单文件组件开发应用做铺垫。目录解析 我们首先看一下
2017-08-14 17:29:40 2079
原创 Vue.js破浪
Vue.js破浪前言 在Vue.js启航一系列文章中通过英雄编辑器这一个例子出发,学会了Vue.js的基本概念,包括Vue的指令,组件间的通信,Vue-Router的使用和状态管理等,能够做出简单的单页面应用,相当的有成就感。在这新一系列文章中我们将会接触到更深入的主题,例如单文件组件,渲染机制,服务端渲染,单元测试等。主题单文件组件 在之前我们都是直接在JS中编写组件,模板数据都是一起编写的。这样
2017-08-14 17:28:58 464
原创 [Vue.js启航]——使用Vuex进行状态管理
Vue.js启航——英雄编辑器(五)简介 这一篇博客将是这一系列博客的最终篇,主要探讨的是Vuex插件的使用。先介绍一下Vuex。Vuex是Vue框架的状态管理插件,采用集中式存储管理应用的所有组件的状态。状态通俗来讲就是组件中的数据,状态的管理也就是各个组件中数据的管理。当你的应用足够简单的话,我们可以使用中央事件总线的方式来实现简单的管理,具体可以参考 [Vue.js启航]——多组件应用构建 ,
2017-08-04 23:05:59 2440
翻译 HTML5全屏模式下隐藏默认视频控制栏
HTML5 在全屏模式下隐藏默认视频控制栏 原文 Hiding Native HTML5 Video Controls in Full-Screen Mode前言 如果你曾经使用过HTML5的video,那么你肯定有想过为什么你仅仅向DOM添加了一个 <video> 标签却会多出了一堆的播放控制按钮浏览器以video标签子DOM的形式添加到渲染的文档中。这些播放控制元素也是DOM的一部分,但你
2017-07-28 23:51:45 16534 5
原创 最大子序列和求解过程
最大子序列和求解过程问题来历 该问题最早出现在布朗大学Grenander面对的一个模式匹配的问题,问题的最初形式是给定nxn的实数数组,求出矩形子数组的最大总和。最大综合子数组是数字图像中某种特定模式的最大似然估计量,因为二维问题求解需要太多时间,所以将它简化为一维问题从而深入了解其结构。这个问题的解决经历了四种复杂度的算法最终得到解决,一开始的算法的时间复杂度为 O(n3)O(n^3),第一次改良
2017-07-27 23:20:34 752
原创 JavaScript严格模式约束规则
JavaScript严格模式约束规则前言 当初刚学JavaScript的时候看的入门书曾经有一个概念就是可以在一定的条件下使用 "use strict" 进入严格模式,但并没有阐明严格模式和非严格模式的不同,最近在看到有人分享的前端面试题中有一道题目就是阐述一下严格模式的规则,特地找了一下资料,并做了一下总结。 严格模式可以在函数内部进行较为严格的全局或局部的错误条件检测,可以提早知道代码中存在
2017-07-22 21:37:40 647
原创 JavaScript面向对象程序设计——继承
JavaScript面向对象程序设计——继承简介 面向对象程序设计的三个特点是封装性,继承性和多态性,上一篇 已经详述了封装性的实现方法,这一篇博客将会详述继承性的实现方法。ES6中的继承 ES6中通过语法糖实现了class关键字,能够很轻易的支持面向对象的特性。现在浏览器对于ES6的支持一般通过Babel翻译成ES5然后再交予浏览器执行,我们先来看看Babel文档中ES6实现继承的例子。class
2017-07-06 23:34:15 514
原创 HTML使用Canvas实现弹幕功能
HTML使用canvas实现弹幕功能简介 最近在做大作业的时候需要做一个弹幕播放器。借鉴了一下别人的源码自己重新实现了一个,演示如下主要的功能有发送弹幕设置弹幕的颜色,速度和类型显示弹幕已知缺陷:不能全屏canvas没有做自适应没有自定义播放器控件没有根据播放时间显示相应的弹幕弹幕不能实现悬停已知的缺陷以后会进行改进。网上能找到的弹幕播放器的源码一般只做了滚动的弹幕而没有做静止的
2017-06-21 01:34:05 2503 1
原创 JavaScript面向对象程序设计——对象
JavaScript面向对象程序设计——对象前言 JaveScript虽然说是支持面向对象的编程方法,但是JavaScript的面向对象在其他的强类型的面向对象语言(如Java,C#)甚至在其他弱类型的脚本语言(如Python)其面向对象的特性可以用捉襟见肘来形容,需要通过一定的技巧才能勉强实现其他面向对象语言的特性。通过这一系列文章来介绍一下JavaScript面向对象的编程方法,也供我复习一下原
2017-06-18 16:13:52 1174 1
原创 [Vue.js启航]——Vue-Router的使用
Vue.js启航——英雄编辑器(四)前言这系列的博客已经超过一个月没有更新了,其中也有原因吧,首先是学业上各种大作业的中期审查,实验等压得几乎没有时间;然后是在学习Vue路由的时候遇到了一些问题一直都没有解决。最近实验做完了,大作业近期该交的也交完了,再静下心来解决一下,没想到茅塞顿开,问题都迎刃而解了,所以就开始写这篇博客了。简介上一篇文章写到了多组件应用的构建,使用的都是全局组件而且没有发生
2017-06-11 15:18:29 853
原创 [Vue.js启航]——多组件应用构建
Vue.js启航——英雄编辑器(三 )简介 上一篇文章写到了主从结构的英雄编辑器,其中大概用到了两个组件,英雄列表组件和英雄详情组件,但我们并没有把他们分开来,这一篇文章我们就来将他们解构,把一整个组件分成英雄列表组件和英雄详情组件。多组件的英雄编辑器 组件复用是软件工程第一种重要的思想,通过组件设计使得组件具有良好的复用性,可以减少重复性代码,降低测试难度。多组件的英雄编辑器和主从结构的英雄编辑器
2017-05-06 13:45:20 769
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人