- 博客(45)
- 收藏
- 关注
原创 webpack教程02-webpack-dev-server是什么与webpack-dev-server命令行使用
本文首发于我的Github博客本文是webpack教程的第二篇文章,会介绍:webpack-dev-server的概念和作用webpack-dev-server的基本命令行使用和一个坑点本次相关代码在Github仓库 commit bbaea1bcwebpack-dev-server的概念与作用概念webpack-dev-server,顾名思义,这是一个server,也就是说,webpack-dev-server命令能够用来启动一个本地服务器,接受HTTP请求作用不使用webpack
2020-06-16 20:10:52 995
原创 CORS与CSRF
本文首发于我的Github博客本篇文章介绍了CORS和CSRF的概念(作者前几天在和带佬们聊天的时候把两个概念搞混了,所以才想要了解),简单来说:CORS(Cross Origin Resource Sharing)跨域资源分享 是一种机制,通过在HTTP响应头中加入特定字段限制不同域的资源请求CSRF(Cross Site Request Forgery)跨站请求伪造 是一种web攻击手段,通过向服务器发送伪造请求,进行恶意行为的攻击手段CORS(Cross Origin Resource
2020-06-16 20:09:44 3065 1
原创 数据结构与算法复习-02-链表
本文首发于我的Github博客本文是数据结构与算法复习的第二篇博文,复习链表的概念常见的链表类型和设计取舍链表的反转操作链表的概念链表可以定义为:空拥有一个节点,该节点有两个属性val,本节点的值next,另一个链表首先,这个定义是单链表的定义,但是双向链表也是类似的其次,从这个定义可以看到,链表是可以递归定义的常见的链表类型和设计取舍比较常见的链表类型有单链表双向链表所谓的设计取舍主要是考虑:选择单链表还是双向链表?是否需要卫士节点(sentin
2020-06-16 20:08:43 295
原创 数据结构与算法复习(01)-并查集
本文首发于我的Github博客本文是数据结构预算法复习系列的第一篇博文,会介绍写作该系列博文的原因本文复习了并查集的概念,基础的API,良好的实现(路径压缩与权重),简单的应用和变式相关代码写作本篇博文的原因生活所迫懂的都懂,IT行业从业者(或者是考研保研),跑不了的数据结构与算法是大学生活里花费的时间很多的部分,复习一下,也算是对自己的大学生涯有个交代三次元的生活真的无聊,找点代码写,嘿嘿(难道不能写工程项目吗?质问!)并查集的概念与基础API并查集的概念假设拥有N个元素
2020-06-15 09:52:54 185
原创 webpack教程01-webpack是什么与webpack命令行使用
本文首发于我的Github博客本文是webpack教程的第一篇文章,会介绍创作这个系列教程的原因webpack是什么构建工具webpack CLI(命令行交互)的基本使用webpack <入口文件> -o <目标文件> --mode <模式>webpack --config <配置文件>webpack CLI与npm结合使用scripts添加与npm run build涉及到的代码有不使用webpack版本,使用web
2020-06-11 18:49:09 393
原创 star-history源码阅读笔记(01)-项目介绍,Github的stargazers接口与分页机制,获取star历史的思路
本文首发于我的Github博客本文是star-history项目源码阅读的第一篇文章,会包含:作者对项目的介绍,这个系列博文的目的Github的stargazers接口Github接口的分页策略获取star历史的思路本次对代码的分析基于Commit - first commit deecd92 timqian项目的介绍与系列博文的目的项目介绍首先说明,本文作者并非项目作者,各种介绍和分析,如有不当,还请谅解。star-history项目(体验地址)是一个用于统计github项目获得
2020-06-11 15:18:03 627
原创 goland提取方法与...interface{}类型的注意点
本文首发于我的Github博客本文记录了作者在使用goland提供的提取方法(Extract Method)功能时,由于...interface{}的类型问题而遭遇到的bug和一点感悟,简单来说:可变长的参数会被goland的Extract Method转化为切片(slice),比如...interface{}会被转化为[]interface{}由于interface{}的特殊性,需要额外注意bug的产生在代码中有如下片段func f(payload ...interface{}) {
2020-06-09 11:08:52 1668
原创 常见的git工作流
本文首发于我的Github博客本文介绍了作者了解到的三种常见的单仓库的git工作流,它们是:Centralized工作流仅使用master一个分支Feature Branch工作流使用一个master分支管理稳定版本使用多个feature分支管理需求开发Gitflow工作流使用一个master分支管理发布版本历史使用一个develop分支管理开发流程使用多个feature分支管理需求开发使用多个release分支管理版本发布使用多个hotfix分支修复紧急bug
2020-06-07 13:26:01 331
原创 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 3457
原创 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 912
原创 JavaScript中箭头函数与普通函数
本文首发于我的Github博客本文记录了作者在使用mongoose的过程中,因为箭头函数与普通函数的区别而引起的一个bug,以及因此而学会的有关箭头函数与普通函数的区别,简单来说:箭头函数不能使用arguments参数,普通函数可以箭头函数的this关键字是lexically bound,也就是this是和最近的外层普通函数所具有的this一致(如果没有这样的函数,就和文件本身代表的对象绑定);普通函数的this是dynamically bound,视运行时环境而确定其实还有什么new之类的,作
2020-06-01 20:48:13 198
原创 grep打印匹配行的未匹配内容
本文首发于我的Github博客本文记录了作者使用grep和sed命令来实现,打印grep匹配行中的未匹配内容的功能的方法,简单来说:先使用grep <pattern>提取出匹配行再使用sed -e 's/<pattern>//g'将匹配内容消除,即可得到未匹配内容场景与方案使用grep时,我们可以用grep <pattern>来打印出匹配行,可以使用grep -o <pattern>来打印出匹配行中的匹配内容,但是如果希望能够实现“反选”,也就
2020-06-01 20:10:38 1114
原创 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 1195
原创 转义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 2710
原创 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 1574
原创 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 842 1
原创 golang抽取接口,依赖注入(依赖倒置)解决包引用关系
本文首发于我的个人博客本文记录了作者在golang开发中,通过抽取接口,依赖注入的方式,解决包与包之间的不合理引用关系。总结来说:面向接口编程,并且golang中接口函数的参数最好是标准库的类型场景目前项目中有一个业务逻辑包business_logic,两个工具库包pkg1和pkg2,其中pkg1是旧库,API不宜改动,pkg2是新库,尚未正式使用business_logic会使用pkg1和pkg2pkg1内部要添加使用pkg2的逻辑// pkg1/main.gopackage
2020-05-28 15:30:53 1815
原创 编写自定义启动脚本时的注意项
本文首发于我的个人博客这篇文章介绍了作者在使用和编写自定义启动脚本时感受到的一个需要注意的点,简单来说,就是:一定要打印出事实上的最终启动命令自定义启动脚本的使用场景我们知道,启动一个程序需要固定的命令,比如说C/C++/Go可以编译出一个可执行文件,./app来启动Java通过JDKjava命令启动,java APP但是,管理大型项目时,未必会是简单的./app这样就可以启动的,我们有可能会需要传入许多选项和参数:./exec -option1 -option2 arg1./
2020-05-27 22:11:22 251
原创 一个golang的RPC框架设计中的坑点
本文首发于我的个人博客本文记录了作者在使用公司的RPC框架时,由于RPC框架本身的设计以及程序员的投机取巧而遇到的一个坑点。简单来说,RPC框架没有能够做足够好的封装,程序员(不是作者,是前人)也没有按照RPC框架约定的方式进行API调用。背景提要我们知道,RPC调用是不同主机间的进程通信的方式,如果想要额外传递消息,我们往往需要修改RPC调用的接口,通过新增参数的方式来新增传递信息。但是这样修改参数,修改接口的方式侵入性太强,需要进行上下游调用接口的适配,很麻烦。当我们面对一些遍布在各个RP
2020-05-27 22:10:09 547
原创 Vue中为对象添加字段
本文首发于我的个人博客本文记录了作者使用Vue.js,并且在前端中为对象添加字段时遇到的坑点。场景与问题从后端拿到数据之后,可能为了渲染时的方便,想要在对象里添加一些字段,而后直接在渲染时引用直观上实现这种功能可以直接使用原生的js语法,抽象出来,可以用如下的代码段表示(为了复制就可以演示,没有组件化)但是如下代码是有问题的,obj.newField不能被渲染出来<!DOCTYPE html><html> <body> <d
2020-05-27 22:08:48 9578
原创 golang获取执行函数名,执行文件名与所在行数
本文首发于我的个人博客这篇文章介绍了作者在参与一个golang日志系统的开发的时候,解决需要打印出执行日志打印操作时的业务函数名,业务文件名与所在行数的需求过程中,遇到的问题和解决方案需求场景在平日里使用日志的时候,一个好的日志系统,往往会打印出类似如下的信息<log_level>:<log_message>:<package_path>/<filename>:<line_no>:<function_name>比如INFO
2020-05-27 22:06:31 3558 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 2560 1
原创 golang中使用elasticsearch
本文首发于我的个人博客这是一篇介绍如何利用golang第三方库https://github.com/olivere/elastic进行elasticsearch的操作的文章。文章中并不会介绍非常详细的API,更侧重于作者在工作中的使用经验和查文档经验。文章中主要包括以下内容:作者认为比较重要的API设计理念以及文档查阅方式作者在工作中使用到的elasticsearch的实例,包括从接到需求,查阅文档,并实现的过程API设计理念思考API的分类在使用elasticsearch的golang
2020-05-27 22:02:23 2196
原创 A New Page In My Life, As A Programmer
A New Page In My Life, As A ProgrammerStart the browser, open the dying blog. My heart is filled with nothing but regret. Another summer vacation is gone, forever. Again, my plan is far from accompl...
2018-08-31 14:58:52 233
翻译 为什么文件含有的字符数多了一?
为什么文件含有的字符数多了一?在阅读《The C Programming Language》(2nd Edition)(俗称K&R)时,动手实现了书中的部分示例代码,结果出现了一个问题,在Stackoverflow上进行了问询才得到了解决,由于原题是英文,故翻译成博文与大家分享。原文链接:Why does the file created using a text editor c...
2018-05-30 20:00:23 596
原创 POJ 2785(4 Value whose sum is 0)(双哈希)
POJ 2785(4 Value whose sum is 0)(双哈希)DescriptionThe SUM problem can be formulated as follows: given four lists A, B, C, D of integer values, compute how many quadruplet (a, b, c, d ) ∈ A x B x C...
2018-05-28 10:43:16 218
原创 听课笔记---程序设计与算法(三)C++面向对象程序设计(郭伟老师)---第三周
Week3Week3目录this 指针静态成员函数和静态成员变量成员对象和封闭类常量对象和常量函数友元内容与思考this 指针静态成员函数和静态成员变量历史由来this 指针的作用this 指针使用实例—返回被作用对象使用空指针调用成员函数静态成员函数和静态成员变量定义方式静态成员的特征与本质静态成员的访问方式静态成员实例实例的改进...
2018-04-15 14:25:44 1088
原创 C++Primer Section 2-1
Section 2-1 Primitive Built-in TypesSection 2-1-1 Arithmetic TypesDifferences in Integer TypesDifferences between char wchar_t char16_t and char32_tNoteDifferences between short int long and long
2018-04-10 22:46:51 363
原创 整数划分问题(放苹果问题)(递归)
Description将正整数n 表示成一系列正整数之和,n=n1+n2+…+nk, 其中n1>=n2>=…>=nk>=1 ,k>=1 。 正整数n 的这种表示称为正整数n 的划分。正整数n 的不同的划分个数称为正整数n 的划分数。Input标准的输入包含若干组测试数据。每组测试数据是一个整数N(0 < N <= 50)。Outp...
2018-04-10 16:11:59 369
原创 Boolean Expressions POJ 2106
DescriptionThe objective of the program you are going to produce is to evaluate boolean expressions as the one shown next: Expression: ( V | V ) & F & ( F | V )where V is for True, and F...
2018-04-10 16:07:43 284
原创 听课笔记---数据结构(浙江大学)MOOC---第一周
第一周:预备知识—算法与数据结构解决问题的策略效率与什么有关?数据组织方式图书馆插入新书和查找书籍,用不同的数据组织方式,对应的操作就会有不同的时间复杂度。数据组织方式好坏的分析,与它所相关的操作有直接联系。空间利用效率观察两段用于输出1到N的数字的代码其一循环算法:void PrintN(int N){int i;for (i = 1; i <= N; i++) { printf
2018-04-10 13:42:58 513
原创 2的幂次方表示(递归)(NOIP1998复赛 普及组 第一题)
Description任何一个正整数都可以用2的幂次方表示。例如:137=27+23+20同时约定方次用括号来表示,即ab可表示为a(b)。由此可知,137可表示为:2(7)+2(3)+2(0)进一步:7=22+2+20(21用2表示) 3=2+20所以最后137可表示为:2(2(2)+2+2(0))+2(2+2(0))+2(0)又如:1315...
2018-04-06 23:14:37 3591
原创 全排列(递归)
Description给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。 我们假设对于小写字母有’a’ < ‘b’ < … < ‘y’ < ‘z’,而且给定的字符串中的字母已经按照从小到大的顺序排列。Input输入只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在1到6之间。Output输出这个字符串的所有排列方式,...
2018-04-06 23:03:35 158
原创 C++ Primer Section 1-6
Section 1-6 The Bookstore ProgramExample CodeIn BookSale.cppThoughtsAs the end of Chapter 1, they present a program. But actually, it is not essentially different from the very program in...
2018-04-06 20:20:37 108
原创 C++ Primer Section 1-5
Section 1-5 Introducing ClassSales_item ClassA class in C++ is a data structure, a type.When we look at a class, we should focus on the legal operations of it and not bother to care about the ...
2018-04-06 20:19:45 129
原创 C++ Primer Section 1-4
Section 1-4 Basic Flow of ControlThe while StatementBasic Structurewhile (condition) statementRule for whileThe body part(statement part) will be executed repeatedly until the co...
2018-04-06 20:19:00 1067
原创 听课笔记---程序设计与算法(三)C++面向对象程序设计(郭伟老师)---第二周
Week 2Contents成员与隐藏构造函数析构函数Thoughts成员与隐藏成员函数的定义与调用成员函数可定义在类内部,与普通函数类似,也可定义在类外部,但其声明总是在类内部,形式如下class A { int Fun();}int A::Fun(){ ...}成员函数必须由对象或指向对象的...
2018-04-06 20:16:00 516
原创 POJ2965 Refrigerator(穷举+位操作)
DescriptionThe game “The Pilots Brothers: following the stripy elephant” has a quest where a player needs to open a refrigerator.There are 16 handles on the refrigerator door. Every handle can be ...
2018-04-06 20:07:20 170
原创 C++ Primer Section 1-3
Contents and ThoughtsTwo kinds of commentThere are two kinds of comment in C++, single-line and paired(in CommentsInAddTwoNumbers.cpp).Single-line. Start with // and end with a newlinePaired...
2018-04-02 09:58:42 382
原创 C++ Primer Section 1-2
Section 1-2Contents and ThoughtsObjects for I/O StreamIn the header iostream , four objects for I/O stream are defined.cin — standard inputcout—standard outputcerr—standard error—warnin...
2018-04-02 09:54:43 184
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人