Go语言中文网 为您找到相关结果 46

摘录

golang实现直播和点播功能 1.概述 刚开始做直播的时候,还是有些懵逼的,毕竟什么推拉流,什么格式协议完全不懂的,还有第三方的接口也是层出不穷,其实简单的说一下,如图(腾讯直播Api里面盗取的) image 其实所谓的推流就是主播的客户把我们要的播放内容按特定的流程存放于服务器,当然这里面展示的是腾讯云,完后经过通讯云的转码再让观众去观看(拉取),建议不是很明确基础的小伙伴去了解一下,理解起来还是很方便的.腾讯云传送门 而我们今天使用的不是腾讯,而是用golang写好的开源项目livego,livego传送门 2.livego 说实话,文档挺少的,估计是作者工作忙吧,我这里也是简单的使用,不过要提一个小小的bug,估计是go版本的问题,在go1.10中,有一处错误,返回的是2个数值,但是...阅读全文

博文 2020-05-17 22:32:46 雪上霜

golang 将数据库转换为gorm结构

gorm-tools gorm mysql数据库转 struct 工具,可以将mysql数据库自动生成golang sturct结构,带大驼峰命名规则。带json标签 1. 通过当前目录config.toml文件配置默认配置项 out_dir = "." # 输出目录 singular_table = false # 表名复数,是否大驼峰构建 参考:gorm.SingularTable simple = false #简单输出 isJsonTag = true #是否打json标记 [mysql_info] host = "127.0.0.1" port = 3306 username = "root" password = "qwer" database = "oauth_db" 2. 可...阅读全文

博文 2019-07-10 19:32:40 xie1xiao1jun

golang gorm中格式化时间的问题

本文原文地址:golang gorm中格式化时间的问题 欢迎到访我的博客。最近在开发项目时遇到了发现一个问题,gorm虽然可以自动帮你维护 created_at、updated_at、deleted_at这些关键时间字段。但是其原理与弊端需要了解一下。1.使用方法通过自定义一个localtime的结构,来控制时间的格式package utils import ( "time" //"strconv" "fmt" "database/sql/driver" "strconv" ) type LocalTime struct { time.Time } func (t LocalTime) MarshalJSON() ([]byte, error) { //格式化秒 seconds := t.U...阅读全文

博文 2019-07-09 16:17:45 yuanshuli11

国内go get无法使用解决办法

由于我国的政策问题,外网一直是我们渴望而不可求的。在使用go get时我们就可以感觉到,那么我们该怎么解决呢?有VPN代理的绕过本文章就可以了,还有网上说的使用gopm这个工具,类似于Node.js的npm,但是我们从内心还是想用go get,但自己又没有VPN代理怎么办?一个网站解决了我们这个问题——https://goproxy.io/我们可以将go的代理设置为这个网站就可以,具体的教程此网站又明确的步骤,根据你go版本的不同去设置即可——传送...阅读全文

博文 2019-10-12 15:09:12 huhailong

Go打包二进制文件

背景 众所周知,go语言可打包成目标平台二进制文件是其一大优势,如此go项目在服务器不需要配置go环境和依赖就可跑起来。 操作 需求:打包部署到centos7笔者打包环境:mac os方法:进入main.go所在目录,输入如下命令,当前目录便会生成main的可执行文件 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go Windows平台打包到Linux执行不一样,需要输入如下命令 set CGO_ENABLED=0 set GOOS=linux set GOARCH=amd64 go build CGO_ENABLED 表示不使用cgo GOOS 表示目标平台系统(Windows,linux,darwin「mac os」等等) GO...阅读全文

博文 2020-03-11 00:32:52 赵栩彬

一个多功能心跳发送包——yapool

自己实现了一个多功能心跳包 传送门 https://github.com/CrocdileChan/yapool 因为之前的项目需要,我将一部分功能逻辑抽象出来,这个包可以供给做分布式的小伙伴用来造轮子。 基于这个包,可以轻易的实现服务发现、健康监测以及集群数据采集功能,心跳可以分为多个等级,开发者可以在里面定义自己需要传送到center(或者叫master)的讯息,center端可以对该信息进行处理...阅读全文

博文 2017-09-14 11:37:41 Tobirama

golang中比较2个slice

这是用双for的方法实现了2个slice的比较,方法很土,但思路直观 // FuncTest project main.go package main import ( "fmt" ) //检查slice b是否在slice a中 //需要比对的2个slice分别是a和b //isSame 比对的2个slice是否相同 //diffSlice 如果2个slice不同,那么不同的元素将储存在其中 func checkSliceBInA(a []string, b []string) (isIn bool, diffSlice []string) { lengthA := len(a) for _, valueB := range b { temp := valueB //遍历取出B中的元素 f...阅读全文

博文 2016-03-28 15:00:01 u012210379

三门问题(蒙提霍尔悖论)分析与Golang模拟

问题描述 三门问题(Monty Hall problem)亦称为蒙提霍尔问题、蒙特霍问题或蒙提霍尔悖论,大致出自美国的电视游戏节目Let's Make a Deal。问题名字来自该节目的主持人蒙提·霍尔(Monty Hall)。参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门会否增加参赛者赢得汽车的机率? 答案 答案是会。不换门的话,赢得汽车的几率是1/3。换门的话,赢得汽车的几率是2/3。 争议 有人认为,在主持人排除了一个门之后,汽车只可能在另外两个门中,所...阅读全文

博文 2019-10-10 18:32:43 aside section ._1OhGeD

如此,用dep获取私有库

如此,用dep获取私有库 介绍 dep是一个依赖管理工具。它需要1.9或更新的Golang版本才能编译 dep已经能够在生产环节安全使用,但还在官方的试验阶段,也就是还不在go tool中。但我想是迟早的事 :=) 指南和参考资料,请参阅文档 获取私有库 我们常用的git方式有两种,第一种是通过ssh,第二种是https 本文中我们以gitlab.com为案例,创建一个private的私有仓库 通过ssh方式 首先我们需要在本机上生成ssh-key,若没有生成过可右拐传送门 得到需要使用的ssh-key后,我们打开我们的gitlab.com,复制粘贴入我们的Settings -> SSH Keys中 添加成功后,我们直接在Gopkg.toml里配置好我们的参数 [[constraint]] ...阅读全文

博文 2018-03-01 00:40:52 EDDYCJY

【初来就送书?】Gin + Vue 实战教学,看完视频还能抽奖!

Hi,各位简书的小伙伴。我们是 OceanLearn 教学团队,第一次来到简书宝地进行视频的推广~这次,我们录制了关于 Golang 语言 Web 框架 【Gin】 与前端框架【Vue】的实战教学视频。同时我们也推出了【关注B站账号+评论视频】即可参与抽奖得图书的活动,欢迎各位简书的小伙伴参与~你问送什么?当然是送的 Go 经典图书拉~ 【Go程序设计语言】豆瓣评分 8.9~绝对是 Go 语言学习必备书籍,好啦,废话不多说,传送门在下方~视频传送门:https://www.bilibili.com/video/av92519169/抽奖活动介绍传送门:https://www.bilibili.com/read/cv487155...阅读全文

博文 2020-03-01 03:32:49 OceanLaern

go设置时区

time包设置时区方法: ``` l,_ := time.LoadLocation("Asia/Shanghai") fmt.Println(time.Now().In(l)) l,_ = time.LoadLocation("America/Adak") fmt.Println(time.Now().In(l)) ``` LoadLocation 有个问题,它依赖于 IANA Time Zone Database (简称 tzdata 吧) 这个数据库,一般linux系统都带了,但是windows系统就没带。 没有 tzdata 就会从$GOROOT/中找。对于没有安装go环境的windows系统来说,就没办法通过 `LoadLocation` 设置时区。 但是也有办法,我们可以自己把tz...阅读全文

博文 2018-05-24 18:39:52 keepeye

本饼干的日本码农就职总结(感想篇)

写在前面 如果你还没有读过本饼干的日本找工作总结(索引篇),建议先行阅读,传送门????‍♂️ 本饼干的日本码农就职总结(开篇) 一点感想 我可真是够啰嗦的,最开始只是单纯的想总结一下就活季忙活了3个月的总结,拖拖拉拉写了1个月,硬是写了这么长,还写成了连载。不过也是有些许好处的吧,对我个人来说在看网上面经的经验,看到一些感兴趣公司的描述,总是希望博主多写一些。 从3月底下旬决定找工作,到6月下旬完成所有面试,刚好三个月的时间。想起来还是蛮长的,但结束却真的是一瞬间的。最后的offer和rej通知在同天收到,未来2~5年的人生,就这么突然下了定论。因为认定年轻人的第一份工作蛮重要,所以有一些感慨。虽然也会酸酸同龄人,小酸怡情,大酸可就伤身了。如果一直盯着年收500w、800w和1200w的差...阅读全文

博文 2019-08-10 16:02:38 一枚大曲奇

怎样理解golang的异步?

都说golang,可以用同步的思想写出异步的代码,不知道大家都是如何理解这句话的?
下面这段代码算是这句话的一个例子吗? ```go func sum(x,y int,c chan int){ time.sleep(5*time.Second) c <- x + y } func another(c chan int){ fmt.Println(<-c) //管道有数据了直接继续执行,相当于异步通知 do something else... } func main(){ c := make (chan int) go sum(24,18,c) go another(c) fmt.Pr...阅读全文

leetcode 206 反转链表

题目描述 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 解题思路 详见代码 代码实现 // ListNode Definition for singly-linked list. type ListNode struct { Val int Next *ListNode } func reverseList(head *ListNode) *ListNode { if head == nil || head.Next == nil { return head } var prev *ListNode cur := head for cur != nil...阅读全文

博文 2018-10-23 14:34:43 tomorrowwu

一个比 UUID 快百倍的唯一 ID 生成器

前言 在游戏开发中,我们经常要为请求、对象或者什么其它东西设置全局唯一的 ID。常见的选择有随机数、时间戳、UUID、用 Redis 生成 ID 等,这些选择要么可能重复,要么太慢,于是我开发了 WUID,一个极快的唯一 ID 生成器。 WUID 比 UUID 快 100 倍,比用 Redis 生成 ID 快 4600 倍。 核心设计 WUID 顺序生成 64 位整数,其高 24 位是从外部存储加载的,每次加载自动加 1。 目前支持的外部存储包括:Redis、MySQL、MongoDB。 Benchmarks BenchmarkWUID 200000000 9.38 ns/op 0 B/op 0 allocs/op BenchmarkWUID-4 200000000 9.19 ns/op 0...阅读全文

博文 2018-01-28 11:34:35 edwingeng

[BFS/DFS]HOJ2581Go

传送门:Go Go My Tags (Edit) Source : Stanford Programming Contest 2007 Time limit : 1 sec Memory limit : 64 M Submitted : 201, Accepted : 117 In the game of Go, two players alternate placing black and white stones on lattice points of an n * n grid, each attempting to surround as much territory(i.e., regions of unfilled lattice points) as possible. At...阅读全文

博文 2015-12-23 04:00:00 u010160562

sspanel按月结算,修改go版代码【web api】

开头感谢sspanel的作者orvice大神!【转载请注明】 博主最近在搭建sspanel v3,中间坑确实挺多的,我回头开贴补充一下,ss服务器端我选择了orvice的shadowsocks-go mu版,因为作者是基于流量控制的机理,实际上奸商都是通过时间控制(233),所以我就寻思在作者的基础上加以修改,添加时间的限制。 上一篇博客中我实现了mysql api的修改,这一篇是web api。开始我以为orvice是在php api做控制的,看了api发现不是(还是webapi直接控制好啊,修改方便= =),数据库修改等请去看上一帖传送门 找到user结构体,路径shadowsocks-go-mu\mu\webapi\user.go 结构体修改,注意,这里的字段和json字段不能相同,不...阅读全文

博文 2016-09-02 18:00:04 w2180z

golang 将数据库转换为gorm结构

# [gorm-tools](https://github.com/xxjwxc/gormt) ### [gorm](https://github.com/xxjwxc/gormt) mysql数据库转 struct 工具,可以将mysql数据库自动生成golang sturct结构,带大驼峰命名规则。带json标签 ----------- ## 1. 通过当前目录config.toml文件配置默认配置项 ``` out_dir = "." # 输出目录 singular_table = false # 表名复数,是否大驼峰构建 参考:gorm.SingularTable simple = false #简单输出 isJsonTag = true #是否打json标记 [mysql_info...阅读全文

博文 2019-10-11 11:36:20 xie1xiao1jun

分水岭 golang入坑系列

第三式开篇语有些负面, 所以这里就不贴了。有兴趣的自己可以去看看 https://andy-zhangtao.gitbooks.io/golang/content/ 。怒发冲冠,意气之作。看完就完了,别当真。把下面的东西当真就行。 不看内容,只看标题还以为这是一个小说呢。 如果哪天心血来潮,没准会写一篇小说。但自从参加朋友婚姻之后,就受到了打击。 同样进入30岁,有的同学已经年入上百万,前呼后拥。 而自己除了会写点"水货"代码,别无他长。 感慨良多,还是感觉自己不是一块能依靠写代码发家致富的料。 所以会分出一部精力,来考虑如何实现技术变现。 但这个系列仍然会写完,不会虎头蛇尾。因此本节起名:分水岭。(这里为cnblogs的乁卬杨同学发一封表扬信,这位同学大胆留言说第三式写的有些负面,我重看了...阅读全文

博文 2017-12-01 00:00:01 vikings-blog

Golang 中的回环栅栏

这篇文章中我们会研究一个基本的同步问题。并使用 Golang 中原生的 Buffered Channels 来为这个问题找到一个简洁的解决方案。 ## 问题 现在假设我们我们有一堆 workers。为了充分发挥 CPU 多核的能力,我们让每个 worker 运行在单独的 goroutine 中: ```go for i := 0; i < workers; i++ { go worker() } ``` worker 需要做一系列的工作 job: ```go func worker() { for i := 0; i < 3; i++ { job() } } ``` 每次 job 前都需要在所有的 worker 上同步地先进行一次准备 bootstrap 的过程。也就是说,每个 worker...阅读全文

博文 2018-03-30 22:38:20 snowInPluto

golang关于一些新手不注意会出现的小问题

前言 最近在整理之前写程序,学习时所记录的有道云笔记,发现一些有意思的小点跟大家分享一下。如有错误请大家给指出 一、闭包 defer 闭包(匿名函数) func test(){ i, n := 1 ,2; defer func(a int){ fmt.Println("defer:", a , n); //n被闭包引用 }(i) //复制i的值 i , n = i+1,n+2; fmt.Println(i , n); } 我们看一下结果: 2 4defer: 1 4 为什么会这样?是因为闭包复制的是原对象指针,出现了延迟引用现象 (加上defer的延迟调用,正好可以解释上面程序的延迟引用现象)。我们在使用闭包的时候要注意这个问题,同样在for 循环中 也会出现类似现象。 感谢“”小强”,增加...阅读全文

博文 2017-12-08 11:00:00 turnswing

sspanel按月结算,修改go版代码【web api】

开头感谢sspanel的作者orvice大神!【转载请注明】 博主最近在搭建sspanel v3,中间坑确实挺多的,我回头开贴补充一下,ss服务器端我选择了orvice的shadowsocks-go mu版,因为作者是基于流量控制的机理,实际上奸商都是通过时间控制(233),所以我就寻思在作者的基础上加以修改,添加时间的限制。 上一篇博客中我实现了mysql api的修改,这一篇是web api。开始我以为orvice是在php api做控制的,看了api发现不是(还是webapi直接控制好啊,修改方便= =),数据库修改等请去看上一帖传送门 找到user结构体,路径shadowsocks-go-mu\mu\webapi\user.go 结构体修改,注意,这里的字段和json字段不能相同,不...阅读全文

博文 2016-09-05 22:00:01 w2180z

Golang语言社区 课程2018年11月18日 更新说明

Golang语言社区 课程2018年11月18日 更新说明 1 从零搭建游戏服务器-第二期: 第二十二节:服务器模拟玩家行走测试3 https://study.163.com/course/introduction.htm?courseId=1005743022&share=2&shareId=400000000538037 2 Go语言开源框架分析: Leaf框架:Leaf实战项目传送门 https://ke.qq.com/course/345679?tuin=5b20ed37 社区福利: 彬哥笔记 --2 掌握Go语言可以给你带来什...阅读全文

博文 2018-11-18 03:34:38 Golang语言社区

一种常驻运行程序模块--逻辑协程+后台协程的方案

[传送门](https://github.com/ronow2cn/sched) ### 逻辑协程+后台协程的方案: #### **逻辑协程loop**: 通过`loop.Push(f func)`函数将需要运行的函数,push进逻辑协程中运行。 该逻辑协程还可以运行定时函数。通过`loop.SetTimeOut(ts time.Time, f func())`函数设置`ts`时间调用`f`函数。利用函数迭代,可以实现定时循环调用。 #### **后台协程asyncop**: 通过`asyncop.Push(op func(), cb func())`函数将需要运行的函数,push进后台协程中运行。 `op`:需要运行的后台函数。 `cb`:设置回`loop`协程运行的函数。可以设置为`ni...阅读全文

博文 2017-09-07 10:08:38 ronow2cn

leetcode 142 环形链表的环的第一个节点

题目描述 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 说明:不允许修改给定的链表。 进阶: 你能否不使用额外空间解决此题? 解题思路 无环链表,最后一个节点为nil,有环链表可以无限循环next下去 不用额外空间:快慢节点,慢节点一次走一步,快节点一次走两步,当进入环中,每次循环,快节点会离慢节点近一步,快节点最终会追上慢节点 用额外空间: 用map存走过的节点,第一个走过的节点就是环的入口 不用额外空间 环形链表 设:链表头是X,环的第一个节点是Y,slow和fast第一次的交点是Z。各段的长度分别是a,b,c,如图所示 第一次相遇时slow走过的距离:a+b,fast走过的距离:a+b+c+b 因为fast的速度是slow的两倍,所以fast走的距离是...阅读全文

博文 2018-10-26 19:34:40 TomorrowWu

golang协程

最近在使用golang做一个爬虫,涉及到多线程,golang是没有多线程的,但是有一种更轻量级能达到类似多线程的效果,协程,golang原生支持协程。 一、怎么理解协程? 协程是golang语言特性的实现,比线程更低一级的运行方式,它不属于操作系统功能,不由操作系统分配cpu、内存,而是由golang自己实现运行资源的调度使用。也正是因此执行效率要高于线程。但是协程需要主动让出控制权后供其他协程运行。 二、如何创建协程? 这里有2种方式创建: 1、使用go创建 go sf("a") 2、使用go函数块创建 go func() { sf("b") }() 三、使用协程的问题 1、主线程执行完成后直接结束了,此时若协程未执行完成,也会直接结束,毫无征兆。 下面是个例子 func main() {...阅读全文

leetcode 24 两两交换链表中的节点

题目描述 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 说明: 你的算法只能使用常数的额外空间。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 代码实现 // ListNode Definition for singly-linked list. type ListNode struct { Val int Next *ListNode } func swapPairs(head *ListNode) *ListNode { if head == nil || head.Next == nil { return head } var prev *ListNode cur := head h...阅读全文

博文 2018-10-26 12:34:38 tomorrowwu

unhtml: HTML unmarshaler

最近要用 `golang` 写一个需要解析 `HTML` 的项目,到网上找了一个库叫 `goquery`。虽然它的 `API` 挺不错,`css selector` 基本上也全支持了,但写这种代码果然还是有点无聊,于是我就想,为什么不能跟 `go` 的 `json` 库和 `xml` 库一样,直接 `Unmarshal(HTML)` 呢? 然后我花了两天时间撸出了 `unhtml` -> [Github 传送门](https://github.com/Hexilee/unhtml#types) ### 样例 & 性能 有个 `HTML` ```html var AllTypeHTML = []byte(` 阅读全文

博文 2018-10-02 09:37:17 Hexilee

使用GO 爬取豆瓣top250并保存成csv格式文件

>[最终效果传送门](https://www.liuxinc.ink/2019/10/13/Golang-Scraping%EF%BC%88%E4%BA%8C%EF%BC%89/) ## 思路 1. 使用 colly.visit 访问目标网页 2. 通过每张页面中 "下一页"的 url 依次访问所有页面 3. 在每一页中使用colly.OnHTML 解析获得需要的数据 4. 利用 go 标准库 encoding/csv 来保存csv格式文件 ## 代码实现 ```go package main import ( "encoding/csv" "fmt" "github.com/gocolly/colly" "os" "sort" "strconv" ) type Film struct { ...阅读全文

macOS安装Golang开发环境

安装前需要Homebrew环境 安装Homebrew: 命令行输入: ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 另外建议切换国内源:传送门 安装并配置golang: 查看可用的go版本 brew search go 看到go@x.x即为可用版本。 安装go brew install go@1.9 安装成功后,配置环境变量 vim ~/.bashrc或vim ~/.zshrc 根据你实际情况而定。如zsh就是编辑~/.zshrc文件, bash就是~/.bash_profile文件,官方教程默认是vim ~/.bashrc #GOROOT export GO...阅读全文

博文 2019-06-16 15:02:39 Aris_TnT

leetcode 142 环形链表的环的第一个节点

题目描述 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 说明:不允许修改给定的链表。进阶: 你能否不使用额外空间解决此题? 解题思路 无环链表,最后一个节点为nil,有环链表可以无限循环next下去 不用额外空间:快慢节点,慢节点一次走一步,快节点一次走两步,当进入环中,每次循环,快节点会离慢节点近一步,快节点最终会追上慢节点 用额外空间: 用map存走过的节点,第一个走过的节点就是环的入口 不用额外空间 设:链表头是X,环的第一个节点是Y,slow和fast第一次的交点是Z。各段的长度分别是a,b,c,如图所示 第一次相遇时slow走过的距离:a+b,fast走过的距离:a+b+c+b 因为fast的速度是slow的两倍,所以fast走的距离是slow的两...阅读全文

博文 2018-10-26 19:34:38 tomorrowwu

【Golang】作为新gopher的注意事项

文传送门: https://blog.rubylearning.com/best-practices-for-a-new-go-developer-8660384302fc 总结: 在学习过程中,避免使用第三方库,尽量用官方库完成所需功能。 多学习使用接口interface,不要过多的把注意力放在channel, concurrence, goroutines上,尽管它们也是Golang的一大亮点。 可以通过了解标准库,如net/http来学习并发。可以参考Rob Pike的concurrency videos 不要用其他语言的经验来使用golang 组合中继承,拥抱接口,不是所有东西都是一个对象。 阅读Effective go (https://golang.org/doc/effecti...阅读全文

博文 2020-03-20 21:32:46 冉小妹Ran

doublejump - 快速、简洁的一致性哈希库,Google Jump 算法的改进版

Overview doublejump 的核心是 Google Jump 一致性哈希算法,这个实现弥补了该算法的最大缺点:不能删除节点。 传送门 https://github.com/edwingeng/doublejump Benchmark BenchmarkDoubleJumpWithoutLock/10-nodes 50000000 27.6 ns/op BenchmarkDoubleJumpWithoutLock/100-nodes 30000000 42.7 ns/op BenchmarkDoubleJumpWithoutLock/1000-nodes 30000000 54.1 ns/op BenchmarkDoubleJump/10-nodes 20000000 72.9 n...阅读全文

博文 2018-11-19 19:34:40 edwingeng

拜托,面试别再问我回文链表了!!!(leetcode 234)

题目描述 请判断一个链表是否为回文链表。 示例1: 输入: 1->2 输出: false 示例2: 输入: 1->2->2->1 输出: true 进阶: 你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题? 解题思路 思路1 遍历链表,用数组存下每个节点的值,然后从数组两头开始向中间遍历,是否相等 时间复杂度O(n),空间复杂度O(n) 思路2 遍历一遍链表,得到链表长度n,根据长度的奇偶,找到中间节点,将左半边的链表反转,然后从中间节点分两个方向向左右两边遍历,是否是回文;对左半部分链表进行反转,还原为最初的链表 只需要固定的若干个临时变量,不需要额外开辟空间 时间复杂度为O(n),空间复杂度为O(1) 代码实现 // ListNode Definition for sing...阅读全文

博文 2018-10-23 20:34:58 tomorrowwu

使用 JS 建立一个 Mixin 机器人

官方推荐使用 golang ,对于前端人员的学习门槛还是有一些。所以在这里发布一个 js 写的教程。 读完此篇文章您将获得: 一个收到消息会自动回复 hello mixin 的机器人。 1. 开发基础 node 环境,笔者目前使用v10.15.1,更高亦可。 JavaScript 语法基础 Mixin 机器人 session 及 secret 2. 开发之前 能够找到并读到这篇文章,想必对 Mixin 以及 Mixin Messenger 都比较熟知。所以申请 Mixin 机器人的 session 和 secret 并不是本文的主要内容。如有需要请进传送门 Mixin Messenger 机器人接入指南 这个时候,你应该已经获取到了 Mixin 的 session 文件 和 secret 信...阅读全文

博文 2020-02-24 21:32:59 刘泽美Neo

技术开源项目从零到一的心路历程

这是一次非常漫长过程,整个项目大约经历了2年的开发与维护,期间重大的重构了十几次架构。首先一句话介绍一下整个项目:**基于 Node.js 的服务端 web 开发框架**在这里我分享一下我的经验,希望能够帮助<<<**想做开源的同学**>>>项目地址:传送门背景在公司中,我们一致都是使用 koa 来作为 node 的底层,对 koa + 各种中间件封装成了一个简易的框架,但是期间遇到了很多不好解决的问题,比如:ctx 的属性如何维护,如何保证框架的扩展性(完全通过中间件扩展框架既臃肿又不容易维护)等等,所以我自己创建了这个项目,开始了这次开源项目之旅(受 springboot 与 laravel 的启发)。。。框架设计基于 TypeScript 开发为了增加用户开发的体验(代码提示)和框架的...阅读全文

博文 2020-03-11 17:33:00 弦止音凉

leetcode 24. 两两交换链表中的节点

题目描述 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 说明: 你的算法只能使用常数的额外空间。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 代码实现 // ListNode Definition for singly-linked list. type ListNode struct { Val int Next *ListNode } func swapPairs(head *ListNode) *ListNode { if head == nil || head.Next == nil { return head } var prev *ListNode cur := head ...阅读全文

博文 2018-10-26 14:35:17 TomorrowWu

leetcode 25. k个一组翻转链表

题目描述 给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。 示例: 给定这个链表:1->2->3->4->5 当 k = 2 时,应当返回: 2->1->4->3->5 当 k = 3 时,应当返回: 3->2->1->4->5 说明: 你的算法只能使用常数的额外空间。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 解题思路 1. 取链表的前K个节点,如果够K个节点,就截断后进行反转,不够K个节点,说明处理完了,return 2. 反转完前K个节点后,使用递归,处理后面的链表 代码实现 // ListNode Definition for singl...阅读全文

博文 2018-10-27 09:34:41 TomorrowWu

搭建网站,和把大象装冰箱一样简单?

摘要: 一个流行了很多年的梗,至今仍然热度不减,当年本山大叔在春晚上说出这个段子时,不知是不是预料到了很多人这辈子都指着这个笑话活着了。 一个流行了很多年的梗,至今仍然热度不减,当年本山大叔在春晚上说出这个段子时,不知是不是预料到了很多人这辈子都指着这个笑话活着了。 Q:“要把大象装冰箱,总共分几步?” A:“分三步。1. 把冰箱门打开;2.把大象放进冰箱;3.把冰箱门关上”。 一个听上去很困难的事情,在脑筋急转弯的世界里,不用考虑它的实现成本和实现可行性,其实只需分三步即可完成。其实生活中的很多事,换个角度,也是如此。 搭建网站,这个词,很多人都听说过,但是当你还未了解建站的具体步骤时,你会觉得这件事好难,没有技术底子很难实现。其实,当你勇敢的打开冰箱门以后,你会发现...阅读全文

golang 将数据库转换为gorm结构

gormt 一款mysql数据库转 struct 工具,可以将mysql数据库自动生成golang sturct结构,带大驼峰命名规则。带json标签 1. 通过当前目录 config.yml 文件配置默认配置项 out_dir : "." # 输出目录 singular_table : false # 表名复数,是否大驼峰构建 参考:gorm.SingularTable simple : false #简单输出 is_json_tag : false #是否打json标记 is_foreign_key : true #是否导出外键关联 mysql_info : host : "127.0.0.1" port : 3306 username : "root" password : "qwer...阅读全文

博文 2019-12-30 16:32:40 xxjwxc