CSS -- 06. CSS高阶技巧总结

news2025/4/19 11:37:53

文章目录

  • CSS高阶技巧
    • 1 精灵图(sprites)
      • 1.1 为什么使用精灵图
      • 1.2 精灵图的使用
    • 2 字体图标
      • 2.1 字体图标的产生
      • 2.2 字体图标的优点
      • 2.3 字体图标的下载
      • 2.4 字体图标的引入
      • 2.5 字体图标的追加
    • 3 CSS三角形
    • 4 CSS用户界面样式
      • 4.1 鼠标样式 cursor
      • 4.2 表单的轮廓线
      • 4.3 防止拖拽文本域 resize
    • 5 vertical-align属性应用
      • 5.1 图片、表单和文字对齐
      • 5.2 解决图片底部默认空白缝隙问题
    • 6 溢出的文字省略号显示
      • 6.1 单行文本溢出显示省略号
      • 6.2 多行文本溢出显示省略号
    • 7 常见的布局技巧
      • 7.1 margin负值运用
      • 7.2 文字围绕浮动元素
      • 7.3 行内块的巧妙运用
      • 7.4 CSS三角强化
    • 8 CSS初始化

CSS高阶技巧

1 精灵图(sprites)

1.1 为什么使用精灵图

image-20221212180135122

一个网页中往往会应用很多小的背景图像作为修饰,当网页中的图像过多时,服务器就会频繁地接收和发送请求图片,造成服务器请求压力过大,这将大大降低页面的加载速度。

因此,**为了有效地减少服务器接收和发送请求的次数,提高页面的加载速度,**出现了 CSS 精灵技术(也称CSS Sprites、CSS 雪碧)

核心原理:将网页中的一些小背景图像整合到一张大图中 ,这样服务器只需要一次请求就可以了。

目的:为了有效减少服务器接受和发送请求的次数,提高页面的加载速度

1.2 精灵图的使用

使用精灵图核心:

  1. 精灵技术主要针对于背景图片使用。就是把多个小背景图片整合到一张大图片中。

  2. 这个大图片也称为 sprites 精灵图 或者 雪碧图

  3. 移动背景图片位置, 此时可以使用 background-position

  4. 移动的距离就是这个目标图片的 x 和 y 坐标。注意网页中的坐标有所不同

  5. 因为一般情况下都是往上往左移动,所以数值是负值。

  6. 使用精灵图的时候需要精确测量,每个小背景图片的大小和位置

使用精灵图核心总结:

  1. 精灵图主要针对于小的背景图片使用。

  2. 主要借助于背景位置来实现—background-position 。

  3. 一般情况下精灵图都是负值。(千万注意网页中的坐标: x轴右边走是正值,左边走是负值, y轴同理。)

<!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#pic_center) no-repeat   -182px 0;
        }
        .box2 {
            width: 27px;
            height: 25px;
            /* background-color: pink; */
            margin: 200px;
            background: url(images/sprites.png#pic_center) no-repeat  -155px -106px;
        }
    </style>
</head>
<body>
    <div class="box1"></div>
    <div class="box2"></div>
</body>
</html>

2 字体图标

2.1 字体图标的产生

字体图标使用场景: 主要用于显示网页中通用、常用的一些小图标。

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

  1. 图片文件还是比较大的。

  2. 图片本身放大和缩小会失真。

  3. 一旦图片制作完毕想要更换非常复杂。

此时,有一种技术的出现很好的解决了以上问题,就是字体图标 iconfont

字体图标可以为前端工程师提供一种方便高效的图标使用方式,展示的是图标,本质属于字体

2.2 字体图标的优点

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

注意:

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

总结:

  1. 如果遇到一些结构和样式比较简单的小图标,就用字体图标。

  2. 如果遇到一些结构和样式复杂一点的小图片,就用精灵图

字体图标是一些网页常见的小图标,我们直接网上下载即可

2.3 字体图标的下载

推荐下载网站:

  • icomoon 字库 http://icomoon.io 推荐指数 ★★★★★

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

  • 阿里 iconfont 字库 http://www.iconfont.cn/ 推荐指数 ★★★★★

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

2.4 字体图标的引入

以icomoon为例,在网站上下载完文件后得到一个压缩包,将压缩包解压之后,把里面的fonts文件夹放到页面的根目录下面

image-20221212192839063

fonts中有四个不同的文件,是为了兼容性问题

  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+;

在 CSS 样式中全局声明字体: 简单理解把这些字体文件通过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;
}

然后打开压缩包里面带的demo.html,然后复制后面的图标,在需要用的地方粘贴后设置对应标签的font-family属性,就可以正常显示图标,然后还可以指定font-size, color等属性对图标进行修改

image-20221212193251942

span {
    font-family: 'icomoon';
    font-size: 100px;
    color:pink;
}

2.5 字体图标的追加

如果工作中,原来的字体图标不够用了,我们需要添加新的字体图标到原来的字体文件中。

把压缩包里面的 selection.json 从新上传,然后选中自己想要新的图标,从新下载压缩包,并替换原来的文件即可。

上传后选择yes重新加载

image-20221212193607309

然后继续选择新的图标,选完之后生成新的图标即可,这时候会把上次的图标也包含进来生成一个新的压缩包,解压后用新的fonts文件夹替换原来的fonts文件夹即可

3 CSS三角形

网页中常见一些三角形,使用 CSS 直接画出来就可以,不必做成图片或者字体图标

给每个边框不同的颜色可以看到,每个边框其实都是一个小三角形,那么我们就可以只设置一个或两个边框从而让一个盒子呈现出来三角形的样式

image-20221212212117239

<!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: 50px solid pink;
                border-right: 50px solid red;
                border-bottom: 50px solid blue;
                border-left: 50px solid green;
            }
        </style>
    </head>
    <body>
        <div class="box1"></div>
    </body>
</html>

我们只需要将边框的颜色设置为透明,然后给其中一个边颜色即可有下面效果

image-20221212212411301

<!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>
            .box2 {
                width: 0;
                height: 0;
                border: 50px solid transparent;
                border-left-color: pink;
                margin: 100px auto;
            }
        </style>
    </head>
    <body>
        <div class="box2"></div>
    </body>
</html>

类似对话框的效果:

image-20221212212825375

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>京东三角形</title>
        <style>
            .box {
                position: relative;
                width: 300px;
                height: 100px;
                margin: 200px auto;
                background-color: skyblue;
                padding: 10px;
                color: #fff;
            }

            .box span {
                position: absolute;

                width: 0px;
                height: 0px;
                right: -20px;
                top: 20px;
                border: 10px solid transparent;
                border-left-color: skyblue;
            }
        </style>
    </head>
    <body>
        <div class="box">
            <span></span>
            <p>这是段对话,我是说话者,看看效果怎么样,应该还不错</p>
        </div>
    </body>
</html>

4 CSS用户界面样式

4.1 鼠标样式 cursor

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

语法:

li {cursor: pointer; }

image-20221212212948201

可以拷贝自己试试效果

<!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>
</head>
<body>
    <ul>
        <li style="cursor: default;">我是默认的小白鼠标样式</li>
        <li style="cursor: pointer;">我是鼠标小手样式</li>
        <li style="cursor: move;">我是鼠标移动样式</li>
        <li style="cursor: text;">我是鼠标文本样式</li>
        <li style="cursor: not-allowed;">我是鼠标禁止样式</li>
    </ul>
</body>
</html>

image-20221212213136880

image-20221212213124050

image-20221212213107773

image-20221212213157064

image-20221212213220518

4.2 表单的轮廓线

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

input {outline: none; }

4.3 防止拖拽文本域 resize

实际开发中,我们文本域右下角是不可以拖拽的。通过设置为none就可以进制拖曳,右下角的拖曳的地方就会消失

image-20221212213435712

这个是消失前的效果

textarea{ resize: none;}

5 vertical-align属性应用

CSS 的 vertical-align 属性使用场景: 经常用于设置图片或者表单(行内块元素)和文字垂直对齐。

官方解释: 用于设置一个元素的垂直对齐方式,但是它只针对于行内元素或者行内块元素有效。

image-20221212213627418

对于几条线的解释,顶线和底线确定了行高

image-20221212213704539

5.1 图片、表单和文字对齐

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

image-20221212214028320

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

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

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

主要解决方法有两种:

  1. 给图片添加 vertical-align:middle | top| bottom 等。 (提倡使用的)

  2. 把图片转换为块级元素 display: block;

就是因为和文字基线对齐,而基线下面到底线还有一部分距离,导致留有空白距离

6 溢出的文字省略号显示

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

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

image-20221212215352728

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

多行文本溢出显示省略号,有较大兼容性问题, 只适合于webKit浏览器或移动端(移动端大部分是webkit内核)

overflow: hidden;
text-overflow: ellipsis;
/* 弹性伸缩盒子模型显示 */
display: -webkit-box;
/* 限制在一个块元素显示的文本的行数 */
-webkit-line-clamp: 2;
/* 设置或检索伸缩盒对象的子元素的排列方式 */
-webkit-box-orient: vertical;

image-20221212215420899

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

7 常见的布局技巧

7.1 margin负值运用

当有一系列连续的盒子都有边框的时候,当他紧挨着会导致相邻的边框变成2倍的距离,看着非常的大,这个时候我们可以给右边的盒子添加margin-left: -1px就可以将其向左移动,压住相邻盒子的边框

image-20221212215752884

ul li {
    position: relative;
    float: left;
    list-style: none;
    width: 150px;
    height: 200px;
    border: 1px solid red;
    margin-left: -1px;
}

在float的时候就会紧挨着左边的盒子,再-1就会盖住边框

但是这样做会有个问题,当想添加鼠标移入边框高亮的效果时候会有一条边被盖住,这样看着就非常奇怪

image-20221212220129412

我们可以这样解决:鼠标经过某个盒子的时候,提高当前盒子的层级即可(如果没有有定位,则加相对定位(保留位置),如果有定位,则加z-index)

image-20221212220318992

变为相对定位是因为相对定位会压住其他的标注流盒子,有定位的时候添加z-index就行

ul li:hover {
    /* 1. 如果盒子没有定位,则鼠标经过添加相对定位即可 */
    position: relative;
    border: 1px solid blue;
}
ul li:hover {
    /* 2.如果li都有定位,则利用 z-index提高层级 */
    z-index: 1;
    border: 1px solid blue;
}

7.2 文字围绕浮动元素

巧妙运用浮动元素不会压住文字的特性,可以给图片添加float就可以实现

image-20221212220401957

<!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>

7.3 行内块的巧妙运用

居中显示页码块,可以将其转换为行内块元素,然后使用text-align: center;就可以将其居中显示

其实可以用一个div包裹起来,然后给div设置margin: 0px auto;

image-20221212220844977

<!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>

7.4 CSS三角强化

实现如下效果

image-20221212221230362

实现思路,我们只需要拼出右侧的图形,然后将其设置绝对定位放到左边的红色矩形中就可以

image-20221212221248219

我们依然可以通过三角形来实现

.box {
    width: 0px;
    height: 0px;
    border-top: 50px solid pink;
    border-right: 50px solid red;
    border-bottom: 50px solid blue;
    border-left: 50px solid green;
}

首先对于这个代码进行修改,当四个边框一样大的时候,出来的图形就很好理解

image-20221212221739637

当我们将border-top设置为100px的时候,就会变成下面这种情况,可以看到上侧被拉长了,我们需要的图形就是右侧三角形的上半部分,因此我们可以把下边框的宽度设置为0

image-20221212221836821

我们就得到了需要的三角形,将其他两个边框隐藏后就可以得到最后需要的图形

image-20221212221926431

最后生成的图形如下,css代码:

.box {
    width: 0px;
    height: 0px;
    border-top: 100px solid transparent;
    border-right: 50px solid red;
    border-bottom: 0px solid transparent;
    border-left: 0px solid transparent;
}

对其进行简化可以为:

.box {
    width: 0px;
    height: 0px;
    /*顺序仍然是上右下左*/
    border-color: transparent red transparent transparent;
    border-width: 100px 50px 0px 0px;
    border-style: solid;
}

image-20221212221959570

8 CSS初始化

不同浏览器对有些标签的默认值是不同的,为了消除不同浏览器对HTML文本呈现的差异,照顾浏览器的兼容,我们需要对CSS 初始化

简单理解: CSS初始化是指重设浏览器的样式。 (也称为CSS reset

每个网页都必须首先进行 CSS初始化。这里我们以 京东CSS初始化代码为例。

/* 把我们所有标签的内外边距清零 */
* {
    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
}

Unicode编码字体:

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

  • 黑体 \9ED1\4F53
  • 宋体 \5B8B\4F53
  • 微软雅黑 \5FAE\8F6F\96C5\9ED1

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

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

相关文章

JAVA毕业设计——基于Springboot+vue的心理咨询管理系统(源代码+数据库)

github代码地址 https://github.com/ynwynw/psychlolgyhealth-public 毕业设计所有选题地址 https://github.com/ynwynw/allProject 基于Springbootvue的心理咨询管理系统(源代码数据库) 一、系统介绍 本项目分为管理员与普通用户两种角色 管理员角色包含以下功能&#xff…

[附源码]Python计算机毕业设计SSM基于Web美食网站设计(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Kotlin标准库函数

Kotlin标准库中包含了几个函数&#xff0c;它们的目的就是可以在对象的上下文中执行代码块。当我们调用该Lambda表达式时&#xff0c;它会形成一个临时的作用域。在该范围内&#xff0c;可以访问不带名称的对象&#xff0c;此类函数称为作用域函数。包括: apply函数let函数run…

Java开发才不到3年,来面试开口要25K,面完连10K都不想给

前言 我的好朋友兼大学同学老左家庭经济情况不错&#xff0c;毕业之后没两年自己存了点钱加上家里的支持&#xff0c;自己在杭州开了一家网络公司。由于公司不是很大所以公司大部分的开发人员都是自己面试的&#xff0c;近期公司发展的不错&#xff0c;打算扩招也面试了不少人。…

[l论文解析]Classifier-Free Diffusion Guidance

paper link&#xff1a;https://openreview.net/pdf?idqw8AKxfYbI 文章目录OverviewWhat problem is addressed in the paper?What is the key to the solution?What is the main contribution?Potential fundamental flaws; how this work can be improved?Content关于 c…

Java 字符串 split 的一个反直觉陷阱

最近生产环境遇到一个奇怪的数组下标越界报错&#xff0c;如下图代码所示&#xff0c;我们可以肯定的是 fieldName 变量不为空&#xff08;不是空字符串&#xff0c;也不是 null&#xff09;&#xff0c;但是代码执行到读取 names[0] 变量的时候&#xff0c;抛出了一个 数组下标…

5G无线技术基础自学系列 | 抗衰落技术

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 无线信道是随机时变信道&#xff0c;信…

【云计算与大数据技术】文件存储格式行式、列式、GFS、HDFS的讲解(图文解释 超详细)

一、分布式文件系统 文件系统最后都需要以一定的格式存储数据文件&#xff0c;常见的文件存储布局有行式存储、列式存储以及混合式存储三种&#xff0c;不同的类别各有其优缺点和适用的场景&#xff0c;在目前的大数据分析系统中&#xff0c;列式存储和混合式存储方案因其特殊…

mysql 数据库设计三大范式

1. 什么是设计范式 设计表的依据&#xff0c;按照范式设计出来的表&#xff0c;不会出现数据的冗余 数据库的设计范式是数据库设计所需要满足的规范&#xff0c;满足这些规范的数据库是简洁的、结构清晰的&#xff1b;反之则是乱七八糟&#xff0c;不仅会给开发人员制造麻烦&a…

大数据面试之Hive常见题目

大数据面试之Hive常见题目 1. Hive的架构 1、重点四个器&#xff1a;解释器&#xff08;SQL Parser&#xff09;、Driver&#xff1a;编译器&#xff08;Compiler&#xff09;&#xff0c;优化器&#xff08;Optimizer&#xff09;&#xff0c;执行器&#xff08;Executor&…

基于Python+Django的在线学习交流平台

在各学校的教学过程中&#xff0c;直播授课管理是一项非常重要的事情。随着计算机多媒体技术的发展和网络的普及&#xff0c;“基于网络的学习模式”正悄无声息的改变着传统的直播学习模式&#xff0c;“基于网络的直播教学平台”的研究和设计也成为教育技术领域的热点课题。采…

BEPUphysicsint定点数3D物理引擎介绍

帧同步的游戏中如果用物理引擎&#xff0c;为了保证不同设备上的结果一致,需要采用定点数来计算迭代游戏过程中的物理运算。也就是我们通常说的定点数物理引擎(确定性物理引擎)。本系列教程给大家详细的讲解如何在你的项目中内置一个确定性物理引擎。确定性物理引擎我们使用git…

es入门(中)

目录 6.Java api 实现es中的文档管理&#xff08;增删改&#xff09; 6.1 java 客户端简单获取数据 6.2结合spring-boot测试文档查询 配置环境 配置类 测试代码结构 简单的查询 对查询的请求设置参数 异步查询 6.4 结合spring-boot测试文档新增 6.5结合spring-boot…

C语言的预处理器无法先展开宏再拼接符号?可以!

背景 最近接到一个需求&#xff0c;要实现一个脚本&#xff0c;能提取.h文件里定义的所有全局变量的值&#xff0c;这些全局变量都是结构体变量&#xff0c;名字是结构体类型名加场景后缀——每个.h对应的场景都是唯一的&#xff0c;所以.h内所有变量名的后缀一致。 我的解决…

线段树详解(包含加法线段树、乘法线段树及区间根号线段树,简单易懂)

同步发表于洛谷梦回江南 这一篇文章我们将对线段树中的常规操作进行详细的讨论。 以下所提到的复杂度如无特殊说明均为时间复杂度。log⁡\loglog 的底数均为 222。 不开 long long 见祖宗&#xff01; 文章目录第一部 普通线段树一、引入二、优化方案三、懒标记&#xff08;l…

[附源码]Python计算机毕业设计电影网站系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

什么是编程的设计模式,史上最全面Java设计模式总结,看完再也不会忘记

文章目录**9.1 工厂方法模式与抽象工厂模式对比#****9.2 简单工厂模式与单例模式对比#****9.3 简单工厂模式与建造者模式对比#****10.1 装饰器模式与代理模式对比#****10.2 装饰器模式与门面模式对比#****10.3 装饰器模式与适配器模式对比#****10.4 适配器模式与代理模式…

人事管理系统--低代码课程的教学实验/实训教学 (①招聘管理)

人事管理系统是信息系统课程中最为常见的教学场景&#xff0c;对于非计算机专业的学生来说&#xff0c;如何使用低代码&#xff0c;甚至是零代码的方式搭建该系统呢&#xff1f;简道云「人事OA管理」应用包含招聘管理、人员入离职管理、考勤管理、会议室预约、物资进销存管理等…

#3文献学习总结--边缘计算资源分配与任务调度优化

文献&#xff1a;“边缘计算资源分配与任务调度优化综述 ” 1、系统模型“云-边-端” 第 1 层是物联网层&#xff0c;传感器、处理器根据应用需求感知、测量和收集原始数据&#xff0c;在本地处理大量数据或将其上传至计算节点。 第 2 层是边缘计算层&#xff0c;位于互联网边…

rollup打包vue组件

rollup安装与使用 npm i rollup -g # 全局安装 npm i rollup -D # 项目本地安装rollup配置 import vue from rollup-plugin-vue import typescript from rollup-plugin-typescript2 import postcss from rollup-plugin-postcss; import cssnano from cssnano i…