当前位置: 首页 > news >正文

前端面试常用内容——基础积累

1.清除浮动的方式有哪些?

高度塌陷:当所有的子元素浮动的时候,且父元素没有设置高度,这时候父元素就会产生高度塌陷。

清除浮动的方式:

1.1 给父元素单独定义高度

优点: 快速简单,代码少
缺点:无法进行响应式布局

1.2 父级定义overflow:hidden;zoom:1;(针对ie6的兼容)

优点:简单快速,代码少,兼容性较高
缺点:超出部分被隐藏,布局时要注意

1.3 在浮动元素后面加一个空标签,clear:both;height:0;overflow:hidden

优点:简单快速,代码少,兼容性较高
缺点:增加空标签,不利于页面优化

1.4 父级定义overflow:auto

优点:简单,代码少,兼容性好
缺点:内部宽高超过父级div时,会出现滚动条

1.5 万能清除法

给塌陷的元素添加伪元素

.father :after{content:'随便写';clear:both;display:block;height:0;overflow:hidden;visibility:hidden;
}
优点:写法固定,兼容性高
缺点:代码多

2.如何让chrome浏览器显示小于12px的文字

本来添加谷歌私有属性 -webkit-text-size-adjust:none,现在-webkit-transform:scale()

3.网页中有大量图片加载很慢,优化方法有哪些?

3.1 图片懒加载

在图片未可视区域添加一个滚动条事件,判断图片位置与浏览器顶端和页面的距离,如果前者小于后者,优先加载

3.2 使用图片预加载技术

将当前展示图片的前一张和后一张优先下载

3.3 使用cssprite或者svgsprite

4.marginpadding在什么场合下使用

margin外边距:自身边框到另一个边框之间的距离
padding内边距:自身边距到自身内容之间的距离

当需要在border外侧添加空白时用margin,当需要在border内测添加空白时用padding

5.px rem em的区别

5.1 px:绝对长度单位,像素px是相当于显示器屏幕分辨率来说的

5.2 em:相对长度单位,相对于当前对象内文本的字体尺寸

			em的值并不是固定的,em会继承父级元素的字体大小(参考物是父元素的font-size)em中所有的字体都是相对于父元素的大小决定的

5.3 rem:相对于Html根元素的font-size

1em=1rem=16px 在body中加入font-size:62.5% 这样直接就是原来的px数值除以10加上em就可以

6.三栏布局方式:两边固定中间自适应

6.1 margin负值法:

左右两栏均左浮动,左右两栏采用负的margin值,中间栏被宽度为100%的浮动元素包起来

6.2 自身浮动法:

左栏左浮动,右栏右浮动,中间栏放最后

6.3 绝对定位法:

左右两栏采用绝对定位,分别固定于页面的左右两侧,中间的主体栏用左右margin值撑开距离

6.4 flex :

左右固定宽,中间flex:1

6.5 网格布局

6.6 table布局

7.浏览器输入网址到页面渲染全过程

1.DNS解析

2.TCP连接

3.发送http请求

4.服务器处理请求并返回http报文

5.浏览器解析渲染页面

6.连接结束

输入url后,首先需要找到这个url域名的服务器ip,浏览器首先会寻找缓存,查看缓存中是否有记录。缓存的查找记录为:浏览器缓存->系统缓存->路由器缓存,

缓存中没有则查找系统的hosts文件中是都有记录,如果没有则查询DNS服务器,

查询DNS服务器得到服务器的ip地址后,浏览器根据这个ip以及相应的端口号,构造一个http请求,这个请求报文会包括这次请求的信息,主要是请求方法,请求说明和请求附带的数据,并将这个http请求封装在一个tcp包中, 这个tcp包会依次经过传输层、网络层、数据链路层、物理层到达服务器,服务器解析这个请求来做出响应,返回相应的html给浏览器,

8.一个完整的ajax请求包括五个步骤

8.1 创建XMLHTTPRequest对象

8.2 使用open方法创建http请求,并设置请求地址

8.3 xhr.open(get/post,url,async,true(异步),false(同步)) 经常使用前三个参数

8.4 设置发送的数据,用send发送请求

8.5 注册事件(给ajax设置事件)

8.6 获取响应并更新页面

9. 闭包是什么?有什么特性?对页面会有什么影响

闭包可以简单理解成:定义在一个函数内部的函数。其中一个内部函数
在包含它们的外部函数之外被调用时,就会形成闭包。

特点:
1.函数嵌套函数。
2.函数内部可以引用外部的参数和变量。
3.参数和变量不会被垃圾回收机制回收。使用:
1.读取函数内部的变量;
2.这些变量的值始终保持在内存中,不会在外层函数调用后被自动清除。优点:
1:变量长期驻扎在内存中;
2:避免全局变量的污染;
3:私有成员的存在 ;缺点:会造成内存泄露

10.数组方法有哪些请简述

push() 从后面添加元素,返回值为添加完后的数组的长度
pop() 从后面删除元素,只能删除一个,返回值是删除的元素
shift() 从前面删除元素,只能删除一个,返回值是删除的元素
unshift() 从前面添加元素,返回值是添加完后的数组的长度
splice(i,n) 删除从索引i开始之后的那个元素,返回值是删除的元素
concat() 连接两个数组,返回值为连接后的新数组
split() 将字符串转化为数组
sort() 将数组进行排序,返回值是排好的数组,默认是按照最左边的数字进行排序,不是按照数字大小排序的
reverse() 将数组反转,返回值是反转后的数组
slice(start,end)切去索引值start到索引值end的数组,不包含end索引的值,返回值是切出来的数组
forEach(callback) 遍历数组,无return 即使有return,也不会返回任何值,并且会影响原来的数组
map(callback) 映射数组(遍历数组),有return返回一个新数组
filter(callback) 过滤数组,返回一个满足要求的数组

11.promise可以用来解决什么问题?

promise是用来解决两个问题的:

11.1 回调地狱

代码难以维护,常常第一个的函数的输出是第二个函数的输入这种现象

11.2 多并发请求

promise可以支持多并发的请求,获取并发请求中的数据,这个promise可以解决异步的问题,本身不能说promise是异步的

12.简述async的用法

async 就是 generation和promise的语法糖,async就是将generator的*换成 async,将yiled换成await

函数前必须加一个async,异步操作方法前加一个await关键字,意思就是等一下,执行完了再继续走,注意:await只能在async函数中运行,否则会报错。

promise如果返回的是一个错误的结果,如果没有做异步处理,就会报错,所以用try…catch捕获一下异常就可以了

13.一个页面从输入url到页面加载显示完成,这个过程中都发生了什么?

13.1 当发送一个url请求时,不管这个url是web页面的url还是web页面上每个资源的url,浏览器都会开启一个线程来处理这个请求,同时在远程DNS服务器上启动一个DNS查询,这能使浏览器获得请求对应得IP地址。

13.2 浏览器与远程web服务器通过 TCP三次握手协商来建立一个TCP/IP连接,该握手包括一个同步报文,一个同步-应答报文和一个应答报文,这三个报文在浏览器和服务器之间传递,该握手首先由客户端尝试建立起通信,然后服务器响应并接受客户端的请求,最后由客户端发出该请求已经被接受的报文。

13.3 一旦TCP/IP 连接建立,浏览器会通过该连接向远程服务器发送HTTP的GET请求,远程服务器找到资源并使用HTTP响应返回该资源

13.4 此时,web服务器提供资源服务,客户端开始下载资源。

14.闭包的简单定义

一句话概况:闭包就是能够读取其他函数内部变量的函数,或者子函数在外调用,子函数所在的父函数的作用域不会被释放。

15.改变this指向的函数(bind,apply,call的区别)

通过 apply和call改变函数的this指向,他们两个函数的第一个参数都是一样的,表示要改变指向的那个对象,第二个参数apply是数组,而call则是 arg1,arg2…这种形式。通过bind改变this作用域会返回一个新的函数,这个函数不会马上执行。

16.js的各种位置,比clientHeight,scrollHeight,offsetHeight,以及scrollTop,offsetTop,clientTop的区别?

clientHeight:表示的是可视区域的高度,不包含border和滚动条
offsetHeight:表示可视区域的高度,包含了Border和滚动条
scrollHeight:表示了所有区域的高度,包含了因为滚动隐藏的部分
clientTop:表示边框border的厚度,在未指定的情况下一般为0
scrollTop:滚动后被隐藏的高度,获取对象相对于由offsetParent属性指定的父坐标(css定位的元素或body元素)距离顶端的高度。

17.js怎么控制一次加载一张图片,加载完后再加载下一张

方法1

<script type="text/javascript">var obj = new Image();obj.src="http://www.phoernote.com/uploadfiles/editor/201107240502201179.jpg";obj.onload = function(){alert('图片的宽度为:'+obj.width+';图片的高度为:'+obj.height);document.getElementById('mypic').innerHTML = "<img src='"+ this.src +"' />";}
</script>
<div id="mypic">onloading......</div>

方法2

<script type="text/javascript">var obj = new Image();obj.src="http://www.phpernote.com/uploadfiles/editor/201107240502201179.jpg";obj.onreadystatechange= function(){if(this.readyState=='complete'){alert('图片宽度为:'+obj.width+';图片的高度为:'+obj.height);document.getElementById('mypic').innerHTML= "<img src='"+ this.src +"' />"}}
</script>
<div id="mypic">onloading......</div>

18.js中的call和apply区别

apply:调用一个对象的一个方法,用另一个对象替换当前对象
call:调用一个对象的一个方法,用另一个对象替换当前对象

从定义中可以看出,call和apply都是调用一个对象的一个方法,用另一个对象替换当前对象,而不同之处在于传递的参数,apply最多只能由两个参数——新this对象和一个数组argArray,如果arg不是数组则会报错。

相同点:两个方法产生的作用是完全一样的,call apply作用就是借用别人的方法来调用,就像调用自己的一样。
不同点:方法传递的参数不同

19.请掌握2种以上数组去重的方式

19.1 使用indexof()方法

19.2 使用lastIndexof()方法,和indexof()方法一样,indexof()从头部开始匹配,lastIndexof()从尾部开始匹配

19.3 es6的set结构,set不接受重复数据

19.4使用sort方法先将原数组排序,然后与相邻的比较,如果不同则存入新数组

19.5 使用filter和indexof()方法

19.6 使用es6的set和扩展运算符

19.7 使用set和Array.from() 方法,array.from()可以将set结构转成数组

19.8 用splice和双层循环

19.9 使用includes方法

20. http协议和https区别

http是超文本传输协议,信息是明文传输,https是具有安全性的ssl解密传输协议
http和https连接方式完全不同,端口也不同,http是80,https是443
http的连接很简单,是无状态的,https协议是由ssl+http协议构建的可进行加密传输,身份认证的网络协议,比http协议安全

21. http状态码

21.1 200:成功

21.2 204:服务器成功处理了请求,但没有返回任何实体内容,可能会返回新的头部元信息

21.3 404:请求失败,客户端请求的资源没有找到或者是不存在

21.4 500:服务器遇到未知的错误,导致无法完成客户端当前的请求

21.5 503:服务器由于临时的服务器过载或者是维护,无法解决当前的请求

22. vue的核心

vue是一套构建用户界面的渐进式自底向上增量开发的MVVM框架
vue的核心只关注视图层
核心思想:
数据驱动:视图的内容随着数据的改变而改变
组件化:可以增加代码的复用性,可维护性,可测试性,提高开发效率,方便重复使用,体现了高内聚低耦合

23. vue常用的修饰符有哪些

23.1 .lazy 改变后触发,光标离开Input输入框的时候值才会改变

23.2 .number 将输出字符串转为number类型

23.3 .trim 自动过滤用户输入的首尾空格

23.4 .stop 阻止点击事件冒泡,相当于原生js中的event.stopPropagation()

23.5 .prevent 防止执行预设的行为,相当于原生js中的event.preventDefault()

23.6 .capture 添加事件侦听器时使用事件捕获模式,就是谁有该事件修饰符,就先触发谁

23.7 .self 只会触发自己范围内的事件,不包括子元素

23.8 .once 只执行一次

键盘修饰符:

23.9 .enter 回车键

23.10 .tab 制表键

23.11 .esc 返回键

23.12 .space 空格键

23.13 .up 向上键

23.14 .down 向下键

23.15 .left 向左键

23.16 .right 向右键

系统修饰符:

23.17 .ctrl .alt .shift .meta

24. vue循环中的key作用

key值的存在保证了唯一性,vue在执行时,会对节点进行检查,如果没有Key值,那么vue检查到这里有dom节点,就会对内容清空并赋新值,如果有key值存在,那么会对新老节点进行对比,比较两者key是否相同,进行调换位置或删除操作。

25. vue中路由的跳转方式(声明式/编程式)

vue中路由跳转有两种,分别是声明式和编程式

用js方式进行跳转的叫编程式导航 this.$router.push()

用router-link 进行跳转的叫声明式, router-view路由出口,路由模板显示的位置

路由中的name属性有什么作用?
在router-link中使用name导航到对应路由
使用name导航的同时,给子路由传递参数

26.vue路由模式hash和history

hash 模式地址栏中有#,history没有,history模式下刷新,会出现404情况,需要后台配置
使用javascript来对location.hash进行配置,改变url的hash值
可以使用hashChange事件来监听hash值的变化
html5提供了history api来实现 url的变化,其中最主要的api有以下两个:history.pushState()和history.replaceState(0。这两个api可以在不进行刷新的情况下,操作浏览器的历史记录,唯一不同的是,前者是新增一个历史记录,后者是直接替换当前的历史记录。

27. mvvm和mvc的区别

mvc模型视图控制器,视图是可以直接访问模型,所以,视图里面会包含模型信息,mvc关注的是模型不变,所以,在mvc中,模型不依赖视图,但是视图依赖模型。
mvvm 模型 视图 和vm vm是作为模型和视图的桥梁,当模型层数据改变,vm会检测到并通知视图层进行相应的修改

相关文章:

前端面试常用内容——基础积累

1.清除浮动的方式有哪些&#xff1f; 高度塌陷&#xff1a;当所有的子元素浮动的时候&#xff0c;且父元素没有设置高度&#xff0c;这时候父元素就会产生高度塌陷。 清除浮动的方式&#xff1a; 1.1 给父元素单独定义高度 优点&#xff1a; 快速简单&#xff0c;代码少 缺…...

跟着《代码随想录》刷题(三)——哈希表

3.1 哈希表理论基础 哈希表理论基础 3.2 有效的字母异位词 242.有效的字母异位词 C bool isAnagram(char * s, char * t){int array[26] {0};int i 0;while (s[i]) {// 并不需要记住字符的ASCII码&#xff0c;只需要求出一个相对数值就可以了array[s[i] - a];i;}i 0;whi…...

HTML - 扫盲

文章目录1. 前言2. HTML2.1 下载 vscode3 HTML 常见标签3.1 注释标签3.2 标题标签3.3 段落标签3.4 换行标签3.5 格式化标签1. 加粗2. 倾斜3. 下划线3.6 图片标签3.7 超链接标签3.8 表格标签3.9 列表标签4. 表单标签4.1 from 标签4.2 input 标签4.3 select 标签4.4 textarea标签…...

【系统分析师之路】2022上案例分析历年真题

【系统分析师之路】2022上案例分析历年真题 【系统分析师之路】2022上案例分析历年真题【系统分析师之路】2022上案例分析历年真题2022上案例分析历年真题第一题&#xff08;25分&#xff09;2022上案例分析历年真题第二题&#xff08;25分&#xff09;2022上案例分析历年真题第…...

Python编程规范

Python编程规范 当今Python编程社区有许多关于编程规范的约定和惯例。以下是一些常见的Python编程规范&#xff1a; 1.使用有意义的命名 使用有意义的命名可以使代码更加清晰、易读、易维护。变量、函数、类和模块的命名应该能够明确传达其用途&#xff0c;而不是使用无意义…...

【Java】Spring Boot项目的创建和使用

文章目录SpringBoot的创建和使用1. 什么是Spring Boot&#xff1f;为什么要学Spring Boot&#xff1f;2. Spring Boot项目的优点3. Spring Boot 项目的创建3.1 使用idea创建3.2 接下来创建Spring Boot项目4. 项目目录介绍和运行4.1 运行项目4.2 输出内容5. 总结SpringBoot的创建…...

Malware Dev 00 - Rust vs C++ 初探

写在最前 如果你是信息安全爱好者&#xff0c;如果你想考一些证书来提升自己的能力&#xff0c;那么欢迎大家来我的 Discord 频道 Northern Bay。邀请链接在这里&#xff1a; https://discord.gg/9XvvuFq9Wb我会提供备考过程中尽可能多的帮助&#xff0c;并分享学习和实践过程…...

JavaScript HTML DOM 事件

文章目录JavaScript HTML DOM 事件对事件做出反应HTML 事件属性使用 HTML DOM 来分配事件onload 和 onunload 事件onchange 事件onmouseover 和 onmouseout 事件onmousedown、onmouseup 以及 onclick 事件JavaScript HTML DOM 事件 HTML DOM 使 JavaScript 有能力对 HTML 事件做…...

推荐算法——NCF知识总结代码实现

NCF知识总结代码实现1. NeuralCF 模型的结构1.1 回顾CF和MF1.2 NCF 模型结构1.3 NeuralCF 模型的扩展---双塔模型2. NCF代码实现2.1 tensorflow2.2 pytorchNeuralCF&#xff1a;如何用深度学习改造协同过滤&#xff1f; 随着技术的发展&#xff0c;协同过滤相比深度学习模型的…...

redis(4)String字符串

前言 Redis中有5大数据类型&#xff0c;分别是字符串String、列表List、集合Set、哈希Hash、有序集合Zset&#xff0c;本篇介绍Redis的字符串String Redis字符串 String是Redis最基本的类型&#xff0c;你可以理解成与Memcached一模一样的类型&#xff0c;一个key对应一个value…...

session一致性问题

在http访问请求中&#xff0c;web服务器会自动为同一个浏览器的访问用户自动创建唯一的session&#xff0c;提供数据存储功能。最常见的&#xff0c;会把用户的登录信息、用户信息存储在session中&#xff0c;以保持登录状态。只要用户不重启浏览器&#xff0c;每次http短连接请…...

上岸16K,薪资翻倍,在华为外包做测试是一种什么样的体验····

现在回过头看当初的决定&#xff0c;还是正确的&#xff0c;自己转行成功&#xff0c;现在进入了华为外包测试岗&#xff0c;脱离了工厂生活&#xff0c;薪资也翻了一倍不止。 我17年毕业于一个普通二本学校&#xff0c;电子信息工程学院&#xff0c;是一个很不出名的小本科。…...

django项目中如何添加自定义的django command

项目目录 1.我们自己建立的application叫做app&#xff0c;首先在这个app目录下&#xff0c;我们需要新建management目录&#xff0c;这个目录里应该包括&#xff1a;__ init__.py&#xff08;内容为空&#xff0c;用于打包&#xff09;和commands目录&#xff0c;然后在comma…...

【算法基础】哈希表⭐⭐⭐

一、哈希表 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 给定表M,存在函数f(key),对任意…...

基于SpringMVC、Spring、MyBatis开发的校园点餐系统

文章目录 项目介绍主要功能截图:后台登录用户管理商品管理评论管理订单管理角色管理咨询管理前台前台首页我的订单商品详情支付方式选择支付成功页面部分代码展示设计总结项目获取方式🍅 作者主页:Java韩立 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题…...

LeetCode 热题 C++ 148. 排序链表 152. 乘积最大子数组 160. 相交链表

力扣148 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [4,2,1,3] 输出&#xff1a;[1,2,3,4]示例 2&#xff1a; 输入&#xff1a;head [-1,5,3,4,0] 输出&#xff1a;[-1,0,3,4,5]示例 3&#x…...

JavaScript 基础【快速掌握知识点】

目录 为什么要学JavaScript? 什么是JavaScript 特点&#xff1a; 组成&#xff1a; JavaScript的基本结构 基本结构 内部引用 外部引用 console对象进行输出 JavaScript核心语法 1、变量声明 2、数据类型 3、运算符 4、条件语句 5、循环语句 6、数组 7…...

基于Frenet优化轨迹的⾃动驾驶动作规划⽅法

动作规划&#xff08;Motion Control&#xff09;在⾃动驾驶汽⻋规划模块的最底层&#xff0c;它负责根据当前配置和⽬标配置⽣成⼀序列的动作&#xff0c;本⽂介绍⼀种基于Frenet坐标系的优化轨迹动作规划⽅法&#xff0c;该⽅法在⾼速情况下的ACC辅助驾驶和⽆⼈驾驶都具有较强…...

Spring(入门)

1. 什么是spring&#xff0c;它能够做什么?2. 什么是控制反转(或依赖注入)3. AOP的关键概念4. 示例 4.1 创建工程4.2 pom文件4.3 spring配置文件4.4 示例代码 4.4.1 示例14.4.2 示例2 &#xff08;abstract&#xff0c;parent示例&#xff09;4.4.3 使用有参数构造方法创建jav…...

2023-02-25力扣每日一题

链接&#xff1a; https://leetcode.cn/problems/minimum-swaps-to-make-strings-equal/ 题意&#xff1a; 给定字符串s1,s2&#xff0c;仅由x,y组成 每次可以在两边各挑一个字符交换 求让s1等于s2的最小步骤 解&#xff1a; 1000啊1000&#xff0c;双指针贪一下就过了 …...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

uniapp 小程序 学习(一)

利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 &#xff1a;开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置&#xff0c;将微信开发者工具放入到Hbuilder中&#xff0c; 打开后出现 如下 bug 解…...

0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化

是不是受够了安装了oracle database之后sqlplus的简陋&#xff0c;无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话&#xff0c;配置.bahs_profile后也能解决上下翻页这些&#xff0c;但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可&#xff0c…...

五子棋测试用例

一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏&#xff0c;有着深厚的文化底蕴。通过将五子棋制作成网页游戏&#xff0c;可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家&#xff0c;都可以通过网页五子棋感受到东方棋类…...

Netty自定义协议解析

目录 自定义协议设计 实现消息解码器 实现消息编码器 自定义消息对象 配置ChannelPipeline Netty提供了强大的编解码器抽象基类,这些基类能够帮助开发者快速实现自定义协议的解析。 自定义协议设计 在实现自定义协议解析之前,需要明确协议的具体格式。例如,一个简单的…...

Python异步编程:深入理解协程的原理与实践指南

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 持续学习&#xff0c;不断…...