code snippet/pattern
FitzLeopard
这个作者很懒,什么都没留下…
展开
-
defer+recover保护gin不panic
本文首发于我的Github博客本文记录了作者保护gin构建的web app不panic的方式,简单来说:主程中的panic本身是会被gin拦截的协程中的panic需要使用defer和recover进行保护情景在我们用gin构建,运行web app并上线了之后,或许有一些请求会经过业务,在特定的情况下出发会触发golang中的panic按照golang的设定,一旦panic,如果不在函数调用栈中存在recover,那么是一定会使得整个程序终止的但是线上的服务是不能够因为一个两个的请求就直接原创 2020-06-04 18:53:49 · 3425 阅读 · 0 评论 -
bash中的字符串处理操作
本文首发于我的Github博客本文记录了作者使用bash过程中,为了解决去除前缀后缀的问题而了解到的bash的字符串操作,简单来说string:position或者string:position:length进行子串提取string#pattern进行最短匹配前缀去除,string##pattern进行最长匹配前缀去除string%pattern进行最短匹配后缀去除,string%%pattern进行最长匹配后缀去除string/pattern/string进行首个pattern替换,strin原创 2020-06-02 15:05:26 · 899 阅读 · 0 评论 -
grep打印匹配行的未匹配内容
本文首发于我的Github博客本文记录了作者使用grep和sed命令来实现,打印grep匹配行中的未匹配内容的功能的方法,简单来说:先使用grep <pattern>提取出匹配行再使用sed -e 's/<pattern>//g'将匹配内容消除,即可得到未匹配内容场景与方案使用grep时,我们可以用grep <pattern>来打印出匹配行,可以使用grep -o <pattern>来打印出匹配行中的匹配内容,但是如果希望能够实现“反选”,也就原创 2020-06-01 20:10:38 · 1086 阅读 · 0 评论 -
bash实现trim字符串
本文首发于我的Github博客本文记录了作者使用sed命令对bash中的字符串进行去头尾空格的操作的方法,简单来说使用echo ' string ' | sed -e 's/^[[:space:]]*//'去除开头的空格使用echo ' string ' | sed -e 's/[[:space:]]*$//'去除结尾的空格将二者用管道结合,去除头尾空格echo ' string ' | sed -e 's/[[:space:]]*$//' | sed -e 's/^[[:space:]]*//'原创 2020-06-01 20:09:28 · 1175 阅读 · 0 评论 -
转义sed替换模式字符串
本文首发于我的Github博客本文记录了作者在使用sed命令进行文本替换时,对于使用到的替换模式进行转义处理使用到的sed命令,简单来说:使用sed -e 's/[]\/$*.^[]/\\&/g'即可对输入字符串进行转义场景sed命令常常被用来对文本做处理,其中一个最经常用到的处理就是替换,替换的语法如下:echo $STRING | sed -e 's/<match_pattern>/<replace_pattern>/g'当然也可以有其他的变化,不过这原创 2020-06-01 14:45:51 · 2681 阅读 · 0 评论 -
date命令的两种常用法
本文首发于我的Github博客本文记录了作者在平时工作中经常用到的Linux命令date的两种常见使用方式,简单来说:打印当前时间,date "+<output_format>"将Unix时间戳转化为可读的日期+时间date -r <unix-timestamp> "+<output_format>"打印当前时间只需要使用date "+<output_format>"就可以打印当前时间,其中,output_format由正常字符和转义字符组成,原创 2020-06-01 11:33:47 · 1555 阅读 · 0 评论 -
git-status中文乱码问题
本文首发于我的个人博客本文记录了作者解决git status命令中出现中文名乱码问题的方法,简单来说配置 core.quotepath 为 false 即可场景当我们的修改文件中出现中文文件名时,git status就会出现乱码➜ project git:(master) ✗ git status -s?? "\344\270\255\346\226\207\346\226\207\344\273\266"这是由于Git默认会对ASCII以外的编码进行转义,只要将这个转义关掉,就可以原创 2020-05-29 21:12:39 · 820 阅读 · 1 评论 -
一个golang的RPC框架设计中的坑点
本文首发于我的个人博客本文记录了作者在使用公司的RPC框架时,由于RPC框架本身的设计以及程序员的投机取巧而遇到的一个坑点。简单来说,RPC框架没有能够做足够好的封装,程序员(不是作者,是前人)也没有按照RPC框架约定的方式进行API调用。背景提要我们知道,RPC调用是不同主机间的进程通信的方式,如果想要额外传递消息,我们往往需要修改RPC调用的接口,通过新增参数的方式来新增传递信息。但是这样修改参数,修改接口的方式侵入性太强,需要进行上下游调用接口的适配,很麻烦。当我们面对一些遍布在各个RP原创 2020-05-27 22:10:09 · 530 阅读 · 0 评论 -
Vue中为对象添加字段
本文首发于我的个人博客本文记录了作者使用Vue.js,并且在前端中为对象添加字段时遇到的坑点。场景与问题从后端拿到数据之后,可能为了渲染时的方便,想要在对象里添加一些字段,而后直接在渲染时引用直观上实现这种功能可以直接使用原生的js语法,抽象出来,可以用如下的代码段表示(为了复制就可以演示,没有组件化)但是如下代码是有问题的,obj.newField不能被渲染出来<!DOCTYPE html><html> <body> <d原创 2020-05-27 22:08:48 · 9533 阅读 · 0 评论 -
golang获取执行函数名,执行文件名与所在行数
本文首发于我的个人博客这篇文章介绍了作者在参与一个golang日志系统的开发的时候,解决需要打印出执行日志打印操作时的业务函数名,业务文件名与所在行数的需求过程中,遇到的问题和解决方案需求场景在平日里使用日志的时候,一个好的日志系统,往往会打印出类似如下的信息<log_level>:<log_message>:<package_path>/<filename>:<line_no>:<function_name>比如INFO原创 2020-05-27 22:06:31 · 3511 阅读 · 2 评论 -
Vue+Axios自动更新
本文首发于我的个人博客本篇文章记录了作者在使用Vue+Axios实现前端自动刷新数据时,遇到的一个坑点。场景需求在一个Vue单页应用中,使用VueRouter实现了App组件中点击链接后呈现Component组件的功能App.Vue -> Component.Vue现在需要:在Component加载出来之后,每间隔1s的时间,自动通过Axios向后端接口获取数据并更新。有问题的实现方式App.Vue,内置router-link,可以跳转呈现Component// App.Vue&l原创 2020-05-27 22:04:51 · 2536 阅读 · 1 评论 -
golang中使用elasticsearch
本文首发于我的个人博客这是一篇介绍如何利用golang第三方库https://github.com/olivere/elastic进行elasticsearch的操作的文章。文章中并不会介绍非常详细的API,更侧重于作者在工作中的使用经验和查文档经验。文章中主要包括以下内容:作者认为比较重要的API设计理念以及文档查阅方式作者在工作中使用到的elasticsearch的实例,包括从接到需求,查阅文档,并实现的过程API设计理念思考API的分类在使用elasticsearch的golang原创 2020-05-27 22:02:23 · 2181 阅读 · 0 评论