8 爱思考的实践者

尚未进行身份认证

我的到来,让世界变得更好。My coming makes this world a better place to live in.

等级
博文 208
排名 1w+

golang实战------翻转字符串和整数

最近研究了下golang翻转字符串和整数的实现,感觉还挺有意思的。代码如下所示:packagemainimport( "fmt")funcmain(){ varstr1="hello" str2:="world" //str3:=str1+""+str2 str3:=fmt.Sprintf("%s%s",str1,str2)...

2019-05-17 18:13:33

Prometheus+Grafana监控简介

一、前言:本文目的是:1、向没听过或者刚听过、但是还对这个监控系统没有任何概念的开发者,介绍Prometheus的应用场景。2、向有需要深入了解的人推荐一些博客、书籍。3、内心真实想法:本想写个系统一点的,但是列出那些博文书籍之后,感觉已经没有必要了。二、什么是node_exporter在介绍Prometheus之前,我们先看个小工具node_exporter。后面,再讨论什...

2019-05-13 17:22:23

Redis为什么是单线程、及高并发快的大原因详解

一、Redis的高并发和快速原因1.redis是基于内存的,内存的读写速度非常快(纯内存)。2.redis是单线程的,省去了很多上下文切换线程的时间(避免线程切换和竞态消耗)。3.redis使用多路复用技术,可以处理并发的连接(非阻塞IO)。非阻塞IO内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epo...

2019-05-10 19:44:16

Go实战--获取公网ip、查看内网ip、检测ip类型、校验ip区间、ip地址string和int转换、根据ip判断地区国家运营商

一、简要介绍net包1.funcParseIPfuncParseIP(sstring)IPParseIPparsessasanIPaddress,returningtheresult.Thestringscanbeindotteddecimal(“192.0.2.1”)orIPv6(“2001:db8::68”)form.If...

2019-05-10 14:32:42

PHP-FPM进程数设定

服务器出现异常,网站不能正常访问。经排查是php的问题。在重启php-fpm时,恢复正常。1分钟之后又出现故障。查看php日志文件/usr/local/php/var/log后提示WARNING:[poolwww]serverreachedpm.max_childrensetting(5),considerraisingit子进程数已经达到设置的最大值,需要...

2019-04-29 16:02:45

mac下phpstorm2019.1版本提示ext-json is missing in composer.json

通常新版开发IDE会提高编程效率,所以升级了最新版的phpstorm。在升级完成之后发现,原本的代码中使用到的json_encode函数出现黄线,提示“ext-jsonismissingincomposer.json”。解决方案有2种,下面分表介绍。第一种就是:直接处理掉phpstorm在新版本中检测composer.json文件的设置。点击Preference-&gt...

2019-04-23 15:20:24

mac下安装grpc protobuf

一、前言这两天想研究一下grpc的Protobuf,于是在自己的mac电脑上进行尝试。把过程记录下来,给有需要的同学参考下,大家共同进步。参考grpc官网:https://grpc.io二、下载grpc代码包使用dep包管理工具直接下载grpc代码包,命令为:depensure-addgoogle.golang.org/grpc下载完成后,在Gopkg.toml文件...

2019-04-22 18:01:29

phpstorm 新建PHP文件显示TXT类型

今天用phpstorm新建了一个PHP文件,却显示为TXT类型,内容置灰,代码没有颜色标识,也没有输入提示。把这个文件改个名字,就正常了,特别好奇为什么这个名称就不行。于是,一阵搜索和尝试,终于找到解决方案。解决方法为:打开phpstorm的Preference-》Editor-》Filetypes-》Text,在下面RegisteredPatters中删除这个文件的名称,点击ok保...

2019-04-13 15:59:21

golang使用sort包排序

1.sort包简介sort包实现了四种基本排序算法:插入排序、归并排序、堆排序和快速排序。但是,这四种排序方法不是公开的,它们只在sort包内部被使用。所以,在对数据集合排序时,不必考虑应当选择哪一种排序方法,只要实现了sort.Interface定义的三个方法,就可以顺利对数据集合进行排序。sort.Interface接口定义的三个方法为:获取数据集合长度的Len()方法、比较两个元素大...

2019-03-22 16:10:22

mysql主键索引与非主键索引区别

一、前言主键是逻辑键,索引是物理键。主键不实际存在,而索引实际存在于数据库中。索引会真正产生文件。数据会真正产生文件。redolog记录的内容:物理日志,"某个数据页上做了什么修改",循环使用。binlog记录的内容:逻辑日志,语句的原始逻辑"ID=1,2",追加使用。主键不会产生文件,主键的搜索依靠ID索引树。二、数据的概念数据有数据页的概念,mysql也有内...

2019-03-06 18:19:54

理解Go的Context机制

1.什么是Context最近在分析gRPC源码,proto文件生成部分的代码,接口函数的第一个参数统一是ctxcontext.Context,对这种设计甚是迷惑,于是找些资料,对其背后的原理一探究竟。Context通常被译作上下文,它是一个比较抽象的概念,一般理解为“程序单元的一个运行状态、现场、快照”。将content翻译为“上下文”,很好地诠释了其本质,说明了数据流的方向,上游会把...

2019-01-21 15:21:25

golang map中结构体元素是无法取地址的

map中的结构体元素是无法取地址的,即:map[string]struct类型,取&map["tmp"]是错误的。会提示报错:cannotassigntostructfieldelem["count"].countinmap。原因为:map中的元素并不是一个变量,而是一个值。因此,我们不能对map的元素进行取址操作。1.使用示例一:map对应的值为结构体类...

2019-01-16 14:51:36

Redis使用量暴增,快速定位有哪些大key在作怪

发现redis使用量突然暴增,于是紧急扩容redis,不能影响服务运行。扩容之后,赶紧查找原因,突破口就是寻找存在哪些大key。1.将redis的dump.rdb文件下载到本地(一般redis的持久化文件以rdb的方式存储,在redis配置文件可以找到dump.rdb的存储路径)。2. 用rdbtools工具生产内存报告,命令是 rdb-cmemory,例子:sudordb...

2019-01-04 19:04:22

kafka消息交付语义的分析

一、producer和consumer三种消息交付的语义在kafka中,在producer和consumer这两个维度上都有三种消息交付的语义:Atmostonce----消息可能会丢失但绝不重传. Atleastonce----消息可以重传但绝不丢失. Exactlyonce----每一条消息只被传递一次.二、producer三种消息交付的语义在produ...

2018-12-26 21:04:32

一个使用golang nsq的例子

golangnsq是一个类似于rabbitmq的消息队列。在调研之后,发现其使用方法还是比较简单的,可以参考我以前对nsq介绍和说明的内容。本篇主要介绍go语言实现消息的生产者和消费者的使用方法。1.创建生产者创建生产者的示例如下所示:packagemainimport( "log" "github.com/bitly/go-nsq" "io/ioutil" "s...

2018-12-23 21:52:02

golang日志库logrus的安装和使用

一、安装logrus执行如下命令,即可按照logrusgogetgithub.com/sirupsen/logrus如果无法访问golang,那么可以先clonegithub.com/golang的源码,然后生成cd$GOPATH/src/golang.org/xgitclonehttps://github.com/golang/crypto.gitgo...

2018-12-16 19:10:38

golang之logrus日志框架

一、golang日志库    1.1golang日志库简介     golang标准库的日志框架非常简单,仅仅提供了print,panic和fatal三个函数。对于更精细的日志级别、日志文件分割,以及日志分发等方面,并没有提供支持。所以,催生了很多第三方的日志库。但是,在golang的世界里,没有一个日志库像slf4j那样在Java中具有绝对统治地位。在golang的世界,...

2018-12-13 16:28:40

github.com/spf13/viper go viper包介绍

什么是Viper?Viper是一个Go应用程序完整的配置文件解决方案,包括12-Factor应用程序。它被设计为:在应用程序中工作,可以处理所有类型的配置需求和格式。它支持:设置默认值 从JSON,TOML,YAML,HCL和Java属性配置文件中读取 实时观看和重新读取配置文件(可选) 从环境变量中读取 从远程配置系统(etcd或Consul)读取,并观察变化 从命令行标志读取...

2018-12-08 11:40:14

golang redis客户端

前言:golang操作redis主要有两个库,go-redis和redigo。两者操作都比较简单,区别是:redigo更像一个client,执行各种操作都是通过Do函数去做的;redis-go对函数的封装更好。golang官方推荐使用redigo,所以项目中我使用了redigo。 1.安装redigo代码包gogetgithub.com/gomodule/redigo/red...

2018-12-06 20:57:36

IDE Goland DEBUG报错(could not launch process: decoding dwarf section info at offset 0x0: too short)

背景:在升级GO版本到1.11后发现Goland的Debug报错,如下:couldnotlaunchprocess:decodingdwarfsectioninfoatoffset0x0:tooshort。原因:Goland的dlv不是新版本,导致不能debug调试。解决:1、更新dlv,执行如下命令:goget-ugithub.com/de...

2018-11-22 14:41:38
奖章
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周上午根据用户上周的博文发布情况由系统自动颁发。