如何在关系数据库中存储与IPv6兼容的地址(How to store IPv6-compatible address in a relational database)
我怎么做?
目前,IPv6不会被使用,但我需要设计应用程序以使其可以支持IPv6。 有必要在MySQL数据库中存储IP地址和CIDR块(也包括BGP NLRI,但这是另一回事)。 我一直使用INT为IPv4 + TINYINT为masklen,但IPv6是128位。
什么方法对此最好?
2xBIGINT
?CHAR(16)
用于二进制存储?CHAR(39)
用于文本存储?8xSMALLINT
在专用表中?你会推荐什么?
How do I do that?
Right now, IPv6 will not be used, but I need to design the application to make it IPv6-ready. It is necessary to store IP addresses and CIDR blocks (also BGP NLRI, but this is another story) in a MySQL database. I've alway used an INT for IPv4 + a TINYINT for masklen, but IPv6 is 128 bit.
What approach will be best for that?
2xBIGINT
?CHAR(16)
for binary storage?CHAR(39)
for text storage?8xSMALLINT
in a dedicated table?What would you recommend?
原文:https://stackoverflow.com/questions/420680
最新回答
linux 系统创建进程都是用 fork() 系统调用创建子进程 由 fork() 系统调用创建的新进程被称为子进程。该函数被调用一次,但返回两次。如果 fork()进程调用成功,两次返回的区别是子进程的返回值是0,而父进程的返回值则是新子进程的进程号
你用了pthread库,在链接的时候要加上 gcc -lpthread 1.c -o 1 即可 子进程(对应pid==0语句)调用pthread接口创建线程,在县城内将value赋值5,然后打印 child: value=%d\n 此时value = 5 父进程 (对应 pid > 0 语句),等待子进程执行完成后(wait语句),打印parent: value=%d\n ,此时value = 0 对于你补充问题的回答: 线程是在子进程里创建的,它只改变了子进程的value (子进程和父进程的value处在不同的地址空间,互相没有关系,而子进程和它所创建的线程是在同一地址空间,所以线程可以改变子进程的value), 父进程没有创建线程,因此它的值不会被改变。
相关问答
更多-
在 linux 系统中通过系统调用什么来进行进程的创建[2023-10-29]
该函数被调用一次,但返回两次。 子进程的返回值是0,父进程的返回值则是子进程的进程I D。 子进程复制父进程的地址空间,文件描述符等。这种复制是copy-on-write。子进程不继承父进程的锁。 通常在fork()之后,会调用exec函数族,这样子进程里面的东西就跟父进程不一样了。 父进程则通常会调用wait()或者waitpid()等待子进程退出,做一些回收资源的工作。如果在子进程结束之前,父进程结束了,子进程就会交由init进程托管。 -
linux在系统调用中如何得到调用进程的进程信息[2022-01-11]
#include #include #include #include struct pinfo { int nice; pid_t pid; uid_t uid; }info; int psta( struct pinfo *buf ) { buf->pid = getpid(); buf->uid = getuid(); buf->nice = getpriority(PRIO_PROCESS, getpid()); } int main() { struct pinfo *buf = &info; p ... -
linux在系统调用中如何得到调用进程的进程信息[2023-05-16]
#include <stdio.h> #include <sys/types.h> #include <sys/resource.h> #include <unistd.h> struct pinfo { int nice; pid_t pid; uid_t uid; }info; int psta( struct pinfo *buf ) { buf->pid = getpid(); buf->uid = getuid(); buf->ni ... -
1、出现不同顺序的打印信息是对的; 2、因为linux系统的进程管理程序对各个进程是分时间片调度的,顺序是随机的。 3、想要严格控制每个子进程的顺序,可以通过在不同的子进程增加延时函数或通过进程同步的互斥量/信号量来实现。
-
linux系统中,用于创建进程的系统调用是什么?进程间通信的方式有哪些啊?[2022-02-24]
创建进程的调用: 启动新进程:int system(const char *string) 【include 】 替换进程映像:int execl();int execlv();int execlp() int execv();execvp();int execve() 【include 】 复制进程 fork 进程间通信:管道, 信号量,共享内存, 消息队列 -
2是谁创建的,他爹就是谁 fork会把子进程数据结构中的父进程号设置为当前进程号
-
Linux下socket创建后,进程退出是否需要主动调用close关闭[2023-06-30]
1. 不会 2. 会 3. 参考wait函数 -
群集感知路由器处理此问题。 您可能不应该使用路由器。 而是使用普通的演员,你可以完全控制行为。 在2.3.0-RC1中,路由逻辑可以在普通演员中使用,您可以添加和删除路由。 The cluster aware routers handle this. You should perhaps not use a router. Instead use ordinary actor and you have full control of the behaviour. In 2.3.0-RC1 the routi ...
-
oracle为什么新创建的用户就直接是dba权限?[2023-02-27]
不是这样的,你新建的用户默认没有任何权限。 你是在登录时加了as sysdba了吧,这种登录在本地计算机上默认是不检查用户名和密码的,你可以试试 sqlplus / as sysdba sqlplus abc/abc as sysdba(abc是随手写的,不是任何用户名) 都可以登录成功,登录后show user,你会发现用户名其实是sys 因为oracle默认使用操作系统认证方式,只是你是以特定的操作系统帐户进入的操作系统(如Windows的administrator或unix的oracle账户),就可以 ... -
如果要这样做,则必须确保具有相同的环境来运行“转储”过程。 他们中有一些: 您必须提供具有相同状态的相同句柄(进程,线程,文件等) 新环境必须具有与之前相同的内存地址(包括运行时分配) 必须初始化所有库并将其置于相同的状态 如果您有一些GUI界面,即使GPU必须处于相同状态(您必须预加载所有图形资源等) 还有更多需要注意的事情。 If you want to do so, you have to ensure you have the same environment to run the "dumped" ...