当前位置: 编程技术>移动开发
本页文章导读:
▪R2,新春佳节第一弹,还是s60 googlereader客户端 R2,新年第一弹,还是s60 googlereader客户端
之前发布了MyReader,纯粹练手,现在加强版的R2来了,依然是s60的客户端。项目发布地址:http://code.google.com/p/r2-release/源码地址:https://github.com/jamies.........
▪ 魅族M9自定义回电/短信铃声 魅族M9自定义来电/短信铃声
第一,将我们需要的铃声从互联网下载下来(外面在这里假定下载好的铃声是“ChinaMeizu.Com_Ring.mp3”)
第二,将M9与电脑连接,然后在M9的文件夹里面找到名为“Ringto.........
▪ java高速生成大文件的MD5算法 java快速生成大文件的MD5算法
import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.nio.MappedByteBuffer;import java.nio.channels.FileChannel;import java.security.MessageDigest;import java.security.NoSuc.........
[1]R2,新春佳节第一弹,还是s60 googlereader客户端
来源: 互联网 发布时间: 2014-02-18
R2,新年第一弹,还是s60 googlereader客户端
之前发布了MyReader,纯粹练手,现在加强版的R2来了,依然是s60的客户端。
项目发布地址:http://code.google.com/p/r2-release/
源码地址:https://github.com/jamiesun/R2
R2这个名字源自星战前传中那个超可爱的机器人,一个能力超强的家伙,是个好伙伴。
如果用s60 v3 fp1以上机型的(如N95,E71,E7X等)可以试试。
最好是带wifi功能,因为googlereader里的文章经常含有大量图片,且feed信息量很大,用gprs怕很耗流量,而且慢,3G倒是可以的。
在 s60 v3 fp1上做qt应用开发还不是那么溜,CPU,内存资源有限,以及大文件读写,sqllite数据库的使用都比较纠结.持久缓存的功能也暂时没有实现,不过我的经验也有限,我觉得可以解决的很好的.需要进一步学习。
客户端的持久存储比较重要,尽量避免反复请求相同资源,这也是我后续版本最要解决的,目前是暂时实现简单的会话级别的缓存.应用中用到了webkit来做页面显示,不过限制了缓存能力,因为不限制的话,它就吃完内存然后崩溃掉。
这只是一个beta版本,做这个东西也是主要从自己个人需求出发的,为了自己用的爽,我会不断改进的,
更多截图在这里 http://www.flickr.com/photos/8328812/tags/mobile/
或者这里 http://www.douban.com/photos/album/20747158/
之前发布了MyReader,纯粹练手,现在加强版的R2来了,依然是s60的客户端。
项目发布地址:http://code.google.com/p/r2-release/
源码地址:https://github.com/jamiesun/R2
R2这个名字源自星战前传中那个超可爱的机器人,一个能力超强的家伙,是个好伙伴。
如果用s60 v3 fp1以上机型的(如N95,E71,E7X等)可以试试。
最好是带wifi功能,因为googlereader里的文章经常含有大量图片,且feed信息量很大,用gprs怕很耗流量,而且慢,3G倒是可以的。
在 s60 v3 fp1上做qt应用开发还不是那么溜,CPU,内存资源有限,以及大文件读写,sqllite数据库的使用都比较纠结.持久缓存的功能也暂时没有实现,不过我的经验也有限,我觉得可以解决的很好的.需要进一步学习。
客户端的持久存储比较重要,尽量避免反复请求相同资源,这也是我后续版本最要解决的,目前是暂时实现简单的会话级别的缓存.应用中用到了webkit来做页面显示,不过限制了缓存能力,因为不限制的话,它就吃完内存然后崩溃掉。
这只是一个beta版本,做这个东西也是主要从自己个人需求出发的,为了自己用的爽,我会不断改进的,
更多截图在这里 http://www.flickr.com/photos/8328812/tags/mobile/
或者这里 http://www.douban.com/photos/album/20747158/
[2] 魅族M9自定义回电/短信铃声
来源: 互联网 发布时间: 2014-02-18
魅族M9自定义来电/短信铃声
第一,将我们需要的铃声从互联网下载下来(外面在这里假定下载好的铃声是“ChinaMeizu.Com_Ring.mp3”)
第二,将M9与电脑连接,然后在M9的文件夹里面找到名为“Ringtones”的文件夹,并打开它。
第三,将铃声复制进这个文件夹
然后安全断开M9与电脑的连接,打开M9的主菜单
进入设置
然后选择手机铃声
滑动到最下面,就会看到我们刚才复制到M9里面的铃声了。
再点击一下铃声名字,前面出现绿色勾,就可以了。
自定义短信铃声也可以按照这个方法操作的,魅友们都明白了吗?
[3] java高速生成大文件的MD5算法
来源: 互联网 发布时间: 2014-02-18
java快速生成大文件的MD5算法
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Util {
/**
* 默认的密码字符串组合,apache校验下载的文件的正确性用的就是默认的这个组合
*/
protected static char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9','a', 'b', 'c', 'd', 'e', 'f' };
protected static MessageDigest messagedigest = null;
static{
try{
messagedigest = MessageDigest.getInstance("MD5");
}catch(NoSuchAlgorithmException nsaex){
System.err.println(MD5Util.class.getName()+"初始化失败,MessageDigest不支持MD5Util。");
nsaex.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
long begin = System.currentTimeMillis();
File big = new File("E:/游戏/冲绳那霸.rar");
String md5=getFileMD5String(big);
long end = System.currentTimeMillis();
System.out.println("md5:"+md5+" time:"+((end-begin)/1000)+"s");
}
/**
* 适用于上G大的文件
* @param file
* @return
* @throws IOException
*/
public static String getFileMD5String(File file) throws IOException {
FileInputStream in = new FileInputStream(file);
FileChannel ch = in.getChannel();
MappedByteBuffer byteBuffer = ch.map(FileChannel.MapMode.READ_ONLY, 0, file.length());
messagedigest.update(byteBuffer);
return bufferToHex(messagedigest.digest());
}
public static String getMD5String(String s) {
return getMD5String(s.getBytes());
}
public static String getMD5String(byte[] bytes) {
messagedigest.update(bytes);
return bufferToHex(messagedigest.digest());
}
private static String bufferToHex(byte bytes[]) {
return bufferToHex(bytes, 0, bytes.length);
}
private static String bufferToHex(byte bytes[], int m, int n) {
StringBuffer stringbuffer = new StringBuffer(2 * n);
int k = m + n;
for (int l = m; l < k; l++) {
appendHexPair(bytes[l], stringbuffer);
}
return stringbuffer.toString();
}
private static void appendHexPair(byte bt, StringBuffer stringbuffer) {
char c0 = hexDigits[(bt & 0xf0) >> 4];
char c1 = hexDigits[bt & 0xf];
stringbuffer.append(c0);
stringbuffer.append(c1);
}
public static boolean checkPassword(String password, String md5PwdStr) {
String s = getMD5String(password);
return s.equals(md5PwdStr);
}
}
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Util {
/**
* 默认的密码字符串组合,apache校验下载的文件的正确性用的就是默认的这个组合
*/
protected static char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9','a', 'b', 'c', 'd', 'e', 'f' };
protected static MessageDigest messagedigest = null;
static{
try{
messagedigest = MessageDigest.getInstance("MD5");
}catch(NoSuchAlgorithmException nsaex){
System.err.println(MD5Util.class.getName()+"初始化失败,MessageDigest不支持MD5Util。");
nsaex.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
long begin = System.currentTimeMillis();
File big = new File("E:/游戏/冲绳那霸.rar");
String md5=getFileMD5String(big);
long end = System.currentTimeMillis();
System.out.println("md5:"+md5+" time:"+((end-begin)/1000)+"s");
}
/**
* 适用于上G大的文件
* @param file
* @return
* @throws IOException
*/
public static String getFileMD5String(File file) throws IOException {
FileInputStream in = new FileInputStream(file);
FileChannel ch = in.getChannel();
MappedByteBuffer byteBuffer = ch.map(FileChannel.MapMode.READ_ONLY, 0, file.length());
messagedigest.update(byteBuffer);
return bufferToHex(messagedigest.digest());
}
public static String getMD5String(String s) {
return getMD5String(s.getBytes());
}
public static String getMD5String(byte[] bytes) {
messagedigest.update(bytes);
return bufferToHex(messagedigest.digest());
}
private static String bufferToHex(byte bytes[]) {
return bufferToHex(bytes, 0, bytes.length);
}
private static String bufferToHex(byte bytes[], int m, int n) {
StringBuffer stringbuffer = new StringBuffer(2 * n);
int k = m + n;
for (int l = m; l < k; l++) {
appendHexPair(bytes[l], stringbuffer);
}
return stringbuffer.toString();
}
private static void appendHexPair(byte bt, StringBuffer stringbuffer) {
char c0 = hexDigits[(bt & 0xf0) >> 4];
char c1 = hexDigits[bt & 0xf];
stringbuffer.append(c0);
stringbuffer.append(c1);
}
public static boolean checkPassword(String password, String md5PwdStr) {
String s = getMD5String(password);
return s.equals(md5PwdStr);
}
}
最新技术文章: