小编Wil*_*hin的帖子

如何创建自定义Eclipse语法高亮显示器

我一直在开发一种新语言的编译器.我认为能够在语法感知环境中展示它的开发是很好的.该语言有很多自定义关键字,其结构与Java或C/C++等常用语言有很大不同.

如何为Eclipse开发自定义语法highligher?我已经看到一些插件的引用,但文档不够彻底,不足以满足我的初学者的需求.

我的语言有语法/ RE,以及相关关键字列表.

eclipse eclipse-plugin syntax-highlighting

38
推荐指数
3
解决办法
3万
查看次数

如何使用可变精度的Java String.format?

我想根据用户输入改变字符串中双重表示的精度.现在我正在尝试这样的事情:

String foo = String.format("%.*f\n", precision, my_double);
Run Code Online (Sandbox Code Playgroud)

但我收到了java.util.UnknownFormatConversionException.我对这种方法的启发是C printf和这个资源(1.3.1节).

我在某处有一个简单的语法错误,Java支持这种情况,还是有更好的方法?

编辑:

我想我可以这样做:

String foo = String.format("%." + precision + "f\n", my_double);
Run Code Online (Sandbox Code Playgroud)

但是我仍然对这种操作的原生支持感兴趣.

java string precision rounding floating-accuracy

24
推荐指数
3
解决办法
2万
查看次数

!!(x)在C(特别是Linux内核)中的含义是什么?

我一直在阅读Linux内核(特别是2.6.11).我发现了以下定义:

#define unlikely(x)     __builtin_expect(!!(x), 0)
Run Code Online (Sandbox Code Playgroud)

(来自linux-2.6.11/include/linux/compiler.h:61 lxr链接)

什么!! 完成?为什么不使用(x)?

也可以看看:

c gcc

23
推荐指数
3
解决办法
3676
查看次数

Android应用程序的"./META-INF/CERT.RSA"文件中包含哪些内容?

我是加密证书的新手,我正在试图找出Android应用程序的"./META-INF"文件夹下的"CERT.RSA"文件的组件.

据我了解,"CERT.RSA"用于验证同一目录下"CERT.SF"文件的签名.它应该包括证书元信息(主题,发行者,序列号等),由开发者私钥签名的"CERT.SF"签名,以及用于验证签名的公钥.

如何从"CERT.RSA"文件中获取上述组件?特别是,如何从"CERT.RSA"中检索公钥?

我尝试使用以下命令来显示签名证书.当人们谈论签名证书时,是否(以下输出)公钥或签名签名?

>> openssl pkcs7 -inform DER -print_certs -out cert.pem -in CERT.RSA
>> cat cert.pem

subject=/C=SE/ST=Kista/L=Kista/O=Javsym/OU=Mobile Visuals/CN=Eyvind Almqvist
issuer=/C=SE/ST=Kista/L=Kista/O=Javsym/OU=Mobile Visuals/CN=Eyvind Almqvist
-----BEGIN CERTIFICATE-----
MIICWzCCAcSgAwIBAgIETVPFgjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJT
RTEOMAwGA1UECBMFS2lzdGExDjAMBgNVBAcTBUtpc3RhMQ8wDQYDVQQKEwZKYXZz
eW0xFzAVBgNVBAsTDk1vYmlsZSBWaXN1YWxzMRgwFgYDVQQDEw9FeXZpbmQgQWxt
cXZpc3QwIBcNMTEwMjEwMTEwMTIyWhgPMjA2MTAxMjgxMTAxMjJaMHExCzAJBgNV
BAYTAlNFMQ4wDAYDVQQIEwVLaXN0YTEOMAwGA1UEBxMFS2lzdGExDzANBgNVBAoT
BkphdnN5bTEXMBUGA1UECxMOTW9iaWxlIFZpc3VhbHMxGDAWBgNVBAMTD0V5dmlu
ZCBBbG1xdmlzdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAjwLlwflQ2zoC
1EeCkICSqYTSkdv6Xj0YCqoQsuLJw0pwDbz5qRos61Ub0ZxWCa4TfXu1NJmuD4j+
LwQYvAR6JO985y4zjH1Ee5qZmHDC5yoSRko6P8B4KfmBm8E8CryhUjN7vNLUfG2o
XrmXK+g5KKTx3wzWlb4+AdAS7/NlDVkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAS
CxdfvR/LHPlULkCsoGw9/Q2ZhsTlPr7fZw32sef9vnz1hqd6iMDsLC2c34yRVJfb
t6dZCVO9/gWMURIZ7NmT36uBFAUB+XkGK+5/ot3YEJicEwmk/Nvj1Tzo3PjBX3ZD
lLBpEPgc3IUOhgMyzDR+ytgFlH0MkDps6FApunUpiQ==
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)

通过使用以下命令,我可以获得此证书的元信息:

>> keytool -printcert -file CERT.RSA

Owner: CN=Eyvind Almqvist, OU=Mobile Visuals, O=Javsym, L=Kista, ST=Kista, C=SE
Issuer: CN=Eyvind Almqvist, OU=Mobile Visuals, O=Javsym, L=Kista, ST=Kista, C=SE
Serial number: 4d53c582
Valid from: Thu Feb 10 06:01:22 EST 2011 until: Fri Jan 28 06:01:22 …
Run Code Online (Sandbox Code Playgroud)

android digital-certificate digital-signature android-applicationinfo

23
推荐指数
4
解决办法
3万
查看次数

应该什么时候C函数返回新分配的内存?

在其他地方的回复中,我找到了以下代码段:

一般来说,让C调用者分配内存而不是被调用者更好 - 因此在我看来strcpy是一个"更好"的函数,而不是strdup.

我可以看到这是一个有效的模式,但为什么它可以被认为更好?遵循这种模式是否有优势?或不?

最近我写了大量的代码,看起来像:

struct foo *a = foo_create();
// do something with a
foo_destroy(a);
Run Code Online (Sandbox Code Playgroud)

如果foo它不是一个扁平结构,那么我想我可以将所有初始化放在一个步骤中.另外,假设结构应该在堆上.为什么这样做会更好:

struct foo *a = malloc(sizeof(foo));
foo_init(a);
// do something with a
foo_destroy(a)
Run Code Online (Sandbox Code Playgroud)

c memory-management coding-style

14
推荐指数
4
解决办法
4439
查看次数

我可以用模块替换Linux内核函数吗?

我正在进行内核工作以进行一些夏季研究.我们希望在特定的RTT计算中对TCP进行修改.我想要做的是将tcp_input.c中某个函数的分辨率替换为动态加载的内核模块提供的函数.我认为这将提高我们开发和分发修改的速度.

我感兴趣的函数被声明为static,但我已经使用非静态函数重新编译内核并由EXPORT_SYMBOL导出.这意味着该功能现在可供内核的其他模块/部分访问.我通过"cat/proc/kallsyms"验证了这一点.

现在我希望能够加载一个可以重写符号地址的模块,从初始到动态加载的函数.同样,当要卸载模块时,它将恢复原始地址.这是一种可行的方法吗?你们都有建议如何更好地实施这项建议吗?

谢谢!

Linux内核中的模块的覆盖功能相同

编辑:
这是我的最终方法.
给定以下函数(我想要覆盖,并且不导出):

static void internal_function(void) 
{
  // do something interesting
  return;
}
Run Code Online (Sandbox Code Playgroud)

像这样修改:

static void internal_function_original(void)
{
  // do something interesting
  return;
}

static void (*internal_function)(void) = &internal_function_original;
EXPORT_SYMBOL(internal_function);
Run Code Online (Sandbox Code Playgroud)

这将重新定义了预期的函数标识符,而不是指向原始实现的函数指针(可以以类似的方式调用).EXPORT_SYMBOL()使地址可以全局访问,因此我们可以从模块(或其他内核位置)修改它.

现在您可以使用以下格式编写内核模块:

static void (*original_function_reference)(void);
extern void (*internal_function)(void);

static void new_function_implementation(void)
{
  // do something new and interesting
  // return
}

int init_module(void)
{
  original_function_reference = internal_function;
  internal_function           = &new_function_implementation;
  return 0;
}

void cleanup_module(void)
{
  internal_function = original_function_reference;
}
Run Code Online (Sandbox Code Playgroud)

此模块使用动态加载的版本替换原始实现.卸载后,将恢复原始引用(和实现).在我的具体案例中,我为TCP中的RTT提供了一个新的估算器.通过使用模块,我可以进行小的调整并重新开始测试,所有这些都无需重新编译和重新启动内核.

c linux module kernel-module linux-kernel

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

如何检查类型是否是Python中类型的子类型?

如何检查类型是否是Python中类型的子类型?我不是指类型的实例,而是比较类型实例本身.例如:

class A(object):
    ...

class B(A):
    ...

class C(object)
    ...

# Check that instance is a subclass instance:
isinstance(A(), A) --> True
isinstance(B(), A) --> True
isinstance(C(), A) --> False

# What about comparing the types directly?
SOME_FUNCTION(A, A) --> True
SOME_FUNCTION(B, A) --> True
SOME_FUNCTION(C, A) --> False
Run Code Online (Sandbox Code Playgroud)

python

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

是否有用于解析Windows注册表文件的纯Python库?

是否有用于解析Windows注册表文件(NTUSER.DAT)的纯Python(即完全跨平台)库?只读访问是可以接受的.

如果没有,那么存在哪些资源记录了Registry文件的反向工程结构?

谢谢!

更新 因为当问这个问题时似乎不存在纯Python解决方案,所以我继续写了一个.python-registry向Windows注册表文件公开了Pythonic,只读接口.

python registry

8
推荐指数
1
解决办法
5213
查看次数

如何在Python中附加内存中的SQLite数据库?

我想合并SQLite数据库,有些可能在内存中.我通过将数据库路径指定为来创建内存数据库:memory:.在这篇文章之后,使用attachSQLite 的功能似乎是一种简单而有效的方法.但是如何指定我的内存数据库作为附加源?

例如,我想做类似的事情:

c1 = sqlite3.connect(":memory:")
c1.execute(...create table, insert a bunch, commit...)

c2 = sqlite3.connect(":memory:")
c2.execute("""
  ATTACH ? AS ToMerge;
  BEGIN; 
    INSERT INTO Records SELECT * FROM ToMerge.Records; 
  COMMIT;
""", (c1.get_attach_id(), ))
Run Code Online (Sandbox Code Playgroud)

但是,当然,这c1.get_attach_id()是我为演示目的而制作的一种方法,因为使用字符串:memory:会很模糊.如何指定现有c1数据库?

python sqlite

8
推荐指数
1
解决办法
5484
查看次数

对于Python模块,要声明的标准全局变量是什么?

在阅读其他Python模块,我已经看到了很多人常常包括__version____author__他们的源文件的全局变量(它甚至在提到PEP3001).我想用一组合理的变量来记录我的代码.什么是可能通常包含的全局变量列表?

python

7
推荐指数
1
解决办法
422
查看次数