获得徽章 1
- #青训营笔记创作活动#
day 23 2月 12日
TCP协议本身是全双工的,但我们最常用的HTTP1.1,虽然是基于TCP的协议,但它是半双工的,对于大部分需要服务器主动推送数据到客户端的场景,都不太友好,因此我们需要使用支持全双工的websocket协议。
在HTTP1.1里。只要客户端不问,服务端就不答。基于这样的特点,对于登录页面这样的简单场景,可以使用定时轮询或者长轮询的方式实现服务器推送(comet)的效果。
对于客户端和服务端之间需要频繁交互的复杂场景,比如网页游戏,都可以考虑使用websocket协议。
websocket和socket几乎没有任何关系,只是叫法相似。
正因为各个浏览器都支持HTTP协议,所以websocket会先利用HTTP协议加上一些特殊的header头进行握手升级操作,升级成功后就跟HTTP没有任何关系了,之后就用websocket的数据格式进行收发数据。展开赞过评论1 - #青训营笔记创作活动#
day 23 2月 12日
能够带来最大收益的方案是优化项目架构和数据库架构,但这种方案成本也是最高的,一方面需要解决新的问题,同时还需要额外的部署成本,所以在无需使用更高规格的架构处理并发时,就不必提前做这些架构设计,因为能够根据业务特性控制成本,也是作为一个优秀的高级开发/架构师必备的思想。
展开赞过评论1 - #青训营笔记创作活动#
day 22 2月11日
代理模式的优点:
1. 满足单一原则,业务类可以只关心自己的核心逻辑,非核心逻辑由代理类完成;
2. 易于维护,核心逻辑、非核心逻辑的修改不会互相影响;
3. 对于用户(调用者)而言,使用的方式没有区别,可以做到低成本替换;
4. JDK动态代理可以动态的绑定目标类,可以减少代码量,提高代码的复用;
5. cglib动态代理可基于实现类做代理,可以解决JDK代理依赖接口的问题;
代理模式的缺点:
1. 静态代理每个被代理类都要有一个代理类,大大增加了代码量;
2. JDK动态代理基于JDK的反射原理实现,降低了执行效率;
3. JDK动态代理是基于接口的代理,要求目标类必须实现目标接口;
代理模式分类:
1. 静态代理;
2. JDK动态代理(基于目标类的接口生成代理类做代理);
3. cglib动态代理(基于目标类生成子类做代理,同时也支持基于接口的代理)展开赞过评论1 - #青训营笔记创作活动#
day 21 2月10日
1.NewSingleHostReverseProxy 函数如果没有设置 config.ClientOption 将会使用默认的全局 client.Client 实例, 如果设置了 config.ClientOption 将会初始化一个 client.Client 实例。
2.反向代理会重置响应头,如果在请求之前修改了响应头将不会生效,这与标准库的行为不一致。展开赞过评论1 - #青训营笔记创作活动#
day 20 2月9日
nonce的意思是仅一次有效的随机字符串,所以需要做到每次请求的 nonce 都不同,可以由时间戳来生成,结合 ip 地址等,进一步确保唯一性。
客户端请求接口的时候,生成随机数,发送到服务端,服务端吧 nonce 存储在redis里边,当重放请求到达时,验证发现 nonce 已经存在,则认为请求是非法的展开赞过评论1 - #青训营笔记创作活动#
day 19 2月8日
fabric.js的功能很强大,可以很轻松的开发出一个简版的图片编辑器,自定义素材、模板、字体文件;还可以结合数据接口拼接模板生成图片,很轻松的实现定制模板 + 生成图片的功能评论点赞 - #青训营笔记创作活动#
day18 2月7日
实际使用场景中,对于一致性要求不是特别高、且并发量不是特别大的场景,可以选择基于数据库事务保证的先更新数据库再更新/删除缓存。而对于并发要求较高、且数据一致性要求较好的时候,推荐选择先更新数据库,再删除缓存,并结合删除重试 + 补偿逻辑 + 缓存过期TTL等综合手段展开评论点赞 - #青训营笔记创作活动#
day 17 2月6日
不用动态更新查看日志就可以使用cat查询文件内有没有该内容这个可以、如果需要动态的看新日志进入到文件就使用tail监听着文件的进入。评论点赞 - #青训营笔记创作活动#
day 16 2月5日
1.NewSingleHostReverseProxy 函数如果没有设置 config.ClientOption 将会使用默认的全局 client.Client 实例, 如果设置了 config.ClientOption 将会初始化一个 client.Client 实例。 如果你需要共享一个 client.Client 实例,可以使用 ReverseProxy.SetClient 来设置。
2.反向代理会重置响应头,如果在请求之前修改了响应头将不会生效,这与标准库的行为不一致。展开评论点赞