在我的一个大学项目中,我得到了积分,我的教授反馈说我没有处理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.
那么什么时候应该检查返回值,以及如何处理它?
我正在使用log4j 2.4并尝试转换log4j2.xml为log4j.properties,但monitorInterval property似乎没有使用log4j2.properties.
虽然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,但仍然观察到相同的行为.
在使用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.
我有一个接口Vehicle由两个类实现Car和Truck.我如何创建一个包含所有不同类的混合的接口类型数组,并仍然能够访问其成员,并更改它们
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) 我认为我在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]"替换,而是首先用它匹配的任何东西.
我知道我做错了,但我不知道什么是对的.
任何帮助赞赏.
谢谢,
汤姆
我正在读取一个整数,scanf同时scanf用格式检查读取的数字位数%n,第一个输出始终是正确的,但之后输出增加了一个.这是第二次scanf读取的最后一次."\n"scanf
我知道这种有问题的scanf和char那就是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)
我在书中发现了严密加密 - 实用 - 现代加密的代码.
什么是嵌套fcntl做什么?获取文件描述符和Ored它FD_CLOEXEC,不清楚我在这里发生了什么.
#ifndef O_CLOEXEC
fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC);
Run Code Online (Sandbox Code Playgroud)
为清楚起见省略了其他代码
我在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)