4月 172017
 

举个例子:
A想要从自己的帐户中转1000块钱到B的帐户里。那个从A开始转帐,到转帐结束的这一个过程,称之为一个事务。在这个事务里,要做如下操作:
1. 从A的帐户中减去1000块钱。如果A的帐户原来有3000块钱,现在就变成2000块钱了。
2. 在B的帐户里加1000块钱。如果B的帐户如果原来有2000块钱,现在则变成3000块钱了。
如果在A的帐户已经减去了1000块钱的时候,忽然发生了意外,比如停电什么的,导致转帐事务意外终止了,而此时B的帐户里还没有增加1000块钱。那么,我们称这个操作失败了,要进行回滚。回滚就是回到事务开始之前的状态,也就是回到A的帐户还没减1000块的状态,B的帐户的原来的状态。此时A的帐户仍然有3000块,B的帐户仍然有2000块。
我们把这种要么一起成功(A帐户成功减少1000,同时B帐户成功增加1000),要么一起失败(A帐户回到原来状态,B帐户也回到原来状态)的操作叫原子性操作。
如果把一个事务可看作是一个程序,它要么完整的被执行,要么完全不执行。这种特性就叫原子性。
Continue reading »

4月 172017
 

redis基础使用教程: http://www.cnblogs.com/taceywong/p/5840163.html

php中的使用redis简单实例。

    if(FALSE == $this->redis->get('seeNums'))
    {
	$this->redis->set('seeNums', 1);
	$this->redis->expire('seeNums', 60 * 60 * 24);
    }
    else
    {
	$this->redis->incrby('seeNums', 1);
    }
    $seeNums = $this->redis->get('seeNums');

redis易百教程:http://www.yiibai.com/redis/strings_incr.html

redis与php结合的应用场景:
Continue reading »

4月 142017
 

rtmp延时低,但是累计延时就不一定低。随着播放时间的久远以及网络状况的变化。rtmp延时会比较严重,甚至达到几十秒的延时。这个时候,直播的体验会很差很差。这就是rtmp的一个缺点。rtmp是基于tcp,不会丢包。所以当网络状态差时,服务器会将包缓存起来。待网络状况好了,就一起发给客户端。

对于NetStream,有一个属性叫bufferTimeMax。指定实时流内容的最大缓冲区长度(以秒为单位)。默认值为 0。由于网络和设备问题(如发送方和接收方之间存在时钟偏移),缓冲区长度可随时间不断增加。设置此属性可使实时应用(如会议和监视)的缓冲区长度最大化。当 bufferTimeMax > 0,并且 bufferLength >= bufferTimeMax 时,将加快音频的播放速度,直到 bufferLength 达到 bufferTime。如果实时流仅包含视频,则视频播放较快,直到 bufferLength 达到 bufferTime。Flash Player 将捕捉速率控制在 1.5% 和 6.25% 之间,具体取决于播放延迟量(bufferLength 和 bufferTime 差异)。如果流中包含音频,通过缩减频率域采样,使音频失真最小化,可以加快播放。设置 bufferTimeMax 属性可在以下情况下启用实时缓冲流追赶:
1,以数据流的方式从 Flash Media Server 传输实时介质。
2,以数据流的方式在数据生成模式 (NetStream.appendBytes()) 下传输实时介质。

本来以为只要设置下bufferTimeMax就可以了。使用方式(上边两点)限制了bufferTimeMax的作用。

那么,遇到问题,总要解决问题的。可以手动加一个定时器,间隔可以根据需要来做。每个这个间隔,就去检查bufferLentgh的大小。bufferLength的值越大,表示离真实的实时时间越远。实时性约差。当bufferLength的大小超过了预期的值,就对NetStream做pause和resume处理。用来释放数据。来达到及时同步的目的。当然,你也可以初始化重连,但这样容易引起黑屏。

这个方法,也是迫于无奈。公司项目用推流工具推流,客户端通过rtmp连接观看。两者之间,没加入其他的沟通环节。不知道客户端此时的流与真实流的状况。

4月 072017
 

重启nginx。

    /etc/init.d/nginx restart

重启mysql

    /etc/init.d/mysql restart

修改了php.ini后,重启php

    /etc/init.d/php-fpm restart

重启ams服务器

    /etc/init.d/ams restart

另外,说下pm2,pm2可以后台运行你的程序。比如node.js默认情况下,当运行窗体关闭了(我用的是XShell5),node.js的服务也停止了。当用pm2启动的node.js的程序的时候,关掉XShell5窗体,程序一样在运行。

4月 072017
 

用h5播放或flash播放mp4文件时,有时候遇到播放有声音没画面。但是用本地播放器(VLC media player,mediaplayer等)播放时,视频音频都有。这个时候,就涉及到h5和flash能支持播放的格式以及编码格式了。

mp4只是视频容器(文件格式)。至于里边的视频,音频用什么编码,又是另外一说。常见的mp4封装的视频编码有H.264,也就是AVC,是MPEG-4的part10编码。还有一种是 MPEG-4 Visual,它是MPEG-4的part2编码。对于视频编码,flash和h5只支持H.264编码的。其他编码的都是播不出来的。

编码格式以及flash支持播放的格式。可以看下边的连接。

http://www.c-ps.net/trade/content/2009/6/11553.html

http://zengrong.net/post/393.htm

https://www.zhihu.com/question/20997688
Continue reading »

4月 062017
 

(一),CentOS安装redis。安装步骤:
1,如果没有安装wget,安装wget。

yum install wget

2,在https://redis.io/download查看redis的版本。下载并安装。

wget http://download.redis.io/releases/redis-3.2.8.tar.gz

3,解压并进入解压目录进行编译。编译成功后会在redis-3.2.8目录下生成相关文件。

wget http://download.redis.io/releases/redis-3.2.8.tar.gz

tar xzf redis-3.2.8.tar.gz

cd redis-3.2.8

make
Continue reading »

 Posted by at 下午10:15
4月 052017
 

redis是什么。redis 是一个高性能的key-value数据库。

redis的三个主要特点:
1,redis将其数据库完全保存在内存中,仅使用磁盘进行持久化。
2,与其它键值数据存储相比,redis有一组相对丰富的数据类型。
3,redis可以将数据复制到任意数量的从机中。

redis的一些优点:
1,异常快 – redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执行81000次的读取/获取(GET)操作。
2,支持丰富的数据类型 – redis支持开发人员常用的大多数数据类型,例如列表,集合,排序集和散列等等。这使得redis很容易被用来解决各种问题,因为我们知道哪些问题可以更好使用地哪些数据类型来处理解决。
3,操作具有原子性 – 所有redis操作都是原子操作,这确保如果两个客户端并发访问,Redis服务器能接收更新的值。
4,多实用工具 – redis是一个多实用工具,可用于多种用例,如:缓存,消息队列(Redis本地支持发布/订阅),应用程序中的任何短期数据,例如,web应用程序中的会话,网页命中计数等。
Continue reading »

3月 312017
 

placeholder是h5中新增的一个属性。比如input,textarea。但在低版本的浏览器中,不支持placeholder属性。还有可能存在样式的问题(placeholder时候的颜色和它所属的对象颜色一样)。这里就总结一下placeholder的兼容性问题的处理方法。

对于显示对象,对于同一个显示对象在不同地方的样子。对于是否支持,支持到什么程度。最直接的方式是我们是通过比较,通过眼睛来看出来的。需要在多环境(各种浏览器以及版本),多次数的测试下比较看出来的。然后总结出规律。

对于placeholder,有以下几点:
1,焦点进入。清除placeholder效果(就是placeholder提示语去掉)。
2,焦点出去。如果输入框中有其他文字则保持。如果输入框中没有文字,则出现placeholder提示语,并且颜色为placeholder该有的颜色。
以上两点输入框文本的颜色以及placeholder的颜色都各自有切换。
Continue reading »

3月 212017
 

通常,flash是被嵌入到网页中。而网页如何嵌入到flash中呢。flash没有对应处理显示web页面的api(air有),所以只是表象:网页和swf是一体的,两者相互融洽,看得似好。利用iframe,通过层级关系,将网页和flash的宽高,坐标对应好就可以了。
这个时候,还会出现一个问题。如果flash的坐标改变了,iframe的相对坐标也应改变。为了处理好这种因变化而变化的关系,特意抽象了一个类,用来实现这种现象和变化。注释,原理都写在类中了。看了就会明白吧。

先看个demo:
http://www.vinixiu.com/demo/as3/swfiframe.html

再贴类:
Continue reading »

网站地图