Go Web编程4 使用PostgreSQL数据库 5.5 使用beedb库进行ORM开发 5.6 NOSQL数据库操作 5.7 小结 6.session和数据存储 6.1 session和cookie 6.2 Go如何使用session 6.3 session存储 6.4 预防session劫持 6.5 小结 7.文本文件处理 7.1 XML处理 7.2 JSON处理 7.3 正则处理 7.4 模板处理 2 WebSocket 8.3 REST 8.4 RPC 8.5 小结 9.安全与加密 9.1 预防CSRF攻击 9.2 确保输入过滤 9.3 避免XSS攻击 9.4 避免SQL注入 9.5 存储密码 9.6 加密和解密数据 9.7 小结 10.国际化和本地化 10.1 设置默认地区 10.2 本地化资源 10.3 国际化站点 4 10.4 小结 11.错误处理,调试和测试 11 vname2, vname3 := v1, v2, v3 现在是不是看上去非常简洁了?:=这个符号直接取代了var和type,这种形式叫做简短声明。不过它有一个限制,那 就是它只能用在函数内部;在函数外部使用则会无法编译通过,所以一般用var方式来定义全局变量。 _(下划线)是个特殊的变量名,任何赋予它的值都会被丢弃。在这个例子中,我们将值35赋予b,并同时丢弃34: _, b := 34,0 码力 | 295 页 | 5.91 MB | 1 年前3
大规模高性能区块链架构设计模式与测试框架-李世敬©2016-2021 6 趣链科技 版权所有 ©2016-2021 6 趣链科技 版权所有 ©2016-2021 6 区块链技术定义 区块链是由分布式数据存储、点对点传输、共识机制、加密算法等计算机技术构成的多中心 化系统 不可篡改(可信存证) ü 可对存储的文件、数据进行真实性校验 ü 可信追溯历史数据 去中心化共识(协作共享) ü 多方业务系统数据共享 ü 跨机构业务协作 核心特性 7 所有交易和状态打包 成为一个区块 区块以时间顺序前后相 连,组成一种块链式数 据结构,即“区块链” 一词的由来 多参与方各自部署,互 联互通,每个区块链节 点均会保存相同的链式 数据,通过冗余存储的 方式使数据难以被篡改 区块链技术定义 9 趣链科技 版权所有 ©2016-2021 9 趣链科技 版权所有 ©2016-2021 9 趣链科技 版权所有 ©2016-2021 9 区块链价值定位 扩展⼦链提供存证、互通等能⼒ 共识节点 ⾮共识节点 轻节点 轻客户端 共识节点 节点数量有限,参与交易的共识,存储全 量数据,节点间采⽤GRPC全连接⽅式互联 ⾮共识节点 节点数量较多,不参与共识,存储全量数 据,节点间使⽤gossip协议同步数据 轻节点 节点数量较多,存储部分数据, ⽤于交易的证明验证 轻客户端 节点数量较多,⼀般为物联⽹终端 设备,主要进⾏数据的可信采集0 码力 | 39 页 | 56.58 MB | 1 年前3
Go 入门指南(The way to Go)7 使用 go install 安装自定义包 9.8 自定义包的目录结构、go install 和 go test 9.9 通过 Git 打包和安装 9.10 Go 的外部包和项目 9.11 在 Go 程序中使用外部库 第10章:结构(struct)与方法(method) 10.1 结构体定义 10.2 使用工厂方法创建结构体实例 10.3 使用自定义包中的结构体 10.4 带标签的结构体 13.2 运行时异常和 panic 13.3 从 panic 中恢复(Recover) 13.4 自定义包中的错误处理和 panicking 13.5 一种用闭包处理错误的模式 13.6 启动外部命令和程序 13.7 Go 中的单元测试和基准测试 13.8 测试的具体例子 13.9 用(测试数据)表驱动测试 13.10 性能调试:分析并优化 Go 程序 第 14 章 协程(goroutine)与通道(channel) 的编程语言,这不仅体现在它可以处理使用 UTF-8 编码的字符串,就连它的源码文件格 式都是使用的 UTF-8 编码。Go 语言做到了真正的国际化! Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。对于高性能 分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服 务端的开发而言是再好不过了。0 码力 | 466 页 | 4.44 MB | 1 年前3
Go 入门指南(The way to Go)的编程语言,这不仅体现在它可以处理使用 UTF-8 编码的字符串,就 连它的源码文件格式都是使用的 UTF-8 编码。Go 语言做到了真正的国际化! 1.2.6 语言的用途 Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。 对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并 行的支持,这对于游戏服务端的开发而言是再好不过了。 如果你想知道一些其它组织使用Go语言开发的实际应用项目,你可以到 使用 Go 的组织 页面进行查看。 出于隐私保护的考虑,许多公司的项目都没有展示在这个页面。我们将会在第 21 章讨论到一个使用 Go 语言开发的大型存储区域网络(SAN)案例。 在 Chrome 浏览器中内置了一款 Go 语言的编译器用于本地客户端(NaCl),这很可能会被用于在 Go入门指南 - 10 - 本文档使用 看云 构建 Chrome 律,因此你必须在编译或提交版本管理系统之前使用 gofmt 来格式化你的代码。 尽管这种做法也存在一些争论,但使用 gofmt 后你不再需要自成一套代码风格而是和所有人使用相同的 规则。这不仅增强了代码的可读性,而且在接手外部 Go 项目时,可以更快地了解其代码的含义。此外, 大多数开发工具也都内置了这一功能。 Go 对于代码的缩进层级方面使用 tab 还是空格并没有强制规定,一个 tab 可以代表 4 个或 8 个空格。在0 码力 | 380 页 | 2.97 MB | 1 年前3
Golang大规模云原生应用管理实践效率 云原生-程序员视角 基础设施 K8s 云原生生态(CNCF) 云原生应用 云原生是以容器技术为基础围绕着Kubernetes进行的一场技术标准化演进。通过标准可扩展的调度,网络, 存储,容器运行时接口来提供基础设施;通过标准可扩展的声明式资源和控制器来提供运维能力。两层标 准化推进了细化的社会分工,各领域进一步提升规模化和专业化,全面达到成本,效率,稳定性的优化。 4 6 7 方法和系统,关注如何做事 “how” • 员工进入公司需要验证是一个策略,人脸识别是机制; • 从杭州到上海是策略,坐火车是机制; • 接口是策略,实现是机制; • 声明是策略,过程是机制; • 策略面向外部交互,机制面向内部实现; • 策略追求开放标准,机制追求稳定可复用; • 策略与机制要分离; • 策略与机制随着层次的变化而变化; 应用管理的策略与机制 应用 版本 工作负载 负载均衡 日志 指标 容量 服务 依赖 路由规则 持久卷 部署策略 健康检查 … 灰度 发布 定时弹性 事件 指标弹性 分批发布 重启 回滚 日志管理 事件中心 指标监控 存储挂载 服务绑定 手动弹性 回退历史 负载均衡 报警 诊断 组件管理 服务治理 … 权限 K8s Istio Envoy Tekton Argo KEDA ES InfluxDB0 码力 | 23 页 | 7.70 MB | 1 年前3
Go可观测性实践可观测性概述 第一部分 广义的可观测性:可以根据系统的外部输出信息推断出系统内部状态的好 坏。 软件系统的可观测性:一种度量能力,能帮你更好的理解系统当前所处的 任何状态。如果无需发布新代码就可以理解任何新的或怪异的状态,那么 系统就具备可观测性。 什么是可观测性? 可观测性开源产品 每种方案都有特定的、自定义的 步骤来生产和转移符合后端存储 的遥测(Telemetry)数据,这就带 来了工具或者厂商的绑定性。 Go工程插桩(Instrument) 需要对业务开发者几乎零成本的接入链路追踪,几乎完全依赖于少量通用组件库的改造。 当一个请求在处理跟踪控制路径的过程中,需要把跟踪的上下文存储在ThreadLocal中,在Go中 就是存储在Context中,一般约定每个方法第一个参数为Context(上下文)。 覆盖组件不限于:数据库、缓存、消息队列、RPC、HTTP等。 插桩(拦截器) 创建并命名上下文(HTTP请 通常用于像温度或者内存使 用率这种指标数据,也可以表示能随时增加或减少的“总数”,例如:当前并发请求的数量。 Histogram Histogram 在一段时间范围内对数据进行采样,并将其计入可配置的存储桶(bucket)中,后续可通 过指定区间筛选样本,也可以统计样本总数。 插桩(Hook) 指标数据 指标计算 数据流转 使用Collector的好处在于一些 计算操作可以再Collector中统0 码力 | 35 页 | 2.88 MB | 1 年前3
2.2.2 深入理解BFE支持多租户 • 引入条件表达式,减少正则表达式使用 • 降低动态配置加载的难度 • 区分“常规配置”和“动态配置” • 增强服务状态监控能力 • 向外展现大量内部的执行状态 • 将大存储功能转移到外部 • 加快启动速度 正则表达式 方案的问题 • 配置难以维护:正则表达式存在严重的可读 性问题 • 性能存在隐患:有可能因编写不当引起严重 的性能退化 BFE转发的主要概念 BFE的转发过程 https://github.com/baidu/go-lib • 支持状态、差值、延迟统计等 配置管理 • BFE配置的分类 • 常规配置:.conf • 动态配置:.data • 配置动态加载 • 外部触发,细粒度加载 写配置 func (t *ProductRuleTable) Update(conf productRuleConf) { t.lock.Lock() t.version =0 码力 | 26 页 | 1.78 MB | 1 年前3
Go基础语法宝典method重写 interface 什么是interface interface类型 interface值 空interface interface函数参数 interface变量存储的类型 嵌入interface 反射 并发 goroutine channels Buffered Channels Range和Close Select 超时 runtime goroutine 么上面的代码变成这样了: 觉得上面的还是有些繁琐,继续简化: 现在是不是看上去非常简洁了? := 这个符号直接取代了 var 和 type ,这种形式叫做简短声明。不过它有 一个限制,那就是它只能用在函数内部;在函数外部使用则会无法编译通过,所以一般用 var 方式来定 义全局变量。 //定义一个名称为“variableName”,类型为"type"的变量 var variableName type //定义三个类型都是“type”的变量 e, f, g, h, i, j, x, y, z, w, v) } array array 就是数组,它的定义方式如下: 在 [n]type 中, n 表示数组的长度, type 表示存储元素的类型。对数组的操作和其它语言类似,都是 通过 [] 来进行读取或赋值: 由于长度也是数组类型的一部分,因此 [3]int 与 [4]int 是不同的类型,数组也就不能改变长度。数组 之间0 码力 | 47 页 | 1020.34 KB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.aGOPATH文件夹中的pkg子文件夹用来缓存被本地项目所依赖的Go模块(一个 Go模块为若干Go库包的集合)的版本。 GOBIN环境变量用来指定go install子命令产生的Go应用程序二进制可执行 文件应该存储在何处。 它的默认值为GOPATH文件夹中的bin子目录所对应的 目录路径。 GOBIN路径需配置在PATH环境变量中,以便从任意目录运行这些 Go应用程序。 最简单的Go程序 第3章:Go官方工具链 (https://en.wikipedia.org/wiki/IEEE_754)存储。 一个布尔值表示一个真假。在内存中,一个布尔值只有两种可能的状态。 这两种状 态使用两个预声明(或称为内置)的常量(false和true)来表示。 关于常量声 明,下一篇文章(第7章)将做详细解释。 从逻辑上说,一个字符串值表示一段文本。 在内存中,一个字符串存储为一个字节 (byte)序列。 此字节序列体现了此字符串所表示的文本的UTF-8编码形式。 == 2 10| Executable // == 4 11| ) 在上面这段代码中,-是一个减法运算符。 变量声明和赋值操作语句 变量可以被看作是在运行时刻存储在内存中并且可以被更改的具名的值。 所有的变量值都是类型确定值。当声明一个变量的时候,我们必须在代码中给编译 器提供足够的信息来让编译器推断出此变量的确切类型。 在一个函数体内声明的变量称为局部变量。0 码力 | 591 页 | 21.40 MB | 1 年前3
03. Golang 在隐私计算平台建设中的实践 - 刘敬fp(fq(B)) = {fp(fq(b1)), fp(fq(b2)), …, fp(fq(bn))} fq(fp(A)) fp(fq(B)) 发起⽅方 发起⽅方 算法定义:基于Diffie Hellman密钥交换思想,求双⽅方集合的交集,保护交集之外的数据 数据集 A = {a1, a2, …, an} 1.1随机⽣生成秘钥p,公共参数N 1.2加密数据集A的每个元素 fp(A) = {fp(a1)0 码力 | 37 页 | 6.20 MB | 1 年前3
共 46 条
- 1
- 2
- 3
- 4
- 5













