笔描相思
码龄6年
关注
提问 私信
  • 博客:27,215
    27,215
    总访问量
  • 117
    原创
  • 415,030
    排名
  • 16
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:湖北省
  • 加入CSDN时间: 2019-03-17
博客简介:

qq_44788119的博客

查看详细资料
个人成就
  • 获得11次点赞
  • 内容获得20次评论
  • 获得53次收藏
创作历程
  • 6篇
    2022年
  • 67篇
    2021年
  • 22篇
    2020年
  • 22篇
    2019年
成就勋章
TA的专栏
  • 刷题
    16篇
  • 威风威风人
    4篇
  • 学习
    95篇
兴趣领域 设置
  • 后端
    架构
创作活动更多

超级创作者激励计划

万元现金补贴,高额收益分成,专属VIP内容创作者流量扶持,等你加入!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

WebRTC用到的方法

远端流通过监听事件 client.on(‘stream-added’) 获得,请在 client.join() 进房前注册该事件,确保您不会错过远端用户进房通知。收到上述事件后要通过 client.subscribe() 订阅远端音视频流。● userSig: 用户签名,参考获取临时 userSig,或者部署 userSig 签发服务。● sdkAppId: 您在腾讯云创建的音视频应用的 sdkAppId。● mode: 实时音视频通话模式,设置为 ‘rtc’。● userId: 用户 ID,由您指定。
原创
发布博客 2022.10.17 ·
552 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

WebRTC的基本概念

转发的协议被定义为TURN。STUN:NAT的UDP简单的网络协议,它允许位于NAT后的客户端找出自己的公网地址,查出自己位于那种类型的NAT之后,以及NAT为某一个本地端口绑定的Internet端端口。问题:STUN并不是每次都能够成功的为需要的NAT的通话设备分配IP地址的,P2P在传输媒体流时,使用本地带宽,在多人音视频通话的过程中,通话质量好坏往往需要根据使用者本地带宽确定。信令服务器除了交换网络协商信息和媒体协议信息,比如房间的管理,音视频播放的音乐信息,进度条信息等都需要通过信令服务器实现。
原创
发布博客 2022.10.17 ·
992 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

前端如何优化性能

​ 一个完整的 HTTP 请求需要经历 DNS 查找,TCP 握手,浏览器发出 HTTP 请求,服务器接收请求,服务器处理请求并发回响应,浏览器接收响应等等一系列复杂的过程。就是在页面中,先不给图片设置路径,只有当图片出现在浏览器的可视区域时,才去加载真正的图片,这就是延迟加载。对于图片很多的网站来说,一次性加载全部图片,会对用户体验造成很大的影响,所以需要使用图片延迟加载。​ 我们知道,当客户端渲染时,他是获取 HTML 文件,根据需要下载 JavaScript 文件,运行文件,生成 DOM,再渲染。
原创
发布博客 2022.09.05 ·
194 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

vite的学习笔记

vite先读取main.js中引入的index.css文件,直接使用fs模块读取index.css中的文件内容,创建一个style标签,将index.css中的文件内容直接copy进style标签里,然后将style标签插入到index.html的head中,将该css文件中的内容直接替换为js脚本,同时设置(Content-Type)为js,从而让浏览器以js脚本的形式来执行css后缀的文件。当我们在协同开发的时候,两个人开发用了相同的类名,这样导致了样式的覆盖,为了解决这个问题需要用到css模块化。..
原创
发布博客 2022.08.29 ·
919 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

vue中的路由学习巩固

router是全局的router实例,它有很多实例和对象,例如history,push(),replace(),go();route是当前激活的路由信息的对象。
原创
发布博客 2022.07.21 ·
80 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

canvas学习第一篇

一:绘制图形1:绘制一个实心长方形 ctx.fillStyle = "rgb(200,0,0)"; ctx.fillRect(10, 10, 55, 50);2:绘制一个矩形的边框ctx.fillStyle = "rgb(200,0,0)";ctx.strokeRect(10, 10, 55, 50);3:清除指定矩形区域,让清除部分完全透明。clearRect(x, y, width, height)4:案例 var canvas = document.getElementB
原创
发布博客 2022.04.21 ·
932 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

常见的算法题目

1:括号匹配function isMatch(str){ var map=new Map(); map.set('(',')'); map.set('{','}'); map.set('[',']'); var k=[]; for(let i=0;i<str.length;i++) { if(str[i]=='('||str[i]=='['||str[i]=='{') { k.push(str[i]); }else{
原创
发布博客 2021.10.23 ·
297 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

常见的前端题目

1:括号匹配function isMatch(str){ var map=new Map(); map.set('(',')'); map.set('{','}'); map.set('[',']'); var k=[]; for(let i=0;i<str.length;i++) { if(str[i]=='('||str[i]=='['||str[i]=='{') { k.push(str[i]); }else{
原创
发布博客 2021.10.23 ·
169 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

url转成对象

var strUrl="http:baidu.com/stu/?lx=1&name=aa&sex=man"; var s=strUrl.indexOf('?'); var strs=strUrl.slice(s+1); var strAry=strs.split('&'); var objs={}; for(var i=0;i<strAry.length;i++){ var item=strAry[i]; ..
原创
发布博客 2021.10.23 ·
150 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

驼峰命名对像

function mapKeyToCamelCase(data) { // 参考答案 const rename = (name) => { return name.split('_').reduce((pre, current) => { return pre + current[0].toUpperCase() + current.substring(1) }); } let res =
原创
发布博客 2021.10.23 ·
127 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

斐波拉去动态规划

function fib(n) { let array = new Array(n + 1).fill(null) array[0] = 0 array[1] = 1 for (let i = 2; i <= n; i++) { array[i] = array[i - 1] + array[i - 2] } return array[n]}fib(10)
原创
发布博客 2021.10.23 ·
92 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

二叉树的深度

var maxDepth = function(root) { if (!root) return 0 return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1};
原创
发布博客 2021.10.23 ·
72 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

数组扁平化

let flatten = (nestedList) => { let result = []; let fn = function(target, ary) { for (let i = 0; i < ary.length; i++) { let item = ary[i]; if (Array.isArray(ary[i])) { fn(target, item); } else { target.push(item); }
原创
发布博客 2021.10.23 ·
76 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

层次输出二叉树

var levelOrder = function(root) { if (!root) return []; let queue = []; let res = []; let level = 0; queue.push(root); let temp; while (queue.length) { res.push([]); let size = queue.length; // 注意一下: size--; //在层次遍历中是一个非常重要的技巧 while (size-
原创
发布博客 2021.10.22 ·
243 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

promise all的实现

function promiseAll(Promises){ return new Promise(function(resolve,reject){ if(!Array.isArray(Promises)) { return reject(new TypeError("argument")); } var countNum=0; var promiseNum=Promises.length; var resolvedva
原创
发布博客 2021.10.22 ·
88 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

instanceof的实现原理

function instanceOf(left, right) { let leftValue = left.__proto__; let rightValue = right.prototype; while (true) { if (leftValue === null) { return false; } if (leftValue === rightValue) { return t
原创
发布博客 2021.10.22 ·
128 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

反转链表练习

var reverseList = function(head) { // 判断下变量边界问题 if (!head || !head.next) return head // 初始设置为空,因为第一个节点反转后就是尾部,尾部节点指向 null let pre = null let current = head let next // 判断当前节点是否为空 // 不为空就先获取当前节点的下一节点 // 然后把当前节点的 next 设为上一
原创
发布博客 2021.10.22 ·
82 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

快排的练习

function sort(array) { if (!checkArray(array)) return quickSort(array, 0, array.length - 1); return array;}function quickSort(array, left, right) { if (left < right) { swap(array, , right) // 随机取值,然后和末尾交换,这样做比固定取一个位置的复杂度略低 let ind
原创
发布博客 2021.10.22 ·
91 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

防抖和节流

防抖:解决的问题就是在一段时间间隔内多次触发事件的时候,只会执行一次节流:解决的问题是减少一段时间的触发频率1:函数在指定时间内只会触发一次,具体实现方法第一次触发函数的时候,延迟delay时间执行,如果在delay时间段内再次触发该函数,则重新开始计时如果delay时间段内没有触发该函数,则执行该函数 function bunde(fn ,depaly) { let timetar=null; return function() { if(timetar)
原创
发布博客 2021.10.22 ·
109 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

new的实现

1:首先会创建一个对象2:创建构造函数上面的属性和方法给这个对象3:将这个对象的__proto__的属性赋一个构造函数的protypeof<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title> </title> <script> // alert(2423) // console.log("423"); fun
原创
发布博客 2021.10.22 ·
90 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多