获得徽章 0
- vue路由传参的时候,通过query携带参数:这种情况下传递的参数会显示在url后面?id=?,获取参数的方式this.$route.query,该方法的弊端在于,在页面跳转之间可正常使用,但是在进行页面刷新的时候,所有参数值会转化成字符串,如对象info会转换成字符串’[object,object]’,布尔值会转成’false’,从而导致错误。评论点赞
- Redis:
Redis 数据结构可以分为三类。
1、基本类型 5 个(String、List、Set、SortedSet、Hash)
2、拓展类型 3 个(GEO、BitMap、HyperLogLog)
3、自定义 1 个评论点赞 - 视频剪切时经常遇到的问题:
【1】直接copy剪切速度快,但是剪切时间不准确,可能出现黑屏、花屏现象。
【2】重新编码,时间相对准确,不会出现黑屏这些问题。但是速度很慢,特别是高清大视频,几秒钟要几分钟时间。
这些问题都是I帧导致的问题。
在视频编码中,I帧(Intra-Frame)是一种关键帧,也被称为独立帧或关键图像。与I帧相对的是P帧(Predictive Frame)和B帧(Bi-directional Frame),它们属于预测帧。
I帧是一种完整的图像帧,它不依赖于其他帧进行解码,因此可以独立地呈现视频内容。每个视频序列通常以I帧作为起点,然后通过向后或向前参考其他类型的帧来构建连续的视频流。
与I帧不同,P帧和B帧采用了更高级的编码技术,它们利用时间和空间上的冗余性来减小文件大小。P帧是通过参考先前的I帧或P帧进行编码的,而B帧则可同时参考前后的I帧、P帧或者其他B帧。
I帧在视频中的位置非常重要。由于I帧独立于其他帧,它可以用于视频的随机访问、剪切和编辑,而无需解码和参考其他帧。这也使得I帧成为视频快速播放、逐帧查看和生成缩略图的基础。
I帧相对于P帧和B帧的大小要大得多,因为它包含了完整的图像信息,而不是仅描述变化部分。因此,在视频编码中,根据需求和特定场景的要求,可以调整I帧的间隔来平衡视频质量和文件大小。
那么使用ffmpeg进行剪辑视频时,如何能做到速度快时间又准确呢?
想到的一个方案是:先粗剪辑copy、再细剪辑重新编码。展开评论点赞 - C++中基类采用virtual虚析构函数是为了防止内存泄漏。具体地说,如果派生类中申请了内存空间,并在其析构函数中对这些内存空间进行释放。假设基类中采用的是非虚析构函数,当删除基类指针指向的派生类对象时就不会触发动态绑定,因而只会调用基类的析构函数,而不会调用派生类的析构函数。那么在这种情况下,派生类中申请的空间就得不到释放从而产生内存泄漏。所以,为了防止这种情况的发生,C++中基类的析构函数应采用virtual虚析构函数。
用代码解释:
A* a = new B();// A为基类,析构函数不是虚函数
delete a; // 那么这里不会执行B的析构展开评论点赞 - 前端截图分两种1、Canvas截图(代表html2canvas),通过遍历DOM克隆一份副本,将此副本在Canvas上重新绘制,并根据DOM的样式应用在对应的绘制元素上,再通过Canvas生成图片。转换过程可理解成:DOM→Canvas→Image。
2、SVG截图(代表rasterizehtml),通过遍历DOM克隆一份副本,利用SVG的foreignObject把DOM作为外部资源嵌套在SVG中,将此SVG在Canvas上重新绘制,并根据DOM的样式应用在对应的绘制元素上,再通过Canvas生成图片。转换过程可理解成:DOM→SVG的ForeignObject→Canvas→Image。
两种前端截图方式最后都是通过把DOM绘制到Canvas,再通过Canvas输出图片。展开评论点赞 - Vue中this.$router.push(参数) 实现页面跳转
// 字符串
this.$router.push('/home/first')
// 对象 query相当与发送了一次get请求,请求参数会显示在浏览器地址栏中
this.$router.push({ path: '/home/first' })
// 命名的路由 params相当与发送了一次post请求,请求参数则不会显示,并且刷新页面之后参数会消失
this.$router.push({ name:'Login', params: { id: this.id } )展开评论点赞 - 前端 不应该过度过度工程化
1.增加了复杂度,工程化的主要价值在——规范化开发,自动化流程,提高质量
2.不必完全 Toolkit/Framework 化,可以采取适合轻量工程化方案,适合的最好
3.目前有一些新思路,比如 Vite 和 Remix 等。后端和全栈的工程化经验也应该借鉴。
4.重要的是解决真正的痛点,不要过度工程化展开评论点赞 - 项目性能如何优化:
A:懒加载-路由懒加载就是按需加载,不会让项目刚开始运行速度就很慢,能大大的优化用户体验图片懒加载。<img v-lazy='1.jpg'>
B: 代码优化
1-封装组件喝函数,提供代码复用率;
2-减少本地存储的使用;
3-减少watch使用:watch监听大量状态时会让浏览器出现卡顿;
4-使用v-if代替v-show:用户体验优化;
5-添加loading:当用户需要等待时间较长时,必须添加等待loading;
6-路由逻辑;
7-样式统一;
8-滚动组件的使用;展开评论点赞 - 前端中的异步指的是在浏览器中同时运行多个任务,有些任务可能需要等待其他任务完成或者需要异步获取数据后再执行。异步的好处是可以提高用户体验,避免页面在加载过程中出现卡顿或者空白的情况。在前端开发中,常见的异步操作包括以下几种:
1.异步请求:在页面加载时,需要从服务器获取数据或者执行某些操作,但是这些操作并不能立即完成,需要等待服务器响应或者数据加载完成后才能继续执行。
2.定时任务:有些任务需要在一定时间间隔后执行,例如定时刷新页面、定时检查新消息等。
3.事件监听:有些任务需要在某个事件发生后执行,例如鼠标点击、页面滚动等。展开评论点赞 - 滤镜是一种在视频渲染过程中应用特定效果的技术。下面使用 ffplay.exe 播放视频时,采用矩形标注的滤镜。在视频中间绘制一个 200x200的红色矩形。
ffplay.exe -i input.mp4 -vf "drawbox=x=(iw-200)/2:y=(ih-200)/2:w=200:h=200:color=red"
这里使用 iw 代表输入视频的宽度,ih 代表输入视频的高度。
w=200:矩形框的宽度。
h=200:矩形框的高度。
color=red:矩形框的颜色,这里设置为红色。展开评论点赞