- 博客(19)
- 收藏
- 关注
原创 WebRTC 中的 SDP 协议
当发起多媒体电话会议,IP语音呼叫时,流媒体视频或其他会话,需要传达媒体细节,传输地址和其他会话描元数据给参与者。SDP 为此类信息提供了标准。SDP纯粹是会话描述的格式,它不包含传输协议。WebRTC 会话就是由 SDP 描述的。对于 WebRTC 来说,最重要的是 SDP 中的媒体和传输信息。媒体信息包括:媒体类型(视频,音频)传输协议(RTP/UDP/IP,H.320等)媒体格式(H.26
2017-07-05 13:50:44
3201
原创 WebRTC 初探
浏览器本身不支持相互之间直接建立信道进行通信,都是通过服务器进行中转。比如现在有两个客户端,甲和乙,他们俩想要通信,首先需要甲和服务器、乙和服务器之间建立信道。甲给乙发送消息时,甲先将消息发送到服务器上,服务器对甲的消息进行中转,发送到乙处,反过来也是一样。这样甲与乙之间的一次消息要通过两段信道,通信的效率同时受制于这两段信道的带宽。同时这样的信道并不适合数据流的传输,如何建立浏览器之间的点对点传输
2017-06-17 10:25:10
738
原创 Angular 首屏加载优化
Angular 应用主要包含组件和它们的HTML模板。 在浏览器可以渲染应用之前,组件和模板必须要被Angular编译器转换为可以执行的JavaScript。最简单的方式就是将所有代码加载到浏览器中,包括我们自己写的组件的 Angular 编译器,然后在浏览器中编译,这种编译方式就是 JIT(Just-in-Time). 但JIT 编译与比较大的性能问题。
2017-05-30 21:51:54
3620
原创 Angular 服务器端渲染中的坑
Angular 官方文档已经有 Angular Universal 那一章,专门用于讲解服务器端渲染。但是在使用服务器渲染的时候还是碰到不少的坑。1. 文档中的坑文档中已经大致介绍了服务器渲染的过程,以及需要的配置,但文档中还是有不少的问题。
2017-05-28 15:06:05
3156
原创 JavaScript 内存管理
本文主要是对 V8 之旅: 垃圾回收器 和 JavaScript内存管理和优化 两篇文章的总结v8 垃圾回收垃圾回收器是一把十足的双刃剑。其好处是可以大幅简化程序的内存管理代码,因为内存管理无需程序员来操作,由此也减少了(但没有根除)长时间运转的程序的内存泄漏。对于某些程序员来说,它甚至能够提升代码的性能。垃圾回收器要解决的最基本问题就是,辨别需要回收的内存。一旦辨别完毕,这些内存区域即可在未来的分
2017-05-16 22:55:05
476
原创 You-Dont-Know-JS
最近在读 You-Dont-Know-JS 这本书,作者由浅及深地讲解了 JS 的基本语法,还提出了很多不为人知的细节。感觉收获颇多。下面是我自己总结的一些书中的知识,主要是自己以前不太了解的一些细节。
2017-05-11 22:48:03
850
原创 Angular2 脏检查过程
Angular 强大之处在于能将数据变化自动应用到视图上面,这大大减少了开发工作量。 Angular 在脏检查的过程中到底做了哪些事呢?zone.js想要将数据变化应用到页面上面,首先需要检测数据的变化,那么数据会在什么情况下发生变化呢?数据变化一般发生异步事件中,例如: - 浏览器事件,例如 click, mouseover, keyup - setTimout 和 setInterval
2017-05-01 16:49:06
8355
1
原创 RxJS —— 异步数据流利器
RxJS 适用于异步场景,即前端交互中接口请求、浏览器事件以及自定义事件。RxJS 统一了异步编程的规范,将Promise、ajax、浏览器事件,通通封装成序列。如果是学过信号处理的同学,可以将 RxJS 中的函数(例如filter, debounce, delay)想象成一个个滤波器,将ajax、事件等看作信号输入。一个 Observable 对向就是信号源。RxJS 与 PromisePromis
2017-04-27 16:11:20
1990
原创 Angular2 依赖注入之实例化过程
上一篇讲了Angular 依赖注入之注解这里会介绍 Angular 的注入器和实例化过程,基于 angular@4.1.0-beta.1Angular 依赖注入过程主要有下面几个重要的部分组成:Inject 和 Injectable 装饰器解析提供商,构造注入器获取实例化对象
2017-04-20 21:44:55
1984
原创 Angular2 依赖注入之装饰器
Angular DI下面会从 Angular 的源码分析依赖注入的整个过程,基于 angular@4.1.0-beta.1Angular 依赖注入过程主要有下面几个重要的部分组成:Inject 和 Injectable 装饰器解析提供商,构造注入器获取实例化对象Angular 依赖注入中的一些重要的概念:Provider : 提供商,下面就是一个Proviver,一共有5种构造提供商的方式
2017-04-20 21:31:50
1565
原创 Electron 调用本地模块
Electron 结合了 Chromium、Node.js 和用于调用操作系统本地功能的 API(如打开文件窗口、通知、图标等,基于 Electron 的开发,就好像开发一个网页一样,而且能够无缝地使用 Node。或者说:就好像构建一个 Node app,并通过 HTML 和 CSS 构建界面。那么如何在页面中调用 Node API 呢?
2017-04-05 21:59:45
19113
原创 Javascript构造函数、原型、对象
构造函数与原型构造函数是生成对象的模板,一个构造函数可以生成多个对象,每个对象都有相同的结构。使用new调用构造函数会自动创建一共新对象,调用构造函数的一共重要特征是,构造函数的prototype属性会被用作新对象的原型。构造函数的缺点就是,每当你实例化两个对象时,需要调用两次构造函数的某一个方法,这带来的坏处就是占用内存。
2016-11-29 14:34:08
334
原创 Sass语法规则及使用方法
Sass是一种css的扩展,可以使得css的编码更加强大和优雅。sass支持使用变量、条件、循环、嵌套、继承、mixin、函数等强大的功能。Sass特点:对css完全兼容语言扩展,例如变量、嵌套、mixins拥有大量函数,可以用来操作颜色及其他属性值高级特性如control directives可以自定义格式化输出
2016-11-02 14:44:48
2418
原创 CSS动画中的Animation和Transition全属性实例
CSS中动画主要由transition、animation两个属性组成。transition定义了从一个状态向另一个状态转变时应用的动画,animation则比transition强大的多,可以定义多个状态的转变,以及一些其他有趣的属性。担任在使用简单动画时,transition仍旧是不错的选择。transition、animation和transform三者的组合可以产生一些有趣的动画。下面将注要
2016-10-31 13:55:23
2290
原创 Kd-Trees算法原理和源码
kd-tree(k-dimensional-tree),是一种分割k维数据空间的数据结构。主要应用于多维空间关键数据的搜索。下面介绍了如何使用kd-tree实现2维的范围搜索和最近邻搜索。kd-tree有很多的应用场景,例如网络设计、电路设计、数据库查询。在范围搜索和最近邻搜索中,普通的遍历搜索查询算法复杂度为O(N),而kd-tree的复杂度为O(logN)。
2016-09-27 11:04:41
1188
原创 8 Puzzle 算法原理和源码
算法根据Coursera上的算法课程实现GitHub 地址8 puzzle问题在18世纪70年代由Noyes Palmer提出,并逐渐流行起来。它由8个方块和一共空格组成3X3的格子。8个方块随机放置1-8个数字,目标是移动方块使得8个方块按顺序排放。
2016-09-15 18:59:45
17194
1
转载 Activity栈简介
1 Task 1、 什么是 Task ? Task 翻译成中文叫做任务,那么什么是任务呢? Task 就是一个栈 (A task is a stack of activities.) ,这个栈里面存放了很多 Activity ,它遵循着后进先出的原则。栈有两个动作:压栈(把对象压入到栈当中)和弹栈(把栈中的第一个对象从栈里面拿出来)。 2、 Task 运行过程
2013-08-24 15:44:48
496
原创 android 确认对话框
AlertDialogAlertDialog类是Dialog类的子类,它默认提供了3个按钮和一个文本消息,这些按钮可以按需要来使他们显示或隐藏。AlertDialog类中有一个内部静态类,名为“Builder”,Builder类提供了为对话框添加多选或单选列表,以及为这些列表添加事件处理的功能。另外,这个Builder类将AlertDialog对话框上的3个按钮按照他们的位置分别称呼为:Pos
2013-08-22 15:57:37
1795
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人