Calvin's Blog

圣诞特辑-交换礼物

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

C# Async Await 探究

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

汇编语言基础

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

基于 PowerShell 的 Web Server 简单实现

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

Docker 使用整理

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