旅装之缝,旅中成洞

[2023-08-19 14:56:59] 云上的一只小澈
[2023-08-19 16:57:15] 旅装之缝,旅中成洞
[2023-08-19 18:34:16] 阅读时长: 1 (分)
[2023-08-19 19:38:35] 云上的一只小澈
[2023-08-19 20:06:58] live with the trade-offs
[2023-08-19 20:17:47] iceclean
[2023-08-20 15:55:54] 暑假时长
[2023-08-20 15:59:30] √
[2023-08-20 16:05:48] 暑假期间,在学习方面,学习了 Java 虚拟机、内存模型、高并发、存储系统相关知识和底层原理及调优、学习了各中间件的底层原理和实战应用、学习了各类算法尝试解决中难程度的问题、学习了计算机网络和操作系统的知识。 在实践方面,参与了 QG 工作室项目的开发,积累了宝贵的项目经验和竞赛经验培养了项目开发能力和组织协调能力,提高了个人的编程能力以及团队协作沟通能力。
[2023-08-20 16:57:51] 时长证明粘贴补录表-3120005122-倪浩楠
[2023-08-20 16:57:58] 时长证明粘贴补录表-3120005122-倪浩楠
[2023-08-20 20:45:15] 116.30.0.190
[2023-08-20 22:23:08] https://lib-j5o5m5j7vhziyhvkakgj2fky.thanks.sbs
[2023-08-20 22:24:50] Refactoring
[2023-08-20 22:25:16] https://zlibrary-africa.se/
[2023-08-20 22:25:38] https://singlelogin.re
[2023-08-20 22:26:49] https://zlibrary-africa.se/
[2023-08-20 22:28:19] https://zh.zlibrary-africa.se/
[2023-08-20 22:47:26] The best comment is a good name for a method or class.
[2023-08-20 23:04:05] architecture
[2023-08-20 23:06:08] architecture refactoring of big companies
[2023-08-22 20:52:29] quantum leaps
[2023-08-22 22:07:06] message notification system
[2023-08-22 22:11:14] architecture design
[2023-08-22 23:31:52]
[2023-08-22 23:31:57]


[2023-08-22 23:32:03] 艹 目
[2023-08-22 23:32:07] 艹目
[2023-08-22 23:33:41] 几度窒息不能言,终究还是要走向明天的啊 听听背景音乐,慢慢地调整自己的呼吸;只是 ost 三年了还没出,又是一个有生之年系列 难以割舍的过往,与窘迫的现实 天色慢慢暗下,却没有夕阳照进 我必须一直说话、或是沉浸与某件事,不然就很容易窒息 昨日之歌(官网:https://singyesterday.com
[2023-08-22 23:33:44] 几度窒息不能言,终究还是要走向明天的啊

听听背景音乐,慢慢地调整自己的呼吸;只是 ost 三年了还没出,又是一个有生之年系列

难以割舍的过往,与窘迫的现实

天色慢慢暗下,却没有夕阳照进

我必须一直说话、或是沉浸与某件事,不然就很容易窒息

昨日之歌(官网:https://singyesterday.com


[2023-08-22 23:34:24] 格莱普尼尔
[2023-08-22 23:34:27] 格莱普尼尔
[2023-08-22 23:35:07] ((20230822233313-ac0yk0x 昨日之歌))
[2023-08-22 23:35:10] ((20230822233313-ac0yk0x 昨日之歌))
[2023-08-22 23:35:13] ((20230822233353-q54ffan 知晓天空之蓝的人啊))
[2023-08-22 23:35:16] ((20230822233353-q54ffan 知晓天空之蓝的人啊))
[2023-08-22 23:35:19] ((20230822233407-125kpk4 格莱普尼尔))
[2023-08-22 23:35:23] ((20230822233407-125kpk4 格莱普尼尔))
[2023-08-22 23:35:55]
[2023-08-22 23:35:58]


[2023-08-22 23:36:08] (官网:https://soraaoproject.jp
[2023-08-22 23:36:13] (官网:https://soraaoproject.jp
[2023-08-22 23:36:22] ReLife
[2023-08-22 23:36:25] ReLife
[2023-08-22 23:36:28] 在盛夏等待
[2023-08-22 23:36:31] 在盛夏等待
[2023-08-22 23:36:49] 电脑线圈 電脳コイル
[2023-08-22 23:37:57] 星空清理者 プラネテス
[2023-08-22 23:41:44] 亡念的扎姆德 亡念のザムド
[2023-08-22 23:42:24] 交响诗篇 交響詩篇エウレカセブン
[2023-08-22 23:45:40] 兽之奏者艾琳 獣の奏者 エリン
[2023-08-22 23:47:13] 永生之酒 バッカーノ!
[2023-08-22 23:47:18] 永生之酒 バッカーノ!
[2023-08-23 23:17:32] 暑假期间,在学习方面,学习了 Golang、设计模式、架构设计、算法等相关知识,完成了结合基础技能的相关应用,时间能力得到了提升。同时将实践经验总结成文档,进行经验的沉淀以及技能的分享交流。在工作室中,也积极向学弟学妹提供理论指导支持,参与到工作室的建设中去。
[2023-08-23 23:18:38] 该同学在暑假期间认真学习,积极参与项目开发和团队活动,认定其为优秀训练营营员,希望在接下来的实践中再接再厉,勇攀高峰。
[2023-08-23 23:19:08] √
[2023-08-23 23:19:26] 倪浩楠 学 号 3120005122
计算机学院 专业班级 软件工程卓越工程师班
15625694952 指导老师 谢光强
[2023-08-23 23:19:38] 暑假期间,在学习方面,学习了 Golang、设计模式、架构设计、算法等相关知识,完成了结合基础技能的相关应用,时间能力得到了提升。同时将实践经验总结成文档,进行经验的沉淀以及技能的分享交流。在工作室中,也积极向学弟学妹提供理论指导支持,参与到工作室的建设中去。
[2023-08-23 23:19:52] 暑假期间,在学习方面,学习了 Golang、设计模式、架构设计、算法等相关知识,完成了结合基础技能的相关应用,时间能力得到了提升。同时将实践经验总结成文档,进行经验的沉淀以及技能的分享交流。在工作室中,也积极向学弟学妹提供理论指导支持,参与到工作室的建设中去。
[2023-08-23 23:21:49] √
[2023-08-23 23:21:53] □
[2023-08-24 00:14:17] 上桥菜穗子
[2023-08-25 21:18:22] 愛しい人へ
[2023-08-25 21:29:38] 84.3.165.108
[2023-08-25 21:40:51] Martin Fowler
[2023-08-25 21:46:16] 上桥菜穗子
[2023-08-25 22:38:35] しかし
[2023-08-25 22:54:45] 従者
[2023-08-25 22:56:49] 14.155.2.8
[2023-08-25 22:57:52] eclean.top/2/2023/08/19/short/旅装之缝,旅中成洞
[2023-08-25 22:58:43] https://iceclean.top/2/2023/08/19/short/旅装之缝,旅中成洞
[2023-08-27 22:00:28] http.Handle(“/metrics”, promhttp.Handler()) http.ListenAndServe(“:2112”, nil)
[2023-08-27 22:01:06] type metricInfo struct {
ID int64 json:"id" form:"id"
IP string
Path string json:"path" form:"path"
}

func handleMetricIn(resp http.ResponseWriter, req *http.Request) {
info := getMetricInfo(req)
log.Printf(“IN: [%v][%v] %v”, info.ID, info.IP, info.Path)
}

func handleMetricExit(resp http.ResponseWriter, req *http.Request) {
info := getMetricInfo(req)
log.Printf(“EXIT: [%v][%v] %v”, info.ID, info.IP, info.Path)
}

func getMetricInfo(req *http.Request) *metricInfo {
// 获取上报的参数
info := &metricInfo{}
if err := json.NewDecoder(req.Body).Decode(info); err != nil {
log.Printf(“metric info parse failed: %v\n”, err)
}
// 解析路径
path, err := url.QueryUnescape(info.Path)
if err != nil {
path = “Unescape failed” + info.Path
}
// 获取 IP 地址
realIP := req.Header.Get(“X-Real-IP”)
if realIP == “” {
realIP = req.RemoteAddr
}
info.IP = realIP
info.Path = path
return info
}
[2023-08-27 22:02:28] go get github.com/prometheus/client_golang/prometheus/promhttp
[2023-08-27 22:04:26] “Metric/site”
github.com/prometheus/client_golang/prometheus/promhttp
[2023-08-27 22:04:29] “Metric/site”
github.com/prometheus/client_golang/prometheus/promhttp
[2023-08-27 22:04:32] “github.com/prometheus/client_golang/prometheus/promhttp
[2023-08-27 22:07:05] MsgEventMetric
[2023-08-27 22:09:06] // 消息事件阶段 “mainType”: “commentAction”, // 事件主类型 “eventType”: “digg”, // 事件类型 // 触发阶段 “trigger”: { // 使用的触发器 “name”: “toutiaoTrigger”, // 触发器名称 “appID”: 13 // 所属 app } // 处理阶段 “processor”: { // 使用的处理器 “name”: “diggCommentProcessor”, // 处理器名称 “noticeType”: 201 // 消息类型 } // 发送阶段 “sender”: “digCommentSender”, // 使用的发送器 “filters”: [“userBlock”, “DupFilter”, “CommentVisibleFilter”], // 经过的过滤器 “filtered”: { // 消息被过滤 “name”: “CommentVisibleFilter”, // 哪个过滤器 “reason”: “comment not visible for user xxx”, // 过滤的原因 }, “error”: { // 消息发送异常 “component”: “sender”, // 哪个组件 “type”: “content”, // 什么类型的(init、param、content…) “reason”: “get userID failed” }
[2023-08-27 22:10:18] // 触发器名称
[2023-08-27 22:16:36] opsProcessed = promauto.NewCounter(prometheus.CounterOpts{ Name: “myapp_processed_ops_total”, Help: “The total number of processed events”, })
[2023-08-27 22:17:40] = promauto.NewCounter(prometheus.CounterOpts{
Name: “myapp_processed_ops_total”,
Help: “The total number of processed events”,
})
[2023-08-27 22:20:18] The remaining number of messages after passing through each component
[2023-08-27 22:31:46] json.to
[2023-08-27 22:38:13] json.Unmarshal(data, labels)
[2023-08-27 22:39:38] log.Println(“marshal message event metric failed,err:”, err)
[2023-08-27 22:39:41] Unmarshal
[2023-08-27 22:45:35] CommentVisibleFilter
[2023-08-27 22:49:25] func mockSuccess()
[2023-08-27 22:57:32] MsgEventMetric
[2023-08-27 22:57:36] case hit(60):
[2023-08-27 23:00:08] metric MsgEventMetric
[2023-08-27 23:04:10] rand.Intn(100)
[2023-08-27 23:05:46] maxIndex
[2023-08-27 23:05:51] maxIndex
[2023-08-27 23:05:55] p[maxIndex]
[2023-08-27 23:06:02] hitValue
[2023-08-27 23:07:47] switch hit(50, 80, 100) {
case 0:
// 头条
case 1:
// 有柿
case 2:
// 小包
}
[2023-08-27 23:07:57]
[2023-08-27 23:08:00] switch hit(50, 80, 100) {
case 0:
// 头条
case 1:
// 有柿
case 2:
// 小包
}
[2023-08-27 23:08:04] metric.Trigger = “toutiaoTrigger”
metric.AppID = 13
[2023-08-27 23:08:08] metric.Trigger = “shandianTrigger”
metric.AppID = 4939
[2023-08-27 23:08:18] metric.Trigger = “toutiaoTrigger”
metric.AppID = 13
[2023-08-27 23:15:36] metric.Processor = “diggProcessor”
metric.NoticeType = 200
[2023-08-27 23:16:08] metric.Processor = “commentProcessor”
metric.NoticeType = 100
[2023-08-27 23:17:48] metric.ErrorComponent = “processor”
metric.ErrorType = “init”
metric.ErrorReason = “failed”
[2023-08-27 23:17:56] metric MsgEventMetric
[2023-08-27 23:18:02] mockError
[2023-08-27 23:18:15] // 20% 处理失败
if hit(80, 100) == 1 {
mockError(metric, “processor”)
return false
}
[2023-08-27 23:18:35] switch metric.EventType {
case “0”:
metric.Processor = “diggProcessor”
metric.NoticeType = 200
case “insert”:
metric.Processor = “commentProcessor”
metric.NoticeType = 100
case “digg”:
metric.Processor = “diggCommentProcessor”
metric.NoticeType = 201
}
return true
[2023-08-27 23:18:52] Sender
[2023-08-27 23:19:54] // 10% 处理失败
if hit(90, 100) == 1 {
mockError(metric, “sender”)
return false
}
[2023-08-27 23:21:28] metric.Filtered = “UserBlock”
metric.FilterReason = “block”
[2023-08-28 01:26:55] // MsgEventMetric 消息事件指标
type MsgEventMetric struct {
// 消息事件阶段
MainType string json:"main_type" // 事件主类型
EventType string json:"event_type" // 事件类型
// 触发阶段
Trigger string json:"trigger" // 使用的触发器名称
AppID int64 json:"app_id,string" // 所属 APP
// 处理阶段
Processor string json:"processor" // 使用的处理器名称
NoticeType int64 json:"notice_type,string" // 消息类型
// 发送阶段
Sender string json:"sender" // 使用的发送其名称
// Filters []string json:"filters,string" // 所经过的过滤器

// 消息被过滤
Filtered string json:"filtered" // 被过滤的过滤器名称
FilterReason string json:"filter_reason" // 被过滤的原因
// 消息异常
ErrorComponent string json:"error_component" // 发生错误的组件
ErrorType string json:"error_type" // 异常类型
ErrorReason string json:"error_reason" // 异常原因
}
[2023-08-30 22:36:53] often fall short when
[2023-08-30 22:37:01] often fall short when it comes to
[2023-08-30 23:03:46] 像五岁小孩一样解释矢量数据库
[2023-08-30 23:04:15] 像废物一样解释矢量数据库
[2023-09-03 00:23:53] I’m super productive when I’m relaxed, happy and working on something I value.
[2023-09-03 00:40:44] without a delay.
[2023-09-03 01:10:34] https://news.ycombinator.com/front?day=
[2023-09-03 12:15:32] wearing many hats
[2023-09-03 18:54:27] on my terms
[2023-09-13 22:59:02] with mixed success
[2023-09-16 15:34:01] https://chatspace.iceclean.top/
[2023-09-17 00:27:27] 消息列表 api 流量放大从 18 倍(消息组数量)降低到正常的 1 倍
[2023-09-17 00:27:33] 消息列表 api 流量放大从 18 倍(消息组数量)降低到正常的 1 倍
[2023-09-17 10:52:10] 职责:头条系消息通知系统业务全链路开发(数据流消费发送、api 请求打包、站内外推送) 业务:接入了 3 个 APP, 头条号、头条极速版、头条搜索 技术:完成了消息互动触达的重构、平台化改造(消息接入标准化、配置化) 1. 头条号消息通知改造:新旧 API 切换、优化主页面对下游的请求量(未读数优化、消息预览优化), 2. 头条极速版消息互通:实现消息双端同步、站外推送按策略选择一端(不重不漏) 3. 头条搜索新消息接入:验证了重构后系统的可行性,实现 0 开发接入(仅配置完成) 4. 互动触达平台化改造:简化消息模型、兼容存量消息、抽象消息接入通用组件,实现配置化消息接入、业务职责分离。动态配开关+埋点+离线表验证新旧架构切换正确性。 5. 其他业务优化:消息列表 api 流量放大从 18 倍(消息组数量)降低到正常的 1 倍、解决读后过滤消息预览问题
[2023-09-17 20:46:00] on the hunt for
[2023-09-17 21:02:11] improve them over time
[2023-09-18 00:31:53] 解决思路1:TCC 中加入配置生效的时间戳,只有当时间戳到达时,读取到的配置才是生效的 产生的问题:如果两台机器时钟不完全一直(有一定的漂移),那依旧会导致生效的时间不一致 主要是保证不漏、重复可以根据 key 过滤。 兜底:如果通过 tcc 判断为不需要发送,则延迟 n 秒后再检查一次,两次都不需要发送才不发送。兜底方案保证了消息不漏,虽然可能提升消息重复的概率,但优势是只剩下消息重复这一种情况了 1. 解决思路2:
[2023-09-18 00:31:58] 解决思路1:TCC 中加入配置生效的时间戳,只有当时间戳到达时,读取到的配置才是生效的

产生的问题:如果两台机器时钟不完全一直(有一定的漂移),那依旧会导致生效的时间不一致

主要是保证不漏、重复可以根据 key 过滤。

兜底:如果通过 tcc 判断为不需要发送,则延迟 n 秒后再检查一次,两次都不需要发送才不发送。兜底方案保证了消息不漏,虽然可能提升消息重复的概率,但优势是只剩下消息重复这一种情况了

  1. 解决思路2:
    [2023-09-18 00:32:35] TCC 中加入配置生效的时间戳,只有当时间戳到达时,读取到的配置才是生效的
    [2023-09-18 00:32:38] TCC 中加入配置生效的时间戳,只有当时间戳到达时,读取到的配置才是生效的
    [2023-09-18 00:32:43] 如果两台机器时钟不完全一直(有一定的漂移),那依旧会导致生效的时间不一致
    [2023-09-18 00:32:46] 如果两台机器时钟不完全一直(有一定的漂移),那依旧会导致生效的时间不一致
    [2023-09-18 00:33:05] 主要是保证不漏、重复可以根据 key 过滤。
    [2023-09-18 00:33:37] 延迟双检
    [2023-09-18 00:36:03] 新旧服务读取到的配置不同,而出现消息重复或者遗漏
    [2023-09-18 00:36:06] 新旧服务读取到的配置不同,而出现消息重复或者遗漏
    [2023-09-18 00:36:18] 新服务获取到新配置,但旧服务依旧是旧配置,将导致两个服务同时发送消息
    [2023-09-18 00:36:21] 新服务获取到新配置,但旧服务依旧是旧配置,将导致两个服务同时发送消息
    [2023-09-18 00:36:32] 新服务旧配置,旧服务新配置,两个服务同时不发送消息
    [2023-09-18 00:36:35] 新服务旧配置,旧服务新配置,两个服务同时不发送消息
    [2023-09-18 00:37:31] 只有当时间戳到达时,读取到的配置才是生效的
    [2023-09-18 00:37:34] 只有当时间戳到达时,读取到的配置才是生效的
    [2023-09-18 00:40:20] 当新服务判定为不发送时,延迟 n 秒后再检查一次。保证消息至少发送了一次
    [2023-09-18 00:40:23] 当新服务判定为不发送时,延迟 n 秒后再检查一次。保证消息至少发送了一次
    [2023-09-18 00:45:09] 如果两台机器时钟不完全一直(有一定的漂移),那依旧会导致生效的时间不一致
    [2023-09-18 00:45:12] 如果两台机器时钟不完全一直(有一定的漂移),那依旧会导致生效的时间不一致
    [2023-09-18 01:02:20] 问题 1:Redis 数据同步问题,新旧服务读取到的去重标识不一致?
    [2023-09-18 01:02:24] 问题 1:Redis 数据同步问题,新旧服务读取到的去重标识不一致?
    [2023-09-18 01:02:39] 延时检查,确保旧服务判定为发的正确性
    [2023-09-18 01:02:42] 延时检查,确保旧服务判定为发的正确性
    [2023-09-18 01:02:45] 当旧服务判定为发送时,延迟 n 秒后再检查一次。确保消息不重复发送
    [2023-09-18 01:02:48] 当旧服务判定为发送时,延迟 n 秒后再检查一次。确保消息不重复发送
    [2023-09-18 01:16:34] 职责:头条系消息通知系统业务全链路开发(数据流消费发送、api 请求打包、站内外推送) 业务:接入了 3 个 APP, 头条号、头条极速版、头条搜索 技术:完成了消息互动触达的重构、平台化改造(消息接入标准化、配置化) 1. 头条号消息通知改造:新旧 API 切换、优化主页面对下游的请求量(未读数优化、消息预览优化), 2. 头条极速版消息互通:实现消息双端同步、站外推送按策略选择一端(不重不漏) 3. 头条搜索新消息接入:验证了重构后系统的可行性,实现 0 开发接入(仅配置完成) 4. 互动触达平台化改造:简化消息模型、兼容存量消息、抽象消息接入通用组件,实现配置化消息接入、业务职责分离。动态配开关+埋点+离线表验证新旧架构切换正确性。 5. 其他业务优化:消息列表 api 流量放大从 18 倍(消息组数量)降低到正常的 1 倍、解决读后过滤消息预览问题 — 问题出在哪里? 缺失动力、没有恰当的正反馈、一阵见血地?(打稿的必要性) ## 如何验证新架构的正确性? 这点在整个答辩的环节是重点,怎么做,应该考虑哪些点? 1. 切量:从旧服务切换到新服务,如何保证命中的用户不会在旧系统中发送消息,同时在新系统中发送消息? TCC 切量时,新旧服务读取到配置的时间可能不同,而出现消息重复或者遗漏 重复:新服务获取到新配置,但旧服务依旧是旧配置,将导致两个服务同时发送消息 遗漏:新服务旧配置,旧服务新配置,两个服务同时不发送消息 1. 解决不同机器生效时间不一致问题:TCC 配置增加生效时间戳 只有当到达指定时间戳,才认为读取到的配置是生效的,否则按上一次读取到的配置为准 1. 问题 1:如何保存上一次读取到的配置?本地缓存? 2. 问题 2:如果两台机器时钟不完全一致(有一定的漂移),依旧会导致生效的时间不一致 2. 解决消息遗漏问题:延时检查,确保新服务判定为不发的正确性 当新服务判定为不发送时,延迟 n 秒后再检查一次。保证消息至少发送了一次 虽然可能会增加消息重复的概率,但至少保证了消息不遗漏,把所有问题归到了消息重复上 3. 解决消息重复问题: 1. 方案1:依靠 Redis 唯一 key 去重,新旧服务采用相同的去重逻辑 Redis 数据同步问题,新旧服务读取到的去重标识不一致?比较难解决 2. 方案2:延时检查,确保旧服务判定为发的正确性 当旧服务判定为发送时,延迟 n 秒后再检查一次。确保消息不重复发送 最终方案:延时检查。旧服务判定为发送时,延迟 n 秒再确认一下是否确实要发送;同理新服务判定为不发送时,延迟 n 秒再确认下是否真的不发送 2. 消息发送量:通过 metric 保证旧消息发送量的减少和新消息发送量的增加基本一致 1. 问题 1: 3. 内容正确性:离线表检查 1. SQL 语句如何编写?
    [2023-09-19 23:45:59] 接口设计、单元测试、服务监控、流量分析、性能优化等;
    [2023-09-19 23:50:19] 架构设计、
    [2023-09-20 00:04:06] 熟悉部门业务
    [2023-09-20 00:07:01] 1、熟悉服务端开发、接触企业应用研发流程,掌握通用研发能力,学习和积累特定场景问题的解决方案。
    2、将计算机基础知识实际运用起来,从分析、设计、排查、优化等方面加深对知识的理解,逐步达到自然运用的程度。
    3、在团队合作中学习,了解与掌握前沿技术,接触不同阶段的人们,不断完善自身职业规划。
    1、理论知识:Go 语言、设计模式、计算机网络、常用算法;服务端开发的基本知识,包括开发工具、基础组件与中间件、服务调度等的原理和应用。
    2、开发方法:技术方案设计、架构和接口设计、单元测试、服务监控、流量分析、性能优化等。
    3、开发技术:Golang 基础、微服务框架、RPC 框架、离线/在线存储、缓存中间件、消息队列、事件框架、动态配置;异步与并发处理、灰度放量/切量、埋点监控与报警。
    4、实践平台:GoLand IDE、代码版本与发布管理平台、计算云引擎、网关与 API 管理、服务树、数据分析、监控大盘、流水线发布、需求池等。
    5、团队协作:了解团队背景、熟悉部门业务、接手开发任务。
    6、方案设计:结合业务现状,设计合理的方案改进现有服务,包括代码架构优化、组件抽象、模型简化、流程标准与配置化、请求处理延迟优化等。
    [2023-09-20 00:11:25] 1、熟悉服务端开发、接触企业应用研发流程,掌握通用研发能力,学习和积累特定场景问题的解决方案。
    2、将计算机基础知识实际运用起来,从分析、设计、排查、优化等方面加深对知识的理解,逐步达到自然运用的程度。
    3、在团队合作中学习,了解与掌握前沿技术,接触不同阶段的人们,不断完善自身职业规划。
    1、理论知识:Go 语言、设计模式、计算机网络、常用算法;服务端开发的基本知识,包括开发工具、基础组件与中间件、服务调度等的原理和应用。
    2、开发方法:技术方案设计、架构和接口设计、单元测试、服务监控、流量分析、性能优化等。
    3、开发技术:Golang 基础、微服务框架、RPC 框架、离线/在线存储、缓存中间件、消息队列、事件框架、动态配置;异步与并发处理、灰度放量/切量、埋点监控与报警。
    4、实践平台:GoLand IDE、代码版本与发布管理平台、计算云引擎、网关与 API 管理、服务树、数据分析、监控大盘、流水线发布、需求池等。
    5、团队协作:了解团队背景、熟悉部门业务、接手开发任务。
    6、方案设计:结合业务现状,设计合理的方案改进现有服务,包括代码架构优化、组件抽象、模型简化、流程标准与配置化、请求处理延迟优化等。
    [2023-09-20 00:11:36] 1、熟悉服务端开发、接触企业应用研发流程,掌握通用研发能力,学习和积累特定场景问题的解决方案。
    2、将计算机基础知识实际运用起来,从分析、设计、排查、优化等方面加深对知识的理解,逐步达到自然运用的程度。
    3、在团队合作中学习,了解与掌握前沿技术,接触不同阶段的人们,不断完善自身职业规划。
    1、理论知识:Go 语言、设计模式、计算机网络、常用算法;服务端开发的基本知识,包括开发工具、基础组件与中间件、服务调度等的原理和应用。
    2、开发方法:技术方案设计、架构和接口设计、单元测试、服务监控、流量分析、性能优化等。
    3、开发技术:Golang 基础、微服务框架、RPC 框架、离线/在线存储、缓存中间件、消息队列、事件框架、动态配置;异步与并发处理、灰度放量/切量、埋点监控与报警。
    4、实践平台:GoLand IDE、代码版本与发布管理平台、计算云引擎、网关与 API 管理、服务树、数据分析、监控大盘、流水线发布、需求池等。
    5、团队协作:了解团队背景、熟悉部门业务、接手开发任务。
    6、方案设计:结合业务现状,设计合理的方案改进现有服务,包括代码架构优化、组件抽象、模型简化、流程标准与配置化、请求处理延迟优化等。
    [2023-09-20 00:20:24] 多环境测试、
    [2023-09-20 22:41:27] 输出新架构设计方案
    [2023-09-20 22:48:48] 4、第 9
    [2023-09-20 23:00:58] 4、第
    [2023-09-20 23:01:59] 第
    [2023-09-20 23:02:06]

实习报告

学生学院 计算机学院专业班级 软件工程卓越班学 号 3220005122
学生姓名 倪浩楠实习单位 深圳

2023 年 8 月

实习报告专 业 软件工程 班级 软件工程卓越班 成绩评定 优姓 名 倪浩楠 学号 3120005122
实习单位 北京达佳互联信息技术有限公司 起止时间 2023.04.19 - 2023.08.26
实习目标 1、熟悉服务端开发、接触企业应用研发流程,掌握通用研发能力,学习和积累特定场景问题的解决方案。
2、将计算机基础知识实际运用起来,从分析、设计、排查、优化等方面加深对知识的理解,逐步达到自然运用的程度。
3、在团队合作中学习,了解与掌握前沿技术,接触不同阶段的人们,不断完善自身职业规划。实习内容(包括涉及的理论、方法、技术、实践平台等) 1、理论知识:Go 语言、设计模式、计算机网络、常用算法;服务端开发的基本知识,包括开发工具、基础组件与中间件、服务调度等的原理和应用。
2、开发方法:技术方案设计、架构和接口设计、单元测试、服务监控、流量分析、性能优化等。
3、开发技术:Golang 基础、微服务框架、RPC 框架、离线/在线存储、缓存中间件、消息队列、事件框架、动态配置;异步与并发处理、灰度放量/切量、埋点监控与报警。
4、实践平台:GoLand IDE、字节云平台、代码版本与发布管理平台、计算云引擎、网关与 API 管理、服务树、AB 实验、数据分析、监控大盘、流水线发布、需求池等。
5、团队协作:了解团队背景、熟悉部门业务、接手开发任务。
6、方案设计:结合业务现状,设计合理的方案改进现有服务,包括代码架构优化、组件抽象、模型简化、流程标准与配置化、请求处理延迟优化等。详细的实习任务列表、进度安排及其完成情况任务列表:
1、学习 Golang 开发的基本知识,包括开发环境、开发工具、调试等。
2、学习公司内部编程框架、熟悉开发规范与标准流程。
3、学习使用公司平台,如多环境测试、服务上线、流水线发布等。
4、了解部门业务、掌握核心架构和业务流程、完成相关需求。
5、参与到日常的代码审查、问题排查、技术分享讨论中。
6、掌握服务全链路、梳理现状与痛点、制定新的技术方案并落地改造。

进度安排与完成情况:
1、第 1-2 周:阅读公司新员工文档以及部门内业务文档,了解部门的定位以及具体需要负责的工作。复习 Golang 相关知识、着手开发 demo 服务。阅读核心代码,梳理具体业务流程逻辑。
2、第 3-4 周:接手简单的需求,在导师指导下完成技术方案设计和技术评审、在需求排期内顺利完成开发、测试以及上线。
3、第 5-8 周:参与到核心需求的开发中,独立对接与完成开发,熟悉问题的各种排查思路、服务运行状态的监控观察等。接触公司内各大平台,了解其原理和使用,并融入到日常开发中。
4、第 9-10 周:完成全核心链路的服务开发,并梳理链路中存在的问题,讨论并总结大致思路。梳理新架构与旧架构存在的差异,了解核心链路相关上下游,最后输出新架构的设计方案
5、第 11-15 周:将设计方案落地实现、同时在开发的过程中不断完善。设计新架构正确性验证方案、放量切流方案、保证新实现能正确、稳定地替代旧实现,并观察最终效果。实习结果、收获及体会实习结果:按照实习计划基本上完成了实习安排,实习期间的表现得到了导师和领导的认可。

实习收获:在实习期间,接触到了企业级的研发流程,了解了更多角色及之间的团队协作,对应用开发的全生命周期有了更深入的理解。同时在服务端开发方面,不仅局限于开发出一个可用的服务,更会自发关注实现的合理性、通用性、可扩展性,保证服务通用的同时又简单易用可维护,在开发能力上有较大提升。

实习体会:
1、语言基础相关:实习期间使用 Golang 进行开发、经历了从 Java 到 Golang 的转变,
2、Android相关:实习期间感受到了 Android 开发的工作内容和要求,从熟悉公司业务到跟着导师开发一个小需求,再到自己进行开发,不断地熟悉了Android开发的工作内容和要求。学到了很多有关 Android 开发的知识和技能,并且认识到了实践是学习的重要途径。
3、团队协作:在实习期间。学到了很多有关团队协作和沟通技巧的知识,通过实践,积累了很多沟通的经验,并且认识到了与团队成员一起协作完成项目开发的重要性。
4、主动性:在本次实习中,我认识到了主观能动性的重要性,要主动进行知识的获取和向前辈们学习,掌握更多的知识和经验。
5、用户体验:在开发过程中学到了很多有关用户体验的知识,并且认识到了关注用户反馈和改进的重要性,通过实践对代码进行修改,并通过与产品沟通进行修改。
6、总结:通过本次实习,我更好地了解 Android 开发的工作内容和要求,我体会到了实际Android和在学校学习的不同,为未来的职业生涯打下坚实的基础。
7、

对实习的意见和建议

学院意见

签 名

年 月 日

备注

说明:1. 成绩评定按优、良、中、及格、不及格五级评分,成绩记“不及格”算未通过;
2. 本表需与实习单位鉴定表(含单位鉴定成绩和单位公章)一起提交;
3.请实习学生作好学习记录并如实填写好此表(以上各栏不够位置可加页),实习结束后将此表及时交学院存档。

[2023-09-20 23:23:04] 深圳脸萌技术有限公司
[2023-09-20 23:23:29] 深圳脸萌技术有限公司
[2024-01-01 15:46:06] immersed
[2024-01-01 15:47:15] exodus
[2024-01-01 15:47:39] droves
[2024-01-01 15:47:48] spare
[2024-01-01 15:47:55] stretches
[2024-01-01 15:47:59] simulated
[2024-01-01 15:48:23] underutilized
[2024-01-01 15:48:47] plastic
[2024-01-01 15:49:02] virtuosos
[2024-01-01 15:50:26] engaged
[2024-01-01 15:50:37] exhilarating
[2024-01-01 15:50:43] accomplishment
[2024-01-01 15:50:46] accomplishment
[2024-01-01 15:50:52] accomplishment
[2024-01-01 15:51:07] accomplishment
[2024-01-01 15:51:16] occasionally
[2024-01-01 15:51:42] offer up
[2024-01-01 15:52:03] potential
[2024-01-01 15:52:06] potential
[2024-01-01 15:52:37] potential
[2024-01-01 15:52:40] perception
[2024-01-01 15:54:58] lavished
[2024-01-01 15:56:12] surreal
[2024-01-01 15:56:17] fiction
[2024-01-01 15:56:24] swaths
[2024-01-01 15:56:36] headlong
[2024-01-01 15:58:09] appetites
[2024-01-01 15:59:17] appetites
[2024-01-01 15:59:21] appetites
[2024-01-01 16:04:11] bias