获得徽章 1
#青训营笔记创作活动# day17 2月9

最终方案:沙箱(Sandbox)

通过上面的分析,传统的思路确实解决不了当前的需求

阻止开发者操作DOM和调接口,沙箱说:这个我熟啊,拦截隔离这类的活,我最拿手了

沙箱(Sandbox) 是一种安全机制,为运行中的程序提供隔离环境,通常用于执行未经测试或不受信任的程序或代码,它会为待执行的程序创建一个独立的执行环境,内部程序的执行不会影响到外部程序的运行
展开
评论
#青训营笔记创作活动# 2月3日 day16

Redis Cluster在设计中没有使用一致性哈希(ConsistencyHashing),而是使用数据分片(Sharding)引入哈希槽(hashSlot)来实现;一个RedisCluster包含16384(0~16383)个哈希槽,存储在RedisCluster中的所有键都会被映射到这些slot中,集群中的每个键都属于这16384个哈希槽中的一个,集群使用公式slot=CRC16(key)% 16384来计算key属于哪个槽,其中CRC16(key)语句用于计算key的CRC16校验和。 集群中的每个主节点(Master)都负责处理16384个哈希槽中的一部分,当集群处于稳定状态时,每个哈希槽都只由一个主节点进行处理,每个主节点可以有一个到N个从节点(Slave),当主节点出现宕机或网络断线等不可用时,从节点能自动提升为主节点进行处理。
展开
评论
#青训营笔记创作活动# day15 2月1日

缓存降级,其实都应该是指服务降级。在访问量剧增、服务响应出现问题(如响应延迟或不响应)或非核心服务影响到核心流程的性能的情况下,仍然需要保证核心服务可用,尽管可能一些非主要服务不可用,这时就可以采取服务降级策略。

服务降级的最终目的是保证核心服务可用,即使是有损的。服务降级应当事先确定好降级方案,确定哪些服务是可以降级的,哪些服务是不可降级的。根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心服务的正常运行。

降级往往会指定不同的级别,面临不同的异常等级执行不同的处理。根据服务方式:可以拒接服务,可以延迟服务,也可以随机提供服务。根据服务范围:可以暂时禁用某些功能或禁用某些功能模块。总之服务降级需要根据不同的业务需求采用不同的降级策略。主要的目的就是服务虽然有损但是总比没有好。
展开
评论
#青训营笔记创作活动# 1月31日 day14
为什么3次握手不是2次?
由于网络传输是有延时的(要通过网络光纤和各种中间代理服务器),在传输的过程中,比如客户端发起了 SYN=1 的第一次握手。
如果服务器端就直接创建了这个连接并返回包含 SYN、ACK 和 Seq 等内容的数据包给客户端,这个数据包因为网络传输的原因丢失了,丢失之后客户端就一直没有接收到服务器返回的数据包。
如果没有第三次握手告诉服务器端客户端收的到服务器端传输的数据的话,服务器端是不知道客户端有没有接收到服务器端返回的信息的。
服务端就认为这个连接是可用的,端口就一直开着,等到客户端因超时重新发出请求时,服务器就会重新开启一个端口连接。这样一来,就会有很多无效的连接端口白白地开着,导致资源的浪费。
展开
评论
#青训营笔记创作活动# 1月30 day13

哪些场景不适合建立索引?

数据量少的表,不适合加索引
更新比较频繁的也不适合加索引
区分度低的字段不适合加索引(如性别)
where、group by、order by等后面没有使用到的字段,不需要建立索引
已经有冗余的索引的情况(比如已经有a,b的联合索引,不需要再单独建立a索引)
展开
评论
#青训营笔记创作活动# 1月28日 day12

基本思路:在服务A里对各个服务接口返回的数据进行拦截并二次加工后再返回给前端。
1.拦截:比较简单,可以在服务A对其他服务接口请求
的返回之后进行业务操作,也可以统一放到切面里用@After 注解进行操作。从 demo 的快速演示考虑,这里选择直接在请求的返回体直接进行业务操作。
2.二次加工:服务A对返回body的部分字段过滤掉,不
返回给前端。二次加工的方法有很多种,比如:
a.用一个 map 去接收 body,然后对这个 body map进行遍历,和服务A里的 map 进行比较,将服务A map 里需要的 key-value,从 body map 里遍历取出,put 到一个新的 map,最后返回这个新的 map给前端。
b.用 string 去接收 body,接收到的body是一个json字符串,然后将 json 字符串转成特定的对象(这个对象是返回给前端的),这样对象里没有定义的字段在 json 字符串转对象的过程中就会被舍弃。
展开
评论
#青训营笔记创作活动# day11 1月26日

1.TCP 是面向连接的。(就好像打电话一样,通话前需要先拨号建立连接,通话结束后要挂机释放连接);
2.每一条 TCP 连接只能有两个端点,每一条 TCP 连接只能是点对点的(一对一);
3.TCP 提供可靠交付的服务。通过 TCP 连接传送的数据,无差错、不丢失、不重复、并且按序到达;
4.TCP 提供全双工通信。TCP 允许通信双方的应用进程
在任何时候都能发送数据。TCP 连接的两端都设有发送
缓存和接收缓存,用来临时存放双方通信的数据;

5.面向字节流。TCP 中的“流”(Stream)指的是流入进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和 TCP 的交互是一次一个数据块(大小不等),但 TCP 把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。
展开
评论
#青训营笔记创作活动# 1月25日 day10
12条建议最收获的就是这个:继承和多态性是面向对象编程的强大功能,可让您编写可重用的代码。通过使用继承,您可以创建一个包含公共代码的基类,然后创建继承该代码的子类。通过使用多态性,您可以编写以通用方式处理不同类对象的代码。
评论
#青训营笔记创作活动# 1月24日 day9

数据库主键自增这个是大家都非常熟悉的功能,在分库分表的场景下,依赖单表主键自增显然没法保证唯一性。但也并不是完全不能利用,比如一个统一的 ID 生成服务,背后建若干张 sequence 表专门用于 ID 的生成,每台机器对应不同的 sequence 表,并且每个 sequence 表设置不同的自增初始值和统一的自增步长,比如 2 台机器的情况下,一台自增初始值为 1,一台自增初始值为 2,自增步长都为 2,就相当于每台机器返回的是一个等差数列,且每台机器返回的等差数列之间不会重复。
展开
评论
下一页
个人成就
文章被点赞 9
文章被阅读 2,070
掘力值 202
收藏集
0
关注标签
2
加入于