获得徽章 0
- #青训营 x 字节后端训练营#
网络规则和设计
接入层面向终端用户,功能是MAC地址过滤,可收集用户信息。
工作组服务器放置在接入层。可以使用集线器或交换机。
汇聚层作为楼群和小区的汇聚点,功能是 网段划分(VLAN路由)和广播域定义,
可实现网络的访问策略控制和流量控制。
核心层是所有流量的最终汇聚点,功能是 高速数据传输。展开评论点赞 - #青训营 x 字节后端训练营#
域名解析系统DNS的域名解析过程
正确的查询顺序:本地缓存记录 --- 区域文件 --- 转发域名服务器 --- 根域名服务器
客户端通过域名查找IP地址:
1. 本地解析:客户端DNS缓存 --- host文件
2. 直接解析:本地域名DNS服务器:区域文件 --- 缓存
3. 互联网域名解析器
递归解析:会对根域名解析器产生较大的压力,只有一条线路
主机 --- 本地域名服务器 --- 根域名服务器 --- 顶级域名服务器 --- 权限域名服务器(再返回到主机)
迭代解析
过程:主机 -- 本地;本地 -- 根,返回;本地 -- 顶级,返回;本地 -- 权限,返回(到本地);本地 -- 主机
主机 --- 本地域名服务器 --- 根域名服务器 --- 顶级域名服务器 --- 权限域名服务器(再返回到本地)展开评论点赞 - #青训营 x 字节后端训练营#
网工复习_无线局域网
5.2无线局域网
1. IEEE802.11标准(采用的工作频段是5GHz和2.4GHz)
名称 工作频段 数据速率
802.11 2.4GHz 1Mbps/2Mbps
802.11b 2.4GHz 11Mbps
802.11a 5GHz 54Mbps
802.11g 2.4GHz 54Mbps
802.11n 2.4GHz,5GHz 600Mbps
802.11ac 5GHz 1Gbps
2. IEEE802.11定义了两种网络拓扑结构
基础设施网络Infrarustructure Networking
无线终端通过接入点(Access Point,AP)访问骨干网设备;AP如同网桥,工作在数据链路层。
特殊网络Ad Hoc Networking(Peer to Peer网络)
是一种点对点连接;无需有线网络和接入点的支持,可通过无线网卡直接通信。
展开评论点赞 - #青训营 x 字节后端训练营#
Java内存模型与线程
硬件的效率和一致性
由于计算机的存储设备和处理器的运算速率有很多的差距,所以使用高速缓存来作为处理器和内存之间的缓冲。这样处理器无需等待缓慢的内存读写。
内存模型:在特定的操作协议下,对特定的内存或高速缓存进行读写访问过程的抽象。
展开评论点赞 - #青训营 x 字节后端训练营#
锁的对比
偏向锁
加锁解锁不需要额外消耗。
如果存在锁竞争则带来额外锁撤销的消耗。
适用于只有一个线程访问场景。
轻量级锁
竞争的线程不会出现阻塞。
始终得不到线程竞争会自旋导致消耗CPU。
适用:追求响应时间。
重量级锁
线程竞争不使用自旋,不消耗CPU。
线程阻塞,响应时间慢。
适用:追求吞吐量。展开评论点赞 - #青训营 x 字节后端训练营#
探索Java装箱和拆箱的奥妙_02
1.为什么要包装类型
1 对象引用:基本数据类型不是对象,无法使用对象引用。包装类型是。
2 泛型:泛型不能使用基本数据类型,必须使用包装类型。如List<Integer>
3 null值:基本数据类型不能为null,包装类型可以。
4 类型转换:包装类型提供了许多类型转换方法,如字符串转整数。
5 方法重载:方法重载可以使用不同的参数类型。而基本数据类型和对象引用是不同的类型,所以可以在方法中对他们进行重载。
2.装箱和拆箱的进化过程
1 在Java1.4及之前,装箱拆箱需手动进行。如下代码
int x = 10;
Integer y = new Integer(x);//手动装箱
int z = y.intValue();//手动拆箱
2 在Java5开始,引入了自动装箱和手动装箱机制。如下代码
int x = 10;
Integer y = x;//自动装箱
int z = y;//自动拆箱
3 在Java9开始,引入了一种新的装箱方式:紧凑型装箱(compact Number Box)。
它能够更高效存储小范围内的数值,但只适用于byte,short和int类型。
由于这些类型取值范围都比较小,可以用一个byte或short类型的变量来存储他们的值,而无需使用一个整型变量。展开评论点赞 - #青训营 x 字节后端训练营#
探寻Java装箱和拆箱的奥妙_01
Java中的装箱和拆箱是指基本数据类型与其对应的包装类之间进行转换的过程。
1 装箱(基本数据类型——包装类)
1.自动装箱(auto boxing)由Java编译器实现。
2.手动装箱(manual boxing)调用包装类的构造函数实现。
2 拆箱(包装类——基本数据类型)
1.自动拆箱(auto unboxing)由Java编译器实现。
2.手动拆箱(manual unboxing)调用包装类的xxxValue()
方法实现。展开评论点赞 - #青训营 x 字节后端训练营#
多端登录如何实现踢人下线
1.项目背景
一个项目往往有小程序,APP,PC等多端访问。对于京东,淘宝等项目,有类似以下的业务:一台电脑登录PC端后,APP端强制下线;两个APP端不可同时登录,一APP端登录后,另一APP端请求登录时应先强制下线之前已登录的APP端。
2.项目只有PC端
1 用户在登录时,先获取redis中的session。如果查找不到则可以直接登录。
2 如果可以获取到session,说明之前用户已经有登录过。此时需要验证用户之前登录过的PC端是否是此时登录的PC端,如果不是,需要强制下线之前登录过的PC端。
根据session中的IP地址比对来进行判断。
补充:session是存放在redis中的,其中包含userId,登录的ip地址等一些用户信息。
3.项目有PC端,APP端,小程序端
1 项目一般会出现多种情况:单端登录,双端登录,三端登录
2 用户session存储的格式是
{
userId:用户Id
clientType:PC端,APP端,小程序端
imei:设备的唯一编号(对PC端指IP地址,其余指手机设备的唯一编号)
}
3 单端登录
拿到用户所有的session,根据clientType和imei号强制其它端的用户session删掉,通知客户端强制下线。
4 双端登录
1.已登录PC端和APP端,此时登录小程序,让APP端强制下线
拿到用户所有的session,此时会有两个用户session,拿到clientType=APP的session。然后通知客户端这个端要强制下线。
2.已登录一个PC端和APP端,此时另一台手机登录APP端,让一登录的APP端强制下线
拿到用户所有的session,此时会有两个用户session,拿到clientType=APP的session,对imei号不同的对应设备进行强制下线。
展开评论点赞