这是我参与「第五届青训营 」伴学笔记创作活动的第3天
一、本堂课重点内容: 分析问题需求,框架设计,代码实现 二、第二课项目实践 2.1需求分析
以社区评论区为例,内容可以分为话题和帖子,话题有id,标题,内容,时间;帖子有id,话题id,发布者,内容和时间。 数据暂且存在文件中。项目总体逻辑有:数据层、逻辑层、视图层。
一、数据层:file->repository->model 外部数据增删改查 任务一:用户选择话题后需要显示该话题下的所有帖子;应用技术——索引 任务二:索引:话题id,数据:话题 二、逻辑层:service->entity 接收repository发送的数据将进行封装 处理核心业务逻辑输出 封装业务逻辑。
三、视图层:controller->view ->client 处理和外部交互逻辑,界面,格式化结果 构建view对象
web服务框架可以先套用开源框架 各处的接口要接好。
代码尚需好好解读。
**三、第三课代码优化
代码性能优化。 3。1测试性能——自带的benchmark。 可以查看代码的运行时间、内存占有、内存分配次数 3.2 slice优化 3.2.1slice预分配内存——make时指定大小,可以减少分配次数、时间,提高效率。。 slice本质时数组片段描述。容量不够时会复制然后扩容,这是很低效的操作。 3.2.2slicecopy代替re-slice,释放空间。————在已有切片上创建切片,不会创建新的底层数组,从而不会释放大数组。
3.3 map优化 3.3.1map预分配空间,可以提高性能——扩容是比较低效的代码。 3.4字符串处理 直接相加string——性能最低——直接加会导致新的内存分配,然后拷贝。建议用stringbuilder或bytebuffer 3.5空结构体用作占位符 3.6 atomic包——通过硬件实现,比上锁效率高 锁是操作系统实现。
四、课后个人总结: 实战项目中可以学到很多思路思想。
性能优化中需要注意的是:首先要避免很多基本的陷阱,越高级的性能优化手段越容易出问题,要结合实际例子出发,确定优化目标进行优化。