我正在使用这一行在我的 Java 程序中打开一个流,但我认为我被真实世界的用户代理阻止了。
private InputStream is = new URL(a).openStream();
Run Code Online (Sandbox Code Playgroud)
其中 a 是包含 url 的字符串。
我可以设置用户代理的最简单方法是什么?我只是刚刚了解他们,所以任何进一步的信息将不胜感激。例如:我想将其设置为 Mozilla/5.0。我是否需要添加更多信息?如果是这样,应该包括什么以及如何包括在内?另外,这是严格允许的,因为我应该担心有关设置用户代理的任何法律问题吗?抱歉,如果这个问题没有意义,那只是因为我对用户代理(基本上是程序发送它们)知之甚少,而且我不确定您是否必须注册或其他什么 - 我已经看到 Mac 上的 Safari 添加了: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.17 (KHTML, like Gecko) Version/6.0.2 Safari/536.26.17
谢谢
Ps 我已经阅读了一个类似的问题,但我从答案中不太明白 - 我是一个 Java 初学者,才刚刚开始尝试打开文件和 url 的流。
我有一种情况,我必须存储密码,因为我正在构建一个系统来连接到另一个系统.此其他系统仅允许单个用户帐户,并且连接到它的唯一方法是通过密码.哈希在这里不合适.我必须以可以检索密码的方式存储密码.
现在,知道这不是一个完美的系统,我试图限制损害,如果有人以某种方式访问数据库.由于这个数据库需要被不同的平台使用,我决定使用MySQL自己的内置加密功能.这样,我不必担心为各种语言和系统找到兼容的加密/解密算法实现.我可以在查询中使用MySQL的函数.
存储密码时,我会使用AES_ENCRYPT("password", "encryption key").然后我意识到我应该使用一些盐,这样如果他们能够获得一个密码,那么获取其他密码就更难了.可是等等!有什么意义?如果他们能够获得一个密码,他们必须有加密密钥,是吗?
此外,这是一个分组密码.在某些情况下,盐可能几乎无用.
/* Returns 8CBAB2A9260975FF965E5A7B02E213628CBAB2A9260975FF965E5A7B02E21362FBB5D173CBAFA44DC406B69D05A2072C */
SELECT HEX(AES_ENCRYPT("passwordpasswordpasswordpassword", "encryption key"));
/* Returns 8CBAB2A9260975FF965E5A7B02E213628CBAB2A9260975FF965E5A7B02E21362C49AF8D5B194770E64FEF88767206391 */
SELECT HEX(AES_ENCRYPT("passwordpasswordpasswordpassworda", "encryption key"));
Run Code Online (Sandbox Code Playgroud)
我认为在使用像我这样的情况下使用对称加密时没有理由可以使用盐吗?
鉴于我必须以允许我检索原始值的方式存储密码,我还应该考虑其他任何方法吗?(我知道我需要注意加密密钥的存储位置和方式,并且我需要保护我的MySQL日志.)
我Dictionary<string,int>有一些价值观.例如:
我想过滤此列表以保持大于500的值.我不经常使用C#,并且没有使用任何LINQ.我认为这可能是学习的好时机.所以,我尝试了以下方法:
Dictionary<string,int> someDictionary = new Dictionary();
// Code to populate someDictionary goes here
someDictionary = (Dictionary<string,int>) someDictionary.Where(pair => pair.Value > 500);
Run Code Online (Sandbox Code Playgroud)
这会抛出InvalidCastException:
无法将类型为'WhereEnumerableIterator`1 [System.Collections.Generic.KeyValuePair`2 [System.String,System.Int32]]'的对象转换为'System.Collections.Generic.Dictionary`2 [System.String,System. INT32]".
我已经尝试了一些强制转换,调用.ToDictionary()等等.我似乎无法弄清楚如何正确地转换它,或者使语法非常正确.你能为我指出正确的方向吗?感谢您的时间.
我正在执行正则表达式匹配,以查找文本中某些特定单词集的第一次出现.因为我不想在它们是某些其他单词的子字符串时产生误报,所以我想使用模式.
例如,我想找到整个单词" DOM ",而不是" RANDOMIZER "中的子串DOM .因此,我使用模式" \ bDOM\b "来考虑所有那些在两边都带有字边界的DOM.但DOM,其他类似的模式字符串来自数组$ tags.从$ tags中将每个标记读入$ tag,比较实际上是:
preg_match("/\b$tag\b/", ...)
Run Code Online (Sandbox Code Playgroud)
但如果$ tag =". NET ",这会遇到麻烦.然后"\ b $ tag\b"将开始匹配字符串,如CNET,INET等解释.作为通配符.那么,我们如何逃避用于形成模式的变量中字符的特殊含义?
我有这部分代码。我想知道如何将 url 读取为当前页面而不是修复 url
这是编码的部分:
var str='';
if(model_id != 0 ) str = model_id+"+";
if(year_id != 0 ) str +=year_id+"+";
url='http://store.ijdmtoy.com/SearchResults.asp?Search='+str;
top.location.href=url;
Run Code Online (Sandbox Code Playgroud)
你看到目前它有一个修复读取 url http://store.ijdmtoy.com/SearchResults.asp
例如,我目前在http://store.ijdmtoy.com/abs.htm
如何更改代码,使其自动读取为http://store.ijdmtoy.com/abs.htm?searching=Y&Search
我有以下代码:
var a = [{a: 1}, {a: 2}, {a: 3}];
a.map(function (item, index) {
console.log('call');
if (index < 1) {
a.splice(index, 1);
}
});
Run Code Online (Sandbox Code Playgroud)
但打电话只打印两次,我希望打印三次.我知道这splice搞砸了数组,但这种行为有一些解决方法吗?
谢谢!
我似乎没有找到答案,所以我问你。现有的 Icecast2 服务器是否使用 TCP 或 UDP 来广播流数据?我知道它使用自定义的基于 HTTP 的应用程序层协议,所以人们可能会认为它是 TCP,但另一方面它是一个广播应用程序,所以 UDP 对我来说更合乎逻辑。如果它仍然使用 TCP,为什么要这样做?
我有一个巨大的遗留PHP代码库,有很多代码,如下所示:
try {
doSomethingImportant();
} catch (Exception $e) {
}
Run Code Online (Sandbox Code Playgroud)
有很多代码,有人认为吞下所有异常然后对它们不做任何事情是个好主意.有时会有评论:
} catch (Exception $e) {
// do nothing
}
Run Code Online (Sandbox Code Playgroud)
我希望将一些RegEx插入到Eclipse的搜索中,并找到大部分这些地方,以便我可以调查和重构.我很容易找到捕获块:
catch.*\{.*\}
Run Code Online (Sandbox Code Playgroud)
当catch块具有以下一个或多个条件时,匹配的适当方法是什么:
// 只有评论和空白/* */ 评论和whitspace只//和/* */评论和空格//很容易,但我不知道如何处理多线的东西,/* */什么不是.有什么想法吗?
WebM是否支持音频编解码器的PCM?
我不认为它确实如此,但我在WebM文档页面上看到支持BitDepth具有以下注释的字段:
BitDepth - 每个样本的比特,主要用于PCM.
如果WebM确实支持PCM,那么Chrome的实现呢?如果是这样,MediaRecorder使用的适当内容类型是什么?这些都是假的:
MediaRecorder.isTypeSupported('video/webm;codecs=h264,pcm');
MediaRecorder.isTypeSupported('video/webm;codecs=h264,wav');
MediaRecorder.isTypeSupported('video/webm;codecs=h264,adpcm');
MediaRecorder.isTypeSupported('video/webm;codecs=h264,pcm_s16le');
MediaRecorder.isTypeSupported('audio/wav');
Run Code Online (Sandbox Code Playgroud) 我有一个表(logs),其中包含以下列(还有其他列,但这些是重要的):
基本上,这是一个事件的记录,该事件一次开始,一次结束。该表当前有几十万行。我希望它会增长到数百万。为了加快查询的速度,我添加了另一列和预先计算的值:
为了计算结束时间,Duration我在Timestamp字段中增加了秒数。
现在我想做的是运行一个查询,该查询的结果计算开始时间(Timestamp)和结束时间(EndTime)在某个时间点之外的行数。然后,我想在很大的时间范围内(例如一年)每秒运行一次此查询。我还想计算在特定时间点开始并在特定时间点结束的行数。
我创建了以下查询:
SELECT
`dates`.`date`,
COUNT(*) AS `total`,
SUM(IF(`dates`.`date`=`logs`.`Timestamp`, 1, 0)) AS `new`,
SUM(IF(`dates`.`date`=`logs`.`EndTime`, 1, 0)) AS `dropped`
FROM
`logs`,
(SELECT
DATE_ADD("2010-04-13 09:45:00", INTERVAL `number` SECOND) AS `date`
FROM numbers LIMIT 120) AS dates
WHERE dates.`date` BETWEEN `logs`.`Timestamp` AND `logs`.`EndTime`
GROUP BY `dates`.`date`;
Run Code Online (Sandbox Code Playgroud)
请注意,数字表严格用于轻松枚举日期范围。它是具有一列的表number,并且包含值1、2、3、4、5等。
这正好为我提供了我想要的东西...带有4列的表格:
问题是,此查询可能要花费大量时间才能执行。要经过120秒(如查询中所示),大约需要10秒。我怀疑这大约与我将要获得的速度一样快,但是我想在这里问是否有人对提高此查询的性能有任何想法。
任何建议将是最有帮助的。感谢您的时间。
编辑:我有时间戳和EndTime上的索引。
我的查询中EXPLAIN的输出:
"id";"select_type";"table";"type";"possible_keys";"key";"key_len";"ref";"rows";"Extra"
"1";"PRIMARY";"<derived2>";"ALL";NULL;NULL;NULL;NULL;"120";"Using temporary; Using filesort"
"1";"PRIMARY";"logs";"ALL";"Timestamp,EndTime";NULL;NULL;NULL;"296159";"Range checked for …Run Code Online (Sandbox Code Playgroud) javascript ×2
mysql ×2
regex ×2
url ×2
.net ×1
aes ×1
array-splice ×1
block-cipher ×1
c# ×1
eclipse ×1
html5-audio ×1
icecast ×1
java ×1
linq ×1
php ×1
splice ×1
tcp ×1
udp ×1
webm ×1