- Linux-SaltStack配置
DC_BLOG
Linuxlinuxsaltstack运维服务器
文章目录SaltStack配置作者主页:点击!Linux专栏:点击!⏰️创作时间:2025年02月24日20点51分SaltStack配置SaltStack中既支持SSH协议也支持我们的一个客户端#获取公钥(所有环境都需要配置)rpm--importhttps://repo.saltproject.io/salt/py3/redhat/8/x86_64/latest/SALT-PROJECT-GP
- Linux 使用nload 监控网络流量
linux
简介Linux中的nload命令是一个用于实时监控网络流量的工具。它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动。对于需要监控网络接口上的流量的系统管理员和网络工程师来说,它尤其有用。安装Ubuntu/DebiansudoaptupdatesudoaptinstallnloadRedHat/CentOSsudoyuminstallnloadFedorasudodnfinstal
- linux安装mysql、可选择版本(yum,deb,二进制)、可选择自定义端口以及配置
wsswm
mysqllinuxmysql
说明软件仓库:yum(centos,redhat,fedora和Oraclelinux系统)apt(debian和ubuntu系统)deb(debian和ubuntu系统)安装过程中可能需要计算机安装某种扩展,按照提示安装即可。一、二进制方式安装mysql二进制方式安装适合一个系统安装多个mysql服务,一个mysql服务使用不同的端口即可。前提是该端口号不能被其他程序占有。在linux系统中注意
- LINUX 安装mysql5.6.50 RPM
a21768541
数据库mysql
今天要做一个MySql数据库的主从备份,由于现有的数据库,是使用宝塔安装的5.6.50版本,因此需要在新购买的服务器上安装MySql5.6.50版本,记录一下安装过程的碰见的各种问题1.下载安装包抖店云上的系统是CentOS7.964位,因此下载Redhat7系统下面的安装包下载地址:https://downloads.mysql.com/archives/community/只需要下载这两个安装
- linux nmon 进程io,【性能工具】Linux性能监控工具nmon使用指南
weixin_39631017
linuxnmon进程io
1.1工具简介Nmon是一款广泛使用在Aix与Linux操作系统上的监控与分析工具,它记录的信息非常全面,并支持生成数据文件与图形化结果。1.2部署环境要求无支持广泛:操作系统(RedHat,SUSE,Ubuntu,Fedora,OpenSUSE等)平台(Power,Mainframe,arm,x86orx86_64)1.3安装方法Nmon工具安装非常简单,具体步骤如下:下载不同AIX和LINUX
- 最稳定的linux服务器选择
凌武贰玖
服务器linux运维
redhat>centos>ubuntu。最好用的是redhat,其次是centos。ubuntu做后台服务器经常会自己莫名崩溃。
- 在 Linux 上安装 Nginx
图苑
linuxnginx运维
戳底部名牌,一起玩耍1.准备工作更新系统包确保你的系统是最新的,并且安装了必要的依赖项:基于Debian的系统(如Ubuntu)sudoaptupdate&&sudoaptupgrade-y基于RedHat的系统(如CentOS或Fedora)对于CentOS7及更早版本:sudoyumupdate-y对于Fedora和CentOS8及更高版本:sudodnfupdate-y2.安装Nginx使用
- Linux-RPM、YUM/DNF和软硬链接
CHQ_2157
linux
RPM管理工具RPM是红帽子包管理(RedhatPackageManager)的缩写。由RedHat公司提出的一种软件包管理标准。是Linux各发行版本中最广泛的软件包格式之一(还有debian的发行版deb安装包)RPM功能通过rpm命令使用不同参数来实现rpm:软件包_压缩存贮,拥有一个头文件,其中包含有关于本软件包的相关信息,便于对软件包信息进行查询RPM软件包的典型命名格式:软件名-版本号
- centos 安装alien
编程日记
Linux
出处:http://linux4you.in/install-netapp-oncommand-system-manger-on-centos/1.在root权限下执行命令$sudosu2.安装alien需要的依赖包#yum-yinstallPythonrpm-buildmakem4gcc-c++autoconfautomakeredhat-rpm-configmod_dav_svnmod_ssl
- RHEL 安装 Hadoop 服务器
XhClojure
hadoop服务器大数据
在这篇文章中,我们将探讨如何在RedHatEnterpriseLinux(RHEL)上安装和配置Hadoop服务器。Hadoop是一个开源的分布式数据处理框架,用于处理大规模数据集。以下是在RHEL上安装Hadoop的详细步骤。步骤1:安装Java在安装Hadoop之前,我们需要确保系统上安装了JavaDevelopmentKit(JDK)。执行以下命令安装JDK:sudoyuminstallja
- ansible部署ceph
时空无限
cephansiblecephlinux
前言:ceph的官网有坑。按照官网部署,不会一蹴而就。会遇到各种各样的问题,ceph文档有待改进。环境操作系统cat/etc/redhat-releaseCentOSLinuxrelease8.5.2111uname-r4.18.0-80.el8.x86_64主机名三台主机,其中node-01为部署机器和ceph的其中一个节点。node-01node-02node-03网卡和ip每台主机双网卡en
- DeepSeek在linux下的安装部署与应用测试
一望无际的大草原
deepseek后端大模型部署linux大模型deepseek
结合上一篇文章,本篇文章主要讲述在Redhatlinux环境下如何部署和使用DeepSeek大模型,主要包括ollama的安装配置、大模型的加载和应用测试。关于OpenWebUI在docker的安装部署,OpenWebUI官网也提供了完整的docker部署说明,大家可参考github,但对于OpenWebUI前后端分离的部署没有详细说明,这需要修改一部分前后端代码,后面会陆续分享给大家。ollam
- Redis的安装及配置
尘鹄
redis学习之路redis数据库缓存
redis的安装及配置1.安装依赖2.下载redis官方压缩包并安装3.修改redis.conf配置文件4.编辑redis系统服务文件本文使用的系统为Rocky8.10,其操作与CentOS8和RedHat8一样,读者可根据自己的版本进行灵活修改代码Redis是一个开源的内存数据库,提供了多种不同类型得到数据结构,很多的业务场景中的问题都可以很自然地映射到这些数据结构上。除此之外,通过复制持久化和
- rpm:使用实例
mzhan017
云平台运维rpm
文章目录rpm源测试命令查看releasenote帮助redhat提供的源目录查看编译选项查看软件运行的配置文件建议查看当前软件的帮助文档都有哪些安装错误12安装32bitrpm安装老版本强制安装设置安装目录查询文件查看依赖关系安装rpm到特定目录安装rpm到特定目录2--root校验rpm的文件是否正确rpm2cpio查询rpmname查询文件权限错误错误Unabletochangerootdi
- Linux部署Tomcat无法访问
zb_3Dmax
javatomcatlinux服务器开发语言servlet
前言环境:RedHat7.0,Tomcat7,JDK7安装配置成功之后,启动tomcat服务,然后使用本地浏览器访问http://xx:xx:xx:xx:8080,无法访问。解决过程首先怀疑是配置问题,终端输出:echo$JAVA_HOMEecho$TOMCAT_HOME一切正常,排除然后怀疑是防火墙问题:RHEL7中使用了firewalld代替了原来的iptables,操作设置和原来有点不同:查
- linux是一个单用户的系统,linux系统进入单用户模式
weixin_40005437
linux是一个单用户的系统
进入单用户模式可进行root账户和其他普通账户的密码的修改1)Ubuntu开机到grub时(在开机时长按shift键),用上下键移到第二行的恢复模式(recoverymode),按e(注意不是回车)把rosingle改成rwquietinit=/bin/bash然后按Ctrl+x2)redhat1)开机出现倒数秒---回车2)看见RedHatEnterpriseLinuxServer(2.6.18
- 阿里云MWC 2019发布7款重磅产品,助力全球企业迈向智能化
数据库技术分享者
大数据数据库人工智能
当地时间2月25日,在巴塞罗那举行的MWC2019上,阿里云面向全球发布了7款重磅产品,涵盖无服务器计算、高性能存储、全球网络、企业级数据库、大数据计算等主要云产品,可满足电子商务、物流、金融科技以及制造等各行业企业的数字化转型需求,助力全球企业迈向智能化。在大会期间,阿里云还携手德勤、RedHat以及VMware等合作伙伴展示了从基础设施到企业级应用的智能化解决方案。阿里云在MWC2019上展示
- linux红帽基础命令
Justice link
服务器linux运维
08查看系统合法shell:cat/etc/shells09查看系统发行版版本:cat/etc/redhat-release10查看系统内核版本:uname-a11临时修改主机名:sudohostnamenew_host12查看系统指令的查找路径:findwhichwhereis(echo$PATH)env(查找所有的环境变量)13查看passwd指令的执行路径:whichpasswd14为/ya
- 统信UOS系统安装OpenGauss5.0.0步骤
king01299
国产信创数据库linux运维gaussdb
统信1060e安装OpenGauss5.0.0步骤##使用yum来安装依赖包或者使用uos-server-20-1060e.iso镜像挂载安装(小编采用镜像挂载安装有关依赖)yum-yinstalllibaio-develflexbisonncurses-develglibc-develpatchredhat-lsb-corereadline-develpython3ifconfigenp18s0
- db2安装包v10.5_LINUX安装db2V10.5步骤
樱桃Anne
db2安装包v10.5
LINUX安装db2V10.5步骤2017-04-0110:08:35|分类:db2|举报|字号订阅下载LOFTER我的照片书|转自:http://blog.csdn.net/hanzheng260561728/article/details/50878666InstallDB210.5onRedhatLinux6.5forx86_64Byadmin-Lastupdated:Tuesday,Jun
- Centos和ubuntu的区别
西里.中国 | CiiLii.Com
西里.中国centosubuntulinux
CentOS和Ubuntu是两种常用的Linux发行版,它们之间有一些区别:Centos和ubuntu的区别-Ubuntu稳定性与更新方式:CentOS被定义为稳定可靠的运行企业级应用的Linux发行版,基于RedHatEnterpriseLinux(RHEL)的开源版本,所以更新方式主要以小版本的更新为主,并且没有红帽公司官方的更新支持,不像Ubuntu,直接跟厂商同步更新。界面和发行版本:Ce
- centos ubuntu 服务器性能比较,对比平台--CentOS和Ubuntu之间的区别
weixin_39883208
centosubuntu服务器性能比较
CentOS与Ubuntu是SoftwareOperationMarket中两个著名的Web服务器操作系统。CentOS基本上基于Linux框架和Linux发行版,以实现免费的,社区支持的计算平台,该平台与相应的上游源RedHatLinux兼容。Ubuntu基本上是基于Debian的开源Linux发行版。它是流行的云操作系统之一。它通常从桌面到云,再到几乎所有适用的Internet连接事物都运行。
- Centos和Ubuntu的介绍与区别
桃杬
centosubuntulinux
对于大多数人来说常用的linux操作系统为centoslinux和ubuntulinux,二者之间有很多相似之处,但是它们也有一些重要的区别。一、Centos和Ubuntu的介绍1.什么是centosCentOS(CommunityEnterpriseOperatingSystem)是脱胎于RedHatEnterpriseLinux(RHEL)并与之兼容的由社区支持的克隆版Linux发行版,所以我
- CentOS 和 Ubuntu 的区别
重生之我成为菜菜选手
Linux系统centosubuntulinux
一、前言CentOS和Ubuntu是比较流行的Linux服务器操作系统。两者功能强大,但有一些区别。二、区别1、来源与支持CentOS是基于RedHatEnterpriseLinux(RHEL)的开源版本,由社区维护。Ubuntu是基于Debian的Linux操作系统,由CanonicalLtd.公司支持和维护。2、软件包管理器:CentOS使用基于RPM的YUM软件包管理器。Ubuntu使
- centos 和 ubuntu 区别
yqcoder
linuxcentosubuntu
一、发行版与支持1.CentOS是基于RedHatEnterpriseLinux(RHEL)源代码重新编译而成的社区版,遵循开源协议。一般由社区进行维护,每7年左右发布一个主要版本,注重稳定性和长期支持,适合对系统稳定性要求极高的关键业务场景。2.Ubuntu由Canonical公司主导开发和维护,每6个月发布一个常规版本,每年4月发布一个长期支持版本(LTS),LTS版本提供5年甚至更长时间的技
- PostgreSQL查看版本信息
秦时明月之君临天下
PostgreSQLpostgresqllinux数据库
1.查看客户端版本psql--version2.查看服务器端版本2.1查看详细信息selectversion();--PostgreSQL10.17onx86_64-pc-linux-gnu,compiledbygcc(GCC)4.8.520150623(RedHat4.8.5-44),64-bit2.2查看版本信息showserver_version;--10.172.2查看数字版本信息包括小版
- python中的ssl模块不能用_解决Python找不到ssl模块问题 No module named _ssl的方法
直江信纲二号机
python安装完毕后,提示找不到ssl模块:[www@pythontab.com~]$pythonPython2.7.15(default,Oct232018,18:08:43)[GCC4.4.720120313(RedHat4.4.7-23)]onlinux2Type"help","copyright","credits"or"license"formoreinformation.>>>imp
- linux内核提权,Linux内核漏洞(权限提升)实例
憨憨的祝小铁
linux内核提权
这个内核漏洞相当的严重,只要用户拥有本地用户的权限便可以轻松的获取到管理员的权了。下图为我在自己的服务器上做的测试,果然针对目前绝大多数的linux内核漏洞!修复方法:一、如果您使用的是RedHatEnterpriseLinux4/5的系统或Centos4/5的系统,您可以通过下面的操作简单的操作防止被***。在/etc/modprobe.conf文件中加入下列内容:installpppox/bi
- 尚硅谷课程【笔记】——大数据之Linux【一】
赶紧写完去睡觉
大数据生态圈大数据linux
课程视频链接:尚硅谷大数据Linux课程一、Linux发行版Linux的主要发行版有:Ubuntu(乌班图)、RedHat(红帽)、CentOS、Debain(蝶变)、SuSE等。Ununtu背景:基于Debian,由Canonical公司主导,社区和商业支持并存。定位:面向个人用户、开发者和云环境,兼顾桌面与服务器。特点:预装图形界面和常用工具,适合新手。RedHat背景:商业发行版,由RedH
- squid代理添加认证
windfbi
运维代理模式
squid使用NCSA样式的密码文件来验证用户身份squid安装squid认证对于基于Debian/Ubuntu的系统:sudoapt-getupdatesudoapt-getinstallsquid对于基于RedHat/CentOS的系统:sudoyuminstallsquid在AlpineLinux上,你可以使用apk包管理器,如下命令:sudoapkaddsquid配置文件地址:/etc/s
- Algorithm
香水浓
javaAlgorithm
冒泡排序
public static void sort(Integer[] param) {
for (int i = param.length - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
int current = param[j];
int next = param[j + 1];
- mongoDB 复杂查询表达式
开窍的石头
mongodb
1:count
Pg: db.user.find().count();
统计多少条数据
2:不等于$ne
Pg: db.user.find({_id:{$ne:3}},{name:1,sex:1,_id:0});
查询id不等于3的数据。
3:大于$gt $gte(大于等于)
&n
- Jboss Java heap space异常解决方法, jboss OutOfMemoryError : PermGen space
0624chenhong
jvmjboss
转自
http://blog.csdn.net/zou274/article/details/5552630
解决办法:
window->preferences->java->installed jres->edit jre
把default vm arguments 的参数设为-Xms64m -Xmx512m
----------------
- 文件上传 下载 解析 相对路径
不懂事的小屁孩
文件上传
有点坑吧,弄这么一个简单的东西弄了一天多,身边还有大神指导着,网上各种百度着。
下面总结一下遇到的问题:
文件上传,在页面上传的时候,不要想着去操作绝对路径,浏览器会对客户端的信息进行保护,避免用户信息收到攻击。
在上传图片,或者文件时,使用form表单来操作。
前台通过form表单传输一个流到后台,而不是ajax传递参数到后台,代码如下:
<form action=&
- 怎么实现qq空间批量点赞
换个号韩国红果果
qq
纯粹为了好玩!!
逻辑很简单
1 打开浏览器console;输入以下代码。
先上添加赞的代码
var tools={};
//添加所有赞
function init(){
document.body.scrollTop=10000;
setTimeout(function(){document.body.scrollTop=0;},2000);//加
- 判断是否为中文
灵静志远
中文
方法一:
public class Zhidao {
public static void main(String args[]) {
String s = "sdf灭礌 kjl d{';\fdsjlk是";
int n=0;
for(int i=0; i<s.length(); i++) {
n = (int)s.charAt(i);
if((
- 一个电话面试后总结
a-john
面试
今天,接了一个电话面试,对于还是初学者的我来说,紧张了半天。
面试的问题分了层次,对于一类问题,由简到难。自己觉得回答不好的地方作了一下总结:
在谈到集合类的时候,举几个常用的集合类,想都没想,直接说了list,map。
然后对list和map分别举几个类型:
list方面:ArrayList,LinkedList。在谈到他们的区别时,愣住了
- MSSQL中Escape转义的使用
aijuans
MSSQL
IF OBJECT_ID('tempdb..#ABC') is not null
drop table tempdb..#ABC
create table #ABC
(
PATHNAME NVARCHAR(50)
)
insert into #ABC
SELECT N'/ABCDEFGHI'
UNION ALL SELECT N'/ABCDGAFGASASSDFA'
UNION ALL
- 一个简单的存储过程
asialee
mysql存储过程构造数据批量插入
今天要批量的生成一批测试数据,其中中间有部分数据是变化的,本来想写个程序来生成的,后来想到存储过程就可以搞定,所以随手写了一个,记录在此:
DELIMITER $$
DROP PROCEDURE IF EXISTS inse
- annot convert from HomeFragment_1 to Fragment
百合不是茶
android导包错误
创建了几个类继承Fragment, 需要将创建的类存储在ArrayList<Fragment>中; 出现不能将new 出来的对象放到队列中,原因很简单;
创建类时引入包是:import android.app.Fragment;
创建队列和对象时使用的包是:import android.support.v4.ap
- Weblogic10两种修改端口的方法
bijian1013
weblogic端口号配置管理config.xml
一.进入控制台进行修改 1.进入控制台: http://127.0.0.1:7001/console 2.展开左边树菜单 域结构->环境->服务器-->点击AdminServer(管理) &
- mysql 操作指令
征客丶
mysql
一、连接mysql
进入 mysql 的安装目录;
$ bin/mysql -p [host IP 如果是登录本地的mysql 可以不写 -p 直接 -u] -u [userName] -p
输入密码,回车,接连;
二、权限操作[如果你很了解mysql数据库后,你可以直接去修改系统表,然后用 mysql> flush privileges; 指令让权限生效]
1、赋权
mys
- 【Hive一】Hive入门
bit1129
hive
Hive安装与配置
Hive的运行需要依赖于Hadoop,因此需要首先安装Hadoop2.5.2,并且Hive的启动前需要首先启动Hadoop。
Hive安装和配置的步骤
1. 从如下地址下载Hive0.14.0
http://mirror.bit.edu.cn/apache/hive/
2.解压hive,在系统变
- ajax 三种提交请求的方法
BlueSkator
Ajaxjqery
1、ajax 提交请求
$.ajax({
type:"post",
url : "${ctx}/front/Hotel/getAllHotelByAjax.do",
dataType : "json",
success : function(result) {
try {
for(v
- mongodb开发环境下的搭建入门
braveCS
运维
linux下安装mongodb
1)官网下载mongodb-linux-x86_64-rhel62-3.0.4.gz
2)linux 解压
gzip -d mongodb-linux-x86_64-rhel62-3.0.4.gz;
mv mongodb-linux-x86_64-rhel62-3.0.4 mongodb-linux-x86_64-rhel62-
- 编程之美-最短摘要的生成
bylijinnan
java数据结构算法编程之美
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
public class ShortestAbstract {
/**
* 编程之美 最短摘要的生成
* 扫描过程始终保持一个[pBegin,pEnd]的range,初始化确保[pBegin,pEnd]的ran
- json数据解析及typeof
chengxuyuancsdn
jstypeofjson解析
// json格式
var people='{"authors": [{"firstName": "AAA","lastName": "BBB"},'
+' {"firstName": "CCC&
- 流程系统设计的层次和目标
comsci
设计模式数据结构sql框架脚本
流程系统设计的层次和目标
- RMAN List和report 命令
daizj
oraclelistreportrman
LIST 命令
使用RMAN LIST 命令显示有关资料档案库中记录的备份集、代理副本和映像副本的
信息。使用此命令可列出:
• RMAN 资料档案库中状态不是AVAILABLE 的备份和副本
• 可用的且可以用于还原操作的数据文件备份和副本
• 备份集和副本,其中包含指定数据文件列表或指定表空间的备份
• 包含指定名称或范围的所有归档日志备份的备份集和副本
• 由标记、完成时间、可
- 二叉树:红黑树
dieslrae
二叉树
红黑树是一种自平衡的二叉树,它的查找,插入,删除操作时间复杂度皆为O(logN),不会出现普通二叉搜索树在最差情况时时间复杂度会变为O(N)的问题.
红黑树必须遵循红黑规则,规则如下
1、每个节点不是红就是黑。 2、根总是黑的 &
- C语言homework3,7个小题目的代码
dcj3sjt126com
c
1、打印100以内的所有奇数。
# include <stdio.h>
int main(void)
{
int i;
for (i=1; i<=100; i++)
{
if (i%2 != 0)
printf("%d ", i);
}
return 0;
}
2、从键盘上输入10个整数,
- 自定义按钮, 图片在上, 文字在下, 居中显示
dcj3sjt126com
自定义
#import <UIKit/UIKit.h>
@interface MyButton : UIButton
-(void)setFrame:(CGRect)frame ImageName:(NSString*)imageName Target:(id)target Action:(SEL)action Title:(NSString*)title Font:(CGFloa
- MySQL查询语句练习题,测试足够用了
flyvszhb
sqlmysql
http://blog.sina.com.cn/s/blog_767d65530101861c.html
1.创建student和score表
CREATE TABLE student (
id INT(10) NOT NULL UNIQUE PRIMARY KEY ,
name VARCHAR
- 转:MyBatis Generator 详解
happyqing
mybatis
MyBatis Generator 详解
http://blog.csdn.net/isea533/article/details/42102297
MyBatis Generator详解
http://git.oschina.net/free/Mybatis_Utils/blob/master/MybatisGeneator/MybatisGeneator.
- 让程序员少走弯路的14个忠告
jingjing0907
工作计划学习
无论是谁,在刚进入某个领域之时,有再大的雄心壮志也敌不过眼前的迷茫:不知道应该怎么做,不知道应该做什么。下面是一名软件开发人员所学到的经验,希望能对大家有所帮助
1.不要害怕在工作中学习。
只要有电脑,就可以通过电子阅读器阅读报纸和大多数书籍。如果你只是做好自己的本职工作以及分配的任务,那是学不到很多东西的。如果你盲目地要求更多的工作,也是不可能提升自己的。放
- nginx和NetScaler区别
流浪鱼
nginx
NetScaler是一个完整的包含操作系统和应用交付功能的产品,Nginx并不包含操作系统,在处理连接方面,需要依赖于操作系统,所以在并发连接数方面和防DoS攻击方面,Nginx不具备优势。
2.易用性方面差别也比较大。Nginx对管理员的水平要求比较高,参数比较多,不确定性给运营带来隐患。在NetScaler常见的配置如健康检查,HA等,在Nginx上的配置的实现相对复杂。
3.策略灵活度方
- 第11章 动画效果(下)
onestopweb
动画
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
- FAQ - SAP BW BO roadmap
blueoxygen
BOBW
http://www.sdn.sap.com/irj/boc/business-objects-for-sap-faq
Besides, I care that how to integrate tightly.
By the way, for BW consultants, please just focus on Query Designer which i
- 关于java堆内存溢出的几种情况
tomcat_oracle
javajvmjdkthread
【情况一】:
java.lang.OutOfMemoryError: Java heap space:这种是java堆内存不够,一个原因是真不够,另一个原因是程序中有死循环; 如果是java堆内存不够的话,可以通过调整JVM下面的配置来解决: <jvm-arg>-Xms3062m</jvm-arg> <jvm-arg>-Xmx
- Manifest.permission_group权限组
阿尔萨斯
Permission
结构
继承关系
public static final class Manifest.permission_group extends Object
java.lang.Object
android. Manifest.permission_group 常量
ACCOUNTS 直接通过统计管理器访问管理的统计
COST_MONEY可以用来让用户花钱但不需要通过与他们直接牵涉的权限
D