小编Des*_*Ice的帖子

使用Scp时防止覆盖文件

我正在使用scp复制一些文件,我不想覆盖已经存在的文件.

如果我使用cp命令,我认为这可以使用cp -n完成.

scp是否有类似的选项,我查看了SCP的文档,似乎没有这样的选项.

rsync或sftp是解决这个问题的方法吗?

添加信息:

操作系统:Ubuntu 12.04

linux scp

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

Java中的RAII设计模式

来自C++背景,我是RAII模式的忠实粉丝.我已经广泛使用它来处理内存管理和锁管理以及其他用例.

使用Java 1.7,我看到我可以使用try-with-resources模式来创建RAII模式.

我使用RAII创建了一个示例应用程序并且它可以工作,但是我看到java中的编译器警告.

样品申请

try(MyResource myVar = new MyResource(..))
{
    //I am not using myVar here 
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

warning: [try] auto-closeable resource node is never referenced in body of corresponding try statement
Run Code Online (Sandbox Code Playgroud)

我理解警告,这意味着我应该在try块中使用变量,我不需要一直这样做.

看看这个我假设Java并没有真正支持RAII,我可能误用了仅用于资源管理的功能,而不是C++中的RAII等价物.

几个问题:

  1. 我的理解是否正确?
  2. 忽视这些警告有多大风险?
  3. 如何通过蚂蚁忽略这些警告?
  4. 我有一个简单的方法来克服这个问题吗?

for 4我正在考虑将构造函数调用拆分为更简单的构造函数和像这样的实例方法

try(MyResource myVar = new Resource())
{
   myvar.Initialize()
   ....

}
Run Code Online (Sandbox Code Playgroud)

这解决了编译器的问题,但从设计的RAII中获取了本质.

java raii try-with-resources

18
推荐指数
2
解决办法
3447
查看次数

Android中的活动太多了?

当我开始我的Android项目时,我误解了应用程序中显示的每个屏幕都必须是一个新活动.现在我完成了这个项目,我已经在我的模拟器上以及几个Android手机上进行了检查.到目前为止,我没有目睹任何问题,但最近我在某处读到应用程序中的太多活动是一个非常糟糕的主意.

目前我的应用程序有大约15-20个活动.我觉得它应该是5-6左右.我是否需要重新构建我的代码,或者只是在完成它之后完成每个活动的部分就足够了?

optimization android android-activity

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

Android应用程序不会启动noClassDefFoundError

我正在为android创建一个gps应用程序!现在我偶然发现了一个问题.应用程序根本没有启动...有关如何解决此问题的任何想法?

04-05 12:54:50.877: D/dalvikvm(540): Not late-enabling CheckJNI (already on)
04-05 12:54:51.018: I/dalvikvm(540): Turning on JNI app bug workarounds for target SDK version 5...
04-05 12:54:51.417: I/dalvikvm(540): Could not find method org.acra.ACRA.init, referenced from method com.kulplex.gaia.GaiaApp.onCreate
04-05 12:54:51.417: W/dalvikvm(540): VFY: unable to resolve static method 652: Lorg/acra/ACRA;.init (Landroid/app/Application;)V
04-05 12:54:51.417: D/dalvikvm(540): VFY: replacing opcode 0x71 at 0x0000
04-05 12:54:51.457: D/AndroidRuntime(540): Shutting down VM
04-05 12:54:51.457: W/dalvikvm(540): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
04-05 12:54:51.477: E/AndroidRuntime(540): FATAL EXCEPTION: main
04-05 12:54:51.477: …
Run Code Online (Sandbox Code Playgroud)

error-handling android android-emulator logcat acra

8
推荐指数
2
解决办法
5346
查看次数

Windows上的互斥锁,关键部分等的成本

我在某处读到互斥锁的开销并不是那么多,因为上下文切换仅在争用的情况下发生.

在Linux中也称为Futexes.

在Windows中,同样的事情是否有用?Critical Section是一个更适合Linux中互斥体的映射.

从我收集的内容来看,与Mutex相比,Critical Sections提供了更好的最佳性能,这是否适用于所有情况?

是否有一个角落案例,其中互斥体比Windows中的关键部分更快.

假设只有一个进程线程正在访问互斥锁(只是为了消除关键部分的其他好处)

添加信息:OS Windows Server,
语言C++

c++ windows multithreading mutex critical-section

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

进程名称长度的最大允许限制是多少?

进程名称允许的最大长度是多少?我正在从/proc/[pid]/stat文件中读取进程名称,我想知道我需要的最大缓冲区.

我很确定有一个可配置的限制,但却无法找到它的位置.

unix linux process procfs

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

私人脏内存可以表示泄漏内存吗?

我有一个应用程序,其内存随着我运行的测试用例而增加.这显然让我相信我的应用程序正在泄漏内存.所以我在我的应用程序上运行valgrind,令人惊讶的是它没有发现泄漏.

我不知道为什么我的进程的内存泄漏,所以我查看了我的进程的smaps文件,如果我发现有趣的话

08426000-42f56000 rwxp 00000000 00:00 0                                  [heap]
Size:             961728 kB
Rss:              960252 kB
Pss:              960252 kB
Shared_Clean:          0 kB
Shared_Dirty:          0 kB
Private_Clean:         0 kB
Private_Dirty:    960252 kB
Referenced:       960252 kB
Anonymous:        960252 kB
AnonHugePages:         0 kB
Swap:                  0 kB
KernelPageSize:        4 kB
Run Code Online (Sandbox Code Playgroud)

为了理解这些数字我做了一些关于Private_Dirty内存的研究,大多数文章表明这​​是因为它们成本高昂而尚未被释放的内存.

这似乎表明这些只是由应用程序释放但仍被操作系统阻止的内存.

有人可以帮助我更好地理解private_dirty吗?这可以表明我有内存泄漏吗?

谢谢

c++ linux memory memory-leaks memory-management

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

Netty中ChannelInitializer优于Channel Handler的优势

直接使用ChannelInitializer而不是使用ChannelHandlers链有什么优势?

例如,使用服务器引导程序,我可以执行以下操作:

bootstrap.childHandler(channel_handler);
Run Code Online (Sandbox Code Playgroud)

添加在channel_handler的实现中,我将实现以下内容

class simple_channel_handler implements ChannelHandler
{
    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {
        // TODO Auto-generated method stub
        System.out.println("handler added");
        ctx.pipeline().addLast(new simple_channel_handler_2());
    }
}
Run Code Online (Sandbox Code Playgroud)

就像ChannelInitializer一样

        ch.pipeline().addLast(
                               new channel_handler_1(), 
                               new channel_handler_2()
                             );
Run Code Online (Sandbox Code Playgroud)

在每个处理程序中我都可以做

class channel_handler_1 extends ChannelInboundHandlerAdapter
{

    @Override
    public void channelActive(ChannelHandlerContext ctx) throws Exception {
        // TODO Auto-generated method stub
        System.out.println("Channel just became active");
        ctx.fireChannelRead(ctx); // Fire directly to channel handler 2
    }
}
Run Code Online (Sandbox Code Playgroud)

那么,通道处理程序不需要知道将通道读取到何处的唯一好处吗?我看不到使用通道初始化程序的任何其他优势

java nio channel netty

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

逻辑运算符及其在C/C++中的优先级

我最近遇到了一段代码

//程序克服除零

int a=0;
int b=100;

int c= a==0 || b/a ;

printf("Hello");
Run Code Online (Sandbox Code Playgroud)

//输出:你好

我的理论:根据优先级,operator /优先级高于||.所以b/a必须首先执行,我们应该得到一个运行时错误.

我假设发生的事情是:

短路运算符|| ,评估LHS a == 0,这是真的,因此不执行b/a.

我的理论错了吗?我很确定这是非常简单的事情,我现在无法理解

c c++ operators logical-operators

4
推荐指数
1
解决办法
871
查看次数

Java防止未使用的警告

所以我使用Eclipse创建一个简单的程序,在这个程序中我有一个除了构造函数之外没有其他方法的对象.像这样的东西

class Example{

public Example(...)
   {
      //Do something with the variable
   }
}
Run Code Online (Sandbox Code Playgroud)

Example类的整个逻辑在构造函数中,这个类将没有更多的方法.

当我实例化这个类的对象时,我得到这些"未使用"的警告.我不想压制所有未使用的警告,我只是想在实例化此对象时禁止警告.

再说一次,我不想在使用Example类的地方进行压力警告,因为我会使用多个地方,而且我不想用这些无用的supresswarning来捣乱我的代码.

java eclipse suppress-warnings

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