我正在创建一个java.util.logging.FileHandler允许循环文件.运行我的应用程序的多个实例时,将为该应用程序的每个实例创建一个新的日志文件.我需要知道应用程序正在使用哪个文件,因为我想将日志文件上传到我的服务器以供进一步查看.如何判断某个FileHandler正在使用哪个文件?
例如:
Beta_ab&&
Beta::toAB() const {
return move(Beta_ab(1, 1));
}
Run Code Online (Sandbox Code Playgroud) 在C++中,你可以在一个类上有一个模板化运算符吗?像这样:
class MyClass {
public:
template<class T>
T operator()() { /* return some T */ };
}
Run Code Online (Sandbox Code Playgroud)
这实际上似乎编译得很好,但混淆在于如何使用它:
MyClass c;
int i = c<int>(); // This doesn't work
int i = (int)c(); // Neither does this*
Run Code Online (Sandbox Code Playgroud)
它编译的事实向我暗示它是可行的,我只是对如何使用它感到茫然!有什么建议,或者这种使用方法是非首发?
在过去的几天里,我一直在问一个问题,那就是让自定义工具栏与iPhone键盘顶部对齐的应用程序.我正在使用Josh在这个问题中描述的方法; 基本上,我让视图控制器监听UIKeyboardWillShowNotification并根据需要添加工具栏.
视图控制器本身管理一个表视图,其单元格都包含UITextField.显示的键盘和工具栏正在编辑这些文本字段.我仍然遇到的唯一问题是:当键盘和工具栏出现在距离桌子大约一半的单元格时,它会滚动到键盘上方,但不会在工具栏上方.
单元格和文本字段仍可编辑,但大约一半的单元格隐藏在工具栏下.如果我消失工具栏(不要将其添加到通知响应器中),整个单元格将变为可见,但显然我将丢失工具栏提供的功能.
有没有办法更改文本字段滚动到的位置?我尝试过使用UITableView方法scrollToRowAtIndexPath:atScrollPosition:animated:,但是当切换到几个单元格时,它往往会产生奇怪的结果.
将表格视图单元格滚动到自定义键盘工具栏上方的可见位置的最佳方法是什么?
何时应该在定义委托时使用匿名方法,何时应该在定义委托时使用正式定义的方法?
我试图为tk扩展创建一个python包装器,所以我看了Tkinter.py来学习如何做到这一点.
在查看该文件时,我发现以下模式出现了很多次:定义了一个内部方法(由方法名称中的前导"_"暗示),然后将公共方法定义为内部方法.
我想知道这样做有什么好处.
例如,在Misc类的代码中:
def _register(self, func, subst=None, needcleanup=1):
# doc string and implementations is removed since it's not relevant
register = _register
Run Code Online (Sandbox Code Playgroud)
谢谢.
有没有办法获取JSON对象的第一个属性的名称?
我想做这样的事情:
var firstProp = jsonObj[0];
Run Code Online (Sandbox Code Playgroud)
编辑:我得到一个JSON对象,其中包含带有图像网址的数组类别.
像这样:
{
"category1":["image/url/1.jpg","image/url/2.jpg"],
"category2":["image/url/3.jpg","image/url/4.jpg"]
}
Run Code Online (Sandbox Code Playgroud)
然后我遍历对象来插入图像,我真正想要的只是一种优雅的方式来查看首先插入的类别.起初我就是这么做的
for (var cat in images) {
if (i==0) firstCat = cat;
...
}
Run Code Online (Sandbox Code Playgroud)
但有些人觉得"觉得"难看......所以这基本上只是一个优雅的问题:p
那么初始化记录的首选方式是什么?
具有'工厂功能':
TMyRecord = record
valueX: integer;
valueY: integer;
end;
function MyRecord(const AValueX, AValueY: integer): TMyRecord;
begin
result.valueX := AValueX;
result.valueY := AValueY;
end;
var
myrec: TMyRecord;
begin
myrec := MyRecord(1, 2);
end;
Run Code Online (Sandbox Code Playgroud)
或构造函数:
TMyRecord = record
valueX: integer;
valueY: integer;
constructor Create(const AValueX, AValueY: integer);
end;
constructor TMyRecord.Create(const AValueX, AValueY: integer);
begin
self.valueX := AValueX;
self.valueY := AValueY;
end;
var
myrec: TMyRecord;
begin
myrec := TMyRecord.Create(1, 2);
end;
Run Code Online (Sandbox Code Playgroud)
我觉得构造函数更加封装,但是在阅读代码时很容易让人感到困惑.它使它看起来像一个没有免费电话的类.打字也更多......
为什么你喜欢一个而不是另一个?
我能想到的一种方法是反转列表然后阅读它.但这涉及改变不好的清单.
或者我可以复制列表然后将其反转,但这会使用额外的O(n)内存.有没有更好的方法不使用额外的内存,不修改列表并在O(n)时间运行
反向链表代码在c#中是这样的
Void Reverse (Node head)
{
Node prev= null;
Node current = head;
Node nextNode = null;
while (current!=null)
{
nextNode = current.Next;
current.Next = prev;
prev=current;
current = nextNode;
}
head = prev;
}
Run Code Online (Sandbox Code Playgroud)
递归解决方案是
void ReadBackWard (Node n)
{
if (n==null)
return;
else
ReadBackward(n.Next);
Console.WriteLine(n.Data);
}
Run Code Online (Sandbox Code Playgroud) 我试图通过示例显示前缀增量比后缀增量更有效.
理论上这是有道理的:i ++需要能够返回未增加的原始值并因此存储它,而++我可以返回增量值而不存储先前的值.
但是有一个很好的例子可以在实践中证明这一点吗?
我尝试了以下代码:
int array[100];
int main()
{
for(int i = 0; i < sizeof(array)/sizeof(*array); i++)
array[i] = 1;
}
Run Code Online (Sandbox Code Playgroud)
我使用gcc 4.4.0编译它,如下所示:
gcc -Wa,-adhls -O0 myfile.cpp
Run Code Online (Sandbox Code Playgroud)
我再次这样做,后缀增量更改为前缀增量:
for(int i = 0; i < sizeof(array)/sizeof(*array); ++i)
Run Code Online (Sandbox Code Playgroud)
在两种情况下,结果都是相同的汇编代码.
这有些出乎意料.似乎通过关闭优化(使用-O0)我应该看到显示概念的差异.我错过了什么?有更好的例子来展示这个吗?
c++ ×3
c# ×2
anonymous ×1
c++11 ×1
constructor ×1
delegates ×1
delphi ×1
iphone ×1
java ×1
javascript ×1
json ×1
logging ×1
methods ×1
objective-c ×1
optimization ×1
prefix ×1
python ×1
record ×1
scroll ×1
templates ×1
uitableview ×1