在Java中,我做了类似下面的事情而没有考虑太多:
public class Main {
public void run() {
// ...
}
public static void main(String[] args) {
new Main().run();
}
}
Run Code Online (Sandbox Code Playgroud)
然而,最近我不确定这样做是否安全.毕竟,在Main创建对象之后没有对该对象的this引用(好吧,有引用,但这会计数吗?),所以看起来垃圾收集器可能会在执行过程中删除对象的危险一些东西.所以也许这个main方法应该是这样的:
public static void main(String[] args) {
Main m = new Main();
m.run();
}
Run Code Online (Sandbox Code Playgroud)
现在,我敢肯定的是,第一个版本的作品,我从来没有任何问题,但我想知道,如果它是安全的.所有的情况下做的(不仅是在一个特定的JVM,但最好根据语言规范对此类案例的说法).
好吧,我遇到了一个奇怪的问题,在Windows 7上使用MinGW(GCC 4.6.2)编译C文件.该文件包含以下C代码:
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("%2hhX\n", 250);
char c[80];
snprintf(c, sizeof(c), "%2hhX", 250);
printf("%s\n", c);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译结果如下:
$ gcc.exe -std=c99 -pedantic -Wall test.c
test.c: In function 'main':
test.c:6:2: warning: unknown conversion type character 'h' in format [-Wformat]
test.c:6:2: warning: too many arguments for format [-Wformat-extra-args]
Run Code Online (Sandbox Code Playgroud)
现在,对我来说很奇怪的是,它抱怨snprintf第6行的电话,而不是第printf4行的电话.我错过了什么或警告是不正确的?另外,格式字符串可能有更好的等价物"%2hhX"吗?(我正在尝试将char变量打印为十六进制值.)
我注意到,赋值给pandas DataFrame列(使用.loc索引器)的行为会有所不同,具体取决于DataFrame赋值的确切形式中存在的其他列.使用三个示例DataFrame:
df1 = pandas.DataFrame({
'col1': [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
})
# col1
# 0 [1, 2, 3]
# 1 [4, 5, 6]
# 2 [7, 8, 9]
df2 = pandas.DataFrame({
'col1': [[1, 2, 3], [4, 5, 6], [7, 8, 9]],
'col2': [[10, 20, 30], [40, 50, 60], [70, 80, 90]]
})
# col1 col2
# 0 [1, 2, 3] [10, 20, 30]
# 1 [4, 5, …Run Code Online (Sandbox Code Playgroud) 我试图理解Flash平台的整个混乱(主要是因为我理解被抛出的术语)到目前为止,我还无法弄清楚AIR和Flex SDK的确切关系.在没有真正查看SDK的情况下,我的理解是AIR可以让您开发Flash(即ActionScript,显然也是JavaScript/HTML)应用程序,这些应用程序可以由AIR运行时运行而无需浏览器(例如纯桌面或智能手机应用程序).Flex SDK似乎是类和其他API(类似于JavaFX?)的集合,以扩展"标准"Flash库.
现在,我已经下载了两个SDK的最新版本,显然,它并不那么简单.所以,首先我查看了AIR SDK(http://www.adobe.com/devnet/air/air-sdk-download.html,v3.4截至目前).据我所知,"adt"实用程序是AIR的主要部分,可以让您打包已完成的应用程序.但是,我不确定AIR SDK是否实际包含一个编译器 - 假设您有一堆ActionScript .as文件,并希望使用AIR SDK将它们转换为.swf或.air文件,这是否可能?
不幸的是,Flex SDK(http://www.adobe.com/devnet/flex/flex-sdk-download.html,v4.6截至目前)无助于混淆.它确实包括编译器和其他工具,但在其"bin"文件夹中,我还可以找到"adt"和"adl" - AIR工具!更重要的是,它还具有"AIR SDK license.pdf"和"AIR SDK readme.txt"文件; 从这些方面来看,Flex SDK似乎包含一些旧版本的AIR SDK版本2.
为了让事情更加混乱,我还在Adobe的网站上找到了"Flex和AIR®SDK的组合版本(Flex SDK 4.6.0.23201和AIR 3.4.0.2540 SDK)"(http://gaming.adobe.com/getstarted /).似乎这不仅仅是通过将AIR 3.4文件复制到Flex 4.6文件来创建的,而是将另一个项目添加到列表中.
所以,基本上,我想知道这两个(三个?)SDK之间的区别.我需要Flex实用程序来编译吗?为什么"纯"Flex SDK包含AIR的部分(?)?我可以将任何版本的AIR SDK复制到Flex SDK中,以便与FlashDevelop一起使用吗?
首先,我不是一个非常有经验的程序员.我正在使用Delphi 2009并且一直在处理集合,这些集合似乎表现得非常奇怪甚至不一致.我想这可能是我,但以下看起来显然有些不对劲:
unit test;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
test: set of 1..2;
end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
test := [3];
if 3 in test then
Edit1.Text := '3';
end;
end.Run Code Online (Sandbox Code Playgroud)
如果您运行该程序并单击该按钮,那么,当然,它将在文本字段中显示字符串"3".但是,如果您使用100之类的数字尝试相同的事情,则不会显示任何内容(在我看来应该如此).我错过了什么或者这是某种错误吗?建议将不胜感激!
编辑:到目前为止,我的观察似乎并不孤单.如果有人对此有一些了解,我会很高兴听到这个消息.此外,如果有人使用Delphi 2010(甚至是Delphi XE),如果你能对这个甚至是一般设置行为(例如"test:set of 256..257")进行一些测试,我将不胜感激.有趣的是看看在新版本中是否有任何变化.
我正在C for Windows中编写一个类似服务器的小程序(使用MinGW/GCC,在Windows 7上进行测试),该程序最终应该作为LocalSystem帐户的服务运行.我正在创建一个套接字,并使用Windows套接字bind(),listen()并accept()侦听传入的连接.如果我从命令行运行应用程序(即不是作为服务,而是作为普通用户),我从外部IP连接到它是没有问题的.但是,如果我将程序作为具有LocalSystem帐户的服务运行,我只能通过我自己的PC连接到该服务,或者使用127.0.0.1我的本地地址192.168.1.80(我在一个小型本地网络中的路由器后面).使用我的本地地址,同一本地网络中的外部IP和其他PC都不能立即连接,即使没有作为服务运行也没有问题.
现在,我听说当作为LocalSystem或LocalService运行时,网络处理方式不同甚至无法访问(?),或者服务无法同时访问桌面和网络(注意:我的服务不是交互式的)安全考虑.从本质上讲,我需要找出出错的原因/如何在服务中监听连接.作为NetworkService运行与运行LocalSystem相同,但具有网络访问权限?当然必须有可以作为后台服务运行的服务器,那么他们如何做呢?
更新:似乎关闭防火墙的建议是在正确的轨道上 - 我可以在Windows防火墙中添加例外后获得连接.我想我没有考虑防火墙,因为当你正常使用套接字运行一个应用程序时,你会得到一个提示,要求添加一个异常,这在第一次运行服务时不会发生.除了手动将规则添加到防火墙之外,还有更好的方法来处理此问题吗?LocalSystem是否有权将规则添加到防火墙本身,还是我必须在安装过程中以某种方式执行此操作?
Python provides the following three modules that deal with C types and how to handle them:
struct for C structsarray for arrays such as those in Cctypes for C functions, which necessarily entails dealing with C’s type systemWhile ctypes seems more general and flexible (its main task being “a foreign function library for Python”) than struct and array, there seems to be significant overlap in functionality between these three modules when the task is to read …
在pandas DataFrame列中存储具有多个条目(固定长度)的项目的最佳方法是什么?我在考虑像3D位置矢量这样的东西.例如,如果我DataFrame存储有关一堆物理对象的数据,它可能如下所示:
df = pandas.DataFrame({
'type': [1, 2, 1, 1, 3],
'mass': [1.1, 2.2, 3.3, 4.4, 5.5],
'pos': [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15]],
'vel': [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15]]
})
# mass pos type vel
# 0 1.1 [1, 2, 3] 1 [1, 2, 3]
# 1 2.2 [4, 5, 6] 2 [4, 5, 6]
# …Run Code Online (Sandbox Code Playgroud) 在cppreference.com \xe2\x80\x93 \xe2\x80\x9cQualified name Lookup\xe2\x80\x9d上,我发现了这个奇怪的代码示例:
\nstruct C { typedef int I; };\n\ntypedef int I1, I2;\n\nextern int *p, *q;\n\n// Slight modification to prevent linker error\n//struct A { ~A(); };\nstruct A { ~A() {}; };\n\ntypedef A AB;\n\nint main()\n{\n p->C::I::~I(); // The name I after ~ is looked up in the same scope as I before ::\n // (that is, within the scope of C, so it finds C::I)\n\n q->I1::~I2(); // The name I2 is looked up in the same …Run Code Online (Sandbox Code Playgroud)