我有一个家庭作业来计算字符串中的特定字符.
例如: string = "America"
输出应为= a appear 2 times, m appear 1 time, e appear 1 time, r appear 1 time, i appear 1 time and c appear 1 time
public class switchbobo {
/**
* @param args
*/ // TODO Auto-generated method stub
public static void main(String[] args){
String s = "BUNANA";
String lower = s.toLowerCase();
char[] c = lower.toCharArray(); // converting to a char array
int freq =0, freq2 = 0,freq3 = 0,freq4=0,freq5 = 0;
for(int i …Run Code Online (Sandbox Code Playgroud) 是否可以将唯一约束设置为另一个表中的外键?如果是的话,你会如何宣布它?
你会如何分配候选人钥匙?可能吗?
示例:我有一个产品表,其中包括:
prod_id, prod_name, prod_price, QOH
Run Code Online (Sandbox Code Playgroud)
我希望prod_name链接到发送表:
desp_id, prod_name, shelfLoc, quantity
Run Code Online (Sandbox Code Playgroud)
我在想的是我可能需要创建一个如下所示的唯一约束:
ALTER TABLE product
ADD CONSTRAINT prod_nameID_uc
UNIQUE (prod_id,prod_name)
Run Code Online (Sandbox Code Playgroud)
我想知道的是,是否可以在发货表中将唯一密钥称为外键.我必须prod_name而不是prod_id在发货表中,以便信息在阅读时对用户更有意义,而不是看到ID号.我在oracle上使用iSQL plus.
我最近在工作中继承了一些代码,这是旧的2.4.X linux内核驱动程序,我的任务是让他们使用更新的内核2.6或更高版本.我正在运行带有3.1.10内核的OpenSUSE 12.1.
我已经从register_chrdev()更新了原始代码以使用class_create()/ device_create()调用,我可以看到我的设备正确显示在/ dev中.我目前的问题是我的设备的权限仅为用户设置为r/w:
crw------- 1 root root 244, 0 Aug 7 07:57 gcanain
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过命令行"chmod"该文件,或者我可以设置udev权限......但无论如何都要以编程方式执行此操作,这样当我发出insmod命令时,dev将以正确的方式安装规则到位了吗?
是否有可能存在的API我可以调用来执行此操作,我在其中一个创建API中缺少任何选项?
只是为了澄清,我不想使用udev规则的部分原因是我不知道设备驱动程序的名称.设备驱动程序在循环中生成,因此名称附加一个数字,nNumDevs几乎可以是任何东西:
for (i = 0; i < nNumDevs; i++) {
strcpy(Modname,GC_ANAIN_MODULE_NAME);
strcat(Modname,"%d");
device_create(c1, NULL, MKDEV(nMajor, GC_ANAIN_MINOR_VERSION+i), NULL, Modname, i);
}
Run Code Online (Sandbox Code Playgroud) 我一直在做一些研究,我对这个宏有点困惑.希望有人可以给我一些指导.我有一些ioctl代码(我继承了,没有编写),如果access_ok()在继续从用户空间复制数据之前检查是否它会做的第一件事:
#define __lddk_copy_from_user(a,b,c) copy_from_user(a,b,c)
#define __lddk_copy_to_user(a,b,c) copy_to_user(a,b,c)
long can_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{
switch(cmd) {
case COMMAND:
if(! access_ok(VERIFY_READ, (void *)arg, sizeof(Message_par_t)))
return(retval);
if(! access_ok(VERIFY_WRITE, (void *)arg, sizeof(Message_par_t)))
return(retval);
argp = &Command;
__lddk_copy_from_user( (void *) argp,(Command_par_t *) arg, sizeof(Command_par_t));
Run Code Online (Sandbox Code Playgroud)
所以代码工作正常,但我不确定它是否需要.第一个问题来自access_ok的返回描述:
所以这意味着它真的什么都没做,那么确保我们检查的指针可能在用户空间中被初始化了?既然我们知道除了用户空间调用之外我们不能进入这个功能,除非我们为这个设备打开一个有效的文件描述符,否则它不会发生,这真的需要吗?它确实比确保我们没有得到NULL指针更安全吗?
第二个问题来自这个描述:
这是否意味着我的代码中的第一次检查是多余的?如果我们要检查可写区域,我们可以作为免费赠品阅读吗?
我正在使用x86架构,所以access_ok()和__range_no_ok()的定义来自/usr/src/linux-3.1.10-1.16/arch/x86/include/asm/uaccess.h,如下所示:
#define access_ok(type, addr, size) (likely(__range_not_ok(addr, size) == 0))
#define __range_not_ok(addr, size) \
({ \
unsigned long flag, roksum; \
__chk_user_ptr(addr); \
asm("add %3,%1 ; sbb …Run Code Online (Sandbox Code Playgroud) 在工作中,我们正在讨论新平台的设计,其中一个上层管理类型表示它需要运行我们当前的代码库(C on Linux),但需要实时,因为它需要在不到一秒的时间内响应各种输入.我指出:
真的在我的脑海中,如果第3点是真的,那么它需要是一个实时系统,然后第2点是最大的考虑因素.
我有信心回答,但后来我想到了......别人怎么想?我在这里是正确的轨道还是我错过了什么?
在"实时"系统和"确定性"系统之间我是否有任何不同之处?除了RTC和RTOS之外,我还缺少执行真正实时系统所需的任何主要内容吗?
期待一些伟大的回应!
编辑:
到目前为止得到了一些好的回答,看起来对我的系统和要求有一点好奇,所以我会为感兴趣的人添加一些注意事项:
这里的要求是管理层希望"快速"(<1s)更新显示,但IMO 的真正限制来自可通过CAN连接的设备.这些设备通常是电机控制设备,其要求包括"必须在小于200ms内响应".
似乎有很多关于SO的问题很接近,但并不是我正在寻找的.我正在尝试查看是否有办法打开一个新的终端窗口(Linux),使用我的主程序中的线程/子进程,并让该线程/子进程拥有新窗口.
只是对完整目标的概述:我将要有一个主程序,我将启动并将通过输入stdin,如果我选择输入"启动帮助器"它将产生一个新的终端窗口,它本身可以与user(stdin/stdout).
所以我想做的是让主程序调用线程,让线程使用/拥有新的终端窗口,然后当线程消失并死亡时关闭该窗口.
我知道这段代码不能正常工作,但从概念上讲,我喜欢这样的东西:
void * Runit()
{
system("gnome-terminal"); //Would like to get a handle to this window
while(1)
printf("I'm the thread!!!\n"); //Would like to get this printed to the new window
}
int main()
{
pthread_t child;
pthread_create(&child, NULL, Runit, NULL);
sleep(10);
return 0; //Would like the child & its window to go away now.
}
Run Code Online (Sandbox Code Playgroud)
对此的要求是松散的,它不必是可移植的,这只是一个让我的生活更轻松的Linux工具.它必须是C代码,所以没有shell脚本,除非该脚本可以从C运行.任何帮助甚至其他想法都表示赞赏.
编辑:
我知道在linux终端中有文件句柄/dev/pts/x,我尝试过类似的代码:
system("gnome-terminal");
sleep(2); //let the file handle show up in /dev/pts
fp = fopen("/dev/pts/<new file …Run Code Online (Sandbox Code Playgroud) 这可能听起来像一个奇怪的问题,但当我去打开文件时:
int fd;
fd = open("/dev/somedevice", O_RDWR);
Run Code Online (Sandbox Code Playgroud)
我究竟回到了什么地方?我可以看到手册页说:
The open() function shall return a file descriptor for the named file that is the lowest file descriptor not currently open for that process
但是这样吗?它只是一个int或是否在幕后附加了数据?我问的原因是我找到了一些代码(Linux/C),我们从用户空间打开文件:
//User space code:
int fdC;
if ((fdC = open(DEVICE, O_RDWR)) < 0) {
printf("Error opening device %s (%s)\n", DEVICE, strerror(errno));
goto error_exit;
}
while (!fQuit) {
if ((nRet = read(fdC, &rx_message, 1)) > 0) {
Run Code Online (Sandbox Code Playgroud)
然后在内核端,该模块的文件操作(提供fd)映射读取到n_read()函数:
struct file_operations can_fops = {
owner: THIS_MODULE, …Run Code Online (Sandbox Code Playgroud) 我将在C中编写一个程序,它将通过串口打开连接,并"监听"传入的命令,然后它将采取一些操作并报告状态.
连接将通过RS232(串行端口),我试图了解如何知道打开哪个端口.
使用Windows时,如果我勾了我的USB串行设备之我见"多产的USB转串行通信端口(COM4)",在设备管理器中显示出来......但在Linux中我没有看到任何变化在/sys/class/tty或/dev地区,我看到ttyS0过ttyS7目前所有的时间(我假设的S基础上代表串行我读过).
那我怎么知道要连接哪一个?
编辑
当我在OpenSUSE 12.1盒子(3.1内核)上开发它时,最终的程序将在运行2.4Linux内核的板上运行uCLinux,所以我正在寻找适用于旧内核的纯C解决方案
FYI:在/sys作为回答注意文件系统这篇文章不存在,直到2.6内核和我受时间限制,我坚持在2.4内核中的东西.
从unistd.h程序中包含睡眠功能时无限期挂起:
#include <stdio.h>
#include <unistd.h>
int main()
{
int i;
printf("0 ");
for(i = 1; i <20; ++i)
{
sleep(2);
printf("%d ", i);
}
printf("\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当sleep(2)评论出来时,其余的都运行良好,任何想法?
我正在学习Java教程,它让我做了类似的事情:
int k = 5;
System.out.println("The number is " + Integer.toString(k));
Run Code Online (Sandbox Code Playgroud)
就像我跟随的一项好运动一样,但我不禁要问,为什么要使用这种方法呢?看起来像很多额外的打字来获得相同的功能:
int k = 5;
System.out.println("The number is " + k);
Run Code Online (Sandbox Code Playgroud)
是否有充分的理由将该toString()方法用于非字符串数据类型?在我的具体示例中,是否有任何int值不能自动toString?
c ×7
linux ×4
java ×2
linux-kernel ×2
char ×1
constraints ×1
definition ×1
embedded ×1
foreign-keys ×1
histogram ×1
integer ×1
ioctl ×1
macros ×1
oracle ×1
permissions ×1
pthreads ×1
real-time ×1
serial-port ×1
sleep ×1
string ×1
terminal ×1
tostring ×1
unique ×1
unistd.h ×1