国内镜像源

国内的网络问题,经常需要替换软件本身的更新源,加快软件的下载速度。这里记录下常用国内镜像源。

搭建DevOps模式的项目

在后端的开发领域,各类开发框架都已经很多,在开发项目时可以根据不同的需要和需求选择合适的开发框架。然而在需要开发一个完善的工程化项目时,仅仅一个后端开发框架是不够的,还面临着在对开发项目的快速迭代中进行测试,部署,监控等问题。为了解决这些问题,DevOps的开发模式应运而生。 基于个人对DevOps的理解,搭建了一个基于Gin的开源后端项目来实践下DevOps的各个概念:https://github.com/wanghaoxi3000/advproject。 DevOps是一个宽泛的概念,这个项目也只是抛砖引玉,在测试环境下串联起各个DevOps的基础工具,存在的不足欢迎指出,一起学习和交流。

[转载]深度解密Go语言之 scheduler

转载至 https://www.cnblogs.com/qcrao-2018/p/11442998.html, 一篇很不错讲解 Golang scheduler 的文章。 在 Go 语言里,go func 是并发的单元,chan 是协调并发单元的机制,panic 和 recover 是出错处理的机制,而 defer 是神来之笔,大大简化了出错的管理。 Goroutines 在同一个用户空间里同时独立执行 functions,channels 则用于 goroutines 间的通信和同步访问控制。

使用Gin+WebSocket在HTML中无插件播放RTSP

项目地址:gin-rtsp 在后台的开发中遇到了对接显示摄像头视频流的需求。目前获取海康及大华等主流的摄像头的视频流使用的基本都是RTSP协议。不过HTML页面并不能直接播放RTSP协议的视频流,查询了一番各种网页播放RTSP的资料,有如下的一些方案:

在ubuntu18.04上部署kubernetes

为了有个k8s的测试环境,使用了三台ubuntu18的系统搭建了一套k8s测试环境,主要参考了和我一步步部署 kubernetes 集群这个项目,这个项目对于如何一步步搭建起k8s集群环境已经很详细了,不过对于ubuntu 18.04的环境还是有一些小坑,这里记录一下。

基于Go-micro微服务的秒杀系统

前段时间了解到了Go-micro这一微服务开发框架,并基于此框架的教程搭建了一套码头货运管理微服务系统。这次使用Micro来设计和实现了一套更接地气的秒杀系统。 对于秒杀,以及抽奖、抢红包这类系统的最大特点便是在某个时间点会瞬间涌入大量的用户,给系统造成瞬间高于平时千百倍的并发压力。针对这样的特点在设计微服务时就需要考虑一系列的措施来保障系统在高并发场景时可以稳定运行。 完整代码地址

初探微服务

日常工作中一直在用 Django 这类 MVC 架构的框架来搭建后台。然而早已对微服务架构闻名已久,早想有机会实践一下,靠着搜索引擎找到这篇不错的教程:Golang 微服务教程,总结了微服务开发、测试到部署的完整过程。跟着初步实践了下微服务的构建过程,过了下微服务的瘾,在这里总结下。

使用持续集成系统解放生产力

程序猿除了希望写好代码,一定也想着自己的项目可以如何快速的迭代上线,从而可以专注的完成代码的编写,减少繁杂的运维等工作。例如完成一项功能的开发后,推送到 Git 等代码管理系统后,剩下的测试、部署、上线等工作可以交给一个系统来自动化完成,这时便可以靠持续集成系统了。这里记录下我使用老牌的 Jenkins 持续集成系统来帮助自己完成的工作。

Go 基础知识点

已经专职做了很久的 Python 开发,不过心中对当初带我入行 C 也一直有些留恋。Go 语言的设计和定位和 C 语言有很多共同之处,也融入了很多现代的设计理念,写起来很有当初写 C 的亲切感。准备好好学习下这门语言,这里记录下一些个人觉得重要的基础知识点,随着不断深入再补充。

全能型 uWSGI 配置

在进行 Python web 开发时,使用 Django、Flask 等框架开发完毕后,部署时通常需要选择一个支持 wsgi 协议的 Web 服务器程序。目前比较通用的选择是 nginx + uWSGI,使用 nginx 来处理静态文件请求,其余动态内容再转发给 uWSGI 交给 web 后台处理,网上这样的配置教程也是最多的。作为两款大名鼎鼎的服务器程序 nginx 负责静态文件,uWSGI 负责动态内容,各种在自己擅长的领域各施其职,的确效率很高,是高性能的 Python web 系统部署时的首选。不过有时用 Python 写了个小站点,性能需求并不高时。部署服务还要安装 nginx 和 uWSGI 两个服务器程序就显得有点麻烦了。能否把这些工作都交给一个服务器程序呢。

在 hexo 中使用 git submodules 管理主题

hexo 中有着丰富的主题可以选择, 大部分的使用示例或者教程都是将主题 clone 到 theme 文件夹中来使用. 但这样来使用主题会存在如下的问题: - theme 中的主题属于一个独立的 Git 项目, 有自己的 .git 项目文件夹, 提交 hexo 项目时默认不会提交 theme 的 .git 文件夹, 在其他电脑上 clone 后会失去 theme 原本的版本控制功能. - 使用自己修改的主题时, 每次更改完主题, 需要在主题文件夹中提交一次, 然后再在 hexo 项目根文件夹中提交一次, 会产生两次修改内容一样的提交, 不够优雅. 还好万能的 Git 针对这种问题已经有了成熟的解决方案, 通过自带的 Git submodules 功能即可优雅的避免以上的问题.

leetcode 算法刷题记录

leetcode 算法刷题记录和总结, 主要使用Python和Go来作答.