http://www.openldap.org/

http://blog.csdn.net/chinalinuxzend/article/details/1870656  OpenLDAP学习笔记

http://www.ttlsa.com/linux/openldap-openssh-lpk-sudo-tls-auth/  LINUX下基于LDAP集中系统用户认证系统

http://directory.apache.org/api/  apache dierctory

http://blog.csdn.net/zmxj/article/details/369456  ldap目录树的结构

在安装配置任何一个服务器时,尽量养成一个好习惯,就是在命令行下使用bash内置的目录栈命令,因为要固定的用那么几个命令,目录栈此时正好用上。

svn,httpd,openldap服务器配置目录与数据目录比较

[root@host02 ~]# cd /mnt/sharerepo/
[root@host02 sharerepo]# ls
aa.log client conf server terminal wuliu
[root@host02 server]# ls
conf db format hooks locks README.txt
[root@host02 db]# ll
total 672
-rw-rw-rw-+ 1 96 96      2 Nov 11 01:39 current
-r--r--r--+ 1 96 96     22 Oct 28 13:53 format
-rw-rw-rw-+ 1 96 96   1920 Oct 28 13:53 fsfs.conf
-rw-rw-rw-+ 1 96 96      5 Oct 28 13:53 fs-type
-rw-rw-rw-+ 1 96 96      2 Oct 28 13:53 min-unpacked-rev
-rw-r--r--+ 1 96 96 636928 Nov 11 01:39 rep-cache.db
drwxrwsrwx+ 3 96 96   4096 Oct 28 13:53 revprops
drwxrwsrwx+ 3 96 96   4096 Oct 28 13:53 revs
drwxrwsrwx+ 2 96 96   4096 Nov 11 01:39 transactions
-rw-rw-rw-+ 1 96 96      2 Nov 10 23:18 txn-current
-rw-rw-rw-+ 1 96 96      0 Oct 28 13:53 txn-current-lock
drwxrwsrwx+ 2 96 96   4096 Nov 11 01:39 txn-protorevs
-rw-rw-rw-+ 1 96 96     37 Oct 28 13:53 uuid
-rw-rw-rw-+ 1 96 96      0 Oct 28 13:53 write-lock svn的配置目录
/mnt/sharerepo/server/conf
svn的数据目录
/mnt/sharerepo/server/db httpd的配置目录
/etc/httpd/conf/
httpd的数据目录
/var/www/html/ openldap的配置目录
10:24:28 43 /usr/local/etc/openldap:#ll
total 40
-rw-r--r--. 1 root root 618 Nov 13 10:06 1.ldif
-rw-------. 1 root root 845 Nov 2 17:22 DB_CONFIG.example
-rw-r--r--. 1 root root 245 Nov 2 17:22 ldap.conf
-rw-r--r--. 1 root root 245 Nov 2 17:22 ldap.conf.default
drwxr-xr-x. 2 root root 4096 Nov 2 17:22 schema
-rw-------. 1 root root 1956 Nov 5 17:34 slapd.conf
-rw-------. 1 root root 2129 Nov 2 17:22 slapd.conf.default
drwxr-xr-x. 2 root root 4096 Nov 13 10:02 slapd.d
-rw-------. 1 root root 2626 Nov 5 17:17 slapd.ldif
-rw-------. 1 root root 2651 Nov 2 17:22 slapd.ldif.default openldap的数据目录
10:23:35 41 /usr/local/var/openldap-data:#ll
total 1016
-rw-r--r--. 1 root root 4096 Nov 5 17:34 alock
-rw-------. 1 root root 24576 Nov 5 17:34 __db.001
-rw-------. 1 root root 188416 Nov 5 17:34 __db.002
-rw-------. 1 root root 270336 Nov 5 17:34 __db.003
-rw-------. 1 root root 98304 Nov 5 17:34 __db.004
-rw-------. 1 root root 753664 Nov 5 17:34 __db.005
-rw-------. 1 root root 32768 Nov 5 17:34 __db.006
-rw-------. 1 root root 845 Nov 2 17:22 DB_CONFIG.example
-rw-------. 1 root root 8192 Nov 5 15:14 dn2id.bdb
-rw-------. 1 root root 32768 Nov 5 15:14 id2entry.bdb
-rw-------. 1 root root 10485760 Nov 5 17:15 log.0000000001
-rw-------. 1 root root 8192 Nov 5 15:14 objectClass.bdb

yum install openldap-servers

yum install openldap-clients

/usr/sbin/slapacl
/usr/sbin/slapadd
/usr/sbin/slapauth
/usr/sbin/slapcat
/usr/sbin/slapd
/usr/sbin/slapdn
/usr/sbin/slapindex
/usr/sbin/slappasswd
/usr/sbin/slapschema
/usr/sbin/slaptest

LDAP:Lightweight Directory Access Protocol  轻量级目录访问协议

LDAP协议基于X.500标准, 与X.500不同,LDAP支持TCP/IP, 是跨平台的和标准的协议

LDAP标准实际上是在X.500标准基础上产生的一个简化版本

AD是Active  Directory的缩写,AD应该是LDAP的一个应用实例,而不应该是LDAP本身。比如:windows域控的用户、权限管理应该是微软公司使用LDAP存储了一些数据来解决域控这个具体问题,

只是AD顺便还提供了用户接口,也可以利用Active Directory当做LDAP服务器存放一些自己的东西而已。比如LDAP是关系型数据库,微软自己在库中建立了几个表,每个表都定义好了字段。显然这些表和字段都是根据微软自己的需求定制的,而不是LDAP协议的规定。然后微软将LDAP做了一些封装接口,用户可以利用这些接口写程序操作LDAP,使得Active Directory也成了一个LDAP服务器。

总之:Active Directory = LDAP服务器+LDAP应用(Windows域控)。Active Directory先实现一个LDAP服务器,然后自己先用这个LDAP服务器实现了自己的一个具体应用(域控)

7.1.2
目录服务标准:X.500和LDAP
目录服务的两个国际标准是X.500和LDAP。X.500包括了从X.501到X.509等一系列目录数据服务,已经被作为提供全球范围的目录服务的一种国际标准。
而LDAP是基于TCP/IP协议的目录访问协议,是Internet上目录服务的通用访问协议。
X.500是国际电联定义的目录标准,它包括了一系列完整的目录数据服务。用于X.500客户机与服务器通信的协议是DAP(Directory Access Protocol)。X.500为网络用户提供分布式目录服务。
它定义一个机构如何在一个企业的全局范围内共享名字和与它们相关的对象。X.500规定总体命名方式,全球统一的名字空间,一个完整的X.500系统称为一个目录。这个目录是一个数据库,称为目录信息数据库(DIB)。X.500是层次性的,所有对象被组织成树形结构,模仿一个机构的组织形式。X.500目录服务还能够实现身份认证、访问控制。它被公认为是实现一个目录服务的最好途径,但是它的实现需要很大投资,效率不高,在实际应用中存在着不少障碍。DAP对相关层协议环境要求过多,在许多小系统上无法使用,也不适应TCP/IP协议体系。
鉴于此,出现了DAP的简化版LDAP。
LDAP(Lightweight Directory Access Protocol)的目的很明确,就是要简化X.500目录的复杂度以降低开发成本,同时适应Internet的需要。LDAP已经成为目录服务的标准,它比X.500 DAP协议更为简单实用,而且可以根据需要定制,因而实际应用也更为广泛。与X.500不同,LDAP支持TCP/IP协议,这对访问Internet是必需的。X.500采用公钥基础结构(PKI)作为主要的认证方式,而LDAP最初并不考虑安全问题,目前已增加安全机制。为保证数据访问安全,可使用LDAP的ACL(访问控制列表)来控制对数据读和写的权限。
LDAP目前有两个版本:第2版LDAP v2和第3版LDAP v3。基于LDAP v3的服务器可以让普通用户使用支持LDAP功能的Web浏览器,进行有关电子邮件用户的查询,可以查询的用户属性包括姓名、电话号码、电子邮件地址和地址信息等;系统管理员可以通过LDAP客户程序远程进行目录管理操作,如添加、删除和修改用户账户信息等;可以请求服务器执行扩展操作。

内部细节并不重要,因为这些工具可以将数据库的内容以文本格式(LDAP 数据交换格式,LDIF)呈现在您的面前。

LDAP 信息被组织成属性和值的组合,称为 条目(entry)。条目可能会具有必须的属性或可选属性。一个条目的属性必须要遵循 /etc/openldap/schema/ 模式文件中定义的规则。规则包含在条目的 objectclass 属性中。看一下下面的关系,我们可以看出 posixAccount objectclass 中包含了密码文件条目的信息(posixAccount userPassword 是文件条目的 base64 编码)。

在LDAP中信息以树状方式组织,在树状信息中的基本数据单元是条目,而每个条目由属性构成,属性中存储有属性值

(1)O:Organization 组织
根的表示方法(参考LDAP Server)
a. 组织名称(x.500)
假设组织名称为zhangyang
o=zhangyang
b. 域名
假设组织域名为zhangyang.com
o=zhangyang.com或dc=zhangyang, dc=com
(2)OU: Organization Unit 组织单元
(3)Entry: 条目,记录, 由DN唯一标识
(4)DN: Distinguished Name,每个叶子结点到根的路径就是DN
如: cn=test, ou=ou1, o=zhangyang.com
(5)RDN: Relative Distinguished Name,叶子结点本身的名字是RDN
如:test就是RDN
(6)Base DN: 基准DN,指定LDAP search的起始DN,即从哪个DN下开始搜索
搜索组织单元为ou1,则base DN为 ou=ou1,o=O
ou=ou1,o=zhangyang.com 或 ou=ou1,dc=zhangyang, dc=com
(7)AttributeType:属性类型,    
(8)ObjectClass: 对象类,由多个attributetype(属性类型)组成, 每个条目(Entry)必须属于某个或多个对象类(Object Class)
(9)schema文件: 定义对象类、属性类型、语法和匹配规则, 有系统schema,用户也可自定义schema文件
(10) LDIF:LDAP Interchange Format, 是指存储LDAP配置信息及目录内容的标准文本文件格式。LDIF文件常用来向目录导入或更改记录信息,
基本格式:AttributeName: value
属性名 冒号 空格 属性值

dn: dc=zy,dc=net
objectclass: dcObject
objectclass: organization
dc: zy
o: zhangyang
(11)监听端口
TCP/IP port: 389
SSL port: 636

三、Search filter:
每个表达式都放在括号内,多个表达式用与(&),或(|),非(!)等连结
&   (&(filter1)(filter2)...(filtern))   filter1,filter2,...,filtern同时满足
|    (|(filter1)(filter2)...(filtern))    filter1,filter2,...,filtern至少有一个满足
!    (!(filter))                             非filter
filter支持通配符(wildcard)*
*表示零或多个字符

如(objectclass=*),指列出所有类型的记录(不过分类)

四、LDAP客户端和LDAP服务器端交互过程
1. 绑定。LDAP客户端与LDAP服务器建立连接。可匿名绑定,也可以用户名+密码形式绑定(具体参考LDAP Server, AD不支持匿名查询)。
2. LDAP客户端向LDAP服务器发出查询、添加、修改、删除entry等操作。  
3. 解除绑定。LDAP客户端与LDAP服务器断开连接。

五、 LDAP软件
常见的LDAP服务器:Microsoft Active Directory, IBM Domino, openldap
常见的LDAP客户端: JXplorer

DNS树
UNIX文件的目录树
ldap的DIT

超级用户与密码由slapd.conf下面指定

rootdn          "cn=Manager,dc=fgy,dc=com"

rootpw          secret

curl -O ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.42.tgz
tar zxvf openldap-2.4.42.tgz
cd openldap-2.4.42
./configure
yum install db4-devel
make depend
make
make test
make install
cd /usr/local/etc/openldap
vi slapd.conf
cd /usr/local/var/openldap-data
/usr/local/libexec/slapd
默认安装完成之后,就可以启动,然后尽量通过工具去操作slapadd,slaptest等
两种配置方式老的slapd.conf,与新的slapd-config方式。 mkdir slapd.d
两种方式,
1.复制一个现成的,然后添加
cp slapd.ldif slapd.d/1.ldif
grep -v "^#" 1.ldif >2.ldif
slapadd -F /usr/local/etc/openldap/slapd.d -n 0 -l 2.ldif
优先顺序是先检查slapd.d目录中有无slapd-config方式的文件,如无,会找slapd.conf文件来启动,并生成bdb格式的文件,如下
[root@localhost slapd.d]# ll /usr/local/var/openldap-data/
total 980
-rw-r--r--. 1 root root     2048 Nov 14 09:46 alock
-rw-------. 1 root root    24576 Nov 14 09:46 __db.001
-rw-------. 1 root root   188416 Nov 14 09:46 __db.002
-rw-------. 1 root root   270336 Nov 14 09:46 __db.003
-rw-------. 1 root root    98304 Nov 14 09:46 __db.004
-rw-------. 1 root root   753664 Nov 14 09:46 __db.005
-rw-------. 1 root root    32768 Nov 14 09:46 __db.006
-rw-------. 1 root root     8192 Nov 14 09:46 dn2id.bdb
-rw-------. 1 root root    32768 Nov 14 09:46 id2entry.bdb
-rw-------. 1 root root 10485760 Nov 14 09:46 log.0000000001
在服务未启动之前就添加或转换,这样当服务启动后,会在此ldif所定义的目录中生成以下文件
[root@localhost slapd.d]# ll /usr/local/var/openldap-data/
total 16
-rw-------. 1 root root 12288 Nov 14 10:08 data.mdb
-rw-------. 1 root root  8192 Nov 14 10:08 lock.mdb 2.将现成的进行转换
slaptest -f /usr/local/etc/openldap/slapd.conf -F /usr/local/etc/openldap/slapd.d kill -INT `cat /usr/local/var/run/slapd.pid`
ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
ldapsearch -x -b 'dc=fgy,dc=com' '(objectclass=*)'
ldapsearch -x -D cn=config -w VerySecret -b cn=config
ldapsearch -x -D cn=config -w secret -b cn=config
ldapadd -x -D "cn=Manager,dc=fgy,dc=com" -W -f a.ldif
ldapadd -x -D "cn=wo,dc=fgy1,dc=com" -W -f b.ldif
ldapwhoami
slaptest -f slapd.conf -F slapd.d
slapindex -b 'dc=fgy,dc=com'
slappasswd -s wo 10:39:45 16 ~/packages/openldap-2.4.42:#slaptest -u -f /usr/local/etc/openldap/slapd.conf
config file testing succeeded 15:08:25 62 /usr/local/etc/openldap/schema:#/usr/local/libexec/slapd -d ?
Installed log subsystems: Any (-1, 0xffffffff)
Trace (1, 0x1)
Packets (2, 0x2)
Args (4, 0x4)
Conns (8, 0x8)
BER (16, 0x10)
Filter (32, 0x20)
Config (64, 0x40)
ACL (128, 0x80)
Stats (256, 0x100)
Stats2 (512, 0x200)
Shell (1024, 0x400)
Parse (2048, 0x800)
Sync (16384, 0x4000)
None (32768, 0x8000) NOTE: custom log subsystems may be later installed by specific code

控制台查看日志
14:01:20 122 /usr/local/etc/openldap:#/usr/local/libexec/slapd -d 256
56457cb5 @(#) $OpenLDAP: slapd 2.4.42 (Nov  2 2015 17:08:40) $
        root@localhost.localdomain:/root/packages/openldap-2.4.42/servers/slapd
56457cb5 bdb_db_open: warning - no DB_CONFIG file found in directory /usr/local/var/openldap-data: (2).
Expect poor performance for suffix "dc=fgy,dc=com".
56457cb5 bdb_monitor_db_open: monitoring disabled; configure monitor database to enable
56457cb5 bdb_db_open: warning - no DB_CONFIG file found in directory /usr/local/var/open: (2).
Expect poor performance for suffix "dc=fgy1,dc=com".
56457cb5 bdb_db_open: warning - no DB_CONFIG file found in directory /usr/local/var/myhome: (2).
Expect poor performance for suffix "dc=myhome,dc=com".
56457cb5 slapd starting 15:08:48 63 /usr/local/etc/openldap/schema:#ps -ef|grep slapd
root 6932 1 0 Nov02 ? 00:00:00 /usr/local/libexec/slapd
root 25258 19416 0 15:09 pts/0 00:00:00 grep slapd 停止服务
15:14:01 76 /usr/local/etc/openldap:#kill -INT `cat /usr/local/var/run/slapd.pid`
15:14:21 77 /usr/local/etc/openldap:#ps -ef|grep slapd
root 25383 19416 0 15:14 pts/0 00:00:00 grep slapd 启动服务
15:14:27 78 /usr/local/etc/openldap:#/usr/local/libexec/slapd
15:14:52 79 /usr/local/etc/openldap:#ps -ef|grep slapd
root 25385 1 0 15:14 ? 00:00:00 /usr/local/libexec/slapd
root 25388 19416 0 15:14 pts/0 00:00:00 grep slapd 15:23:19 85 /usr/local/etc/openldap:#man slapd.conf
15:23:19 85 /usr/local/etc/openldap:#man slapd.backends 15:33:29 91 /usr/local/etc/openldap:#man slapd-bdb
15:40:51 92 /usr/local/etc/openldap:#man slapd-mdb 10:32:01 11 ~/packages/openldap-2.4.42:#slappasswd
New password:
Re-enter new password:
{SSHA}J/PnUzwhAju1gn6hqUzktwhZKOHpEzuU 15:50:34 102 /usr/local/etc/openldap:#slappasswd -s wo
{SSHA}FxVQwKTQrn0vwIJ2KUmPwy2aJkk0wl+F 16:08:11 14 ~:#cat b.ldif
dn: dc=fgy1,dc=com
objectclass: dcObject
objectclass: organization
o: woei
dc: fgy1 dn: cn=wo,dc=fgy1,dc=com
objectclass: organizationalRole
cn: wo
下面这个密码是fgy1.com的密码,每个suffix的密码由rootpw指定
16:08:15 15 ~:#ldapadd -x -D "cn=wo,dc=fgy1,dc=com" -W -f b.ldif
Enter LDAP Password:
ldap_bind: Invalid credentials (49)
16:08:44 16 ~:#ldapadd -x -D "cn=wo,dc=fgy1,dc=com" -W -f b.ldif
Enter LDAP Password:
adding new entry "dc=fgy1,dc=com" adding new entry "cn=wo,dc=fgy1,dc=com" vi /usr/local/etc/openldap/slapd.conf
加入下面部分,定义了两个数据库,目录要在启动服务之前先建立,权限一般700,否则不能启动服务 database bdb
suffix "dc=fgy,dc=com"
rootdn "cn=Manager,dc=fgy,dc=com"
rootpw secret
directory /usr/local/var/openldap-data
index objectClass eq database bdb
suffix "dc=fgy1,dc=com"
rootdn "cn=wo,dc=fgy1,dc=com"
rootpw {SSHA}FxVQwKTQrn0vwIJ2KUmPwy2aJkk0wl+F
directory /usr/local/var/open
index objectClass eq

添加项(entry)的过程是:不管是slapd.conf,还是slapd-config方式,

slapd.conf方式

先添加这些内容
database bdb
suffix "dc=fgy,dc=com"
rootdn "cn=Manager,dc=fgy,dc=com"
rootpw secret
directory /usr/local/var/openldap-data
index objectClass eq 再书写一个a.ldif,其实是书写两个entry,就是suffix与rootdn
dn: dc=fgy,dc=com
objectclass: dcObject
objectclass: organization
o: example company
dc: fgy dn: cn=Manager,dc=fgy,dc=com
objectclass: organizationalRole
cn: Manager 然后再导入,然后再添加其它的entry
ldapadd -x -D "cn=Manager,dc=fgy1,dc=com" -W -f a.ldif

slapd-config方式

先书写一个2.ldif,
再初始化slapadd -F /usr/local/etc/openldap/slapd.d -n 0 -l 2.ldif,再启动服务
如下:
dn: cn=config
objectClass: olcGlobal
cn: config
olcArgsFile: /usr/local/var/run/slapd.args
olcPidFile: /usr/local/var/run/slapd.pid dn: cn=schema,cn=config
objectClass: olcSchemaConfig
cn: schema include: file:///usr/local/etc/openldap/schema/core.ldif dn: olcDatabase=frontend,cn=config
objectClass: olcDatabaseConfig
objectClass: olcFrontendConfig
olcDatabase: frontend dn: olcDatabase=mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: mdb
olcSuffix: dc=flt,dc=com
olcRootDN: cn=wo,dc=flt,dc=com
olcRootPW: secret
olcDbDirectory: /usr/local/var/open2
olcDbIndex: objectClass eq 然后再添加entry,olcsuffix与olcrootdn是必添加项,与sldap.conf方式一样,每一项完成之后,要空格。
15:05:46 26 /usr/local/etc/openldap/slapd.d:#ldapadd -x -D "cn=wo,dc=flt,dc=com" -W
Enter LDAP Password:
dn:dc=flt,dc=com
objectclass:dcObject
objectclass:organization
o:fltdz
dc:flt adding new entry "dc=flt,dc=com" dn:cn=wo,dc=flt,dc=com
objectclass:organizationalRole
cn:wo adding new entry "cn=wo,dc=flt,dc=com" dn:cn=Barbara Jensen,dc=flt,dc=com
objectClass:person
cn:Barbara Jensen
cn:Babs Jensen
sn:Jensen adding new entry "cn=Barbara Jensen,dc=flt,dc=com" dn:cn=wxy,ou=members,dc=flt,dc=com
cn:wxy
sn:WXY
objectclass:person adding new entry "cn=wxy,ou=members,dc=flt,dc=com"

linux服务之openldap的更多相关文章

  1. 第11章 Linux服务管理

    1. 服务分类 (1)Linux的服务 ①Linux中绝大多数的服务都是独立的,直接运行于内存中.当用户访问时,该服务直接响应用户,其好处是服务访问响应速度快.但不利之处是系统中服务越多,消耗的资源越 ...

  2. 在 CentOS7 上将自定义的 jar 包注册为 linux 服务 service

    在 CentOS7 上将自定义的 jar 包注册为 linux 服务 service 1.在 /etc/rc.d/init.d/ 目录下创建一个名字和服务名完全相同的 shell 脚本文件 joyup ...

  3. linux笔记:linux服务管理

    linux服务的分类: 启动和自启动: 查询已经安装的服务: RPM包的默认安装路径: 独立服务的启动: 独立服务的自启动: 基于xinetd的服务的管理: xinetd服务的自启动: 源码包安装服务 ...

  4. Linux学习笔记(19) Linux服务管理

    1. 服务的分类 Linux服务可分为RPM包默认安装的服务和源码包安装的服务.前者可细分为独立的服务(直接作用于内存中)和基于xinetd服务.xinetd本身是独立的服务,其唯一的功能是管理其他服 ...

  5. [Linux]服务管理:rpm包, 源码包

    --------------------------------------------------------------------------------------------------- ...

  6. linux服务器之LVS、Nginx和HAProxy负载均衡器对比

    linux服务器之LVS.Nginx和HAProxy负载均衡器对比. LVS特点:  1.抗负载能力强,使用IP负载均衡技术,只做分发,所以LVS本身并没有多少流量产生:  2.稳定性.可靠性好,自身 ...

  7. 《如何将windows上的软件包或文件上传到linux服务上》

    昨天晚上朋友让我帮他简单的搭建个环境,他公司让他做款软件测试温度的,他自己搞的是嵌入式,在公司担任的是软件工程师,应届毕业生.也可能他们搞嵌入式的对这个linux系统不太熟,不会把windows上的软 ...

  8. linux服务端的网络编程

    常见的Linux服务端的开发模型有多进程.多线程和IO复用,即select.poll和epoll三种方式,其中现在广泛使用的IO模型主要epoll,关于该模型的性能相较于select和poll要好不少 ...

  9. Linux服务的管理

    1.Linux服务的介绍 系统服务 --某些服务的服务的对象是Linux系统本身,或者Linux系统系统用户,这类服务我们称为系统服务(System Service) 网络服务 --提供给网络中的其他 ...

随机推荐

  1. UITableView错误 ‘unable to dequeue a cell with identifier Cell'

    - (id)dequeueReusableCellWithIdentifier:(NSString *)identifier; - (id)dequeueReusableCellWithIdentif ...

  2. 通过AssetsLibrary框架访问所有相片

    该框架下有几个类,ALAssetsLibrary,ALAssetsGroup,ALAsset,ALAssetsFilter,ALAssetRepresentation. ALAssetsLibrary ...

  3. Qt发送HTTP请求

    http://hi.baidu.com/cmdmac/item/c45b9f0fb0d0938802ce1bbd 最近在搞QT跟服务器交互的东西,自然少不了发送和接受HTTP请求.在网上找了一些资料知 ...

  4. HTML中的鼠标光标属性

    在网页中默认的鼠标指针只有两种,一种是最普通的箭头,另一种是当移动到链接上时出现的“小手”.但现在越来越多的网页都使用了CSS鼠标指针技术,当将鼠标移动到链接上时,可以看到多种不同的效果.CSS可以通 ...

  5. php中数据库的操作

    1.Mysql客户端介绍,命令行:这种方法不友好. 2.Mysql客户端介绍,Web形式的可视化界面(phpMyAdmin) 优点:只要有浏览器就可以操作数据库 缺点: a)创建数据库

  6. sqlite 数据类型详解

    大多数的数据库引擎(到现在据我们所知的除了sqlite的每个sql数据库引擎)都使用静态的.刚性的类型,使用静态类型,数据的类型就由它的容器决定,这个容器是这个指被存放的特定列. Sqlite使用一个 ...

  7. 20145210姚思羽《Java程序设计》实验一实验报告

    实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验知识点 1. ...

  8. jquery 平滑滚动页面到某个锚点

    $(document).ready(function() {         $("a.topLink").click(function() {                 $ ...

  9. linux安装sqlcmd登录sqlserver

    首先从微软网站下载sqlncli安装文件,link. 因为是在内网安装,首先手工下载unixODBC2.3.0.tar.gz,下载后上传到服务器. 将下载的tar文件文件,放在同build_dm.sh ...

  10. iOS中计算文件夹中文件大小

    通常用于删除缓存的时,计算缓存大小 //单个文件的大小 - (long long) fileSizeAtPath:(NSString*) filePath{ NSFileManager* manage ...