CSS 之 响应式设计 前世今生
CSS系列文章目录
- CSS 之 display 布局属性详解
- CSS 之 position 定位属性详解
- 一文搞懂flex布局 【弹性盒布局】
文章目录
- CSS系列文章目录
- 一、前言
- 二、历史上的网站布局
- 三、响应式设计之前的灵活布局
- 四、响应式设计
- 五、媒介查询
- 六、灵活网格
- 七、现代布局技术
- 7.1 多栏布局
- 7.2 伸缩盒
- 7.3 CSS 网格
- 八、响应式图像
- 九、响应式排版
- 9.1 使用视口单位实现响应式排版
- 十、视口元标签
- 十一、总结
一、前言
早年设计 Web
时,页面是以适配特定的屏幕大小为考量创建的。如果用户正在使用比设计者考虑到的更小或者更大的屏幕,那么结果从多余的滚动条,到过长的行和没有被合理利用的空间,不一而足。随着人们使用的屏幕尺寸的种类越来越多,出现了响应式网页设计的概念(responsive web design,RWD),RWD
指的是允许 Web
页面适应不同屏幕宽度因素等,进行布局和外观的调整的一系列实践。这是改变我们设计多设备网页的方式的思想,在这篇文章里,我们将会帮你理解掌握它时所需知道的主要技能。
二、历史上的网站布局
在历史上的某个时刻,设计网站时,你有两个选择:
你可以创建一个 “液态”
站点,它会拉伸以充满整个浏览器视窗;
或者是一个 “固定宽度”
站点,它有一个以像素计的固定尺寸。
这两种途径会倾向于导致它的表现只有在设计者的屏幕上才是最佳的!液态站点导致了小屏幕上的设计会挤成一团(如下所示),以及大屏幕上难以阅读的很长的行长度。
固定宽度站点的一个可能的后果是,在比站点更窄的屏幕上会出现一个水平滚动条(如下所示),在大屏幕上的设计边缘还会有许多空白。
三、响应式设计之前的灵活布局
人们开发了许多方式,尽力解决建设网站时使用液态和固定宽度的方式所带来的弊端。2004 年,Cameron Adams 写了一篇题为《Resolution dependent layout》的帖子,描述了一种可以创造适应多种屏幕分辨率的设计的方式。这种方式需要 JavaScript
来探测屏幕的分辨率,载入恰当的 CSS
。
Zoe Mickley Gillenwater 深刻影响了她的著作,在里面描述并标准化了可变站点建立的不同方式,试图在充满屏幕和完全保持固定尺寸之间找到最佳平衡。
四、响应式设计
“响应式设计” 这个词是 Ethan Marcotte 在 2010 年首度提出的,他将其描述为三种技术的混合使用。
-
第一个是液态网格,这早先已由 Gillenwater 进行探讨,可以在 Marcotte 的文章《Fluid Grids》(出版于 2009 年的《A List Apart》上)中读到。
-
第二个是液态图像的理念。通过使用相当简单的将设置max-width属性设置为100%的技术,图像可以在包含它们的列变得比图像原始尺寸窄的时候,缩放得更小,但总不会变得更大。这使得图像可以被缩放,以被放到一个灵活尺寸的列,而不是溢出出去,同时也不会在列宽于图像的时候,使图像变得太大以至于画质变得粗糙。
-
第三个关键的组件是媒体查询。媒体查询使以往 Cameron Adams 探讨过的、由 JavaScript 实现的布局类型切换,可以只使用 CSS 实现。和所有尺寸的屏幕都使用一种布局不同的是,布局是可以改变的:侧栏可以在小屏幕上重新布局,而替代用的导航栏也可以显示出来。
需要你理解的很重要的一点是响应式 Web
设计不是单独的技术,它是描述 Web
设计的一种方式、或者是一组最佳实践的一个词,它是用来建立可以响应查看内容的设备的样式的一个词。在 Marcotte’s 原来的探索中,这意味着灵活网格(使用 float
)和媒体查询,但是在这篇文章写就的几乎十年以后,Web
的响应式工作已经成为了默认做法。现代的 CSS
布局方式基本上就是响应式的,而且我们在 Web
平台上内置了新的东西,使得设计响应式站点变得容易。
这篇文章的余下部分会为你指出,在建立响应式站点的时候,你可能会用到的各式 Web
平台的特色功能。
五、媒介查询
响应式设计仅仅是因为媒介查询才新兴起来的。媒介查询第三级规范已经在 2009 年成为了候选推荐,这意味着它可视为准备好在浏览器中开始支持了。媒介查询允许我们运行一系列测试,例如用户的屏幕是否大于某个宽度或者某个分辨率,并将 CSS
选择性地适应用户的需要应用在样式化页面上。
例如,下面的媒体查询进行测试,以知晓当前的 Web
页面是否被展示为屏幕媒体(也就是说不是印刷文档),且视口至少有 800
像素宽。用于 .container
选择器的 CSS
将只会在这两件前提存在的情况下应用。
@media screen and (min-width: 800px) {.container {margin: 1em 2em;}
}
你可以在一张样式表上加入多条媒体查询,调整整个页面或者部分页面以达到适应各式屏幕尺寸的最佳效果。媒体查询,以及样式改变时的点,被叫做 断点(breakpoints)。
使用媒体查询时的一种通用方式是,为窄屏设备(例如移动设备)创建一个简单的单栏布局,然后检查是否是大些的屏幕,在你知道你有足够容纳的屏幕宽度的时候,开始采用一种多栏的布局。这经常被描述为移动优先设计。
六、灵活网格
响应式站点不只是在断点之间改变它们的布局,它们是建立在 灵活网格 上的。一个灵活网格意味着你不需要适配每个可能使用的设备尺寸,然后为其建立一个精确到像素级的适配布局。那种方式在现存有如此多种不同大小设备的前提下是不可能实现的,比如至少在台式机上,人们并不总是让他们的浏览器窗口最大化的。
使用 灵活网格,你只需要加进去一个断点,在内容看起来不齐整的时候改变设计。例如如果一行随着屏幕大小增加而增长得不可读的长,或者是一个盒子在变窄时把每行的两个单词挤到一起。
早年间进行响应式设计的时候,我们唯一的实现布局的选项是使用 float
。灵活浮动布局是这样实现的,让每个元素都有一个作为宽度的百分数,而且确保整个布局的和不会超过 100%。在他对于液态网格文章的原文中,Marcotte 详细描述了一种布局的法则,通过使用像素并把布局转化为百分数的方式设计。
target / context = result
例如如果我们的预期栏尺寸为 60
像素,而且它所在的上下文(或者容器)为 960
像素,我们在将零点二的空间移动到右边以后,用 960
去除 60
,得到我们能够使用在我们的 CSS
上的值。
.col {width: 6.25%; /* 60 / 960 = 0.0625 */
}
这种方式将会在今天整个 Web
上的许多地方上看到,而且它被我们的 Legacy layout methods一文中的布局一节中记载。可能你将会在工作中遇到使用这种方式的站点,所以有必要理解它,即使是在你不用建立一个使用浮动基础的灵活网格的情况下。
七、现代布局技术
现代布局方式,例如 多栏布局、伸缩盒 和 网格默认 是响应式的。它们都假设你在尽力创建一个可伸缩网格,而且给了你更容易这样做的方式。
7.1 多栏布局
这些布局方式中最老的一个是多个列,即当你指定一个 column-count
的时候,这意指你希望把你的内容分成多少列。浏览器之后会算出这些列的大小,这是一个随着屏幕尺寸变化的尺寸。
.container {column-count: 3;
}
如果你却去指定 column-width
的话,你是在指定一个最小宽度。浏览器会尽可能多数量地创建这一宽度的列,只要它们可以恰当地放进容器里面,然后将所有列之间的剩余空间共享出去。因而列的数量会随着空间的多少而改变。
.container {column-width: 10em;
}
7.2 伸缩盒
在伸缩盒中,初始的行为是,弹性的物件将参照容器里面的空间的大小,缩小和分布物件之间的空间。通过更改 flex-grow
和 flex-shrink
的值,你可以指示在物件遇到周围有更多或者更少的空间的情况下,你所期望的物件表现。
在下面的示例中,和布局专题的弹性盒子:弹性元素的动态尺寸中所描述的那样,使用了 flex: 1
的简写,可伸缩物件每个将会占据一份可伸缩容器中相等大小的空间。
.container {display: flex;
}.item {flex: 1;
}
7.3 CSS 网格
在 CSS
网格布局中,fr
单位许可了跨网格轨道可用空间的分布。下面的示例创建了一个有着 3 个大小为 1fr
的轨道的网格容器。这会创建三个列轨道,每个占据了容器中可用空间的一部分。你可以在使用 fr
单位的灵活网格下的学习布局网格专题了解更多和这一方式相关的信息。
.container {display: grid;grid-template-columns: 1fr 1fr 1fr;
}
八、响应式图像
最简单的处理响应式图像的方式是在 Marcotte 的早年的关于响应式设计的文章上所描述的那样。基本来说,你可以用一张有着所需最大尺寸的图像。然后缩放它。这仍然是今日所使用的一种方式,而且在大多数样式表里面,你在某些地方可以找到下面的 CSS
:
img {max-width: 100%;
}
这种方式有显然的弊端。图像有可能会显示得比它的原始尺寸小很多,以至于浪费带宽——一个移动端用户会下载几倍于他们在浏览器窗口中实际看到的大小的图像。此外,你可能不想在移动端和桌面端有相同的图像宽高比例。例如,在移动端,方形图像的表现会很好,但是在桌面端显示同样的内容则应用宽图像。或者,认识到移动端更小尺寸的图像的你也许会希望同时展示一张不同的图像,一张在小一点的屏幕上更容易理解的图像。这些东西不能简单通过缩放图像解决。
响应式图像,使用了 <picture>
元素和 <img>
srcset和sizes 特性,解决了这两个问题。你可以提供附带着“提示”(描述图像最适合的屏幕尺寸和分辨率的元数据)的多种尺寸,浏览器将会选择对设备最合适的图像,以确保用户下载尺寸适合他们使用的设备的图像。
你也可以给用于不同尺寸的图像做“艺术指导”,为不同的屏幕尺寸提供不同的图像裁切或者完全不同的图像。
九、响应式排版
在早期的工作没有考虑的一个响应式设计的元素是响应式排版的理念。本质上讲,这描述了根据屏幕真实使用范围的多少,在媒体查询的同时改变字体大小。
在本例子中,我们想讲我们的一级标题设置为 4rem
,也就是说它将会有我们的基础字体的四倍大。这真的是个很大的标题!我们只想在大些的屏幕上有这么个超大的标题,那我们先弄个小点的标题,再使用媒体查询,在我们知道用户使用至少 1200px
的屏幕的时候,拿大些的尺寸覆写它。
html {font-size: 1em;
}h1 {font-size: 2rem;
}@media (min-width: 1200px) {h1 {font-size: 4rem;}
}
9.1 使用视口单位实现响应式排版
一个有趣的方式是使用视口单位 vw
来实现响应式排版。1vw
等同于视口宽度的百分之一,即如果你用 vw
来设定字体大小的话,字体的大小将总是随视口的大小进行改变。
h1 {font-size: 6vw;
}
问题在于,当做上面的事情的时候,因为文本总是随着视口的大小改变大小,用户失去了放缩任何使用 vw
单位的文本的能力。所以你永远都不要只用 viewport
单位设定文本。
这里有一个解决方法,它使用了 calc()
,如果你将 vw
单位加到了使用固定大小(例如 em
或者 rem
)的值组,那么文本仍然是可放缩的。基本来说,是 vw
加在了放缩后的值上。
h1 {font-size: calc(1.5rem + 3vw);
}
这就是说,我们只需要指定标题的字体大小一次,而不是为移动端设定它,然后再在媒介查询中重新定义它。字体会在你增加视口大小的时候逐渐增大。
十、视口元标签
如果你看看一张响应式页面的 HTML
源代码,你通常将会在文档的 <head>
看到下面的 <meta>
标签。
<meta name="viewport" content="width=device-width,initial-scale=1" />
这个元标签告诉移动端浏览器,它们应该将视口宽度设定为设备的宽度,将文档放大到其预期大小的 100%
,在移动端以你所希望的为移动优化的大小展示文档。
为何需要这个?因为移动端浏览器倾向于在它们的视口宽度上说谎。
这个元标签的存在,是由于原来 iPhone
发布以后,人们开始在小的手机屏幕上阅览网页,而大多数站点未对移动端做优化的缘故。移动端浏览器因此会把视口宽度设为 960
像素,并以这个宽度渲染页面,结果展示的是桌面布局的缩放版本。其他的移动端浏览器(例如谷歌安卓上的)也是这么做的。用户可以在站点中放大、移动,查看他们感兴趣的那部分,但是这看起来很不舒服。如果你不幸遇到了一个没有响应式设计的网站,今天你还会看到这种情况。
麻烦的是,你的带断点和媒介查询的响应式设计不会在移动端浏览器上像预期那样工作。如果你有个窄屏布局,在 480
像素及以下的视口宽度下生效,但是视口是按 960
像素设定的,你将不会在移动端看到你的窄屏布局。通过设定 width=device-width
,你用设备的实际宽度覆写了苹果默认的 width=960px
,然后你的媒介查询就会像预期那样生效。
所以你应该在你的文档头部总是包含上面那行 HTML
。
和视口元标签一起,你可以使用另外几个设定,但大体说来,上面那行就是你想要使用的。
- initial-scale:设定了页面的初始缩放,我们设定为 1。
- height:特别为视口设定一个高度。
- minimum-scale:设定最小缩放级别。
- maximum-scale:设定最大缩放级别。
- user-scalable:如果设为no的话阻止缩放。
你应该避免使用 minimum-scale
、maximum-scale
,尤其是将 user-scalable
设为 no
。用户应该有权力尽可能大或小地进行缩放,阻止这种做法会引起访问性问题。
十一、总结
响应式设计 指的是一个响应浏览环境的网页或者应用设计。它涵盖了很多 CSS
和 HTML
的功能和技术,现在基本上就是我们默认建设网站的方式。想一下你在手机上访问的网站,遇到一个缩放的桌面版网站,或者你需要向侧边滚动来寻找东西的网站可能是相当不寻常的。这是因为 Web 已经迁移到了这种响应式设计的方式上。
在这些课里学到的布局方式的帮助下,实现响应式设计也变得愈加简单。如果你今天新近了解 Web
开发,那么你与响应式设计早期相比,手边有多得多的工具。因而,你有必要检查下你所引用的任何材料的年纪。尽管历史上的文章仍然有用,现代的 CSS
和 HTML
的使用让创建一个优雅且实用的设计变得远远更加容易,且无论你的访客使用什么设备浏览网站。
相关文章:
CSS 之 响应式设计 前世今生
CSS系列文章目录 CSS 之 display 布局属性详解 CSS 之 position 定位属性详解一文搞懂flex布局 【弹性盒布局】 文章目录 CSS系列文章目录一、前言二、历史上的网站布局三、响应式设计之前的灵活布局四、响应式设计五、媒介查询六、灵活网格七、现代布局技术7.1 多栏布局7.2 伸…...
前端,npm install安装依赖卡在sill idealTree buildDeps(设置淘宝依赖)
输入npm i后,一直卡在sill idealTree buildDeps,一动不动 cnpm可以安装成功,但使用cnpm不会生成package-lock.json文件 设置淘宝依赖,依然卡住,挂梯子也不行 解决方法: // 取消ssl验证 set strict-ssl …...
【Rust自学】9.2. Result枚举与可恢复的错误 Pt.1:match、expect和unwrap处理错误
喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 9.2.1. Result枚举 通常情况下,错误都没有严重到需要停止整个程序的地步。某个函数之所以运行失败或者是遇到错误通常是由一些…...
[241231] CachyOS 2024 年终总结:性能飞跃与社区繁荣 | ScyllaDB 宣布转向开源可用许可证
目录 CachyOS 2024 年终总结:性能飞跃与社区繁荣ScyllaDB 宣布转向开源可用许可证 CachyOS 2024 年终总结:性能飞跃与社区繁荣 CachyOS 2024 年的最后一个版本 (也是第 13 个版本) 已经发布,同时也迎来了辞旧迎新之际。让我们一起回顾 Cachy…...
9.系统学习-卷积神经网络
9.系统学习-卷积神经网络 简介输入层卷积层感受野池化层全连接层代码实现 简介 卷积神经网络是一种用来处理局部和整体相关性的计算网络结构,被应用在图像识别、自然语言处理甚至是语音识别领域,因为图像数据具有显著的局部与整体关系,其在图…...
java并发之AQS
一、简介 AQS,全称:AbstractQueuedSynchronizer,是一个JDK提供的用于构建锁、同步器等线程协作工具类的框架,内部维护FIFO双向队列(双向链表实现)。 AQS重要属性: // 表示同步状态。它既可以表…...
Synthesia技术浅析(一)
Synthesia 是一款利用人工智能技术生成视频内容的产品,其中变分自编码器(Variational Autoencoder, VAE)技术在视频生成过程中起到了关键作用。 1. 变分自编码器(VAE)概述 变分自编码器(VAE)是…...
SQL偏移类窗口函数—— LAG()、LEAD()用法详解
SQL偏移类窗口函数:LAG() 和 LEAD() 用法详解 在 SQL 中,偏移类窗口函数 LAG() 和 LEAD() 用于访问当前行的前几行或后几行的值。 1. LAG() 函数 LAG() 函数返回当前行的前几行的数据。 LAG(Expression, OffSetValue, DefaultVar) OVER (PARTITION BY …...
PHP语言的计算机基础
计算机基础与PHP语言入门 在当今信息技术高速发展的时代,计算机已经成为我们日常生活中不可或缺的重要工具。学习计算机基础知识,不仅能增强我们对信息技术的理解,还会为我们后续学习编程语言打下良好的基础。本文将以PHP语言为切入点&#…...
39. 解压报文
题目描述 为了提升数据传输的效率,会对传输的报文进行压缩处理输入一个压缩后的报文,请返回它解压后的原始报文.压缩规则:n[str],表示方括号内部的str正好重复n次。注意n为正整数(0<n<100),str只包含小写英文字母࿰…...
SpringBoot日志快速集成详解-生产实战
SpringBoot日志快速集成详解 1. 添加依赖2. 创建 logback-spring.xml 配置文件示例 logback-spring.xml 配置: 3. 启用 Spring Boot 自动配置4. 配置 Spring Boot 启动日志级别5. 运行与验证 博文专注于最快速的实战,没有那么多逼逼叨叨的理论࿰…...
基于 Node.js 的 ORM(对象关系映射)工具——Sequelize介绍与使用,并举案例分析
便捷性介绍 支持多种数据库,包括 PostgreSQL、MySQL、MariaDB、SQLite 和 Microsoft SQL Server。Sequelize 提供了丰富的功能,帮助开发者用 JavaScript(或 TypeScript)代码操作数据库,而无需直接书写 SQL 语句。 Se…...
电子应用设计方案85:智能 AI门前柜系统设计
智能 AI 门前柜系统设计 一、引言 智能 AI 门前柜系统旨在提供便捷、安全和智能的物品存储与管理解决方案,适用于家庭、公寓或办公场所的入口区域。 二、系统概述 1. 系统目标 - 实现无接触式物品存取,减少交叉感染风险。 - 具备智能识别和分类功能&am…...
ts是什么、tsc是什么、tsx是什么、jsx是什么、scss是什么
一、TS (TypeScript): TypeScript 是一种由微软开发的开源编程语言,它是 JavaScript 的一个超集,增加了类型系统和对ES6及以后版本新特性的支持。TypeScript 旨在解决 JavaScript 开发中的可维护性、可扩展性和大型项目中的复杂性问题。它允许开发者在编…...
【虚拟机】VMware 16图文安装和配置 AlmaLinux OS 9.5 教程
准备工作 下载AlmaLinux ISO文件:从AlmaLinux官方网站(https://almalinux.org/)下载最新版本的ISO文件。 安装VMware Workstation:确保您的计算机上已安装VMware Workstation。(注:我这边使用的是VMware16…...
使用MySQL SLES存储库安装MYSQL
MySQL SLES存储库提供RPM包,用于在SUSE EnterpriseLinuxServer上安装和管理MySQL服务器、客户端和其他组件。 添加MySQLSLES存储库 为系统的存储库列表添加或更新官方MySQLSLES存储库: 配置文件名的开头部分,如mysql84,描述了为…...
30分钟学会HTML
HTML 基本语法 HTML(HyperText Markup Language)是构成网页内容的基础。它使用一系列的标签来描述网页的结构,包括文本、图片、链接等元素。浏览器会解析这些标签并渲染成我们看到的网页。 在线体验一下 CodePen (在线 HTML 编辑器)。 千万不…...
vue——滑块验证
1. 介绍 1.1 简介 基于滑动式的验证码,免于字母验证码的繁琐输入 用于网页注册或者登录 1.2 来源说明 vue使用滑块验证功能,是基于vue-monoplasty-slide-verify这样的一个开源项目,进行实现的,这是这个开源项目的网址传送阵&#…...
编程入门(2)-2024年 RAD Studio version 12发布综述
随着2024年即将画上句号,我想借此机会回顾一下我们在这一年中发布的一些Embarcadero产品、行业趋势,并感谢我们尊贵的客户们对我们的产品一如既往的支持。这一年对我们来说充满了激动人心的变化和发展,我们非常高兴能与您一起踏上这段旅程。 …...
2025年1月4日蜻蜓q旗舰版st完整开源·包含前后端所有源文件·开源可商用可二开·优雅草科技·优雅草kir|优雅草星星|优雅草银满|优雅草undefined
2025年1月4日蜻蜓q旗舰版st完整开源包含前后端所有源文件开源可商用可二开优雅草科技优雅草kir|优雅草星星|优雅草银满|优雅草undefined 产品介绍: 本产品主要贡献者优雅草科技优雅草kir|优雅草星星|优雅草银满|优雅草undefined-青史留名,时光如川浪淘…...
米哈游可切换角色背景动态壁纸
米哈游可切换角色背景动态壁纸 0. 视频 B站演示: 米哈游可切换角色背景动态壁纸-wallpaper 1. 基本信息 作者: 啊是特嗷桃系列: 复刻系列 (衍生 wallpaper壁纸引擎 用)网站: 网页版在线预览 (没有搞大小适配, 建议横屏看; 这个不能切角色, 只能在wallpaper中切)仓库: GitHub…...
框架Tensorflow2
深度学习框架之Tensorflow2 Tensorflow2版本的介绍 Tensorflow(简称tf)是深度学习框架,大大简化了建模的方法和步骤,把Keras Api当作核心,使用非常简单,跨平台,集成各种现成模型,eager mode使得调试起来不…...
急需升级,D-Link 路由器漏洞被僵尸网络广泛用于 DDoS 攻击
僵尸网络活动增加 :新的“FICORA”和“CAPSAICIN”僵尸网络(Mirai 和 Kaiten 的变体)的活动激增。 被利用的漏洞 :攻击者利用已知的 D-Link 路由器漏洞(例如 CVE-2015-2051、CVE-2024-33112)来执行恶意命…...
银行大数据平台管理系统的设计与实现
标题:银行大数据平台管理系统的设计与实现 内容:1.摘要 摘要:本文介绍了银行大数据平台管理系统的设计与实现。该系统旨在解决银行数据管理中的数据量大、数据类型多、数据处理复杂等问题。通过采用大数据技术,如 Hadoop、Spark 等,实现了数…...
leetcode 732. 我的日程安排表 III
题目:732. 我的日程安排表 III - 力扣(LeetCode) 这个数据规模,暴力就够了 struct Book {int begin;int end;Book(int b, int e) {begin b;end e;} }; class MyCalendarThree { public:MyCalendarThree() {}int book(int star…...
公共数据授权运营系统建设手册(附下载)
在全球范围内,许多国家和地区已经开始探索公共数据授权运营的路径和模式。通过建立公共数据平台,推动数据的开放共享,促进数据的创新应用,不仅能够提高政府决策的科学性和公共服务的效率,还能够激发市场活力࿰…...
现代光学基础6
总结自老师的ppt yt6 半导体激光器开卷考试学习资料 目录 半导体激光器边发射半导体激光器垂直腔面发射激光器(VCSEL)激光产生条件(激光原理)半导体激光器的水容器模型有源半导体区域类型和载流子注入发光二极管(L…...
利用ChatGPT API构建智能应用的最佳实践
随着自然语言处理(NLP)技术的飞速发展,基于大型语言模型(LLM)的应用程序逐渐成为开发者的关注焦点。OpenAI 提供的 ChatGPT API 是当前流行的一项服务,开发者可以利用它来构建多种智能化应用,如…...
源代码编译安装X11及相关库、vim,配置vim(1)
一、目录结构 如下。 所有X11及相关库装到mybuild,源代码下载到src下,解压,进入,编译安装。编译时指定--prefix到相同的目录,即上图中mybuild。 ./configure --prefixpwd/../../mybuild [CFLAGS"-I/path/to/X11…...
Java.函数-acwing
题目一: n的阶乘 804. n的阶乘 - AcWing题库 代码 import java.util.Scanner;public class Main {private static int fact(int n) {int res 1;for(int i 1; i < n; i ) res * i;return res;}public static void main(String[] args) {Scanner sc new Scann…...
文档 | Rstudio下的轻量级单页面markdown阅读器 markdownReader
需求:在写R数据分析项目的时候,代码及结果的关键变化怎么记录下来?最好git能很容易的跟踪版本变化。 markdown 是最理想的选择,本文给出一种Rstuidio下的轻量级md阅读器实现:markdownReader。书写md还是在Rstudio。更…...
termux配置nginx+php
只能以默认用户u0_axx运行,修改用户会报错An error occurred.或者file no found 安装nginx pkg install nginx安装php-fpm pkg install nginx修改nginx配置文件, nano ../usr/etc/nginx/nginx.conf#端口必须设置在1024以上(1024以下需要root,但php-fpm不能以root用户运行,n…...
【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 3:算法实现
目录 1 三种多头编码(MHE)实现1.1 多头乘积(MHP)1.2 多头级联(MHC)1.3 多头采样(MHS)1.4 标签分解策略 论文:Multi-Head Encoding for Extreme Label Classification 作者…...
Spring Boot自动装配代码详解
概述 Spring Boot自动装配是其核心特性之一,它能够根据项目中添加的依赖自动配置Spring应用程序。通过自动装配,开发人员可以减少大量的配置工作,快速搭建起一个可用的Spring应用。 关键组件和注解 SpringBootApplication注解 这是Spring Bo…...
H7-TOOL固件2.27发布,新增加40多款芯片脱机烧录,含多款车轨芯片,发布LUA API手册,CAN助手增加负载率,错误状态信息检测
H7-TOOL详细介绍(含操作手册):H7-TOOL开发工具,1拖4/16脱机烧录,高速DAPLINK,RTOS Trace,CAN/串口助手, 示波器, RTT等,支持WiFi,以太网,高速USB和手持 - H7-…...
Socket套接字
Socket工作原理。服务器端通过bind绑定socket,一直监听端口。 当客户端通过conncet方法连接指定计算机的端口,并使用send()向socket中写入信息。 生成套接字,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或…...
《学校一卡通管理系统》数据库MySQL的设计与实现
引言:学校一卡通管理系统旨在为学校提供一个高效的数字化管理平台,集中管理学生和教职工的账户、充值、消费、查询等日常事务。通过该系统,学生可以便捷地进行充值、消费及查看余额,管理员则可以高效地管理用户账户、充值记录、消费记录等数据。系统采用MySQL数据库,通过视…...
windows C#-接口中的索引器
可以在接口上声明索引器。 接口索引器的访问器与类索引器的访问器有所不同,差异如下: 接口访问器不使用修饰符。接口访问器通常没有正文。 访问器的用途是指示索引器为读写、只读还是只写。 可以为接口中定义的索引器提供实现,但这种情况非…...
element-plus大版本一样,但是小版本不一样导致页面出bug
npm 的版本 node的版本 npm的源这些都一样,但是效果不一样 发现是element的包版本不一样导致的 2.9.1与2.8.1的源是不一样的,导致页面出bug;...
三甲医院等级评审八维数据分析应用(五)--数据集成与共享篇
一、引言 1.1 研究背景与意义 随着医疗卫生体制改革的不断深化以及信息技术的飞速发展,三甲医院评审作为衡量医院综合实力与服务水平的重要标准,对数据集成与共享提出了更为严苛的要求。在传统医疗模式下,医院内部各业务系统往往各自为政,形成诸多“信息孤岛”,使得数据…...
关于数组的一些应用--------数组作函数的返回值(斐波那契数列数列的实现)
数组在作为函数的返回值,一个很经典的例子就是获取斐波那契数列的前N项 代码思路: 设计思路 输入: 输入一个整数 n,表示要生成斐波那契数列的长度。 输出: 输出一个长度为 n 的整数数组,其中每个元素为斐…...
PWN的知识之栈溢出
栈溢出 什么是栈溢出? 栈溢出(Stack Overflow)是指在程序运行过程中,向栈中存放的数据量超过了栈的最大容量,从而导致程序出现异常行为的情况。可以比作一个箱子原本只能容纳一定数量的物品,如果强行往里…...
智能客户服务:科技如何重塑客户服务体验
在数字化时代,客户对于服务的需求和期望在不断演变。传统的客户服务模式已经难以满足现代消费者对于即时性、个性化和高效性的追求。随着人工智能、大数据、云计算等先进技术的蓬勃发展,智能客户服务应运而生,不仅重塑了客户服务的体验&#…...
HarmonyOS鸿蒙开发 应用开发常见问题总结(持续更新...)
HarmonyOS鸿蒙开发 应用开发常见问题总结(持续更新…) 在学习鸿蒙开发过程中,也是遇到了不少问题,在代码编写过程中,遇到了一些问题,由于是学习阶段,需要时刻记录一下。 If a component attribute supports local in…...
数据结构-单链表(C语言版)
创建一个链表,实现:1.以头结点开始插入数据(头插法)2.以尾节点开始插入数据(尾插法)3.输出链表所存入数据 4.指定位置插入数据 5.指定位置删除数据 #include<stdio.h> #include<stdlib.h> type…...
View Shadcn UI 正式版本 v2024.5.4 发布
亲爱的开发者社区: 我们很高兴地宣布 View Shadcn UI 的正式版本 v2024.5.4 已于 2024 年 12 月 30 日正式发布!View Shadcn UI 是一个基于 Tailwind CSS 构建的 Vue3 组件库,旨在为 Vue3 开发者提供优雅、可定制且易用的 UI 组件。 &#…...
RocketMQ使用场景问题
1.消息丢失 有这么一个场景,就是订单支付完成之后,订单系统会进行发送消息给RocketMQ集群,下游会有积分系统进行监听这个消息,进行消费然后给用户发放积分。在下面的这个场景中,通过查询日志发现了订单系统发送订单支付…...
医院机房运维:所有IT资源运行状态同一平台实时呈现
在当今数字化医疗高速发展的时代,医院的信息化系统已然成为保障医疗服务顺畅开展、守护患者生命健康的关键基础设施。以郑州人民医院为例,随着医疗业务不断拓展,其背后支撑的机房运维面临着诸多棘手难题。 传统的分散式人工维护模式ÿ…...
windows远程桌面无法连接,报错:“由于没有远程桌面授权服务器可以提供许可证,远程会话被中断。请跟服务器管理员联系”
windows远程桌面无法连接,报错:“由于没有远程桌面授权服务器可以提供许可证,远程会话被中断。请跟服务器管理员联系” 问题描述:解决方法:无法删除条目解决如下:正常激活详见:[RDS远程服务激活…...
Spring Boot 各种事务操作实战(自动回滚、手动回滚、部分回滚)
概念 事务定义 事务,就是一组操作数据库的动作集合。事务是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行,我们称该事务被提交。…...