分类 代码如诗 下的文章

什么是HLS,RTSP,RTMP

HLS 协议:基于HTTP协议的流直播(wikipedia)。苹果推出的解决方案,将视频分成 5-10 秒的视频小分片,然后用 m3u8 索引表进行管理。由于客户端下载到的视频都是 5-10 秒的完整数据,故视频的流畅性很好,但也同样引入了很大的延迟(HLS 的一般延迟在 10-30s 左右)。相比于 FLV, HLS 在iPhone 和大部分 Android 手机浏览器上的支持非常给力,所以常用于 QQ 和微信朋友圈的 URL 分享。

RTSP(Real-Time Stream Protocol)由Real Networks 和Netscape共同提出的,基于文本的多媒体播放控制协议. RTSP定义流格式,流数据经由RTP传输;RTSP实时效果非常好,适合视频聊天,视频监控等方向。

RTMP 实时消息传输协议,由Adobe公司研发,但当前还没有收入国际标准(wikipedia)。协议比较全能,既可以用来推送又可以用来直播,其核心理念是将大块的视频帧和音频帧“剁碎”,然后以小数据包的形式在互联网上进行传输,且支持加密,因此隐私性相对比较理想,但拆包组包的过程比较复杂,所以在海量并发时容易出现一些不可预期的稳定性问题。

- 阅读剩余部分 -

清明时节雨纷纷,路上行人欲断魂!

今天是个特殊的日子,为了表达全国各族人民对抗击新冠肺炎疫情斗争牺牲烈士和逝世同胞的深切哀悼,国务院决定,2020年4月4日举行全国性哀悼活动,10时起,全国人民默哀3分钟,汽车、火车、舰船鸣笛,防空警报鸣响。

从昨天接到通知,要把网站变成灰色,经过多方查找,找到网上流传的解决方案:

html {
  -webkit-filter: grayscale(100%);
  -moz-filter: grayscale(100%);
  -ms-filter: grayscale(100%);
  -o-filter: grayscale(100%);
  filter: grayscale(100%);
  filter: gray;
}

但是,发现IE10以上,把filter这个属性干掉了……所以高版本的IE跪了!!

不过方案还是有的,那就是强制让IE降级到IE9!

<meta http-equiv="X-UA-Compatible" content="IE=9" />

这样就可以保障所有的网站都变成灰色的了。

另外还有grayscale.js这种方案,但是看了下实现原理,是把所有img标签的文字都转成base64,然后灰度处理,这样性能会比较卡顿,所以不推荐用这种方式来做,而且这种方案是不支持样式背景图的……

集合的分类:

  • 并集:以属于A或属于B的元素为元素的集合成为A与B的并(集)记作A∪B(或B∪A),读作“A并B”(或“B并A”),即A∪B={x|x∈A,或x∈B}
  • 交集:以属于A且属于B的元素为元素的集合成为A与B的交(集)记作A∩B(或B∩A),读作“A交B”(或“B交A”),即A∩B={x|x∈A,且x∈B}
  • 差集:以属于A而不属于B的元素为元素的集合成为A与B的差(集)记作A-B(或B∩A),读作“A减B”,即A-B={x∣x∈A,且x∉B}

- 阅读剩余部分 -

国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有地域语言,国家/地区和文化相关的元素。换言之,应用程序的功能和代码设计考虑在不同地区运行的需要,其代码简化了不同本地版本的生产。开发这样的程序的过程,就称为国际化。

虽然国际化在政务产品用的不多,但是,对于喜欢折腾的我,感觉还是有必要的去了解一下,作为一个知识储备。

- 阅读剩余部分 -

官方解释

混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。

mixin的作用是多个组件可以共享数据和方法,在使用mixin的组件中引入后,mixin中的方法和属性也就并入到该组件中,可以直接使用,在已有的组件数据和方法进行了扩充。

- 阅读剩余部分 -

数组去重,一般都是在面试的时候才会碰到,一般是要求手写数组去重方法的代码。如果是被提问到,数组去重的方法有哪些?你能答出其中的10种,面试官很有可能对你刮目相看。
在真实的项目中碰到的数组去重,一般都是后台去处理,很少让前端处理数组去重。虽然日常项目用到的概率比较低,但还是需要了解一下,以防面试的时候可能回被问到。

- 阅读剩余部分 -

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than right now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

- 阅读剩余部分 -

数组是 JS 中广泛使用的数据结构。数组对象提供了大量有用的方法,如array. forEach()array.map()等来操作数组。

在实战中,我经常对数组可能的操作和相应采用哪个更好的方法不知所措,所以本文就列出 15 种常用数据方法,让咱们重温加强记忆一下。

- 阅读剩余部分 -

最近在看element-ui的源码,发现了一个这样的属性:inject

provider/inject:简单的来说就是在父组件中通过provider来注入,然后在子组件中通过inject来引用。这对选项需要一起使用,以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效。

官方文档:https://cn.vuejs.org/v2/api/#provide-inject

- 阅读剩余部分 -

问题:

在页面源文件index.html的标签之间插入

<link rel="shortcut icon" href=" /favicon.ico" /> 

仍旧无法加载图标

解决方法:

HtmlWebpackPlugin插件中加入小图标,Vue脚手架时修改webpack.dev.conf.js配置文件:

new HtmlWebpackPlugin({
  filename: 'index.html',
  template: 'index.html',
  favicon: './favicon.ico', // 添加小图标
  inject: true
}),

不要忘记webpack.prod.conf.js中也需要添加

注:( favicon.ico放入根目录。)