小编Yif*_*fan的帖子

命令行/ shell帮助文本是否有"标准"格式?

如果没有,是否有事实上的标准?基本上我正在编写命令行帮助文本,如下所示:

usage: app_name [options] required_input required_input2
  options:
    -a, --argument     Does something
    -b required     Does something with "required"
    -c, --command required     Something else
    -d [optlistitem1 optlistitem 2 ... ]     Something with list
Run Code Online (Sandbox Code Playgroud)

我从基本上只是阅读各种工具的帮助文本中做到了这一点,但是有一个指南列表还是什么?例如,我使用方括号还是括号?如何使用间距?如果参数是一个列表怎么办?谢谢!

shell command-line command-line-arguments

214
推荐指数
6
解决办法
10万
查看次数

编写可插入应用程序的最佳方法是什么?

我想编写一个可以使用插件扩展的本机应用程序,完全以动态库的形式.我知道该怎么做,但我想要一些想法,特别是关于做什么和不做的最佳实践提示.我在java和php上使用类似的东西,所以我希望我不会给我的C++带来任何坏习惯.

我正在考虑允许开发人员实现某些功能,如"on_recieve_data(App*app,void*data)",我的应用程序将加载所有插件并使用指向自身的指针调用其on_recieve_data函数(dlsym?).

c++ plugins

19
推荐指数
1
解决办法
1117
查看次数

如何在Java中更改默认类加载器?

假设我有三个类,example.ClassA,example.ClassB和example.ClassLoader.ClassA打印出HelloWorld,ClassB导入example.ClassA并调用其main()方法.如果我这样做:

java -cp Example.jar -Djava.system.class.loader = example.ClassLoader example.ClassA

它工作并使用我的类加载器.但是,如果我这样做:

java -cp Example.jar -Djava.system.class.loader = example.ClassLoader example.ClassB

ClassB使用我的类加载器,但ClassA(由ClassB导入)使用默认的类加载器加载.

有没有办法强制Java总是使用我的类加载器(除非明确指定另一个类加载器)?

编辑:感谢下面的PaŭloEbermann的回答,我认为问题是我正在调用父类加载器(URLClassLoader)来加载我不需要触摸的类,并且那些加载的类设置为它的上下文类加载器,因此从它导入的类使用我的自定义加载器的父类加载器.(令人困惑,抱歉)现在我可以通过手动读取每个类来使它工作,但是它似乎是多余的,因为我直接复制了URLClassLoader的代码.有没有办法告诉父类加载器查找和定义类,但是将Class的上下文类加载器设置为自定义类?

java class classloader

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

如何在纯C中进行正则表达式字符串替换?

我查看了POSIX正则表达式库和PCRE库中的正则表达式函数,但它们似乎都没有字符串替换函数.我不想使用C++,如果我不需要链接另一个库(但我可以,如果必须的话),那将是最好的.我需要手动更换字符串吗?如果是这样,我如何使用捕获组?

c regex string

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

持久性HTTP客户端一次可以发送多个请求吗?

我正在编写HTTP代理服务器,我注意到许多客户端使用"Connection:Keep-Alive"标头来保持持久连接.客户端是否可能在服务器处理第一个HTTP请求之前发送另一个HTTP请求?

例如,客户端发送"GET/HTTP/1.1",但在服务器有机会响应之前,客户端发送"GET /favicon.ico HTTP/1.1".那可能吗?或者客户端会在发送第二个请求之前暂停响应吗?

此外,在使用持久连接时,是否可以安全地假设通过该连接的所有请求都具有相同的"Host:"标头?

sockets connection http

7
推荐指数
2
解决办法
2933
查看次数

使用JNI加载另一个JNI库?

我需要实现一个本机方法,让我们说"public native void someFunc();".我有两个库,libabc.so和libdef.so.Java使用System.loadLibrary(); 加载libabc.so(它没有实现该方法),但JNI实现在libdef.so中.目前,我在libabc.so中执行以下操作.

JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved){
JNIEnv *env;
jclass cls;
jmethodID get_load_id;
jstring name;

jvm->GetEnv((void**)&env, JNI_VERSION_1_4);
cls = env->FindClass("java/lang/System");
get_load_id = env->GetStaticMethodID(cls, "load", "(Ljava/lang/String;)V");
name = env->NewStringUTF("/lib/libdef.so");
env->CallStaticVoidMethod(cls, get_load_id, name);

return JNI_VERSION_1_4;
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到一个错误(来自android logcat)"JlI_OnLoad在/lib/libdef.so中返回了坏版本(-1)"如果我直接从Java加载libdef.so,我不会收到此错误.另外,如果我创建另一个本机方法"loadDef()"并使用相同的代码实现它,它也可以工作.我认为问题是使用jvm-> GetEnv(),但我不确定.此外,我甚至不知道这是否允许我实现我想要的(使用一个JNI库加载另一个来实现).我这样做的原因很复杂,但没有其他选择.

c++ java java-native-interface

5
推荐指数
1
解决办法
1516
查看次数

PHP显示所有声明的类的名称?

让我说我有这个代码:

<?php
class hello {
    var $greeting = "hello";
    function hello(){
        echo $this->greeting;
        return;
    }
}

$hello1 = new hello;
$hello2 = new hello;
$hello4 = new hello;
?>
Run Code Online (Sandbox Code Playgroud)

我如何让它回显所有实例化对象的名称(如果可能的话,它们各自的类),以便它回声(可能在数组中)"hello1 => hello,hello2 => hello,hello4 => hello".

如果这是不可能的,有没有办法从类中告诉实例的名称,如echo instance_name($ this); 会让我"hello1".谢谢.

php class instance-variables

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

PHP多个MySQL连接虽然是类/对象?

这是我正在努力工作的代码:

<?php

class database {
    var $connection;
    function database($host,$username,$password,$database){
        $this->connection = mysql_connect($host, $username, $password);
        mysql_select_db($database,$this->connection);
    }
    function query($query){
        $query = mysql_query($query,$this->connection);
        return $query;
    }
}

$db = new database("localhost","root","password","database1");
$db2 = new database("SERVER2","root","password","database2");

$sql = $db->query("SELECT * FROM users WHERE name = 'Yifan' LIMIT 1");
$row = mysql_fetch_assoc($sql);

var_dump($row);

$sql = $db2->query("SELECT * FROM users WHERE name = 'Yifan' LIMIT 1");
$row = mysql_fetch_assoc($sql);

var_dump($row);

?>
Run Code Online (Sandbox Code Playgroud)

所以,如果你不明白,我希望有两个或更多的连接到mysql使用对象,但问题是,我得到"bool(false)"作为第一个结果,并对第二个结果的正确响应.对于我做错了什么,或者甚至是可能的想法?谢谢.

php mysql class object

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

C/C++中的括号内的代码块是否合法,MSCL可以编译它吗?

我有以下代码:

int x;
x = ({ 1; 2; 3; });
printf("%d\n", x); // should be 3
Run Code Online (Sandbox Code Playgroud)

(如果你很好奇为什么我会编写那样令人厌恶的代码.答案是我不是.我正在编写一个输出C代码的生成器,并且这样的语句会使事情变得容易多了.)

该代码编译并在Apple LLVM版本7.0.2上运行(当然会对未使用的代码发出警告)但在MSCL 10.0和14.0中失败(错误C2059:语法错误:'{').

我的问题是:1)是否有这种代码的名称(-abuse)?2)在任何C/C++标准中是否合法?3)有没有办法让MSCL接受它?

c c++ gcc-extensions cl

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