GoCqlTable 封装了 GoCql-driver 目的是简化 Go 语言操作 Cassandra 数据库。
示例代码:
// Generic initialization of gocql c := gocql.NewCluster("127.0.0.1") s, err := c.CreateSession() if err != nil { log.Fatalln("Unable to open up a session with the Cassandra database (err=" + err.Error() + ")") } // Tell gocqltable to use this session object as the default for new objects gocqltable.SetDefaultSession(s) // Now we're ready to create our first keyspace. We start by getting a keyspace object keyspace := gocqltable.NewKeyspace("gocqltable_test") // Now lets create that in the database using the simple strategy and durable writes (true) err = keyspace.Create(map[string]interface{}{ "class": "SimpleStrategy", "replication_factor": 1, }, true) if err != nil { // If something went wrong we print the error and quit. log.Fatalln(err) } // Now that we have a very own keyspace to play with, lets create our first table. // First we need a Row-object to base the table on. It will later be passed to the table wrapper // to be used for returning row-objects as the answer to fetch requests. type User struct{ Email string // Our primary key Password string `password` // Use Tags to rename fields Active bool `cql:"active"` // If there are multiple tags, use `cql:""` to specify what the table column will be Created time.Time } // Let's define and instantiate a table object for our user table userTable := struct{ recipes.CRUD // If you looked at the base example first, notice we replaced this line with the recipe }{ recipes.CRUD{ // Here we didn't replace, but rather wrapped the table object in our recipe, effectively adding more methods to the end API keyspace.NewTable( "users", // The table name []string{"email"}, // Row keys nil, // Range keys User{}, // We pass an instance of the user struct that will be used as a type template during fetches. ), }, } // Lets create this table in our cassandra database err = userTable.Create() if err != nil { log.Fatalln(err) } // Now that we have a keyspace with a table in it: lets make a few rows! In the base example we had to write out the CQL manually, this time // around, however, we can insert entire User objects. // Lets instantiate a user object, set its values and insert it user1 := User{ Email: "1@example.com", Password: "123456", Active: true, Created: time.Now().UTC(), } err = userTable.Insert(user1) if err != nil { log.Fatalln(err) } // With our database filled up with users, lets query it and print out the results (containing all users in the database). rowset, err := userTable.List() for _, row := range rowset { user := row.(*User) // Our row variable is a pointer to "interface{}", and here we type assert it to a pointer to "User" } if err != nil { log.Fatalln(err) } // You can also fetch a single row, obviously row, err := userTable.Get("1@example.com") if err != nil { log.Fatalln(err) } user := row.(*User) // Lets update this user by changing his password user.Password = "654321" err = userTable.Update(user) if err != nil { log.Fatalln(err) } // Lets delete user 1@example.com err = userTable.Delete(user) if err != nil { log.Fatalln(err) } // Lets clean up after ourselves by dropping the keyspace. keyspace.Drop()
本节我将介绍几个开发工具,它们都具有自动化提示,自动化fmt功能。因为它们都是跨平台的,所以安装步骤之类的都是通用的。 LiteIDE LiteIDE是一款专门为Go语言开发的跨平台轻量级集成开发环境(IDE),由visualfc编写。 图1.4 LiteIDE主界面 LiteIDE主要特点: 支持主流操作系统 Windows Linux MacOS X Go编译环境管理和切换 管理和切换多个Go
写这本书主要是灵感来自于: https://github.com/thekarangoel/Projects 然后我就想到了当初做PHP的时候,也有类似的项目,觉得golang也可以实现一个类似的书籍,暂且把书名定为《Go实战开发》 github 地址:https://github.com/astaxie/go-best-practice
写这本书主要是灵感来自于: https://github.com/thekarangoel/Projects 然后我就想到了当初做PHP的时候,也有类似的项目,觉得golang也可以实现一个类似的书籍,暂且把书名定为《Go实战开发》 书的大纲 基础篇 开发环境配置 开发工具配置 基础语法训练 时间字符串处理技术 基础的系统信息 常用技术篇 文件操作 系统操作 图像处理 面向对象 数据库篇 Mysq
本书首先介绍了使用 Go 官方库开发 RPC 服务的方法,然后介绍流行 gRPC 库以及其它一些 RPC 框架如 Thrift 等,后面重点介绍高性能的分布式全功能的 RPC 框架 rpcx。读者通过阅读本书,可以快速学习和了解 Go 生态圈的 RPC 开发技术,并且应用到产品的开发中。
问题内容: 可以动态运行以便用于基于插件的应用程序吗? 在eclipse中,我们可以创建一些Eclipse可以动态运行的插件。 Go中可能有同样的事情吗? 问题答案: 我认为这是两个独立的问题: 具有动态负荷 有插件 第一个完全不是:Go程序是静态链接的,这意味着您无法将代码添加到正在运行的程序中。这也意味着您必须编译该程序以使其集成插件。 幸运的是,您可以像大多数语言一样在Go中定义一个接受插件
LiteIDE LiteIDE是一款开源、跨平台的轻量级Go语言集成开发环境(IDE)。 支持的操作系统 Windows x86 (32-bit or 64-bit) Linux x86 (32-bit or 64-bit) 下载地址 :http://sourceforge.net/projects/liteide/files/ 源码地址 :https://github.com/visualfc/
好不容易抢了一个二面,还是十一点半的大中午。。 1、介绍实习项目 (讲到口干舌燥,每个项目从业务需求讲到实现到后期优化) 2、如果有一个大文件从客户端上传,客户端和后端需要做哪些操作? 3、如果上传过程中出现网络波动怎么办? 4、上传后出现乱序怎么办? 5、高并发场景下,服务器压力过大有哪些优化方法,怎么做负载均衡? 6、如何在千万级数中找到一个数是否存在? 7、讲一讲tcp三次握手?什么情况下会
0712一面,问题: 1. Mysql数据库的默认隔离级别,有哪四种隔离级别,然后给了个例子问在该隔离级别下的数据读取状态。 2. HTTPS如何保证安全,以及的整个过程。 3. 为什么握手要三次 4. io多路复用 5. docker和虚拟机的区别,实现的原理 6. 数据库字段的长度如何影响查询速度 7. redis中的数据结构 8. 情景题:对一个接口进行访问限制,要求1分钟内仅能访问三次,伪