我想创建一个URL缩短服务,您可以在其中将长URL写入输入字段,该服务将URL缩短为" http://www.example.org/abcdef".
而不是" abcdef"可以有任何其他六个字符包含的字符串a-z, A-Z and 0-9.这使得56到570亿个可能的字符串.
我的方法:
我有一个包含三列的数据库表:
然后我会将长URL插入表中.然后我会选择" id" 的自动增量值并构建它的哈希值.然后应该将此哈希插入为" short".但是我应该构建什么样的哈希?像MD5这样的散列算法会创建太长的字符串.我想,我不使用这些算法.自建算法也可以工作.
我的想法:
对于" http://www.google.de/"我得到自动增量ID 239472.然后我执行以下步骤:
short = '';
if divisible by 2, add "a"+the result to short
if divisible by 3, add "b"+the result to short
... until I have divisors for a-z and A-Z.
Run Code Online (Sandbox Code Playgroud)
这可以重复,直到数字不再可分.你认为这是一个好方法吗?你有更好的主意吗?
由于对该主题的持续兴趣,我发布了一个有效的GitHub解决方案,包括JavaScript,PHP,Python和Java的实现.如果你愿意,可以添加你的解
我正在从各种RSS源中读出大量文本并将它们插入到我的数据库中.
当然,在馈送中使用了几种不同的字符编码,例如UTF-8和ISO-8859-1.
不幸的是,有时文本的编码存在问题.例:
"Fußball"中的"ß"应该在我的数据库中看起来像这样:"Ÿ".如果是"Ÿ",则会正确显示.
有时,"Fußball"中的"ß"在我的数据库中看起来像这样:"ß".当然,它显示错误.
在其他情况下,"ß"保存为"ß" - 所以没有任何改变.然后它也显示错误.
我该怎么做才能避免案例2和3?
如何使所有内容编码相同,最好是UTF-8?我utf8_encode()什么时候必须使用,什么时候必须使用utf8_decode()(很清楚效果是什么,但什么时候必须使用这些功能?)什么时候我必须对输入什么都不做?
你能帮助我并告诉我如何使一切编码相同吗?也许有功能mb_detect_encoding()?我能为此写一个函数吗?所以我的问题是:
像这样的功能会起作用吗?
function correct_encoding($text) {
$current_encoding = mb_detect_encoding($text, 'auto');
$text = iconv($current_encoding, 'UTF-8', $text);
return $text;
}
Run Code Online (Sandbox Code Playgroud)
我已经测试了它,但它不起作用.它出什么问题了?
许多网站都提供了一些统计数据,例如"过去24小时内最热门的话题".例如,Topix.com在其"新闻趋势"部分中显示了这一点.在那里,您可以看到增长最多的主题.
我也想为一个主题计算这样一个"嗡嗡声".我怎么能这样做?该算法应该对总是少热的主题进行加权.通常(几乎)没有人提到的主题应该是最热门的主题.
Google提供"热门趋势",topix.com显示"热门话题",fav.or.it显示"关键字趋势" - 所有这些服务都有一个共同点:它们只显示即将出现的异常热门趋势.
像"布兰妮斯皮尔斯","天气"或"帕丽斯·希尔顿"这样的词语不会出现在这些列表中,因为它们总是热门而且频繁.这篇文章称之为"布兰妮斯皮尔斯问题".
我的问题:如何编写算法代码或使用现有算法来解决此问题?如果列表中包含在过去24小时内搜索到的关键字,则该算法应显示10个(例如)最热门的关键字.
我知道,在上面的文章中,提到了某种算法.我试图用PHP编写它,但我认为它不会起作用.它只是找到了大多数,不是吗?
我希望你能帮助我(编码例子会很棒).
AsyncTask 在另一个线程中运行复杂任务是一件好事.
但是当AsyncTask仍在运行时有方向更改或其他配置更改时,将Activity消除并重新启动电流.并且当实例AsyncTask连接到该活动时,它会失败并导致"强制关闭"消息窗口.
所以,我正在寻找某种"最佳实践"来避免这些错误并防止AsyncTask失败.
到目前为止我看到的是:
onRetainNonConfigurationInstanceActivity并Activity在再次创建时重新启动它.一些代码示例:
屏幕旋转期间的Android AsyncTasks,第一部分和第二部分
你能帮我找到最好的方法来解决问题并且易于实现吗?代码本身也很重要,因为我不知道如何正确解决这个问题.
为什么我问这个问题:
我知道有很多关于AES加密的问题,即使对于Android也是如此.如果你在网上搜索,有很多代码片段.但是在每一个页面上,在每个Stack Overflow问题中,我都发现了另一个具有重大差异的实现.
所以我创建了这个问题以找到"最佳实践".我希望我们可以收集最重要的要求列表,并建立一个非常安全的实施!
我读到了初始化载体和盐.并非我发现的所有实现都具有这些功能.所以你需要它吗?它是否会增加安全性?你是如何实现它的?如果加密数据无法解密,算法是否应该引发异常?或者这是不安全的,它应该只返回一个不可读的字符串?算法可以使用Bcrypt而不是SHA吗?
我发现这两个实现怎么样?他们还好吗?缺少完美或一些重要的事情?这些是安全的吗?
算法应该使用字符串和"密码"进行加密,然后使用该密码加密字符串.输出应该是一个字符串(十六进制或base64?).当然,解密也应该是可能的.
什么是Android的完美AES实现?
实施#1:
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.SecretKeySpec;
public class AdvancedCrypto implements ICrypto {
public static final String PROVIDER = "BC";
public static final int SALT_LENGTH = 20;
public static final int IV_LENGTH = 16;
public static final int PBE_ITERATION_COUNT = 100;
private static final String RANDOM_ALGORITHM = "SHA1PRNG";
private static final String HASH_ALGORITHM = "SHA-512";
private static final …Run Code Online (Sandbox Code Playgroud) GET参数中允许哪些字符而不编码或转义它们?我的意思是这样的:
http://www.example.org/page.php?name=XYZ
你有什么可以而不是XYZ?我认为只有以下字符:
这是完整列表还是允许其他字符?
我希望你能帮助我.提前致谢!
关于sleep()PHP中的函数我有两个问题:
睡眠时间是否影响我的PHP脚本的最大执行时间限制?有时,PHP会显示消息"超过30秒的最大执行时间".如果我使用,会显示此消息sleep(31)吗?
使用该sleep()功能时有任何风险吗?它是否会耗费大量CPU性能?
我在游戏中实现了Elo评级系统.玩家数量没有限制.玩家可以不断加入游戏,因此玩家数量可能会逐渐增加.
由于这个事实,Elo值如何精确计算并不重要:如果A队击败B队,那么A的Elo胜利等于B的Elo损失.
因此,我的评级系统的起始值存在问题:
我该怎么办?你能帮助我吗?提前致谢!
使用适用于Android应用的Firebase SDK时,我会不断收到类似的警告和错误(在Eclipse中):
Warning ... can't find referenced class ...
Warning: there were ... unresolved references to classes or interfaces ...
You may need to specify additional library jars (using '-libraryjars') ...
Run Code Online (Sandbox Code Playgroud)
很遗憾,Firebase没有任何关于其与ProGuard一起使用的官方文档.
在使用ProGuard进行模糊处理时,我的应用程序需要哪些指令才能使用Firebase成功编译版本?
随着Facebook的新Android SDK 3.0(几天前发布),身份验证过程发生了变化.
那么你如何申请阅读权限,例如"friends_hometown"?
以下代码是我试图这样做的 - 但我很确定这不是你应该这样做的方式:
版本1:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Session.openActiveSession(this, true, new Session.StatusCallback() { // start Facebook login
@Override
public void call(Session session, SessionState state, Exception exception) { // callback for session state changes
if (session.isOpened()) {
List<String> permissions = new ArrayList<String>();
permissions.add("friends_hometown");
session.requestNewReadPermissions(new Session.NewPermissionsRequest(FBImport.this, permissions));
Request.executeGraphPathRequestAsync(session, "me/friends/?access_token="+session.getAccessToken()+"&fields=id,name,hometown", new Request.Callback() {
...
});
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
版本2:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Session currentSession = Session.getActiveSession();
if (currentSession == null || currentSession.getState().isClosed()) { …Run Code Online (Sandbox Code Playgroud) android facebook facebook-authentication facebook-android-sdk