配置域主DNS服务器
一、DNS服务器的类型
①Primary DNS Server(Master)
一个域的主服务器保存着该域的zone配置文件,该域所有的配置、更改都是在该服务器上进行,本篇随笔要讲解的也是如何配置一个域的主DNS服务器
②Secondary DNS Server(Slave)
域从服务器一般都是作为冗余负载使用,一个域的从服务器是从该域的主服务器上抓取zone配置文件,从服务器不会进行任何信息的更改,zone配置文件的修改只能在主DNS服务器上进行,所有的修改都有主服务器同步
③Caching only Server
DNS缓存服务器不存在任何的zone配置文件,仅仅依靠缓存来为客户端提供服务,通常用于负载均衡及加速访问操作
二、安装BIND
对于DNS服务器软件现在有许多的程序可以使用,但是现今为止使用的最多最广泛的DNS服务器软件还是BIND(Berkeley Internet Name Domain),最早是由伯克利大学的一个学生开发的,现在的最新版本是版本9,由ISC进行编写和维护。
BIND支持目前市面上所有的主流操作系统,包括Linux、Windows、Mac OS等
我们的CentOS上并没有默认安装BIND这个软件,所以我们需要手动对其进行安装,这里使用yum的方式来进行安装
[root@xiaoluo ~]# yum install -y bind bind-chroot bind-utils
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* base: mirrors.stuhome.net
* extras: mirrors.stuhome.net
* updates: mirrors.stuhome.net
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package bind.x86_64 32:9.8.2-0.17.rc1.el6_4.4 will be installed
--> Processing Dependency: bind-libs = 32:9.8.2-0.17.rc1.el6_4.4 for package: 32:bind-9.8.2-0.17.rc1.el6_4.4.x86_64
---> Package bind-chroot.x86_64 32:9.8.2-0.17.rc1.el6_4.4 will be installed
---> Package bind-utils.x86_64 32:9.8.2-0.17.rc1.el6 will be updated
---> Package bind-utils.x86_64 32:9.8.2-0.17.rc1.el6_4.4 will be an update
--> Running transaction check
---> Package bind-libs.x86_64 32:9.8.2-0.17.rc1.el6 will be updated
---> Package bind-libs.x86_64 32:9.8.2-0.17.rc1.el6_4.4 will be an update
--> Finished Dependency Resolution Dependencies Resolved ================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
bind x86_64 32:9.8.2-0.17.rc1.el6_4.4 updates 4.0 M
bind-chroot x86_64 32:9.8.2-0.17.rc1.el6_4.4 updates 71 k
Updating:
bind-utils x86_64 32:9.8.2-0.17.rc1.el6_4.4 updates 182 k
Updating for dependencies:
bind-libs x86_64 32:9.8.2-0.17.rc1.el6_4.4 updates 878 k Transaction Summary
================================================================================
Install 2 Package(s)
Upgrade 2 Package(s) Total download size: 5.1 M
Downloading Packages:
(1/4): bind-9.8.2-0.17.rc1.el6_4.4.x86_64.rpm | 4.0 MB 00:01
(2/4): bind-chroot-9.8.2-0.17.rc1.el6_4.4.x86_64.rpm | 71 kB 00:00
(3/4): bind-libs-9.8.2-0.17.rc1.el6_4.4.x86_64.rpm | 878 kB 00:00
(4/4): bind-utils-9.8.2-0.17.rc1.el6_4.4.x86_64.rpm | 182 kB 00:00
--------------------------------------------------------------------------------
Total 1.4 MB/s | 5.1 MB 00:03
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Importing GPG key 0xC105B9DE:
Userid : CentOS-6 Key (CentOS 6 Official Signing Key) <centos-6-key@centos.org>
Package: centos-release-6-4.el6.centos.10.x86_64 (@anaconda-CentOS-201303020151.x86_64/6.4)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Updating : 32:bind-libs-9.8.2-0.17.rc1.el6_4.4.x86_64 1/6
Installing : 32:bind-9.8.2-0.17.rc1.el6_4.4.x86_64 2/6
Installing : 32:bind-chroot-9.8.2-0.17.rc1.el6_4.4.x86_64 3/6
Updating : 32:bind-utils-9.8.2-0.17.rc1.el6_4.4.x86_64 4/6
Cleanup : 32:bind-utils-9.8.2-0.17.rc1.el6.x86_64 5/6
Cleanup : 32:bind-libs-9.8.2-0.17.rc1.el6.x86_64 6/6
Verifying : 32:bind-libs-9.8.2-0.17.rc1.el6_4.4.x86_64 1/6
Verifying : 32:bind-chroot-9.8.2-0.17.rc1.el6_4.4.x86_64 2/6
Verifying : 32:bind-9.8.2-0.17.rc1.el6_4.4.x86_64 3/6
Verifying : 32:bind-utils-9.8.2-0.17.rc1.el6_4.4.x86_64 4/6
Verifying : 32:bind-utils-9.8.2-0.17.rc1.el6.x86_64 5/6
Verifying : 32:bind-libs-9.8.2-0.17.rc1.el6.x86_64 6/6 Installed:
bind.x86_64 32:9.8.2-0.17.rc1.el6_4.4
bind-chroot.x86_64 32:9.8.2-0.17.rc1.el6_4.4 Updated:
bind-utils.x86_64 32:9.8.2-0.17.rc1.el6_4.4 Dependency Updated:
bind-libs.x86_64 32:9.8.2-0.17.rc1.el6_4.4 Complete!
我们这里一共安装了三个文件,一个是bind的主程序,一个是bind-chroot,还有一个是bind-utils,这两个包一般我们在安装bind时都要用到的,包括bind的拓展功能以及伪根等等,所以我们一并将其安装了
BIND的服务名是 named,因为BIND提供的是DNS服务,而DNS默认的协议是TCP与UDP协议,所以BIND服务在启动以后会占用53(Domain), 953(mdc)这两个端口号
三、BIND的配置文件
安装完BIND以后,BIND的主配置文件通常是保存在两个位置:
/etc/named.conf -BIND服务主配置文件
/var/named/ -域的zone配置文件
但是我们如果在安装了 bind-chroot 这个程序以后,BIND的主配置文件存放位置就变了,此时BIND的主配置文件会被封装到一个伪根目录内,此时的配置文件位置为:
/var/named/chroot/etc/named.conf -BIND服务主配置文件
/var/named/chroot/var/named -域的zone配置文件
为什么安装了bind-chroot以后,BIND的主配置文件的存放位置变了呢?这里就涉及到了一个伪根的知识,chroot是通过将相关文件封装到一个伪根目录内,已达到安全防护的目的,一旦该程序被攻破,将只能访问到伪根目录内的内容,而并不是真实的根目录。我们知道Linux的根目录是 / ,我们的服务如果安装了chroot这个程序,此时我们的服务的配置文件都会被安装到我们的伪根里面,会在里面生成一个与原来服务完全相同的一个目录体系结构。我们知道 /var/named/chroot 这个肯定不是我们的根目录,但是如果在安装了chroot以后,该服务的根目录就会把 /var/named/chroot 当成是自己的根目录,这样就可以对我们的真实根目录进行保护,所以建议大家在安装网络服务时最好都附带安装上chroot这个程序,有关chroot的更多知识,可以参考这篇文章 理解chroot
不同于其他的服务,BIND服务在安装完以后不会有预置的配置文件,其他服务比如samba、httpd服务安装完以后其目录下都会有一些配置文件,而BIND服务是没有的,怎么办呢?我们通常在安装完BIND服务以后,有关该服务的一些文档都会保存在 /usr/share/doc 这个目录下,在 (/usr/share/doc/bind-9.8.2/)这个目录下有我们BIND配置文件的模板,我们只需要将其拷贝到其伪根目录下即可:
[root@xiaoluo ~]# cd /usr/share/doc/bind-9.8.2/sample/
[root@xiaoluo sample]# ls
etc var
我们看到,在sample目录下有两个文件夹,etc和var,我们将其拷贝过去即可
[root@xiaoluo ~]# cp -rv /usr/share/doc/bind-9.8.2/sample/etc/* /var/named/chroot/etc/
`/usr/share/doc/bind-9.8.2/sample/etc/named.conf' -> `/var/named/chroot/etc/named.conf'
`/usr/share/doc/bind-9.8.2/sample/etc/named.rfc1912.zones' -> `/var/named/chroot/etc/named.rfc1912.zones'
[root@xiaoluo ~]# cp -rv /usr/share/doc/bind-9.8.2/sample/var/* /var/named/chroot/var/
`/usr/share/doc/bind-9.8.2/sample/var/named/named.loopback' -> `/var/named/chroot/var/named/named.loopback'
`/usr/share/doc/bind-9.8.2/sample/var/named/named.ca' -> `/var/named/chroot/var/named/named.ca'
`/usr/share/doc/bind-9.8.2/sample/var/named/named.empty' -> `/var/named/chroot/var/named/named.empty'
`/usr/share/doc/bind-9.8.2/sample/var/named/slaves' -> `/var/named/chroot/var/named/slaves'
`/usr/share/doc/bind-9.8.2/sample/var/named/slaves/my.slave.internal.zone.db' -> `/var/named/chroot/var/named/slaves/my.slave.internal.zone.db'
`/usr/share/doc/bind-9.8.2/sample/var/named/slaves/my.ddns.internal.zone.db' -> `/var/named/chroot/var/named/slaves/my.ddns.internal.zone.db'
`/usr/share/doc/bind-9.8.2/sample/var/named/named.localhost' -> `/var/named/chroot/var/named/named.localhost'
`/usr/share/doc/bind-9.8.2/sample/var/named/my.internal.zone.db' -> `/var/named/chroot/var/named/my.internal.zone.db'
`/usr/share/doc/bind-9.8.2/sample/var/named/my.external.zone.db' -> `/var/named/chroot/var/named/my.external.zone.db'
`/usr/share/doc/bind-9.8.2/sample/var/named/data' -> `/var/named/chroot/var/named/data'
这个时候我们的根目录下就有了配置文件模板了,我们先来看看 named.conf 这个主配置文件的内容,其里面的代码行数非常多啊,因为模板文件将所有的情况都列在里面了,但是我们其实用不了那么多的东西,这里我们只需要保留最基本的几行即可,我们 named.conf 的最小化配置文件如下:
[root@xiaoluo etc]# vim named.conf /*
Sample named.conf BIND DNS server 'named' configuration file
for the Red Hat BIND distribution. See the BIND Administrator's Reference Manual (ARM) for details, in:
file:///usr/share/doc/bind-{version}/arm/Bv9ARM.html
Also see the BIND Configuration GUI : /usr/bin/system-config-bind and
its manual.
*/ options
{
// Put files that named is allowed to write in the data/ directory:
directory "/var/named"; // "Working" directory //listen-on port 53 { any; };
listen-on port 53 { 127.0.0.1; }; //listen-on-v6 port 53 { any; };
listen-on-v6 port 53 { ::1; }; };
这个就是我们 named.conf 最小化的配置了,指定了 named 的工作目录,指定了IPv4、IPv6的端口以及IP地址
四、配置域主DNS服务器
在了解了BIND服务的一些配置文件及工作目录以后,我们接下来就要开始配置自己的域主DNS服务器了
一个域的主服务器(Master)是这个域的信息的权威服务器,所有这个域的信息都是由域的主服务器控制,配置一个域的主服务器通常需要以下几个步骤:
(比如说我现在要为 cnblogs.com 这个域配置一个主DNS服务器)
①在BIND的主配置文件中添加该域的定义
首先我们需要在named.conf这个文件里面添加 cnblogs.com 这个域的定义,需要在named.conf这个文件下面添加一行域的zone定义:
zone "cnblogs.com" {
type master;
file "cnblogs.com.zone";
}; // ;号一定要加上
[root@xiaoluo etc]# vim named.conf /*
Sample named.conf BIND DNS server 'named' configuration file
for the Red Hat BIND distribution. See the BIND Administrator's Reference Manual (ARM) for details, in:
file:///usr/share/doc/bind-{version}/arm/Bv9ARM.html
Also see the BIND Configuration GUI : /usr/bin/system-config-bind and
its manual.
*/ options
{
// Put files that named is allowed to write in the data/ directory:
directory "/var/named"; // "Working" directory //listen-on port 53 { any; };
listen-on port 53 { 127.0.0.1; }; //listen-on-v6 port 53 { any; };
listen-on-v6 port 53 { ::1; }; }; zone "cnblogs.com" // 里面写上我们要配置的域的域名
{
type master; // 指定我们要配置的是域主DNS服务器
file "cnblogs.com.zone"; // 指定域的zone文件名为 cnblogs.com.zone ,一般都是以域名.zone命名
};
这样我们的named.conf里面就定义了 cnblogs.com 这个域的信息了
②在 /var/named/chroot/var/named 中创建该域的zone文件
因为zone文件的格式非常的复杂,包含了一些跟域从服务器同步刷新以及资源记录等信息,所以我们手动去编写很容易写错,因此我们一般使用默认的 named.localhost 这个文件来作为 zone 文件的模板,我们只需要复制出这样一份文件即可:
[root@xiaoluo etc]# cd /var/named/chroot/var/named/
[root@xiaoluo named]# ls
data my.internal.zone.db named.empty named.loopback
my.external.zone.db named.ca named.localhost slaves
[root@xiaoluo named]# cp named.localhost cnblogs.com.zone
[root@xiaoluo named]# ls
cnblogs.com.zone my.external.zone.db named.ca named.localhost slaves
data my.internal.zone.db named.empty named.loopback
这样我们的 named 目录下就存在了一个叫做 cnblogs.com.zone的文件了,这个文件的名字要和上一步骤指定的文件名字要相同
③编辑zone文件,添加我们需要的信息
此时我们可以编辑这个 cnblogs.com.zone 文件,然后在里面添加我们需要的信息了
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1 IN MX 10 mail.cnblogs.com. // 添加一条 邮件记录,邮件记录后面要跟域名,它会递归的解析这个域名,所以该域名的资源记录一定要有,后面的 . 一定要写上
www IN A 192.168.1.111 // 添加了一条 www 的资源记录 IP地址为 192.168.1.111
mail IN A 192.168.1.222 // 添加了一条 mail 的资源记录 IP地址为 192.168.1.222
【注意:】MX记录一定要定义资源记录的最前面,否则就会解析不成功,MX后面域名一定要写完整,. 也要写上
我们在配置好以后,都要确保配置文件拥有 r 的权限,
[root@xiaoluo named]# ls -l
total 36
-rw-r--r--. 1 root root 228 Jun 6 01:10 cnblogs.com.zone
drwxr-xr-x. 2 root root 4096 Jun 6 00:11 data
-rw-r--r--. 1 root root 56 Jun 6 00:11 my.external.zone.db
-rw-r--r--. 1 root root 56 Jun 6 00:11 my.internal.zone.db
-rw-r--r--. 1 root root 1892 Jun 6 00:11 named.ca
-rw-r--r--. 1 root root 152 Jun 6 00:11 named.empty
-rw-r--r--. 1 root root 152 Jun 6 00:11 named.localhost
-rw-r--r--. 1 root root 168 Jun 6 00:11 named.loopback
drwxr-xr-x. 2 root root 4096 Jun 6 00:11 slaves
因为DNS服务是网络服务,之前在讲SELinux时提到过,CentOS默认采用的是目标策略,即对所有的目标(网络)进程进行限制,所以我们这里为了方便,将其设置成permissive
[root@xiaoluo named]# getenforce
Enforcing
[root@xiaoluo named]# setenforce 0
[root@xiaoluo named]# getenforce
Permissive
④启动我们 BIND 服务或者通过 reload 命令刷新我们的 BIND 服务
[root@xiaoluo named]# service named start
Generating /etc/rndc.key: [ OK ]
Starting named: [ OK ]
没有任何报错信息,则表示我们的BIND服务就启动正常了
这个时候我们就可以通过测试来检验我们的DNS主服务器是否配置成功了,如果是别的机器,我们只需要将其DNS的地址指向我这台主机地址即可,这里我就在本机上进行实验,修改 /etc/resolv.conf 文件,将nameserver指向当前主机:
[root@xiaoluo named]# vim /etc/resolv.conf # Generated by NetworkManager
#domain localdomain
#search localdomain com
#nameserver 192.168.198.2 nameserver 127.0.0.1
⑤使用host或者dig命令来检测DNS是否配置成功
// 查询www.cnblogs.com的IP地址
[root@xiaoluo named]# dig www.cnblogs.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.4 <<>> www.cnblogs.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47531
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; QUESTION SECTION:
;www.cnblogs.com. IN A ;; ANSWER SECTION:
www.cnblogs.com. 86400 IN A 192.168.1.111 // 我们刚才自己定义的IP ;; AUTHORITY SECTION:
cnblogs.com. 86400 IN NS cnblogs.com. ;; ADDITIONAL SECTION:
cnblogs.com. 86400 IN A 127.0.0.1
cnblogs.com. 86400 IN AAAA ::1 ;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Jun 6 01:21:05 2013
;; MSG SIZE rcvd: 107 // 查询cnblogs.com这个域的邮件记录
[root@xiaoluo named]# dig -t mx cnblogs.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.4 <<>> -t mx cnblogs.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37707
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 3 ;; QUESTION SECTION:
;cnblogs.com. IN MX ;; ANSWER SECTION:
cnblogs.com. 86400 IN MX 10 mail.cnblogs.com. // 我们自己定义的邮件MX记录 ;; AUTHORITY SECTION:
cnblogs.com. 86400 IN NS cnblogs.com. ;; ADDITIONAL SECTION:
mail.cnblogs.com. 86400 IN A 192.168.1.222 // 解析出来的邮件MX记录的mail主机的IP地址
cnblogs.com. 86400 IN A 127.0.0.1
cnblogs.com. 86400 IN AAAA ::1 ;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Jun 6 01:27:33 2013
;; MSG SIZE rcvd: 124 // 查询mail.cnblogs.com的IP地址
[root@xiaoluo named]# dig mail.cnblogs.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.4 <<>> mail.cnblogs.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11360
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; QUESTION SECTION:
;mail.cnblogs.com. IN A ;; ANSWER SECTION:
mail.cnblogs.com. 86400 IN A 192.168.1.222 // 我们自己定义的邮件服务器主机IP地址 ;; AUTHORITY SECTION:
cnblogs.com. 86400 IN NS cnblogs.com. ;; ADDITIONAL SECTION:
cnblogs.com. 86400 IN A 127.0.0.1
cnblogs.com. 86400 IN AAAA ::1 ;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Jun 6 01:34:42 2013
;; MSG SIZE rcvd: 108
我们看到此时我们的DNS主服务器以及配置成功了,因为我们刚才讲 /etc/resolv.conf 里的nameserver指向了当前的主机,而不是公网的权威DNS服务器,所以此时就只会根据本机的DNS服务器去负责处理,只要当前DNS服务器上有相关的资源记录,则就会给我们返回相关的信息
五、错误排查
因为BIND服务的主配置文件 named.conf 以及我们的 zone 配置文件其内容非常复杂,晦涩难懂,所以难免会出现配置出错的情况,因此为了方便我们进行错误排查,BIND还提供了两个非常的命令来对我们的 named.conf 和 zone 文件进行排错检查
①命令 named-checkconf 可以查看BIND的主配置文件的错误:
[root@xiaoluo named]# named-checkconf /var/named/chroot/etc/named.conf
②命令 named-checkzone 可以查看zone配置文件的错误:
[root@xiaoluo named]# named-checkzone cnblogs.com.zone /var/named/chroot/var/named/cnblogs.com.zone
zone cnblogs.com.zone/IN: loaded serial 0
OK
通过这两个命令我们就可以在配置完BIND主配置文件以及zone文件以后对其进行文件排查了,如果没有返回信息,则表示配置没有问题
至此,本篇随笔的编写就告一段落了,眨眼睛发现已经快凌晨2点了,也该睡觉了!!!!!!!!!!!!
本篇随笔详细讲解了BIND这个常用的DNS服务软件以及如何配置我们的DNS域主服务器.............
配置域主DNS服务器的更多相关文章
- 配置域从DNS服务器以及缓存DNS服务器
一.域从DNS服务器的作用 我们在之前上一篇随笔里有提到,DNS服务器一般有三种类型,一个是Primary DNS Server(主DNS服务器),一个是Secondary DNS Server(从D ...
- 6.DNS公司PC访问外网的设置 + 主DNS服务器和辅助DNS服务器的配置
网站部署之~Windows Server | 本地部署 http://www.cnblogs.com/dunitian/p/4822808.html#iis DNS服务器部署不清楚的可以看上一篇:ht ...
- Dnsmasq安装与配置-搭建本地DNS服务器 更干净更快无广告DNS解析
默认的情况下,我们平时上网用的本地DNS服务器都是使用电信或者联通的,但是这样也导致了不少的问题,首当其冲的就是上网时经常莫名地弹出广告,或者莫名的流量被消耗掉导致网速变慢.其次是部分网站域名不能正常 ...
- Dnsmasq安装与配置-搭建本地DNS服务器
默认的情况下,我们平时上网用的本地DNS服务器都是使用电信或者联通的,但是这样也导致了不少的问题,首当其冲的就是上网时经常莫名地弹出广告,或者莫名的流量被消耗掉导致网速变慢.其次是部分网站域名不能正常 ...
- SQL Server ->> 高可用与灾难恢复(HADR)技术 -- AlwaysOn(实战篇)之建立活动目录域、DNS服务器和Windows故障转移群集(准备工作)
因为篇幅原因,AlwaysOn可用性组被拆成了两部分:理论部分和实战部分.而实战部分又被拆成了准备工作和AlwaysOn可用性组搭建. 三篇文章各自的链接: SQL Server ->> ...
- VMware配置与管理DNS服务器
一,安装DNS服务器角色 1,点击[开始]→[管理工具]→[服务器管理器]→"仪表板"选项的[添加角色和功能] 持续单击[下一步],直到出现"选择服务器角色"窗 ...
- AD域内DNS服务器如何解析公网域名
原创地址:http://www.cnblogs.com/jfzhu/p/4022999.html 转载请注明出处 AD域内需要有DNS服务器,用于解析域内的计算机名,但是域内的计算如何解析公网的域名呢 ...
- ubuntu配置简单的DNS服务器
之所以说是简单的服务器,实现的功能很简单,通过这个dns server 查询制定域名的时候,能够根据设置的值来返回IP,当前的需求是需要轮询的返回IP DNS 轮询机制会受到多方面的影响,如:A记录的 ...
- centos 6.5 DNS服务器 搭建
一.DNS 介绍 DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,DNS协议运行在UDP协议之上,使用端口号53(Domain), 95 ...
随机推荐
- 使用EntityFramework6完成增删查改和事务
使用EntityFramework6完成增删查改和事务 上一节我们已经学习了如何使用EF连接数据库,并简单演示了一下如何使用EF6对数据库进行操作,这一节我来详细讲解一下. 使用EF对数据库进行操作, ...
- uva 10129 play on words——yhx
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABNUAAANeCAYAAAA1BjiHAAAgAElEQVR4nOydabWsuhaFywIasIAHJK
- HDU 2669 Romantic【扩展欧几里德】
裸的扩展欧几里德,求最小的X,X=((X0%b)+b)%b,每个X都对应一个Y,代入原式求解可得 #include<stdio.h> #include<string.h> ty ...
- 本地不安装Oracle,plsql远程连接数据库
由于Oracle的庞大,有时候我们需要在只安装Oracle客户端如plsql.toad等的情况下去连接远程数据库,可是没有安装Oracle就没有一切的配置文件去支持.最后终于发现一个很有效的方法,Or ...
- 转:Metronic – 超赞!基于 Bootstrap 的响应式后台管理模板
http://www.cnblogs.com/lhb25/p/metronic-responsive-admin-dashboard-template.html
- app:transformClassesWithJarMergingForDebug uplicate entry: android/support/v4/app/BackStackState$1.class
.Execution failed for task ':app:transformClassesWithJarMergingForDebug'.> com.android.build.api. ...
- GridControl控件绑定RepositoryItemImageComboBox 作为下拉框使用
如果,时间长时了,已前做过的东西,都记不得了,所以记录一下. 废话不多说. 1.拖出gridview控件,然后将字段绑定上去 2.将要做下拉框的控件加入RepositoryItemImageCombo ...
- 导航 tab
- 工作者队列原理解析(后台writeback)
每一个CPU都会有两个(或者一个?)kwoker线程. kwoker线程,说白了就是尽量减少进程的数目,为了什么呢?因为线程数据太多的话,调度的成本比较高,占用太多的系统资源,所以这里是进程的一个简化 ...
- OAF与XML Publisher集成(转)
原文地址:OAF与XML Publisher集成 有两种方式,一种是用VO与XML Publisher集成,另一种是用PL/SQL与XML Publisher集成 用VO与XML Publisher集 ...