小编Soc*_*cob的帖子

Java - 可以对执行方法的对象进行垃圾回收吗?

在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,但最好根据语言规范对此类案例的说法).

java garbage-collection program-entry-point object

18
推荐指数
1
解决办法
1482
查看次数

MinGW GCC:"未知的转换类型字符'h'"(snprintf)

好吧,我遇到了一个奇怪的问题,在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变量打印为十六进制值.)

c printf gcc mingw

14
推荐指数
1
解决办法
5522
查看次数

将rank 2 numpy数组分配给pandas DataFrame列的行为不一致

我注意到,赋值给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)

python numpy dataframe pandas

13
推荐指数
2
解决办法
408
查看次数

Adobe AIR SDK和Flex SDK的关系?

我试图理解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一起使用吗?

apache-flex air flash sdk flashdevelop

12
推荐指数
1
解决办法
7113
查看次数

Delphi 2009 - Bug?将所谓的无效值添加到集合中

首先,我不是一个非常有经验的程序员.我正在使用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")进行一些测试,我将不胜感激.有趣的是看看在新版本中是否有任何变化.

delphi set delphi-2009

6
推荐指数
1
解决办法
571
查看次数

Windows服务:在作为LocalSystem运行时侦听套接字

我正在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是否有权将规则添加到防火墙本身,还是我必须在安装过程中以某种方式执行此操作?

c winapi windows-services network-programming winsock

3
推荐指数
1
解决办法
7000
查看次数

Python: Similar functionality in struct and array vs ctypes

Python provides the following three modules that deal with C types and how to handle them:

  • struct for C structs
  • array for arrays such as those in C
  • ctypes for C functions, which necessarily entails dealing with C’s type system

While 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 …

python arrays struct ctypes binary-data

3
推荐指数
1
解决办法
1190
查看次数

在pandas DataFrame中存储多维属性(列)

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)

python numpy pandas

3
推荐指数
1
解决办法
522
查看次数

箭头运算符 -&gt; 和范围解析运算符 :: 的组合有何含义?

cppreference.com \xe2\x80\x93 \xe2\x80\x9cQualified name Lookup\xe2\x80\x9d上,我发现了这个奇怪的代码示例:

\n
struct 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)

c++ syntax member-access scope-resolution-operator

2
推荐指数
1
解决办法
112
查看次数