1、格式化输入和输出(1)What标准库定义了一组操纵符(本质是函数或对象)来修改流的格式状态当操作符改变流的格式状态时,通常改变后的状态对所有后续IO都生效(2)WhichA.控制布尔值的格式boolbFlag=true;std::cout<
互换性与标准化
念致达
互换性与技术测量机电专业必修课程
互换性与标准化一、互换性定义分类作用主要内容二、标准化一、互换性定义机械产品中的同一规格的一批零件或部件,任取其中一件,不需作任何挑选、调整或辅助加工就能进行装配,并能保证满足机械产品的使用性能要求的一种特性。分类分类几何参数互换零部件的尺寸、形状、位置、表面质量等几何参数具有互换性功能互换零部件的物理性能、化学性能和力学性能具有互换性按互换性程度分:完全互换性(绝对互换性)零件在装配或更换时,不
版本混乱的三大 “罪魁祸首”,你踩中了几个?不用焦虑 如方文控帮你解决
Ru_fang
大数据网络笔记
1.手工管理VS数字化浪潮:落后工具埋下隐患仍用“邮件传文件”“U盘拷资料”的企业,如同用算盘对抗计算机:版本迭代全靠人工标注,“v1.0”“v1.0改”“最终版v1.1”混杂,谁也说不清哪个是“真・最新版”。2.流程缺失:谁都能改,谁都不管某制造业企业的教训极具代表性:技术部修改图纸后直接发工作群,生产部未收到通知仍按旧版投产,2000件半成品因尺寸偏差报废。缺乏“起草-审核-发布-归档”标准化
常见专业术语:
组织过程定义控制程序processfororganizationalprocessdefinition软件生命周期模型softwarelifecyclemodel组织标准过程集合描述descriptionoforganization'ssetofstandardprocess.组织标准过程裁剪指南tailoringguidelinefororganizationalstandardprocess过
什么是对称加密和非对称加密
MonkeyKing.sun
网络服务器运维
对称加密和非对称加密是现代密码学中的两大核心技术体系,它们用于保护数据的机密性、完整性和安全性,是构建区块链、电子支付、SSL、VPN、数字签名等系统的基础。一、什么是对称加密(SymmetricEncryption)?定义:加密和解密使用同一把密钥,称为“对称密钥”。工作原理:明文+密钥→加密算法→密文密文+同样密钥→解密算法→明文示例算法:算法简要说明AES(高级加密标准)最常用、快速、安全D
ECDSA数字签名
ECDSA算法(深入浅出密码学笔记)ECDSA标准中的步骤与DSA方案的步骤在概念上紧密相连,但ECDSA中的离散对数问题是在椭圆曲线群中构建起来的。因此,实际计算一个ECDSA签名所执行的算术运算与DSA中的完全不同。ECDSA标准是针对素数域Zp\mathbb{Z}_pZp和有限域GF(2m)GF(2^m)GF(2m)上的椭圆曲线定义的密钥生成使用椭圆曲线EEE,其中:模数为ppp;系数为aa
VTJ.PRO:打破次元壁!AI驱动 + 双向代码自由穿梭,重新定义Vue高效开发!
前端人工智能vue3
“既要低代码的速度,又要手写代码的自由?”——现在,无需妥协!VTJ.PRO革命性推出“双向代码转换引擎”,让开发者在可视化设计与源码编辑间无缝切换,真正实现“设计即代码,代码即设计”的终极工作流!✨核心黑科技:双向自由转换可视化设计→纯净源码拖拽生成的界面,一键转换为高质量Vue3组件代码,无冗余、无黑盒!支持导出标准.vue文件,无缝嵌入现有工程,源码100%自主可控!手写代码→可视化编辑将已
AD基础操作--快捷使用
1,单位换算(快捷键Q)1mil=1/1000inch=0.00254cm=0.0254mm2,Mechanical1画板子尺寸:Place---Dimension---Dimension(进行标注板子大小)topoverlay3,pcb中选择坐标:(快捷键:J+L)4,pcb中选择元器件:(快捷键J+C)注:原理图中选中元器件,pcb中也相应的选中。5,Pcb板层方格变点/改变栅格长度:右键--
Javascript:ES6+概念详解
善良的小乔
人工智能javascriptes6开发语言
Javascript:ES6+概念详解善良的小乔一.基础概念什么是ES6+?ES6+(或ES2015+)是JavaScript语言的现代版本,包含了从2015年ES6(ECMAScript2015)开始的一系列更新。这些更新引入了新的语法糖、内置对象和API,显著提升了代码的可读性、简洁性和开发效率。什么是ECMAScript?ECMAScript是JavaScript的标准化规范(由ECMA国际
宝塔+fastadmin:给项目添加定时任务+log日志自定义添加
25号底片~
php后端配置(宝塔)php
一、定时任务脚本编写1.使用shebang声明执行器#!/usr/bin/envphp这是Unix/Linux系统中脚本文件的标准开头。表示这个脚本使用系统环境变量中的php来执行。2.定义ThinkPHP入口路径并加载框架define('APP_PATH',__DIR__.'/../../application/');require__DIR__.'/../../thinkphp/start.p
【用户权限】超级用户(二)
超级用户Linux系统中的root账号通常用于系统的维护和管理,对操作系统的所有资源具有所有访问权限在大多数版本的Linux中,都不推荐直接使用root账号登录系统在Linux安装的过程中,系统会自动创建一个用户账号,而这个默认的用户就称为“标准用户”sudosu是substituteuser的缩写,表示使用另一个用户的身份sudo命令用来以其他身份来执行命令,预设的身份为root用户使用sudo
fastapi使用gunicorn还是uvicorn
程序员的战歌
Pythonfastapi
Uvicorn在单进程上使用异步协程是有优势的,但是如果接口方法是同步的则走的多进程模式,也就是workers的数量,这个时候uvicorn不如gunicorn,性能上会有些限制。uvicornmain:app--host0.0.0.0--port8000--workers4Gunicorn是一个使用WSGI标准的应用服务器。Flask和Django可以直接使用Gunicorn运行,但是FastA
中华人民共和国网络安全法
周周记笔记
网络安全安全
链接:中华人民共和国网络安全法.pdf总则:明确立法目的是保障网络安全,维护网络空间主权和国家安全等,规定了本法适用范围,强调国家坚持网络安全与信息化发展并重的方针,确定了相关部门的网络安全监督管理职责,还对网络运营者义务、网络使用规范等作出原则性规定。网络安全支持与促进:国家建立和完善网络安全标准体系,扶持重点网络安全技术产业和项目,推进网络安全社会化服务体系建设,鼓励开发网络数据安全保护和利用
16、流体力学数值模拟
404Feels
流体力学数值模拟纳维-斯托克斯方程
流体力学数值模拟1.流体力学的基本方程流体力学是研究流体(液体和气体)运动规律的学科,其基本方程是纳维-斯托克斯方程(Navier-Stokesequation)。该方程描述了流体的速度、压力、温度等物理量随时间和空间的变化。为了便于数值求解,我们需要将这些方程离散化。以下是纳维-斯托克斯方程的标准形式:[\frac{\partial\mathbf{u}}{\partialt}+(\mathbf{
C++数值算法深度解析:accumulate与max_element
景彡先生
C++进阶c++算法服务器
在C++标准库中,数值算法(NumericAlgorithms)提供了高效处理数值数据的工具。本文将深入解析两个核心数值算法——accumulate(累加求和)与max_element(最大值查找)的底层原理、核心特性及最佳实践,帮助开发者掌握这些“数据统计利器”的正确使用方式。一、accumulate:通用累加器1.1底层原理与实现迭代累加:对[first,last)区间内的元素执行累积操作,初
【网络】SSL/TLS介绍
浅慕Antonio
网络编程网络ssl网络协议
一、SSL/TLS概述SSL(SecureSocketLayer):最初由网景(Netscape)开发,用于在客户端和服务器之间建立安全的加密连接,防止数据被窃取或篡改。后来逐步演进,最终被TLS取代。TLS(TransportLayerSecurity):TLS是SSL的后继协议,目前已经成为互联网安全通信的标准。它不仅实现了数据加密,还提供了身份验证和数据完整性保护,确保双方通信时的信息保密且
半导体器件仿真:功率器件仿真_(12).器件仿真与实验数据对比
kkchenkx
信号仿真2信号处理信息可视化人工智能
器件仿真与实验数据对比在半导体器件仿真中,将仿真结果与实验数据进行对比是验证仿真模型准确性的重要步骤。这一过程不仅能够帮助我们理解仿真模型的优缺点,还可以为后续的设计优化提供指导。本节将详细讨论如何进行器件仿真与实验数据的对比,包括数据处理、对比方法和误差分析。数据处理实验数据的预处理在进行器件仿真与实验数据对比之前,首先需要对实验数据进行预处理。实验数据通常包含多个测量点,这些测量点可能受到噪声
半导体器件仿真:光电器件仿真_(6).光电二极管仿真
kkchenkx
信号仿真2信号处理信息可视化
光电二极管仿真1.引言光电二极管是一种能够将光能转换为电能的半导体器件。在光通信、图像传感器、光检测器和太阳能电池等领域有广泛的应用。光电二极管的仿真可以帮助设计者了解器件的工作原理、性能参数以及优化设计。本节将详细介绍光电二极管的仿真原理和步骤,包括器件结构、物理模型、仿真软件的使用方法以及具体的仿真案例。2.光电二极管的基本结构和工作原理2.1器件结构光电二极管通常由一个PN结或PIN结组成。
【stm32】HAL库开发——单片机工作模式
许白掰
stm32嵌入式硬件单片机学习
目录一、单片机工作模式1.1低功耗睡眠模式(Sleep)1.2低功耗停止模式(Stop)1.3低功耗待机模式(StandBy)一、单片机工作模式1.1低功耗睡眠模式(Sleep)使用HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON,PWR_SLEEPENTRY_WFI);打开睡眠模式。由于Hal库与标准库在管理系统时钟和低功耗模式时的处理方式不同,Hal库中需
python udsoncan 详解
车载testing
智能汽车测试python
pythonudsoncan详解udsoncan是一个Python库,用于实现汽车统一诊断服务(UnifiedDiagnosticServices,UDS)协议。UDS是一种用于汽车诊断的标准化通信协议,它定义了一系列的服务和流程,用于ECU(电子控制单元)的诊断和通信。udsoncan库支持通过CAN(ControllerAreaNetwork)和DoIP(DiagnosticoverIP)等不
AI对话导出工具 (AI Chat Exporter)——支持 ChatGPT, Grok 和 Gemini 平台
ALGORITHM LOL
人工智能chatgpt
AI对话导出工具(AIChatExporter)轻松将AI对话导出为标准Markdown格式支持ChatGPT,Grok和Gemini平台相关代码已开源至Github欢迎Star✨功能特点多平台支持:同时支持ChatGPT,Grok和Gemini三大AI平台完整内容保留:精确导出所有对话内容,包括代码块、数学公式、链接和格式化文本标准Markdown格式:输出符合标准的Markdown格式,确保最
打造连贯性:如何通过过渡句提升论文的逻辑流畅性
学境思源AcademicIdeas
AI写作ChatGPT学境思源chatgpt人工智能
在学术写作中,逻辑连贯性是衡量论文质量的重要标准之一。即使论点扎实、数据详实,缺乏连贯性的论文仍可能让读者感到困惑。过渡句作为连接不同段落和章节的重要桥梁,能够有效地提升文章的逻辑流畅性,使内容更加易于理解。今天的内容我们将深入探讨过渡句的重要性,并提供实用技巧和示例,帮助写作者在论文中实现自然过渡,提升整体阅读体验。通过掌握这些方法,作者可以确保其研究成果得到更好的展示和认可。1.过渡句的重要性
Joda-Time 日期时间库介绍
hweiyu00
技术栈杂谈开发语言java
一、Joda-Time是什么?Joda-Time是由StephenColebourne开发的开源日期时间库,用于替代Java标准库中的java.util.Date和java.util.Calendar。它因设计更合理、使用更便捷,曾是Java开发中处理日期时间的主流选择,尤其在Java8推出新的日期时间API(java.time包)之前被广泛使用。二、Joda-Time解决了Java标准库的哪些问
深度学习使用Pytorch训练模型步骤
vvvdg
深度学习pytorch人工智能
训练模型是机器学习和深度学习中的核心过程,旨在通过大量数据学习模型参数,以便模型能够对新的、未见过的数据做出准确的预测。训练模型通常包括以下几个步骤:1.数据准备:收集和处理数据,包括清洗、标准化和归一化。将数据分为训练集、验证集和测试集。2.定义模型:选择模型架构,例如决策树、神经网络等。初始化模型参数(权重和偏置)。3.选择损失函数:根据任务类型(如分类、回归)选择合适的损失函数。4.选择优化
储能电池舱防爆通风环控系统有哪些要求?
ZNHKJ
储能风电智能环控系统能源
纵观储能行业发展历程,技术水平突飞猛进,各类政策、规范标准都已取得长足进步,但起火爆燃事故却始终如影随形,储能安全也成为业内关注的焦点。起火爆燃何故频发,又应当如何防范呢?储能站大多采用的是锂电池,极易产生易燃易爆炸气体,一旦锂电池本身发生自燃就会在短时间内爆炸,直接影响现场工作人员的生命安全及其他设备的正常运行,所以就需要在日常运营维护和意外产生的时候有一套完备的储能泄爆排风系统,在灭火的时候做
危急时刻显身手:AORO M6 Pro防爆对讲机的实战智慧
AORO_BEIDOU
人工智能信息与通信5G科技
在工业安全与应急通信领域,设备的技术自主性与智能化水平已成为衡量核心竞争力的关键指标。面对复杂多变的作业环境与日益严苛的安全标准,AOROM6Pro防爆对讲机凭借“纯血国产”的技术底座与“AI赋能”的创新突破,为危化、能源、公共安全等领域提供了兼具安全性与高效能的通信解决方案。这款斩获2024年度AI天马“臻品”殊荣的产品,不仅重新定义了防爆对讲机的技术标杆,更以本土化创新回应了行业对极端场景通信
AI摄像头动捕:精准量化八段锦动作质量,赋能传统功法习练
在追求动作标准度的竞技体育、舞蹈教学或运动康复领域,如何科学、客观、高效地评估动作质量一直是核心挑战。如今,AI摄像头动捕技术的成熟,正为这些领域带来突破性的解决方案,尤其在需要高度专注与准确性的八段锦、太极拳等传统健身功法领域中展现出巨大潜力。AI摄像头动捕系统,通过部署多组高帧率RGB摄像头,在空间中构建一个精密的三维捕捉场域。这种无穿戴动捕(或称无标记点动捕)的方式,让用户无需任何设备束缚人
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