我在td中按下按钮时遇到了麻烦.
这可能是一个简单的CSS问题,但该应用程序使用bootstrap,AngularJS,AngularJS-ui-bootstrap和ngTable.我已将所有这些组件都包含在我的plunkr中.
我试图用按钮在td上设置"horizontal-align:middle",但似乎没有得到应用.按钮仍然靠在单元格的左侧.
在我的小型AngularJS应用程序中,我使用ngTable库渲染了几个表.只有一个可以使用分页.其他人总是适合不到一页.每个渲染的ngTable似乎都在表格下面添加了"10 25 50 100"选择器.对于我的大多数桌子来说,这是浪费空间而且无法使用.如何删除该部分并恢复该空间?
我知道对Java微基准测试做出判断是非常令人担忧的,但我看到的东西看起来很奇怪,我想得到一些解释.
请注意,我没有使用JMH框架.我知道它,但我不想为此而去那么长.
我将提供整个代码示例,但总之,当我测试这两种方法的性能时
private FooPrime[] testStreamToArray(ArrayList<Foo> fooList) {
return (FooPrime[]) fooList.stream().
map(it -> {
return new FooPrime().gamma(it.getAlpha() + it.getBeta());
}).
toArray(FooPrime[]::new);
}
private FooPrime[] testStreamToArray2(ArrayList<Foo> fooList) {
return (FooPrime[]) fooList.stream().
map(it -> {
int stuff = it.getAlpha().length();
return new FooPrime().gamma(it.getAlpha() + it.getBeta());
}).
toArray(FooPrime[]::new);
}
Run Code Online (Sandbox Code Playgroud)
我发现非常令人惊讶的结果.在较大的代码示例中,我正在测量四种不同的方法,前三种方法的性能非常接近.它们每次迭代运行大约50k ns.但是,第二个代码示例始终只占该总数的一半.那就对了.它并不慢,它的速度要快得多.
最后一次运行显示如下数字:
manualcopy:54575 ns
toarray:53617 ns
streamtoarray:52990 ns
streamtoarray2:24217 ns
Run Code Online (Sandbox Code Playgroud)
每次运行都有与此类似的数字.
我现在将提供整个类和基类.请注意,我确实有一个"预热"通道,在开始计时之前,我会在测试中执行几千次.另请注意,虽然最后运行"testStreamToArray2",但我也尝试将该块移动到第一个测试,并且数字大致相同.注释掉的行可以让我相信这些方法实际上正在做某事(时间与那些没有注释掉的行的时间差不多).
package timings;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class ListToArrayOfPrimesTiming {
public static void main(String[] args) { …Run Code Online (Sandbox Code Playgroud) 我已经阅读了很多Android文档,但我还没有找到任何声明说明"@ + id"的id值前缀是什么意思.我知道"@string"及其变体是什么意思,但不知道"+"的变化.除了给我答案之外,你能告诉我Android文档在哪里记录了吗?
我使用Spring 3.1.3作为webapp,使用XML配置和组件扫描.
我意识到其中一个扫描的组件必须在其他几个之前初始化.在需要构造后初始化的所有类上,我在方法上有一个@PostConstruct注释.
为了设置依赖顺序,我将'@Component'更改为'@Component("configData")'在需要在其他之前构建后的类上.然后我在每个类定义之前添加了'@DependsOn("configData")',需要在"configData"bean之后进行后构建.
从我读过的内容来看,这就是我需要强制执行依赖顺序的全部内容.
然后,我构建了所有内容,设置了断点,并启动了应用程序.我希望在任何依赖bean之前点击"configData"bean中的断点.这不是发生的事情.第一个断点位于其中一个依赖bean的"init"方法中.
然后我更改了我的"log4j.xml"以将"debug"设置为"org.springframework"的日志记录级别并重新进行测试.断点行为是相同的,我的日志记录没有显示有关Spring初始化的任何调试信息(我已经调试了log4j初始化本身,所以我确认我为"org.springframework"设置了DEBUG).
我可能会失踪什么?
更新:
如果重要的话,这里有几个我在这里做的骨架例子.
@Component("configData")
public class ConfigData {
....
@PostConstruct
public void init() {
....
}
}
@Component
@DependsOn("configData")
public class ClassDependentOnConfigData extends BaseClass {
....
@Override
@PostConstruct
public void init() {
super.init();
....
}
}
Run Code Online (Sandbox Code Playgroud)
重申一下,我在运行时发现的是"ClassDependentOnConfigData"中的"init()"方法是由Spring在"ConfigData"中的"init()"方法之前调用的.
另请注意,"BaseClass"对于"ConfigData"具有"@Autowired".
我在Ubuntu 12.0.4上安装了SDK.我启动了SDK管理器并更新了几个包.
我跑了avd经理并试图创建一个avd,但它失败了,没有任何信息.
然后我尝试从命令行创建avd,使用我试图从gui使用的相同信息,它工作.
当我尝试启动AVD时,它失败了(一些字符串被省略):
Failed to start emulator: Cannot run program "<myhome>/apps/android/android-sdk-linux/tools/emulator": java.io.IOException: error=2, No such file or directory
Run Code Online (Sandbox Code Playgroud)
这是我在查找此文件时看到的内容:
$ ls -lt <myhome>/apps/android/android-sdk-linux/tools/emulator
-rwxrwxr-x 1 <me> <me> 24828 May 25 08:20 <myhome>/apps/android/android-sdk-linux/tools/emulator*
Run Code Online (Sandbox Code Playgroud)
如您所见,它正在寻找DOES的路径存在.
这里发生了什么?
我有一个使用"task:scheduler"和"task:scheduled-tasks"元素的应用程序(后者包含"task:scheduled"元素).这一切都很好.
我正在尝试编写一些内省"应用程序配置"的代码,以获得一些重要信息的简短摘要,例如安排的任务以及他们的日程安排.
我已经有一个有一堆"@Autowired"实例变量的类,所以我可以遍历所有这些.很容易添加"List"来获取所有TaskScheduler对象.我只有两个,我在每个任务中都有一组不同的计划任务.
我在那些TaskScheduler对象中看不到的东西(它们实际上是ThreadPoolTaskScheduler对象)看起来像是一个计划任务列表,所以我猜测计划任务列表会记录在其他地方.
我可以使用哪些对象来内省计划任务集以及它们所在的线程池?
所有Android文档都提到了"drawable"目录.但是,当我在Eclipse中创建一个Android项目时,它不会创建一个"/ res/drawable"目录,但它会创建"/ res/drawable-ldpi"和"/ res/drawable-mdpi".我想这些与像素分辨率有关,但这究竟发生了什么?当我逐步完成教程时,我手动创建了一个"可绘制"目录并将我的资源放在那里,但我需要吗?如果仅存在"drawable- {l | m} dpi",对"/ res/drawable /"的引用是否有效?
我正在尝试使用$ anchorScroll向下滚动页面以确保显示一行表.我已经阅读了大多数关于$ anchorScroll的SO主题和文档.据我所知,我正确使用它.我已经使用Firebug逐步完成了代码,看来我正在使用的元素ID是正确的.
当我执行应该更改滚动位置的函数时,它会更改滚动位置,但它会向上滚动,一直向上移动.我要滚动到的"目标"元素是在我执行函数的页面的下方.
没有错误消息,它只是没有做我需要的.
这是我使用的简单函数:
$scope.scrollTo = function (elementId) {
console.log("element[" + angular.element(elementId) + "]");
$location.hash(elementId);
$timeout(function() {
$anchorScroll();
});
};
Run Code Online (Sandbox Code Playgroud)
我也尝试更改对此的引用,以便它不是针对表行,而是以包围表的accordion div为目标,但这没有任何区别.它仍然只是跳到页面顶部.
请注意,在我调用"scrollTo"之前,我首先要确保打开带有表的手风琴.在任何情况下,即使手动打开它仍然无法正确滚动.
更新:
这是我要尝试滚动到的HTML的一部分:
<div ng-controller="WorkflowDefsCtrl">
<pane accordion-group heading="Workflows" is-open="accordionActiveFlags.workflowDefs" id="workflowDefs">
<label for="workflowDefsTable">Workflow Definitions</label>
<table id="workflowDefsTable" ng-table class="table">
<tr ng-repeat="workflowDef in sunlightConfig.workflowDefinitions | orderBy: workflowDef.order" id="workflowDef{{workflowDef.id}}">
<td data-title="'ID'">{{workflowDef.id}}</td>
<td data-title="'Name'">{{workflowDef.name}}</td>
<td data-title="'Label'">{{workflowDef.label}}</td>
<td data-title="'Order'" class="text-right">{{workflowDef.order}}</td>
<td data-title="'Render?'">{{workflowDef.render}}</td>
<td data-title="'Query Fragment'">{{workflowDef.queryFragment}}</td>
<td data-title="'Query Order'" class="text-right">{{workflowDef.queryOrder}}</td>
</tr>
</table>
</pane>
</div>
Run Code Online (Sandbox Code Playgroud)
我正在尝试的两个测试用例是元素"workflowDefs"和任何"workflowDef {{workflowDef.id}}"元素.
更新:
我增强了我的"scrollTo"方法来处理滚动到刚刚变得可见的元素.然而,这没有任何区别.无论如何,它仍然只是滚动到顶部.
更新:
今天我意识到"angular.element"的字符串参数应该是CSS选择器,而不是元素id,所以我不得不添加"#"作为前缀.这导致找到正确的元素,但遗憾的是它仍然对显示没有影响.它仍然不会滚动到元素.
我的新"scrollTo"函数如下所示:
scrollTo: function …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用ngTable构建一个表,但使用不同于ngTable页面示例中描述的自定义过滤.
我想要过滤,但我不希望ngTable呈现过滤器选择器.我想自己渲染它们(在表格上方),然后在我的"getData()"方法中引用它们.
前面提到的例子没有解释任何一种机制是如何工作的.我不知道在每个"td"元素的"filter"属性中确切需要指定什么.我理解AngularJS $ filter函数的基本语法,但我不清楚ngTable在做什么.从一个例子看,我看起来只能进行"等于"检查,这只会选择相关列值等于过滤值的行.这不是我需要的.
我的表有几列.其中两个被称为"key"和"failed",分别是string和boolean.当我在表格上方渲染这些过滤字段时,我需要为"失败"过滤器设置自定义标签.过滤"key"列应该将过滤器值与"key"值的任何子字符串匹配.例如,如果我的键值为"abc","abac"和"def",则过滤值"a"将导致前两个条目显示,而不显示"def"条目.
更新:
与此相关,我希望我能弄清楚如何做这样的事情:
假设我的表元素中有一个ngRepeat表达式,使用"standard"angularjs过滤器:
"item in $data | customfilter:param | anothercustomfilter:param"
Run Code Online (Sandbox Code Playgroud)
我们知道这不太有效,因为这些过滤器仅适用于从"getData()"方法获得的一个页面切片.我真正希望能够在我的"getData()"方法中做的只是访问整个过滤器链,包括参数表达式,并简单地将一个不同的数组传递给它,作为整个原始数据列表,而不仅仅是页面切片.
与此同时,我需要通过在正常处理中执行该过滤器链来"关闭"过滤angularjs自己做的事情.
这听起来很难,但我发现当前的API需要在html和javascript之间进行大量的耦合.如果html可以指定所需的过滤,那将是很好的,javascript将只使用整个过滤器链,但在整个数据列表上使用它,而不仅仅是页面切片.
更新:
以下是我的HTML的相关摘录:
<label for="keysFilter">Filter Keys:</label>
<input id="keysFilter" type="text" ng-model="keysFilter"/>
<label for="showOnlyFailed">Show only queries that failed?</label>
<input id="showOnlyFailed" type="checkbox" ng-model="showOnlyFailed"/>
<table ng-table="tableParams" table-pagination="custom/pages" class="table">
<tr ng-repeat="queryInfo in $data"> <!-- | filterFailed:showOnlyFailed | filterMatchingKeys:keysFilter -->
Run Code Online (Sandbox Code Playgroud)
这是我的tableParams代码:
$scope.tableParams = new ngTableParams({
page: 1,
count: 10,
sorting: {
lastRun: 'desc'
}
},
{
debugMode: true,
total: $scope.completedQueries.length,
getData: function($defer, params) {
var orderedData …Run Code Online (Sandbox Code Playgroud)