自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wxs0607

Coder much more serious make much more progress everyday @_@

  • 博客(43)
  • 资源 (4)
  • 收藏
  • 关注

原创 PHP正则表达式相关

文章目录前言一、正则表达式是什么?二、正则基本语法1.行定位符(^ 和 $)2.选择字符( | ),‘或’3.单字符匹配(`[]`)4.排除字符(^),‘非’5.限定符(`?` 、`*` 、`+`、 `{n,m}`)4.排除字符(^),‘非’4.排除字符(^),‘非’4.排除字符(^),‘非’总结前言开发中遇到关于字符串匹配和校验,使用正则表达式可以高效快速的实现上述的功能,现记录一下一、正则表达式是什么?正则表达式又称为匹配模式(Pattern) , 由一组具有特定含义的字符串构成,通常用于匹

2020-11-05 21:09:07 354 1

原创 golang使用channel交替打印

要求每个函数起一个goroutine,请按照dog,cat,fish的顺序,打印四次,输出到控制台。

2023-04-23 10:20:08 326

原创 【算法】golang实现Linux的Tree命令(简易版)

通过递归实现打印当前或指定路径下文件的层级结构,暂未实现层级限制选项

2022-10-14 15:59:03 309

原创 Golang源码学习(一)waitGroup实现原理

WaitGroup提供了简洁易用的协程编程接口

2022-10-03 19:32:32 726

原创 Thrift_02——实践:搭建Golang、PHP间的远程服务调用RPC

一、简述下面我将通过thrift框架实现以Golang为服务端,PHP为客户端的RPC调用,实现的功能为:GetSumAndTime–即实现对指定整型入参a、b完成求和操作并返回其运算的开始计算的、计算结束的毫秒级时间戳。二、实现步骤1、安装thrift工具包,见Thrift_01——简介:远程过程调用协议2、构建IDL数据定义文件(.thrift),使用thrift工具生成Golang和PHP的接口代码(1)编写calSum.thrift:struct Result{ 1:i64

2020-07-12 11:08:52 480

原创 Thrift_01——简介:远程过程调用协议

一、RPC (Remote produce call)远程过程调用协议特点:使用自定义的TCP协议,请求报文体积小,基于Thrift可以实现高效的二进制传输,提高了传输性能,一般都会自带负载均衡,能做到自动通知,不会影响上游。二、远程调用的步骤:一次远程的调用经历了一下10个步骤:1.调用客户端以本地方式调用远程服务2.client stub将请求(方法和参数)组装成网络消息3.client stub找得到服务器地址,将消息传送到远程主机4.server stub得到传送过来的请求,进行解码

2020-07-11 20:52:57 333

原创 我DE设计模式总结

一、原则:设计模式遵循的七大原则:开闭原则:软件实体应当对扩展开放,对修改关闭(Software entities should be open for extension,but closed for modification)核心思想是当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。里氏替换:继承必须确保超类所拥有的性质在子类中仍然成立(Inheritance should ensure that any property prove

2020-06-23 23:00:48 239

原创 快速统计代码行,利用git命令快速统计

普通版author换成你在git中的昵称/代号git log --author="yourNAME" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", ...

2020-04-02 14:37:03 182

原创 ο 不是o,开发中希腊字母捣什么乱?探明字符串string转为字节数组后,字节数组内元素的含义

一、背景&经历今天帮女朋友看一段html代码:<html><head></head><body><div>用户名: <input type="text" id="name" > <br><button οnclick="test()">提交</button&gt...

2020-03-10 22:43:35 520

原创 Golang时间包的“坑” time.Parse

开发过程中,无意发现的bug首先看一段代码:func main() { st := "2019-11-21 11:59:01" fmt.Printf("%s\n", st) t, _ := time.Parse("2006-01-02 15:04:05", st) fmt.Println(t.Unix()) tt := time.Unix(t.Unix(), 0) fmt.P...

2020-02-27 21:41:54 8746

原创 nsqadmin参数含义Depth、In-Flight、Deferred、Requeued、Timed Out、Messages、Connections

nsq管理界面有很多的字段,都是什么含义呢?字段名含义DepthCurrent sum of messages in memory on disk (i.e. the “backlog” of messages pending delivery) 当前消息数:内存和硬盘转存的消息数Memory + Disk内存和硬盘分别积压的消息数In-FlightCur...

2020-01-15 10:02:59 3242

原创 Golang之单元测试

golang提供了极为简洁的编写单元测试的方式,只需几行代码,即可轻松创建出一个测试用例,并且可以直接运行。1.testing单元测试使用testing可以提供自动化的测试支持,通过go test 命令能够执行形如一下结构的函数:func TestXXX(t *testing.T)XXX可以是任何的字符串,通常为被测试的方法名。其中的*testing.T包含测试打印测试日志、输出断...

2020-01-07 21:58:08 538

原创 golang并发编程——wg.WaitGroupWrapper

首先看一段程序:package mainimport "fmt"func main() { for i := 1; i <= 10; i++ { //并发计算每个数的立方数 go func() { fmt.Println(i * i * i) }() }}点击运行程序后,发现程序只解结束,没有输出任何内容:这是因为main函数没有等待刚刚启动的协程...

2019-12-30 22:09:24 1597

原创 golang的初始化

Go程序的初始化总是从main包下的main方法开始的,如果main包中引入了其他的包,则会首先导入其他的包,并执行对应包中的inti()方法,若只需要某个包中的init函数,不需要其中的其他方法则可以通过以下方式实现:_ "net/http"Go文件的初始化顺序:1 从main方法开始,若包含其他的包,首先引入其他包2 若其他包也引用了别的包,则首先引入其他的包,然后创建和初始化这个包...

2019-12-09 22:01:04 391

原创 MySQL之深究select...count(*)

关于CountCOUNT(exper)1.Count函数是返回select语句检索行中expr的值不为NULL的数量,结果为一个BIGINT。2.若查询结果中没有命中任何的记录,则返回0.3.count(*)中包含值为NULL的记录行create table #bla(id int,id2 int)insert #bla values(null,null)insert #bla va...

2019-11-08 21:11:57 962

转载 supervisor的简介和使用

简介supervisor是一个基于Python开发的c/s服务,用于Linux/unix环境的一个进程管理工具。可以很方便的监听/启动/停止和重启一个或者多个进程。当一个进程意外被杀死或者由于异常等原因导致程序的终止,supervisor可以监听到进程死后将其自动的重新拉起,可以很方便的做到进程自动恢复。supervisor的配置文件运行supervisor服务的时候,需要指定对应的配置文件...

2019-10-29 22:02:42 292

原创 Golang 中redigo连接池的初始化参数含义

type Pool struct { // Dial is an application supplied function for creating and configuring a // connection. // // The connection returned from Dial must not be in a special state // (subscribed ...

2019-10-23 18:26:44 843

原创 Golang数据库操纵对IN语句的支持

在实际的工程项目中,SQL通常使用预编译的形式进行执行操纵,可以有效的防止SQL注入的风险,提高编码的规范性。golang中使用sqlx进行sql查询的时候,在使用in语句在一个集合中查询的时候,若使用预编译形式则通常有两种形式:方法一:使用语言的for语句循环生成SQL语句中的“?”,类似这样:list:=[]int{1,2,4,66}sql:="select * from books...

2019-10-23 13:18:59 2236

原创 Java之类的排序(Sort)

Java语言内置的Arrays.sort可以帮我们使用快速排序完成序列的排序操作,下面是对sort使用的一个总结:1.对基本数据类型数组进行排序首先,基本数据类型包括:byte/short/int/long/char/bool/double/float这些。对这些数组对的排序可以直接调用Arrays.sort([数组名]):import java.util.Arrays;public c...

2019-10-20 22:19:50 870 2

原创 map[string]interface{} 取值&类型转化问题

map[string]interface{}类型的map,在取值的时候,可以使用如下方式避免出现panic:m := make(map[string]interface{})x:=m[“notExistsKey”].(int) //若key不存在或者类型不为期待类型则会导致panicx,ok:=m[“notExistsKey”].(int) //可以通过判断ok,确定是否存在指定类型的...

2019-10-08 21:56:38 10547

原创 Redis之Pipeline使用

简介Pipeline(管道),redis在实际的业务应用中,可以通过pipeline提高吞吐量,提高redis的吞吐量,减少访问redis的次数。使用目的一次业务中,可能会有频繁的redis访问操作,若每一次都去请求一次redis服务器,则会导致系统的延时较高。通过使用管道,可以合并多次redis操作,过程中不需要等待请求的回复,在最后再一次性读取多个redis执行结果。普通请求是同步...

2019-10-08 20:58:21 356

原创 MySQL之悲观锁(select lock in share mode)的使用

悲观锁按照使用的性质可以划分为共享锁(Share Lock)和排他锁(Exclusive Lock)。关于排他锁的使用,可以见另一篇博客MySQL之悲观锁(select for update)的使用,本文主要介绍共享锁的使用。共享锁(Share Lock)S锁,又称读锁,用于所有的只读数据操作。共享锁是非独占的,允许多个并发事务读取其锁定的资源。性质: 1,多个事务可以封锁同一个共享页。...

2019-09-24 21:13:26 4098 1

原创 MySql事务的四种隔离级别

mysql有四种事务的隔离级别,分别为:READ-UNCOMMITED(读未提交),READ-COMMITED(读已提交),REPEATEDABLE-READ(可重复读),Serializable(可串行化)。1.READ-UNCOMMITED(读未提交)一个事务中可以读到其他事务的没有提交的改变。可能会出现:脏读数据(读到脏数据,即其他事务可能会回滚或者继续修改操作,得到的值不是最终的数据...

2019-09-24 16:51:02 304

原创 MySQL之悲观锁(select for update)的使用

最近在一个小项目中,涉及到了库存问题,所以使用了锁机制来使得库存问题能够保证数据的一致性,保证在并发情况下不会出错。所谓悲观锁,就是认为对数据库的修改操作,一定会造成数据的不一致性,所以需要对数据库进行加锁操作,为了使得影响的面最小,在innoDB引擎下, 使用select…for update配合where子句可以达到行级锁的效果。悲观锁要搭配事务一起使用,一个事务中,若执行了select…...

2019-09-21 20:38:51 1626

原创 Golang的sort使用总结

golang的sort在封装之后还挺好用的,但是封装略微有点繁琐。首先需要被排序的数组声明一个别名:然后需要该类型实现三个方法:func (s StuScores) Len() intfunc (s StuScores) Swap(i, j int)func (s StuScores) Less(i, j int) bool 实现完毕后就可以使用以下的方法进行排序操作:sort.S...

2019-09-11 22:05:57 445

原创 【实例】省市县地区XLXS转化为XML格式,基于golang语言

输入是一个xlxs文件,包含所有省市县及其关系和名称要求将至转化为xml并能反应对应的包含关系简介xlxs文件内容如下:包含四个字段,但最后一个字段用不到。要求转化为形式如下的xml文件:开发步骤1.选定语言这里使用了golang语言,常用语言的步骤一定是类似的2.大致思考开发的主要过程:经过思考应该包含以下几个部分:1)解析源文件2)在内存中进行调整,对层级关系进...

2019-09-10 22:18:12 577

原创 Redis的内存淘汰原则&过期策略

简介redis是一个k-v键值数据库,基于内存。因为系统的内存大小有限,所以使用redis的时候可以配置redis的最大内存大小。1.通过配置文件配置2.使用命令修改Redis的内存淘汰原则redis有如下的几种内存淘汰策略:默认策略:对于写请求不再提供服务,直接返回错误(DEL请求和部分的特殊请求除外)allkey-LRU:从所有的key中使用LRU算法进行淘汰注:LRU为最近最...

2019-09-03 21:48:37 140

原创 熔断和服务降级

服务熔断:下游服务因为某些原因突然变得响应很慢或者不可用的时候,上游服务为了保证服务的可用性,不再继续调用目标服务,转而进行服务降级,一般使用本地兜底的方法或数据继续提供服务。可以理解为当流量过大时,为了避免整个系统的崩溃,采用的一种保护措施,或称过载保护。服务降级:服务降级和服务熔断一般都是相伴出现,当服务熔断时,一般伴随着服务降级,使用本地服务代替远程,关闭某些功能或服务,防止系统的整体...

2019-08-30 21:52:04 419

原创 对Golang的nil的理解和认识

1.简介按照Go语言的规范,任何类型在未初始化的时候都对应一个零值:布尔型零值为:false整型零值为:0字符串的零值为:""而指针,函数,interface,slice,channel,map的零值均为nilGo文档中说明:nil是预定义的标识符,代表指针,通道,函数,接口,映射或者切片的零值,并并不是Go的关键字之一。还有,nil只能赋值为以上的几个类型,若赋值给基础类型,则会引...

2019-08-27 21:48:26 733 2

原创 Golang中defer的“坑”

1.defer的执行时机defer的官方定义的为:包裹defer的函数返回时包裹defer的函数执行到末尾时所在的goroutine发生panic时2.defer 的执行顺序defer 的执行顺序为LIFO原则,一段程序中后执行的defer代码段会在程序return的时候会优先执行。defer在匿名返回值和明明返回值函数中的不同表现。。。。。...

2019-08-23 21:35:28 348

原创 Git 常用命令记录

Git使用流程:git clone [url] 拉取项目git status 查看状态git checkout -b 【分支名】 创建分支并切换分支git checkout 【分支名】 切换分支git branch 【分支名】创建分支git diff 【分支名】(可选)查看不同git add 【文件名】 添加到git暂存区git commit -m 【注释】提交到当前分支git...

2019-08-20 20:30:46 96

原创 Linux常用快捷键,做个记录

ctrl + w 往回删除一个单词,光标放在最末尾ctrl + u 删除光标以前的字符ctrl + k 删除光标以后的字符ctrl + a 移动光标至的字符头ctrl + e 移动光标至的字符尾ctrl + l 清屏...

2019-08-16 19:52:28 61

原创 常用Linux命令,做个记录,以供查询

tail 查看文件内容{-f :循环读取,用于查阅不断变化的日志文件}ps 用于显示当前进程(process)的状态「」

2019-08-15 16:30:10 118

原创 http中的post 和 get 的区别,gin中使用POST方式也不一定可以使用PostForm获取

在开发一个接口时,使用PostMan测试接口时,发现明明使用的是Post方式,但是使用gin中的PostForm方法无法获取到传的值,但是在编写的一个简单的html页面上的表单中指定为post方式却可以将数据传送到服务端。postman测试如下:指定了POST但是却把参数输入了在params中,其实数据还是通过get的方式以params的形式传到了服务端,所以必须使用query方法才能获取到...

2019-08-14 21:53:31 2621

原创 Golang中对字符串string的相关操作

几乎任何程序都离不开文本(字符串)。文本操作是最常用的一个内容。 golang中拥有string的内置类型,可以使用与普通slice类型相似的性质。1.简介strings包提供了很多操作字符串的简单函数,通常一般的字符串操作都可以在这个包中找到。strconv 包提供了基本数据类型和字符串之间的转换。在Go 中,没有隐式的类型转换,一般的类型可以使用类型名的方式进行转换,例如:int64...

2019-08-13 21:18:57 526

原创 Golang返回值命名的意义

Golang语言的函数可以返回多个返回值,而且可以为每个返回值指定一个名称,如下:func MySqrt2(f float64) (ret float64, err error) { if (f < 0) { //then you can use those variables in code ret = float64(math.NaN()) ...

2019-08-07 16:02:50 633

原创 MySQL使用的一些小技巧(持续更新)

1. MySQL中,在某些情况下,如果明知道查询结果只有一个,SQL语句中使用LIMIT 1会提高查询效率create table t_user( id int primary key auto_increment, email varchar(255), password varchar(255) ); 每个用户的email是唯一的,如果用户使用email作为...

2019-08-07 11:29:01 177

原创 Golang常用类型转化

其他类型转化为String使用fmt.Sprintf("%d" , x) 转化常用的占位符如下:使用strconv转化://string 转为inti, err := strconv.Atoi(s) String转为其他类型有两个函数可以实现类型的互转1,FormateInt(int , base int) string2, Itoa(int) string//...

2019-08-06 13:14:01 144

原创 Golang并发编程:使用sync.WaitGroup实现线程的等待

首先看如下的代码:func main() { go func() { fmt.Println("123") }() go func() { fmt.Println("ABC") }()}发现最后控制台没有任何输出,如图:可以使用通道解决:func main() { ch := make(chan int) count := 2 go func() {...

2019-08-05 15:21:14 534

原创 Golang 插件cobra使用总结

Cobra既是用于创建强大的现代CLI应用程序的库,也是用于生成应用程序和命令文件的程序。1.启用方式:go run main.go [-flag1 {参数1} ] [-flag2 {参数2} ]例如:go run main.go push -t "123"2.主要编程模式var rootCmd = &cobra.Command{ Use: "rootCmd", S...

2019-08-02 17:53:22 1420

out.xml 实例的样例输出文件XML文件

out.xml 实例的样例输出文件XML文件

2019-09-12

省市县XLSX数据表格文件源表格

用于实例的输入源

2019-09-12

C#程序设计基础PPT 程序设计

清华大学出版社 配套 PPT C#程序设计基础PPT C# 清华 PPT 配套资源 优秀 很好 程序设计基础

2018-05-21

杭电ACM训练PPT

二分匹配及其应用 搜索入门 母函数 组合博弈入门 特殊的数

2018-05-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除