狐妖小红娘
爱神巧克力
女娲成长日记
镇魂街
少年锦衣卫
一人之下
继续阅读国产优秀动画推荐!
1.安装vsftp
#yum install vsftpd -y
2.添加ftp帐号和目录
#useradd -d /var/www/html/isilent -s /sbin/nologin isilent
3.修改用户密码
#passwd isilent
4.配置vsftp
#vi /etc/vsftpd/vsftpd.conf 将配置文件中”anonymous_enable=YES“改为“anonymous_enable=NO” 取消如下配置前的注释符号: chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list
5.限制用户目录
#touch /etc/vsftpd/chroot_list 把用户名添加到这个文件中,注意,每个用户占一行
6.启动vsftp服务
#service vsftpd start
方向一旦跑偏,造成的影响是非常大的。
1、请求地址问题
问题描述:移动接口的请求地址是IP地址,需要在header中设置host参数。测试过程中一直遇到400错误而不知道原因,于是决定在PC上面使用fidder进行抓包查看。抓到的包一直有问题,host地址始终是ip地址而不是设置好的域名。
问题原因:fidder抓手机包采用的是代理方式。抓包后对header中的host信息进行了改动。更深层次的原因是fidder采用了PC端的DNS解析。
问题解决:使用fidder抓包时,PC上面修改hosts文件,手机端请求地址改为域名方式。
2、Base64编码问题
问题描述:使用fidder抓包后发现,header信息中有一个参数不正确。移动方提示参数未设置。
问题原因:程序中使用了android.util.Base64进行Base64加密。该包进行加密的时候默认进行了自动换行操作。
问题解决:使用android.util.Base64包进行加密的时候,第二个参数需要改为Base64.NO_WRAP。
一、双向消息加密
RSA,非对称加密算法。
DES,AES,对称加密算法。
用于服务端和客户端通讯。
客户端向服务端发送数据,采用RSA算法,使用公钥进行加密。服务端使用私钥进行解密。
服务端向客户端发送数据,采用DES或AES算法进行加密。客户端进行解密。
二、用户登录验证
谷歌验证 (Google Authenticator)
用于用户登录二次验证。
一、通过php中的system命令来操作tinyproxy
system("service tinyproxy restart");
二、修改apache用户为tinyproxy
vim /etc/httpd/conf/httpd.conf
三、修改subsys文件夹的权限
chmod 777 /var/lock/subsys
四、重启apache服务器
service httpd restart
备注:
1.关于tinyproxy的使用,可以参考:CENTOS 下安装配置 TinyProxy
2.关于centos下php运行环境的搭建,可以参考:在CentOS上搭建PHP服务器环境
TinyProxy是个非常便利,很容易架设的HTTP、HTTPS代理。
1.安装TinyProxy
rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm yum update yum install tinyproxy
2.配置TinyProxy
vim /etc/tinyproxy/tinyproxy.conf
Port 8888 //预设是8888 Port,你可以更改成你自己的Port
Allow 127.0.0.1 //将127.0.0.1改成你自己的IP
//例如你的IP 是1.2.3.4,你改成Allow 1.2.3.4,那只有你才可以连上这个Proxy
//若你想任何IP都可以连到Proxy在Allow前面打#注释
3.启动TinyProxy
service tinyproxy start
<?php
$url = 'http://www.baidu.com/';
// GET请求
$html = file_get_contents($url);
// POST请求
$post_data = array(
'username' => 'test',
'password' =>' test'
);
$html = send_post('http://www.baidu.com', $post_data);
echo $html;
继续阅读PHP发送GET、POST请求
public class VideoUtil {
/**
* 根据电影的m3u8_url解析出ts_url即xxx.ts形式url为元素的集合
*
* @param m3u8_url m3u8文件地址
* @return 返回ts_url集合
*/
public static ArrayList m3u8Parser(String m3u8_url) {
try {
ArrayList list_ts = new ArrayList();
URL url = new URL(m3u8_url);
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
InputStream in = urlConn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line = "";
while ((line = reader.readLine()) != null) {
if (line.startsWith("#")) {
//这里是Metadata信息
} else if (line.length() > 0) {
//这里是一个指向的视频流路径 ,可能是绝对地址,也可能是相对地址
if (line.startsWith("http")) {
//如果以http开头,一定是绝对地址了
list_ts.add(line);
} else {
//不以http开头,是相对地址,需要进行拼接。
String m3u8_pre = m3u8_url.substring(0, m3u8_url.lastIndexOf("/") + 1);
list_ts.add(m3u8_pre + line);
}
}
}
in.close();
return list_ts;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
1、设置自定义背景,设置on、off文案都为空
<ToggleButton
android:id="@+id/lockBtn"
android:background="@drawable/lock_me"
android:textOn=""
android:textOff=""/>
2、自定义背景文件
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true"
android:drawable="@drawable/lock_me_on" /> <!-- pressed -->
<item android:drawable="@drawable/lock_me_off" /> <!-- default/unchecked -->
</selector>
3、按钮的监听
mLockBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mLockBtn.isChecked()) {
//锁定
mLockFlag = true;
mSeekBar.setEnabled(false);
mTopView.setVisibility(View.GONE);
mBottomView.setVisibility(View.GONE);
} else {
//取消锁定
mLockFlag = false;
mSeekBar.setEnabled(true);
mTopView.setVisibility(View.VISIBLE);
mBottomView.setVisibility(View.VISIBLE);
}
}
});