The Way To Go - 2012............................................................................551 20.7 Using the datastore ..............................................................................................552 Caching data in applications: Applications working with data coming from a database (or in general a datastore) will often cache that data in memory, because retrieving a value from a database is a costly operation; will output: 1 2 3 4 For a more useful example, see § 20.7 where data from the App Engine datastore is shown through a template with: {{range .}} {{with .Author}}{{html
0 码力 | 629 页 | 4.85 MB | 1 年前3
Writing Web Apps in GoListenAndServe. Also add a couple of imports. package moustachio import ( "appengine" "appengine/datastore" ) func init() { http.HandleFunc("/", errorHandler(upload)) http.HandleFunc("/edit", errorHandler(edit)) the image under a unique key, a hash of the image. key := datastore.NewKey("Image", keyOf(buf.Bytes()), 0, nil) _, err = datastore.Put(c, key, &Image{buf.Bytes()}) check(err) // Redirect Request) { c := appengine.NewContext(r) key := datastore.NewKey("Image", r.FormValue("id"), 0, nil) im := new(Image) err := datastore.Get(c, key, im) check(err) i, _, err := image0 码力 | 66 页 | 712.40 KB | 1 年前3
Go基础语法宝典c := appengine.NewContext(r) key := datastore.NewKey(c, "Record", r.FormValue("id"), 0, nil) record := new(Record) if err := datastore.Get(c, key, record); err != nil { http c := appengine.NewContext(r) key := datastore.NewKey(c, "Record", r.FormValue("id"), 0, nil) record := new(Record) if err := datastore.Get(c, key, record); err != nil { return c := appengine.NewContext(r) key := datastore.NewKey(c, "Record", r.FormValue("id"), 0, nil) record := new(Record) if err := datastore.Get(c, key, record); err != nil { return0 码力 | 47 页 | 1020.34 KB | 1 年前3
Build web application with Golangc := appengine.NewContext(r) key := datastore.NewKey(c, "Record", r.FormValue("id"), 0, nil) record := new(Record) if err := datastore.Get(c, key, record); err != nil { http c := appengine.NewContext(r) key := datastore.NewKey(c, "Record", r.FormValue("id"), 0, nil) record := new(Record) if err := datastore.Get(c, key, record); err != nil { return c := appengine.NewContext(r) key := datastore.NewKey(c, "Record", r.FormValue("id"), 0, nil) record := new(Record) if err := datastore.Get(c, key, record); err != nil { return0 码力 | 327 页 | 1.63 MB | 1 年前3
Go Web编程Request) { c := appengine.NewContext(r) key := datastore.NewKey(c, "Record", r.FormValue("id"), 0, nil) record := new(Record) if err := datastore.Get(c, key, record); err != nil { 228 error { c := appengine.NewContext(r) key := datastore.NewKey(c, "Record", r.FormValue("id"), 0, nil) record := new(Record) if err := datastore.Get(c, key, record); err != nil { return *appError { c := appengine.NewContext(r) key := datastore.NewKey(c, "Record", r.FormValue("id"), 0, nil) record := new(Record) if err := datastore.Get(c, key, record); err != nil { return0 码力 | 295 页 | 5.91 MB | 1 年前3
Building API server-side architecture for Beginnersimplementations from model • Prepare repository package and move database handling implementation to datastore package. (apply DIP) • Get used to how to use interface in Go © ����-���� BASE, Inc. ��0 码力 | 38 页 | 690.29 KB | 1 年前3
2.游戏战中陪伴助手微服务架构设计与应用我们要怎么做? • 我们的输出是什么? • 策略:语音 / 标记 • 娱乐:三杀收下! • 攻略:AKM 不适合新手 • 指导:我们去资源点搜刮吧 • 有理有据: • 去哪里 • 做什么 • 为什么 黑盒系统,输入输出 初始方案——Lua 脚本 符合直觉的第一个方案 初始方案——Lua 脚本 如何新增策略 初始方案——Lua 脚本 如何修改策略 初始方案——Lua 方案 显而易见的问题 问题 需求 - 所有策略需求都需要走开发流程 - 迭代周期长:2周开发、测试、上线 运营 - 变更困难,修改策略 = 修改代码 开发 - 代码低内聚,交接难度大 扩展 - 没有考虑扩展 功能 - 难以实现战略推荐 - 早期:先考虑有无 - 引入推荐系统 系统思考——如何评判方案的好坏? 需要定义几个维度来评判一个方案的好坏 - 响应性能: 获取事件到输出策略的延迟 - 服务器成本: 服务器成本: 每服务千人成本越低越好 - 运营简易度: 设计新运营策略的难度 - 开发迭代: 如需开发介入,那么功能迭代的速度 - 可解释性: 理由是否能否说服玩家遵从建议 - 对用户价值: 提升玩家体验 / 吃鸡率的帮助有多大 推荐系统接入——系统架构 推荐系统: 向量化 方案探索——资源点推荐 针对具体场景开发 - 专利:《一种在游戏中离线挖掘、实时推荐资源点的方案》 - 大数据挖掘资源出现位置0 码力 | 47 页 | 11.10 MB | 1 年前3
Golang大规模云原生应用管理实践2020.11.15 插入:策略(Policy)与机制(Mechanism) 策略是做事的一组概念和计 划,关注要做什么事 “what” 机制是获取结果的过程, 方法和系统,关注如何做事 “how” • 员工进入公司需要验证是一个策略,人脸识别是机制; • 从杭州到上海是策略,坐火车是机制; • 接口是策略,实现是机制; • 声明是策略,过程是机制; • 策略面向外部交互,机制面向内部实现; 策略面向外部交互,机制面向内部实现; • 策略追求开放标准,机制追求稳定可复用; • 策略与机制要分离; • 策略与机制随着层次的变化而变化; 应用管理的策略与机制 应用 版本 工作负载 负载均衡 标签 流量 组件 日志 指标 容量 服务 依赖 路由规则 持久卷 部署策略 健康检查 … 灰度 发布 定时弹性 事件 指标弹性 分批发布 重启 回滚 日志管理 事件中心 指标监控 Kube eventer … 策略 机制 Jaeger 实例 调度策略 链路 K8s及云原生生态给 开发者提供的是机制 开发者直接使用K8s的失败故事 • 认知成本高:K8s功能强大却没有统一的使用方式,不得不学习复杂的声明字段和各种奇怪的Annotation; • 稳定性不足:没有设置Pod的QoS等级,导致频繁被驱逐,没有设置反亲和性策略,导致节点流量不均; • 扩展效0 码力 | 23 页 | 7.70 MB | 1 年前3
Hello 算法 1.1.0 Go版10.3 二分查找边界 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 10.4 哈希优化策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 10.5 重识搜索算法 . . . . 1 分治算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 12.2 分治搜索策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 12.3 构建二叉树问题 . . . 轮的重复后,就能将其牢记在心。推荐的题单和刷题计划请见此 GitHub 仓库。 3. 阶段三:搭建知识体系。在学习方面,我们可以阅读算法专栏文章、解题框架和算法教材,以不断丰富 知识体系。在刷题方面,可以尝试采用进阶刷题策略,如按专题分类、一题多解、一解多题等,相关的 刷题心得可以在各个社区找到。 如图 0‑8 所示,本书内容主要涵盖“阶段一”,旨在帮助你更高效地展开阶段二和阶段三的学习。 第 0 章 前言 hello‑algo0 码力 | 383 页 | 18.48 MB | 1 年前3
Hello 算法 1.0.0 Golang版10.3 二分查找边界 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 10.4 哈希优化策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 10.5 重识搜索算法 . . . . 1 分治算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 12.2 分治搜索策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 12.3 构建二叉树问题 . . . ,通常在进行 3~5 轮的重复后,就能将其牢记在心。 3. 阶段三:搭建知识体系。在学习方面,我们可以阅读算法专栏文章、解题框架和算法教材,以不断丰富 知识体系。在刷题方面,可以尝试采用进阶刷题策略,如按专题分类、一题多解、一解多题等,相关的 刷题心得可以在各个社区找到。 如图 0‑8 所示,本书内容主要涵盖“阶段一”,旨在帮助你更高效地展开阶段二和阶段三的学习。 第 0 章 前言 hello‑algo0 码力 | 382 页 | 17.60 MB | 1 年前3
共 39 条
- 1
- 2
- 3
- 4













