类型系统

数据库表结构设计方法及原则

偶尔善良 提交于 2020-03-12 15:27:33
http://www.cnblogs.com/RunForLove/p/5693986.html 数据库设计的三大范式:为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。   在实际开发中最为常见的设计范式有三个:第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式;第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中;第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。总结一下,就是: 第一范式(确保每列保持原子性); 第二范式(确保表中的每列都和主键相关); 第三范式(确保每列都和主键列直接相关,而不是间接相关)。   在目前的企业信息系统中,数据库还是最佳的数据存储方式,虽然已经有很多的书籍在指导我们进行数据库设计,但应该那种方式是设计数据库的表结构的最好方法、设计时应遵从什么样的原则、四个范式如何能够用一种方式达到顺畅的应用等是我一直在思考和总结的问题

linux系统基本结构

末鹿安然 提交于 2020-03-11 19:24:07
一、 Linux控制台的使用与硬件资源管理 1、 Linux控制台的使用 Linux系统由桌面控制台和字符控制台组成,桌面系统其实就是我们安装软件包时的X-window视窗,而X-window的实质是在命令行下运行的一个应用程序。字符控制台是Linux系统的核心,大部分操作都是在字符界面下完成的。 默认Linux下有6个字符控制台,每个控制台可以独立作业,互不影响,真正体现了Linux系统的“多用户、多任务”的特性。 在图形界面下要转入字符界面时,只需按下“Ctrl+Alt+F1”到“F6”组合键中的任何一个,即可进入字符界面。相反,如果要从字符界面切换到X-window下,可以在字符界面命令行输入“startx”或者按下“Ctrl+Alt+F7”组合键即可。 控制台终端(/dev/ttyn)虚拟终端(/dev/pts/n) Linux系统的默认管理员用户是root,与Windows的管理员用户Administrator类似,root用户可以操作系统的任何文件和设备,拥有最高权限。输入登录的用户名root,然后输入对应的密码,即可登录Linux系统了 2、 Linux硬件资源管理 (1)查看CPU信息 [root@localhost ~]# more /proc/cpuinfo 要查看系统物理CPU的个数,可通过如下命令查看: [root@centos7 ~]# cat /proc

Oracle游标的使用

泄露秘密 提交于 2020-03-11 09:59:21
转至http://www.cnblogs.com/adslg/archive/2010/08/17/1801469.html 游标的概念: 游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库。这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率。 游标有两种类型:显式游标和隐式游标。在前述程序中用到的SELECT...INTO...查询语句,一次只能从数据库中提取一行数据,对于这种形式的查询和DML操作,系统都会使用一个隐式游标。但是如果要提取多行数据,就要由程序员定义一个显式游标,并通过与游标有关的语句进行处理。显式游标对应一个返回结果为多行多列的SELECT语句。 游标一旦打开,数据就从数据库中传送到游标变量中,然后应用程序再从游标变量中分解出需要的数据,并进行处理。 隐式游标 如前所述,DML操作和单行SELECT语句会使用隐式游标,它们是: * 插入操作:INSERT。 * 更新操作:UPDATE。 * 删除操作:DELETE。 * 单行查询操作:SELECT ... INTO ...。 当系统使用一个隐式游标时,可以通过隐式游标的属性来了解操作的状态和结果,进而控制程序的流程

Linux下/proc和/sys详解

天涯浪子 提交于 2020-03-06 09:07:04
概要: /proc 正在运行的内核信息映射 主要输出: 进程信息 内存资源信息 磁盘分区信息等等 /sys 硬件设备的驱动程序信息 一、 /proc 文件系统 /proc下文件基本都是只读的,除了/proc/sys目录,它是可写的(查看和修改内核的运行参数) /proc下数字命令的目录就是对于PID的进程目录 /proc/cmdline 启动时传递给kernel的参数信息(就是bootargs信息) /proc/cpuinfo cpu的信息 /proc/crypto 内核使用的所有已安装的加密密码及细节 /proc/devices 已经加载的设备并分类 /proc/dma 已注册使用的ISA DMA频道列表 /proc/execdomains Linux 内核当前支持的execution domains /proc/fb 帧缓冲设备列表,包括数量和控制它的驱动 /proc/filesystems 内核当前支持的文件系统类型 /proc/interrupts x86架构中的每个IRQ中断数 /proc/iomem 每个物理设备当前在系统内存中的映射 /proc/ioports 一个设备的输入输出所使用的注册端口范围 /proc/kcore 代表系统的物理内存,存储为核心文件格式,里边显示的是字节数,等于RAM大小加上4kb /proc/kmsg 记录内核生成的信息,可以通过/sbin

MySQL字段类型

僤鯓⒐⒋嵵緔 提交于 2020-03-05 07:07:01
1 字段类型 字段类型分别为:数值类型、字符串类型、日期时间类型。 1.1 数值类型 数值类型分为整数类型和小数类型。整数类型为tinyint、smallint、mediumint、int、bigint。小数类型分为浮点型和定点型,有float、double、decimal。 1.1.1 tinyint 迷你整形,系统采用1个字节来保存。最大能表示的值为0-255(2^8 - 1) 1.1.2 smallint 小整形,系统采用2个字节来保存。最大能表示的值为0-65535(2^16 – 1)。 1.1.3 mediumint 中整形,系统采用3个字节来保存。最大能表示的值为2^24 – 1。 1.1.4 int 整形,系统采用4个字节来保存。最大能表示的值为2^32 – 1。 1.1.5 bigint 大整形,系统采用8个字节来保存。最大能表示的值为2^64 – 1。 1.1.6 float float又称之为单精度类型,系统采用4个字节来保存。但是能表达的范围要比整形大的多,大概是10^38。单精度浮点,精确到大约为7位。 1.1.7 double double又称之为双精度类型,系统采用8个字节来保存。表示的范围更大,大概是10^308。精度为大约15位。 1.1.8 decimal decimal又称之为定点数,系统自动根据存储的数据来分配存储空间

C语言-怎么找115资源

眉间皱痕 提交于 2020-03-04 22:21:54
C 语言的起源与发展 C 语言的开发 Dennis M. Ritchie Bell Labs/Lucent Technologies Murray Hill, NJ 07974 USA 摘要 C 编程语言是在 1970 年代早期作为初创的 Unix 操作系统的系统实现语言而设计的。起源于无类型的 BCPL 语言,它发展出了类型结构;它建立在一个小机器上、作为改善其贫乏的编程环境的工具,它现在已经成为占主导地位的语言之一。本文研讨它的演变。   注意: *Copyright 1993 Association for Computing Machinery, Inc. This electronic reprint made available by the author as a courtesy. For further publication rights contact ACM or the author. This article was presented at Second History of Programming Languages conference, Cambridge, Mass., April, 1993. It was then collected in the conference proceedings: History of Programming

php的数据类型

烈酒焚心 提交于 2020-03-03 15:46:15
简单数据类型 1、整型(int / integer) 系统分配4个字节,整数类型 2、浮点型(float / double) 系统分配8个字节,小数或者大于4字节的整型 3、字符串(string) 系统根据实际长度分配,用引号定义 “我是一个字符串” 4、布尔型(bool / boolean) 只有两个值 true 和 false 复合数据类型 1、对象(object) 2、数组(array) 存储多个数据 特殊类型 1、资源(resource) php外部数据 如:数据库,文件 2、NULL 空类型 来源: CSDN 作者: weixin_41201496 链接: https://blog.csdn.net/weixin_41201496/article/details/104630465

Linux-Pam总结

ぐ巨炮叔叔 提交于 2020-03-02 17:02:26
Pam 总结 概述 linux下PAM模块全称是Pluggable Authentication Module for linux(可插入式授权管理模块),该由Sun公司提供,在Linux中,PAM是可动态配置的,本地系统管理员可以自由选择应用程序如何对用户进行身份验证。PAM应用在许多程序与服务上,比如登录程序(login、su)的PAM身份验证(口令认证、限制登录),passwd强制密码,用户进程实时管理,向用户分配系统资源等。 简介 Linux-PAM(即linux可插入认证模块)是一套共享库,使本地系统管理员可以随意选择程序的认证方式。换句话说,不用(重新编写)重新编译一个包含PAM功能的应用程序,就可以改变它使用的认证机制,这种方式下,就算升级本地认证机制,也不用修改程序。 PAM使用配置/etc/pam.d/下的文件,来管理对程序的认证方式.应用程序 调用相应的配置文件,从而调用本地的认证模块.模块放置在/lib/security下,以加载动态库的形式进,像我们使用su命令时,系统会提示你输入root用户的密码.这就是su命令通过调用PAM模块实现的。 配置文件 PAM配置文件有下面两种写法: 1)写在/etc/pam.conf文件中,但centos6之后的系统中,这个文件就没有了。 2)将PAM配置文件放到 /etc/pam.d/ 目录下,其规则内容都是不包含

如何设计一个RPC系统

北城余情 提交于 2020-03-02 16:37:37
版权声明:本文由韩伟原创文章,转载请注明出处: 文章原文链接: https://www.qcloud.com/community/article/162 来源:腾云阁 https://www.qcloud.com/community RPC是一种方便的网络通信编程模型,由于和编程语言的高度结合,大大减少了处理网络数据的复杂度,让代码可读性也有可观的提高。但是RPC本身的构成却比较复杂,由于受到编程语言、网络模型、使用习惯的约束,有大量的妥协和取舍之处。本文就是通过分析几种流行的RPC实现案例,提供大家在设计RPC系统时的参考。 由于RPC底层的网络开发一般和具体使用环境有关,而编程实现手段也非常多样化,但不影响使用者,因此本文基本涉及如何实现一个RPC系统。 认识RPC(远程调用) 我们在各种操作系统、编程语言生态圈中,多少都会接触过“远程调用”的概念。一般来说,他们指的是用简单的一行代码,通过网络调用另外一个计算机上的某段程序。比如: RMI——Remote Method Invoke:调用远程的方法。“方法”一般是附属于某个对象上的,所以通常RMI指对在远程的计算机上的某个对象,进行其方法函数的调用。 RPC——Remote Procedure Call:远程过程调用。指的是对网络上另外一个计算机上的,某段特定的函数代码的调用。 远程调用本身是网络通信的一种概念

SetWindowsHookEx的用法

馋奶兔 提交于 2020-03-01 02:46:21
HOOK钩子详细介绍 基本概念 钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监 视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理 window消息或特定事件。 钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有 到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强 制结束消息的传递。 运行机制 1、钩子链表和钩子子程: 每一个Hook都有一个与之相关联的指针列表,称之为钩子链表,由系统来维护。这个列表的指针 指向指定的,应用程 序定义的,被Hook子程调用的回调函数,也就是该钩子的各个处理子程。当与指定的Hook类型关联的消息发生时,系统就把这个消息传递到Hook子程。 一些Hook子程可以只监视消息,或者修改消息,或者停止消息的前进,避免这些消息传递到下一个Hook子程或者目的窗口。最近安装的钩子放在链的开始, 而最早安装的钩子放在最后,也就是后加入的先获得控制权。 Windows 并不要求钩子子程的卸载顺序一定得和安装顺序相反。每当有一个钩子被卸载,Windows 便释放其占用的内存,并更新整个Hook链表