作者:AngryFox 分类: Uncategorized September 17th, 2016 暂无评论

操作系统 :Centos※,Ubuntu,Redhat※,suse,Freebsd
网站服务 :nginx※,apache※,tomcat※,lighttpd,php※,resin※
数据库 :MySQL※,Mysql-proxy,MariaDB,PostgreSQL
DB中间件:MyCat,amoeba,MySQL-proxy
代理相关:lvs,keepalived,haproxy,nginx,apache,heartbeat(此行都是※)
网站缓存:squid※,nginx※,varnish

NOSQL库:memcached※,memcachedb,TokyoTyrant※,MongoDB※,Cassandra※,redis※,CouchDB
存储相关:Nfs※,Moosefs(mfs)※,Hadoop※,glusterfs※,lustre,FastDFS
版本管理:svn※,git※
监控报警:nagios※,cacti※,zabbix※,munin,hyperic,mrtg,graphite
域名解析:bind※,powerdns,dnsmasq※
同步软件:rsync※,inotify※,sersync※,drbd※,csync2,union,lsyncd,scp※
批量管理:ssh+rsync+sersync※,Saltstack※,expect※,puppet※,ansible,cfengine
虚拟化 :kvm※,xen※
云计算 :openstack※,docker,cloudstack
内网软件:iptables※,zebra※,iftraf,ntop※,tc※,iftop
邮件软件:qmail,posfix※,sendmail
远程拨号:openvpn※,pptp,openswan※,ipip※
统一认证:openldap(可结合微软活动目录)※
队列工具:ActiveMQ,RabbitMQ※,Metaq,MemcacheQ,Zeromq
打包发布:mvn※,ants※,jenkins※,svn
测试软件:ab,smokeping,siege,JMeter,Webbench,LoadRunner,http_load(都是※)
日志相关:syslog,rsyslog,Awstats,flume logstash scribe kafka,storm,ELK(Elasticsearch+Logstash+Kibana)
DB代理:mysql-proxy,amoeba(更多还是程序实现读写分离)
搜索软件:Sphinx,Xapian(大公司会自己开发类似百度的小规模内部搜索引擎)

作者:AngryFox 分类: Uncategorized September 16th, 2016 暂无评论
mpeg4ip.h:126: error: new declaration ‘char* strcasestr(const char*, const char*)’

解决方法:

从123行开始修改此文件mpeg4ip.h,到129行结束。
修改前:
#ifdef __cplusplus
extern "C" {
#endif
char *strcasestr(const char *haystack, const char *needle);
#ifdef __cplusplus
}
#endif

修改后:
#ifdef __cplusplus
extern "C++" {
#endif
const char *strcasestr(const char *haystack, const char *needle);
#ifdef __cplusplus
}
#endif
作者:AngryFox 分类: Uncategorized September 12th, 2016 暂无评论

HLS是苹果推出的一项技术,主要是能够利用http服务器,以http的方式传输音视频文件,由于音视频文件都分割的足够小,所以下载也足够快的情况下,可以认为就相当于实时直播,相对于RTSP/RTMP这种实时的音视频传输来讲,TA不是最实时的。

直播的整个流程大概是这样:
采集视频源和音频源
对视频源H264编码,对音频源AAC编码
分割为TS文件
组装M3U8文件
Http传输以及部署到CDN
M3U8其实是一个索引文件,就像一个TXT一样,后缀名叫M3U,只不过是以UTF-8来编码的,所以命名为M3U8。

TA当中每一段描述了一段TS,TS是分割的十分小的已经编码好的音视频文件,可以直接播放,M3U8就描述了,比如一共10个TS文件,每段多长时间,地址是什么类似的信息。
TS文件可以无缝衔接,而MP4之类的文件很可能产生衔接过程闪动、黑屏等等原因。
HLS方式的主要优点就是利用了标准的Http技术,复用了当前标准的代理服务器和CDN这些成熟的技术,使得直播部署就像简单的下载服务器的部署一样

第一:Free Schema意味着重复Schema。在MongoDB数据存储的时候,不但要存储数据本身,Schema(字段key)本身也要重复的存储(例如:{“name”:”zhuanzhuan”, “infoid”:1,“infocontent”:”这个是转转商品”}),必然会造成存储空间的增大。
第二:Free Schema意味着All Schema,任何一个需要调用MongoDB数据存储的地方都需要记录数据存储的Schema,这样才能较好的解析和处理,必然会造成业务应用方的复杂度。

业务热点数据和索引的总量要能全部放入内存中,即:Memory > Index + Hot Data
所有业务都做到“无状态”和“异步化”
iOS 10 增加了新的安全设定。 如果要访问相机 相册 麦克风需要在 info.plist 内增加条目

根据控制台的提示,我们需要在plist文件添加相应的字段
相机权限
添加key字段NSCameraUsageDescription,string类型,value字段是给用户的提示文字,例如“我们需要使用您的相机“
通信录
NSContactsUsageDescription
麦克风
NSMicrophoneUsageDescription
相册
NSPhotoLibraryUsageDescription

作者:AngryFox 分类: Uncategorized August 29th, 2016 暂无评论

centos下载地址

http://mirrors.aliyun.com/centos/7/isos/x86_64/

vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
/etc/sysconfig/network-scripts/ifcfg-eth0  

HWADDR="00:15:5D:07:F1:02"
TYPE="Ethernet"
BOOTPROTO="static" #dhcp改为static 
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
NAME="eth0"
UUID="bb3a302d-dc46-461a-881e-d46cafd0eb71"
ONBOOT="yes" #开机启用本配置
IPADDR=192.168.7.106 #静态IP
GATEWAY=192.168.7.1 #默认网关
NETMASK=255.255.255.0 #子网掩码
DNS1=192.168.7.1 #DNS 配置

centos7执行ifconfig Command not found 未找到命令错误问题的解决办法
yum upgrade
yum install net-tools

centos7的命令ifconfig 已经替换为ip addr
在虚拟机中以最小化方式安装centos7,后无法上网,因为centos7默认网卡未激活。
而且在sbin目录中没有ifconfig文件,这是因为centos7已经不使用 ifconfig命令了,已经用ip命令代

替;
并且网卡名称也不是eth0了,而是改成eno16777736了。
解决ifconfig不可用:ip addr 即查看分配网卡情况。
激活网卡:在文件 /etc/sysconfig/network-scripts/ifcfg-enp0s3 中
进入编辑模式,将 ONBOOT=no 改为 ONBOOT=yes,就OK
保存后重启网卡: service network restart

1,服务器链接不上
ssh: connect to host XXXXX port 22: Connection refused
原因,centos7 修改了链接的端口变成 2200了。
#Port 22
Port 2200
修改回去,或使用2200链接。
修改:vi /etc/ssh/sshd_config

2,centos7默认安装了防火墙不是iptables了
因为是本地测试,所以直接关闭防火墙,禁用开机启动。
systemctl stop firewalld
systemctl disable firewalld

3,关闭selinux
vi /etc/selinux/config
修改以下内容
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加

作者:AngryFox 分类: Uncategorized August 16th, 2016 暂无评论

The licensing subsystem has failed catastrophically. You must reinstall or call customer support. 因为刚刚安装了windows 7的系统,本来想使用photoshop CS4的,可我原来用的那个绿化版有问题,无法绿化,估计是win 7兼容问题,然后我用绿化版的 cs3,出来了上面的问题,想了半天,终于在网上找到解决办法

其实解决办法就跟出现对话框“CS3 此产品的许可已停止工作。你必须…” 一样的。
只要启动2个服务:
Bonjour Service c:\program files\bonjour\mdnsresponder.exe
FLEXnet Licensing Service c:\program files\common files\macrovision shared\flexnet publisher\fnplicensingservice.exe
将其改成自动,重新启动机器即。

启动服务的方法:控制面板—性能和维护—管理工具—服务(如果是经典视图下只要找到控制面板—管理工具—服务),找到相关服务,右键启动即可
ps:结果测试,只启动“FLEXnet Licensing Service”一个服务即可恢复正常使用,也不必重新启动机器。

EventQL 是一个分布式面向列的数据库,用于处理大规模的事件收集和分析。使用超级快的 SQL 和 JavaScript 查询。

特性:

表格数据自动根据主键分区存放,可以分布存放到多个主机
支持 INSERT, UPDATE 和 DELETE 操作
支持扁平和复杂嵌套表 (OBJECT/ARRAY 列类型). 可使用 JSON 来插入记录或者获取记录
采用面向列的方式存储行数据,查询只需读取所引用的列数据
(几乎) 完全支持 SQL 2009 (包括 JOINs!)
查询自动并行处理,并可以并行到多台机器处理
每个表支持几百个 TB 数据,每个集群可以几千个表
无共享设计,一个 EventQL 集群包括多个优先级相同的服务器节点
完全透明的查询缓存,用于未更改数据上的相同查询多次执行
采用 C++11 开发,提供商业支持

Postgres 的问题:
写效率低下
数据复制效率低下
表损坏的问题
对复制的 MVCC 支持比较差
更新到新版本很麻烦

微服务架构
服务的隔离与互通
伸缩与漂移
升级与回退
熔断与降级
服务注册与发现

作者:AngryFox 分类: Uncategorized August 1st, 2016 暂无评论

内存的管理
C语言中bug和内容有关
分布式、高并发的处理
cpu资源的调度process thread event
数据的封装和互斥访问
并行运算逻辑的同步

10万对象1ms扫描时间
1个tcp连接,约10个对象
实时需求
请求的处理延迟 平均1ms以内 最大10ms

100万连接 400ms gc延迟
mark and sweep
常规GC优化
小对象合并成大对象
利用array来合并一组对象(内部对象计数为1)
把数据放在C代码里面,通过cgo做接口使用
对象复用(对象池)
深度优化系统结构和算法

减少对象数的困境
常态下需要保持几十万的连接 几十个ms
修改golang的网络库,重写基本数据结构(不可取)

不使用让go管理内存
轮转GC方案
基本思路
关闭GC
多进程轮流工作

本质是过个进程监听同一个端口
服务态
调用accept,获取新的请求
等待态
不调用accept 已经连接的client,可以继续收发
等待这些已有的连接关闭
垃圾收集态
主动调用GC

补充分析
短链接
长连接
平均连接上的请求是3个 90%(20s以内) 98%(50s之内)
大文件的请求 对gc造成的延迟(几十ms)不敏感

bfe程序结构
core+众多模块
分流
cache
dict
问题
变更频率
启停速度
功能单一,各自扩展
同步异步

算法名称 时间复杂度 实现原理
GN
LPA
CNM
K-派系
例如人才雷达、纳人网络、望才招聘等。而美国市场里成熟的标品则有:RumaRocket、ZipRecruiter、Tyba等。

影响力模型

拓扑特征(关系类型(亲人 同事 同学)、社交圈子数、微信群数、)
行为特征 转发行为 转发影响

作者:AngryFox 分类: Uncategorized July 30th, 2016 暂无评论

常用的跨域方法有这样一些:
1,使用iFrame访问另一个域。 然后再从另一个页面读取iFrame的内容。jquery等有一些封装。
据说Firefox等可能不支持读取另一个iFrame的内容。
2,jsonp。需要服务器支持。使用script src动态得到一段java代码。是回调页面上的js函数,参数是一个json对象。
jquery也有封装。
3,设置http头,Access-Control-Allow-Origin:*
但据说IE有一些版本不识别这个http头。
4,服务器代理。如,服务器写一个url的处理action。其参数是一个url。这个服务器会用参数拼凑一个url,用httpclient库去执行url,然后把读取的内容再输出到http客户端。
还是以java为主吧,知道jvm虚拟机工作原理吗,读过spring内部源码吗,精通多线程,nio并发吗,还有各种分表分库,分布式技术以及高并发网站设计思路。

zval的优化从PHP5的24bytes优化到PHP7的16bytes;
hashtable优化从链式优化为开放式,hashtable从72 bytes降到56 bytes ,bucket size从72 bytes降到32bytes,减少了cpu miss;
内存管理模式也借鉴了jemalloc的模式管理内存,并且提升了cpu cache;
添加了强类型支持;
编译环节增加了ast。

HHVM和PHP7对比:

HHVM的数据结构TypeValue等价PHP的zval,HHVM的TypeValue也是16bytes,但是HHVM在12年的时候数据结构就已经做过类似PHP7的优化了,有兴趣大家可以看一下HHVM的TypeValue数据结构;
hashtable HHVM 同样是开放式的,数据结构也和PHP 7是类似的;
内存管理模式最早HHVM用的是tcmalloc,后面用的是jemalloc;
HHVM的hack语法是强类型;
HHVM在hiphop时代就支持了ast;
HHVM支持jit ,PHP7虽然也有jit支持但是目前不完善;
async语法支持(PHP可用swoole等);
opcache持久化,PHP无;
HHVM多线程模型,PHP7多进程模型,HHVM支持http server。

baidu HHVM
旁路迁移,初期小流量上线时HHVM 做渲染,PHP引擎执行其他部分,通过shmop通信(共享内存),HHVM出现错误后,仍然回到PHP处理;
webserver通过捕捉错误码跳转容错,如果HHVM挂了后,然后将流量切到PHP上执行,但是如果一旦全部挂则会出现雪崩,目前来讲都是双HHVM热备;
HHVM挂掉后(crash、内存oom等)都会通过保活程序拉起;
对于稳定性问题(如Crash、内存泄露、Diff、死锁、CPU异常等)会及时跟进,第一时间处理解决问题。
hack、异步、协程、还有特定的项目优化

虚拟机和编译领域我会关注如Pypy、Hippy、JVM这些;云方面会关注Docker、Kubernetes这些;其他方面如:Nginx、spdy、缓存服务、NoSQL等;

淘宝用了7万台计算机,每台web服务器平均并发不到10个

系统特点
提供的服务多
依赖的数据源多样化,数据库、HTTP接口、JSF(公司内部RPC框架)接口等
系统以读为主
整体服务加起来体量大(访问量+数据量)
需要快速响应
服务之间相互影响性要小
基本原则
根据以上系统特点,我们实现该系统时遵循以下几个大的原则:
使用HTTP协议对外通信
使用短连接
数据异构
巧用缓存
流量控制
异步、并行
数据托底
防刷
降级
多域名

日志
日志规范与组件 服务器普通日志 服务器业务日志 埋点日志 app本地日志

数据支撑系统 数据总线(采集 计算 存储) 端日志服务 Schema管理 连接、清洗
数据应用系统 行为分析 业务BI 决策支持 排查与定位 监控与分析

secureCRT自动断开的解决方法
有 时候服务器端的 /etc/profile 或者 ~/.bash_profile 中设置了 TMOUT 选项,或者是 /etc/ssh/sshd_config 文件中设置了客户端连接时间的设置,很可能一段之间之后,SecureCRT就会被断开连接,所以SecureCRT又一个选项可以设置每隔多少秒自动发 送一个信息到服务器端,告诉服务器端客户端还在连接中。
服务器的超时时间要大于CRT设置反空闲时间,不然CRT还没反超时自动连接就被自动断开,那就没啥意义了
服务器配置:
/etc/profile 中的配置,增加一个参数TMOUT=6000 //100分钟,应该够用了
echo “TMOUT=6000 ” >>/etc/profile
source /etc/profile //立即生效

作者:AngryFox 分类: Uncategorized July 20th, 2016 暂无评论

ERROR 1296 (HY000): Got error 64 ‘Temp file write failure’ from InnoDB
原因是mysql的tmpdir分区的剩余空间大小没有message大。
mysql在alert table时需要的临时空间要比该表才行。
mysql> show variables like ‘tmpdir’;
mysql> set global tmpdir = ‘/Data/app/mysql5.6.25/mysqltmp’;
ERROR 1238 (HY000): Variable ‘tmpdir’ is a read only variable

mysql group_concat函数被截断的问题
MySQL的 group_concat 函数默认返回1024个字节长度,超过长度的会被截断。最近程序中就遇到这个问题了。
通过如下命令可以查看到当前mysql系统的参数:
mysql> show variables like “%concat%”;
2. 有两个方法可以设置group_concat_max_len的值
(1) 在 /etc/my.cnf 中的[mysqld]加上group_concat_max_len = 1024000,需要重启mysql才能生效
(2) 在命令行下输入:
SET GLOBAL group_concat_max_len=1024000;
或者 SET SESSION group_concat_max_len=1024000;
GLOBAL 是对全局生效的,而SESSION是对当前会话有效。需要有管理员权限才可以操作GLOBAL哦!!!
1024指的是字节哦

1.int字段的连接陷阱 当你用group_concat的时候请注意,连接起来的字段如果是int型,一定要转换成char再拼起来, 否则在你执行后(ExecuteScalar或者其它任何执行SQL返回结果的方法)返回的将不是一个逗号隔开的串, 而是byte[]。
select group_concat(ipaddress) from t_ip 返回逗号隔开的串
select group_concat(id) from t_ip 返回byte[]
select group_concat(CAST(id as char)) from t_dep 返回逗号隔开的串
select group_concat(Convert(id , char)) from t_dep 返回逗号隔开的串
附Cast,convert的用法:
CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USING transcoding_name)
CAST() 和CONVERT() 函数可用来获取一个类型的值,并产生另一个类型的值。 这个类型 可以是以下值其中的 一个: BINARY[(N)] CHAR[(N)] DATE DATETIME DECIMAL SIGNED [INTEGER] TIME UNSIGNED [INTEGER]
2.长度陷阱 用group_concat连接字段的时候是有长度限制的,并不是有多少连多少。但你可以设置一下。
使用group_concat_max_len系统变量,你可以设置允许的最大长度。
程序中进行这项操作的语法如下,其中 val 是一个无符号整数: SET [SESSION | GLOBAL] group_concat_max_len = val;
若已经设置了最大长度, 则结果被截至这个最大长度。 在SQLyog中执行 SET GLOBAL group_concat_max_len = 10 后,
重新打开SQLyog,设置就会生效。

作者:AngryFox 分类: Uncategorized July 9th, 2016 暂无评论

1.添加PRIMARY KEY(主键索引)
mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )

2.添加UNIQUE(唯一索引)
mysql>ALTER TABLE `table_name` ADD UNIQUE (`column`)

3.添加INDEX(普通索引)
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )

4.添加FULLTEXT(全文索引)
mysql>ALTER TABLE `table_name` ADD FULLTEXT ( `column`)

5.添加多列索引
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

主键索引、唯一索引、普通索引、全文索引、组合索引)的区别

Mysql索引概念:
说说Mysql索引,看到一个很少比如:索引就好比一本书的目录,它会让你更快的找到内容,显然目录(索引)并不是越多越好,假如这本书1000页,有500也是目录,它当然效率低,目录是要占纸张的,而索引是要占磁盘空间的。
Mysql索引主要有两种结构:B+树和hash.

hash:hsah索引在mysql比较少用,他以把数据的索引以hash形式组织起来,因此当查找某一条记录的时候,速度非常快.当时因为是hash结构,每个键只对应一个值,而且是散列的方式分布.所以他并不支持范围查找和排序等功能.
B+树:b+tree是mysql使用最频繁的一个索引数据结构,数据结构以平衡树的形式来组织,因为是树型结构,所以更适合用来处理排序,范围查找等功能.相对hash索引,B+树在查找单条记录的速度虽然比不上hash索引,但是因为更适合排序等操作,所以他更受用户的欢迎.毕竟不可能只对数据库进行单条记录的操作.
Mysql常见索引有:主键索引、唯一索引、普通索引、全文索引、组合索引

PRIMARY KEY(主键索引) ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) UNIQUE(唯一索引) ALTER TABLE `table_name` ADD UNIQUE (`column`)
INDEX(普通索引) ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) FULLTEXT(全文索引) ALTER TABLE `table_name` ADD FULLTEXT ( `column` )
组合索引 ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

Mysql各种索引区别:
普通索引:最基本的索引,没有任何限制
唯一索引:与”普通索引”类似,不同的就是:索引列的值必须唯一,但允许有空值。
主键索引:它 是一种特殊的唯一索引,不允许有空值。
全文索引:仅可用于 MyISAM 表,针对较大的数据,生成全文索引很耗时好空间。
组合索引:为了更多的提高mysql效率可建立组合索引,遵循”最左前缀“原则。

作者:AngryFox 分类: Uncategorized July 5th, 2016 暂无评论

关于在for循环里调用ajax时只能取到最后一个数据的bug的解决方法
首先,造成这中情况的原因在与ajax的异步请求机制,for循环的运行速度远大于ajax异步请求的速度,这就造成了ajax运行时,需要的在for循环里的参数已经运行到最后一个了,所以取到的都是最后一个参数数据。
解决方法:将ajax的请求封装成一个单独的方法,然后在for循环里调用该方法。

通常采用两种方式:

采用时效性高的MQ,由对方订阅消息并监听,有消息时自动触发事件
采用定时轮询扫描的方式,去检查消息表的数据。
主流的MQ产品都具有持久化消息的功能。如果消费者宕机或者消费失败,都可以执行重试机制的

APM applocation performance management
(SLA)

分布式计算引擎
数据引擎
海量画像
实时abtest
立体监控
开放通用