首页
Calvin's Blog
Cancel

Docker 是如何运行的

之前有篇博客介绍了 docker 的一些常用使用命令,这篇博客来详细研究一下 docker 是如何运行的。 我们可以使用 docker exec 在这个容器(container)内来执行一个进程。 或者说,在这个容器内,我们是 root,这里的容器是什么呢,在 linux 里面,容器实现的方法就是 namespace . 什么是 namespace 我们查询一下官方文档 https:...

圣诞特辑-交换礼物

圣诞节到了,Team里面的小伙伴组织了一个交换礼物的活动,我也奉命接下了写个小工具的任务。 需求 需求很简单,就是将 人员名单 和 礼物清单 排成两列,然后随机摇出新的匹对,这样每个人就得到了新的礼物。 算法 核心算法其实很简单,就是将数组进行随机乱序排列,代码如下 从后往前遍历,随机一个前面的数的坐标和当前数交换,所有位置的数字都交换完成 function shuffle(...

C# Async Await 探究

这篇文章源于同事问我的一个问题, async await 会不会创建新的线程? 当时直观的感觉是会创建,觉得 async await 只是语法糖,当前线程没有被 block,而后台肯定需要做事,所以必然会创建新的线程去执行任务才对。 然而查了文档,发现官方文档明确说明: async 和 await 关键字不会创建其他线程。 因为异步方法不会在其自身线程上运行,因此它不需要多线程。 参考...

解决端口占用问题

端口被占用是指当你的可执行程序运行时需要在某个端口侦听时,发现该端口被其他程序给占用了,导致该应用程序无法执行。 如: jekyll 默认需要在端口 4000 侦听,当被占用的时候,会显示错误 Permission denied - bind for 127.0.0.1:4000 本地的 4000 端口被占用。 解决方法 查看端口的占用情况 # 查看端口占用...

汇编语言基础

最近查一些文章,涉及到了汇编语言,所以翻出一些资料复习一下。 我们平常学习的编程语言,如 C, C++, Java, C#,Python等等都是高级语言。我们也都知道,机器只能理解执行0101的代码,那高级语言如何转换为机器语言的? 其实高级语言是通过编译器转换为机器语言的,在编译过程中间会生成一个过渡性的语言,叫汇编语言,高级语言屏蔽了实现的细节,如对内存的操作,而汇编语言是低级语言,...

在 Ubuntu 上安装 Nginx 并支持 PHP

最近整理了一下博客系统,迁移到了Jekyll模板,发现Apache2服务器不支持中文路径,研究了一番没有找到解决方法,测试了nginx可以默认支持中文路径,遂整理一下,把 Apache2 换成了 Nginx 本文所述的步骤在 Ubuntu 18.04 上测试通过。 安装 Nginx 使用 apt-get 安装 nginx # 更新 APT 源 sudo apt-get updat...

基于 PowerShell 的 Web Server 简单实现

最近项目中有个需求,就是现有很多已经存在的PowerShell脚本,但是命令行的方式不是很方便使用,希望能集成到一个Web界面,简化用户操作难度。 经过简单调研,发现可以使用 HttpListener 创建一个对象在本地侦听在自对应端口,就可以实现一个简单的Web服务器,具体实现如下。 简单实现 先创建一个POC,代码如下,保存到 webserver.ps1 $http = [System...

Bash 踩坑指南

最近项目逐步迁移到AWS平台上,相关的代码管理和自动化部署也由TFS迁移到GitHub+Jenkins方案上,为此写了不少的bash脚本用来自动化部署和测试,也踩了相当多的坑,在此总结一下。 Shell的种类 和Windows平台不一样,在Linux系统下,有多种Shell,所以同样的脚本,不同的解释器执行结果可能是不一样的,下面列举了常见的Shell种类。 sh : sh...

Docker 使用整理

Docker 简介 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。 我们需要将 Docker 和 虚拟机区分一下,虚拟机是模拟了整套的操作系统环境,可以在操作系统里面运行另外一个操作系统。 而 Docker 并没有模拟完整的操作系统,而是对进程进行隔离。 或者说,在正常的进程外面套了一个保护层,对于容器里面的进程来说,他接触到的各种资源都是虚拟,从而实现了于底层...

给 Sublime Text 创建一个 markdeep 插件

本文介绍如何创建一个Sublime Text 3的插件,并用这个插件自动预览markdown文件 markdeep 简介 markdeep 是一个轻巧的markdown解析器,只需要一行代码就可以直接解析本地的markdown文件。 使用方法是将md文件改名为html结尾,如 test.md 改成 test.md.html,并且在文件最后面增加如下代码,双击用浏览器打开即可 &l...