返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >OpenLDAP LDIF详解
  • 532
分享到

OpenLDAP LDIF详解

linux运维服务器 2023-10-23 06:10:25 532人浏览 独家记忆
摘要

手把手一步步搭建LDAP服务器并加域 有必要理解的概念LDAPWindows Active Directory 服务器配置安装 OpenLDAP自定义安装修改对象(用户和分组等)修改olc

手把手一步步搭建LDAP服务器并加域


与其它博文和其它网络资料相比,本文会详细讲解LDIF配置。

有必要理解的概念

少说话,多做事。这里只介绍2个概念。

LDAP

LDAP是轻量级目录访问协议(Lightweight Directory Access Protocol),它是一种用于访问和维护分布式目录信息服务的协议,采用客户端-服务端模式,使用tcp/IP协议进行通信。

LDAP通常用于管理组织内的用户和资源信息,例如用户、组、计算机、打印机等,它允许用户通过一个唯一的身份标识符(DN)来访问目录,然后查找、修改和删除相关信息。

LDAP是一个跨平台的协议,可以在不同的操作系统、应用程序和设备之间互相通信。它的优点是安全、可靠、灵活、可扩展、易于管理,并且对于大型组织和企业应用特别有用。

在这里插入图片描述

windows Active Directory

Windows Active Directory (AD) 是一种用于管理和控制网络中用户、计算机和应用程序的服务。它是 Microsoft Windows 操作系统家族中的集中式数据库,可用于存储和组织网络中的各种对象和信息,如用户帐户、计算机、组、共享文件、打印机等。它提供了一种集中式的身份验证和访问控制机制,可以帮助管理员轻松地管理网络中的各种资源,并确保网络安全性和合规性。

通过 Windows Active Directory,管理员可以创建、管理和删除用户、计算机和其他网络对象,控制用户和计算机的访问权限,分配组策略,设置安全策略,管理共享文件和打印机等网络资源。AD 还提供了单点登录 (SSO) 功能,使用户可以通过一次登录访问多个网络资源,提高了工作效率。同时,它还提供了多种安全功能,如加密、认证和审计,以保护网络安全。

总之,Windows Active Directory 是一种强大的集中式管理和控制网络资源的服务,可以帮助组织维护网络安全和合规性,提高工作效率和生产力。
在这里插入图片描述

服务器配置

为了演示本文,我使用的是 Centos 7。在本文中,我将分享使用 在 ldapmodify linux 平台上安装和配置 OpenLDAP 的详细步骤。在 openldap 的旧版本中,配置是使用 执行 slapd.conf 的,但现在配置保存在 cn=config 数据库中。因此,我们将使用 和 ldapmodify 来 cn=config 安装和配置 OpenLDAP。

安装 OpenLDAP

  1. openldap-2*.rpm:提供 OpenLDAP 的配置文件和库。
  2. openldap-clients*.rpm 提供 OpenLDAP 的配置文件和库。
  3. openldap-servers*.rpm:提供配置和运行LDAP所需的服务器( slapd 、 slurpd )和其他实用程序。

如果仅配置客户端,则不需要包 openldap-servers*.rpm 。在 RHEL 系统上,您必须拥有 RHN 的有效订阅,或者您可以配置本地离线存储库,使用该存储库“yum”包管理器可以安装提供的 rpm 及其依赖项。

yum -y install openldap-clients openldap-servers

我们确保 slapd 将服务配置为自动启动,然后启动服务。

systemctl start slapdsystemctl enable slapdln -s '/usr/lib/systemd/system/slapd.service' '/etc/systemd/system/multi-user.target.wants/slapd.service'

检查服务的状态

[root@ldap-server ~]# systemctl status slapd● slapd.service - OpenLDAP Server DaemonLoaded: loaded (/usr/lib/systemd/system/slapd.service; disabled; vendor preset: disabled)Active: active (running) since Sat 2023-02-09 21:46:23 IST; 17min aGoDocs: man:slapdman:slapd-configman:slapd-hdbman:slapd-mdbfile:///usr/share/doc/openldap-servers/guide.htmlProcess: 17350 ExecStart=/usr/sbin/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTioNS (code=exited, status=0/SUCCESS)Process: 17336 ExecStartPre=/usr/libexec/openldap/check-config.sh (code=exited, status=0/SUCCESS)Main PID: 17352 (slapd)Tasks: 3Memory: 13.5MCGroup: /system.slice/slapd.service└─17352 /usr/sbin/slapd -u ldap -h ldapi:/// ldap:///Feb 09 22:01:32 ldap-server.example.com slapd[17352]: conn=1007 op=0 RESULT tag=97 err=0 text=Feb 09 22:01:32 ldap-server.example.com slapd[17352]: conn=1007 op=1 MOD dn="olcDatabase={0}config,cn=config"Feb 09 22:01:32 ldap-server.example.com slapd[17352]: conn=1007 op=1 MOD attr=olcRootDNFeb 09 22:01:32 ldap-server.example.com slapd[17352]: ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif"Feb 09 22:01:32 ldap-server.example.com slapd[17352]: conn=1007 op=1 RESULT tag=103 err=0 text=Feb 09 22:01:32 ldap-server.example.com slapd[17352]: conn=1007 op=2 MOD dn="olcDatabase={0}config,cn=config"Feb 09 22:01:32 ldap-server.example.com slapd[17352]: conn=1007 op=2 MOD attr=olcRootPWFeb 09 22:01:32 ldap-server.example.com slapd[17352]: conn=1007 op=2 RESULT tag=103 err=0 text=Feb 09 22:01:32 ldap-server.example.com slapd[17352]: conn=1007 op=3 UNBINDFeb 09 22:01:32 ldap-server.example.com slapd[17352]: conn=1007 fd=11 closed

自定义安装

安装后,我们必须为 admin 用户生成密码。在此示例中,我们使用一个简单的密码:“ redhat ”

[root@ldap-server cn=config]# slappasswdNew passWord:Re-enter new password:{sshA}eXlxd2J3D3dzdweXlxd2J3d3dzdw

修改对象(用户和分组等)

修改olcSuffix 和 olcRootDN 属性

OpenLDAP实际上将其信息存储在存储后端。我们可以将这些后端视为OpenLDAP使用的数据库。最常用的后端之一一直是 Berkeley DB back ends ,例如 bdb 或最近的 hdb 。存储在 hdb 后端的信息可以在 /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif 文件中找到。

在 LDIF 文件中,我们首先确定要添加、更改等的元素。为了唯一标识元素,我们使用 dn (可分辨名称)属性,该属性正是出于这个原因而创建的。因此,LDIF 文件的第一行可能是这样的:

dn: olcDatabase={2}hdb,cn=config

接下来,我们指定是否要添加属性、修改它等。

changeType: modify

如果我们想修改一个条目,我们还必须澄清我们是否要替换一个属性,删除它,等等。

replace: olcSuffix

最后,我们键入修改后属性的新值。

olcSuffix: dc=yyaw,dc=net

这整篇文章中还有许多 LDIF 示例,但现在,让我们回到 /etc/openldap/s-lapd.d/cn=config/olcDatabase={2}hdb.ldif 该文件。我们必须修改(至少)这两个条目:

olcSuffix: dc=yyqw,dc=comolcRootDN: cn=Manager,dc=yyqw,dc=com

要使用 ldapmodify 进行所有这些更改,我们必须准备一个 LDIF 文件,如下所示:

[root@ldap-server ~]# cat yyqw_config.ldifdn: olcDatabase={2}hdb,cn=confiGChangetype: modifyreplace: olcSuffixolcSuffix: dc=yyaw,dc=netdn: olcDatabase={2}hdb,cn=configchangetype: modifyreplace: olcRootDNolcRootDN: cn=admin,dc=yyaw,dc=net

第一行标识我们要更改的LDAP中的主条目。就在刚才,我们在 olcSuffix . /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif file 在此文件中,dn 属性为 ,由于文件位于 config 文件夹中,因此 full dn 属性为 dn: olcDatabase={2}hdb,cn=config dn: olcDatabase={2}hdb 。识别创建 LDIF 文件所需的数据的另一种(也许更好)方法是使用 ldapsearchcommand .

[root@ldap-server ~]# ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config olcDatabase=\*SASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0# extended LDIF## LDAPv3# base  with scope subtree# filter: olcDatabase=*# requesting: ALL## {-1}frontend, configdn: olcDatabase={-1}frontend,cn=configobjectClass: olcDatabaseConfigobjectClass: olcFrontendConfigolcDatabase: {-1}frontend# {0}config, configdn: olcDatabase={0}config,cn=configobjectClass: olcDatabaseConfigolcDatabase: {0}configolcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * none# {1}monitor, configdn: olcDatabase={1}monitor,cn=configobjectClass: olcDatabaseConfigolcDatabase: {1}monitorolcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=Manager,dc=yyqw,dc=com" read by * none# {2}hdb, configdn: olcDatabase={2}hdb,cn=configobjectClass: olcDatabaseConfigobjectClass: olcHdbConfigolcDatabase: {2}hdbolcDbDirectory: /var/lib/ldapolcSuffix: dc=yyqw,dc=comolcRootDN: cn=Manager,dc=yyqw,dc=comolcDbIndex: objectClass eq,presolcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub# search resultsearch: 2result: 0 Success# numResponses: 5# numEntries: 4

我们使用适当的名称保存LDIF文件,例如, yyqw_config.ldif 我们执行 ldapmodify .

[root@ldap-server ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f yyqw_config.ldifSASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0modifying entry "olcDatabase={2}hdb,cn=config"modifying entry "olcDatabase={2}hdb,cn=config"

增加olcRootPW 属性

要添加新属性,我们使用“ add ”,然后使用属性名称,如以下示例所示。在这里,我们创建另一个LDIF文件 (yybw.ldif) 来添加 olcRootPW 属性。

[root@ldap-server ~]# cat yybw.ldifdn: olcDatabase={2}hdb,cn=configchangeType: modifyadd: olcRootPWolcRootPW: {SSHA}eXlxd2J3d3dzdweXlxd2J3d3dzdw

我们再次执行 ldapmodify 。

[root@ldap-server ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f yybw.ldifSASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0modifying entry "olcDatabase={2}hdb,cn=config"

修改olcAccess属性

我们还必须允许 我们之前 (cn=admin,dc=yyaw,dc=net) 刚刚指定的管理员用户访问LDAP数据库 。如果我们看一下 olcDatabase={1}monitor.ldif ,文件,我们将看到以下行:

olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external, cn=auth" read by dn.base="cn=manager,dc=yyqw,dc=com" read by * none

我们必须编辑文件或使用 ldapmodify 来更改条目。如果我们使用 ldapmodify,LDIF 文件应该是这样的:

[root@ldap-server ~]# cat yyww.ldifdn: olcDatabase={1}monitor,cn=configchangetype: modifyreplace: olcAccessolcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external, cn=auth" read by dn.base="cn=admin,dc=yyaw,dc=net" read by * none

同样,我们通过传递新的 LDIF 文件作为参数来执行 ldapmodify 。

[root@ldap-server ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f yyww.ldifSASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0modifying entry "olcDatabase={1}monitor,cn=config"

验证新属性值

现在我们可以检查属性的值 ldapsearch 是否实际更改。

[root@ldap-server ~]# ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config olcDatabase=\*SASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0# extended LDIF## LDAPv3# base  with scope subtree# filter: olcDatabase=*# requesting: ALL## {-1}frontend, configdn: olcDatabase={-1}frontend,cn=configobjectClass: olcDatabaseConfigobjectClass: olcFrontendConfigolcDatabase: {-1}frontend# {0}config, configdn: olcDatabase={0}config,cn=configobjectClass: olcDatabaseConfigolcDatabase: {0}configolcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * none# {1}monitor, configdn: olcDatabase={1}monitor,cn=configobjectClass: olcDatabaseConfigolcDatabase: {1}monitorolcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external, cn=auth" read by dn.base="cn=admin,dc=yyaw,dc=net" read by * none# {2}hdb, configdn: olcDatabase={2}hdb,cn=configobjectClass: olcDatabaseConfigobjectClass: olcHdbConfigolcDatabase: {2}hdbolcDbDirectory: /var/lib/ldapolcDbIndex: objectClass eq,presolcDbIndex: ou,cn,mail,surname,givenname eq,pres,subolcRootPW: {SSHA}eXlxd2J3d3dzdweXlxd2J3d3dzdwolcSuffix: dc=yyaw,dc=netolcRootDN: cn=admin,dc=yyaw,dc=net# search resultsearch: 2result: 0 Success# numResponses: 5# numEntries: 4

如我们所见,该值已根据我们在 LDIF 文件中指定的内容进行了更改。我们可以用来检查配置的另一个工具是 slaptest 命令。

[root@ldap-server ~]# slaptest -uconfig file testing succeeded

添加对象(用户、分组等)

现在我们必须在LDAP服务器 dc=yyaw,dc=net 中手动创建一个条目。执行此操作的最简单方法是为此条目创建一个 LDIF 文件并将其传递给 ldapadd 命令。因此,我们创建了一个名为 yyaw-net.ldif 的文件,其中包含以下内容:

[root@ldap-server ~]# cat yyaw-net.ldifdn: dc=yyaw,dc=netobjectClass: dcObjectobjectClass: organizationdc: yyawo: yyaw

我们指定一系列属性,例如可分辨名称 (dn)、域组件 (dc) 和组织 (o)。我们还将新条目定义为 dcObject 和组织类型的对象。现在我们执行 ldapadd 并将 yyaw-net.ldif 文件作为参数传递给它。我们使用 (-f) 指定文件名、管理员用户 (-D) 以及我们为该管理员用户 (-w) 定义的密码。

[root@ldap-server ~]# ldapadd -f yyaw-net.ldif -D cn=admin,dc=yyaw,dc=net -w redhatadding new entry "dc=yyaw,dc=net"

我们可以使用 ldapsearch 命令检查条目是否成功创建。

[root@ldap-server ~]# ldapsearch -x -b dc=yyaw,dc=net# extended LDIF## LDAPv3# base  with scope subtree# filter: (objectclass=*)# requesting: ALL## example.comdn: dc=yyaw,dc=netobjectClass: dcObjectobjectClass: organizationdc: exampleo: example# search resultsearch: 2result: 0 Success# numResponses: 2# numEntries: 1

您刚刚看到了如何将对象 dc=yyaw,dc=net 添加到我们的 LDAP 中。现在,您将了解如何添加单位部门、群组和用户。

添加组织单元

也许我们希望调用 users 一个组织单位 (OU) 来存储所有 LDAP 用户。为此,我们将创建一个名为 users.ldif 的新 LDIF 文件,其中包含以下内容:

[root@ldap-server ~]# cat users.ldifdn: ou=users,dc=yyaw,dc=netobjectClass: organizationalUnitou: users

我们再次执行 ldapadd 以创建 OU。

[root@ldap-server ~]# ldapadd -f users.ldif -D cn=admin,dc=yyaw,dc=net -w redhatadding new entry "ou=users,dc=yyaw,dc=net"

增加用户

现在,我们可以在单位部门中包含用户。该过程与我们目前所看到的非常相似。首先,我们创建一个名为 yybed.ldif 的文件,其中包含以下内容:

[root@ldap-server ~]# cat yybed.ldifdn: cn=yyyq,ou=users,dc=yyaw,dc=netcn: yydxsn: SyracuseobjectClass: inetOrgPersonuserPassword: eurekauid: yydx

然后我们再次执行 ldapadd 。

[root@ldap-server ~]# ldapadd -f yybed.ldif -x -D cn=admin,dc=yyaw,dc=net -w redhatadding new entry "cn=yyyq,ou=users,dc=yyaw,dc=net"ldap_add: Invalid syntax (21)additional info: objectClass: value #0 invalid per syntax

此消息的意思是对象 inetOrgPerson 未加载到核心架构中,因此我们必须包含它。在 /etc/openldap/schema 文件夹中,有许多LDIF文件可以在需要时扩展架构。我们可以看到有一个 yygm.ldif 文件,其中包含 inetOrgPerson 对象的架构定义。

架构本身包含在 LDAP 数据库中,因此我们可以使用命令 ldapadd 向其添加新定义。当我们要修改配置本身而不是数据时,我们将自己验证为外部根用户 ( -Y EXTERNAL )。

[root@ldap-server ~]# ldapadd -Y EXTERNAL -H ldapi:// -f /etc/openldap/schema/yygm.ldifSASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0adding new entry "cn=inetorgperson,cn=schema,cn=config"ldap_add: Other (e.g., implementation specific) error (80)additional info: olcObjectClasses: AttributeType not found: "audio"

如我们所见,我们收到一个错误,因为未定义属性类型音频。因此,我们也必须在 模式中包含此定义 。如果我们在 /etc/openldap/schema/ 文件夹中的文件中搜索字符串频率,我们将看到 ttaw.ldif 属性 audio 在文件中定义。因此,我们首先使用此 LDIF 文件扩展架构。

[root@ldap-server ~]# ldapadd -Y EXTERNAL -H ldapi:// -f /etc/openldap/schema/ttaw.ldifSASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0adding new entry "cn=cosine,cn=schema,cn=config"

现在我们对 yygm.ldif 文件做同样的事情。

[root@ldap-server ~]# ldapadd -Y EXTERNAL -H ldapi:// -f /etc/openldap/schema/yygm.ldifSASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0adding new entry "cn=inetorgperson,cn=schema,cn=config"

接下来我们还添加 nis.ldif 文件

[root@ldap-server ~]# # ldapadd -Y EXTERNAL -H ldapi:// -f /etc/openldap/schema/nis.ldifSASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0adding new entry "cn=nis,cn=schema,cn=config"

现在,我们可以将用户添加到我们之前创建的文件 yybed.ldif 中。

[root@ldap-server ~]# ldapadd -f yybed.ldif -x -D cn=admin,dc=yyaw,dc=net -w redhatadding new entry "cn=yyyq,ou=users,dc=yyaw,dc=net"

如果在某些时候我们必须查看当前使用的模式,我们可以像这样使用 slapcat 命令:

[root@ldap-server ~]# slapcat -b "cn=schema,cn=config"dn: cn=configobjectClass: olcGlobalcn: configolcArgsFile: /var/run/openldap/slapd.argsolcPidFile: /var/run/openldap/slapd.pidolcTLSCACertificatePath: /etc/openldap/certsolcTLSCertificateFile: "OpenLDAP Server"olcTLSCertificateKeyFile: /etc/openldap/certs/passwordstructuralObjectClass: olcGlobalentryUUID: 35694bfc-c0d9-1038-87ee-811b58b4e51acreatorsName: cn=configcreateTimestamp: 20230209170930ZentryCSN: 20230209170930.732544Z#000000#000#000000modifiersName: cn=configmodifyTimestamp: 20230209170930Z----<OUTPUT TRUNCATED>----dn: olcDatabase={2}hdb,cn=configobjectClass: olcDatabaseConfigobjectClass: olcHdbConfigolcDatabase: {2}hdbolcDbDirectory: /var/lib/ldapolcDbIndex: objectClass eq,presolcDbIndex: ou,cn,mail,surname,givenname eq,pres,substructuralObjectClass: olcHdbConfigentryUUID: 97A468DA-540B-DC27-2081-4C07C5488224creatorsName: cn=configcreateTimestamp: 20230209170930ZolcRootPW:: e1NTSEF9NnpIdEEyMHFrVG1kTHJKU2Z4bytWVjNRTEdTN20wQ1o=olcSuffix: dc=yyaw,dc=netolcRootDN: cn=admin,dc=yyaw,dc=netentryCSN: 20230209171424.210710Z#000000#000#000000modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authmodifyTimestamp: 20230209171424Z

添加分组

要添加组,我们重复相同的过程。首先, group.ldif 我们创建包含以下内容的文件:

[root@ldap-server ~]# cat group.ldifdn: cn=scientists,ou=users,dc=yyaw,dc=netcn: scientistsobjectClass: groupOfNamesmember: cn=yyyq,ou=users,dc=yyaw,dc=net

我们用ldapadd添加组。

[root@ldap-server ~]# ldapadd -f group.ldif -x -D cn=admin,dc=yyaw,dc=net -w redhatadding new entry "cn=scientists,ou=users,dc=yyaw,dc=net"

删除分组

除了添加或编辑,我们还可以从LDAP服务器中删除对象。该过程甚至更容易,因为我们不必创建任何LDIF文件。我们只是使用 ldapdel 我们要删除的执行 cn 。

[root@ldap-server ~]# ldapdelete "cn=yyyq,ou=users,dc=yyaw,dc=net" -D cn=admin,dc=yyaw,dc=net -w redhat

我们可以检查该条目是否确实被禁止。

[root@ldap-server ~]# ldapsearch -x -b "dc=yyaw,dc=net" "(cn=yydx)"# extended LDIF## LDAPv3# base  with scope subtree# filter: (cn=yydx)# requesting: ALL## search resultsearch: 2result: 0 Success# numResponses: 1

总结

在本文中,我分享了在 CentOS 7 Linux 节点上从头开始安装和配置 openldap 的分步说明。在整篇文章中解释每个步骤时,我试图进行描述性,尽管我建议初学者在进入配置之前先了解有关 openldap 术语的更多信息。最后,我希望本文中在Linux上安装和配置OpenLDAP的步骤有所帮助。因此,请使用评论部分让我知道您的建议和反馈。

来源地址:https://blog.csdn.net/caoshiying/article/details/133943661

--结束END--

本文标题: OpenLDAP LDIF详解

本文链接: https://lsjlt.com/news/440164.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • OpenLDAP LDIF详解
    手把手一步步搭建LDAP服务器并加域 有必要理解的概念LDAPWindows Active Directory 服务器配置安装 OpenLDAP自定义安装修改对象(用户和分组等)修改olc...
    99+
    2023-10-23
    linux 运维 服务器
  • EventBus详解 (详解 + 原理)
    一、EventBus的使用介绍 EventBus简介 EventBus是一个开源库,由GreenRobot开发而来,是用于Android开发的 “事件发布—订阅总线”, 用来进行模块间通信、解藕。它可以使用很少的代码,来实现多组件之间...
    99+
    2023-08-31
    android
  • @Profile注解详解
    @Profile:Spring为我们提供的可以根据当前环境,动态的激活和切换一系列组件的功能;开发环境develop、测试环境test、生产环境master数据源:(/dev) (/test) (/master)@Profile:指定组件在...
    99+
    2018-01-19
    java教程 注解
  • @TableField注解详解
    @TableField(value = "email")//指定数据库表中字段名 如果数据库和实体类的字段名不一致,可以使用@TableField注解指定数据库表中字段名。  2、@TableField(exist = "false")/...
    99+
    2023-09-02
    数据库 sql java
  • 详解@Override注解
    目录 1.是什么 2.为什么用 3.举例说明 1)示例一 2)示例二 3)示例三 1.是什么 @Override注解是伪代码,用于表示被标注的方法是一个重写方法。 @Override注解,只能用于标记方法,并且它只在编译期生效,不会保留...
    99+
    2023-09-24
    java
  • @PreAuthorize注解详解
    @PreAuthorize注解会在方法执行前进行权限验证,支持Spring EL表达式,它是基于方法注解的权限解决方案。只有当@EnableGlobalMethodSecurity(prePostEnabled=true)的时候,@PreA...
    99+
    2023-09-14
    spring java mybatis
  • Spring注解详解
    概述 注释配置相对于 XML 配置具有很多的优势:它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作。如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO 的属性名、类型等信息,如果关系表字段和...
    99+
    2023-06-03
  • Java注解详解
    目录 一、发现注解二、注解是什么1. 注解的本质2. 注解是针对Java编译器的说明 三、为什么要使用注解四、Java中常用的注解4.1 基础注解(spring-context、spring-we...
    99+
    2023-08-22
    java spring 软件测试
  • Explain详解
    执行计划中输出各列: table:查询语句中包含的表 id:查询语句中的每个SELECT都对应一个唯一id值,对于连接查询,id是相同的,第一条为驱动表,第二条为被驱动表;对于子查询来说,id可能不同,查询优化器可能将子查询转换为连...
    99+
    2019-11-15
    Explain详解
  • mogilefs详解
    分布式: 分布式存储或分布式文件系统的概念: 多台计算机每一台提供一定的存储空间存储数据,通过元数据服务器将数据均匀的存储在各个节点上 元数据:描述数据的数据,主要是描述数据属性,用来支持如指示存储位置...
    99+
    2024-04-02
  • mongostat详解
    参考:http://docs.mongodb.org/manual/reference/program/mongostat/Fieldsmongostat outputs the following fie...
    99+
    2024-04-02
  • iptable详解
    查看iptables状态-重启iptables 所在目录 /etc/sysconfig/iptablesservice iptables status 查看iptables状态service iptable...
    99+
    2024-04-02
  • find详解
    等价查询某个数组:db.getCollection("test").find(     {         tags: ["good","book","it","program"]      } );(//...
    99+
    2024-04-02
  • orm 详解
    博客园    首页    博问   &nbs...
    99+
    2024-04-02
  • rsync详解
    一、rsync介绍 1、rsync是什么 rsync(remote synchronize)是Liunx/Unix下的一个远程数据同步工具。它可通过LAN/WAN快速同步多台主机间的文件和目录,并适当...
    99+
    2023-09-27
    服务器 linux 运维
  • request.getcontextPath()详解
    request.getcontextPath()是Java Servlet中的一个方法,用于获取Web应用的上下文路径。下面是对该方...
    99+
    2023-09-14
    详解
  • AJAX 详解
    文章目录 前言一 Ajax技术与原理1.1 Ajax简介1.2 Ajax所包含的技术1.3 Ajax的工作原理1.4 XMLHttpRequest 对象的三个常用的属性1. onreadyst...
    99+
    2023-09-24
    ajax javascript 服务器 安全
  • random.uniform()详解
    一、函数介绍 函数原型: numpy.random.uniform(low,high,size) 功能:从一个均匀分布[low,high)中随机采样,注意定义域是左闭右开,即包含low,不包含high. random.uniform(sha...
    99+
    2023-09-29
    tensorflow python 人工智能
  • random.nextint()详解
    random.nextInt() 是 Java 中 Random 类的一个方法,用于生成一个随机的整数。语法:random.next...
    99+
    2023-08-30
    详解
  • rsyslog详解
    一、日志介绍 日志概念 日志是系统用来记录系统及应用程序运行时的一些相关信息的文本文件 日志作用 日志是为了保存相关程序的运行状态、错误信息等,为了对系统进行分析、保存历史记录以及在出现错误时发现...
    99+
    2023-09-06
    linux 运维 服务器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作