Go Web编程WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3 1.Go环境配置 1.1. Go安装 1.2. GOPATH 与工作空间 1.3. Go 命令 1.4. Go开发工具 1.5. 小结 2.Go语言基础 2.1. 你好,Go 2.2. Go基础 2.3. 7.4 模板处理 7.5 文件操作 7.6 字符串处理 7.7 小结 8.Web服务 8.1 Socket编程 8.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 3 controller设计 13.4 日志和配置设计 13.5 实现博客的增删改 13.6 小结 14.扩展Web框架 14.1 静态文件支持 14.2 Session支持 14.3 表单支持 14.4 用户认证 14.5 多语言支持 14.6 pprof支持 14.7 小结 附录A 参考资料 5 1 GO环境配置 1 GO环境配置 欢迎来到Go的世界,让我们开始探索吧!0 码力 | 295 页 | 5.91 MB | 1 年前3
大规模高性能区块链架构设计模式与测试框架-李世敬4 趣链科技 版权所有 ©2016-2021 4 趣链科技 版权所有 ©2016-2021 4 区块链诞生 区块链是互联网发展到一 定阶段的必然产物,是在 低成本、高效、快捷的基 础上对其安全可信及多元 价值传递与贡献分配体系 的完善。 物理世界 价值互联网 移动互联网 互联网 数据可信 资产可信 合作可信 可信 普适 信息 数字世界 5 趣链科技 版权所有 ©2016-2021 利用区块链的去中心化、数据 不能篡改的特性,解决制约云 计算发展的“可信、可靠、可 控”的问题。 融入大数据采集和共享中,作 为数据源接入大数据分析平台。 强化分布式数据存 储和边缘计算能力, 拓展物联安全边界 和应用范围。 为训练深度学习系统提供可信数据, 优化分析决策的准确性和可信性。 人工智能 区块链 云计算 物联网 大数据 10 趣链科技 版权所有 ©2016-2021 10 趣链科技 PoS DPoS 可编程货币 可编程⾦融 可编程社会 合约层 智能合约脚本 算法机制 合约执⾏引擎 哈希算法 数字签名 P2P⽹络 传播机制 验证机制 默克尔树 轮胎、悬架等 基础硬件配置 电路油路 等传导系统 引擎、动⼒系统 汽油等润滑系统 车载⾃动化功能 公路、越野等具体场景 公有链基础架构⾃下⽽上分为六层:数据层、⽹络层、共识层、激励层、合约层与应⽤层。如果将区块链⽐作⼀0 码力 | 39 页 | 56.58 MB | 1 年前3
03. Golang 在隐私计算平台建设中的实践 - 刘敬人数据保护的重要地位。 国内外纷纷出台了了围绕数据使⽤用和保护的公共政策 2021年年6⽉月10⽇日,《中华⼈人⺠民共和国数据安全法》在⼗十三届全国⼈人⼤大常委会正式颁布。 明确指出坚持安全与发展并重,锁定⽀支持促进数据安全与发展的措施;建⽴立保障政务数 据安全和推动政务数据开放的制度措施。该法⾃自2021年年9⽉月1⽇日起施⾏行行。 2021年年8⽉月20⽇日,⼗十三届全国⼈人⼤大常委 出了了隐私计算+区 块链,并达成业内 共识 趣链科技版权所有©2016 – 2021 7 隐私计算技术分类 • 安全多⽅方计算 纯密码学技术实现数据的可 ⽤用不不可⻅见 • 可信执⾏行行环境 基于TEE硬件保障计算环境安全 可信,提供计算模型及数据双维 度安全 • 联邦学习 结合机器器学习和密码学算 法,数据联邦化训练,充 分释放数据价值 02 隐私计算平台 架构 趣链科技版权所有©2016 protocol instance:⼀一个instance对应对应具体的算法的⼀一中实现,包含算法的配置和所有元函 数的 集合 趣链科技版权所有©2016 – 2021 20 隐私计算算法框架-instance 声明算法实例例的配置 通⽤用流程的回调函数 按照隐私计算中的⻆角⾊色 配置元函数列列表 由于算法的⼀一部分逻辑是以独⽴立的函数存在 可以在框架中进⾏行行⽅方便便的复⽤用,并可以抽出0 码力 | 37 页 | 6.20 MB | 1 年前3
2.2.2 深入理解BFE没有统一七层接入的问题 • 功能重复开发 • 运维成本高 • 流量统一控制能力低 • 引入BFE后 • 功能统一开发 • 运维统一管理 • 流量控制能力增强 • BFE平台的主要功能 • 接入和转发,流量调度,安全防攻击,数据分析 BFE部署前 BFE部署后 L4LB 业务A 集群 业务B 集群 业务C 集群 BFE 业务A 集群 业务B 集群 业务C 集群 L4LB BFE平台架构 HAProxy,Nginx,Envoy,Traefik, BFE,… BFE为什么基于Go语言 • 研发效率 • 远高于C语言 • 稳定性 • 内存方面错误降低 • 可以捕捉异常 • 安全性 • 缓存区溢出风险降低 • 代码可维护性 • 可读性好 • 易于编写高并发逻辑 • 网络协议栈支持 BFE的短板 • 没有在内存拷贝上做极致优化 • 使用Go系统协议栈 • 无法利用CPU亲和性(CPU BFE主要设计思想 • 转发模型优化 • 支持多租户 • 引入条件表达式,减少正则表达式使用 • 降低动态配置加载的难度 • 区分“常规配置”和“动态配置” • 增强服务状态监控能力 • 向外展现大量内部的执行状态 • 将大存储功能转移到外部 • 加快启动速度 正则表达式 方案的问题 • 配置难以维护:正则表达式存在严重的可读 性问题 • 性能存在隐患:有可能因编写不当引起严重 的性能退化0 码力 | 26 页 | 1.78 MB | 1 年前3
Go 入门指南(The way to Go)开发出的软件能够很好地在网络环境下工作 使人们能够享受软件开发的过程 Go 语言就在这样的环境下诞生了,它让人感觉像是 Python 或 Ruby 这样的动态语言,但却又拥有像 C 或者 Java 这类语言的高性能和安全性。 Go 语言出现的目的是希望在编程领域创造最实用的方式来进行软件开发。它并不是要用奇怪的语法和晦 涩难懂的概念来从根本上推翻已有的编程语言,而是建立并改善了 C、Java、C# 中的许多语法风格。它提 个条件之间做到了最佳的平 衡:快速编译,高效执行,易于开发。 1.2.3 Go 语言的发展目标 Go 语言的主要目标是将静态语言的安全性和高效性与动态语言的易开发性进行有机结合,达到完美平 衡,从而使编程变得更加有乐趣,而不是在艰难抉择中痛苦前行。 因此,Go 语言是一门类型安全和内存安全的编程语言。虽然 Go 语言中仍有指针的存在,但并不允许进 行指针运算。 Go 语言的另一个目标是对于网络通信、并 的类型层级,这违背了编程语言应该提升生产力的宗旨。 函数是 Go 语言中的基本构件,它们的使用方法非常灵活。在第六章,我们会看到 Go 语言在函数式编程 方面的基本概念。 Go 语言使用静态类型,所以它是类型安全的一门语言,加上通过构建到本地代码,程序的执行速度也非 常快。 作为强类型语言,隐式的类型转换是不被允许的,记住一条原则:让所有的东西都是显式的。 Go 语言其实也有一些动态语言的特性(通过关键字0 码力 | 380 页 | 2.97 MB | 1 年前3
Go 入门指南(The way to Go)开发出的软件能够很好地在网络环境下工作 使人们能够享受软件开发的过程 Go 语言就在这样的环境下诞生了,它让人感觉像是 Python 或 Ruby 这样的动态语言,但却又拥有像 C 或者 Java 这类语言的高性能和安全性。 Go 语言出现的目的是希望在编程领域创造最实用的方式来进行软件开发。它并不是要用奇怪的语法和晦涩难懂的概念 来从根本上推翻已有的编程语言,而是建立并改善了 C、Java、C# 中的许多语法风格。它提倡通过接口来针对面向 语言的主要目标是将静态语言的安全性和高效性与动态语言的易开发性进行有机结合,达到完美平衡,从而使编程 变得更加有乐趣,而不是在艰难抉择中痛苦前行。 1.2.2 为什么要创造一门编程语言 1.2.3 Go 语言的发展目标 1.2 语言的主要特性与发展的环境和影响因素 - 19 - 本文档使用 书栈(BookStack.CN) 构建 因此,Go 语言是一门类型安全和内存安全的编程语言。虽然 Go 这违背了编程语言应该提升生产力的宗旨。 函数是 Go 语言中的基本构件,它们的使用方法非常灵活。在第六章,我们会看到 Go 语言在函数式编程方面的基本 概念。 Go 语言使用静态类型,所以它是类型安全的一门语言,加上通过构建到本地代码,程序的执行速度也非常快。 作为强类型语言,隐式的类型转换是不被允许的,记住一条原则:让所有的东西都是显式的。 Go 语言其实也有一些动态语言的特性(通过关键字0 码力 | 466 页 | 4.44 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 一些专题 第28章:代码断行规则 第29章:更多关于延迟函数调用的知识点 第30章:一些恐慌/恢复用例 支持函数闭包(closure)。 支持方法。 支持延迟函数调用(defer)。 支持类型内嵌(type embedding)。 支持类型推断(type deduction or type inference)。 内存安全。 自动垃圾回收。 良好的代码跨平台性。 自定义泛型(从Go 1.18开始)。 除了以上特性,Go还有如下亮点: Go的语法很简洁并且和其它流行语言相似。 这使得具有一定编程经验的 程序员很容易上手Go编程。 o也一样。Go的设计中有很 多折衷和各种权衡。Go 1确实有一些不足。 比如,目前Go不支持任意类型的 不变量。这导致很多标准库中一些希望永不被更改的值目前被声明为变量。这 是Go程序中的一个潜在安全隐患。 本书由老貘 ? 历时三年写成。目前本书仍在不断改进和增容中。你的赞赏是 本书和Go101.org网站不断增容和维护的动力。 赞赏 (请搜索关注微信公众号“Go 101”或者访问github0 码力 | 821 页 | 956.82 KB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 一些专题 第28章:代码断行规则 第29章:更多关于延迟函数调用的知识点 第30章:一些恐慌/恢复用例 支持函数闭包(closure)。 支持方法。 支持延迟函数调用(defer)。 支持类型内嵌(type embedding)。 支持类型推断(type deduction or type inference)。 内存安全。 自动垃圾回收。 良好的代码跨平台性。 自定义泛型(从Go 1.18开始)。 除了以上特性,Go还有如下亮点: Go的语法很简洁并且和其它流行语言相似。 这使得具有一定编程经验的程 序员很容易上手Go编程。 Go也一样。Go的设计中有很多 折衷和各种权衡。Go 1确实有一些不足。 比如,目前Go不支持任意类型的不变 量。这导致很多标准库中一些希望永不被更改的值目前被声明为变量。这是Go 程序中的一个潜在安全隐患。 本书由老貘 历时三年写成。目前本书仍在不断改进和增容中。你的赞赏是本 书和Go101.org网站不断增容和维护的动力。 (请搜索关注微信公众号“Go 101”或者访问github.co0 码力 | 608 页 | 1.08 MB | 1 年前3
Hello 算法 1.1.0 Go版是找一台计算机,运行这两个算法,并监控记录它们的运行时间和内存占用情况。这种评估方式能够反映真 实情况,但也存在较大的局限性。 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能。比如在某台计算机中,算法 A 的运行 时间比算法 B 短;但在另一台配置不同的计算机中,可能得到相反的测试结果。这意味着我们需要在各种机 器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。 者的优劣并根据情境选择合适的方 法至关重要。 2.3 时间复杂度 运行时间可以直观且准确地反映算法的效率。如果我们想准确预估一段代码的运行时间,应该如何操作呢? 1. 确定运行平台,包括硬件配置、编程语言、系统环境等,这些因素都会影响代码的运行效率。 2. 评估各种计算操作所需的运行时间,例如加法操作 + 需要 1 ns ,乘法操作 * 需要 10 ns ,打印操作 print() 需要 } } return -1 } 值得说明的是,我们在实际中很少使用最佳时间复杂度,因为通常只有在很小概率下才能达到,可能会带来 一定的误导性。而最差时间复杂度更为实用,因为它给出了一个效率安全值,让我们可以放心地使用算法。 从上述示例可以看出,最差时间复杂度和最佳时间复杂度只出现于“特殊的数据分布”,这些情况的出现概率 可能很小,并不能真实地反映算法运行效率。相比之下,平均时间复杂度可以体现算法在随机输入数据下的0 码力 | 383 页 | 18.48 MB | 1 年前3
Hello 算法 1.0.0 Golang版是找一台计算机,运行这两个算法,并监控记录它们的运行时间和内存占用情况。这种评估方式能够反映真 实情况,但也存在较大的局限性。 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能。比如在某台计算机中,算法 A 的运行 时间比算法 B 短;但在另一台配置不同的计算机中,可能得到相反的测试结果。这意味着我们需要在各种机 器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。 者的优劣并根据情境选择合适的方 法至关重要。 2.3 时间复杂度 运行时间可以直观且准确地反映算法的效率。如果我们想准确预估一段代码的运行时间,应该如何操作呢? 1. 确定运行平台,包括硬件配置、编程语言、系统环境等,这些因素都会影响代码的运行效率。 2. 评估各种计算操作所需的运行时间,例如加法操作 + 需要 1 ns ,乘法操作 * 需要 10 ns ,打印操作 print() 需要 } } return -1 } 值得说明的是,我们在实际中很少使用最佳时间复杂度,因为通常只有在很小概率下才能达到,可能会带来 一定的误导性。而最差时间复杂度更为实用,因为它给出了一个效率安全值,让我们可以放心地使用算法。 从上述示例可以看出,最差时间复杂度和最佳时间复杂度只出现于“特殊的数据分布”,这些情况的出现概率 可能很小,并不能真实地反映算法运行效率。相比之下,平均时间复杂度可以体现算法在随机输入数据下的0 码力 | 382 页 | 17.60 MB | 1 年前3
共 59 条
- 1
- 2
- 3
- 4
- 5
- 6













