我最近看完了敏捷秋天的截屏视频,我正在寻找更多类似范围的材料.基本上,我正在寻找提供TDD/BDD流程的截屏视频,同时开发一些"真实"应用程序(或部分内容) - 所以请不要20分钟.我很惊讶没有找到这样的东西.如果您知道任何符合要求的资源,请列出它们.
我对以下内容感到有些惊讶.
例1:
char s[100] = "abcd"; // declare and initialize - WORKS
Run Code Online (Sandbox Code Playgroud)
例2:
char s[100]; // declare
s = "hello"; // initalize - DOESN'T WORK ('lvalue required' error)
Run Code Online (Sandbox Code Playgroud)
我想知道为什么第二种方法不起作用.它应该是自然的(它适用于其他数据类型)?有人能解释一下这背后的逻辑吗?
即使已经达到EOF,fgets()总是使用\ 0终止char缓冲区吗?它看起来确实如此(它肯定在ANSI K&R书中提供的实现中),但我想我会要求确定.
我想这个问题适用于其他类似的函数,比如gets().
编辑:我知道在"正常"情况下附加\ 0,我的问题是针对EOF或错误条件.例如:
FILE *fp;
char b[128];
/* ... */
if (feof(fp)) {
/* is \0 appended after EACH of these calls? */
fgets(b, 128, fp);
fgets(b, 128, fp);
fgets(b, 128, fp);
}
Run Code Online (Sandbox Code Playgroud) 有人可以向我解释为什么面具根本没有向右移动吗?您可以使用任何代替1的结果,结果将是相同的.
unsigned mask = ~0 >> 1;
printf("%u\n", mask);
Run Code Online (Sandbox Code Playgroud) 我正在尝试绑定一个准备好的语句参数,这是一个"多维"PostgreSQL数组.这是一个数组示例(列类型是numeric[]):
{{1,10},{2,20}}
Run Code Online (Sandbox Code Playgroud)
如何使用预准备语句绑定类似的值?我试过了:
stmt.setObject(1, "{{1,10},{2,20}}", Types.ARRAY);
Run Code Online (Sandbox Code Playgroud)
它不起作用:
无法将java.lang.String的实例强制转换为Types.ARRAY类型
有任何想法吗?
最近我一直在考虑在我的应用程序中使用的最佳访问控制模型.我一直在阅读RBAC并且角色概念很好(特别是如果你有大量不同的权限),但是,我不确定它对分层用户管理的适用性如下:
每个用户都属于一个或多个组.组被组织成树(如目录结构).可以为组和用户分配权限(或角色,如果我们正在谈论RBAC)并且应该存在某种类型的继承(即用户和组继承其所属组的权限)和覆盖功能.组本身的目的不仅是权限管理 - 它们还会在应用程序中有其他用途.
我想,如果没有角色使用权限("角色"是RBAC术语中的权限集合),进一步设计和实现上述所有内容都不会太成问题,因为权限非常精细,而角色更加单一.在组/用户级别实现权限继承/覆盖不会太困难.对角色执行相同操作可能会更棘手,但另一方面,普通用户更容易理解角色.
现在,我自己更倾向于"仅限权限"模式,因为:
但是,如果我看到一个逻辑且易于理解的基于角色的模型,该模型比"仅权限"模型具有优势,我会认真地看一下它.是否有任何明确定义的RBAC模型(论文,实现等)可以应用/适应上述要求(我已经搜索了一段时间了,但我发现那些限制太多或者没有将层级用户管理纳入会计?你对此事的总体看法是什么?RBAC在这种情况下是否值得?
EOF总是负面的吗?
我正在考虑编写一个函数来读取输入中的下一个单词并返回找到该单词的行号或者如果已到达输入结尾则返回EOF.如果EOF不一定是负数,则函数将是不正确的.
我最近在笔记本电脑上设置了MinGW + MSYS环境,以检查Netbeans C/C++支持的情况.一切似乎工作正常,但是,在我的测试中,我注意到GCC和Microsoft的cl.exe编译器之间存在差异.
这是一个示例程序:
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int main(void) {
int i_max = INT_MAX;
char c_max = CHAR_MAX, c;
c = i_max;
printf("i_max: %d, c_max: %d, c: %d\n", i_max, c_max, c);
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
输出是:
i_max: 2147483647, c_max: 127, c: -1
Run Code Online (Sandbox Code Playgroud)
正如您在上面的代码中看到的,我将一个int分配给一个char.这不应该产生警告,可能会发生数据丢失吗?微软的编译器(我配置得非常严格)会发出警告而GCC没有.
以下是我使用的GCC选项:
-g -Werror -ansi -pedantic -Wall -Wextra
Run Code Online (Sandbox Code Playgroud)
我错过了一些GCC选项,使编译时检查更严格吗?