webRTC

WebRTC
一、发展历程
名称源自网页实时通信(Web Real-Time Communication)的缩写,是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输,支持网页浏览器进行实时语音对话或视频对话。WebRTC包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。它是谷歌2010年5月以6820万美元收购拥有编解码、回声消除等技术的Global IP Solutions公司而获得的一项技术。该项目是由GIPS项目和libjingle项目融合而成。其中GIPS部分主要提供媒体的处理的功能。libjingle项目部分主要提供P2P传输部分的功能。2011年5月开放了工程的源代码,与相关机构 IETF 和 W3C 制定行业标准,组成了现有的 WebRTC 项目,在行业内得到了广泛的支持和应用,成为下一代视频通话的标准。

    ​ WebRTC是一个开源项目,旨在使得浏览器能为实时通信(RTC)提供简单的JavaScript接口。说的简单明了一点就是让浏览器提供JS的即时通信接口。这个接口所创立的信道并不是像WebSocket一样,打通一个浏览器与WebSocket服务器之间的通信,而是通过一系列的信令,建立一个浏览器与浏览器之间(peer-to-peer)的信道,这个信道可以发送任何数据,而不需要经过服务器。并且WebRTC通过实现MediaStream,通过浏览器调用设备的摄像头、话筒,使得浏览器之间可以传递音频和视频。

mysql_use.md

一、基础规范

(1)必须使用InnoDB存储引擎

解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高
(2)必须使用UTF8字符集

解读:万国码,无需转码,无乱码风险,节省空间
(3)数据表、数据字段必须加入中文注释

解读:N年后谁知道这个r1,r2,r3字段是干嘛的

linux命令

常见的linux的命名

  1. cd - 切换到上个目录
  2. pushd popd dirs目录 操作目录栈。
  3. echo “新密码”|passwd –stdin 用户名
    如 echo “新密码”|passwd –stdin 用户名
    更改用户 hehe 的密码。

web_develope.md

记录平时开发遇到的问题,及解决办法。

  1. 当宽度width:100%时,padding-right不起作用。
  • 解决办法:增加box-sizing: border-box;
  1. 动态绑定图片
       return require(`@/assets/icons/${this.icon}`)
     }
    
  2. 文本换行 css样式
    word-break:break-all;
    overflow-wrap:break-all;
    hyphens:auto;
    line-break:anywhere;

浅谈Flutter插件(一)

Flutter插件原理浅谈

Platform Channel

  1. Platform Channel是Flutter端与Platform端指定的通信机制,它分为三种:
    (1) BasicMessageChannel: 用于传递字符串和半结构化的信息(在大内存数据块传递的情况下使用)。
    (2) MethodChannel: 用于传递方法的调用(method invocation)。
    (3) EventChannel:用于数据流(event streams)的通信。

消息传递与编解码器

avatar
从图中可以看出,不同的Handler对应不同的消息通道。
其中,中间通信的消息都是编码的二进制格式形式,需要通过消息解码器进行处理。
编码分为两种:MessageCodec 和MethodCodec。其中,MessageCodec包括BinaryCodec, StringCodec,JSONMesageCodec和 StandardMessageCodec,
MethodCodec包括JSONMethodCodec 和 StandardMethodCodec。

todoList

1. 以下是最近要阅读的技术文章

  1. https://songxp.top/2017/01/15/IO流/#http协议介绍
  2. http://yourbay.me/all-about-tech/2019/08/27/android-28-view-post/
  3. https://github.com/flutter/plugins
  4. http://flutter.link/
  5. https://blog.csdn.net/sinat_17775997/article/details/95471809
  6. https://fenews.org/
  7. https://www.ccarea.cn/archives/708
  8. https://blog.csdn.net/u010164190/article/details/78552155
  9. http://helloweb.wang/qianduankaifa/552.html
  10. https://www.cnblogs.com/hlwyfeng/p/5222391.html (已经阅读)
  11. https://meandni.com/
  12. https://css-tricks.com/an-introduction-and-guide-to-the-css-object-model-cssom/
  13. https://docs.microsoft.com/en-us/previous-versions//hh781509(v=vs.85)?redirectedfrom=MSDN
  14. https://www.jianshu.com/p/97a0694dae68
  15. https://cloud.tencent.com/developer/article/1540523
  16. https://github.com/JsonChao/Awesome-Android-Interview/blob/master/Android%E7%9B%B8%E5%85%B3/Android%E9%AB%98%E7%BA%A7%E9%9D%A2%E8%AF%95%E9%A2%98.md
  17. https://github.com/dypsilon/frontend-dev-bookmarks
  18. https://blog.dreamtobe.cn/android_d8_r8/
  19. https://blog.dreamtobe.cn/
  20. https://www.rrfed.com/category/basic/
  21. https://juejin.im/post/6844903741183754253

vue源码阅读(一)

vue初始化流程图

描述

下面的代码分析是从vue1.0开始的

vue的入口文件位于 src/index.md

流程图如下:
avatar

初始化流程

  1. 创建Vue对象时,先调用_init方法,完成以下功能

    进行一些属性的初始化,将自己加入父对象中,初始化data对象,初始化state,初始化event,
    调用created事件,绑定元素到dom上。

  2. 初始化sate

    调用_initState方法, 将元信息属性设置成响应式对象,比如$index,$key,$value;将methods下的
    各个方法绑定到当前vue对象中。将data中各个属性转变成可以观察的对象。computed中的各个对象或者
    函数,绑定到当前this对象下,并且computed中的各个属性字段,调用get方法中,执行依赖传递,值的更新。

  3. 初始化event

    将option.events中的对象放到vm.$on对象下;将option.watch下的对象放到vm.$watch对象下。

  4. 执行created事件

  5. 调用$mount方法

    $mount方法定义在lifecycle.js中。如果当前optiony对象有el,则执行mount方法。

    参考链接

  6. Compile - 源码属性解析(https://cloud.tencent.com/developer/article/1479372)

怎么编写个人博客

利用hexo工具编写个人博客

  1. 安装
    打开Git Bash,输入以下命令安装Hexo
    npm install -g hexo-cli

  2. 初始化
    打开Git Bash,输入命令
    hexo init [folder]
    [folder]代表的是你的hexo文件夹名,如果不写,就默认在当前文件夹初始化。

  3. 然后进入你的hexo文件夹
    cd [folder]

  4. 生成静态文件
    需要执行generate命令生成静态文件,才能部署到服务器
    hexo g