JavaScript青少年简明教程:DOM和CSS简介
JavaScript青少年简明教程:DOM和CSS简介
DOM简介
DOM(Document Object Model)将文档表示为一个树形结构,其中每个节点都是一个对象,每个对象都有其自身的属性和方法。
通过对DOM的操作,开发者可以使用编程语言(如JavaScript)动态地更新页面内容、样式以及处理用户交互,为用户提供丰富的体验。
【DOM元素和HTML文档标签的关系
HTML标签是定义网页内容和结构的标记语言元素,存在于HTML文件中。比如<title>,<a>,<h1>等。它们是静态的,决定了网页最初的内容布局。
而DOM(文档对象模型)元素是HTML标签在浏览器中的对象表示形式。当浏览器解析HTML文档时,会根据标签生成对应的DOM元素,形成一个树状结构。DOM元素是动态的对象模型,可以通过JavaScript等脚本语言来访问和操作。
说明:
HTML标签是编写网页内容和结构的标记。
DOM元素是标签在浏览器内存中的对象表示和数据模型。
DOM元素与HTML标签并不是一一对应的关系,因为一个HTML标签在DOM中可能对应多个节点对象。这是由于浏览器解析HTML时,除了构建对应元素节点外,还会创建其他节点,比如文本节点、属性节点等。
举个例子,对于HTML标签<p id="test">Hello World</p>
在DOM中会存在如下节点:
元素节点 - <p>元素
属性节点 - id="test"的属性节点
文本节点 - Hello World的文本节点
所以一个看似简单的HTML标签,在DOM树中可能会有多个节点来表示它的不同部分,而不是简单的一一对应。
另外,除了HTML解析出的节点,DOM还提供了一些附加的节点对象,比如document对象、window对象等,它们在HTML中没有直接对应的标签。】
下面给出一个通过JavaScript操作DOM的示例:
<html lang="zh">
<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>DOM操作示例</title>
</head>
<body> <h1 id="greeting">你好,世界!</h1> <button onclick="changeGreeting()">点击我改变问候语</button> <script>// 定义一个函数来改变问候语 function changeGreeting() { // 使用getElementById方法来获取id为"greeting"的元素 let greetingElement = document.getElementById('greeting'); // 修改该元素的内容为新的问候语 greetingElement.textContent = '你好,JavaScript!'; }</script> </body>
</html>
在这个示例中,当你点击按钮时,会触发changeGreeting函数。该函数首先使用document.getElementById方法获取页面上id为greeting的元素(即<h1>元素),然后修改该元素的textContent属性来改变其显示的内容。这样,<h1>元素的内容将从“你好,世界!”更改为“你好,JavaScript!”
以下是一些常见的DOM操作介绍:
以下是一些常见的DOM操作介绍:
1. 访问DOM元素
通过ID获取元素
let element = document.getElementById('myElement');
通过类名获取元素
返回一个包含所有匹配元素的HTMLCollection。
let elements = document.getElementsByClassName('myClass');
通过标签名获取元素
返回一个包含所有匹配元素的HTMLCollection。
let elements = document.getElementsByTagName('div');
通过CSS选择器获取元素
返回第一个匹配的元素。
let element = document.querySelector('.myClass');
返回所有匹配的元素,返回的是一个NodeList。
let elements = document.querySelectorAll('.myClass');
2. 修改DOM元素内容和属性
修改元素内容
a)修改元素的文本内容:
element.textContent = '新的文本内容';
例如,操作网页的文档对象模型 (DOM),例如修改元素内容:
<p id="myParagraph">Hello, world!</p>
<script>
document.getElementById("myParagraph").textContent = "Hello, JavaScript!";
</script>
b)修改元素的HTML内容:
element.innerHTML = '<span>新的HTML内容</span>';
修改元素属性
element.setAttribute('src', 'image.png');
获取元素属性
let src = element.getAttribute('src');
删除元素属性
element.removeAttribute('src');
3. 修改元素样式
通过style属性修改内联样式
element.style.color = 'blue';
element.style.fontSize = '16px';
添加或删除类名
element.classList.add('newClass');
element.classList.remove('oldClass');
element.classList.toggle('activeClass'); // 如果类名存在则移除,否则添加
4. 创建和删除元素
创建新元素
let newElement = document.createElement('div');
newElement.textContent = '我是一个新元素';
添加新元素到DOM
let parentElement = document.getElementById('parent');
parentElement.appendChild(newElement);
删除元素
parentElement.removeChild(newElement);
在JavaScript中,操作表单元素是一个常见的任务,它允许你读取用户输入、验证数据、动态地更改表单内容等。下面给出获取表单元素示例:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Form Example</title>
</head>
<body><form id="myForm"><label for="name">Name:</label><input type="text" id="name" name="name"><br><label for="age">Age:</label><input type="number" id="age" name="age"><br><input type="submit" value="Submit"></form><script>const form = document.getElementById('myForm');form.addEventListener('submit', function(event) {event.preventDefault(); // 防止表单实际提交const name = document.getElementById('name').value;const age = document.getElementById('age').value;alert('Name:'+ name + ' '+ 'Age:'+age);});</script>
</body>
</html>
此例,使用document.getElementById 获取表单元素,然后访问其 value 属性来获取用户输入的数据。
CSS 简介
CSS (Cascading Style Sheets) 是一种样式表语言,用于描述和控制网页中元素的呈现效果,包括布局、字体、颜色、背景等方面的样式。CSS 是网页设计中最重要的技术之一,它可以使网页内容和样式相分离,有利于内容的重复使用和样式的统一管理。
CSS 的主要作用如下:
- 布局和排版:通过设置元素的宽高、边距、填充、浮动、定位等属性,可以实现不同的布局和排版方式。
- 字体和文本样式:可以设置文本的字体family、大小、颜色、加粗、倾斜、行高、对齐方式等样式。
- 背景和边框:可以为元素设置背景颜色、背景图片、背景重复方式,以及边框的样式、颜色、宽度等。
- 盒模型:CSS 将网页元素视为矩形盒子,通过设置 margin、padding、border 等属性来控制盒子的样式。
- 过渡和动画:CSS3 引入了过渡和动画功能,可以实现元素的平滑过渡和动画效果。
CSS 可以通过多种方式与 HTML 页面关联:内联样式、内部样式表、外部样式表等。在实际开发中,通常推荐使用外部样式表的方式,利于样式的复用和维护。CSS 的语法包括选择器、属性和值,通过不同的选择器可以精准地选中页面中的元素并设置其样式。
CSS 选择器用于“查找”(或选取)要设置样式的 HTML 元素。
要对HTML页面中的元素实现一对一,一对多或者多对一的控制,可用CSS 规则集(rule-set)实现,CSS 规则集也称为css样式定义,CSS 规则集由选择器和声明块组成,CSS语法
CSS规则由选择器和声明块组成:
选择器 {
属性: 值;
}
选择器(selector):用于选择要应用样式的HTML元素。常用选择器:
元素选择器(如 p、div、span 等),选择指定的元素
类选择器(如 .classname),选择指定类的元素,类名以点(.)开头
ID选择器(如 #idname),选择指定ID的元素,ID名以井号(#)开头。
属性选择器(如 [attr=value]),选择指定属性的元素。
伪类选择器(如 :hover、:active 等),选择特定状态的元素。
等
声明块(declaration block):包含一个或多个声明,每个声明由属性(property)和属性值(value)组成,属性和值之间用冒号分隔,声明之间用分号分隔。
属性 (Property): 要改变的样式特性,如颜色、字体、布局等。
值 (Value): 指定给属性的值,即你希望样式特性具有什么样的表现。
换句话说,声明块指明了样式,选择器指明了 “样式”的作用对象,也就是“样式”作用于网页中的哪些元素。
CSS注释
CSS中的注释以 /* 开头,以 */ 结尾。注释内容不会被浏览器解析。
CSS示例:
/* 选择器 */
body {
/* 声明块 */
background-color: lightblue; /* 属性: 值; */
}
h1 {
color: navy;
font-size: 24px;
}
p {
color: green;
}
CSS(层叠样式表)可以通过多种方式应用到HTML文档中,主要有三种:内联样式(Inline Styles)、内部样式表(Internal Stylesheets)和外部样式表(External Stylesheets)。:
1. 行内样式(Inline Styles)
直接在HTML元素的style属性中定义样式。这种方式仅适用于单个元素。但一般不推荐使用,因为它和HTML代码混杂在一起,不易于维护。例如:
<!DOCTYPE html>
<html>
<head> </head>
<body> <p style="color: blue; font-size: 20px;">这是一个段落。</p>
</body>
</html>
2. 内部样式表(Internal Style Sheet)
在HTML文件的<head>标签内的<style>标签中的定义样式。这种方式在HTML文件内将将样式代码与HTML代码进行了适当分离——写在不同部分。例:
<!DOCTYPE html>
<html>
<head> <style> p { color: blue; font-size: 20px; } </style>
</head>
<body> <p>这是一个段落。</p>
</body>
</html>
3. 外部样式表(External Stylesheets)
外部样式表是将样式代码写在单独的.css文件中,并通过HTML文件的<link>标签引入。这种方式是最推荐的方式,因为它可以实现样式代码的复用,提高代码的可维护性。
假设创建的css的文件名为styles.css,内容如下:
p { color: blue; font-size: 20px;
}
在HTML文件中引入这个CSS文件:
<!DOCTYPE html>
<html>
<head> <link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body> <p>这是一个段落。</p>
</body>
</html>
进一步学习,可参考:
HTML网页文档和DOM结构介绍 https://blog.csdn.net/cnds123/article/details/136901800
BOM和DOM入门 https://blog.csdn.net/cnds123/article/details/109635554
CSS选择器介绍https://blog.csdn.net/cnds123/article/details/125926256
相关文章:
JavaScript青少年简明教程:DOM和CSS简介
JavaScript青少年简明教程:DOM和CSS简介 DOM简介 DOM(Document Object Model)将文档表示为一个树形结构,其中每个节点都是一个对象,每个对象都有其自身的属性和方法。 通过对DOM的操作,开发者可以使用编…...
后端面试题日常练-day15 【Java基础】
题目 希望这些选择题能够帮助您进行后端面试的准备,答案在文末 Java中的自动装箱(Autoboxing)和拆箱(Unboxing)是指什么? a) 自动装箱是将基本数据类型转换为对应的包装类,拆箱是将包装类转换为…...
椭圆曲线加法运算
1. 定义 椭圆曲线 (Elliptic Curve) 不是函数,而是一条平面曲线,其方程是定义如下: y 2 x 3 a x b y^2x^3axb y2x3axb 其中,判别式 Δ − 16 ( 4 a 3 27 b 2 ) ≠ 0 \Delta -16(4a^327b^2)\neq 0 Δ−16(4a327b2)0。判别…...
采用计数排序的思想,解决只出现一次的数字
目录 问题 思路 代码 注意点: 问题 给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常…...
网络云相册实现--nodejs后端+vue3前端
目录 主页面 功能简介 系统简介 api 数据库表结构 代码目录 运行命令 主要代码 server apis.js encry.js mysql.js upload.js client3 index.js 完整代码 主页面 功能简介 多用户系统,用户可以在系统中注册、登录及管理自己的账号、相册及照片。 每…...
程序设计基础(c语言)_补充_1
1、编程应用双层循环输出九九乘法表 #include <stdio.h> #include <stdlib.h> int main() {int i,j;for(i1;i<9;i){for(j1;j<i;j)if(ji)printf("%d*%d%d",j,i,j*i);elseprintf("%d*%d%-2d ",j,i,j*i);printf("\n");}return 0…...
【Unity】 HTFramework框架(五十四)【进阶篇】Deployment 轻量级资源部署管线
更新日期:2024年7月31日。 Github源码:[点我获取源码] 索引 Deployment 轻量级资源部署管线使用 Deployment一、创建部署配置二、编辑部署配置三、正式开始资源部署步骤一:资源打包步骤二:资源版本构建步骤三:资源版本…...
达梦数据库的系统视图v$cachesql
达梦数据库(DM Database)的系统视图V$CACHESQL用于显示有关数据库中缓存的SQL语句的信息。该视图提供了有关每个SQL语句的执行统计信息,帮助用户优化SQL性能和调试问题。 V$CACHESQL视图的主要字段 以下是V$CACHESQL视图中的一些关键字段&a…...
java基础 之 equals和==的区别
文章目录 浅谈“”特点比较基本类型比较引用类型 浅谈“equals”背景和使用重写equals自定义类为什么需要重写equals方法 总结附录代码及文章推荐 前言: 1、8大基本数据类型,它们的值直接代表了某种数据,不是对象的实例,不能使用n…...
学习STM32(1)--Keil软件安装与基本操作和Keil 软件高级应用
目录 1 引 言 2 实验目的 3 实验内容 3.1 认识单片机和STM32 3.2 安装、认识软件Keil和硬件STM32F103开发板 3.3 学习调试工程 3.4 Keil工程软件的配置 4 深入解析 思考一 1.以项目“12-GPIO输出—使用固件库点亮LED”为例子,认识本地工程文件夹…...
独立开发者系列(37)——理解async和await
1.理解同步与异步 同步就是执行某个任务A-B-C-D,就是严格按照顺序执行,可以理解为正常的代码逻辑,如果运行的代码都不是很消耗时间的情况系啊,同步可以减少编程的复杂度。但是对于请求远程服务结果的这种服务,如果同步…...
在C#中为图片添加数字水印的几种办法
最近在写个人项目时,有遇到需要将图片加上水印防止被盗取的需求。这里找了几种实现方式,可供有需要的朋友参考。 本身我不是搞算法这块的,所以这里只是找了一些实现,也没有继续深究下去。 以前在学校的时候从书上了解过可以将一…...
Vue的学习(二)
目录 一、class及style的绑定 1.v-bind:class绑定类名 绑定class为对象 编辑2. v-bind:class绑定类名 绑定class为对象 3.v-bind:class绑定类名 绑定class为数组 1) v-bind:class绑定类名 绑定class为数组 方法一: 2) v-bind:class绑定类名 绑定class为数组…...
PointNet和PointNet++论文解读
目录 一、导言 二、PointNet介绍 三、PointNet网络结构 1、损失函数 2、正则化 四、PointNet 1、分层次的点集抽象层 一、导言 PointNet来自CVPR2017,是最早直接处理点云数据用于计算机视觉的模型,并运用于分割、检测、场景理解任务,P…...
Pytest测试报告生成专题
在 pytest 中,你可以使用多个选项生成不同格式的测试报告。以下是几种常用的生成测试报告的方法: 1. 生成简单的测试结果文件 你可以使用 pytest 的 --junitxml 选项生成一个 XML 格式的测试报告,这个报告可以与 CI/CD 工具集成。 pytest --junitxml=report.xml这将在当前…...
【在Python中读取Excel文件内容】
在Python中读取Excel文件内容,常用的库有xlrd(主要用于读取.xls文件,但不支持.xlsx的较新版本),以及openpyxl(专门用于读取和写入.xlsx文件)和pandas(提供了一个更高级别的接口来处理…...
尚品汇-首页三级分类实现-nginx静态代理生成的静态页面(二十六)
目录: (1)问题详解 (2)首页商品分类实现 (3)修改web-all模块 (4)页面渲染 (1)问题详解 (2)首页商品分类实现 前面做了…...
HTML 段落
HTML 段落 概述 HTML(超文本标记语言)是构建网页的标准语言,而段落是构成网页内容的基本单元。在HTML中,段落是通过<p>标签来定义的。本文将详细介绍HTML段落的相关知识,包括段落的基本结构、样式设置、以及在…...
Http自定义Header导致的跨域问题
最近写一个小项目,前后端分离,在调试过程中访问远程接口,出现了CORS问题,接口使用的laravel框架,于是添加了解决跨域的中间件,但是前端显示仍存在跨域问题,以为自己写的有问题,检查了…...
20240805 每日AI必读资讯
世界首例!AI机器人做牙科手术,8倍速诊疗比人类医生更精准 - Perceptive:让人工智能控制的自主机器人,首次对人类患者进行了全过程的牙科手术,速度大约是人类牙医的8倍。 - 两项新技术 1、OCT 3D成像系统:…...
COMSOL金属氢化物-放氢过程
在此记录下放氢过程的软件设置思路 1、采用的是"达西定律""层流" 物理场,其中"层流"物理场选择了”弱可压缩流动“,这里主要是选择”可压缩流动“的话,算出来的瞬时流量值跟实测差距太大了。 2、设置"达西…...
Unity2D在处理精灵表过程中出现不清晰的解决方法
问题阐述 在我们拿到一张精灵表的时候,我们通常要进行切割。但这样往往导致切割的效果不是很好,这里举一个简单的例子。 这是举例子用到的精灵表 我们先对他进行切割处理。 将single改为Multiope 进入精灵编辑器后,我们选择切割方式 此时我…...
C语言第13篇
1.下面程序是计算n个数的平均值,请填空.______ #include<stdio.h> void main( ) { int i,n; float x,avg0.0; scanf("%d",&n); for(i0;i<n;i) { scanf("%f",&x); avgavg______; } avg________; printf("avg%f\n",avg); } A) …...
Meta Reality Labs:巨额亏损背后的挑战与展望
一、财务概况 自2020年以来,Meta的Reality Labs部门累计亏损已超过450亿美元,其中2023年的亏损达到160亿美元,2024年第一季度亏损38亿美元,分析师预计第二季度亏损可能接近50亿美元。尽管投入巨大,Reality Labs的收入却呈现下降趋势,与不断增加的支出形成鲜明对比。 二…...
linux安装docker(实操教程)
一、安装前准备工作 1.查看服务器操作系统版本 2.查看服务器的操作系统内核版本 3.安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2如果不是root用户登陆的系统,需要手动输入sudo -i切换到root帐户 4.设置阿里云docker-ce镜像源 yum-c…...
隐写工具steghide linux编译安装
1、git clone https://github.com/StefanoDeVuono/steghide.git 2、autoreconf -i 3、./configure 4、make 编译完成后再src目录下又steghide执行下程序 报错:configure: error: cannot find required auxiliary files: compile时需要执行autoreconf 如果往j…...
山寨手机 老手机 山寨平板 提高速度 cpu超频的方法360超级root和setup
第一,挂机 ,按音量键 ,看机器的配置,注意,山寨机器的 安卓版本不可信啊,安卓4.4.2会标注安卓10 第二 ,下载360超级root, http://2012rs.mysxl.cn/ https://xdaforums.com/t/setcpu-for-root-us…...
【两整数之和】python刷题记录
R3-位运算专题。 仲夏之约,留尺一寸,小记一事,算是了结。 无进位和 与 异或运算 规律相同,进位 和 与运算 规律相同(并需左移一位) 牛啊牛啊 class Solution:def getSum(self, a: int, b: int) -> int…...
常见cms漏洞之dedecms
DedeCMS是织梦团队开发PHP 网站管理系统,它以简单、易用、高效为特色,组建出各种各样各具特色的网站,如地方门户、行业门户、政府及企事业站点等。 下载地址请网上自行寻找 搭建方式选择php study 首先搭建环境 #前台http://localhost/dedecm…...
基于微信小程序的微课堂笔记的设计与实现(源码+论文+部署讲解等)
博主介绍:✌全网粉丝10W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术栈介绍:我是程序员阿龙ÿ…...
如何构建AI产品:OpenAI与前Shopify产品负责人Miqdad Jaffer的经验分享
一、引言 构建AI产品是一项复杂且充满挑战的任务,尤其是当涉及到面向消费者的解决方案时。在最近的一期播客节目中,OpenAI 和前Shopify产品负责人 Miqdad Jaffer 分享了他在构建AI产品的经验和策略。下面我们将探讨构建AI产品的最佳实践,以及…...
C++的结构体、联合体、枚举类型(一)
1.C++的结构体 2.C++的联合体 3.C++的枚举类型 1.C++的结构体 (1)C++中定义结构体变量,可以省略struct关键字 struct XX{…}; XX x;//定义结构体变量直接省略struct(2)C++结构体中可以直接定义函数,谓之成员函数(又叫方法)(3)在成员函数中可以直接访问该结构体的成员变…...
白骑士的PyCharm教学高级篇 3.5 团队协作与集成开发
系列目录 上一篇:白骑士的PyCharm教学高级篇 3.4 服务器部署与配置 在现代软件开发中,团队协作和集成开发环境(IDE)的使用至关重要。PyCharm不仅提供了强大的个人开发支持,还为团队协作和集成开发提供了丰富的功能和工…...
c++ 21 指针
*像一把钥匙 通过钥匙去找内存空间 间接修改内存空间的值 不停的给指针赋值 等于不停的更改指针的指向 指针也是一种数据类型 指针做函数参数怎么看都不可以 指针也是一个数据类型 是指它指向空间的数据类习惯 作业 野指针 向null空间地址copy数据 不断改变指针指向 …...
书籍将整数字符串转成整数值(5)0804
题目 给定一个字符串str,如果str符合日常书写的整数形式,并且属于32位整数的范围,返回str所代表的整数值,否则返回0。 举例 str“123” 返回 123 str“023” 因为023 不符合日常的书写习惯,所以返回0 str“A13” …...
计网:从输入URL到网页显示期间发生了什么
1、URL包含的信息 我们输入的url中包含着一些信息: http:表示的此次我们使用的什么协议/www.baidu.com:表示的是我们想要访问的服务器名称,也就是域名dir3/home.html:表示我们所要访问的资源 2、通过DNS解析URL获得I…...
pg数据库存储过程
一、存储过程 CREATE OR REPLACE PROCEDURE public.p_dm_stock_fx_hangye_d(IN dt_date character varying) LANGUAGE plpgsql AS $procedure$ begin delete from dm_stock_fx_hangye_d where stock_date dt_date; commit; insert into dm_stock_fx_hangye_d select t…...
Arduino PID库 (2) –微分导致的过冲
Arduino PID库 (2) – Derivative Kick 参考:手把手教你看懂并理解Arduino PID控制库——微分冲击 pid内容索引-CSDN博客 Arduino PID库 (1)– 简介 问题 此修改将稍微调整derivative term。目标是消除一种称为“…...
基于Tensorflow.js的花卉识别编程实践
使用TensorFlow.js进行编程有许多优点,特别适合开发机器学习和深度学习的应用。TensorFlow.js可以直接在浏览器中运行,无需服务器或特殊环境配置。这使得开发者可以轻松地创建和部署基于Web的机器学习应用。TensorFlow.js提供了许多预训练模型࿰…...
繁简之争:为什么手机芯片都是 ARM
RISC 和 CISC 指令集 之前的文章《揭秘 CPU 是如何执行计算机指令的》中说到,如果从软件的角度来讲,CPU 就是一个执行各种计算机指令(Instruction Code)的逻辑机器。 计算机指令集是计算机指令的集合,包括各种类型的…...
《机器人SLAM导航核心技术与实战》第1季:第8章_激光SLAM系统
视频讲解 【第1季】8.第8章_激光SLAM系统-视频讲解【第1季】8.1.第8章_激光SLAM系统_Gmapping算法-视频讲解【第1季】8.2.第8章_激光SLAM系统_Cartographer算法-视频讲解【第1季】8.3.第8章_激光SLAM系统_LOAM算法-视频讲解 第1季:第8章_激光SLAM系统 先 导 课第…...
Qt之Gui
组件依赖关系 应用 #mermaid-svg-GADicZtZJRVVUeiF {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GADicZtZJRVVUeiF .error-icon{fill:#552222;}#mermaid-svg-GADicZtZJRVVUeiF .error-text{fill:#552222;stroke:#…...
Redis的回收策略(淘汰策略)
volatile-lru :从已设置过期时间的数据集( server.db[i].expires )中挑选最近最少使用的数据淘汰 volatile-ttl : 从已设置过期时间的数据集( server.db[i].expires ) 中挑选将要过期的数据淘汰 volatile…...
基于Springboot的个人博客系统
文章目录 介绍访问地址一、功能展示1.前台首页归档相册留言关于我登陆注册 2.后台管理系统登陆页面首页文章管理相册管理写博客访客统计 介绍 基于Java(Springboot)可以用做毕业设计的个人博客系统,包括网站前台和后台管理系统两部分。网站前…...
J030_TCP通信
一、需求描述 使用TCP协议进行通信 1.1 一发一收 1.1.1 Client package com.itheima.tcp1;import java.io.DataOutputStream; import java.io.OutputStream; import java.net.Socket;public class Client {public static void main(String[] args) throws Exception {//1、…...
单片机复习题
第1章 思考题及习题 一、填空 1. 除了单片机这一名称之外,单片机还可称为 或 。 2.单片机与普通微型计算机的不同之处在于其将 、 、和 三部分,通过内部 连接在一起,集成于一块芯片上。 …...
Java | Leetcode Java题解之第322题零钱兑换
题目: 题解: public class Solution {public int coinChange(int[] coins, int amount) {int max amount 1;int[] dp new int[amount 1];Arrays.fill(dp, max);dp[0] 0;for (int i 1; i < amount; i) {for (int j 0; j < coins.length; j)…...
【MYSQL】MYSQL逻辑架构
mysql逻辑架构分为3层 mysql逻辑架构分为3层 1). 连接层:主要完成一些类似连接处理,授权认证及相关的安全方案。 2). 服务层:在 MySQL据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断,SQL接口&…...
SQL Server数据库的清洁工:垃圾回收机制解析
SQL Server数据库的清洁工:垃圾回收机制解析 在SQL Server的复杂而精密的数据库管理系统中,垃圾回收机制扮演着至关重要的角色。它负责清理不再需要的数据,释放空间供新数据使用。本文将深入探讨SQL Server中数据库垃圾回收机制的工作原理&a…...
使用MailKit在.NET Core中收发邮件的完整示例
在.NET Core中处理邮件收发操作时,MailKit是一个非常强大的库。它支持SMTP、POP3、IMAP等多种协议,可以轻松实现发送、接收、以及管理邮件的功能。下面我们将通过一个详细的示例,展示如何在.NET Core项目中使用MailKit来收发邮件,…...