【网页设计】CSS 高级技巧

目标

  • 能够使用精灵图
  • 能够使用字体图标
  • 能够写出 CSS 三角
  • 能够写出常见的 CSS 用户界面样式
  • 能够说出常见的布局技巧

1. 精灵图

  1. 为什么需要精灵图?
  2. 精灵图的使用
  3. 精灵图课堂案例

1.1 为什么需要精灵图?

        一个网页中往往会应用很多小的背景图像作为修饰,当网页中的图像过多时,服务器就会频繁地接收和发送请求图片,造成服务器请求压力过大,这将大大降低页面的加载速度。
        因此,为了有效地减少服务器接收和发送请求的次数,提高页面的加载速度,出现了 CSS 精灵技术(也称 CSS Sprites、CSS 雪碧)。
        核心原理:将网页中的一些小背景图像整合到一张大图中 ,这样服务器只需要一次请求就可以了

1.2 精灵图的使用

使用精灵图核心:

  1. 精灵技术主要针对于背景图片使用。就是把多个小背景图片整合到一张大图片中。
  2. 这个大图片也称为 sprites 精灵图 或者 雪碧图
  3. 移动背景图片位置, 此时可以使用 background-position
  4. 移动的距离就是这个目标图片的 x y 坐标。注意网页中的坐标有所不同
  5. 因为一般情况下都是往上往左移动,所以数值是负值。(与数学中常见的坐标系不同)
  6. 使用精灵图的时候需要精确测量,每个小背景图片的大小和位置。

使用精灵图的原理:

  1. 我们只能看到盒子内部的部分,溢出的部分看不到
  2. 通过移动背景图片的位置,使得我们想要的图片位于盒子中,这样就可以达到一图多用的效果

使用精灵图核心总结:

  1. 精灵图主要针对于小的背景图片使用。
  2. 主要借助于背景位置来实现---background-position 。
  3.  一般情况下精灵图都是负值。(千万注意网页中的坐标: x轴右边走是正值,左边走是负值, y轴同理。)

1.3 精灵图课堂案例

demo:王者荣耀精灵图

code:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>精灵图使用</title><style>.box1 {width: 60px;height: 60px;   margin: 100px auto;background: url(images/sprites.png) no-repeat   -182px 0;}.box2 {width: 27px;height: 25px;/* background-color: pink; */margin: 200px;background: url(images/sprites.png) no-repeat  -155px -106px;}</style>
</head>
<body><div class="box1"></div><div class="box2"></div>
</body>
</html>

案例:拼出自己名字

demo:

code:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>利用精灵图拼出自己名字</title><style>span {display: inline-block;background: url(images/abcd.jpg) no-repeat;}.p {width: 100px;height: 112px;/* background-color: pink; */background-position:  -493px -276px;}.i {width: 60px;height: 108px;/* background-color: pink; */background-position: -327px -142px;}.n {width: 108px;height: 109px;/* background-color: pink; */background-position: -215px -141px;}.k {width: 105px;height: 114px;/* background-color: pink; */background-position: -495px -142px;}</style>
</head>
<body><span class="p">p</span><span class="i">i</span><span class="n">n</span><span class="k">k</span>
</body>
</html>

        注:这里有个小优化,因为背景都是同一个精灵图,所以背景图片的生命放在了 span 里面,通过层叠性,在后续覆盖背景图片位置即可。 

2. 字体图标

2.1 字体图标的产生

        字体图标使用场景: 主要用于显示网页中通用、常用的一些小图标(例如搜索框中的放大镜)

        精灵图是有诸多优点的,但是缺点很明显。

  1. 图片文件还是比较大的。
  2. 图片本身放大和缩小会失真。
  3. 一旦图片制作完毕想要更换非常复杂。


        此时,有一种技术的出现很好的解决了以上问题,就是字体图标 iconfont
        字体图标可以为前端工程师提供一种方便高效的图标使用方式,展示的是图标,本质属于字体

2.2 字体图表的优点

  • 轻量级:一个图标字体要比一系列的图像要小。一旦字体加载了,图标就会马上渲染出来,减少了服务器请求
  • 灵活性:本质其实是文字,可以很随意的改变颜色、产生阴影、透明效果、旋转等
  • 兼容性:几乎支持所有的浏览器,请放心使用

        注意: 字体图标不能替代精灵技术,只是对工作中图标部分技术的提升和优化。

总结:

  1. 如果遇到一些结构和样式比较简单的小图标,就用字体图标。
  2. 如果遇到一些结构和样式复杂一点的小图片,就用精灵图。

字体图标是一些网页常见的小图标,我们直接网上下载即可。 因此使用可以分为:

  1. 字体图标的下载
  2. 字体图标的引入 (引入到我们html页面中)
  3. 3字体图标的追加 (以后添加新的小图标)

2.3 字体图标的下载

推荐下载网站:

  • icomoon 字库 SVG Icon Libraries and Custom Icon Font Organizer ❍ IcoMoon 推荐指数 ★★★★★

        IcoMoon 成立于 2011 年,推出了第一个自定义图标字体生成器,它允许用户选择所需要的图标,使它们成一字型。该字库内容种类繁多,非常全面,唯一的遗憾是国外服务器,打开网速较慢。

  • 阿里 iconfont 字库 iconfont-阿里巴巴矢量图标库 推荐指数 ★★★★★

        这个是阿里妈妈 M2UX 的一个 iconfont 字体图标字库,包含了淘宝图标库和阿里妈妈图标库。可以使用 AI制作图标上传生成。 重点是,免费!

2.4 字体图标的引入

下载完毕之后,注意原先的文件不要删,后面会用。

1. 把下载包里面的 fonts 文件夹放入页面根目录下

2.4.1 字体文件格式

不同浏览器所支持的字体格式是不一样的,字体图标之所以兼容,就是因为包含了主流浏览器支持的字体文件。

  1. TureType(.ttf)格式.ttf字体是Windows和Mac的最常见的字体,支持这种字体的浏览器有IE9+、Firefox3.5+、Chrome4+、Safari3+、Opera10+、iOS Mobile、Safari4.2+;
  2. Web Open Font Format(.woff)格式woff字体,支持这种字体的浏览器有IE9+、Firefox3.5+、Chrome6+、Safari3.6+、Opera11.1+;
  3. Embedded Open Type(.eot)格式.eot字体是IE专用字体,支持这种字体的浏览器有IE4+;
  4. SVG(.svg)格式.svg字体是基于SVG字体渲染的一种格式,支持这种字体的浏览器有Chrome4+、Safari3.1+、Opera10.0+、iOS Mobile Safari3.2+;

2.4.2 字体图标的引入

2.在 CSS 样式中全局声明字体: 简单理解把这些字体文件通过css引入到我们页面中。

  • 一定注意字体文件路径的问题。
  • 在 <style></style> 标签或者 css 文件中引入
@font-face {font-family: 'icomoon';src: url('fonts/icomoon.eot?7kkyc2');src: url('fonts/icomoon.eot?7kkyc2#iefix') format('embedded-opentype'),url('fonts/icomoon.ttf?7kkyc2') format('truetype'),url('fonts/icomoon.woff?7kkyc2') format('woff'),url('fonts/icomoon.svg?7kkyc2#icomoon') format('svg');font-weight: normal;font-style: normal;
}

3. html 标签内添加小图标。

  • 具体文件为 font 文件夹中的 demo.html
  • 将后面的小方块复制到对应盒子中

<span> </span>

4. 给标签定义字体。

span {font-family: "icomoon";font-size: 100px;color:pink;
}
  • 务必保证 这个字体和上面@font-face里面的字体保持一致

2.5 字体图标的追加

        如果工作中,原来的字体图标不够用了,我们需要添加新的字体图标到原来的字体文件中。
        把压缩包里面的 selection.json 从新上传,然后选中自己想要新的图标,从新下载压缩包,并替换原来的文件即可。

3. CSS 三角

        网页中常见一些三角形,使用 CSS 直接画出来就可以,不必做成图片或者字体图标。
        一张图, 你就知道 CSS 三角是怎么来的了, 做法如下:

 

.box1 {width: 0;height: 0'/* border: 10px solid pink; */border-top: 10px solid pink;border-right: 10px solid red;border-bottom: 10px solid blue;border-left: 10px solid green;
}
  • 所以将其余三个边改为透明色,即可得到单个三角(三角形长边方向处的边设置颜色) 
  • 三角形的大小取决于 border 值的大小
div {width: 0;height: 0;line-height: 0;font-size: 0;border: 50px solid transparent;border-left-color: pink;
}

案例:京东三角

demo:通过定位使得三角和盒子紧贴

 code:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>CSS 三角制作</title><style>.box1 {width: 0;height: 0;/* border: 10px solid pink; */border-top: 10px solid pink;border-right: 10px solid red;border-bottom: 10px solid blue;border-left: 10px solid green;}.box2 {width: 0;height: 0;border: 50px solid transparent;border-left-color: pink;margin: 100px auto;}.jd {position: relative;width: 120px;height: 249px;background-color: pink;}.jd span {position: absolute;right: 15px;top: -10px;width: 0;height: 0;/* 为了照顾兼容性 */line-height: 0;  font-size: 0;border: 5px solid transparent;border-bottom-color: pink;}</style>
</head>
<body><div class="box1"></div><div class="box2"></div><div class="jd"><span></span></div>
</body>
</html>
  • 注意:定位三角时是 10px,这是因为三角高为 5px,而整个盒子高 10px 

4. CSS 用户界面样式

什么是界面样式?
所谓的界面样式,就是更改一些用户操作样式,以便提高更好的用户体验。

  • 更改用户的鼠标样式
  • 表单轮廓
  • 防止表单域拖拽

4.1 鼠标样式 cursor

li {cursor: pointer; }

        设置或检索在对象上移动的鼠标指针采用何种系统预定义的光标形状。 

        这里的声明不需要定义 hover 

4.2 轮廓线 outline

        给表单添加 outline: 0; 或者 outline: none; 样式之后,就可以去掉默认的蓝色边框。

input {outline: none; }

4.3 防止拖拽文本域 resize

        实际开发中,我们文本域右下角是不可以拖拽的。(若不设置,右下角是可以拖拽变大的)

textarea{ resize: none;}
  • 可以和 input 一起声明取消边框
  • 文本域的声明要在一行中,如果换行,在实际页面中会出现缩进现象;实在需要距离,用 padding 值来设定
<textarea name="" id="" cols="30" rows="10"></textarea>

5. vertical-align 属性应用

        CSS 的 vertical-align 属性使用场景: 经常用于设置图片或者表单(行内块元素)和文字垂直对齐。
        官方解释: 用于设置一个元素的垂直对齐方式,但是它只针对于行内元素或者行内块元素有效。
        到此,之前学成在线网页用户图像和名字的居中对齐,就可以制作了。

语法:

vertical-align : baseline | top | middle | bottom

5.1 图片、表单和文字对齐

        图片、表单都属于行内块元素,默认的 vertical-align 是基线对齐。

        此时可以给图片、表单这些行内块元素的 vertical-align 属性设置为 middle 就可以让文字和图片垂直居中对齐了。  

  • 如果需要对齐的是文字和图片,那么直接声明 middle 即可;但如果图片是采用设置盒子的背景图片的话,需要先将盒子转换为行内块元素
  • 同样,举一反三,对于文本域一旁的文字提示,也可以用这种方式来改变对齐方式。

5.2 解决图片底部默认空白缝隙问题

        bug:图片底侧会有一个空白缝隙,原因是行内块元素会和文字的基线对齐。
        主要解决方法有两种:

  1. 给图片添加 vertical-align:middle | top| bottom 等(不是基线即可)。 (提倡使用的)
  2. 把图片转换为块级元素 display: block

6. 溢出的文字省略号显示

        注:以下代码都是声明在对应盒子中。

6.1 单行文本溢出显示省略号

        必须满足三个条件

/*1. 先强制一行内显示文本*/ white-space: nowrap; /* 默认 normal 自动换行 */
/*2. 超出的部分隐藏*/ overflow: hidden; 
/*3. 文字用省略号替代超出的部分*/ text-overflow: ellipsis;

6.2 多行文本溢出显示省略号

        多行文本溢出显示省略号,有较大兼容性问题, 适合于webKit浏览器或移动端(移动端大部分是webkit内核)
        其实兼容性非必要情况也不是很重要,有对应的大概效果就行。

    overflow: hidden;text-overflow: ellipsis;
/* 弹性伸缩盒子模型显示 */display: -webkit-box;
/* 限制在一个块元素显示的文本的行数 */-webkit-line-clamp: 2;
/* 设置或检索伸缩盒对象的子元素的排列方式 */-webkit-box-orient: vertical;
  •  -webkit-line-clamp 参数决定在第几行显示省略号
  • 多余的文本会在省略号后提行显示,通过设置合理的盒子高度来隐藏多余的文字

        更推荐让后台人员来做这个效果,因为后台人员可以设置显示多少个字,操作更简单。 

7. 常见布局技巧

        巧妙利用一个技术更快更好的布局:

  1. margin负值的运用
  2. 文字围绕浮动元素
  3. 行内块的巧妙运用
  4. CSS三角强化

7.1 margin 负值运用

        以下图片中,每一个盒子都有一个线性边框。除了之前的合并,现在有一个新的方式

  1. 让每个盒子margin 往左侧移动 -1px 正好压住相邻盒子边框(具体需要看边框多宽
  2. 鼠标经过某个盒子的时候,提高当前盒子的层级即可(如果没有有定位,则加相对定位(保留位置),如果有定位,则加z-index)
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>margin负值的巧妙运用</title><style>ul li {position: relative;float: left;list-style: none;width: 150px;height: 200px;border: 1px solid red;margin-left: -1px;}/* ul li:hover {1. 如果盒子没有定位,则鼠标经过添加相对定位即可position: relative;border: 1px solid blue;} */ul li:hover {/* 2.如果li都有定位,则利用 z-index提高层级 */z-index: 1;border: 1px solid blue;}</style>
</head><body><ul><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul>
</body></html>

        注意这里的代码,移动 -1px 是对每个盒子都有的声明,但是为什么不存在抵消问题呢?这是因为在渲染过程中,是先读取网页结构,再按照样式一个接一个的渲染,第二个盒子的初始位置一定是紧贴第一个盒子的,所以不存在抵消情况。

        对于经过一个盒子,该盒子边框变色显现,由于之前的设置,会出现覆盖问题,有两种解决方式:

  1. 不存在定位时声明相对定位:相对定位会盖住其他盒子
  2. 由于盒子中的一些元素会存在绝对定位,根据子绝父相,会出现同时存在相对定位的情况;这时候就要采用 z-index: 1 的方式来提高层级。

7.2 文字围绕浮动元素

         对于上述效果,以前我们的做法是对左侧图片(作为背景放在盒子中)加左浮动,对右侧文字盒子加右浮动,现在有更简单的做法。

        巧妙运用浮动元素不会压住文字的特性

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>文字围绕浮动元素的妙用</title><style>* {margin: 0;padding: 0;}.box {width: 300px;height: 70px;background-color: pink;margin: 0 auto;padding: 5px;}.pic {float: left;width: 120px;height: 60px;margin-right: 5px;}.pic img {width: 100%;}</style>
</head>
<body><div class="box"><div class="pic"><img src="images/img.png" alt=""></div><p>【集锦】热身赛-巴西0-1秘鲁 内马尔替补两人血染赛场</p></div>
</body>
</html>
  • 这样就不需要对右侧文字盒子设置高和宽,就是一个标准流。 
  • 对于文字盒子具体位置的设置,通过调 margin-right 参数即可
  • 对于图片盒子具体位置的设置,通过调 padding 值即可

7.3 行内块的巧妙运用

        之前我们会做很多 li,然后对每个 li 添加浮动再加 margin 值,很复杂。

页码在页面中间显示:

  1. 把这些链接盒子转换为行内块, 之后给父级指定 text-align:center;
  2. 利用行内块元素中间有缝隙,并且给父级添加 text-align:center; 行内块元素会水平会居中
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>行内块的巧妙运用</title><style>* {margin: 0;padding: 0;}.box {text-align: center;}.box a {display: inline-block;width: 36px;height: 36px;background-color: #f7f7f7;border: 1px solid #ccc;text-align: center;line-height: 36px;text-decoration: none;color: #333;font-size: 14px;}.box .prev,.box .next {width: 85px;}.box .current,.box .elp {background-color: #fff;border: none;}.box input {height: 36px;width: 45px;border: 1px solid #ccc;outline: none;}.box button {width: 60px;height: 36px;background-color: #f7f7f7;border: 1px solid #ccc;}</style>
</head>
<body><div class="box"><a href="#" class="prev">&lt;&lt;上一页</a><a href="#" class="current">2</a><a href="#">3</a><a href="#">4</a><a href="#">5</a><a href="#">6</a><a href="#" class="elp">...</a><a href="#" class="next">&gt;&gt;下一页</a>到第 <input type="text">页<button>确定</button></div>
</body>
</html>
  • 转换为行内块元素,不仅仅能更方便设置盒子大小,现在还可以更好设置居中位置
  • 对上一页和下一页,为了使文字更好显示,这里要单独声明。同时要注意权重问题,用 .box .prev 提高权重
  • 对当前页和省略号没有边框,单独声明样式即可
  • 清楚内外边距的习惯要养成

7.4 CSS 三角强化

        这种三角形的形成原理如下:(参考之前画三角的那个图) 

  1. 去掉下半部分:border-bottom: 0;
  2. 使上半部分拉高:border-top: 100px; (比左右都要大)
  3. 去掉左半(或者右半):border-left: 0; 
  4. 使上半透明:border-top: transparent; 
width: 0;
height: 0;
border-color: transparent red transparent transparent;
border-style: solid;
border-width: 22px 8px 0 0;
  •  多个声明顺序:上右下左

        对于京东图标的制作:

  1. 先做两个加个的样式
  2. 左边盒子浮动,右边盒子做为标准流自动围绕
  3. 把直角三角形定位(代码中三角形标签为 i)
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>CSS三角强化的巧妙运用</title><style>.box1 {width: 0;height: 0;/* 把上边框宽度调大 *//* border-top: 100px solid transparent;border-right: 50px solid skyblue; *//* 左边和下边的边框宽度设置为0 *//* border-bottom: 0 solid blue;border-left: 0 solid green; *//* 1.只保留右边的边框有颜色 */border-color: transparent red transparent transparent;/* 2. 样式都是solid */border-style: solid;/* 3. 上边框宽度要大, 右边框 宽度稍小, 其余的边框该为 0 */border-width: 100px 50px 0 0 ;}.price {width: 160px;height: 24px;line-height: 24px;border: 1px solid red;margin: 0 auto;}.miaosha {position: relative;float: left;width: 90px;height: 100%;background-color:red;text-align: center;color: #fff;font-weight: 700;margin-right: 8px;}.miaosha i {position: absolute;right: 0;top: 0;width: 0;height: 0;border-color: transparent #fff transparent transparent;border-style: solid;border-width: 24px 10px 0 0;}.origin {font-size: 12px;color: gray;text-decoration: line-through;}</style>
</head>
<body><div class="box1"></div><div class="price"><span class="miaosha">¥1650<i></i></span><span class="origin">¥5650</span></div>
</body>
</html>

8. CSS 初始化

        不同浏览器对有些标签的默认值是不同的,为了消除不同浏览器对HTML文本呈现的差异,照顾浏览器的兼容,我们需要对CSS 初始化
        简单理解: CSS初始化是指重设浏览器的样式。 (也称为CSS reset)
        每个网页都必须首先进行 CSS初始化。
        这里我们以 京东CSS初始化代码为例。

Unicode编码字体:

        把中文字体的名称用相应的Unicode编码来代替,这样就可以有效的避免浏览器解释CSS代码时候出现乱码的问题。

比如:

  • 黑体 \9ED1\4F53
  • 宋体 \5B8B\4F53
  • 微软雅黑 \5FAE\8F6F\96C5\9ED1
/* 把我们所有标签的内外边距清零 */
* {margin: 0;padding: 0
}
/* em 和 i 斜体的文字不倾斜 */
em,
i {font-style: normal
}
/* 去掉li 的小圆点 */
li {list-style: none
}img {/* border 0 照顾低版本浏览器 如果 图片外面包含了链接会有边框的问题 */border: 0;/* 取消图片底侧有空白缝隙的问题 */vertical-align: middle
}button {/* 当我们鼠标经过button 按钮的时候,鼠标变成小手 */cursor: pointer
}a {color: #666;text-decoration: none
}a:hover {color: #c81623
}button,
input {/* "\5B8B\4F53" 就是宋体的意思 这样浏览器兼容性比较好 */font-family: Microsoft YaHei, Heiti SC, tahoma, arial, Hiragino Sans GB, "\5B8B\4F53", sans-serif
}body {/* CSS3 抗锯齿形 让文字显示的更加清晰 */-webkit-font-smoothing: antialiased;background-color: #fff;font: 12px/1.5 Microsoft YaHei, Heiti SC, tahoma, arial, Hiragino Sans GB, "\5B8B\4F53", sans-serif;color: #666
}.hide,
.none {display: none
}
/* 清除浮动 */
.clearfix:after {visibility: hidden;clear: both;display: block;content: ".";height: 0
}.clearfix {*zoom: 1
}

        这一章展现了一些更简单,更美观的做法,当然也不是说以前的方法就不能用了,只是说建议采用更叫高效的做法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/11782.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构——二叉树和BST

树与二叉树 基本概念 树是一种非线性结构&#xff0c;其严格的数学定义是&#xff1a;如果一组数据中除了第一个节点&#xff08;第一个节点称为根节点&#xff0c;没有直接前驱节点&#xff09;之外&#xff0c;其余任意节点有且仅有一个直接前驱&#xff0c;有零个或多个直接…

openGauss常见问题与故障处理(一)

大家好&#xff0c;欢迎大家收看本文。 对于初学者入门的学习&#xff0c;一些理论不容易理解或记住&#xff0c;所以本节课程【创新】采用了【正、反对比联想记忆】的方法&#xff0c; 引入模拟场景中的肖荏盖的小故事。&#xff08;模拟场景为虚构演绎&#xff0c;仅供教学&…

计算机辅助几何设计:曲线曲面基础知识

参数化表示 空间曲线曲面常用参数化表示&#xff0c;即&#xff1a; x x ( u ) , y y ( u ) , z z ( u ) xx(u),yy(u),zz(u) xx(u),yy(u),zz(u)。用位置矢量形式表示就是 p p ( u ) pp(u) pp(u)&#xff0c;其中参数u可能有意义&#xff0c;也可能没有意义&#xff0c;例如…

TF-Grasp论文学习笔记

当 Transformer 遇到机器人抓取时&#xff1a;利用上下文进行有效的抓取检测 摘要 在这篇论文中&#xff0c;我们提出了一个基于transformer结构的用于机器人抓取的网络&#xff0c;我们将其命名为TF-Grasp。TF-Grasp网络架构有两个重要的设计&#xff0c;这使其可以对于视觉抓…

剪绳子(math)-acwing

题目&#xff1a; AcWing 25. 剪绳子 - AcWing 代码 主要是处理末尾端几个2&#xff0c;其余都是3&#xff0c;这样相乘能最大&#xff0c;因为4可以分为2*2&#xff0c;3不能分&#xff0c;然后5也没有3*2大&#xff0c;6也没有3*3大。 总之2*2没有3*3大&#xff0c;所以6不…

Scrapy爬取heima论坛所有页面内容并保存到数据库中

前期准备&#xff1a; Scrapy入门_win10安装scrapy-CSDN博客 新建 Scrapy项目 scrapy startproject mySpider03 # 项目名为mySpider03 进入到spiders目录 cd mySpider03/mySpider03/spiders 创建爬虫 scrapy genspider heima bbs.itheima.com # 爬虫名为heima &#…

基于SpringBoot的垃圾分类回收系统+LW示例参考

1.项目介绍 系统角色&#xff1a;管理员、普通用户、回收员功能模块&#xff1a;管理员&#xff08;用户管理、回收员管理、垃圾类型管理、商品分类管理、环保商城管理、上门回收管理、订单分配管理、订单管理、系统管理等&#xff09;、回收员&#xff08;订单分配、订单管理…

华为入围Linux 内核CVE 检视“五人团”,openEuler要再进阶?

背景&#xff1a;内核社区接管 Linux 社区漏洞发布 往年 Linux 内核漏洞发布存在来源不固定、覆盖不全面&#xff0c;有时发布无修复补丁的 CVE 从而形成 0-day 漏洞等问题&#xff0c;给 Linux 内核安全带来了不确定性&#xff0c;为了更规范化运作&#xff0c;2024 年 2 月 1…

JS爬虫实战之TikTok_Shop验证码

TikTok_Shop验证码逆向 逆向前准备思路1- 确认接口2- 参数确认3- 获取轨迹参数4- 构建请求5- 结果展示 结语 逆向前准备 首先我们得有TK Shop账号&#xff0c;否则是无法抓取到数据的。拥有账号后&#xff0c;我们直接进入登录。 TikTok Shop 登录页面 思路 逆向步骤一般分为…

同等学力申硕国考只考一门的专业有哪些?

同等学力申硕国考英语&#xff0c;英语不考听力&#xff0c;若进行考前有效辅导&#xff0c;英语单科通过率可以较大幅度提高。相对其他非全日制研究生和全日制研究生而言&#xff0c;考试科目少了&#xff0c;总分少&#xff0c;复习量也相对少&#xff0c;比较适合在职人员报…

烟火识别软件LiteAIServer视频智能分析平台支持烟雾检测算法

随着科技的不断发展&#xff0c;安防管理平台在企业和机构中的应用日益广泛。烟火识别软件LiteAIServer集成了视频监控、报警系统等多种安防功能&#xff0c;为用户提供了一站式解决方案。 烟雾检测是在安防已经落地的AI算法 &#xff0c;主要应用于&#xff1a;厂区、森林、仓…

llamaIndex和langchain对比及优劣对比

一. LangChain vs LlamaIndex: 基本描述 LlamaIndex在搜索和检索任务方面表现出色。它是一个强大的数据索引和查询工具&#xff0c;非常适合需要高级搜索的项目。LlamaIndex能够处理大型数据集&#xff0c;从而实现快速准确的信息检索。 LangChain是一个模块化和灵活的工具集框…

免费体验OS和CAN配置|昂辉科技EasySAR Configurator demo推出

自2018年起&#xff0c;昂辉科技专注于汽车电子行业&#xff0c;深耕车载基础软件领域&#xff0c;已研发出符合AUTOSAR标准的EasySAR车载基础软件平台。该平台包含基础软件包和配置工具链&#xff0c;旨在赋能产业链与供应链&#xff0c;推动行业发展。 EasySAR配置工具支持…

Android 源码的下载与编译

Android 源码的下载与编译 本章节主要介绍安卓系统的编译以及编译产物&#xff0c;根据我自己的经验只总结个人觉得重要的部分。 有价值的博客&#xff1a; https://blog.csdn.net/wuye110/article/details/8463409 https://juejin.cn/post/7288166472131018786 值得一看的…

docker安装portainer

1、拉取镜像 docker pull portainer/portainer-ce:latest2、执行 docker run -d --restartalways --name portainer -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v /data/portainer/data:/data -v /data/portainer/public:/public portainer/portain…

手写jdbc 工具类(封装思维,解决硬编码...)

目录 前言 手写jdbc 工具类 封装思维 对于封装思维的理解 举一个关于封装思维的例子 解决硬编码 什么是硬编码&#xff1f; 硬编码的例子&#xff1a; 解决办法 解法1 解法2 解法3 jdbc工具类总的代码如下 资源关闭的先后问题 解决办法&#xff1a; 总结 …

The First项目报告:抗 MEV 交易的CoW Protocol什么?

2023年&#xff0c;当UNIswap推出UniswapX 时&#xff0c;市场迎接它的不是赞叹&#xff0c;而是一片争议。UniswapX被指抄袭 CoWSwap 和 1inch。Curve 官方称 1inch 和 CoWSwap 早已改变游戏规则&#xff0c;UniswapX 非首创。CoWSwap 强调其 Intent Based Trading 的先驱地位…

微服务day06

MQ入门 同步处理业务&#xff1a; 异步处理&#xff1a; 将任务处理后交给MQ来进行分发处理。 MQ的相关知识 同步调用 同步调用的小结 异步调用 MQ技术选型 RabbitMQ 安装部署 其中包含几个概念&#xff1a; publisher&#xff1a;生产者&#xff0c;也就是发送消息的一方 …

C语言 | Leetcode C语言题解之第541题反转字符串II

题目&#xff1a; 题解&#xff1a; void swap(char* a, char* b) {char tmp *a;*a *b, *b tmp; }void reverse(char* l, char* r) {while (l < r) {swap(l, --r);} }int min(int a, int b) {return a < b ? a : b; }char* reverseStr(char* s, int k) {int n strl…

众创空间全民清债行动助力“三箭齐发”,共化地方债务危机

近日,中国财政领域迎来重大利好消息,政府“三箭齐发”策略出台,旨在高效化解地方债务问题,为经济稳健前行扫清障碍。而在这场化解债务的风暴中,众创空间全民清债行动以其独特的创新模式和卓越的服务能力,成为备受瞩目的助力者。历经15天的内测,众创空间全民清债行动于11月10日正…