小编See*_*ddo的帖子

检查printf的返回值是否重要?

在我的一个大学项目中,我得到了积分,我的教授反馈说我没有处理printf错误.

用英语 - > / * ### FB: Error handling printf () is missing * /    

/* ### FB: Fehlerbehandlung printf() fehlt */
    printf("%7lu %8lld %10s %3lu %-8s %-8s %8lu %12s  %s %s %s\n",
           sb->st_ino, nblks, permstr, (unsigned long) sb->st_nlink,
           username, groupname, sb->st_size,
           ntime, filename, (symlink ? "->" : ""),
           (symlink ? symlink : "")
           );
Run Code Online (Sandbox Code Playgroud)

我的问题是,始终检查printf函数的返回值并处理错误是否非常重要?即使我发现错误,我仍然会fprintf用来打印stderr,我必须再次检查返回类型fprintf.

那么什么时候应该检查返回值,以及如何处理它?

c

19
推荐指数
2
解决办法
2846
查看次数

Log4j2属性| monitorInterval无法正常工作

我正在使用log4j 2.4并尝试转换log4j2.xmllog4j.properties,但monitorInterval property似乎没有使用log4j2.properties.

  • status = trace
  • 名称= PropertiesConfig
  • property.filename = logs
  • appenders = console,file
  • 则monitorinterval = 10

虽然log4j2遵循文档 https://logging.apache.org/log4j/2.x/manual/configuration.html#Properties

显然是统计数据

属性配置文件支持广告商,monitorInterval,名称,包,shutdownHook,status

属性文件中的任何更改都不会导致重新加载日志记录配置.相反,它似乎完全有效xml format

<Configuration status="TRACE" monitorInterval="5">

每当我在.xml中进行任何更改时,我的log4j配置都被选中,并通过以下日志进行验证.

2016-06-17 14:43:17,267 Thread-5 DEBUG Reconfiguration started for context 1198108795 (org.apache.logging.log4j.core.LoggerContext@86be70a)
2016-06-17 14:43:17,268 Thread-5 DEBUG Not in a ServletContext environment, thus not loading WebLookup plugin.

2016-06-17 14:43:17,273 Thread-5 DEBUG Initializing configuration XmlConfiguration[location=/Users/userx/Desktop/logs/log4j2_prod.xml]
Run Code Online (Sandbox Code Playgroud)

我还尝试将Log4j版本升级到2.5,但仍然观察到相同的行为.

java log4j log4j2

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

同时迭代BlockingQueue

在使用a的应用程序中BlockingQueue,我面临的新要求只能通过迭代队列中存在的元素来实现(以提供有关元素当前状态的信息).

根据API JavadocBlockingQueue实现的唯一排队方法,只需要是线程安全的.Other API methods(例如,从中继承的那些Collection interface)可能不会同时使用,但我不确定这是否也适用于纯读取访问...

我可以安全地使用iterator() WITHOUT altering the producer/consumer threads哪些通常可以随时与队列交互?我不需要a 100% consistent iteration(在迭代队列时我是否看到添加/删除元素并不重要),但我不想最终讨厌ConcurrentModificationExceptions.

请注意,该应用程序当前正在使用a LinkedBlockingQueue,但我可以自由选择任何其他(unbounded) BlockingQueue implementation(包括free open-source third-party implementations).此外,我不想依赖将来可能会破坏的东西,所以我想要一个根据的解决方案,API并且不仅仅是恰好与之合作current JRE.

java concurrency multithreading blockingqueue

4
推荐指数
2
解决办法
2794
查看次数

如何创建一个接口类型数组

我有一个接口Vehicle由两个类实现CarTruck.我如何创建一个包含所有不同类的混合的接口类型数组,并仍然能够访问其成员,并更改它们

public interface Vehicle
{
    double purchase_price();
    string vehicle_type();
    int release_year();
    int purchase_year();
    bool IsOld(int releaseYear, int purchaseYear);
    void Details();

}
Run Code Online (Sandbox Code Playgroud)

在我的主要方法中,我有这个

  var vehls = new Vehicle[]
       {
           new Truck(8, 1000, "Ford", "F15000", 2011, 2016, false),
           new Truck(4, 13000, "Ford", "F-150", 2009, 2014, false),
           new Car("Ford", "Super Duty", 2012, 2017, false),
       };
Run Code Online (Sandbox Code Playgroud)

当我试图访问汽车成员分配他们时,它不允许我.它给了我错误.

   Car c1 = vehls[2];   
   c1.Wheel = 4;
   c1.Miles = 12000;
Run Code Online (Sandbox Code Playgroud)

除非我施放它们:

   Car c1 = (Car) vehls[2];
   c1.Wheel = 4;
   c1.Miles = …
Run Code Online (Sandbox Code Playgroud)

c#

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

在java中用正则表达式替换字符串

我认为我在Java中使用Regex匹配字符串有一个不错的句柄,但现在我正在尝试使用Regex而不是取得太大成功来替换字符串.

简单地说,我试图找到一个数字后面紧跟一个常量字符串"CMR",然后在数字和"CMR"子字符串之间添加一个空格." 0CMR"应该变为"0 CMR", "5CMR""5 CMR"等.任何前面的非数字都应保持原样.

所以我的源字符串是" theStringThat0CMRhas"

我的命令是:

replaceAll("[0-9]CMR", "[0-9] CMR");
Run Code Online (Sandbox Code Playgroud)

我在结果中获得了额外的空间,但结果变成了" theStringThat[0-9] CMRhas",这显然不是我需要的.不知怎的,我需要告诉正则表达式不要用"[0-9]"替换,而是首先用它匹配的任何东西.

我知道我做错了,但我不知道什么是对的.

任何帮助赞赏.

谢谢,

汤姆

java regex

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

scanf与%n给出错误的输出

我正在读取一个整数,scanf同时scanf用格式检查读取的数字位数%n,第一个输出始终是正确的,但之后输出增加了一个.这是第二次scanf读取的最后一次."\n"scanf

我知道这种有问题的scanfchar那就是scanf("%c",&cval)--->以scanf(" %c",&cval)留下一些小的空间,以避免scanf函数读取行的末尾.但整数是什么?

我已经在这里看到了一些问题链接在这里他们似乎都认为scanf()"retarted"和fget()应该总是被使用..是真的如此,在项目中避免它是否好?我的意思是消除所有这些错误,有没有办法防止这种情况.我必须使用fget()这个或有没有办法解决这个问题scanf().欢迎所有评论,感谢您的时间.我只是想知道是否有办法解决它,我知道如何使用%n.

#include <stdio.h>
int main(void) {


    int i =0 ,byte_count = 0,val;

    printf("Enter a number: ");

    scanf("%d%n",&val,&byte_count);
    while (i < 3){
        printf("byte count is: %d\n",byte_count);


        scanf("%d%n",&val,&byte_count);
        i++;
    }

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

在此输入图像描述

c scanf

0
推荐指数
1
解决办法
286
查看次数

这个嵌套的fcntl做什么?

我在书中发现了严密加密 - 实用 - 现代加密的代码.

什么是嵌套fcntl做什么?获取文件描述符和Ored它FD_CLOEXEC,不清楚我在这里发生了什么.

#ifndef O_CLOEXEC 
   fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC);
Run Code Online (Sandbox Code Playgroud)

为清楚起见省略了其他代码

c

0
推荐指数
1
解决办法
49
查看次数

在docker-compose中混合GITLAB_OMNIBUS_CONFIG和普通Env val

我在docker-compose中有以下内容。如何将GITLAB_OMNIBUS_CONFIG和大写字母env变量混合使用。

version: '2.2'

services:
  redis:
    restart: always
    image: sameersbn/redis:latest
    command:
    - --loglevel warning
    volumes:
    - /srv/docker/gitlab/redis:/var/lib/redis:Z

  postgresql:
    restart: always
    image: sameersbn/postgresql:latest
    volumes:
    - /srv/docker/gitlab/postgresql:/var/lib/postgresql:Z
    environment:
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production
    - DB_EXTENSION=pg_trgm

  gitlab:
    restart: always
    image: sameersbn/gitlab:10.3.3
    hostname: 'gitlab.example.com'
    depends_on:
    - redis
    - postgresql
    ports:
    - "30080:30080"
    - "30022:22"
    volumes:
    - /srv/docker/gitlab/gitlab:/home/git/data:Z
    environment:
        GITLAB_OMNIBUS_CONFIG: |
              external_url 'http://gitlab.example.com:30080'
              gitlab_rails['gitlab_shell_ssh_port'] = 30022
    - DEBUG=true
    - DB_ADAPTER=postgresql
    - DB_HOST=postgresql
    - DB_PORT=5432
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production

    - REDIS_HOST=redis
    - REDIS_PORT=6379

    - …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

0
推荐指数
1
解决办法
2564
查看次数