环境,测试demo,远程hbase,本地client
javaclient调用hbase的时候提示xxx.ip not in list神马的,原因是client会去拿server的主机名和hosts当地址,可能我配置也有问题.
这种情况改本地hosts都没用
解决办法是改server的hosts
主机名对应ip 必须是client可访问的公网地址.
分类:未分类
swagger+spring+junit冲突
swagger +spring+junit冲突
junit的测试跑不起来,主要原因是引用的注解造成的:
@Configuration
@EnableWebMvc
@EnableSwagger2
@ComponentScan(basePackages ={"xx"})
public class SwaggerConfig {
...
}
我的解决办法是把swaper配置文件分离出来,junit不调用.
原先配置文件只有默认的两个:
/WEB-INF/spring-servlet.xml
/WEB-INF/applicationContext.xml
修改后增加一个
/WEB-INF/spring-swagger.xml
并改成在web.xml导入配置文件
<context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/spring-servlet.xml /WEB-INF/applicationContext.xml /WEB-INF/spring-swagger.xml </param-value> </context-param>
tomcat conf/Catalina 配置虚拟目录
如:
需要注意的点还有文件名需要跟path一致, 如上需要配置文件名是ot.xml, 否则会404错误
编译安装php56 线程安全要加装pthread
wget http://cn2.php.net/get/php-5.6.22.tar.gz/from/this/mirror
tar zxvf php-5.6.22.tar.gz
cd php-5.6.22
./configure --prefix=/usr/local/php5622 --enable-maintainer-zts --with-config-file-path=/usr/local/php5622/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-opcache --enable-mbstring --enable-soap --enable-zip --enable-bcmath--with-openssl --with-zlib --with-curl --with-gd --with-zlib-dir=/usr/lib--with-png-dir=/usr/lib --with-jpeg-dir=/usr/lib --with-mhash--with-apxs2=/usr/local/apache/bin/apxs
make
make install
添加软连接
添加 php-fpm用户
adduser php-fpm
groupadd www
php-fpm
复制默认配置文件
cp /usr/local/php5622/etc/php-fpm.conf.default /usr/local/php5622/etc/php-fpm.conf
cp /usr/local/src/php-5.6.22/php.ini-production /usr/local/php5622/etc/php.ini
增加启动脚本
http://coder.weisiliang.com/co_index.action?coid=38
增加memcache支持
http://pecl.php.net/package/memcache
wget http://pecl.php.net/get/memcache-3.0.8.tgz
tar zxvf memcache-3.0.8.tgz
cd memcache-3.0.8
phpize56
./configure --with-php-config=/usr/local/php5622/bin/php-config
make
make install
libmemcached
wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
tar zxvf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
./configure --prefix=/usr/local/libmemcached
make
make install
memcached php ext
wget http://pecl.php.net/get/memcached-2.2.0.tgz
tar zxvf memcached-2.2.0.tgz
cd memcached-2.2.0
phpize56
./configure --with-php-config=/usr/local/php5622/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached --disable-memcached-sasl
make
make install
pthread 安装
centos php5.6是yum安装的
pthread2.x支持php5
3.x支持php7
下载:
wget http://pecl.php.net/get/pthreads-2.0.10.tgz
tar zxvf pthreads-2.0.10.tgz
cd pthreads-2.0.10
安装phpize
yum install php56-php-devel
默认没加关联,需要增加快捷方式
ln -s /opt/remi/php56/root/usr/bin/phpize /usr/bin/phpize
ln -s /opt/remi/php56/root/usr/bin/php-config /usr/bin/php-config
phpize
编译
./configure --with-php-config=/usr/bin/php-config
提示:
checking checking for ZTS… configure: error: pthreads requires ZTS, please re-compile PHP with ZTS enabled
我擦,我找的3方源php56是非线程安全的….擦擦擦
重新编译安装后
#编译安装php关联
ln -s /usr/local/php5622/bin/phpize /usr/bin/phpize56
./configure --with-php-config=/usr/local/php5622/bin/php-config
make
make install
php.ini中增加
extension=pthreads.so
php56 -i |grep pthreads -A 5
成功打印pthread 版本
视频网站真实下载地址解析
不贴具体代码了,解析了youku,bilibili,sohu,iqiyi每家的策略都不一样,还都挺奇妙的。
有点解密的感觉,不写代码,只指明方向
首先需要chrome和firefox。chrome看请求比较方便,也方便搜索,而firebug比较适合javascript调试,我用chrome调js不习惯。
我需要下载的是mp4地址,需要把user-agent修改成android
1,解析youku,:
网站通常会通过一个jsonp来返回下载真实地址,问题是如何获得正确的参数
分析后发现youku返回的jsonp中除了真实mp4啥都有,就是下载地址
分析发现,js中一个函数jsonbuildfun,参数设置为返回的jsonp后就能生成真是地址对象了。
我是把页面中这两个js合并改写了下,可以用nodejs直接调用,
还有个坑,生成好的下载地址很有可能用不了!!
解决方法就是需要细致的完全模拟浏览器:
发现请求jsonp的时候需要设置cookie
Cookie:’ykss=; __ysuid=;’
一开始还研究半天这俩参数怎么生成, 原来不需要, 随便写,只要有就行。
妥妥的。
难度4分吧,主要是需要运行页面js
2,解析bilibili
这个最容易,分析请求资源发现
http://www.bilibili.com/m/html5?aid=xxx&page=xx
ua都不用改
难度1分,基本就是白送的
3,sohu
不得不说sohu隐藏的最深,也最鸡贼。
通过jsonp拿到下载地址后,发现除非通过原来网站访问,否则获得的下载地址失效。
分析js画了很长时间,一个一个的过滤,开始是以为生成参数不对,或者消息头有问题。
结果发现有个pv.png,我擦,这真心不是个统计程序,
jsonp中返回消息头有个setcookie
然后在pv.png请求头中,设置这个cookie,原来的下载地址就被激活了。
难度4分吧,不需要改什么js,就是这个机制心急很重。
4,iqiyi
iqiyi是最牛的,
获取jsonp的地址有个src和sc参数
生成算法是扰码加密并且写在页面中的,搜索的话根本搜不到。
而且这个算法大量使用了浏览器参数当变量生成的条件。扰码后反正我是没看明白
如果使用nodejs运行改写以后虽然格式合法,能拿到mp4地址但是不能播。
最后只能使用htmlutil,java实现。
htmlutil也很适合解youku
加载html后就能直接通过命令获得js对象。所有数据基本就是白给了。
难度给5.5分,除非能分析扰码过的好几千行代码,否则改js算法基本没戏。
只能变通下换个工具
thinkphp 3.1 select 内存溢出
网站项目想做个队列, 能一直运行. 数据库操作已经写好了想直接套用think php的直接用.
然后发现一个坑, 只要执行model的find 内存就尼玛一直长.
然后追查:
是运行到解析join的时候出现的
在ThinkPHP/Lib/Core/Db.class.php 589行
protected function parseJoin($join) {
$joinStr = ”;
if(!empty($join)) {
if(is_array($join)) {
foreach ($join as $key=>$_join){
if(false !== stripos($_join,’JOIN’))
$joinStr .= ‘ ‘.$_join;
else
$joinStr .= ‘ LEFT JOIN ‘ .$_join;
}
}else{
$joinStr .= ‘ LEFT JOIN ‘ .$join;
}
}
//将__TABLE_NAME__这样的字符串替换成正规的表名,并且带上前缀和后缀
$joinStr = preg_replace(“/__([A-Z_-]+)__/esU”,C(“DB_PREFIX”).”.strtolower(‘$1’)”,$joinStr);
return $joinStr;
}
主要这句:
$joinStr = preg_replace(“/__([A-Z_-]+)__/esU”,C(“DB_PREFIX”).”.strtolower(‘$1’)”,$joinStr);
$joinStr=”;的时候内存就一直长啊!!
因为项目很少用join,这个服务也用不到join,在方法顶部增加:
if(empty($join)){
return ”;
}
然后终于妥当了.
阿里云 mns消息服务,删除报没有找到消息
删除的时候报错消息不存在,
是因为默认receivedTimeout是30秒,过后消息又变成活跃消息了,这时候无法删除.
需要提前设置queue的visibletimeout值到合适的时间.
阿里云日志服务
地址都以杭州服为例
1.开通日志服务
2.下载: wget http://logtail-release.oss-cn-hangzhou-internal.aliyuncs.com/linux64/logtail.sh
3.chmod 755 logtail.sh
4.sh logtail.sh install cn_hangzhou
5.等会儿,就能去后台查了
yum centos6.5 安装 php7 php56
安装源,这个是 centos6的
yum install http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm 这个插件少memcache之类的木有
验证下:yum search php7 就会出来了
yum install -y php70
然后提示:
Error: php70w-common conflicts with php-common-5.3.3-46.el6_7.1.x86_64
之前有 –> Processing Conflict: php70w-common-7.0.3-1.w6.x86_64 conflicts php-common < 5.5.0
应该卸载原来的php5.3
yum remove php*
然后安装需要的库
yum list php7* 可以列出所有可用的
yum install php70-php.x86_64 php70-php-gd.x86_64 php70-php-mbstring.x86_64 php70-php-mysqlnd.x86_64 php70-php-pdo.x86_64 php70-php-pdo-dblib.x86_64 php70-php-pecl-imagick.x86_64 php70-php-pecl-imagick-devel.x86_64 php70-php-pecl-memcache.x86_64 php70-php-pecl-memcached.x86_64 php70-php-pecl-xdebug.x86_64 php70-php-devel.x86_64 php70-php-fpm.x86_64
——-
thinkphp3.1老程序不支持,
改php5.6
yum install php56-php.x86_64 php56-php-gd.x86_64 php56-php-mbstring.x86_64 php56-php-mysqlnd.x86_64 php56-php-pdo.x86_64 php56-php-pdo-dblib.x86_64 php56-php-pecl-imagick.x86_64 php56-php-pecl-imagick- devel.x86_64 php56-php-pecl-memcache.x86_64 php56-php-pecl-memcached.x86_64 php56-php-pecl-xdebug.x86_64 php56-php-devel.x86_64 php56-php-fpm.x86_64 php56-php-mysqlnd.x86_64 php56-php-5.6.19-1.el6.remi.x86_64 php56 php56-php-mbstring.x86_64
这个一定要装 php56-php-5.6.19-1.el6.remi.x86_64 如果不装不会生成libphp.so apache下会无法使用,nginx到无所谓
php56-php-mbstring.x86_64 这个包oss会用到,否则aliyun会异常
修改上传尺寸
/opt/remi/php56/root/etc/php.ini
upload_max_filesize =
post_max_size =