当前位置: 首页 > news >正文

HTML,CSS,JavaScript三件套

前言

1.HTML

就是用来写网页的
就是超文本标记语言
在这里插入图片描述

1.1快速入门

在这里插入图片描述

标签是根标签,就是开始的地方 head就是头,加载一些资源信息,和展示title标题的地方,比如html快速入门那几个字就是title标题标签 body是身体,就是正文内容,就是乾坤未定那段内容 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/677fb4972c1c4f838ca590da000809a8.png) 桌面新建文件

在这里插入图片描述
然后随便选择一个文本编辑器来编辑

在这里插入图片描述
这样就成功了
在这里插入图片描述
在这里插入图片描述
第二个改成红色的

<html><head><title>html快速入门</title></head><body><font color="red">乾坤未定你我皆是黑马~</font></body></html>

在这里插入图片描述
然后我们只需要刷新一下就可以了,不必重新打开文件了

在这里插入图片描述
说一下,第一html不区分大小写
一般用小写
第二就是,语法比较松散,可以不写结束标签,颜色可以不加引号

<html><head><title>html快速入门</title></head><body><font color=blue>乾坤未定你我皆是黑马~</body></html>

在这里插入图片描述
但是写的时候,还是要专业一点

文件以.htm或者html为扩展名

1.2 基础标签

在这里插入图片描述
在这里插入图片描述
选中右键检查,就可以查看html相关的代码了
可以在idea里面写代码的
直接就是java的模块就可以了,不用maven
在这里插入图片描述
在这里插入图片描述
建一个文件夹

在这里插入图片描述
在新建html文件
在这里插入图片描述

<!--<!DOCTYPE html>是html5的一个标识-->
<!DOCTYPE html>
<html lang="en">
<head>
<!-- <meta charset="UTF-8">是用来定义页面字符集的   --><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>我是标题 h1</h1>
<h2>我是标题 h2</h2>
<h3>我是标题 h3</h3>
<h4>我是标题 h4</h4>
<h5>我是标题 h5</h5>
<h6>我是标题 h6</h6>
</body>
</html>

在这里插入图片描述
这里直接点右上角的浏览器就可以了

在这里插入图片描述

<h1>我是标题 h1</h1>
<h2>我是标题 h2</h2>
<h3>我是标题 h3</h3>
<h4>我是标题 h4</h4>
<h5>我是标题 h5</h5>
<h6>我是标题 h6</h6>
<hr>

在这里插入图片描述
代码是自动保存的,所以是同步的,不用刷新

<h1>我是标题 h1</h1>
<h2>我是标题 h2</h2>
<h3>我是标题 h3</h3>
<h4>我是标题 h4</h4>
<h5>我是标题 h5</h5>
<h6>我是标题 h6</h6>
<hr><font>传智教育</font>

在这里插入图片描述
在这里插入图片描述
但是过时了
因为文本的样式用CSS来控制,所以过时了
在这里插入图片描述
回车
在这里插入图片描述
在这里插入图片描述
颜色的表示方式,第一英文red,pink
第二就是rgb(值1,值2,值3)三原色的方式,红绿蓝的方式
值的取值范围是0~255
rgb(255,0,0)全红
第三就是#值1值2值3
也是三原色
00~FF的范围
#ff0000
也是全红
在这里插入图片描述
在这里插入图片描述
这里可以看出没有换行

因为浏览器不会解析换行


10月16日至17日,全国公安厅局长座谈会在天津市召开,就进一步深化改革创新,提升公安机关新质战斗力,高水平推进公安工作现代化等工作作出重要部署。<br>通过聆听大会、分组讨论,参会代表认真学习领会会议精神,统一思想、凝聚共识。先进经验展示、实地考察观摩,大家从中得到新启发、新收获,互学互鉴、共同进步。

所以要手动加上br
在这里插入图片描述

<p>10月16日至17日,全国公安厅局长座谈会在天津市召开,就进一步深化改革创新,提升公安机关新质战斗力,高水平推进公安工作现代化等工作作出重要部署。</p>
<p>通过聆听大会、分组讨论,参会代表认真学习领会会议精神,统一思想、凝聚共识。先进经验展示、实地考察观摩,大家从中得到新启发、新收获,互学互鉴、共同进步。</p>

这样的话,就变成了两段

在这里插入图片描述

代表认真学习领会会<br>
<b>代表认真学习领会会</b>

在这里插入图片描述

代表认真学习领会会<br>
<b>代表认真学习领会会</b><br>
<i>代表认真学习领会会</i><br>
<u>代表认真学习领会会</u><br>

在这里插入图片描述

<center><b>代表认真学习领会会</b></center>

center就是居中,而且也过时了

在这里插入图片描述
在这里插入图片描述
特殊字符的打印要用转义字符

1.3 图片音频视频标签

在这里插入图片描述
src就是资源路径
直接把资源复制到html路径下就可以了
在这里插入图片描述
视频是mp4,音频是mp3

<img src="a.png">

在这里插入图片描述

<img src="a.png" width="200"height="400">

在这里插入图片描述
尺寸单位
1.默认的就是像素,px
2.百分比:就相当于占父元素的%20
父元素就是body
body的范围就是整个框体的范围

<img src="a.png" width="20%"height="400">

在这里插入图片描述
音频文件到时候就是这样的,写的是video
在这里插入图片描述

<videosrc="b.mp4"></video>
<videosrc="b.mp4" controls="controls"></video>

或者这样

<videosrc="b.mp4" controls></video>

在这里插入图片描述


<video src="b.mp4" controls width="500" height="300"></video>

在这里插入图片描述
下面讲一下资源路径,上面我们写的是相对路径
我们也可以写绝对路径,盘符或者网页
在这里插入图片描述
点击复制图片地址就可以了

<img src="https://inews.gtimg.com/om_bt/Os3eJ8u3SgB3Kd-zrRRhgfR5hUvdwcVPKUTNO6O7sZfUwAA/641" width="50%"height="400">

在这里插入图片描述
一般写相对路径,要找html文件和图片的相对位置关系,找到就可以写了
在这里插入图片描述

比如一个是xxx/html/02
一个是xxx/html/a.png
相对路径就可以这样
./a.png

./可以省略,默认在当前路径找

<img src="./a.png" width="50%"height="400">

在这里插入图片描述
一个是xxx/html/02
一个是xxx/html/img/a.png

这样写
./img/a.png

一个是xxx/html/02
一个是xxx/img/a.png

这样写
…/img/a.png

1.4 超链接标签

在这里插入图片描述
href就是资源路径

<a href="https://www.itcast.cn">点我有惊喜</a>

在这里插入图片描述
在这里插入图片描述
_self是默认值

<a href="https://www.itcast.cn" target="_blank">点我有惊喜</a>

在这里插入图片描述
跳转到外部资源用这个

1.5 列表标签

在这里插入图片描述

<OL><li>咖啡</li><li>奶茶</li><li>牛奶</li>
</OL><uL><li>咖啡</li><li>奶茶</li><li>牛奶</li>
</uL>

在这里插入图片描述

<OL type="A"><li>咖啡</li><li>奶茶</li><li>牛奶</li>
</OL>

type就是给序号设置属性
在这里插入图片描述

<uL type="circle"><li>咖啡</li><li>奶茶</li><li>牛奶</li>
</uL>

在这里插入图片描述
一般不建议修改
用CSS

1.6 表格标签

在这里插入图片描述

<table><tr><th>序号</th><th>品牌logo</th><th>品牌名称</th><th>企业名称</th></tr><tr></tr><tr></tr><tr></tr>
</table>

在这里插入图片描述

<table><tr><th>序号</th><th>品牌logo</th><th>品牌名称</th><th>企业名称</th></tr><tr><td>010</td><td><img src="../img/a.png" width="60" height="50"></td><td>三只松鼠</td><td>三只松鼠</td></tr><tr><td>009</td><td><img src="../img/b.png" width="60" height="50"></td><td>优衣库</td><td>优衣库</td></tr><tr><td>008</td><td><img src="../img/c.png" width="60" height="50"></td><td>小米</td><td>小米科技有限公司</td></tr></table>

在这里插入图片描述
没有线条

<table border="1"><tr><th>序号</th><th>品牌logo</th><th>品牌名称</th><th>企业名称</th></tr><tr><td>010</td><td><img src="../img/a.png" width="60" height="50"></td><td>三只松鼠</td><td>三只松鼠</td></tr><tr><td>009</td><td><img src="../img/b.png" width="60" height="50"></td><td>优衣库</td><td>优衣库</td></tr><tr><td>008</td><td><img src="../img/c.png" width="60" height="50"></td><td>小米</td><td>小米科技有限公司</td></tr></table>

在这里插入图片描述
间距为1像素

两条线合二为一

<table border="1" cellspacing="0"><tr><th>序号</th><th>品牌logo</th><th>品牌名称</th><th>企业名称</th></tr><tr><td>010</td><td><img src="../img/a.png" width="60" height="50"></td><td>三只松鼠</td><td>三只松鼠</td></tr><tr><td>009</td><td><img src="../img/b.png" width="60" height="50"></td><td>优衣库</td><td>优衣库</td></tr><tr><td>008</td><td><img src="../img/c.png" width="60" height="50"></td><td>小米</td><td>小米科技有限公司</td></tr></table>

cellpadding表示间距为0
在这里插入图片描述

<table border="1" cellspacing="0" width="500">

在这里插入图片描述
变宽


<table border="1" cellspacing="0" width="500"><tr align="center"><th>序号</th><th>品牌logo</th><th>品牌名称</th><th>企业名称</th></tr><tr align="center"><td>010</td><td><img src="../img/a.png" width="60" height="50"></td><td>三只松鼠</td><td>三只松鼠</td></tr><tr align="center"><td>009</td><td><img src="../img/b.png" width="60" height="50"></td><td>优衣库</td><td>优衣库</td></tr><tr align="center"><td>008</td><td><img src="../img/c.png" width="60" height="50"></td><td>小米</td><td>小米科技有限公司</td></tr></table>

在这里插入图片描述

就是居中
<br>
<hr>
<br>
<table border="1" cellspacing="0" width="500">

在这里插入图片描述

合并单元格分为横向的合并和纵向的合并
在这里插入图片描述
比如这样
那怎么算行呢,就是右下角那个合并的,算第三行还是第四行呢,算第三行的,所以第四行只有三个单元格

  <tr align="center">
<!--    第一个占两列--><th colspan="2">品牌logo</th><th>品牌名称</th><th>企业名称</th></tr>

在这里插入图片描述

<table border="1" cellspacing="0" width="500"><tr align="center">
<!--    第一个占两列--><th colspan="2">品牌logo</th><th>品牌名称</th><th>企业名称</th></tr><tr align="center"><td>010</td><td><img src="../img/a.png" width="60" height="50"></td><td>三只松鼠</td><td>三只松鼠</td></tr><tr align="center"><td rowspan="2">009</td><td><img src="../img/b.png" width="60" height="50"></td><td>优衣库</td><td>优衣库</td></tr><tr align="center"><td>008</td><td><img src="../img/c.png" width="60" height="50"></td><td>小米</td></tr></table>

删除第四行一个单元格,第三行第一个单元格占两行
在这里插入图片描述

1.7布局标签

在这里插入图片描述
结合CSS来用

<div>我是div</div>
<div>我是div</div>
<span>我是span</span>
<span>我是span</span>

在这里插入图片描述
div换行
一个标签占一行
span不换行,不会占满一行

1.8 表单标签

比如登录的窗口就是表单,采集用户输入的信息,一点按钮就把这些信息发送到服务端
在这里插入图片描述

<input type="text">

定义一个文本输入框

  <input type="submit">

定义一个按钮

<form><input type="text"><input type="submit"></form>

在这里插入图片描述
我们这里点提交没有用的,因为没有指定form的anction属性

anction属性就是指定表单数据提交的URL,往哪个地方提交数据,就指定action为哪个URL

<form action="#">

因为我们没有服务端,所以我们就用#代替,表示把表单数据提交到html页面来,后面我们就可以写服务器的资源路径

表单项数据要想被提交,则必须指定其name属性

<input type="text" name="username">

username随便写的

<body>
<form action="#"><input type="text" name="username"><input type="submit"></form>

在这里插入图片描述
点提交
在这里插入图片描述
这样上面就增加了一个键值对,username=hehe#
username是name的属性值,键
hehe是文本输入框里面的值,这就是键值对
在这里插入图片描述

method是指定表单提交的方式的1.get是默认值2.post
get请求的参数会拼接在URL后边,http://localhost:63342/java2/html-demo/html/就是URL,就是地址,长度限制为4KB,所以请求参数有限制
post的话,请求参数会在http请求协议的请求体中,请求参数无限制

<body>
<form action="#" method="post"><input type="text" name="username"><input type="submit"></form>

重新打开页面
在这里插入图片描述
URL后边就没有键值对了

在这里插入图片描述
点击开发者工具

在这里插入图片描述
点network
在输入一次aaaa
在这里插入图片描述
这里多了一次请求
在这里插入图片描述
点击就可以查看我们的aaaa

1.9 表单项标签

在这里插入图片描述
在这里插入图片描述
比如id,用户不用书写,随着表单一起提交,这个就是hidden

<form action="#" method="post">用户名:<input type="text" name="username"><br>密码:<input type="password" name="password"><br><input type="submit" value="免费注册"><br>
<!-- value就是取名字 --></form>

在这里插入图片描述
提交就会提交到URL地址里
按着F12也可以打开开发者工具

在这里插入图片描述
现在我们希望我们点击用户名这三个字就能直接输入,而不是点击文本框
用lable标签就可以

  <label for="username">用户名:</label><input type="text" name="username" id="username"><br>

我们先把用户名:三个字放在lable里面,然后让input和lable有关联,就给input取个id,这个id是唯一标识,for就是去关联这个id
这样我们点击用户名三个字就能选中框框了

<form action="#" method="post"><label for="username">用户名:</label><input type="text" name="username" id="username"><br><label for="password">密码:</label>密码:<input type="password" name="password" id="password"><br><input type="submit" value="免费注册"><br>
<!-- value就是取名字 --></form>
  性别:<input type="radio">

在这里插入图片描述

  性别:<input type="radio" ><input type="radio" >

在这里插入图片描述
在这里插入图片描述
但是这里男女可以同时选中,所以还不行

,如何让两个单选框达到互斥的效果呢

让name的属性值一样就可以了

  性别:<input type="radio" name="gender"><input type="radio" name="gender">

因为gender只能给一个赋值,所以是互斥的

在这里插入图片描述
但是我们这里gender却是on的值,为什么呢,选男是on,选女还是on,不选就没有gender
因为男没有关联到

所以还要加个value

  性别:<input type="radio" name="gender" value="1"><input type="radio" name="gender" value="2">

这样加个value,提交的就是1,2了,提交的值就是value
在这里插入图片描述
在把男和女包括起来,点男这个字就选中男

  性别:<input type="radio" name="gender" value="1" id="male"><label for="male"></label><input type="radio" name="gender" value="2" id="female"><label for="female"></label>

这样就可以了

下面讲一下复选框

  爱好:<input type="checkbox" name="hobby" value="1">旅游<input type="checkbox" name="hobby" value="2">电影<input type="checkbox" name="hobby" value="3">游戏

hobby就相当于是一个数组了
在这里插入图片描述
在这里插入图片描述

  头像:<input type="file">

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
图片的数据就会被提交到服务端去

  <input type="hidden" name="id" value="123">

在这里插入图片描述
写了这个没什么反应,但你提交服务端就会有id

在这里插入图片描述

  <input type="submit" value="免费注册"><input type="reset" value="重置"><input type="button" value="一个按钮">

在这里插入图片描述
button没有任何效果,就是一个按钮,要结合javascipt
点重置的话,你写的就清空了

  城市:<select><option>北京</option><option>上海</option><option>广州</option></select>

在这里插入图片描述
这就是一个下拉列表

要想被提交,就要指定name属性

  城市:<select name="city"><option>北京</option><option>上海</option><option>广州</option></select>

在这里插入图片描述

    <option value="shanghai">上海</option>

如果这样写的话,就只会提交value的值了,没加value的话,就提交option里面的内容

在这里插入图片描述

  个人描述:<textarea></textarea>

在这里插入图片描述
可以写很多行

  个人描述:<textarea cols="20" rows="5"></textarea>

这个的意思就是可以写五行,每行20个字
在这里插入图片描述
而且还变大了

  个人描述:<textarea cols="20" rows="5" name="desc"></textarea>

在这里插入图片描述
在这里插入图片描述

2.CSS

在这里插入图片描述
style标签里面就是CSS的代码
这个的意思选中html里面的就是body里面的所有的div标签里面的文本内容颜色改为红色

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>div{color:red;}</style>
</head>
<body>
<div>hello css</div></body>
</html>

在这里插入图片描述
style标签是一种css与html结合的方式
css如何书写
div一部分:选择器
里面的键值对一部分:属性

2.1 CSS导入方式

在这里插入图片描述内联样式:在html标签里面定义style属性,通过style属性指定CSS代码

html与css耦合在一起,就不利于维护
内部样式:在html页面里面定义style标签
style标签内部,定css代码
外部样式:现在外部定义css文件,在里面写css代码,在html页面里面使用link标签来引入css的外部文件

<body><div style="">hello css</div></body>

在style属性里面写css代码:就是属性键值对

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><div style="color:red">hello css</div>
</body>
</html>

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style></style>
</head>
<body><div style="color:red">hello css</div><span>hello css</span>
</body>
</html>

span里面写文本内容
style来控制里面的文本内容,里面写css代码

span标签的话,我们要写个选择器,就是span,意思就是选择body里面所有的span标签

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>span{color:red;}</style>
</head>
<body><div style="color:red">hello css</div><span>hello css</span>
</body>
</html>

在这里插入图片描述
在这里插入图片描述
为了演示第二种方式,这里我们创建一个文件夹css1,里面放着demo.css
文件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>span{color:red;}</style>
</head>
<body><div style="color:red">hello css</div><span>hello css</span><p>heloo css</p>
</body>
</html>

加个p标签
在这里插入图片描述
要控制p标签,所以选择器就写p

p{color:red;}

我们在html里面使用link来引入

  <link href="">

href来引入css文件

  <link href="../css1/demo.css" rel="stylesheet">

stylesheet的意思就是,link以后会引入很多文件的,stylesheet就是说我这个文件就是css属性的,才能特定解析

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>span{color:red;}</style><link href="../css1/demo.css" rel="stylesheet">
</head>
<body><div style="color:red">hello css</div><span>hello css</span><p>heloo css</p>
</body>
</html>

在这里插入图片描述

2.2 CSS选择器

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>div{color:red;}</style></head>
<body><div>div1</div>
<div>div2</div>
<div>div3</div><span>span</span>
</body>
</html>

在这里插入图片描述
这个就是元素选择器

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>div{color:red;}#name{color:blue;}</style></head>
<body><div id="name">div1</div>
<div>div2</div>
<div>div3</div><span>span</span>
</body>
</html>

在这里插入图片描述
这个就是id选择器

这个的选择器是以name为准的,name优先

id选择器唯一,意思是id是唯一的
但是类选择器不是唯一的

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>div{color:red;}#name{color:blue;}.cls{color:pink;}</style></head>
<body><div id="name">div1</div>
<div>div2</div>
<div class="cls">div3</div><span class="cls">span</span>
</body>
</html>

在这里插入图片描述

2.3 CSS属性

在这里插入图片描述
点击HTML/CSS,选择CSS3,再点击参考书就可以找到css属性了

在这里插入图片描述

3. JavaScript

在这里插入图片描述

3.1 引入方式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script>alert("hello js")</script>
</head>
<body></body>
</html>

alert(“hello js”)弹出一个警告框
在这里插入图片描述
确定就没了

  <script>alert("hello js")</script>

可以随便放,数量没限制

<script>alert("hello js1")
</script>
<script>alert("hello js2")
</script>
<script>alert("hello js3")
</script>

这样就要点三个确定

一般放在body里面的偏后面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title></head>
<body><script>alert("hello js1")
</script>
<script>alert("hello js2")
</script>
<script>alert("hello js3")
</script>
</body>
</html>
<script src="../js/demo.js"></script>

在这里插入图片描述

在这里插入图片描述
因为标签里面没有内容,所以可以自闭和
但是不能,因为这样就不能生效了

3.2 基础语法

在这里插入图片描述
在这里插入图片描述
结尾分号可以不写
在这里插入图片描述
window.可以省略

<script>window.alert("hello js");document.write("hello js2");//写入html页面
</script>

在这里插入图片描述
在这里插入图片描述

  window.alert("hello js");document.write("hello js2");//写入html页面console.log("hello js3");//写入浏览器控制台

浏览器控制台在开发者工具
f12
在这里插入图片描述
在这里插入图片描述

<script>var test=20;alert(test);
</script>

在这里插入图片描述

<script>var test=20;test="张三";alert(test);
</script>

在这里插入图片描述
var定义的变量是全局的

  {var age =30;}alert(age);

在这里插入图片描述
变量可以重复定义

  {var age =30;var age =20;}alert(age);

在这里插入图片描述
let关键字

  {let age =30;
<!--  var age =20;-->}alert(age);

在这里插入图片描述
报错会在控制台里面提示

在这里插入图片描述
点链接就会有对应提示
在这里插入图片描述
let的作用域就在大括号,而且不能重复定义

const是用来定义常量的

在这里插入图片描述
在这里插入图片描述

<script>var age=20;var price=99.8;alert(typeof age);alert(typeof price);
</script>

在这里插入图片描述

<script>var age='q';var price='hahah';//单引号与双引号都是一样的alert(typeof age);alert(typeof price);
</script>

在这里插入图片描述

  var age=true;var price=false;alert(typeof age);alert(typeof price);

在这里插入图片描述

<script>var age=null;var price=false;alert(typeof age);alert(typeof price);
</script>

在这里插入图片描述
null弹出一个object,所以引用类型和null弹出都是object

<script>var age;var price=false;alert(typeof age);alert(typeof price);
</script>

在这里插入图片描述
在这里插入图片描述

  ///  == 与 ===全等于var age1=20;var age2="20";alert(age1==age2);

在这里插入图片描述
这些大于等于,等于等于,比较的时候都会进行类型转换,所以相等
先判断类型一不一样,不一样的话,就类型转换

全等于就不会类型转换,类型不一样直接false

<script>///  == 与 ===全等于var age1=20;var age2="20";alert(age1===age2);
</script>

在这里插入图片描述
类型转换:,其他类型转换为number,
string:按照字符串的字面值转换为数字
var str=‘20’
字面值就是20
var str=‘abc’
转不了数字
不会报错,但是会转成一个特殊的数字NaN
这就是一个不是数字的数字

  var str=+"abc";

这里我们在前面加上一个+,因为+后面要接上数字,所以会自动强转

  var str=+"abc";alert(str);

在这里插入图片描述

  var str=+"20";alert(str+1);

在这里插入图片描述
如果是字符串就是201
可以用parseInt,把字符串转换成数字

  var str="20";alert(parseInt(str)+1);

在这里插入图片描述
第二就是boolean转成数字,true为1,false为0

  var flag=+true;alert(flag);

在这里插入图片描述
其他类型转换为boolean
number:0和NaN为false,其余为false

  var flag=0;if(flag){alert("转为true");}else{alert("转为false");}

条件里面需要boolean,所以会自动转换
在这里插入图片描述
字符串:空字符串转false,就是一个引号,有内容为true

  var flag="";if(flag){alert("转为true");}else{alert("转为false");}

在这里插入图片描述
undefined,null为fasle

  var flag=null;if(flag){alert("转为true");}else{alert("转为false");}

在这里插入图片描述

  var flag=undefined;if(flag){alert("转为true");}else{alert("转为false");}

在这里插入图片描述
作用就是原来要这样判断

  var str="";if(str!=null&&str.length>0){alert("转为true");}else{alert("转为false");}

现在只需要

  var str="";if(str){alert("转为true");}else{alert("转为false");}

在这里插入图片描述
在这里插入图片描述

    var count = 3;if(count==3){alert(count);}

在这里插入图片描述
然后switch,case也是一样的

    switch(count){case 3:alert("星期三");break;}

在这里插入图片描述

    for(let i=0;i<=100;i++){}

反正这些控制语句与原来的Java没什么区别
在这里插入图片描述

    function add(a,b){return a+b;}var result =add(1,2);alert(result);

在这里插入图片描述
在这里插入图片描述

    var add=function(a,b){return a+b;}var result =add(1,2);alert(result);

在这里插入图片描述

    var add=function(a,b){return a+b;}var result =add(1,2,3);alert(result);

在这里插入图片描述
弹出来还是三,因为参数对应传,3没有传

    var add=function(a,b){return a+b;}var result =add(1);alert(result);

在这里插入图片描述
因为b没有值,所以b就是NaN,所以和也是NaN

3.3 常用对象

在这里插入图片描述
在这里插入图片描述

    var arr=new Array(1,2,3);alert(arr);

在这里插入图片描述

    var arr=[1,2,3];alert(arr);

在这里插入图片描述

    //访问arr[1]=111;alert(arr[1])

在这里插入图片描述
这里的数组相当于Java里面的集合,可以变长

    var arr2=[1,2,3];arr2[10]=100;alert(arr2[10]);

在这里插入图片描述

    var arr2=[1,2,3];arr2[10]=100;alert(arr2[10]);alert(arr2[9]);

在这里插入图片描述
没赋值就是这样,打印出来就是空字符串

    arr2[5]="hello";alert(arr2[5]);

而且类型可变
在这里插入图片描述
在这里插入图片描述

    //lenth就是数组元素个数var arr4=[1,2,3];for(let i=0;i<arr4.length;i++){alert(arr4[i]);}
    //push就是把元素添加到数组里面去//splice:删除方法var arr5=[1,2,3];arr5.push(10);alert(arr5);

在这里插入图片描述

    //push就是把元素添加到数组里面去//splice:删除方法var arr5=[1,2,3];arr5.push(10);arr5.splice(0,1);alert(arr5);

在这里插入图片描述
splice的意思就是从0开始删,删一个元素
在这里插入图片描述

    var str1=new String("hello");var str2=("hello");var str3=('hello');alert(str1);alert(str2.length);
    //trim():去除字符串前后两端的空白字符var str4=('    hello    ');alert(1+str4+1)

在这里插入图片描述

    //trim():去除字符串前后两端的空白字符var str4=('    hello    ');alert(1+str4.trim(str4)+1)

在这里插入图片描述
因为输入密码的时候,可能后面多输了几个空格

在这里插入图片描述

    var person={name : " zhangan",age :23,eat:function(){alert("干饭");}};alert(person.name);alert(person.age);person.eat();

在这里插入图片描述

3.4 BOM

在这里插入图片描述
在这里插入图片描述
confirm就是你点删除的时候,弹出一个框让你是否要删除,防止用户误操作

后面两个方法是定时器
比如广告过一会而儿就换一张图片,这个就是定时器的作用
第一个循环执行,第二个是只执行一次

    //window.可以省略confirm("确认删除?");

在这里插入图片描述
确认就删除,取消就什么都不干
因为要对应干不同的事,所以这个方法有返回值的

    //window.可以省略var flag=confirm("确认删除?");alert(flag);

在这里插入图片描述
点确定就返回true,取消返回false

    if(flag){//删除}
    //定时器//setTimeout(function,毫秒值):在一定的时间间隔后去执行一个function,只执行一次//setInterval(function,毫秒值):在一定的时间间隔后去执行一个function,循环执行setTimeout(function(){alert("hehe");},3000)

三秒后弹hehe

在这里插入图片描述

        setInterval(function(){alert("hehe");},1000)

过一秒就弹一次

在这里插入图片描述
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><input type="button" onclick="on()" value="开灯"><img src="../img/off.png" id="myImage" border="0" style="..."><input type="button" onclick="off()" value="关灯"><script>function on(){document.getElementById('myImage').src='../img/on.png';}function off(){document.getElementById('myImage').src='../img/off.png';}//定时器//setInterval(function (){},1000)
</script></body>
</html>

这个的效果就是你点开灯就开灯
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><input type="button" onclick="on()" value="开灯"><img src="../img/off.png" id="myImage" border="0" style="..."><input type="button" onclick="off()" value="关灯"><script>function on(){document.getElementById('myImage').src='../img/on.png';}function off(){document.getElementById('myImage').src='../img/off.png';}var x=0;//定时器setInterval(function (){if(x%2==0){on();}else{off();}x++;},1000)
</script></body>
</html>

这样就可以一秒闪一次了
在这里插入图片描述
如果是三个方法的话的循环调用,就%3

在这里插入图片描述
在这里插入图片描述
就是这里的前后箭头

在这里插入图片描述
获取或者设置URL

<script>alert("aaaa");location.href="https://www.baidu.com";
</script>

执行确定就会直接跳转到百度
在这里插入图片描述

在这里插入图片描述

  document.write("三秒跳转到百度...");setTimeout(function(){location.href="https://www.baidu.com";},3000);

在这里插入图片描述
在这里插入图片描述

3.5 DOM

在这里插入图片描述
在这里插入图片描述
比如你点击按钮,里面的内容就随着改变
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
因为id唯一,标签不唯一
不唯一就返回数组

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<img   id="Light"  src="../img/a.png" ><br><div class="cls">处置</div><br>
<div class="cls">aaa</div><br><input type="checkbox" name="hobby">电影
<input type="checkbox" name="hobby">旅游
<input type="checkbox" name="hobby">游戏
<br><script></script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<img   id="light"  src="../img/a.png" ><br><div class="cls">处置</div><br>
<div class="cls">aaa</div><br><input type="checkbox" name="hobby">电影
<input type="checkbox" name="hobby">旅游
<input type="checkbox" name="hobby">游戏
<br><script>var img =document.getElementById("light");//这个img就是<img   id="Light"  src="../img/a.png" >了alert(img);
</script></body>
</html>

在这里插入图片描述
这里就显示了一个object对象,而且类型都出来了

    //根据标签名称获取var divs=document.getElementsByTagName("div");alert(divs.length); 

在这里插入图片描述

  for(let i=0;i<divs.length;i++){alert(divs[i]);}

在这里插入图片描述

      //根据name获取var hobbys=document.getElementsByName("hobby");alert(hobbys.length);for(let i=0;i<hobbys.length;i++){alert(hobbys[i]);}

在这里插入图片描述
在这里插入图片描述

        //根据class属性获取var clss=document.getElementsByClassName("cls");alert(clss.length);for(let i=0;i<clss.length;i++){alert(clss[i]);}

在这里插入图片描述
在这里插入图片描述
根据文档查看来使用对象的方法

总共有三种标签,img,input,div
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
看这个,我们利用src方法更换图片

  var img =document.getElementById("light");img.src="../img/on.png";

在这里插入图片描述

  var divs=document.getElementsByTagName("div");//期望把文字黑色换成红色

然后就是查文档

在这里插入图片描述
但这个里面没有方法
在这里插入图片描述
但他可以用Element对象的方法
因为继承 嘛
在这里插入图片描述
在这里插入图片描述

  var divs=document.getElementsByTagName("div");//期望把文字黑色换成红色//style设置css样式//innerHTML设置元素内容for(let i=0;i<divs.length;i++){divs[i].style.color='red';}

在这里插入图片描述

  var divs=document.getElementsByTagName("div");//期望把文字黑色换成红色//style设置css样式//innerHTML 设置元素内容for(let i=0;i<divs.length;i++){
<!--      divs[i].style.color='red';-->divs[i].innerHTML='hehheeheheh';}

在这里插入图片描述
这两个属性是通用的属性
每个html页面都有

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
true就是选中

        //根据name获取var hobbys=document.getElementsByName("hobby");alert(hobbys.length);for(let i=0;i<hobbys.length;i++){//alert(hobbys[i]);hobbys[i].checked=true;//就代表选中的状态}

在这里插入图片描述
这就默认选中了

3.6 事件监听

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
button是一个按钮,onclick是一个事件属性,设置一个方法,点击这个按钮,就调用这个方法,推荐使用第二种方式

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><input type="button" value="点我" onclick="on()"><br>
<input type="button" value="再点我"><br><script>function on(){alert("我被点亮");}
</script>
</body>
</html>

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><input type="button" value="点我" onclick="on()"><br>
<input type="button" value="再点我" id="btn"><br><script>function on(){alert("我被点亮");}document.getElementById("btn").onclick=function(){alert("我被点了")}
</script>
</body>
</html>

在这里插入图片描述
常见事件
在这里插入图片描述
在这里插入图片描述
移到文本输入框点击就有光标,移到外面就没有光标了,而且里面的内容会变成大写
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
就是你点一下就会发生一些情况
在这里插入图片描述
就是你点击外面会发生一些事情
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

    <input type="text" name="username"/><input type="submit" name="提交"/>

在这里插入图片描述
username=输入内容

<form id="register" action="#"><input type="text" name="username"/><input type="submit" name="提交"/>
</form><script>document.getElementById("register").onsubmit=function(){return false;//表单就不会提交}//给表单绑定一个onsubmit事件
</script>

在这里插入图片描述
看嘛,点了提交URL还是不变的
return true就会提交
在这里插入图片描述

3.10 表单验证

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
有红就不能提交,无红提交就发往服务端

失去焦点onblur

在这里插入图片描述

<div class="form-div"><div class="reg-content"><h1>欢迎注册</h1><span>已有帐号?</span><a href="#">登录</a></div>
<!--  //提交方式是get,提交到当前页面#,三个input输入--><form id="reg-form" action="#" method="get"><table><tr><td>用户名</td><td class="inputs" ><input name="username" type="text" id="username"><br>
<!--          span包裹的就是错误提示信息--><span id="username_err" class="err_msg" style="display:none">用户名不太受欢迎</span></td></tr><tr><td>密码</td><td class="inputs" ><input name="password" type="text" id="password"><br><span id="password_err" class="err_msg" style="display:none">密码格式有误</span></td></tr><tr><td>手机号</td><td class="inputs" ><input name="tel" type="text" id="tel"><br><span id="tel_err" class="err_msg" style="display:none">手机号格式有误</span></td></tr></table></form>
</div>

在这里插入图片描述
我们这样输入没有提示信息
我们把display:none中的display的none信息去掉就有提示信息了,但是会一直存在的

          <span name="username_err" class="err_msg" style="display:">用户名不太受欢迎</span>

在这里插入图片描述
判断输入内容是否符合要求,如果不符合要求,修改css样式的display的属性值设置为空就可以了,提示信息就出来了

<script>//1.验证用户名是否符合规则//1.1获取用户名的输入框var usernameInput=document.getElementById("username");//1.2绑定onblur事件  失去焦点usernameInput.onblur=function(){//1.3获取用户名var username=usernameInput.value.trim();//排除空格//usernameInput.value;可以获取输入框的填写内容//判断用户名是否符合规则:长度6~12if(username.length>=6&&username.length<=12){//符合规则}else{//不符合规则    获取spandocument.getElementById("username_err").style.display='';}};</script>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
但是现在我们填对了,也不会取消那个东西了
所以还要修改

  //1.验证用户名是否符合规则//1.1获取用户名的输入框var usernameInput=document.getElementById("username");//1.2绑定onblur事件  失去焦点usernameInput.onblur=function(){//1.3获取用户名var username=usernameInput.value.trim();//排除空格//usernameInput.value;可以获取输入框的填写内容//判断用户名是否符合规则:长度6~12if(username.length>=6&&username.length<=12){//符合规则document.getElementById("username_err").style.display='none';}else{//不符合规则    获取spandocument.getElementById("username_err").style.display='';}};

这样就可以了

密码和用户名就没有什么区别了

在这里插入图片描述
ctrl+r全部选中,进行替换
在这里插入图片描述
再点全部替换
在这里插入图片描述

    //1.验证密码是否符合规则//1.1获取密码的输入框var passwordInput=document.getElementById("password");//1.2绑定onblur事件  失去焦点passwordInput.onblur=function(){//1.3获取密码var password=passwordInput.value.trim();//排除空格//passwordInput.value;可以获取输入框的填写内容//判断密码是否符合规则:长度6~12if(password.length>=6&&password.length<=12){//符合规则document.getElementById("password_err").style.display='none';}else{//不符合规则    获取spandocument.getElementById("password_err").style.display='';}};

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
再改一下length

      //1.验证手机号是否符合规则//1.1获取手机号的输入框var telInput=document.getElementById("tel");//1.2绑定onblur事件  失去焦点telInput.onblur=function(){//1.3获取手机号var tel=telInput.value.trim();//排除空格//telInput.value;可以获取输入框的填写内容//判断手机号是否符合规则:长度11if(tel.length==11){//符合规则document.getElementById("tel_err").style.display='none';}else{//不符合规则    获取spandocument.getElementById("tel_err").style.display='';}};

在这里插入图片描述
下面我们来完成第二个需求,就是不满足就无法提交

  //获取表单对象var regForm=document.getElementById("reg-form");//绑定一个onsubmitreForm.onsubmit=function(){//挨个判断每一个表单项是否符合要求,一个不符合都不提交//判断每个表单项的话,利用方法就可以了}

判断每个表单项的话,利用方法就可以了,所以方法得有返回值才行
,而且还要额外取个名

  //1.验证用户名是否符合规则//1.1获取用户名的输入框var usernameInput=document.getElementById("username");//1.2绑定onblur事件  失去焦点usernameInput.onblur=checkUsername;function checkUsername(){//1.3获取用户名var username=usernameInput.value.trim();//排除空格//usernameInput.value;可以获取输入框的填写内容//判断用户名是否符合规则:长度6~12var flag=username.length>=6&&username.length<=12if(flag){//符合规则document.getElementById("username_err").style.display='none';}else{//不符合规则    获取spandocument.getElementById("username_err").style.display='';}return flag;};
  //获取表单对象var regForm=document.getElementById("reg-form");//绑定一个onsubmitregForm.onsubmit=function(){//挨个判断每一个表单项是否符合要求,一个不符合都不提交//判断每个表单项的话,利用方法就可以了var flag=checkUsername() && checkPassword()  && checkTel();return flag;}

true才会提交

    <div class="buttons"><input value="注 册"  type="submit" id="reg_btn" ></div>

这个是我们的提交按钮

在这里插入图片描述
这样就无法提交了
在这里插入图片描述
在这里插入图片描述

3.11 正则表达式

在这里插入图片描述

<script>//规则:单词字符,6~12
var reg=/^\w{6,12}$/;
var str="abc";
var flag=reg.test(str);
alert(flag);
</script>

在这里插入图片描述
上一个表单验证就可以这样改了

      var reg=/^\w{6,12}$/;var flag=reg.test(username);
      var reg=/^\w{6,12}$/;var flag=reg.test(password);
      //判断手机号是否符合规则:长度11,数字组成,1开头var reg=/^[1]\d{10}$/;var flag=reg.test(tel);

全部代码如下

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title></head>
<body><div class="form-div"><div class="reg-content"><h1>欢迎注册</h1><span>已有帐号?</span><a href="#">登录</a></div>
<!--  //提交方式是get,提交到当前页面#,三个input输入--><form id="reg-form" action="#" method="get"><table><tr><td>用户名</td><td class="inputs" ><input name="username" type="text" id="username"><br>
<!--          span包裹的就是错误提示信息--><span id="username_err" class="err_msg" style="display:none">用户名不太受欢迎</span></td></tr><tr><td>密码</td><td class="inputs" ><input name="password" type="text" id="password"><br><span id="password_err" class="err_msg" style="display:none">密码格式有误</span></td></tr><tr><td>手机号</td><td class="inputs" ><input name="tel" type="text" id="tel"><br><span id="tel_err" class="err_msg" style="display:none">手机号格式有误</span></td></tr></table><div class="buttons"><input value="注 册"  type="submit" id="reg_btn" ></div></form>
</div><script>//1.验证用户名是否符合规则//1.1获取用户名的输入框var usernameInput=document.getElementById("username");//1.2绑定onblur事件  失去焦点usernameInput.onblur=checkUsername;function checkUsername(){//1.3获取用户名var username=usernameInput.value.trim();//排除空格//usernameInput.value;可以获取输入框的填写内容//判断用户名是否符合规则:长度6~12,单词字符组成var reg=/^\w{6,12}$/;var flag=reg.test(username);if(flag){//符合规则document.getElementById("username_err").style.display='none';}else{//不符合规则    获取spandocument.getElementById("username_err").style.display='';}return flag;};//1.验证密码是否符合规则//1.1获取密码的输入框var passwordInput=document.getElementById("password");//1.2绑定onblur事件  失去焦点passwordInput.onblur=checkPassword;function checkPassword(){//1.3获取密码var password=passwordInput.value.trim();//排除空格//passwordInput.value;可以获取输入框的填写内容//判断密码是否符合规则:长度6~12var reg=/^\w{6,12}$/;var flag=reg.test(password);if(flag){//符合规则document.getElementById("password_err").style.display='none';}else{//不符合规则    获取spandocument.getElementById("password_err").style.display='';}return flag;};//1.验证手机号是否符合规则//1.1获取手机号的输入框var telInput=document.getElementById("tel");//1.2绑定onblur事件  失去焦点telInput.onblur=checkTel;function checkTel(){//1.3获取手机号var tel=telInput.value.trim();//排除空格//telInput.value;可以获取输入框的填写内容//判断手机号是否符合规则:长度11,数字组成,1开头var reg=/^[1]\d{10}$/;var flag=reg.test(tel);if(flag){//符合规则document.getElementById("tel_err").style.display='none';}else{//不符合规则    获取spandocument.getElementById("tel_err").style.display='';}return flag;};//获取表单对象var regForm=document.getElementById("reg-form");//绑定一个onsubmitregForm.onsubmit=function(){//挨个判断每一个表单项是否符合要求,一个不符合都不提交//判断每个表单项的话,利用方法就可以了var flag=checkUsername() && checkPassword()  && checkTel();return flag;}</script>
</body>
</html>

总结

过两天上传加上gitee链接,不然代码太多了

相关文章:

HTML,CSS,JavaScript三件套

前言 1.HTML 就是用来写网页的 就是超文本标记语言 1.1快速入门 标签是根标签&#xff0c;就是开始的地方 head就是头&#xff0c;加载一些资源信息&#xff0c;和展示title标题的地方&#xff0c;比如html快速入门那几个字就是title标题标签 body是身体&#xff0c;就是正…...

react 总结+复习+应用加深

文章目录 一、React生命周期1. 挂载阶段&#xff08;Mounting&#xff09;补充2. 更新阶段&#xff08;Updating&#xff09;补充 static getDerivedStateFromProps 更新阶段应用补充 getSnapshotBeforeUpdate3. 卸载阶段&#xff08;Unmounting&#xff09; 二、React组件间的…...

关于 API

关于 API $set 问法&#xff1a;有没有遇到过数据更新了但视图没有更新的情况&#xff1f; <template><div>{{arr}}<button click"btn"></button></div> </template><script> export default {name:"Home"da…...

第15次CCF CSP真题解

1、小明上学 题目链接&#xff1a;https://sim.csp.thusaac.com/contest/15/problem/0 本题是模拟红绿灯计时的题&#xff0c;根据红绿灯转换规则可知&#xff0c;红灯后面通常是绿灯&#xff0c;绿灯后面是黄灯&#xff0c;黄灯过后又是红灯。根据题意&#xff0c;当k 0时&…...

STM32硬件平台

STM32 系列是 STMicroelectronics 设计的高度灵活、广泛应用的微控制器&#xff08;MCU&#xff09;系列&#xff0c;支持从低功耗应用到高性能处理的需求&#xff0c;适用于工业、汽车、消费电子和物联网等广泛领域。STM32 系列具有广泛的硬件种类和丰富的功能&#xff0c;以下…...

一文讲明白大模型分布式逻辑(从GPU通信原语到Megatron、Deepspeed)

1. 背景介绍 如果你拿到了两台8卡A100的机器&#xff08;做梦&#xff09;&#xff0c;你的导师让你学习部署并且训练不同尺寸的大模型&#xff0c;并且写一个说明文档。你意识到&#xff0c;你最需要学习的就是关于分布式训练的知识&#xff0c;因为你可是第一次接触这么多卡…...

【人工智能-初级】第6章 决策树和随机森林:浅显易懂的介绍及Python实践

文章目录 一、决策树简介二、决策树的构建原理2.1 决策树的优缺点优点缺点 三、随机森林简介3.1 随机森林的构建过程3.2 随机森林的优缺点优点缺点 四、Python实现决策树和随机森林4.1 导入必要的库4.2 加载数据集并进行预处理4.3 创建决策树模型并进行训练4.4 可视化决策树4.5…...

时间序列预测(九)——门控循环单元网络(GRU)

目录 一、GRU结构 二、GRU核心思想 1、更新门&#xff08;Update Gate&#xff09;&#xff1a;决定了当前时刻隐藏状态中旧状态和新候选状态的混合比例。 2、重置门&#xff08;Reset Gate&#xff09;&#xff1a;用于控制前一时刻隐藏状态对当前候选隐藏状态的影响程度。…...

李东生牵手通力股份IPO注册卡关,三年近10亿“清仓式分红”引关注

《港湾商业观察》施子夫 9月27日&#xff0c;通力科技股份有限公司&#xff08;以下简称&#xff0c;通力股份&#xff09;再度提交了注册申请&#xff0c;实际上早在去年11月6日公司已经提交过注册&#xff0c;看起来公司注册环节面临卡关。公开信息显示&#xff0c;通力股份…...

Android13、14特殊权限-应用安装权限适配

Android13、14特殊权限-应用安装权限适配 文章目录 Android13、14特殊权限-应用安装权限适配一、前言二、权限适配三、其他1、特殊权限-应用安装权限适配小结2、dumpsys package查看获取到了应用安装权限3、Android权限系统&#xff1a;应用操作管理类AppOpsManager&#xff08…...

DMVPN协议

DMVPN&#xff08;Dynamic Multipoint VPN&#xff09;动态多点VPN 对于分公司和分总公司内网实现通信环境下&#xff0c;分公司是很多的。我们不可能每个分公司和总公司都挨个建立ipsec隧道 &#xff0c;而且如果是分公司和分公司建立隧道&#xff0c;就会很麻烦。此时我们需…...

leetcode动态规划(十八)-零钱兑换II

题目 322.零钱兑换II 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff0c;返回 -1 。 你可以认为每种硬…...

2024 CSP-J 题解

2024 CSP-J题解 扑克牌 ​ 题目给出了一整套牌的定义&#xff0c;但是纯粹在扯淡&#xff0c;完全没有必要去判断给出的牌的花色和点数&#xff0c;我们用一个循环来依次读入每一张牌&#xff0c;如果这个牌在之前出现过&#xff0c;我们就让答案减一。这里建议用map、unorde…...

GPU 服务器厂家:中国加速计算服务器市场的前瞻洞察

科技的飞速发展&#xff0c;让 GPU 服务器在加速计算服务器领域的地位愈发凸显。中国加速计算服务器市场正展现出蓬勃的生机&#xff0c;而 GPU 服务器厂家则是这场科技盛宴中的关键角色。 从市场预测的趋势来看&#xff0c;2023 年起&#xff0c;中国加速计算服务器市场便已展…...

Hadoop集群修改yarn队列

1.修改默认的default队列参数 注意&#xff1a; yarn.scheduler.capacity.root.队列名.capacity总和不能超过100 <property><name>yarn.scheduler.capacity.root.queues</name><value>default,hive,spark,flink</value><description>The…...

【GPIO】2.ADC配置错误,还是能得到电压数据

配置ADC功能时&#xff0c;GPIO引脚弄错了&#xff0c;P1写成P2&#xff0c;但还是配置成功&#xff0c;能得到电压数据。 首先一步步排查&#xff1a; 既然引脚弄错了&#xff0c;那引脚改为正确的引脚&#xff0c;能得到数据通过第一步判断&#xff0c;GPIO配置似乎是不起作…...

css-元素居中方式

<section class"wrapper"><div class"content">Content goes here</div> </section>1. 使用 Flexbox Flexbox 是一种现代的布局方法&#xff0c;可以轻松实现居中。 .wrapper {display: flex; /* 使用 Flexbox …...

redis内存打满了怎么办?

1、设置maxmemory的大小 我们需要给 Redis设置maxmemory的大小&#xff0c;如果不设置的话&#xff0c;它会受限于系统的物理内存和系统对内存的管理机制。 2、设置内存的淘汰策略 内存的淘汰策略分为 8 种&#xff0c;从淘汰范围来说分为从所有的key中淘汰和从设置过期时间…...

决策算法的技术分析

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言(1)第一层级:分层状态机、分层决策树的想法(三个臭皮匠胜过一个诸葛亮)基于场景的固定规则化的分层决策核心思想(2)第二层级:数据管理的方…...

【Python爬虫】获取汽车之家车型配置附代码(2024.10)

参考大哥&#xff0c;感谢大哥&#xff1a;https://blog.csdn.net/weixin_43498642/article/details/136896338 【任务目标】 工作需要想更方便地下载汽车之家某车系配置清单&#xff1b;&#xff08;垃圾汽车之家不给下载导出表格&#xff0c;配置页叉掉了车系要出来还要重新…...

JVM 加载 class 文件的原理机制

JVM 加载 class 文件的原理机制 JVM&#xff08;Java虚拟机&#xff09;是一个可以执行Java字节码的虚拟机。它负责执行Java应用程序和应用程序的扩展&#xff0c;如Java库和框架。 文章目录 JVM 加载 class 文件的原理机制1. JVM1.1 类加载器1.2 魔数1.3 元空间 2. 类加载2.1 …...

NumPy学习第九课:字符串相关函数

前言 各位有没有注意到&#xff0c;NumPy从第八课开始其实基本上都是讲的是NumPy的函数&#xff0c;而且其实就是各种函数的调用&#xff0c;因为NumPy是一个很强大的函数库&#xff0c;这对我们以后再处理项目中遇到的问题时会有很大的帮助。我们将常用的函数进行一个列举&am…...

卷积神经网络(CNNs)在处理光谱特征的序列属性时表现不佳

卷积神经网络&#xff08;CNNs&#xff09;在处理光谱签名的序列属性时表现不佳&#xff0c;主要是由于其固有网络架构的局限性。具体原因如下&#xff1a; 局部感受野&#xff08;Local Receptive Field&#xff09;&#xff1a; CNN 的核心操作是卷积&#xff0c;它利用局部感…...

【IC】MCU的Tick和晶振频率

Tick 是指 MCU 内部时钟的一个周期&#xff0c;通常表示为一个固定的时间间隔。每个 tick 代表一个时间单位&#xff0c;通常以毫秒&#xff08;ms&#xff09;或微秒&#xff08;μs&#xff09;为单位。Tick 通常由 MCU 的定时器或计时器生成&#xff0c;作为系统时钟的一部分…...

从0到1学习node.js(npm)

文章目录 一、NPM的生产环境与开发环境二、全局安装三、npm安装指定版本的包四、删除包 五、用npm发布一个包六、修改和删除npm包1、修改2、删除 一、NPM的生产环境与开发环境 类型命令补充生产依赖npm i -S uniq-S 等效于 --save -S是默认选项npm i -save uniq包的信息保存在…...

【STM32 Blue Pill编程实例】-OLED显示DS18B20传感器数据

OLED显示DS18B20传感器数据 文章目录 OLED显示DS18B20传感器数据1、DS18B20介绍2、硬件准备及接线3、模块配置3.1 定时器配置3.2 DS18B20传感器配置3.3 OLED的I2C接口配置4、代码实现在本文中,我们将介绍如何将 DS18B20 温度传感器与 STM32 Blue Pill 开发板连接,并使用 HAL …...

STM32 从0开始系统学习3 启动流程

目录 写在前面 速通&#xff1a;做了什么&#xff1a; 分析I&#xff1a;分析2011年的startup文件所作 分析II&#xff1a;分析2017年的startup文件所作 Helps 2011 2017 Reference 写在前面 请各位看官看本篇笔记的时候首先了解一下计算机体系架构&#xff0c;了解基本…...

交换机:端口安全与访问控制指南

为了实现端口安全和访问控制&#xff0c;交换机通常通过以下几种机制和配置来保护网络&#xff0c;防止未经授权的访问和恶意攻击。 01-端口安全 定义及功能 端口安全功能允许管理员限制每个交换机端口可以学习的MAC地址数量。 通过绑定特定的MAC地址到交换机的某一端口上&a…...

【C++ | 数据结构】八大常用排序算法详解

1. 排序的稳定性 排序是我们生活中经常会面对的问题&#xff0c;小朋友站队的时候会按照从矮到高的顺序排列&#xff1b;老师查看上课出勤情况时&#xff0c;会按照学生的学号点名&#xff1b;高考录取时&#xff0c;会按照成绩总分降序依次录取等等。那么对于排序它是如何定义…...

Oracle 第7章:数据完整性约束

在Oracle数据库中&#xff0c;数据完整性是指确保存储在数据库中的数据的正确性和一致性。为了实现这一点&#xff0c;Oracle提供了多种机制来维护数据完整性&#xff0c;包括主键&#xff08;Primary Key&#xff09;、外键&#xff08;Foreign Key&#xff09;和唯一性约束&a…...