- EasySwoole热加载
龏皚觻髾檃
PHPEasySwoolephp
文件热加载由于swoole常驻内存的特性,修改文件后需要重启worker进程才能将被修改的文件重新载入内存中解决:Process的方式实现文件变动自动进行服务重载1.安装inotify扩展peclinstallinotify2.操作成功后,修改php.ini,加入extension=inotify.so新建文件App/Process/HotReload.php并添加如下内容,也可以放在其他位置,请
- Spring Boot 集成 Kafka 消息发送方案
weixin_43833540
springbootkafka
一、引言在SpringBoot项目中,Kafka是常用的消息队列,可实现高效的消息传递。本文介绍三种在SpringBoot中使用Kafka发送消息的方式,分析各自优缺点,并给出对应的pom.xml依赖。二、依赖引入在pom.xml中添加以下依赖:org.springframework.kafkaspring-kafka3.0.8org.jsonjson20231013若要进行测试,可添加sprin
- easyswoole学习记录
司江龙
swoolePHPeasyswooleswoole
php-fpm的工作方式php-fpm就是php-fastcgi进程管理器主要工作的就是mastr进程,主要和linux进行一个协调,当请求从nginx到fpm的时候,master会把请求交给自己下面管理的子进程一个池模型,问题:一个work进程内只会处理一个请求,也就是说这个进程内在同一时刻只会处理一个request请求,不会处理多个,所以一台服务器的并发数就取决于服务器开启了多少个work进程
- @Autowired 和 @Resource 注解的区别
在努力的韩小豪
springspringbootjava-eejava
前言@Autowired和Resource是Spring中用于依赖注入的注解,但两者在实现机制和使用方式上有显著差异。主要区别1.来源不同@Autowired:由Spring框架提供(org.springframework.beans.factory.annotation),与Spring强耦合。@Resource:由JSR-250规范定义(javax.annotation.Resource),属
- 在Spring Boot中实现分布式任务调度
微赚淘客系统开发者
springboot分布式后端
在SpringBoot中实现分布式任务调度大家好,我是微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!使用SpringBoot与Quartz实现分布式任务调度1.引入依赖在SpringBoot项目中,首先需要引入Quartz和相关依赖:org.springframework.bootspring-boot-starter-quartz2.配置Quartz在SpringBoot的配
- Springboot List集合的校验方式
johnrui
springbootlist后端
pom.xml引入org.hibernate.validatorhibernate-validator6.2.0.Finalorg.springframework.bootspring-boot-starter-validation校验实体类注解@Data@NoArgsConstructor@AllArgsConstructor@JsonIgnoreProperties(ignoreUnknown
- 深度学习与目标检测系列(六) 本文约(4.5万字) | 全面解读复现ResNet | Pytorch |
小酒馆燃着灯
深度学习目标检测pytorch人工智能ResNet残差连接残差网络
文章目录解读Abstract—摘要翻译精读主要内容Introduction—介绍翻译精读背景RelatedWork—相关工作ResidualRepresentations—残差表达翻译精读主要内容ShortcutConnections—短路连接翻译精读主要内容DeepResidualLearning—深度残差学习ResidualLearning—残差学习翻译精读ResNet目的以前方法本文改进本质
- 使用Truffle进行智能合约测试
25号底片t
智能合约区块链网络
1、Vscode下安装Solidity插件,change到指定的solidity编译器的版本下2、Truffle开发框架的安装:npminstall-gtruffle3、在workspace下新建一个truffle-test的项目目录,执行truffleinit初始化项目D:\WorkSpace\4、在migrations目录下新建一个js文件:1_deploy_contracts.js(注意文件
- 在Robot Framework中Run Keyword If的用法
吾爱乐享
RobotFrameworkRobotFramework
基本用法使用ELSE使用ELSEIF使用内置变量使用Python表达式本文永久更新地址:在RobotFramework中,RunKeywordIf是一个条件执行的关键字,它允许根据某个条件来决定是否执行某个关键字。下面是RunKeywordIf的基本用法:RunKeywordIfconditionkeyword...ELSEkeyword这里的condition是一个表达式,如果该表达式为真(即条
- 新建react native项目都失败,创建出来的都是.xcodeproj,而不是.xcworkspace,如何解决??
bug菌¹
全栈Bug调优(实战版)reactnativereact.jsjavascript
本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!全文目录:问题描述解决方案1.确保正确设置代理源(如果你在国内)2.手动安装CocoaPods依赖3.检查你的Ruby和CocoaPods环境4.尝试清理并重建项目5.查
- java struts jxl 导入导出Excel(无模板)
weixin_30437847
java数据库javascriptViewUI
jar包:importjavax.servlet.http.HttpServletResponse;importjava.io.OutputStream;importjava.io.File;importjxl.DateCell;importjxl.Sheet;importjxl.Workbook;importjxl.format.Alignment;importjxl.format.Border
- LaTeX从零到精通的系统化指南
niuTaylor
学术区latex
以下是一份结构清晰的LaTeX入门指南,整合了核心知识点与实战技巧,结合官方文档与社区经验总结而成:LaTeX从零到精通的系统化指南一、环境搭建与基础配置1.安装方案TeX发行版:推荐TeXLive(跨平台)或MiKTeX(Windows优先)编辑器:VSCode+LaTeXWorkshop插件(智能补全/实时预览)或TeXstudio(新手友好)2.中文支持\documentclass{arti
- linux防火墙多个 多个ip配置,网络中多网卡和多ip中的高可用
没伞请奔跑i
linux防火墙多个多个ip配置
一、虚拟网卡实现一个网卡多个地址1、单个网卡实现多个ipv4地址,只需要在该网卡的配置文件的目录新增网卡配置文件即可。进入网卡"eth0"的目录下2、新增网卡配置文件"ifcfg-eth0:0"和"ifcfg-eth0:1"3、关掉NetworkManager服务4、重启网卡,让系统重读配置网卡配置文件5、使用ifconfig命令查看在线的网卡ip地址二、多网卡bond,mode11、首先在虚拟机
- 强化学习中的深度卷积神经网络设计与应用实例
数字扫地僧
计算机视觉cnn人工智能神经网络
I.引言强化学习(ReinforcementLearning,RL)是机器学习的一个重要分支,通过与环境的交互来学习最优策略。深度学习,特别是深度卷积神经网络(DeepConvolutionalNeuralNetworks,DCNNs)的引入,为强化学习在处理高维度数据方面提供了强大工具。本文将探讨强化学习中深度卷积神经网络的设计原则及其在不同应用场景中的实例。II.深度卷积神经网络在强化学习中的
- Android Camera 架构
2501_90226133
android架构
二、CameraApp层简述三、CameraFramework层简述四、CameraHal3子系统五、下面需要梳理的重点-正在进行一.AndroidCamera整体架构简述自Android8.0之后大多机型采用CameraAPI2HAL3架构,先盗改谷歌的一张图,读完整部代码后再看这张图,真的是很清晰,很简洁,很到位.原图:https://source.android.google.cn/devi
- golang-嵌套结构体
lmryBC49
golang开发语言后端
结构体嵌套golang中没有类,他通过结构体来实现其他编程语言中类的相关功能。具名结构体基本语法基本语法golang的结构体嵌套特别简单。type结构体类型1struct{字段类型1字段类型2}//这样就实现了结构体的嵌套type结构体类型2struct{字段类型1字段类型2字段结构体类型1}举例packagestruct_knowledgeimport"fmt"typeWorkerstruct{
- 【深度学习】 PyTorch一文详解
Nerous_
深度学习深度学习pytorch人工智能机器学习python
“PyTorchisadeeplearningframeworkthatprioritizessimplicityandflexibility,makingitthego-tochoiceforbothresearchersanddevelopers.”—Anonymous1.PyTorch简介1.1PyTorch的背景与发展PyTorch是由Facebook人工智能研究院(FAIR)开发的一个开
- AI开发日记- Prompt Library篇
BillyXie23
AI探索prompt人工智能githubpythonAI编程
突发奇想想在git上host一个静态页面的promptlibrary,于是花了一天时间配合cursor硬是撸了出来Github地址:https://github.com/MrXie23/PromptLibrary页面地址PromptLibrary-探索AI提示的艺术目前代码结构有些混乱,有些失败的folder还没清理,不过基础功能都已经可以work了,接下来的开发roadmap是把一些没做的页面都
- C#电子相册:面向对象设计与架构实践
金融先生-Frank
本文还有配套的精品资源,点击获取简介:C#电子相册是一个使用高级编程语言C#开发的Windows平台应用程序。该项目采用面向对象编程方法,将对象如照片和相册封装、继承和多态地组织起来。它可能采用了MVC、MVVM或MVP架构模式,并使用.NETFramework或.NETCore以及VisualStudio作为开发环境。数据库管理部分涉及SQL数据库,支持相册数据的存储与检索。文件列表中的"eri
- 路由交换技术——多私网下NAPT、FTP服务公网映射配置的实验
「J1e」
网络网络协议tcp/ip
网络地址转换(NAT)技术概述1.定义与背景网络地址转换(NetworkAddressTranslation,NAT)是一种在IP数据包传输过程中修改源或目标IP地址及端口的技术,主要用于解决IPv4地址短缺问题。随着互联网设备激增,NAT通过允许多个设备共享单一公网IP地址,显著延缓了IPv4地址耗尽的速度。2.工作原理NAT的核心是通过中间设备(如路由器、防火墙)建立内网私有地址与外网公有地址
- RIP路由欺骗攻击与防御实验详解
w2361734601
智能路由器网络
一、基础网络配置1.路由器R1配置interfaceGigabitEthernet0/0/0ipaddress192.1.2.254255.255.255.0!interfaceGigabitEthernet0/0/1ipaddress192.1.3.254255.255.255.0!routerrip1version2network192.1.2.0network192.1.3.02.路由器R2
- OWL - 优化劳动力学习的通用智能体
小众AI
AI开源学习人工智能AI编程
GitHub:https://github.com/camel-ai/owl更多AI开源软件:发现分享好用的AI工具、AI开源软件、AI模型、AI变现-小众AIOWL是一个前沿的多智能体协作框架,推动任务自动化的边界,构建在CAMEL-AIFramework。愿景是彻底变革AI智能体协作解决现实任务的方式。通过利用动态智能体交互,OWL实现了跨多领域更自然、高效且稳健的任务自动化。OWL在GAIA
- 思科 N9K 交换机密码恢复
m0_54931486
服务器运维网络
目录1.命令行界面修改密码2.断电/重启恢复密码*从FTP加载镜像修改admin密码有以下几种方式:通过命令行界面,使用admin权限的用户名进行恢复;对设备进行断电/重启设备恢复。1.命令行界面修改密码1.查看账户switch#showuser-accountuser:adminthisuseraccounthasnoexpirydateroles:network-adminuser:dbgus
- 【服务器数据恢复】数据中心存储服务器VMware vSAN分布式存储架构数据恢复解析
海境超备
服务器分布式架构网络安全系统安全运维
随着企业数据中心的数据量的不断增加,数据存储和恢复成为了企业必须面对的重要问题。vSAN(VirtualStorageAreaNetwork)分布式存储架构是一种新型的存储技术,它可以有效地解决企业数据存储和管理方面的问题。本文将详细介绍vSAN分布式存储架构的原理和特点,并解析其数据恢复的原理和方法。分布式文件系统(DistributedFileSystem,DFS)是一种能够在多台计算机之间共
- 【人工智能】注意力机制深入理解
问道飞鱼
机器学习与人工智能人工智能注意力机制
文章目录**一、注意力机制的核心思想****二、传统序列模型的局限性****三、Transformer与自注意力机制****1.自注意力机制的数学公式****四、注意力机制的关键改进****1.稀疏注意力(SparseAttention)****2.相对位置编码(RelativePositionEncoding)****3.图注意力网络(GraphAttentionNetwork,GAN)****
- Transformer与图神经网络的融合与应用
AI天才研究院
DeepSeekR1&大数据AI人工智能大模型AI大模型企业级应用开发实战计算科学神经计算深度学习神经网络大数据人工智能大型语言模型AIAGILLMJavaPython架构设计AgentRPA
Transformer与图神经网络的融合与应用关键词:Transformer,图神经网络,注意力机制,图结构数据,图表示学习,图分类,图生成1.背景介绍近年来,深度学习技术在各个领域取得了显著的进展。其中,Transformer模型和图神经网络(GraphNeuralNetworks,GNNs)是两个备受关注的研究方向。Transformer最初应用于自然语言处理领域,通过自注意力机制实现了并行计
- 深度学习的颠覆性发展:从卷积神经网络到Transformer
AI天才研究院
AI大模型应用入门实战与进阶ChatGPT大数据人工智能语言模型AILLMJavaPython架构设计AgentRPA
1.背景介绍深度学习是人工智能的核心技术之一,它通过模拟人类大脑中的神经网络学习从大数据中抽取知识,从而实现智能化的自动化处理。深度学习的发展历程可以分为以下几个阶段:2006年,GeoffreyHinton等人开始研究卷积神经网络(ConvolutionalNeuralNetworks,CNN),这是深度学习的第一个大突破。CNN主要应用于图像处理和语音识别等领域。2012年,AlexKrizh
- python构造函数
yimaoyingbi
python学习python构造函数
classEmployee:def__init__(self,name,age):self.name=nameself.__age=ageprint("您好")def__work(self):print("疫情严重,在家学习")print("年龄:{0}".format(self.__age))e=Employee("gaoqi",18)e._Employee__work()构造函数和普通函数的区
- docker部署nginx+php7.3流程及遇到的坑
匿名用户(192.168.*.*)
linuxdockernginxphpcentos
拉取镜像dockerpullnginx:alpinedockerpullphp:7.3-fpm-alpine创建dockernetwork网络dockernetworkcreatemy_web创建docker容器并拷贝配置文件目录到主机//这一步是为了挂载卷创建主机的挂载目录mkdir~/nginx/{logs,conf.d}创建nginx容器dockerrun-d--rm--namenginxn
- C1-Week2 Program Assignment: Logistic Regression with a Neural Network mindset
houzhizhen
LogisticRegressionwithaNeuralNetworkmindsetWelcometoyourfirst(required)programmingassignment!Youwillbuildalogisticregressionclassifiertorecognizecats.ThisassignmentwillstepyouthroughhowtodothiswithaNe
- 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