Lei Xia

Sr. Software Engineer | Solution Architect

抒写代码,尽享生活,筑就未来。

订阅 · 赞赏

avatar

Golang程序设计——数据容器

2021年3月9日 · 511 字 · 3 分钟

本文学习Go语言数据容器、包括数组、切片和映射。 数组 数组是一个数据集合,常用于存储用数字索引的同类型数据。Go语言的数组调用函数时使用的是值传递,因此形参会拷贝一份实参的值。 在Go语言中,声明数组需要同时指定长度和数据类型,数组长度是其类型的一部分,因此[5]int和[1]int是两种类型。 Go语言可以对数组进行写入、读取、删除、遍历等操作。

Golang程序设计——基本语法

2021年2月26日 · 878 字 · 5 分钟

本文学习Go语言基本语法,例如变量和常量、数据类型、运算符、条件语句、循环语句。 变量和常量 变量和常量是计算机程序不可或缺的部分。本节将介绍如何在Go程序中声明、使用变量和常量、还将介绍声明方式和作用域。 变量声明 在Go语言中,声明变量的方式有多种。在前面的文章介绍过,Go语言是一种静态类型语言,因此声明变量时必须指明其类型。

修复GitTalk出现Forbidden问题

2021年2月25日 · 107 字 · 1 分钟

GitTalk失效原因 对于所有自建博客的博主来书,GitTalk应该不陌生。GitTalk通过Github的OpenAPI以及issues功能实现社区评论,确实是一大亮点。 今天在查看文章的时候发现评论区出现了Forbidden错误,通过检查网络请求发现获取Github Token时请求了以下链接 https://cors-anywhere.herokuapp.com/https://github.com/login/oauth/access_token 通过查询GitTalk官方文档发现github.

Go语言程序设计

2021年2月25日 · 229 字 · 2 分钟

Go语言概述 语言历史 Go语言也称为Golang,是由Google公司开发的一种静态强类型、编译型、语言原生支持并发、具有垃圾回收功能的编程语言。起源于2007年,并在2009年正式对外发布。Go语言是非常年轻的一门语言,它的主要目标是“兼具 Python 等动态语言的开发速度和 C/C++等编译型语言的性能与安全性”。

golang依赖注入工具wire指南

2021年2月6日 · 829 字 · 4 分钟

wire与依赖注入 Wire 是一个的Golang依赖注入工具,通过自动生成代码的方式在编译期完成依赖注入,Java体系中最出名的Spring框架采用运行时注入,个人认为这是wire和其他依赖注入最大的不同之处。 依赖注入(Dependency Injection)也称作控制反转(Inversion of Control),个人给控制反转下的定义如下:

Golang组件化网络服务器框架Halia指南

2021年1月12日 · 614 字 · 3 分钟

写在前面 在netty框架面世之前,几乎没有一个成熟的OOP/组件化规范指导网络服务器开发,一些常用的FrameDecoder,BusinessHandler等等组件紧密耦合在了项目当中,整个项目可以说扩展性比较差。 netty的出现可以说是划时代的,基于OOP/组件化屏蔽了底层 BlockingIO/NonBlockingIO/AsynchrousIO之间的差异,各种组件可以无缝切换,网络服务器开发效率有了非常大的提高。 通过阅读netty源码,以及核心组件的架构,基于Golang进行了实现,至此,Golang的Halia框架面世了!

Laravel定时任务写入日志用户变为root导致Web进程无法写入日志问题

2020年10月20日 · 59 字 · 1 分钟

今天访问接口时返回 接口写入日志失败,通过排查后发现 storage/logs下面出现了root用户新建的日志,导致www用户无法写入日志。 通过排查发现,crontab写入了laravel的定时任务命令。默认情况下,crontab的任务是使用root用户去执行的,因此laravel定时任务新建的文件属主自然成为了root。 解决方法 解决方法就是使用指定用户来运行 crontab 任务。比如使用www用户来运行laravel的计划任务命令。

Golang Http 验证码示例

2020年8月20日 · 192 字 · 1 分钟

验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,我们利用比较简易的方式实现了这个功能。这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类。

Webpack4不求人(5)——编写自定义插件

2020年3月18日 · 567 字 · 3 分钟

Webpack通过Loader完成模块的转换工作,让“一切皆模块”成为可能。Plugin机制则让其更加灵活,可以在Webpack生命周期中调用钩子完成各种任务,包括修改输出资源、输出目录等等。 今天我们一起来学习如何编写Webpack插件。 构建流程 在编写插件之前,还需要了解一下Webpack的构建流程,以便在合适的时机插入合适的插件逻辑。Webpack的基本构建流程如下:

Webpack4不求人(4)——编写自定义Loader

2020年3月11日 · 427 字 · 3 分钟

在前面的内容中,我们学习了Webpack的基本知识、常用脚手架和性能优化,虽然说大部分的开发场景社区已经又成熟的模块给我们使用,但是遇到特殊情况还是需要自己有独立开发的能力,因此今天我们一起来学习如何编写自定义Loader。 基本Loader Webpack中loader是一个CommonJs风格的函数,接收输入的源码,通过同步或异步的方式替换源码后进行输出。 module.exports = function(source, sourceMap, meta) { } source是输入的内容 sourceMap是可选的 meta是模块的元数据,也是可选的 需要注意的是,该导出函数必须使用function,不能使用箭头函数,因为loader编写过程中会经常使用到this访问选项和其他方法。