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

Golang二分查找(适用任意类型,只需实现接口)

package main import ( "fmt" ) type SortedList interface { Len() int Cmp(i int) int8 } type Person struct { age int } type SortedIntList []Person func (p Person) Cmp(cmp Person) int8 { if p.age == cmp.age { return 0 } else if p.age > cmp.age { return 1 } else { return -1 } } func (s SortedIntList) Cmp(i int) int8 { return s[i].Cmp(s[len(s)-1]) } fun...阅读全文

博文 2019-07-30 03:32:38 MrCloudPeak

go-反射机制

思路 结构对象映射出来:类名,成员名,成员值 package dao import ( _ "ChbeeGoTest/models" "ChbeeGoTest/utils/myLog" "fmt" "reflect" "strings" ) type Dao struct { } var DaoInter = new(Dao) //将对象映射到表格中,返回主键ID func (this *Dao) Insert(obj interface{}) { //对象转表格 table := obj2table(obj) fmt.Println(table.TbName) //序列化列名 cloums := strings.Join(table.Cloum, ",") fmt.Println(clou...阅读全文

博文 2016-05-01 22:00:02 shuanger_

使用Atom配置Golang开发环境

Golang作为一种新的编程语言,也有着非常多的IDE,其中个人觉得使用IntelliJ开发是一种很不错的选择,但是免费版有功能是缺失的,如果又不想付费购买专业版的,Atom就是一种不错的选择。Atom是更为先进的文本代码编辑器,是由Github打造的下一代编程开发利器,Atom是开源的,美观,各种炫酷效果,还有有各种强大的插件。Atom上面配置Golang的开发环境,使用Atom作用IDE,发现效果很不错,下面记录下配置的步骤。首先要先安装下Atom,可以直接下载安装。安装Golang,Mac上面的安装可以参考:http://www.jianshu.com/p/358cbc939569 go-plus插件 go-plus是Atom上面的一款开源的Golang开发环境插件,项目地址:http...阅读全文

博文 2017-02-10 14:46:36 姜家志

GO语言预备知识 2019-5-8

昨晚大概3点钟睡了,现在10点半,才刚刚起来,新加坡的窗外暴雨滂沱。感觉像是要山洪爆发一样,继续看视频吧,反正也出不去。一、P20:转义字符-类似c语言,注意\r 回车符与\n换行符的区别。/r从当前行的最开头开始输出,覆盖掉原有内容。如:美利坚合众国\r希拉里输出结果:希拉里合众国P21:常见错误,(过于基础可以跳过)P22:注释,类C (跳过)注意块注释不能嵌套P23:代码风格-1、官方推荐尽量用行注释 快捷键ctrl+/ 2、正确的缩进和空白 快捷键shift+tab 整体向左移动 tab 控制整体向右移动 3、gofmt 指令 gofmt (-w)test.go 4.运算符两边习惯性加一个空格 5.func 风格举例 正确风格func main(){XXXXXXXXX}错误风格fun...阅读全文

博文 2019-05-08 19:35:18 竖琴犹奏相思苦

用Golang写一个搜索引擎 (0x04) --- B+树

本篇较长较枯燥,请保持耐心看完。 前面两章介绍了一下倒排索引以及倒排索引字典的两种存储结构,分别是跳跃表和哈希表,本篇我们介绍另一种数据结构,他也被大量使用在信息检索领域,我在github上实现的搜索引擎的词典也是用的这个数据结构,它就是B+树。 首先,我们看看什么是树,树是程序设计中一个非常基础的数据结构,记得大学时候的数据结构课,链表,栈,队列,然后就是树了,虽然那时候想必大家都被前序遍历,中序遍历,后序遍历折腾过,不过树确实是一种非常有用的数据结构。 上一篇我们说过,表2的第一列首要解决的问题就是能快速找到对应的词,然后找到对应词的倒排列表,除了跳跃表和哈希表,B+树也能满足条件,B+树是B树的变种,我们B树我们就不看了,感兴趣的大家可以直接去google一下,我们主要讲的是B+树,下...阅读全文

博文 2017-02-09 08:18:01 吴yh坚

时间序列数据的处理

摘要: 随着云计算和IoT的发展,时间序列数据的数据量急剧膨胀,高效的分析时间序列数据,使之产生业务价值成为一个热门话题。阿里巴巴数据库事业部的HiTSDB团队为您分享时间序列数据的计算分析的一般方法以及优化手段。 演讲嘉宾简介:钟宇(悠你) 阿里巴巴 数据库高级专家,时间序列数据库HiTSDB的研发负责人。在数据库、操作系统、函数式编程等方面有丰富的经验。 本次直播视频PPT,戳这里!http://click.aliyun.com/m/51142/ 本次分享主要分为以下几个方面: 1. 时序数据库的应用场景 2. 面向分析的时序数据存储 3. 时序数据库的时序计算 4. 时序数据库的计算引擎 5. ...阅读全文

理解 Google Spanner (1):数据复制与分片。

现在工作中有很多项目开始转到 Google Spanner,虽然是很牛逼的分布式数据库,但由于太新了,并且是闭源的,网上几乎没有什么资料可查,为了更好地使用它,开始了 Spanner 漫长的学习之路,一个东西只有自己能教会别人,才代表自己真的会了,因此准备进行 Google Spanner 的一系列分享,这是第一篇,主要是讲 Spanner 的数据复制与分片,最后会提到实际应用中会遇到的热点问题以及解决方案。 本文主要是通过近期对分布式存储系统原理的学习以及平常工作中的一些实践去总结出的技术分享,由于对分布式数据库以及 Spanner 的理解有限,如果文中有错误的地方,希望大家能够指出。 一、Spanner 架构 先讲讲 Spanner 的架构,很概念很牛逼的东西,虽然乍眼一看不实用,但是让...阅读全文

博文 2019-06-12 16:06:14 wangxihua916

LiteIDE使用

LiteIDE是一款开源,跨平台的轻量级Go语言集成开发环境。操作简单,提示迅速!当然不足之处也有很多,不过除了golad之外,个人觉得比vscode,eclipse等用的更舒心一点(ps:指的是编写golang,每个人的感受不一样,勿喷)目前本人使用的LiteIDE版本号是:x36.1其中让我感受不是很好的两个点是:1.没有自动go lint检测,需要手动。2.更改键盘映射不能捕获按键的内容,需要自己粘贴复制比方说Ctrl+C之类的上去,如果不能接受这两点需要考虑考虑。当然也有可能是我玩的不够透彻,如果有人知道,请评论告知,感激不敬:)。那么,接下来就让我们来学习一下LiteIDE这款国人开发的编辑器的简单用法:当我们使用一款IDE的时候,首先当然是配置一下环境,其次是快捷键,界面布局之类...阅读全文

博文 2019-10-25 15:32:49 aside section._1OhGeD

Golang分布式ID生成服务

周末花了一晚上的时间,用Go写了一个ID生成服务,Github地址:go-id-alloc。 分布式ID生成,就我来看主要是2个流派,各有利弊,没有完美的实现。 1,snowflake流派。 它用于twitter的微博ID,因为是timeline按发布时间排序,所以这个算法是用毫秒时间戳作为ID的左半部,从而可以实现按时间有序。 像新浪微博也是在使用类似的ID生成算法,snowflake的好处是去中心化,但是依赖时钟的准确性,最差的情况是时钟发生了回退,那么ID就会重复;而如果不开启NTP同步时钟,那么不同节点分配的时间不同,也会影响feed流的排序,所以在我看来只能说基本可用,一旦时钟回退比较大的区间,服务是完全不可用的。美团在这方面做了一些工作,主要还是在发现回退以及报警方面的事情,可以...阅读全文

博文 2017-11-22 02:29:32 鱼儿的博客

MyBatis 为什么需要通用 Mapper ?

MyBatis 为什么需要通用 Mapper ? 在早期项目文档中有过类似主题的内容,但是最近我自己看文档的时候发现一个问题,文档虽然很详细,但是并不适合初次接触的人。为了方便第一次听说,第一次尝试的开发人员了解通用 Mapper,补充此文档。 一、通用 Mapper 的用途 ? 我个人最早用 MyBatis 时,先是完全手写,然后用上了 MyBatis 代码生成器(简称为 MBG) ,在使用 MBG 过程中,发现一个很麻烦的问题,如果数据库字段变化很频繁,就需要反复重新生成代码,并且由于 MBG 覆盖生成代码和追加方式生成 XML,导致每次重新生成都需要大量的比对修改。除了这个问题外,还有一个问题,仅仅基础的增删改查等方法,就已经产生了大量的 XML 内容,还没有添加一个自己手写的方法,代...阅读全文

博文 2018-10-15 13:44:39 Enjoyjava

优雅地使用命令行:Tmux 终端复用

什么是 Tmux 你是否曾经开过一大堆的 Terminal?有没有把它们都保存下来的冲动?Tmux 的Session就是做这件事情的! 你可以随时退出或者进入任何一个 Session。每个 Session 有若干个 Window,每个 Window 又可以分成多个窗格(Pane)。 极大地满足 Terminal 用户的需求。 此外即使 Terminal 意外关闭也没关系,因为 Session 完全保存在 Tmux Server 中。 再次打开 Terminal 时只需$ tmux attach便可回到你的工作区,就像从未退出过一样。 同时 Tmux 还支持“远程协助”,原本在服务器中,大家ssh上去之后都是互不干扰的操作,如果进入了相同的 Tmux Session,所有人看到的画面都是一样的...阅读全文

使用golang在与数据库访问过程中的一点想法

遇到的问题 golang对于基本类型初始化的处理,是自动给基本类型赋值为默认值。比如: var i int//在这里如果不对i做任何赋值,那么i的值为零 这个特性在很多地方能够避免访问到未初始化变量的尴尬,但是由此也引出了另外一个问题,就是在进行数据库访问操作时应该如果对待这样的默认值。 现在我们假设一个场景,表A有3个字段{AID int,AField1 string,AField2 string},表B也有3个字段{ID int,BField1 string,REF_AID int},其中表B中的REF_AID是外键对应表A中的AID。对应在GO中的数据结构应该为: type A struct{ AID int//主键 AField1 string AField2 string } ty...阅读全文

博文 2017-02-09 13:22:52 derek_334892

26.笔记go语言——beedb库使用

26.笔记go语言——beedb库使用 beedb是一个Go进行ORM操作的库,它采用了Go style方式对数据库进行操作,实现了struct到数据表记录的映射。是一个十分轻量级的Go ORM框架,本意降低复杂的ORM学习曲线,尽可能在ORM的运行效率和功能之间寻求一个平衡. 安装 支持go get方式安装,是完全按照Go Style的方式来实现的。 命令行执行:go get github.com/astaxie/beedb 需要import相应的数据库驱动包、database/sql标准接口包以及beedb包 import ( "database/sql" "github.com/astaxie/beedb" _"github.com/ziutek/mymysql/godrv" ) 初始...阅读全文

博文 2017-11-28 12:01:02 notbaron

Gorm 的使用心得和一些常用扩展(一)

Gorm是golang的一个orm框架,它提供了对数据库操作的封装,使用起来相当便利。 但在项目开发中,代码写的多了,还是发现在它之上还是有再次封装的空间,比如说添加错误日志、或者是一些使用频率非常高的对单个表的条件查询、分页查询、数据更新等。再则是,关于相同的功能操作,gorm也提供多种实现方式,对新学多少有些困惑,不知道该用哪个好。 于是,我基于自己在项目中的使用经验和编码习惯,做了如下一些扩展,供大家参考。 ## 准备 为了兼容gorm的使用方法,我使用了内嵌类型来扩展。 定义如下: ```golang type DBExtension struct { *gorm.DB logger DBLogger } ``` 这样子定义的wrapper对象是最小侵入式的扩展,不仅可以直接点出go...阅读全文

博文 2019-09-12 11:22:51 Ksloveyuan

在mac上使用sublime text3搭建Golang环境

安装sublime text 3 安装Package Control 打开sublime text,快捷键 control + `, 打开命令行,输入以下内容并return运行 import urllib.request,os;pf='Package Control.sublime-package';ipp=sublime.installed_packages_path();urllib.request.install_opener(urllib.request.build_opener(urllib.request.ProxyHandler()));open(os.path.join(ipp,pf),'wb').write(urllib.request.urlopen('http://su...阅读全文

博文 2019-07-19 01:32:41 LinKuriboh

个人怎么做自适应网站

说到自适应网站的建设,前面小编已经给大家写过很多这类型的文章了,基本都是利用meta标签、百分百法等。但是对于不懂代码的建站者来说,个人怎么做自适应网站呢?怎么样零基础做一个自适应网站呢?今天小编给大家讲一下,如何利用建站工具来制作自适应网站。 利用工具:建站宝盒 1.打开工具,选择网站模板(自适应模板) 2.安装模板,进入编辑 3.自行添加模块,也可利用原有模块,自行调整 (1)每个模块都可以进行拖动,删改(用鼠标选定版本,按住鼠标左键即可拖动) (2)点击首页按钮可以添加编辑栏目页面 (3)点击系统设置可以管理编辑文章内容等功能内容 (4)点击上方快捷键可以查看各功能的快捷按键 ...阅读全文

时序数据库 InfluxDB(一)

相关文章:时序数据库 InfluxDB(一)时序数据库 InfluxDB(二)时序数据库 InfluxDB(三)时序数据库 InfluxDB(四)时序数据库 InfluxDB(五)时序数据库 InfluxDB(六) 数据库种类有很多,比如传统的关系型数据库 RDBMS( 如 MySQL ),NoSQL 数据库( 如 MongoDB ),Key-Value 类型( 如 redis ),Wide column 类型( 如 HBase )等等等等,当然还有本系列文章将会介绍的时序数据库 TSDB( 如 InfluxDB )。 时序数据库 TSDB 不同的数据库针对的应用场景有不同的偏重。TSDB( time series database )时序数据库是专门以时间维度进行设计和优化的。 TSDB ...阅读全文

博文 2019-10-26 10:32:41 rife

如何更优雅地切换 Git 分支

在日常开发中,我们经常需要在不同的 Git 分支之间来回切换,特别是业务需求比较多的开发人员。在分支较多的情况下,切换分支时分支名的 tab 自动补全会比较糟糕,我们不免需要复制或手打分支名,那么有没有更优雅的方式了呢? 为了提高切换 Git 分支的效率,我用 Golang 写了 `git-checkout-branch` 这个小工具,可以交互式的切换分支,并自带搜索功能,帮助你更优雅的进行分支切换。 ## 概览 Github 地址:https://github.com/royeo/git-checkout-branch ,欢迎 star。 ![](https://raw.githubusercontent.com/royeo/static/master/gif/gi...阅读全文

博文 2019-02-13 17:46:21 royeo

golang之mysql操作-GORM

GORM中文文档 读者可以直接看文档,本文只是从文档记录个人常用的一些操作。 1.安装 go get -u github.com/jinzhu/gorm 2.使用 官方一个快速入门的例子 package main import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" ) type Product struct { gorm.Model //嵌入常用字段 Code string Price uint } func main() { db, err := gorm.Open("mysql", "root:@(localhost:3306)/golang_mysql") if err != nil {...阅读全文

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

想获取唯一ID?常见发号器、ID分配器方案对比介绍

发号器应具有的特性: 发号器作为一个独立的系统对外提供服务、满足高可用、高并发、弱依赖、不存在单点问题 服务自我监控与治理 现有系统接入成本低 ID具有唯一性:不能出现重复的ID号 趋势递增 实现方案目前常见的发号器实现方案如下1.UUID UUID(Universally Unique Identifier)的标准型式包含32个16进制数字,以连字号分为五段,形式为8-4-4-4-12的36个字符,示例:550e8400-e29b-41d4-a716-446655440000。 优点: 性能非常高:本地生成,没有网络消耗。 缺点: 不易于存储:UUID太长,16字节128位,通常以36长度的字符串表示,很多场景不适用。 信息不安全:基于MAC地址生成UUID的算法可能会造成MAC地址泄露,...阅读全文

博文 2020-04-14 17:33:39 Charles_Wong

如何通过reflect 将一个interface 转换成一个具体的struct类型

type foo struct{ name } var test1 interface{} test1 = make([]foo,3) func ts(param interface{}) ts(test1) 这个时候reflect.TypeOf(test1) //[]foo 这个test1 是一个参数也有可能是任意struct,形参的类型是interface 我怎么通过 reflect 把这个test1转换成具体的[]foo类型呢 或者是任意的什么[]type ...阅读全文

gorose orm+dotweb框架快速构建go web网站实战(五)

控制器和模型 这里我们以去新闻列表为例, 做一个完整的控制器处理业务, 数据库模型获取数据 在控制器中创建 GetNewsById 获取一条新闻的方法 func GetNewsById(ctx dotweb.Context) error { res := model.GetNewsById(ctx) ctx.WriteJson(utils.SuccessReturn(res)) return nil } 说明: ctx 请求的内容 ctx.WriteJson 返回 json 格式数据 utils.SuccessReturn 工具包中封装的成功返回函数 model 引入的模型目录, 内容如下: // 根据主键id获取一条数据 func GetNewsById(ctx dotweb.Contex...阅读全文

博文 2018-02-09 22:34:38 fizz

Windows Terminal 设置

最近装了WT,比powerShell的原装terminal好看一万个cmd的Terminal,值得上手,记录下我自己的配置。 自己配置之前也在网上浏览了下别人的配置,自己配下来发现和网上所说的有些差异。 profiles.json文件是保存在C:\Users\p\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState目录下的。在上级目录中提供了一个default.json文件,给出了默认的设置,然而修改这个默认文件是没有用的,该文件仅仅是告诉你默认设置是什么,如果你想改变默认设置,需要在profiles.json文件中override。 profiles.json中的设置在WT的项目页面有逐个的解释,...阅读全文

博文 2019-11-14 23:33:44 更多精彩内容WindowsTerminal尝鲜踩坑指南luyanfcpMac打造高效个性Terminal(一)之 iTerm你清澈又神秘SpringMVCjack_jerryoracle错误集合我想起个好名字Spring Boot 2.0.0参考手册_中

Go:操作注册表

package main import ( "fmt" "log" "golang.org/x/sys/windows/registry" ) func main() { key, exists, err := registry.CreateKey(registry.CURRENT_USER, "SOFTWARE\\Hello Go", registry.ALL_ACCESS) if err != nil { log.Fatal(err) } defer key.Close() if exists { fmt.Println("键已存在") } else { fmt.Println("新建注册表键") } // 写入32位整形值 key.SetDWordValue("DWORD", 0xFF...阅读全文

博文 2016-09-07 09:00:03 aqtata

2019-08-22【LeekCode题库problem-845】

GitHub 地址:coffeeTu-code LeekCode 地址:题库 Language:Golang /* @题目 我们把数组 A 中符合下列属性的任意连续子数组 B 称为 “山脉”: B.length >= 3 存在 0 < i < B.length - 1 使得 B[0] < B[1] < ... B[i-1] < B[i] > B[i+1] > ... > B[B.length - 1] (注意:B 可以是 A 的任意子数组,包括整个数组 A。) 给出一个整数数组 A,返回最长 “山脉” 的长度。 如果不含有 “山脉” 则返回 0。 @示例 1: 输入:[2,1,4,7,3,2,5] 输出:5 解释:最长的 “山脉” 是 [1,4,7,3,2],长度为 5。 @示例 2: 输入...阅读全文

博文 2019-08-23 04:32:47 CoffeeRabbit

Go中的struct之方法method初体验

// code_017_struct_method_usage project main.go package main import ( "fmt" ) type MyInt int func (a MyInt) Add(b MyInt) MyInt { return a + b } func Add(a, b MyInt) MyInt { return a + b } type Person struct { name string sex byte age int } func (p Person) PrintInfo() { fmt.Println(p.name, p.age) } func (p *Person) SetInfoPointer() { (*p).name = "go...阅读全文

GoGuru Sublime text 安装

Sublime text的Guru插件叫GoGuru(http://www.jianshu.com/p/994e85e21135). GoGuru 的插件地址https://alvarolm.github.io/GoGuru/2.sublime 打开 Preferences->Package Control->Install Package.输入GoGuru.安装成功即可。 2211.png 查看默认的快捷键 Preferences->Package Settings->GoGuru->key Bindings default底下注释掉的快捷键可以开启直接使用相应的命令。 333333.png 默认的快捷键ctrl+shift+g 既可以打开指令界面,自己选择调用具体的某一个自己的指令 44...阅读全文

博文 2017-03-10 18:27:42 hehe_Android

高效编程第一条: JetBrains IDE快捷键

高效编程第一条 适用于pycharm, IEDA, Golang等JetBrains旗下大部分IDE产品。 强烈建议经常看一下 help-> productivity Guide,可以按照多种方式排序,例如使用频次,然后选中对应的行,会有一些快捷键的提示,有效地帮助我们了解我们需要记住哪些常用功能的快捷键。 视图部分,建议把左边的project关掉,让代码部分全屏,用command + e来选择最近的文件 option + command + F: 切换全屏模式 command + 1: project view command + E: recent files 自动化格式部分 control + option + O: 优化import option + command + L: 格式化...阅读全文

博文 2019-03-23 18:34:41 enjoy_算法工程师

sublime text 3 快捷键大全以及配置编译环境

Sublime text 3是码农最喜欢的代码编辑器,每天和代码打交道,必先利其器,掌握基本的代码编辑器的快捷键,能让你打码更有效率。刚开始可能有些生疏,只要花一两个星期坚持使用并熟悉这些常用的快捷键!其实sulime text菜单栏各个选项中都会提示相关的快捷键,各位可以自己去看看,本文主要是整理一些隐藏或不被发掘的快捷键! Sublime Text 3 快捷键精华版 Ctrl+Shift+P:打开命令面板 Ctrl+P:搜索项目中的文件 Ctrl+G:跳转到第几行 Ctrl+W:关闭当前打开文件 Ctrl+Shift+W:关闭所有打开文件 Ctrl+Shift+V:粘贴并格式化 Ctrl+D:选择单词,重复可增加选择下一个相同的单词 Ctrl+L:选择行,重复可依次增加选择下一行 Ctr...阅读全文

博文 2018-07-06 18:34:47 心花宇轩

MySQL 笔记 - 索引优化

巧妙的使用 Explain看一条 SQL 语句的性能,可以使用 explain 关键字查看语句性能,这里说一下其中的 type 字段的部分含义,all,即全表扫描,说明这个 SQL 语句没有使用到索引,有可能是表本身没有创建索引,也可能是因为 SQL 语句导致没有使用索引range,说明使用的是有范围的索引扫描,性能优于 indexindex,这里说明使用了索引,这种情况下,如果 extra 列中的值为 Using index,这种情况是索引覆盖,索引覆盖的意思是,我们想要查询的数据,索引中已经都存在啦,这种情况下就不需要再回表取数据了ref,说明条件列使用了索引,但是不是主键和 unique,所以这里即使使用了索引,索引值不唯一,有重复的情况eq_ref,相对于 ref 来说就是使用的是唯...阅读全文

博文 2018-09-16 21:11:17 Java1122zzz

mysql基本特性

## 约束 ### 主键约束 “主键(PRIMARY KEY)”的完整称呼是“主键约束”,是一个列或者列的组合,其值能唯一地标识表中的每一行。 ``` create table account(id BIGINT(20 ) PRIMARY KEY, name VARCHAR(255)); create table acount(id BIGINT(20), name VARCHAR(255), PRIMARY KEY(id, name)); ``` PRIMARY KEY(列名,...) ### 外键约束 外键约束(FOREIGN KEY)用来在两个表的数据之间建立链接,它可以是一列或者多列。一个表可以有一个或多个外键 一个表的外键可以为空值,若不为空值,则每一个外键的值必须等于另一个表中主...阅读全文

博文 2019-12-21 17:42:36 bytemode

使用Atom配置Golang开发环境

Golang作为一种新的编程语言,也有着非常多的IDE,其中个人觉得使用IntelliJ开发是一种很不错的选择,但是免费版有功能是缺失的,如果又不想付费购买专业版的,Atom就是一种不错的选择。Atom是更为先进的文本代码编辑器,是由Github打造的下一代编程开发利器,Atom是开源的,美观,各种炫酷效果,还有有各种强大的插件。Atom上面配置Golang的开发环境,使用Atom作用IDE,发现效果很不错,下面记录下配置的步骤。首先要先安装下Atom,可以直接下载安装。安装Golang,Mac上面的安装可以参考:http://www.jianshu.com/p/358cbc939569 go-plus插件 go-plus是Atom上面的一款开源的Golang开发环境插件,项目地址:http...阅读全文

博文 2017-02-09 08:17:00 姜家志

如何更优雅地切换 Git 分支

在日常开发中,我们经常需要在不同的 Git 分支之间来回切换,特别是业务需求比较多的开发人员。在分支较多的情况下,分支名的 tab 自动补全会比较糟糕,切换时我们不免需要复制或手打分支名,那么有没有更优雅的方式了呢? 为了提高切换 Git 分支的效率,我用 Golang 写了 git-checkout-branch 这个小工具,可以交互式的切换分支,并自带搜索功能,帮助你更优雅的进行分支切换。 概览 Github 地址:https://github.com/royeo/git-checkout-branch ,欢迎 star。 image 说明: 使用箭头键 ↓ ↑ → ← 进行移动,也支持 j 和 k 的上下移动 使用 / 切换搜索 按 ctrl + c 退出 安装 可以直接下载安装: c...阅读全文

博文 2019-02-18 21:34:42 一个厚脸皮的傻帽

如何更优雅地切换Git分支

在日常开发中,我们经常需要在不同的 Git 分支之间来回切换,特别是业务需求比较多的开发人员。在分支较多的情况下,分支名的 tab 自动补全会比较糟糕,切换时我们不免需要复制或手打分支名,那么有没有更优雅的方式了呢? 为了提高切换 Git 分支的效率,我用 Golang 写了 git-checkout-branch 这个小工具,可以交互式的切换分支,并自带搜索功能,帮助你更优雅的进行分支切换。 概览 Github 地址:https://github.com/royeo/git-... ,欢迎 star。 说明: 使用箭头键 ↓ ↑ → ← 进行移动,也支持 j 和 k 的上下移动 使用 / 切换搜索 按 ctrl + c 退出 安装 可以直接下载安装: curl -sSL https://g...阅读全文

博文 2019-02-19 18:34:43 royeo

第二十三章:Go语言操作MySql

golang-mysql.png 1. 知识储备 Go语言基础知识 具备一般的SQL知识 测试机器上安装了数据库服务端,我们默认使用MySql 2. 安装ORM包 ORM:对象关系映射(Object Relational Mapping,简称ORM),目的是想像操作对象一样操作数据库.因为数据库不是面向对象的,所以需要编程进行映射. Go语言能用的ORM客户端包很多,我们依旧只看最常见的ORM包,这些ORM包在github上都能找到 包名 github地址 参考文档 gorm https://github.com/jinzhu/gorm http://gorm.io xorm https://github.com/go-xorm/xorm http://gobook.io/read/gith...阅读全文

博文 2019-11-03 12:33:11 aside section._1OhGeD

BMIP002协议介绍

比原BMIP002协议 概述 比原链技术社区最近提出了一套资产规范提议,该提议允许在issue类型的交易中实现标准资产token。该标准定义资产在链上的基本功能,以及发行人通过智能合约管理资产的规范。 功能 资产是一种可以在区块链上发行的价值,给定资产的的所有单位都是可替代的。 每个资产都有全球唯一的资产ID,该资产ID来自发行程序和资产定义,发行程序通常定义一组可能的签名秘钥和阀值数量的签名,这些签名必需被提供以授权发布资产的新单元。 资产定义由提交给区块链的任意键值数据组成,提供所有参与者查看。 该标准为用户提供了一种发行资产的简单方法。它允许任何满足Bytom标准的token很容易被其他应用程序支持:比如钱包,区块链浏览器,到交易所。 一个例子是商家可以在很短的时间内在他们的商业应用中...阅读全文

博文 2019-04-23 16:34:45 比原链Bytom

ORM框架gorm的介绍和使用

前言:gorm是Golang语言中一款性能极好的ORM库,对开发人员相对是比较友好的。当然还有另外一个xorm库也是比较出名的,感兴趣的也可以看看这个库,接下来主要介绍下gorm库的一些基本使用。 GORM介绍和快速入门 功能概览 全功能ORM(无限接近) 关联(Has One, Has Many, Belongs To, Many To Many, 多态) 钩子函数Hook(在创建/保存/更新/删除/查找之前或之后) 预加载 事务 复合主键 SQL 生成器 数据库自动迁移 自定义日志 可扩展性, 可基于 GORM 回调编写插件 所有功能都被测试覆盖 开发者友好 安装 我们都知道,在golang中需要使用一些驱动包来对指定数据库进行操作,比如MySQL需要使用github.com/go-sq...阅读全文

博文 2020-03-15 09:32:44 BGbiao

使用BSN开发区块链应用智能合约-golang篇

作者:曹国波 时跃堂智能合约又称链码(Chaincode),是用计算机语言描述合约条款、交易的条件、交易的业务逻辑等,通过调用智能合约实现交易的自动执行和对账本数据的操作。一个BSN应用可以部署多个链码,每个链码包含多个方法。链码支持多种语言编写,包括golang、java、node.js。每个链码程序都必须实现Chaincode接口,链码包含:Init ,Invoke ,Query三个基本操作:▶ Init :链码初始化的方法,在链码实例化或者升级的时候调用一次,以便链码可以执行任何必要的初始化,包括应用程序状态的初始化。▶ Invoke :接收和处理链下业务系统调用事务处理提案,其参数包含调用的链码程序中函数的名称和具体业务处理数据参数。即在Invoke中根据不同的方法参数调用其他分支处...阅读全文

博文 2020-01-16 15:33:44 wx5da979d83cf0a

使用Tag实现生成SQL执行方法。数据映射

这几天研究了一下golang的Tag,发现是个好东西;于是就用它做了一个自己用的数据映射SQL的逻辑。现在分享出来给大家。先上核心逻辑 //生成更新SQL func MarshalUpSql(v interface{}, tablename string) (sql string) { result := util.NewStringBuilder() result.Append("INSERT INTO ") result.Append(tablename) result.Append("(") t := reflect.TypeOf(v) farr := t.Elem() tmp := util.NewStringBuilder() vtmp := util.NewStringBuild...阅读全文

博文 2019-08-20 11:49:46 buguang01

史上最全的大厂Mysql面试题在这里!

1、MySQL的复制原理以及流程基本原理流程,3个线程以及之间的关联;主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中;从:io线程——在使用start slave 之后,负责从master上拉取 binlog 内容,放进 自己的relay log中;从:sql执行线程——执行relay log中的语句;2、MySQL中myisam与innodb的区别,至少5点(1)、问5点不同;1>.InnoDB支持事物,而MyISAM不支持事物2>.InnoDB支持行级锁,而MyISAM支持表级锁3>.InnoDB支持MVCC, 而MyISAM不支持4>.InnoDB支持外键,而MyISAM不支持5>.InnoDB不支持全文索引,而MyISAM支持。(2)、i...阅读全文

博文 2019-03-25 17:21:58 a1127889067

go语言基础

go语言是自己刚接触的。记一下经常用到的东西 1、创建一个新项目时候 ,在该目录下(D:\devtools\go\src),创建hello.go 文件。在go语言中文件以 .go命名。 2、运行代码结果时,(本人用的是sublime text3)用Ctrl+B快捷键 ,然后输入 go run hello.go 回车,得到运行结果。 3、go语言基本语法 每个go程序都是由包组成的。 程序运行的入口是包 main package main 这个程序使用并导入包 “fmt“ 和 “math/rand“ import ( "fmt" "math/rand" ) func main() { fmt.Printf("Now you have %g problems.", math.Sqrt(7)) /...阅读全文

博文 2017-08-24 06:31:07 sunny1660

【Java核心设计模式】DAO开发实战业务分析

课程介绍 本课程是由Java SE向Java WEB学习的过渡课程,为了更好的巩固Java SE中所学习到的各项技术,同时也为了更完整的阐述Java在整个项目开发中的核心意义,所以讲解了综合的DAO设计模式。 在学习本课程之前请确保已经学习了:《Oracle从入门到精通》、《Java8编程入门》、《Java8面向对象编程》、《Java8高级编程》几门课程,并且已经熟练的掌握了接口、类集、JDBC等技术的使用。 课时列表 • 课时1:软件分层设计 • 课时2:设计分析实例 • 课时3:程序开发准备(定义数据库连接类) • 课时4:程序开发准备(定义VO类) • 课时5:数据层设计与开发(定义数据层标准) • 课时6:数据层设计与开发(数据层...阅读全文

【GO学习二】包,函数,常量和变量

主要介绍go语言的基本元素,包引入,变量,函数声明 引入包: go语言通过import引入包最佳实践:import顺序:系统package,第三方package,程序自己的package package main import ( "fmt" "math" ) func main() { fmt.Printf("math test number %g ",math.Sqrt(7)) } # 运行输出 cuixiaozhuai:main cuixiaohuan$ ./hello math test number 2.6457513110645907 函数定义 go中函数可以没有参数或者接受多个参数 基本格式 func xx(AA type,aa) Type { } package main i...阅读全文

博文 2017-10-12 13:34:48 崔小拽

与BSN的链码进行通信互动

在上一节完成链码部署后,就可以与链码进行通信互动了。互动有多种方式,如通过SDK编程,也可以使用peer节点使用命令行操作完成。本节先使用后者实现预置链码包介绍通过区块链服务网络开发者手册可知,BSN提供的预置链码包提供了五个方法,我们逐一来操作处理1、增加数据(set)输入参数说明baseKey:需要保存的唯一的主键标识baseValue:保存的数据信息` 例:{"baseKey":"str","baseValue":"this is string"}` 其中 baseKey 是不能为空的字符串,baseValue 可以是任意类型的数据。如果 baseKey 已经存在,则直接返回已经存在,不能添加;如果不存在,则添加数据。2、获取数据(get)输入参数说明baseKey:需要获取的唯一的主...阅读全文

博文 2020-05-27 19:32:45 凡星_

使用BSN开发区块链应用智能合约-golang篇

作者:曹国波 时跃堂智能合约又称链码(Chaincode),是用计算机语言描述合约条款、交易的条件、交易的业务逻辑等,通过调用智能合约实现交易的自动执行和对账本数据的操作。一个BSN应用可以部署多个链码,每个链码包含多个方法。链码支持多种语言编写,包括golang、java、node.js。每个链码程序都必须实现Chaincode接口,链码包含:Init ,Invoke ,Query三个基本操作:▶ Init :链码初始化的方法,在链码实例化或者升级的时候调用一次,以便链码可以执行任何必要的初始化,包括应用程序状态的初始化。▶ Invoke :接收和处理链下业务系统调用事务处理提案,其参数包含调用的链码程序中函数的名称和具体业务处理数据参数。即在Invoke中根据不同的方法参数调用其他分支处...阅读全文

博文 2020-01-17 01:32:52 区块链服务网络BSN

03GORM源码解读

简介 模型交互 AutoMigrate createTable callbacks 实际注册流程 createCallback 总结 简介 GORM 源码解读, 基于 v1.9.11 版本. 模型交互 前面已经研究过模型是如何定义并被解析的了, 这次看一下模型是如何和数据库交互的. package main import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/sqlite" ) type Product struct { gorm.Model Code string Price uint } func main() { db, err := gorm.Open("sqlite3", "test.db") i...阅读全文

博文 2020-01-14 18:32:40 帅气猫咪

数据一致性(二)

我们流连于事物的表象,满足浅尝辄止的片刻欢愉,却几乎从不久留。我们在人生的道路上争先恐后,却吝于用片刻思考目标和方向。 概述 至今没有接触过MySQL多主的情况,即存在多个MySQL实例同时负责读写请求(抛弃只读库)。思考后认为:没有这么实现的技术难点在于:数据的一致性得不到保证。此外,还会涉及: MySQL采用自增主键索引的话,多主之间的数据同步简直是灾难。 内部锁机制的优势大打折扣,跨主库间的锁应该也是灾难级别的吧。 那么支持分布式的其他数据库又是怎么搞定这个问题的呢?比如Cassandra,多个节点之间可以同时处理读写请求,那么它是如何处理节点间数据同步以保证一致性的呢? MySQL数据的一致性 We think this is an unacceptable burden to pl...阅读全文

博文 2019-03-17 15:34:38 neojos

从 Eclipse 到 IDEA,金字塔到太空堡垒

IDEA有什么好? 换到IDEA并渐渐适应之后,用一个词形容这款IDE,就是:现代。 再看Eclipse,如同埃及金字塔,精巧但粗粝、宏伟但迟钝。而IDEA如同太空堡垒,精致大气、舒适内敛。 因为我对IDEA非常有好感,决定向你推销一下。让我们先来看看他那些让人不可自拨的功能吧: 插件安装 在Eclipse上安装一款插件,要到marketplace中搜索,点击install。因为跨国网络访问,所以一般下载插件会很慢。 在IDEA上安装插件,逻辑相似,Ctrl+Alt+S呼出Settings,找到Plugins进行搜索,如果没有找到会跳转到远程仓库,然后install即可。 不过对于有些插件来说,IDEA上的安装流程比Eclipse顺畅了不止一个级别,比如大家常用的lombok,Eclipse...阅读全文

博文 2019-01-13 16:34:39 凯睿看世界

MaxCompute访问TableStore(OTS) 数据

摘要: MaxCompute作为阿里云大数据平台的核心计算组件,承担了集团内外大部分的分布式计算需求。 免费开通大数据服务:https://www.aliyun.com/product/odps **前言** MaxCompute作为阿里云大数据平台的核心计算组件,承担了集团内外大部分的分布式计算需求。而MaxCompute SQL作为分布式数据处理的主要入口,为快速方便处理/存储EB级别的离线数据提供了强有力的支持。 随着大数据业务的不断扩展,新的数据使用场景在不断产生,在这样的背景下,MaxCompute计算框架也在不断的演化,原来主要面对内部特殊格式数据的强大计算能力,也正在一步步的开放给不同的外部数据。 之前我们介绍了怎样[在MaxCompute上处理存储在OSS上...阅读全文

从 Eclipse 到 IDEA,金字塔到太空堡垒

IDEA有什么好?换到IDEA并渐渐适应之后,用一个词形容这款IDE,就是:现代。再看Eclipse,如同埃及金字塔,精巧但粗粝、宏伟但迟钝。而IDEA如同太空堡垒,精致大气、舒适内敛。因为我对IDEA非常有好感,决定向你推销一下。让我们先来看看他那些让人不可自拨的功能吧:插件安装在Eclipse上安装一款插件,要到marketplace中搜索,点击install。因为跨国网络访问,所以一般下载插件会很慢。在IDEA上安装插件,逻辑相似,Ctrl+Alt+S呼出Settings,找到Plugins进行搜索,如果没有找到会跳转到远程仓库,然后install即可。不过对于有些插件来说,IDEA上的安装流程比Eclipse顺畅了不止一个级别,比如大家常用的lombok,Eclipse上安装过程繁琐...阅读全文

博文 2019-05-05 18:34:57 Daphne_307d