LeetCode(6) 最长回文字符串

题目:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。思路:看到这道题目,首先想到回文字符串,是一个沿正中字符串对称的字符串,一个字符串如果时回文字符串,去除两端的字符串也必为回文字符串,由此设中间的字符串为子状态,应该可以用动态规划的方式求解。这里设置储存状态的数组为dpi,为字符串(i~j)子串是否为回文字符串。编程思路如下:具体代码如下所示:定义了一个paliInfo结构体,用于储存最长子串的信息。相比起光放给出的算法删除了对于j>i部分的循环。实际...阅读全文

Segmentfault 2020-11-04 21:32:33 xbdyhh

golang 设计模式 之 我对设计模式的思考

最近在学设计模式,我对学习一向是秉持开放的态度,所以也和很多同事交流,告诉他们我在学设计模式,希望能从他们口中,得到一些经验最终,我还是得到了许多经验,但是,我发现一个共性,就是同事对设计模式不太在乎,也没有深入研究,还引用了go语言创始人的一句话告诫我,"我们希望大家忘记java中那繁多的设计模式,go的组合足够解决大家的问题"(大致是这个意思,我也没去验证真伪)我回去思考了下这个问题,我有两个结论:一,对于大佬们在网络上对技术理论和实践的评判,我认为对于新生技术,可以参考,避免自己走入坑中。...阅读全文

Segmentfault 2020-11-04 16:32:37 木申

一个隐藏在方法集和方法调用中且易被忽略的小细节

来自公#众#号:新世界杂货铺 作为一个长期从事Go语言开发的程序猿,笔者不敢说自己是老油条但也勉强算一个小油条。然而就在今天,笔者研究TLS/SSL握手源码的时候,突然灵光一闪,想到了一个和自己认知不符的现象,于是赶紧写了一个例子验证一番,结果当头一棒直到码这篇文章时依旧懵逼。 话不多说,上锤! image 不好意思,不是这个锤,是下面这个: type set interface { set1(s string) set2(s string) } type test struct { s str...阅读全文

简书 2020-11-02 10:32:40 新世界杂货铺

深入解析Go-Slice

Slice一个slice是一个数组某个部分的引用,在内存里,它是一个包含3个域的结构体:指向slice中第一个元素的指针,slice的长度,以及slice的容量。数组的slice并不会是实际复制一份数据,只是创建一个新的数据结构,包含另外的一个指针,一个长度和一个容量数据。由于slice是不同于指针的多字长结构,分割操作并不需要分配内存。底层的实现(usr/loca/src/runtime/slice.go)// Go 1.12.9 type slice struct { array unsaf...阅读全文

Segmentfault 2020-11-04 15:32:33 Willem97

爬虫2 headless chrome

Headless Chrome 是 Chrome 浏览器的无界面形态,使用命令行的形式替代GUI,可以使用GUI模式下Chrome的功能。一般情况下用于自动调试,也可以用作爬虫。Headless Chrome下的爬虫可以完全的模拟普通用户在Chrome中操作的行为,适用于一些需要执行js的操作。 使用 mac中使用Headless Chrome需要先安装Chrome # 访问https://www.sina.com.cn/并输出html到标准输出 chrome --headless --dump...阅读全文

socks5身份验证

上一篇,socks5简介的握手阶段,忽略了身份验证流程,这里来补充一下 身份验证方法选择 重现客户端发出第一帧: +----+----------+----------+ |VER | NMETHODS | METHODS | +----+----------+----------+ | 1 | 1 | 1 to 255 | +----+----------+----------+ NMETHODS代表客户端支持的身份验证方法数量,METHODS代表客户端支持的身份验证方法,有多种:0x01:G...阅读全文

简书 2020-11-02 00:32:38 小风吹的我乱了

LeetCode(5) 最小栈

题目:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。思路:栈相关的进栈、出栈的操作不在赘述,这道题目的主要问题出在了在常数时间内查询栈内最小数,这里采用辅助栈的方式,每次压栈是,除了把需要压入的数压入储存栈的同时,将当前最小数比较后压入最小栈。出栈时也同时删除两栈的栈顶元素。一下为代码实现。type Mi...阅读全文

Segmentfault 2020-11-04 13:32:32 xbdyhh

数据管道 Logstash 入门

Logstash 入门Logstash 是什么Logstash 就是一个开源的数据流工具,它会做三件事:从数据源拉取数据对数据进行过滤、转换等处理将处理后的数据写入目标地例如:监听某个目录下的日志文件,读取文件内容,处理数据,写入 influxdb 。从 kafka 中消费消息,处理数据,写入 elasticsearch 。为什么要用 Logstash ?方便省事。假设你需要从 kafka 中消费数据,然后写入 elasticsearch ,如果自己编码,你得去对接 kafka 和 elasti...阅读全文

Segmentfault 2020-11-03 22:32:32 rife

gRPC学习以及实践

相信大家都听过RPC、HTTP、Socket等协议,他们均可用于业务中来进行数据通信,又根据各自协议的特点,应用场景也比较多样、复杂,那大家是否听过或者了解gRPC呢?用来做什么呢?我们就来了解一下gRPC以及其用途。 介绍 用官方网站1一句话介绍介绍gRPC A high-performance, open source universal RPC framework. 即:高性能、开源的通用型RPC框架 说起RPC,人们常会和HTTP做对比,两者在底层数据传输时本质基本一致,即全部基于TCP...阅读全文

简书 2020-11-01 21:32:41 Reaburoa

优雅的使用 Brew 切换 Go 版本

友情提示:此篇文章大约需要阅读 3分钟42秒,不足之处请多指教,感谢你的阅读。 订阅本站Brew 是 Mac 上包管理工具,和 Linux 上的 apt 、yum、rpm 一样,可以提供非图形化软件的安装,昨天在打造宇宙最强 IDE 的时候,使用brew工具更新了一下软件包,是我的 Go 版本升级到了最新版本,同时之前配置的多版本 Go 抹掉了,现在写一下记录,你如果需要的话可以使用一下。之前写过一个使用 GVM 版本管理工具的文章,这个是第三方工具管理的,都比较好用,你可以根据自己的需求安装。...阅读全文

Segmentfault 2020-11-03 18:32:33 Meng小羽

golang关键字fallthrough

这是一个搭配switch使用的关键字,默认在switch中,每个case都会有一个隐藏的break,如果想要去掉隐藏的break,我们就可以使用fallthrough来进行取代,举例如下: package main import ( "fmt" ) func main() { a := 2 switch a { case 1: fmt.Println("a=1") case 2: fmt.Println("a=2") case 3: fmt.Println("a=3") case 4: fmt....阅读全文

简书 2020-11-01 16:32:38 追梦人在路上不断追寻

为什么 Go 占用那么多的虚拟内存?

前段时间,某同学说某服务的容器因为超出内存限制,不断地重启,问我们是不是有内存泄露,赶紧排查,然后解决掉,省的出问题。我们大为震惊,赶紧查看监控+报警系统和性能分析,发现应用指标压根就不高,不像有泄露的样子。那么问题是出在哪里了呢,我们进入某个容器里查看了 top 的系统指标,结果如下:PID VSZ RSS ... COMMAND 67459 2007m 136m ... ./eddycjy-server从结果上来看,也没什么大开销的东西,主要就一个 Go 进程,一看,某同学就说 VSZ 那么...阅读全文

Segmentfault 2020-11-03 15:32:34 煎鱼

Golang

默认安装目录: /usr/local/go/ 编译器启动文件: /usr/local/go/bin/go 配置环境 export PATH=/usr/local/go/bin:$PATH src 放置编写的go代码和依赖 crm app.go bin 编译可执行文件 pkg 包文件 公共文件 //Go安装目录 export GOROOT=/usr/local/go //代码和便有之后的文件相关代码 export GOPATH=/Users/zoe/GolangProjects //存放可执行编译...阅读全文

简书 2020-11-01 13:32:38 __子不语__

我一定坚持

和大学姐的谈话结束已经过去两周了,我发现与学姐的每一次沟通交流都能解开我很多的心结。老师想的真的很周到和全面,以往的我很难使自己信服任何人,接受别人的言论,我总是认为自己的判断和选择是对的。但是这次老师对我采取的措施和方法我选择了完全的接受,即使心中有很多的不解,但我知道老师的思考方式和深度是我所想象不到的。对于不同的人,都会有不同的教育培养方式。大学姐给说了很多很多,这一次我全都听了进去,听到了心里。我的前面有明灿和志勇学长,都是我这个专业,他们所能完成的事情,我怎么可以落下?前面有如此优秀的...阅读全文

简书 2020-11-01 12:32:40 胡超_强化班

golang实现SSO(单点登录)

单点登录是一个我们平常经常能见到的功能,就是一个账号同一时间只能在一台设备上登录,后登录的设备会挤掉先登录的设备,比如我们的手机qq,如果在自己手机上登录了自己的qq账号,然后另一部手机上接着登录自己的qq,那么自己手机上的qq就会下线。 实现单点登录 实现单点登录的思路很简单,就是一个账号对应的token同一时间只有一个生效,也就是说每次用户登录除了生成一个token保存起来,还要删除掉之前的token。 用户登录,服务器生成token保存至redis(设置有效时间),并将token返回给前端...阅读全文

简书 2020-11-01 11:32:40 lannisiter

gnet框架

1: golang 原生的网络库是goroutinue peer connection, 使用方便, 开发成本极低但是如果为了追求极致的性能, 推荐gnet2: 因为海量连接中活跃的连接可能只有几十个, 那么这时候你为每个连接开协程就收益不是很高了, 这时候采取异步网络模型就会降低很多资源, 相当于一个subreact管理了很多连接, 这样就少开了很多协程, 同时这样也存在一个问题, 就是不让你的subreact阻塞, 因为一旦阻塞, 就让影响很多连接3: 把阻塞的操作扔到工作池阅读全文

简书 2020-11-01 09:32:38 samYang2

Golang Gcache中的LRU和LFU

一、LRU SET GET DELETE Loader 二、LFU SET GET DELETE Loader 多种淘汰策略,LRU、LFU、simple; 提供loder,singleflight方式; 时间窗口的概念是通过整个cache表的过期时间来实现的; 过期删除,访问时才被删除; 过期和淘汰策略是分开的:访问过期会删除,添加元素会淘汰(淘汰时不看过期时间); LRU/LFU更新记录时开销O(1),假如用堆之类相比开销很大; 大锁的改进: 读写锁 锁的粒度,整个map,单独item 锁的...阅读全文

简书 2020-10-31 23:32:40 梦工厂

Golang中[]byte与string转换

string类型和[]byte类型是我们编程时最常使用到的数据结构。本文将探讨两者之间的转换方式,通过分析它们之间的内在联系来拨开迷雾。两种转换方式标准转换go中string与[]byte的互换,相信每一位gopher都能立刻想到以下的转换方式,我们将之称为标准转换。 // string to []byte s1 := "hello" b := []byte(s1) // []byte to string s2 := string(b)强转换通过unsafe和reflect包,可以实现另外一种转...阅读全文

Segmentfault 2020-11-02 23:32:31 机器铃砍菜刀

Golang

默认安装目录: /usr/local/go/编译器启动文件: /usr/local/go/bin/go配置环境export PATH=/usr/local/go/bin:$PATH - src 放置编写的go代码和依赖 - crm - app.go bin 编译可执行文件 pkg 包文件 公共文件//Go安装目录export GOROOT=/usr/local/go//代码和便有之后的文件相关代码export GOPATH=/Users/zoe/GolangProjects//存放可执行编译之后...阅读全文

简书 2020-10-31 21:32:38 __子不语__

go-machinery入门教程(异步任务队列)

前言哈喽,大家好,我是asong,这次给大家介绍一个go的异步任务框架machinery。使用过python的同学们都知道Celery框架,machinery框架就类似于Celery框架。下面我们就来学习一下machinery的基本使用。自己翻译一个粗略版的machinery中文文档,有需要的伙伴们公众号自取无水印版:后台回复:machinery即可领取。或者github下载:https://github.com/asong2020/...抛砖引玉我们在使用某些APP时,登陆系统后一般会收到一封...阅读全文

Segmentfault 2020-11-03 13:32:33 asong