对于Java语言有些新意,我试图让自己熟悉一个可能遍历列表(或者可能是其他集合)以及每个集合的优点或缺点的所有方法(或者至少是非病态方法).
给定一个List<E> list对象,我知道以下循环所有元素的方法:
while/ do while循环以及)// Not recommended (see below)!
for (int i = 0; i < list.size(); i++) {
E element = list.get(i);
// 1 - can call methods of element
// 2 - can use 'i' to make index-based calls to methods of list
// ...
}
Run Code Online (Sandbox Code Playgroud)
注意:正如@amarseillan指出的那样,这种形式对于迭代Lists来说是一个糟糕的选择,因为该get方法的实际实现可能不如使用时那样有效Iterator.例如,LinkedList实现必须遍历i之前的所有元素以获得第i个元素.
在上面的例子中,List实现没有办法"保存它的位置"以使未来的迭代更有效.因为ArrayList它并不重要,因为复杂性/成本get是恒定时间(O(1)),而a LinkedList是它与列表的大小(O(n))成比例.
有关内置Collections实现的计算复杂性的更多信息,请查看此问题 …
由于较新版本的Safari(我正在运行5.2版)似乎从"窗口"菜单中删除了"活动"查看器,我想写一个扩展来恢复此功能.但是,为了做到这一点,我认为我需要能够在该窗口/选项卡中查看请求的URL.对于Chrome,有一个"webRequest"API可以做到这一点,但我似乎无法在Safari中找到我想要做的事情.有人请告诉我这是否可能,如果是的话,我应该在哪下看?提前致谢.
到目前为止,我能够获得的最多是使用如下所示的注入启动脚本:
function trackRequests() {
console.log(event.timeStamp + ": " + event.type, event.url, event);
}
document.addEventListener("beforeload", trackRequests, true);
Run Code Online (Sandbox Code Playgroud)
但是,这并不足以满足我需要的功能.例如,如果指定的URL没有协议,例如"//example.com/file.txt",这是处理程序所看到的; 它不知道使用了什么实际协议或是否允许请求.
似乎Apple讨论论坛上的一些人,MacDailyNews和ArsTechnica都表达了希望在Safari中恢复此功能的愿望. 这是MacRumors.com和另一个讨论的链接.
根据URI javadoc,该getPath方法返回"此URI的已解码路径组件,如果路径未定义则返回null "(强调添加).这会让我相信如果我的应用程序依赖于返回值getPath,我可能需要检查它是否存在null.但是,似乎永远不会发生这种情况.
下面的代码显示了我尝试构造一个返回null 的URI对象getPath,但正如您所看到的,我还没有找到这样的情况.有人可以解释一下这可能会发生什么吗?
编辑:我注意到mailtoURI没有路径.但是,我真正要问的是:是否存在使用http,https,ftp或具有未定义/空路径的文件方案的URI?
import java.net.URI;
import java.net.URISyntaxException;
public class URIGetPathNullTest {
public static void main(String []args) throws Exception {
test1();
test2();
test3();
test4();
test5();
test6();
test7();
}
public static void test1() throws URISyntaxException {
String urlString = "";
URI uri = new URI(urlString);
printUri(uri);
// Output:
// toString() -->
// getPath -->
// getPath null? false
}
public static …Run Code Online (Sandbox Code Playgroud) 根据RFC 3986,以下字符是保留的,需要进行百分比编码才能在URI中使用,而不是作为其保留用途:
:/?#[]@!$&'()*+,;=
此外,它指定了一些特别保留的字符:a-zA-Z0-9\-._~
似乎很清楚,一般应该编码保留字符(以防止误解)而不编码未保留字符(为了便于阅读),但是如何处理不属于任何类别的字符?例如{,}并没有出现在任何一个列表中,但它们是标准的ASCII字符.
期待现代浏览器的指导,似乎它们有时会有不同的行为.例如,考虑将URL粘贴https://www.google.com/search?q={到Web浏览器的地址栏中:
https://www.google.com/search?q=%7B但是,如果一个粘贴https://www.google.com/#q={(删除"搜索"并将其更改?为a #,使角色成为片段/哈希而不是查询字符串),我们会发现:
https://www.google.com/#q=%7B(通过JavaScript)https://www.google.com/#q=%7B(在执行JavaScript之前)此外,当使用JavaScript异步执行请求时(即使用此MDN示例修改为使用URL ?q={),URL不会自动进行百分比编码.(我猜这是因为XMLHttpRequest API假定事先对URL进行编码/转义.)
我想(出于与奇怪的客户要求有关的原因)使用{和}在URL的文件名部分中没有(1)破坏事物,理想情况下也没有(2)在现代网络面板中创建丑陋的百分比编码条目浏览器的网络检查员/调试员.
我有兴趣使用HTML5 + webkit创建桌面应用程序,我希望能够为各种目标平台构建独立的可执行文件,例如Windows的.exe文件和Mac OS的.dmg图像.我玩过node-webkit,除了包装/分发部分外,它看起来不错.我也偶然发现了TideSDK,但该项目似乎没有用.例如,我看到的最新版本是2012年11月的测试版.然而,核心开发人员似乎转而开发TideKit.
有没有人知道TideKit是否可以替代TideSDK?TideSDK会消失吗?等等
我们目前正在使用Handlebars 1.3.0版本,我想知道我们需要更改什么,以便能够升级到2.x版本.由于HandlebarsJS团队致力于语义版本控制,我知道必须有一些重大变化,但我没有在README.md中看到它们.v2.0.0-alpha.N版本的更改日志中列出了一些项目,但我不清楚这是否是完整列表(或者在2.0.0 final发布之前是否存在完整列表) .一些1.x版本也有"兼容性"部分,但我相信它们都是非破坏/向前兼容的.
任何人都可以对API差异或2.x系列的目标/改进提供一些见解吗?
兼容性说明
- 在IE8及以下版本下运行编译器需要JSON polyfill.建议使用预编译器代替在这些传统环境中运行编译器.
helperMissinghelper不再具有索引名称参数.现在可以通过options.name获得帮助程序名称.- 预编译器输出已更改,这会破坏与早期版本的运行时和预编译输出的兼容性.
JavaScriptCompiler.compilerInfo现在返回通用对象而不是javascript源.- AST改变
- INTEGER - > NUMBER
- 附加的PartialNode哈希参数
- 新的RawBlockNode类型
- 数据框现在具有_parent字段.这是内部的,但由于性能/兼容性原因而可以枚举.
除了上面提到的更改:
现在删除仅包含块语句和空格的行.这与Mustache规范相匹配,但可能会导致代码期望存在空格,但不会出现问题.
我想创建一个响应式图像网格,它总是在Bootstrap中平方.
到目前为止,我得到了这个:Jsfiddle Link
这部分强制元素始终被平方:
.frontpage_square {
position:relative;
overflow:hidden;
padding-bottom:100%;
}
.frontpage_square img {
position:absolute;
}
Run Code Online (Sandbox Code Playgroud)
左边较大的方块和右边的九个小方块是正确的,但我无法弄清楚如何在整个高度上展开右边的九个方块.所以基本上他们应该采取左,更大的正方形的整个高度.
我正在编写一个servlet,它将根据一些用户可定义的规则有条件地修改HTTP头.(编辑:这些规则在启动时读取的XML文件中定义.)例如,如果响应标头尚不存在,则将"X-UA-Compatible:IE = edge,chrome = 1"添加到响应标头中如果请求指定了与已知模式匹配的"User-Agent"标头.没有任何更好的想法,我试图让我自己的POJO代表这些规则.它"有效"但我觉得必须有更标准或更灵活的方法来做到这一点.
是否有可以解决此问题的通用库或工具(无论是内置程序还是第三方)?我已经听过并读过一些关于"规则引擎"的内容,但它们似乎是更复杂/更重的工具,并不像我的那样简单.
为了说明我正在尝试做什么,我创建了一个简化程序,根据"条件"(例如"是偶数")将"规则"应用于数字.在这里,对不起它有点冗长.
package my.example;
import java.util.*;
import my.example.conditions.*;
import my.example.rules.*;
public class Main {
public static void main(String args[]) {
// Some sample objects to evaluate
Collection<Integer> numbers = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8);
print(numbers);
// Define rules
Collection<Rule<Integer>> rules = new ArrayList<Rule<Integer>>();
rules.add(createRuleToMultiplyEvenNumbersBy4());
rules.add(createRuleToAdd1ToEveryNumber());
// Process the rules for each sample object
Collection<Integer> newNumbers = new ArrayList<Integer>();
for (Integer number : numbers) {
Integer newNumber = number; …Run Code Online (Sandbox Code Playgroud) 我有一个从DataFrame构建的散点图 - 它显示了两个变量的相关性 - 长度和年龄
import matplotlib.pyplot as plt
df = DataFrame (......)
plt.title ('Fish Length vs Age')
plt.xlabel('Length')
plt.ylabel('Age (days)')
plt.scatter(df['length'],df['age'])
Run Code Online (Sandbox Code Playgroud)
现在我想在这个散点图中添加一条给定斜率为0.88的线.我该怎么做呢?
PS所有的例子我设法找到使用点而不是斜线来画线
更新.我重读了这个理论 - 事实证明相关系数应该根据数据点绘制的事实由我组成:)部分是因为我头脑中的这个图像
但是我仍然对matplotlib的线条绘图功能感到困惑
如果您转到www.rambocats.com,当页面加载时,您会看到这个底部中心的div显示一两秒,然后消失.(Div用粉红色字母表示"画廊II").它应该只在您向下滚动到页面的大约2/3时出现.如何在初始加载期间阻止它显示?
这是jQuery:
$(document).ready(function(){
var open = false;
$('#homiesSlideButton').click(function() {
if(open === false) {
$('#homiesSlideContent').animate({ height:'610px' });
$(this).css('backgroundPosition', 'bottom left');
$("#homies-wrapper img").peTransitionHilight({ // image highlight/transitions plugin
slideshow:true,
transition:"all",
duration:1500,
delay:4444, boost:0.3
});
open = true;
} else {
$('#homiesSlideContent').animate({ height: '0px' });
$(this).css('backgroundPosition', 'top left');
open = false;
}
});
});
$("#homiesSlideButton").hide();
$(window).scroll(function(){
if($(window).scrollTop()>4444){ // position on page when button appears
$("#homiesSlideButton").fadeIn();
}else{
$("#homiesSlideButton").fadeOut();
}
});
$(window).scroll(function(){
if($(window).scrollTop()>4444){ // position on page when button disappears
$("#homiesSlideContent").fadeIn();
}else{
$("#homiesSlideContent").fadeOut();
}
});
Run Code Online (Sandbox Code Playgroud)
我有一个在它启动时Servlet构建一个HttpClient实例.它与服务请求时使用的协作模块共享此客户端.我想FutureRequestExecutionService在协作模块中使用API来轻松地同时发送一些请求.这需要将HttpClient实例与实例一起使用ExecutorService.本教程建议设置ExecutorService使用与HttpClient最大并发连接数相同的线程数.
futureRequestExecutionService的构造函数接受任何现有的httpClient实例和ExecutorService实例.配置两者时,必须将最大连接数与要使用的线程数对齐.当线程多于连接时,连接可能会开始超时,因为没有可用的连接.当连接多于线程时,futureRequestExecutionService将不会使用所有连接.
我认为协作模块应该是ExecutorService为其并发请求创建的模块.在这种情况下的问题是协作模块不一定知道它应该使用多少线程,因为它不知道HttpClient已配置允许多少同时连接.
我知道我可以使用HttpClient的getConnectionManager方法,但从4.3开始,这已被弃用.那么,确定给定HttpClient允许的同时连接数量的推荐方法是什么?我怀疑错误的答案是保存对ConnectionManager用于构建的对象的引用HttpClient,并将其与协作模块一起传递或定义某种全局常量.也许我问的是错误的问题.
也许我应该代替创建HttpClient,ExecutorService和FutureRequestExecutionService对象都在同一时间,然后只是通过
FutureRequestExecutionService实例来希望让使用共享客户端的HTTP请求的模块.我想以符合HttpClient作者意图的方式做到这一点; 在这种情况下,我只是不确定究竟是什么.
编辑:为了澄清,HttpClient实例是使用HttpClientBuilder具有PoolingHttpClientConnectionManager连接管理器集的实例创建的.然而,这并不在同一范围内创作的发生PoolingHttpClientConnectionManager和FutureRequestExecutionService.我开始怀疑它们应该一起创建,然后HttpClient使用FutureRequestExecutionService实例而不是传递实例.
java ×4
javascript ×2
uri ×2
collections ×1
css ×1
fouc ×1
grid-layout ×1
iteration ×1
jquery ×1
loops ×1
matplotlib ×1
null ×1
pandas ×1
python ×1
rfc3986 ×1
tidekit ×1
tidesdk ×1