如何在关系数据库中存储与IPv6兼容的地址(How to store IPv6-compatible address in a relational database)

我怎么做?

目前,IPv6不会被使用,但我需要设计应用程序以使其可以支持IPv6。 有必要在MySQL数据库中存储IP地址和CIDR块(也包括BGP NLRI,但这是另一回事)。 我一直使用INT为IPv4 + TINYINT为masklen,但IPv6是128位。

什么方法对此最好? 2xBIGINTCHAR(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
2024-05-06 18:05

最新回答

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 系统中通过系统调用什么来进行进程的创建

该函数被调用一次,但返回两次。 子进程的返回值是0,父进程的返回值则是子进程的进程I D。 子进程复制父进程的地址空间,文件描述符等。这种复制是copy-on-write。子进程不继承父进程的锁。 通常在fork()之后,会调用exec函数族,这样子进程里面的东西就跟父进程不一样了。 父进程则通常会调用wait()或者waitpid()等待子进程退出,做一些回收资源的工作。如果在子进程结束之前,父进程结束了,子进程就会交由init进程托管。

linux在系统调用中如何得到调用进程的进程信息

#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 = &in...

linux在系统调用中如何得到调用进程的进程信息

#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-&...

Linux关于创建子进程并用execlp()系统调用执行程序的实验。反复执行该程序,次序好乱啊,没有章理???

1、出现不同顺序的打印信息是对的; 2、因为linux系统的进程管理程序对各个进程是分时间片调度的,顺序是随机的。 3、想要严格控制每个子进程的顺序,可以通过在不同的子进程增加延时函数或通过进程同步的互斥量/信号量来实现。

linux系统中,用于创建进程的系统调用是什么?进程间通信的方式有哪些啊?

创建进程的调用: 启动新进程:int system(const char *string) 【include 】 替换进程映像:int execl();int execlv();int execlp() int execv();execvp();int execve() 【include 】 复制进程 fork 进程间通信:管道, 信号量,共享内存, 消息队列

linux下创建多进程,一个父进程可以有多个子进程吗,如果可以的话,父进程和多个子进程的关系是什么?

2是谁创建的,他爹就是谁 fork会把子进程数据结构中的父进程号设置为当前进程号

远程JVM /进程重新启动时自动重新创建路由器远程路由(Automatically recreate a routers remote routees when the remote JVM/process restarts)

群集感知路由器处理此问题。 您可能不应该使用路由器。 而是使用普通的演员,你可以完全控制行为。 在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 ...

oracle为什么新创建的用户就直接是dba权限?

不是这样的,你新建的用户默认没有任何权限。 你是在登录时加了as sysdba了吧,这种登录在本地计算机上默认是不检查用户名和密码的,你可以试试 sqlplus / as sysdba sqlplus abc/abc as sysdba(abc是随手写的,不是任何用户名) 都可以登录成功,登录后show user,你会发现用户名其实是sys 因为oracle默认使用操作系统认证方式,只是你是以特定的操作系统帐户进入的操作系统(如Windows的administrator或unix的oracle账户...

转储进程内存以从转储文件中归档/重新创建进程(Dump a process memory to file / recreate process from dump file)

如果要这样做,则必须确保具有相同的环境来运行“转储”过程。 他们中有一些: 您必须提供具有相同状态的相同句柄(进程,线程,文件等) 新环境必须具有与之前相同的内存地址(包括运行时分配) 必须初始化所有库并将其置于相同的状态 如果您有一些GUI界面,即使GPU必须处于相同状态(您必须预加载所有图形资源等) 还有更多需要注意的事情。 If you want to do so, you have to ensure you have the same environment to run the "du...

相关文章

更多

Becoming a data scientist

Data Week: Becoming a data scientist Data Pointed, ...

Hadoop http address绑定内网地址

Hadoop默认配置里http address接口domain段均为0.0.0.0,表示可通过任一网卡 ...

10种不可以使用关系数据库的场景

如何根据业务选择不同的技术架构,这是一个方向战略性问题,我在论支付宝与12306的业务类型可比性是从O ...

HTML5 Web SQL Database 数据库

Web SQL数据库API实际上不是HTML5规范的组成部分,而是单独的规范。它通过一套API来操纵客 ...

EXT4 Store Load For Gird Exception

Gird Store 自动装载时附加一个参数user,而在pagingtoolbar上点击获取下一页数 ...

《Oracle Database 11g SQL开发指南》(Oracle Database 11g SQL )扫描版[PDF]

中文名: Oracle Database 11g SQL开发指南 原名: Oracle Data ...

取gridPanel下store的全部数据.

gridPanel下有个store var ids = []; store2.each(funct ...

Transcript: Inaugural Address of Barack Obama

中文 SPEAKER: PRESIDENT BARACK OBAMA [*] OBAMA: Thank ...

myEclipse8.5 New DataBase Connection Driver时出错

大侠看看,菜鸟求教。 这个密码指的是什么密码? 我把可能的秘密输出后有弹出这样的框, 问题补充 ...

Hive 终端产生的问题 (Failed to start database 'metastore_db', see the next exception for details.)

今天使用Hive的时候遇到一个这样的bug,上网查下原来是个小问题,在此记录下。 FAILED: Er ...

最新问答

更多

获取MVC 4使用的DisplayMode后缀(Get the DisplayMode Suffix being used by MVC 4)

我用Google搜索了一个解决方案。 “EnumDisplayModeProvider”是我自己设置网站的各种模式的枚举。 public EnumDisplayModeProvider GetDisplayModeId() { foreach (var mode in DisplayModeProvider.Instance.Modes) if (mode.CanHandleContext(HttpContext)) {

如何通过引用返回对象?(How is returning an object by reference possible?)

这相对简单:在类的构造函数中,您可以分配内存,例如使用new 。 如果你制作一个对象的副本,你不是每次都分配新的内存,而是只复制指向原始内存块的指针,同时递增一个也存储在内存中的引用计数器,使得每个副本都是对象可以访问它。 如果引用计数降至零,则销毁对象将减少引用计数并仅释放分配的内存。 您只需要一个自定义复制构造函数和赋值运算符。 这基本上是共享指针的工作方式。 This is relatively easy: In the class' constructor, you allocate m

矩阵如何存储在内存中?(How are matrices stored in memory?)

正如它在“熵编码”中所说的那样,使用Z字形图案,与RLE一起使用,在许多情况下,RLE已经减小了尺寸。 但是,据我所知,DCT本身并没有给出稀疏矩阵。 但它通常会增强矩阵的熵。 这是compressen变得有损的点:输入矩阵用DCT传输,然后量化量化然后使用霍夫曼编码。 As it says in "Entropy coding" a zig-zag pattern is used, together with RLE which will already reduce size for man

每个请求的Java新会话?(Java New Session For Each Request?)

你是如何进行重定向的? 您是否事先调用了HttpServletResponse.encodeRedirectURL()? 在这里阅读javadoc 您可以使用它像response.sendRedirect(response.encodeRedirectURL(path)); The issue was with the path in the JSESSIONID cookie. I still can't figure out why it was being set to the tomca

css:浮动div中重叠的标题h1(css: overlapping headlines h1 in floated divs)

我认为word-break ,如果你想在一个单词中打破行,你可以指定它,这样做可以解决问题: .column { word-break:break-all; } jsFiddle演示。 您可以在此处阅读有关word-break属性的更多信息。 I think word-break, with which you can specify if you want to break line within a word, will do the trick: .column { word-break

无论图像如何,Caffe预测同一类(Caffe predicts same class regardless of image)

我认为您忘记在分类时间内缩放输入图像,如train_test.prototxt文件的第11行所示。 您可能应该在C ++代码中的某个位置乘以该因子,或者使用Caffe图层来缩放输入(请查看ELTWISE或POWER图层)。 编辑: 在评论中进行了一次对话之后,结果发现在classification.cpp文件中错误地删除了图像均值,而在原始训练/测试管道中没有减去图像均值。 I think you have forgotten to scale the input image during cl

xcode语法颜色编码解释?(xcode syntax color coding explained?)

转到: Xcode => Preferences => Fonts & Colors 您将看到每个语法高亮颜色旁边都有一个简短的解释。 Go to: Xcode => Preferences => Fonts & Colors You'll see that each syntax highlighting colour has a brief explanation next to it.

在Access 2010 Runtime中使用Office 2000校对工具(Use Office 2000 proofing tools in Access 2010 Runtime)

你考虑过第三方拼写检查吗? 您可以将在C#中开发的自定义WinForms控件插入访问数据库吗? VB6控件怎么样? 如果你能找到一个使用第三方库进行拼写检查的控件,那可能会有效。 Have you considered a third party spell checker? Can you insert a custom WinForms controls developed in C# into an access database? What about a VB6 control? If

从单独的Web主机将图像传输到服务器上(Getting images onto server from separate web host)

我有同样的问题,因为我在远程服务器上有两个图像,我需要在每天的预定义时间复制到我的本地服务器,这是我能够提出的代码... try { if(@copy('url/to/source/image.ext', 'local/absolute/path/on/server/' . date("d-m-Y") . ".gif")) { } else { $errors = error_get_last(); throw new Exception($err

从旧版本复制文件并保留它们(旧/新版本)(Copy a file from old revision and keep both of them (old / new revision))

我不确定我完全明白你在说什么。 你能编辑你的帖子并包含你正在做的Subversion命令/操作的特定顺序吗? 最好使用命令行svn客户端,以便容易为其他人重现问题。 如果您只是想获取文件的旧副本(即使该文件不再存在),您可以使用如下命令: svn copy ${repo}/trunk/moduleA/file1@${rev} ${repo}/trunk/moduleB/file1 其中${repo}是您的存储库的URL, ${rev}是您想要的文件的版本。 这将恢复该文件的旧版本,包括最高版本