读书笔记
《Web API 的设计与开发》读书笔记
设计优美的 Web API需要易于使用、便于更改、健壮性好、不怕公开。REST有两层含义,一是符合Fielding的REST架构风格,二是使用符合RPC风格的XML或JSON+HTTP接口的系统。端点的基本设计包括短小便于输入的URI、易读的URI、大小写统一的URI等。HTTP方法包括GET、POST、PUT、DELETE、PATCH。查询参数和路径的使用区别在于唯一资源放在路径中,可忽略参数放在查询参数中。RESTful设计级别包括使用HTTP、引入资源概念、HTTP动词、HATEOAS。指定数据格式可通过查询参数、扩展名或Accept头部字段。用户可通过GraphQL决定响应内容,状态码表示错误信息,缓存需符合HTTP协议规范。API版本控制可以嵌入版本号或查询字符串中加入版本信息,也可通过媒体类型指定版本。API安全需使用HTTPS,避免XSS/XSRF注入漏洞,返回正确数据格式,使用安全相关首部,采用KVS实现访问限制。最后,提供API文档可使用API Blueprint、API Console或Apigee,并提供SDK。
编程语言
《阿里巴巴 Java 开发手册》读书笔记
最近借阅了几本书来充实自己,其中包括阿里巴巴开发手册的关键点分享。内容涵盖了编程规范如命名规范、可变参数使用、接口修改、循环内字符串连接、循环遍历操作、单例对象线程安全等;异常日志部分强调异常处理、finally块资源关闭、数据库规范包括字段命名、冗余字段、分库分表、唯一索引建立、join表限制、存储过程禁用及IN操作控制等。规范性、性能优化以及异常处理方面的注意事项贯穿其中。
读书笔记
《C#多线程编程实战》读书笔记
本文是根据《C#多线程编程实战》整理的读书笔记,详细介绍了在.NET中多线程编程相关的知识,包括线程基础、线程同步、使用线程池、任务并行库、并行集合、PLINQ以及异步I/O等内容。涵盖了线程的基本操作、线程同步的方法、使用线程池、任务并行库的使用、并行集合的应用以及异步I/O的实现。文章总结了55条关键的技巧和注意事项,对于想深入学习多线程编程的人来说是一份很好的参考资料。
数据存储
Redis 缓存技术学习系列之 Lua 脚本
Payne在他的博客中分享了关于Redis中Lua脚本的学习,探讨了如何通过Redis内置的Lua解释器执行脚本,以及为什么选择脚本语言进行开发。他介绍了Redis中处理脚本的Eval系列和Script系列命令的用法,以及如何在Redis中使用Lua脚本进行交互。此外,他展示了如何通过具体案例演示Redis与Lua脚本的交互,并讨论了Lua数据结构与Redis数据结构之间的转换。最后,他分享了为什么使用Lua脚本以及在处理类型转换时的一些原则。整体而言,他强调了Lua脚本在Redis中的应用和重要性。
数据存储
Redis 缓存技术学习系列之发布订阅
本文讨论了Redis中的发布-订阅模式,首先介绍了观察者模式及其实现,包括抽象主题、具体主题、抽象观察者和具体观察者的角色和功能。接着详细介绍了如何在C#中实现观察者模式。随后,文章引入Redis中的发布-订阅模式,解释了其概念,与观察者模式的联系以及相关的Redis命令,如PSUBSCRIBE、PUBLISH等。最后通过示例展示了Redis发布-订阅模式的实际操作过程。整体强调了设计模式的重要性以及Redis的发布-订阅模式与观察者模式的关联。
数据存储
Redis 缓存技术学习系列之事务处理
本文讨论了Redis中的事务处理技术。在数据库事务部分解释了事务概念,ACID属性以及事务处理的重要性。在Redis中,事务可以看作是一个命令队列,通过MULTI开始一个事务,然后逐条向Redis提交命令,最后通过EXEC执行事务。Redis中的事务与传统事务类似,具有原子性和一致性。文章还介绍了悲观锁和乐观锁的概念,以及Redis中的check-and-set机制。另外,文章提及了如何管理Redis的键,包括惰性删除和定期删除策略,以及一些建议如临时键和普通键的使用等。
数据存储
Redis 缓存技术学习系列之邂逅 Redis
这篇文章介绍了对传统关系型数据库的一些看法,引入了学习 Redis 缓存技术的决定。详细解释了 Redis 的定义、特点和优势,以及如何开始使用 Redis,包括编译和安装步骤。进一步介绍了 Redis 中支持的数据类型,如字符串、散列、列表、集合和有序集合,以及与键相关的命令。最后,作者强调了在学习技术时注重整体理解,留下细节问题在实际使用时查阅文档的重要性,并展望了对 Redis 的事务、脚本、发布/订阅和多语言使用的关注。
读书笔记
HTML5 游戏开发技术基础整理
随着HTML5标准的确立,HTML5游戏开发逐渐兴起,可跨平台运行,本文基于《HML5 Canvas游戏开发实战》整理了HTML5游戏开发基础,强调了JavaScript中的面向对象编程和Canvas绘图基础,包括属性、方法的实现,继承机制,静态类实现,以及Canvas绘制线、矩形、圆等基本图形,文字、图片绘制,平移、旋转、伸缩操作,以及线性渐变、径向渐变、颜色反转和灰度等高级特效。1