- mysql-sql优化之-查询总条数
她的博客
数据库mysqlcount
1、COUNT(*)和COUNT(COL)COUNT(*)通常是对主键进行索引扫描,而COUNT(COL)就不一定了,另外前者是统计表中的所有符合的纪录总数,而后者是计算表中所有符合的COL的纪录数。还有有区别的。优化总结,对于MyISAM表来说:1.任何情况下SELECTCOUNT(*)FROMtablename是最优选择;2.尽量减少SELECTCOUNT(*)FROMtablenameWHE
- Adam Optimizer
六月五日
Deep-MLDeep-ML
AdamOptimizerImplementtheAdamoptimizerupdatestepfunction.Yourfunctionshouldtakethecurrentparametervalue,gradient,andmovingaveragesasinputs,andreturntheupdatedparametervalueandnewmovingaverages.Thefunc
- MySQL-SQL
我是西瓜王
mysqlsql数据库
1.客户端内置命令客户端内置命令客户端独有,可能不同数据库产品的客户端内置命令存在很大差异,不像SQL命令有标准规范。help\h?\?这四个命令都可以输出帮助文档查看客户端内置命令?(\?)“帮助”的同义词。clear(\c)清除当前输入语句。connect(\r)重新连接到服务器。可选参数是db和host。delimiter(\d)设置语句分隔符,默认是;。edit(\e)使用$EDITOR执
- HTML 图像标签使用陷阱
神明木佑
html前端
新手在使用标签时常见的错误有:忘记设置alt属性:alt属性用于提供图像的替代文本信息,当图像无法显示时,浏览器会显示alt属性中的文本。如果忘记设置alt属性,用户在无法看到图像的情况下无法获取替代文本信息,降低了网站的可访问性。错误地设置图像大小:可以通过设置width和height属性来指定图像的显示大小,但是一些新手可能会错误地设置了不合适的大小值,导致图像在页面上显示过大或过小,从而破坏
- input的Checkbox(复选框)属性具体怎么使用
神明木佑
前端javascript开发语言
Checkbox(复选框)是一种常用的表单元素,允许用户从一组选项中选择一个或多个选项。它在各种应用程序和网站中广泛使用,为用户提供灵活的选择方式。以下是Checkbox的一些基本用法和注意事项:基本用法:在HTML中,Checkbox是通过标签创建的。每个Checkbox都有一个name属性,用于标识该Checkbox所属的组。当用户提交表单时,只有被选中的Checkbox的值会被发送。Chec
- 基于Python第三方模块Pandas以指定数量分割数据写入同一个Excel的不同Sheet表中
袁袁袁袁满
Python实用技巧大全pythonpandasexcel不同Sheet表
记录一下工作中的小技巧:在Python中,使用pandas库来从SQLServer或者Mysql读取数据(或其他数据来源),然后根据需要将数据分割并写入不同的Excelsheet。下面是一个详细的步骤说明,包括如何连接SQLServer或者Mysql数据库、读取数据、分割数据以及将分割后的数据写入不同的Excelsheet。文章目录步骤1:安装必要的库步骤2:连接数据库并读取数据步骤3:分割数据步
- 在linux中安装anaconda,并激活
问题咨询解答微信:wyj140615
linux运维服务器
在linux中安装anaconda,并激活base)wyj@wyj:~/下载$history1sudodpkg-isogoupinyin_4.2.1.145_arm64.deb2sudodpkg-iWeChatLinux_x86_64.deb3sudodpkg-isogoupinyin_4.2.1.145_arm64.deb4ls5pwd6gitclonesudoaptinstallnet-too
- 初学html、css的重点整理(笔记)
♪★追梦♗
静态网页网页作业htmlcss前端
第一天:基本标签:头标签:标题标签:段落标签:换行标签:(单标签)区域标签:(一行只能有一个),(一行能有多个)图像标签:注释:链接标签:文本内容锚点链接:能够快速跳到本页面的某个位置。编写格式:,为将要跳转的内容设置id。列如:内部链接:第二天表格小知识表格居中:align="center"表格宽高:width="数值",height="数值"表格边框:border=”数值“单元格间距:cell
- HTML视口动画
鲨鱼辣椒️面
html前端
animista.jsconstgetParamet={getAnimistaClass(element){returnelement.getAttribute("animista-class");},getIntervalTime(element){returnelement.getAttribute("interval-time")?Number(element.getAttribute("i
- Html+CSS中子选择器
若节
Html+CSShtmlCSS子选择器
子选择符.food>li{border:1pxsolidred;}/*添加边框样式(粗细为1px,颜色为红色的实线)*/.first>span{border:1pxsolidred;}三年级时,我还是一个胆小如鼠的小女孩,上课从来不敢回答老师提出的问题,生怕回答错了老师会批评我。就一直没有这个勇气来回答老师提出的问题。学校举办的活动我也没勇气参加。食物水果香蕉苹果梨蔬菜白菜油菜卷心菜这里就可以在外
- HTML/CSS中兄弟选择器
~废弃回忆 �༄
HTMLcsshtmlcss3HTML/CSS中兄弟选择器
1.相邻兄弟选择器:语法:选择器1+选择器22.通用兄弟选择器:语法:选择器1~选择器23.实例:/*div中后紧紧相邻的兄弟P元素(谁在我下铺的兄弟)--相邻兄弟选择器*/div+p{/*语文才会变色.因为兄弟指的是向下紧紧挨着的兄弟*/color:red;}/*选中div后面所有的兄弟元素(谁在我下铺的所有兄弟)--通用兄弟选择器*/div~p{color:aqua;}课程语文数学英语化学4.
- HTML/CSS中后代选择器
~废弃回忆 �༄
HTMLhtmlcss前端HTML/CSS中后代选择器
1.作用:选中指定元素中,符合要求的后代元素.2.语法:选择器1选择器2选择器3......选择器n(使用空格隔开)3.举例:/*选中ul中的所有li*/ulli{color:red;}/*选中类名为subject元素中的所有li*/.subjectli{color:blue;}/*选中类名为subject元素中的所有类名为front-end的li*/.subjectli.front-end{co
- 泷羽Sec-黑客基础之html(超文本标记语言)
网安Ruler
红队渗透html前端网络安全学习
声明学习视频来自B站UP主泷羽sec,如涉及侵泷羽sec权马上删除文章笔记的只是方便各位师傅学习知识,以下网站涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负一、什么是htmlHTML(超文本标记语言)是用于创建网页的标准语言。它通过标签定义网页内容,比如标题、段落、图片和链接。HTML文档由、和组成,是网页的基础结构。简单易学,是前端开发的入门必备!二、html各个组成部分1、文
- Python爬虫实战:从零到一构建数据采集系统
DevKevin
爬虫python爬虫开发语言
文章目录前言一、准备工作1.1环境配置1.2选择目标网站二、爬虫实现步骤2.1获取网页内容2.2解析HTML2.3数据保存三、完整代码示例四、优化与扩展4.1反爬应对策略4.2动态页面处理4.3数据可视化扩展五、注意事项六、总结互动环节前言在大数据时代,数据采集是开发者的必备技能之一,而Python凭借其简洁的语法和丰富的库(如requests、BeautifulSoup)成为爬虫开发的首选语言。
- HTML 新手易犯的标签属性设置错误
神明木佑
html前端css
滥用target="_blank"属性:将所有链接的目标设为_blank会在新标签页中打开链接,这可能会导致用户在不知情的情况下打开大量新标签页,影响用户体验。正确的做法是只在需要新标签页打开的链接上使用该属性,并在标签中添加适当的提示,让用户知道链接会在新标签页打开。错误地设置required属性:required属性用于标记表单元素为必填项,但错误地设置此属性可能导致用户在提交表单时遇到问题,
- HtML之JavaScript BOM编程
录大大i
前端HTMLJavaScriptjavascripthtml前端
HtML之JavaScriptBOM编程windowhistory历史location地址栏document浏览器打开的.html文档consoleF12开发者工具的控制台screen屏幕navigator浏览器软件本身(历史原因一直沿用)sessionStorage会话级存储localStorage持久级存储window对象APIwindow对象的属性APIhistory窗口的访问历史locat
- V4L2采集图像基本流程
yuyangyg
linux图像处理ubuntuV4L2
参考http://blog.csdn.net/tsuibeyond/article/details/50654823http://www.cnblogs.com/surpassal/archive/2012/12/19/zed_webcam_lab1.html1.打开设备fd=open(FILE_VIDEO1,O_RDWR))2.取得设备的capability看看设备具有什么功能比如是否具有视频输
- 【YashanDB 知识库】如何将 mysql 含有 group by 的 SQL 转换成崖山支持的 SQL
数据库
问题现象以下SQL在MYSQL下均能执行成功,在崖山下执行报错。SELECTSname,Ssex,min(Sage)FROMStudentgroupbySsex;SELECTSname,count(0)AScountsFROMStudent;selectmin(st.Sage),SC.CId,min(st.SId),min(SC.score)fromStudentstLEFTJOINSCONst.
- python上传文件进度_Django Ajax 文件上传及进度显示
天天小宇
python上传文件进度
在Django1.0版本后,文件上传的处理做了很大的改变,其中很重要的一点就是引入了UploadHandlers的概念。UploadHandlers这是个和Django中的Middleware差不多的东西,可以通过在settings.py文件中设置FILE_UPLOAD_HANDLERS定义一系列UploadHandlers,和Middleware相似的地方主要表现为以下两点:1、Django会按
- Zerto 10.0 Update 6 - 适用于本地、混合和多云环境的灾难恢复和数据保护
备份与恢复
Zerto10.0Update6-适用于本地、混合和多云环境的灾难恢复和数据保护勒索软件防护、灾难恢复和多云移动性的统一解决方案请访问原文链接:https://sysin.org/blog/zerto-10/查看最新版。原创作品,转载请保留出处。作者主页:sysin.org携手ZERTO提升勒索软件保护与灾难恢复水平发挥行业领先的解决方案的优势,享受出色的勒索软件保护、灾难恢复和数据保护即服务,为
- Windows 11 24H2 中文版、英文版 (x64、ARM64) 下载 (2025 年 2 月更新)
windows
Windows1124H2中文版、英文版(x64、ARM64)下载(2025年2月更新)Windows11,version24H2EnterpriseArm64x64(updatedFeb2025)请访问原文链接:https://sysin.org/blog/windows-11/查看最新版。原创作品,转载请保留出处。作者主页:sysin.org全新推出Windows11全新Windows体验,让
- Windows 10 on ARM, version 22H2 ARM64 中文版、英文版下载 (2025 年 2 月更新)
windows
Windows10onARM,version22H2ARM64中文版、英文版下载(2025年2月更新)Windows10onARM,version22H2ARM64(updatedFeb2025)请访问原文链接:https://sysin.org/blog/windows-10-arm/查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgWindows10,version22H2(r
- Windows 10 version 22H2 中文版、英文版下载 (2025 年 2 月更新)
windows
Windows10version22H2中文版、英文版下载(2025年2月更新)Windows1022H2EnterpriseArm64x64(updatedFeb2025)请访问原文链接:https://sysin.org/blog/windows-10/查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgWindows10更新历史记录Windows10,version22H2,a
- Sqlserver中判断表是否存在
码农张3
SQLServer数据库c/c++java
转载地址:https://www.cnblogs.com/hclw/p/4233312.html在sqlserver(应该说在目前所有数据库产品)中创建一个资源如表,视图,存储过程中都要判断与创建的资源是否已经存在在sqlserver中一般可通过查询sys.objects系统表来得知结果,不过可以有更方便的方法如下:ifobject_id('tb_table')isnotnullprint'exi
- 如何在 macOS 上配置 MySQL 环境变量
獨梟
全面配置macosmysql数据库
如何在macOS上配置MySQL环境变量步骤1:查找MySQL安装路径打开终端,使用以下命令查找mysql的可执行文件路径:whichmysql如果该命令没有返回结果,可以使用find命令:sudofind/-name"mysql"2>/dev/null你将看到类似于以下的路径:/usr/local/mysql-9.2.0-macos15-arm64/bin/mysql这表示MySQL安装在/us
- MyBatis-Plus常用增删改查方法
Warren98
Javamybatistomcatspringboot笔记mysql
MP常用方法方法作用对应SQLinsert(user)插入数据INSERTINTO...selectById(id)根据ID查询SELECT*FROM...WHEREid=?selectBatchIds(ids)批量查询SELECT*FROM...WHEREidIN(?,?,?)selectList(wrapper)条件查询SELECT*FROM...WHERE...updateById(user
- ubuntu离线安装ollama
reset2021
ubuntulinuxollama
现在,我来一步步说明在Ubuntu上离线安装Ollama的具体步骤:1.准备环境确保目标计算机已预先更新至最新状态。可以使用以下命令: sudoaptupdate&&sudoaptupgrade-y但如果之后无法联网,建议先完成升级和清理缓存。2.下载Ollama的.deb包在有网络连接的情况下,访问Ollama的官方网站或者其GitHub仓库Releasev0.5.11·ollama/oll
- /usr/share/nginx/html 目录到底是干什么的?
快点好好学习吧
PHPnginxhtmljava
/usr/share/nginx/html目录是干什么的?想象一下,你有一个展示柜,专门用来摆放你的宝贝,比如玩具、照片或收藏品。每当有客人来家里时,他们首先会看到这个展示柜里的东西。在Nginx(一个非常流行的网页服务器软件)的世界里,/usr/share/nginx/html就像是这样一个展示柜。/usr/share/nginx/html是什么?Nginx的默认网页目录:当有人通过互联网访问你
- H3C和华为产品定期将配置文件保存到FTP服务器的配置步骤
normanhere
服务器华为网络
H3C产品配置:sysschedulerjobsaveconfigcommand1saveforcecommand2copystartup.cfgftp://username:password@1.1.1.1/filenamequitschedulerschedulesaveconfigjobsaveconfigtimerepeatingat14:30week-daySatquitsaveforc
- Linux(centos)安装 MySQL 8 数据库(图文详细教程)
sanggou
linux数据库centos
前言前几天写了个window系统下安装Mysql的博客,收到很多小伙伴私信需要Linux下安装Mysql的教程,今天这边和大家分享一下,话不多说,看教程。一、删除以前安装的MySQL服务一般安装程序第一步都需要清除之前的安装痕迹,要不然可能会有版本,依赖冲突等问题,这里步骤和Mysql卸载流程可以通用。1.卸载Mysql查看之前是否安装过Mysql[root@localhost~]#rpm-qa|
- 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