技术实践、生活片段,和那些还没想明白的事。
0 前言 作为 Golang 中最常见的并发控制组件之一,Context 也是我在日常工作中经常的工具。而 Context 对于许多初次接触 Golang 的开发者来说,并没有类似协程、指针、接口等更为广泛常规的概念那样容易理解和上手。 本文将简单描述 Context 的概念和功能,并讲解其基本使用方式,旨在让读者能通过这篇文章认识 Context,掌握 C
0 背景 这是一篇用来发泄情绪的文章,被一个愚蠢的问题折腾了好久。 不想看背景的可直接阅读 1 问题 章节,或 2.3 演示 。 情况是这样的,最近接手了一个 Windows 的 Golang 项目,它是一个多节点运行的服务。由于公司信息安全的特殊规定,我们必须将编译后的程序放到固定的远程虚拟机中运行测试,而不能在我们的本机上调试。有过经历的读者们可能知道,
0 前言 JSON 是很多开发者工作中经常使用的数据格式,一般多用于配置文件或网络数据传递之类的场景。并且由于其简单易懂,可读性较好等特点,JSON 也成为了整个 IT 世界几乎最常见的格式之一了。对于这样的东西,Golang 和其他很多语言一样,也提供了标准库级别的支持,也就是 encoding/json 。 就像 JSON 本身简单易懂一样,用于操作 J
0 序 最近读到了一篇国外老哥写的关于他是如何爱上 Rust 的文章( Go's Errors: How I Learned to Love Rust )。其实从标题就能看出,这篇文章似乎又是在吐槽 Go 的错误处理。实际上也是这样没错,作者从异常错误处理的角度,从 Python 到 Go 再到 Rust,表达了他更喜欢 Rust 的原因。 巧了,我工作生涯
Rust 开源游戏引擎 Bevy 初探以及移动小球游戏实现 0 前言(可略过) 前段时间照常浏览 Rust Weekly 邮件的时候,看到了 Bevy 发布 0.13.0 版本的消息,总觉得这个库似乎在哪儿见过,进去一看,原来是我很早以前就在 github 上 star 了的一款开源游戏引擎。 作为一个曾经把游戏开发当作理想的人(然而现在干的工作和游戏开发一
0 知识背景 在进入正文前,先对 WaitGroup 及其相关背景知识做个简单的介绍,这里主要是 WaitGroup 的基本使用,以及系统信号量的基础知识。对这些比较熟悉的小伙伴可以直接跳过这一节。 0.1 WaitGroup WaitGroup 是 Golang 中最常见的并发控制技术之一,它的作用我们可以简单类比为其他语言中多线程并发控制中的 join(
0 Claude 是什么 在最近几个月的 AI 热潮中,ChatGPT 可谓风头无两,而且也正是 ChatGPT 3.x 以及 4.0 的横空出世,才掀起了这波全球 AI 的滔天巨浪。 然而 ChatGPT 由于各种原因(主要是网络环境和手机验证),对于普通人来说上手门槛非常高,尤其在本月初 OpenAI 开始了更严格的风控策略后,入门的难度又提升了一大截。
0 前言 你是否在使用 Go 的过程中因为类型转换的繁琐而苦恼过? 你是否觉得 Go 语言中的类型断言可能会 panic 而对自己写的代码有那么一点点不放心? 如果你有过如上体验,并且想要找到一个合适的解决方案的话,那么本文推荐的一个用于类型转换的第三方库 cast 绝对是一个值得尝试的选择。 1 cast cast 是一个极为简洁的第三方库,github
0 起源 就在今年9月份,我负责的部门平台项目发布了一个新版本,该版本同时上线了一个新功能,简单说有点类似定时任务。头一天一切正常,但第二天出现了极少数任务没有正常执行(已经暂停的任务继续执行,正常的任务反而没有执行)的情况。 问题的现象让我和另一个同事的第一反应是定时任务执行的逻辑出现了问题。但在我们耗费了大量的时间去DEBUG、测试后,发现问题的根本并不
0. 概要 二进制系列文章已经写到第五篇了,不出意外的话,这应该会是二进制系列的最后一篇。我们先来罗列一下前四篇: 谈谈二进制(一) 谈谈二进制(二)——四则运算 谈谈二进制(三)——位运算及其应用 谈谈二进制(四)——原码、补码、反码、移码 其中,在上一篇里,我们认识了四种机器数,它们各司其职,但总的来说,有一个特点,就是在对计算机里的正负号做文章。今天介
0. 概要 老规矩,先回顾一下前面三篇文章我们都讲了什么。 首先,第一篇 【谈谈二进制(一)】 我们从进制本身的意义开始,认识了二进制和其他进制,然后完成了十进制和其他各种进制之间的转换。 接着,第二篇 【谈谈二进制(二)——四则运算】 中,我们则通过十进制的四则运算原理,推导出二进制的四则运算。 上一篇 【谈谈二进制(三)——位运算及其应用】 ,我们将二进
0. 概要 前两篇文章我们了解了二进制的基本原理( 谈谈二进制(一) )以及二进制的四则运算( 谈谈二进制(二) ),本篇我们一起来看看二进制的位运算。 先来看一下有哪些位运算: 上表中列出了我们编程语言中的所有位运算符以及它们对应的规则。在前面的文章中我们讲过,二进制的 1 和 0 对应了电子元器件中的高低电平,或是开和关,而实际上, 1 和 0 也可以代
0. 序 上一篇**【 谈谈二进制(一) 】**中,我们花了巨量的篇幅,从最基本的计数开始,认识了各种进制的原理,接着通过对我们最熟悉的十进制的分解组合,推演了其他进制和十进制之间的相互转换过程。 本篇将继续深入二进制,来探究一下二进制的四则运算过程,也就是加、减、乘、除,看看二进制和十进制在计算上又有多少差异。 1. 加法 1.1 整数 加法一般是四则运算
0. 从一个BUG说起 (注:没有编程经验或者只想从二进制看起的朋友,可以跳过这一节,直接看 1. 认识二进制 章节。) 若干年前,在我开发的一个项目中,出现了一个奇怪的问题,用一段代码抽象出来大概是这个样子: i = 0 while i < 2: if i == 0.9: print(0.9) elif i == 1.2: print(1.2) el
前言 本文介绍的方法基于 CentOS 7.2 + Python 2.7 + Django 1.9 的环境搭建,但实际上,该方法在 CentOS 7.4 + Python 3.6 + Django 1.11 下依然可用,我的个人网站就是基于后者搭建的。 环境搭建 Django 1.9 Nginx 1.8(RPM包安装) uWSGI 2.0.12 Django
站主序 这篇文章我最早发表在```SegmentDefault```上,传送门在这儿: CentOS-6.5源码编译安装Python2.7.9 。现在自己的网站也搭起来了,就打算把这文章移到这里,给大家分享。 前言 ```CentOS 6.5```自带的```Python```版本为```2.6```,当时在公司,需要搭建一个```Python 2.7```