01|字母x CSS世界中隐匿的举足轻重的角色
因为涉及到排班或者说对齐的,其实都是离不开一个基本的概念:baseline(基线 )
line-height行高的定义就是两基线的间距,vertical-align的默认值也是基线(字母x的下边缘 )!
01|字母X与CSS中的x-height
其中x-height是CSS中的一个概念,表示小写字母x的高度,其术语的意思表示为 baseline和midline之间的距离!
其中在所谓的排版中还有另外一些概念,如下所示:
ascender height 上行线高度
cap height 大写字母高度
median 中线
descender 下行线高度
其中CSS中有些概念和这个所谓的x-height还是有关系的! 典型的代表就是 vertical-align:middle;
middle表示中间的意思,其实和上面介绍的median是没有关系的, middle表示的是 基线往上1/2 x-height的高度
我们的话可以立即为x交叉点的位置!
但是微软雅黑相较于别的字体来看是字符下沉比较厉害的字体,一年春vertical-align:middle; 不是相对容器中分线对齐的了!
其实这又说到了 因为CSS世界中的主题是文字,内容元素对齐是相对于文字对齐的,而并非外部的块级容器!
02|字母x与CSS中的ex
ex其实就是IE6都老早支持的ex单位,其实也是一个CSS中的一个相对单位,指的就是小写x的高度! 也就是所谓的 x-height!
其实所谓的em,px还是受字体等CSS属性影响较大! 由于字母x受字体影响比较大,不稳定,因此ex也不适合来限定元素的尺寸!
但是他的应用场景体现在 不受字体和字号影响的内联元素垂直居中对齐!
我们设置垂直居中的时候 就可以借助这个ex来进行垂直居中!
预览请见:https://demo.cssworld.cn/5/1-1.php
因为不管字体怎么变换 内联元素都是按照文字基线对齐的,
02|内联元素的基石line-height
div高度是由行高决定的并非文字,通过p114中的案例就可以很好地说明了!
并对于纯非替换元素的内联元素,可视高度完全有line-height决定!
那么如果说替换元素或者说是块级元素那么对应的line-height其中有扮演着什么角色呢?
其中就需要很好的理解所谓的 行距和半行距 的概念了!
当前文字的上方和下方的间距都是半间距! 半间距仅仅是行距高度的一半!
其实所谓的 行距=行高-字体盒子 || 行距=(line-height )-(font-size )
01|为什么line-height可以让内联元素"垂直居中 "
我们一般流传着 高度和行高一致 可以让单行文字垂直居中 !
其实这种说法不严谨,误区二,其实行高控制不仅仅适用于单行,其实多行也是可以的!
详情见p119
那么为什么说垂直居中说法不严谨呢? 其实详细通过测量会发现 还是会发现细微差别的! 其实和line-height无关,而是与vertical-align相关的!
02|line-height的好朋友vertical-align
为什么说line-height的好朋友是vertical-align呢? 因为凡事line-height起作用的地方vertical-align也一定的起了作用,但是大部分默默地起了作用 只是我们不知道而已!
其实可以通过一个小的案例体现出来:
文字
通过这段代码,看看具体的行高为多少?
可能有些人看到了会认为是32px,其实没有设定height属性,所以高度就有line-height来确定,因此这里明摆着的高度就是为32px,其实事实却不是如此,其实实际上要比32px要大上几像素!(和对应的字体相关 )
实际的效果通过鼠标选中 发现对应的高度不为line-height的高度32px!
其实所谓的box的高度不等于line-height,之所以对应的行高不等于对应的32px就是因为line-height的"朋友 "搞的鬼!
03|vertical-align家族基本认识
抛开对应的inherit这类全局属性不谈的话,可以将对应的vertical-align的属性值分为4类:
线类: baseline top middle bottom
文本类: text-top text-bottom
上标下标类: sub,super
数值百分比类: 20px 2em 20%
其实所谓的数值百分比 其实应该分为 数值类 和对应的 百分比类 因为他们之间有不同的共性
具有相同的渲染规则 根据计算值的不同 相对于基线往上或者是往下偏移!
并且默认的对齐方式 是按照基线对齐,因此如果如果说对应的vertical-align的值为正数的话 那么则向上偏移 如果为负数的话 则向下偏移 也就可以验证对应的baseline其实是对应着vertical-align的默认值为0!
对应的vertical-align:middle也不是百分之百的垂直居中的,其实还是有些差别的 并且对应的差别也是由于这个字体和字号所决定的!
并且在CSS世界中,凡是百分比的值均是需要一个相对计算的值的,比如说margin和padding的话 是相对于宽度计算的,line-height是相对于font-size计算的,而这里的vertical-align属性的百分比值则是相对于line-height的计算值计算的!
01|vertical align作用的前提
其实vertical align作用的前提就是:只能够应用于内联元素以及display值为table-cell的元素!
也就是说了 只能作用于 inline,inline-block,inline-table或者说table-cell的元素上面!
当然有些属性设置会改变元素的display的值的! 就比如说 浮动或者说绝对定位 会导致元素变成块级元素!
有人说table-cell会无视行高,其实并不是这样的,而是对应的vertical-align起作用的是table-cell元素自身!
02|vertical-align和line-height之间的关系
其实vertical-align和line-height之间的关系比较明确,就是"朋友关系",因为最明显的就是vertical-align计算的,但是表面所见的这点关系实际上只是冰山一角!
之前介绍到的设定了行高和对应的字号大小,之后的话呢,高度是否等于对应的行高,最后的结果却不是我们所设定的行高!
其主要原因是因为字号的印象,因为文字全部是按照基线对齐,因此当两个字号不同的蚊子在一起的时候,彼此会发生上下位移,如果位移距离足够大的话,就会超过行高的限制!
其实间隙产生的三大元凶便是:
幽灵空白节点
line-height
vertical-align
为了更好地理解,我们将在幽灵节点的位置放置字母x替代 幽灵空白节点!
如何更好地解决这个问题:
图片块状化
容器的line-height足够小
容器的font-size足够小
图片设置vertical-align属性值!
03|深入理解vertical-align线性类属性值
inline-block与baseline,vertical-align的属性的默认值baseline在文本之类的内联元素那里就是字符x的下边缘,对于替换元素则是替换元素的下边缘但是如果说是inlineblock元素的话规则则要复杂一些了:
一个inline-block元素如果说里面没有内联元素的话,或者overflow不是visible则该元素的基线就是其margin底边缘;否则其基线里面最后一行内联元素的基线!
这里的话,分享一下总结的一套基于20px图标对齐的处理技巧,该技巧有以下3个要点:
图标高度和当前行高都为20px 将图标原先拓展成统一规格! 可以节约大量CSS以及对每一个图标对其进行不同处理的开发版本
图标标签里面永远有字符 这个可以借助对应的:before和:after伪元素生成一个空格字符串轻松搞定!
图标CSS不使用overflow:hidden保证肌纤维里面字符的基线,但是要让里面潜在的字符不可见!
04|了解vertical-align:top/bottom
基本表现类似,只是一个"上"一个"下"因此和在一起讲
定义具体如下:
元素底部或者说当前行框盒子的顶部对齐
table-cell 元素底部padding边缘和表格行的顶部对齐
如果是内联元素,则和这一行高度最高的内联元素的顶部对齐
如果说display计算值是table-cell的元素的话,我们不妨脑补成"
" 元素 则和' '元素上边缘对齐!
其实bottom的话,和top正好相反!
并且需要注意的是,内联元素的上下边缘对齐的这个"边缘 "是当前"行框盒子 "的上下边缘,并不是块状容器的上下边缘!
其实在该属性中的top和bottom值可以说是最容易理解的了vertical-align属性值了,并且对应的表现也相当的稳定! 不会出现难以理解的现象! 常常在实际开发的过程中用到!
05|vertical-align:middle与近似垂直居中
其实在我们日常开发中的line-height和对应的vertical-align所实现的垂直居中,其实都是"近似垂直居中 "! 原因与vertical-align:middle的定义相关!
内联元素:元素的垂直中心点和行框盒子基线往上1/2 x-height处对齐
table-cell元素:单元格填充盒子相对于外面的表格行居中对齐!
基本上所有的字体当中,字符x的位置都是偏下一点儿的,并且是字号越大偏移越明显!
因此导致的vertical-align:middle实现的都是"近似垂直居中! "
其实如果说要实现真正意义上的垂直居中的话,那么需要将X的位置在容器垂直方向的正中间即可!
通常的做法是通过font-size:0;
根据line-height的半行间距上下等分原则,其实这个点就在整个容器的垂直中心位置!
但是我们在日常开发的过程中会发现,font-size的值可能在12px和在14px之间的! 虽然说效果是 "近似垂直居中 "但是还是比较难察觉出其中细微的差距的! 因此是否需要实现真正意义上的垂直居中,还需要不断的权衡!
06|深入理解vertical-align文本类属性值
其实文本类属性值就是text-top和text-bottom,其中具体的定义如下:
简单介绍所谓的内容区域:FireFox/IE浏览器文本选中的背景区域,默认状态下的內联文本的背景色区域!
对应的"父级内容区域 "其实也就是父级元素当前font-size和font-family下应有的内容区域 的大小!
定义可以理解为假设元素后面有一个和父元素font-size,font-family一模一样的文字内容,则vertical-align:text-top;标识元素和这个文字的内容区域的上边缘对齐!
其实讲到这里可以通过预览发现其中的表现在哪里?
预览请见:https://demo.cssworld.cn/5/3-9.php
看到了对应的区别之后呢,来讲讲以下几个明显的优势:
文本类属性值的垂直对齐与左右文字大小和高度都没有关系,线性类属性的定位都会受到兄弟内联元素的影响!
文本类属性值的垂直对齐可以像素级精确控制,如果是线性雷属性值中的基线和对应的line-height都是无法精确控制垂直居中对齐的! 图文对齐可以控制父元素的font-size 如果是文字对齐可以改变文字的line-height 精确控制对其位置!
其实也从侧面说明了问题,就是CSS设计之初的初衷可能非常的简单,但是结果呢可能却满天飞! 有些属性值应该有大成,实际却无人问津 ! (vertical-align中的文本类属性的属性值就是之一! )
其中主要的原因如下:
使用场景缺乏 当前的CSS重构主要以"精致布局 "为主,对齐文本的场景相比旧时代要少很多!
文本类垂直对齐理解成本高 一般人可能会用margin定位或者说relative,资深一点可能会用vertical-align数值的方式进行调整,但是呢对应的文本类属性值却很少用,"难以理解 " 不方便!
内容区域不直观并且内容区域的"易变" 现在实际上对外的项目都要求 精确布局并且像素级还原, 但是内容区域本身默认是看不见的, 并且 内容区域大小是默认和字体font-family相关的,如果说在不同的平台上面运行的话,现实是不同的,内容区域的不同会导致布局对齐的位置也不同,产生了对应的“不兼容 ”,如果说对视觉要求较高的话,该问题就比较严重了!
这样一来 文本类属性在理论上面强大,但是如果说应用到实际层面开发中的话使用价值却非常有限!
07|简单了解vertical-align上标下标类属性值
在vertical-align下标类属性值指的就是sub和super两个值!对应的就是下上标!
在HTML中有
和
两种标签,语义上其实和我们的sub和super其实是一致的!也是上下标的关系!
其实他们两对不一般啊,sup标签默认的vertical-align属性值是vertical-align就是super,sub对应的也就是sub!
ProbeDream123 //其实就是 ProbeDream123 其中的123在ProbeDream右上角!
ProbeDream456 //其实也就是ProbeDream456 其中的456在ProbeDream左下角!
基本上所谓的vertical-align上下标属性值的实际应用价值也就只有这么点了! 通过下面的定义就知道了:
vertical-align:super; 提高盒子的基线到父级合适的上标基线位置!
vertical-align:sub; 提高盒子的基线到父级合适的下标基线位置!
其中在定义中的合适的意思就显得有点模棱两可了,就非常让人蛮茫然!与此同时,我们还要注意,vertical-align上下标属性值并不会改变对应元素的文字大小 ,更不要被 sub和sup标签给误导了! 因为这两个HTML标签的默认的font-size为smaller!
算是对之前内容的一个必要的总结,对于内联元素,有一个"幽灵空白节点 "和"无处不在的vertical-align属性 "
虽然说同属性线性雷属性值,但是top/bottom和baseline/middle却是完全不同的两个帮派,前者是看边缘和看盒子,但是后者是和字符x打交道!
并且与此同时还需要了解内联盒模型,不同属性值定义完全不同,且很多属性table-cell元素有着不同的定义,同时最终表现与字符x,line-height,font-size,font-family属性密切相关! 需要对这些属性有比较深入的了解!
在本文中示例的展示都是单属性值和默认值baseline如何作用的,但是实际开发的时候会经常出现两个内联元素同时设置baseline意外属性值的情况,但是实际上 , vertical-align个类属性值并不会存在互相冲突的情况!但是某个vertical-align的属性值确实会影响某个元素的表现,但是并不是直接的,因此我们在分析复杂场景的时候,仅需要套用定义分析当前的vertical-align值的作用就行了!
基于vertical-align属性的水平垂直居中的弹框!
预览请见:https://demo.cssworld.cn/5/3-10.php
其中相较于传统的JavaScript精确计算弹框的位置,有以下优点:
1.节省了很多无谓的JavaScript代码,并且不需要浏览器进行热size事件之类的处理,弹框内容动态变化的时候,无需重新定位!
2.性能更快,喧嚷速度更快,浏览器内置CSS的即时渲染器比JavaScript处理的更好!
3.可以非常灵活控制垂直居中的比例
4.容器设置了overflow:auto可以实现弹框高度超过一屏是依然能够看见屏幕外的内容,传统实现方法则比较尴尬!
你可能感兴趣的:(05|内联元素与流)
【新能源集成热管理系统的开发与优化】
新能源汽车--三电老K
研发测试 汽车 学习方法
新能源集成热管理系统的开发与优化涉及多阶段的试验、标定和策略调整,需结合实验室仿真、环境仓测试及实车道路验证,以应对高低温、极端气候等复杂工况。以下是具体实施方法:一、环境仓试验室测试系统标定与基础验证模型搭建:通过AMESim等仿真工具建立机-电-热耦合模型,涵盖电池、电机、空调等子系统,分析高温工况下各部件能耗占比及整车续航表现。参数标定:在环境仓中模拟极端温度(如38℃高温或-30℃低温),
【C#】Task.Delay与Thread.Sleep
我不是程序猿儿
C# c# 开发语言
Task.Delay和Thread.Sleep都是用来使程序暂停一段时间,但它们有一些关键的区别,特别是在多线程和异步编程的上下文中。1.Thread.Sleep:阻塞当前线程Thread.Sleep是同步操作,它会让当前线程暂停执行,直到指定的时间过去。它会阻塞当前线程,导致线程无法继续执行任何代码,直到休眠时间结束。这意味着如果你在UI线程中使用Thread.Sleep,会导致UI卡顿,用户无
c#:使用串口通讯实现数据的发送和接收
妮妮学代码
c# 串口通讯 c# 开发语言
串口通讯(SerialCommunication)是一种常见的硬件设备与计算机之间的数据传输方式,广泛应用于工业控制、嵌入式系统、传感器数据采集等领域。本文将详细介绍如何使用C#实现基于串口通讯的数据发送和接收,并结合代码示例解析其实现过程。1.概述串口通讯的核心是System.IO.Ports.SerialPort类,它封装了串口操作的底层细节,提供了简单易用的接口。以下是串口通讯的基本流程:1
C#:使用UDP协议实现数据的发送和接收
妮妮学代码
c# UDP c# udp
UDP(UserDatagramProtocol)是一种无连接的、轻量级的传输协议,适用于对实时性要求较高的应用场景,如视频流、在线游戏等。与TCP不同,UDP不保证数据的可靠传输,但其传输效率更高。本文将详细介绍如何使用C#实现基于UDP协议的数据发送和接收,并结合代码示例解析其实现过程。1.概述UDP通讯的核心是UdpClient类,它封装了UDP协议的底层操作,提供了简单易用的接口。以下是U
什么是联盟营销?2025新手怎么入局联盟营销?
跨境知识搬运工
facebook 大数据
联盟营销为商家和营销人员提供了一个低成本、高效益的合作平台,同时也让消费者能够享受更多的优惠和产品推荐。那么,什么是联盟营销?如何入局联盟营销,尤其是对于新手来说,又该如何开始这项业务?本文将详细介绍这些问题,并帮助你了解如何顺利入局联盟营销。一、什么是联盟营销?联盟营销是一种基于成果的合作营销模式。在这种模式下,商家与联盟营销者(即“推广者”或“发布者”)合作,推广其产品或服务。联盟营销者通过推
什么是联盟营销?2025新手怎么入局联盟营销?
纯干苹果派
人工智能 大数据
联盟营销为商家和营销人员提供了一个低成本、高效益的合作平台,同时也让消费者能够享受更多的优惠和产品推荐。那么,什么是联盟营销?如何入局联盟营销,尤其是对于新手来说,又该如何开始这项业务?本文将详细介绍这些问题,并帮助你了解如何顺利入局联盟营销。一、什么是联盟营销?联盟营销是一种基于成果的合作营销模式。在这种模式下,商家与联盟营销者(即“推广者”或“发布者”)合作,推广其产品或服务。联盟营销者通过推
JDK8 Stream 数据流效率分析,Java开发你需要了解的那些事
气质大叔
程序员 后端 面试 java
此外还有一系列特化流,如IntStream,LongStream,DoubleStream等),Java8引入的的Stream主要用于取代部分Collection的操作,每个流代表一个值序列,流提供一系列常用的聚集操作,可以便捷的在它上面进行各种运算。集合类库也提供了便捷的方式使我们可以以操作流的方式使用集合、数组以及其它数据结构;作为阅读福利,小编也整理了一些Java学习笔记(包含面试真题+脑图
「Python数据分析」Pandas基础,筛选数据利器:布尔索引
奕澄羽邦
python 数据分析 pandas
我们在处理数据的时候,数据筛选是一个重要的过程。利用布尔索引,我们可以选择需要的数据区间。布尔索引,是利用各种不等式,以及与或非操作,来对数据区间进行选择。在pandas中,与操作,对应的是&这个符号,表示选取两个数据集重合的部分。或操作,对应的是|这个符号,表示选择两个数据集中,只要在一个数据集中出现的部分。非操作,对应的是~这个符号,表示选取一个数据集中,相反的部分。我们下面通过具体的例子,来
STM32 SPI总线驱动CH376T实现U盘/TF卡读写全解析—SPI通信、命令集与文件操作(下) | 零基础入门STM32第七十五步
触角01010001
STM32入门教程(100步) stm32 驱动开发 单片机 嵌入式硬件 物联网
主题内容教学目的/扩展视频CH376芯片重点课程电路原理,跳线设置,切换U盘和TF卡。手册分析。驱动程序。调用常用函数。会调用现有函数操作U盘即可。师从洋桃电子,杜洋老师文章目录1.引言2.硬件连接3.驱动程序分析3.1SPI通信机制4.CH376命令集详解4.1常用命令表4.2命令使用示例5.初始化程序解析6.数据读写函数实现6.1写数据到文件6.2从文件读取数据7.应用示例:U盘状态检测8.扩
流式编程 JDK8 Stream的简单使用方法介绍
桔仔
java jdk stream
JDK8Stream文章目录JDK8Stream概念特点代码简洁多核友好示例foreach方式Stream方式流程操作特性常用操作符具体用法一、流的创建1.1使用Collection下的stream()和parallelStream()方法。1.2使用Arrays中的stream()方法,将数组转成流。1.3使用Stream中的静态方法:of()、iterate()、generate()。1.4使
固态电池行业深度研究报告:技术变革与市场展望
萧十一郎@
知识科普 大数据 人工智能
目录一、引言1.1研究背景与目的1.2研究方法与数据来源二、固态电池概述2.1定义与分类2.1.1定义2.1.2分类2.2工作原理2.3发展历程三、固态电池技术优势与挑战3.1技术优势3.1.1高安全性3.1.2高能量密度3.1.3长循环寿命3.2技术挑战3.2.1离子电导率低3.2.2固-固界面问题3.2.3锂枝晶生长3.2.4成本高昂四、固态电池材料体系与技术路线4.1固态电解质材料4.1.1
编译时报错“LNK2019 无法解析的外部符号”的可能原因及其解决办法
烟锁池塘柳0
程序设计与编程语言 c++
在VS2022中运行C++程序的时候,有时候会遇到这样的问题:1>(源文件名称).obj:errorLNK2019:无法解析的外部符号"public:__cdecl(函数名(参数列表))"(??0(函数名与乱码)@@QEAA@XZ),函数main中引用了该符号1>项目路径\x64\Debug\可执行程序名.exe:fatalerrorLNK1120:1个无法解析的外部命令遇到这种问题,可以说是很难
【数学建模】灰色关联分析模型详解与应用
烟锁池塘柳0
数学建模 数学建模 算法
灰色关联分析模型详解与应用文章目录灰色关联分析模型详解与应用引言灰色系统理论简介灰色关联分析基本原理灰色关联分析计算步骤1.确定分析序列2.数据无量纲化处理3.计算关联系数4.计算关联度灰色关联分析应用实例实例:某企业生产效率影响因素分析灰色关联分析在各领域的应用灰色关联分析的Python实现灰色关联分析的局限性结论引言在数据分析领域,我们经常面临样本量少、信息不完全、数据不确定性高的情况。传统的
【网易雷火秋招】前端面经分享
编程自学-领绿学长
前端 求职招聘 面试
网易网易雷火是国内一流且最有创新力的游戏研发团队,是网易杭州的第一个游戏工作室。雷火开创性的打造了《逆水寒》、《永劫无间》、《倩女幽魂》、《全明星街球派对》等一众爆款游戏;并在二次元、FPS、主机游戏等方向上持续探索,《代号:无限大》等在研项目收到玩家广泛关注。与此同时,我们与全球合作伙伴一起共同构建开放、协同、共荣共生的产业生态,致力于让中国游戏走出去,让世界听见雷火声音。雷火还拥有国内专业从事
优化Redis AOF重写配置:解决AOF文件过大的终极指南
冯·诺依曼的
redis 数据库 缓存 云计算
核心配置参数解析与优化以下配置参数位于Redis配置文件/etc/redis.conf中,用于控制AOF持久化与重写行为。通过合理调整这些参数,可显著减少AOF文件体积并提升性能。1.appendfsync:AOF文件同步策略默认值:everysec修改建议:appendfsyncno作用:控制AOF日志同步到磁盘的频率。everysec(默认):每秒同步一次,平衡性能与数据安全。no:由操作系统
深入解析:C# 中 `Task.Delay` 与 `Thread.Sleep` 的对比与实战
墨夶
C#学习资料1 c# 开发语言
嘿,小伙伴们!今天我们要一起深入探讨C#中的Task.Delay和Thread.Sleep。想象一下,你正在开发一个需要处理异步操作的应用程序,如何有效地管理线程和延迟执行任务呢?别急,让我们通过这篇文章来详细解析Task.Delay和Thread.Sleep的区别,并涵盖以下内容:基本概念Thread.Sleep的用法Task.Delay的用法对比分析实战示例注意事项与最佳实践常见面试题及答案正
详解Springboot的启动流程
凭君语未可
面试 spring boot 后端 java
在Redis中实现分布式锁1.主入口与SpringApplication.run()2.准备阶段3.创建应用上下文(ApplicationContext)4.Bean定义加载与上下文刷新5.EmbeddedWebServer的启动(针对Web应用)6.ApplicationRunner和CommandLineRunner执行7.应用启动完成总结1.主入口与SpringApplication.run
C#:深入理解Thread.Sleep与Task.Delay
妮妮学代码
c# c# 开发语言
1.核心区别概述特性Thread.SleepTask.Delay阻塞类型同步阻塞当前线程异步非阻塞,释放线程适用场景同步代码中的简单延时异步编程中的非阻塞等待资源消耗占用线程资源(线程挂起)不占用线程(通过计时器回调)精度依赖操作系统调度(≈15ms精度)更高精度(≈1ms)取消支持❌不支持✔️支持CancellationToken异常处理无法被中断可响应取消操作并抛出异常2.原理与底层机制(1)
【数学建模】TOPSIS法简介及应用
烟锁池塘柳0
数学建模 数学建模 算法
文章目录TOPSIS法的基本原理TOPSIS法的基本步骤TOPSIS法的应用总结在多目标决策分析中,我们常常需要在多个选择中找到一个最优解。TOPSIS(TechniqueforOrderPreferencebySimilaritytoIdealSolution)法是一个广泛应用的决策方法,基于理想解与负理想解的距离来评估各个选项的优劣。本文将简要介绍TOPSIS法的基本原理、步骤以及其在实际决策
Python的那些事第四十六篇:基于属性的测试库hypothesis研究
暮雨哀尘
Python的那些事 python 开发语言 属性测试库 hypothesis 执行流程 构建
一、引言(一)研究背景随着软件系统复杂性的不断增加,软件测试在确保软件质量方面的重要性愈发凸显。传统测试方法在面对大规模、复杂软件系统时,往往存在测试用例设计不全面、测试执行效率低下等问题。基于属性的测试作为一种新兴的测试方法,通过定义软件系统的属性来指导测试用例的设计与执行,为解决上述问题提供了新的思路。(二)研究意义本研究旨在深入探讨基于属性的测试库的构建与应用,以提高软件测试的效率和质量,降
Android 扫码 - 集成 zxing-android-embedded
我命由我12345
Android - 简化库编程 android java-ee java 安卓 android-studio android studio android jetpack
一、zxing-android-embedded1、ZXing概述ZXing是谷歌开源的让开发者更方便使用摄像头的库,而常用的扫码功能就是其中之一第三方ZXing库zxing-android-embedded,抽取其中的扫码功能单独使用2、基本使用(1)依赖与权限配置在项目级build.gradle中配置相关依赖implementation'com.journeyapps:zxing-androi
解锁智慧养老新可能,全面提升养老生活质量
weixin_45819535
生活
在老龄化浪潮席卷全球的今天,如何让老年人的生活更加安全、便捷、丰富多彩,成为了我们共同的责任与追求。辉视智慧养老方案,正是这样一款以老年人需求为核心,集信息查询、活动参与、紧急对讲与安全保障于一体的智慧养老解决方案。它如同一道温暖的光,照亮了老年人的养老生活,让关爱之声随时在他们身边响起。一、智慧生活,一触即达辉视智慧养老方案以直观简洁的界面,将社区各类服务信息呈现于老年人眼前。从营养均衡的餐饮选
计算机网络笔记、面试八股(二)—— HTTP协议
Your_Raymond
计算机网络 http 计算机网络 面试
本章目录2.HTTP协议2.1HTTP协议简介2.2HTTP协议的优点2.3HTTP协议的缺点2.4HTTP协议属于哪一层2.5HTTP通信过程2.6常见请求方法2.7GET和POST的区别2.8请求报文与响应报文2.8.1HTTP请求报文2.8.2HTTP响应报文2.9响应状态码2.10HTTP1.0和1.1的区别2.10.1长连接2.10.2错误响应码2.10.3缓存处理2.10.4带宽的优化
DeepSeek+知网研学轻松搞定研究生选题
AI新视界
AI学术 学术软件推荐 AI工具 AI学术 学习 人工智能 学术
选题是研究生学术研究的起点,一个好的选题不仅决定了研究的方向,还直接影响研究的深度和成果。本文将详细介绍如何结合DeepSeek大模型与知网研学,帮助研究生高效完成选题工作。一、选题的重要性与挑战选题的重要性:选题是研究的核心,决定了研究的创新性和可行性。好的选题能够为后续研究提供明确的方向和动力。选题的挑战:如何从海量文献中找到有价值的研究方向?如何判断选题的创新性和研究价值?如何确保选题的可行
【Dive Into Stable Diffusion v3.5】1:开源项目正式发布——深入探索SDv3.5模型全参/LoRA/RLHF训练
Donvink
大模型 # AIGC stable diffusion AIGC 人工智能 机器学习 深度学习
目录1引言2项目简介3快速上手3.1下载代码3.2环境配置3.3项目结构3.4下载模型与数据集3.5运行指令3.6核心参数说明3.6.1通用参数3.6.2优化器/学习率3.6.3数据相关4结语1引言在人工智能和机器学习领域,生成模型的应用越来越广泛。StableDiffusion作为其中的佼佼者,因其强大的图像生成能力而备受关注。今天,我的开源项目DiveIntoStableDiffusionv3
设计模式-责任链模式
小九没绝活
设计模式 设计模式 责任链模式 java
核心思想责任链模式通过将多个处理对象(Handler)连接成一条链,允许请求在链上传递,直到被某个对象处理或链终止。核心目标是解耦请求发送者与接收者,让多个对象都有机会处理请求,增强系统的灵活性和可扩展性。模式结构角色职责抽象处理者定义处理请求的接口(Handler),通常包含设置下一个处理者的方法具体处理者实现抽象处理者接口,判断是否能处理请求,否则传递给下一个处理者客户端创建处理链,并向链的头
效果媲美GPT4V的多模态大型语言模型MiniCPM-V-2_6详细介绍
我就是全世界
语言模型 人工智能 自然语言处理
MiniCPM-V-2.6概述1.1模型背景MiniCPM-V-2.6是由nuoan开发的一款达到GPT-4V级别的多模态大型语言模型(MLLM)。该模型专为手机上的单图像、多图像和视频处理设计,旨在提供高效、准确的多模态内容理解与生成能力。随着移动设备的普及和计算能力的提升,用户对于在移动端进行复杂图像和视频处理的需求日益增长。MiniCPM-V-2.6的推出,正是为了满足这一需求,提供了一种在
基于大模型的腮腺多形性腺瘤全周期诊疗方案研究报告
LCG元
围术期危险因子 预测模型研究 人工智能
目录一、引言1.1研究背景与目的1.2研究现状与趋势二、大模型预测原理与方法2.1大模型概述2.2数据收集与预处理2.3模型训练与优化三、术前预测与评估3.1肿瘤特征预测3.2风险评估3.3案例分析四、术中方案制定与实施4.1手术方案选择4.2面神经保护策略4.3麻醉方案确定五、术后恢复与并发症预测5.1恢复情况预测5.2并发症风险预测5.3案例分析六、术后护理与康复6.1护理措施6.2康复训练6
PyTorch 深度学习实战(19):离线强化学习与 Conservative Q-Learning (CQL) 算法
进取星辰
PyTorch 深度学习实战 深度学习 pytorch 算法
在上一篇文章中,我们探讨了分布式强化学习与IMPALA算法,展示了如何通过并行化训练提升强化学习的效率。本文将聚焦离线强化学习(OfflineRL)这一新兴方向,并实现ConservativeQ-Learning(CQL)算法,利用Minari提供的静态数据集训练安全的强化学习策略。一、离线强化学习与CQL原理1.离线强化学习的特点无需环境交互:直接从预收集的静态数据集学习数据效率高:复用历史经验
Java IDEA中Gutter Icons图标的含义
路宇
java笔记 java intellij-idea 开发语言 gutter-icons 图标 Java开发 工具
前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂,风趣幽默",感觉非常有意思,忍不住分享一下给大家。点击跳转到教程前言:很多人刚开始用IDEA来学习编程,会发现下面这些图标。但是我们有时候并不知道它的含义和设置显示与隐藏,下面给大家讲解一下装订线图标位于左侧编辑器中。它们调用一些基本操作以及其他特定于框架和技术的功能。设置步骤File->Setting进到idea的设置页面。接
LeetCode[位运算] - #137 Single Number II
Cwind
java Algorithm LeetCode 题解 位运算
原题链接:#137 Single Number II
要求:
给定一个整型数组,其中除了一个元素之外,每个元素都出现三次。找出这个元素
注意:算法的时间复杂度应为O(n),最好不使用额外的内存空间
难度:中等
分析:
与#136类似,都是考察位运算。不过出现两次的可以使用异或运算的特性 n XOR n = 0, n XOR 0 = n,即某一
《JavaScript语言精粹》笔记
aijuans
JavaScript
0、JavaScript的简单数据类型包括数字、字符创、布尔值(true/false)、null和undefined值,其它值都是对象。
1、JavaScript只有一个数字类型,它在内部被表示为64位的浮点数。没有分离出整数,所以1和1.0的值相同。
2、NaN是一个数值,表示一个不能产生正常结果的运算结果。NaN不等于任何值,包括它本身。可以用函数isNaN(number)检测NaN,但是
你应该更新的Java知识之常用程序库
Kai_Ge
java
在很多人眼中,Java 已经是一门垂垂老矣的语言,但并不妨碍 Java 世界依然在前进。如果你曾离开 Java,云游于其它世界,或是每日只在遗留代码中挣扎,或许是时候抬起头,看看老 Java 中的新东西。
Guava
Guava[gwɑ:və],一句话,只要你做Java项目,就应该用Guava(Github)。
guava 是 Google 出品的一套 Java 核心库,在我看来,它甚至应该
HttpClient
120153216
httpclient
/**
* 可以传对象的请求转发,对象已流形式放入HTTP中
*/
public static Object doPost(Map<String,Object> parmMap,String url)
{
Object object = null;
HttpClient hc = new HttpClient();
String fullURL
Django model字段类型清单
2002wmj
django
Django 通过 models 实现数据库的创建、修改、删除等操作,本文为模型中一般常用的类型的清单,便于查询和使用: AutoField:一个自动递增的整型字段,添加记录时它会自动增长。你通常不需要直接使用这个字段;如果你不指定主键的话,系统会自动添加一个主键字段到你的model。(参阅自动主键字段) BooleanField:布尔字段,管理工具里会自动将其描述为checkbox。 Cha
在SQLSERVER中查找消耗CPU最多的SQL
357029540
SQL Server
返回消耗CPU数目最多的10条语句
SELECT TOP 10
total_worker_time/execution_count AS avg_cpu_cost, plan_handle,
execution_count,
(SELECT SUBSTRING(text, statement_start_of
Myeclipse项目无法部署,Undefined exploded archive location
7454103
eclipse MyEclipse
做个备忘!
错误信息为:
Undefined exploded archive location
原因:
在工程转移过程中,导致工程的配置文件出错;
解决方法:
 
GMT时间格式转换
adminjun
GMT 时间转换
普通的时间转换问题我这里就不再罗嗦了,我想大家应该都会那种低级的转换问题吧,现在我向大家总结一下如何转换GMT时间格式,这种格式的转换方法网上还不是很多,所以有必要总结一下,也算给有需要的朋友一个小小的帮助啦。
1、可以使用
SimpleDateFormat SimpleDateFormat
EEE-三位星期
d-天
MMM-月
yyyy-四位年
Oracle数据库新装连接串问题
aijuans
oracle数据库
割接新装了数据库,客户端登陆无问题,apache/cgi-bin程序有问题,sqlnet.log日志如下:
Fatal NI connect error 12170.
VERSION INFORMATION: TNS for Linux: Version 10.2.0.4.0 - Product
回顾java数组复制
ayaoxinchao
java 数组
在写这篇文章之前,也看了一些别人写的,基本上都是大同小异。文章是对java数组复制基础知识的回顾,算是作为学习笔记,供以后自己翻阅。首先,简单想一下这个问题:为什么要复制数组?我的个人理解:在我们在利用一个数组时,在每一次使用,我们都希望它的值是初始值。这时我们就要对数组进行复制,以达到原始数组值的安全性。java数组复制大致分为3种方式:①for循环方式 ②clone方式 ③arrayCopy方
java web会话监听并使用spring注入
bewithme
Java Web
在java web应用中,当你想在建立会话或移除会话时,让系统做某些事情,比如说,统计在线用户,每当有用户登录时,或退出时,那么可以用下面这个监听器来监听。
import java.util.ArrayList;
import java.ut
NoSQL数据库之Redis数据库管理(Redis的常用命令及高级应用)
bijian1013
redis 数据库 NoSQL
一 .Redis常用命令
Redis提供了丰富的命令对数据库和各种数据库类型进行操作,这些命令可以在Linux终端使用。
a.键值相关命令
b.服务器相关命令
1.键值相关命令
&
java枚举序列化问题
bingyingao
java 枚举 序列化
对象在网络中传输离不开序列化和反序列化。而如果序列化的对象中有枚举值就要特别注意一些发布兼容问题:
1.加一个枚举值
新机器代码读分布式缓存中老对象,没有问题,不会抛异常。
老机器代码读分布式缓存中新对像,反序列化会中断,所以在所有机器发布完成之前要避免出现新对象,或者提前让老机器拥有新增枚举的jar。
2.删一个枚举值
新机器代码读分布式缓存中老对象,反序列
【Spark七十八】Spark Kyro序列化
bit1129
spark
当使用SparkContext的saveAsObjectFile方法将对象序列化到文件,以及通过objectFile方法将对象从文件反序列出来的时候,Spark默认使用Java的序列化以及反序列化机制,通常情况下,这种序列化机制是很低效的,Spark支持使用Kyro作为对象的序列化和反序列化机制,序列化的速度比java更快,但是使用Kyro时要注意,Kyro目前还是有些bug。
Spark
Hybridizing OO and Functional Design
bookjovi
erlang haskell
推荐博文:
Tell Above, and Ask Below - Hybridizing OO and Functional Design
文章中把OO和FP讲的深入透彻,里面把smalltalk和haskell作为典型的两种编程范式代表语言,此点本人极为同意,smalltalk可以说是最能体现OO设计的面向对象语言,smalltalk的作者Alan kay也是OO的最早先驱,
Java-Collections Framework学习与总结-HashMap
BrokenDreams
Collections
开发中常常会用到这样一种数据结构,根据一个关键字,找到所需的信息。这个过程有点像查字典,拿到一个key,去字典表中查找对应的value。Java1.0版本提供了这样的类java.util.Dictionary(抽象类),基本上支持字典表的操作。后来引入了Map接口,更好的描述的这种数据结构。
&nb
读《研磨设计模式》-代码笔记-职责链模式-Chain Of Responsibility
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
/**
* 业务逻辑:项目经理只能处理500以下的费用申请,部门经理是1000,总经理不设限。简单起见,只同意“Tom”的申请
* bylijinnan
*/
abstract class Handler {
/*
Android中启动外部程序
cherishLC
android
1、启动外部程序
引用自:
http://blog.csdn.net/linxcool/article/details/7692374
//方法一
Intent intent=new Intent();
//包名 包名+类名(全路径)
intent.setClassName("com.linxcool", "com.linxcool.PlaneActi
summary_keep_rate
coollyj
SUM
BEGIN
/*DECLARE minDate varchar(20) ;
DECLARE maxDate varchar(20) ;*/
DECLARE stkDate varchar(20) ;
DECLARE done int default -1;
/* 游标中 注册服务器地址 */
DE
hadoop hdfs 添加数据目录出错
daizj
hadoop hdfs 扩容
由于原来配置的hadoop data目录快要用满了,故准备修改配置文件增加数据目录,以便扩容,但由于疏忽,把core-site.xml, hdfs-site.xml配置文件dfs.datanode.data.dir 配置项增加了配置目录,但未创建实际目录,重启datanode服务时,报如下错误:
2014-11-18 08:51:39,128 WARN org.apache.hadoop.h
grep 目录级联查找
dongwei_6688
grep
在Mac或者Linux下使用grep进行文件内容查找时,如果给定的目标搜索路径是当前目录,那么它默认只搜索当前目录下的文件,而不会搜索其下面子目录中的文件内容,如果想级联搜索下级目录,需要使用一个“-r”参数:
grep -n -r "GET" .
上面的命令将会找出当前目录“.”及当前目录中所有下级目录
yii 修改模块使用的布局文件
dcj3sjt126com
yii layouts
方法一:yii模块默认使用系统当前的主题布局文件,如果在主配置文件中配置了主题比如: 'theme'=>'mythm', 那么yii的模块就使用 protected/themes/mythm/views/layouts 下的布局文件; 如果未配置主题,那么 yii的模块就使用 protected/views/layouts 下的布局文件, 总之默认不是使用自身目录 pr
设计模式之单例模式
come_for_dream
设计模式 单例模式 懒汉式饿汉式 双重检验锁失败 无序写入
今天该来的面试还没来,这个店估计不会来电话了,安静下来写写博客也不错,没事翻了翻小易哥的博客甚至与大牛们之间的差距,基础知识不扎实建起来的楼再高也只能是危楼罢了,陈下心回归基础把以前学过的东西总结一下。
*********************************
8、数组
豆豆咖啡
二维数组 数组 一维数组
一、概念
数组是同一种类型数据的集合。其实数组就是一个容器。
二、好处
可以自动给数组中的元素从0开始编号,方便操作这些元素
三、格式
//一维数组
1,元素类型[] 变量名 = new 元素类型[元素的个数]
int[] arr =
Decode Ways
hcx2013
decode
A message containing letters from A-Z is being encoded to numbers using the following mapping:
'A' -> 1
'B' -> 2
...
'Z' -> 26
Given an encoded message containing digits, det
Spring4.1新特性——异步调度和事件机制的异常处理
jinnianshilongnian
spring 4.1
目录
Spring4.1新特性——综述
Spring4.1新特性——Spring核心部分及其他
Spring4.1新特性——Spring缓存框架增强
Spring4.1新特性——异步调用和事件机制的异常处理
Spring4.1新特性——数据库集成测试脚本初始化
Spring4.1新特性——Spring MVC增强
Spring4.1新特性——页面自动化测试框架Spring MVC T
squid3(高命中率)缓存服务器配置
liyonghui160com
系统:centos 5.x
需要的软件:squid-3.0.STABLE25.tar.gz
1.下载squid
wget http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE25.tar.gz
tar zxf squid-3.0.STABLE25.tar.gz &&
避免Java应用中NullPointerException的技巧和最佳实践
pda158
java
1) 从已知的String对象中调用equals()和equalsIgnoreCase()方法,而非未知对象。 总是从已知的非空String对象中调用equals()方法。因为equals()方法是对称的,调用a.equals(b)和调用b.equals(a)是完全相同的,这也是为什么程序员对于对象a和b这么不上心。如果调用者是空指针,这种调用可能导致一个空指针异常
Object unk
如何在Swift语言中创建http请求
shoothao
http swift
概述:本文通过实例从同步和异步两种方式上回答了”如何在Swift语言中创建http请求“的问题。
如果你对Objective-C比较了解的话,对于如何创建http请求你一定驾轻就熟了,而新语言Swift与其相比只有语法上的区别。但是,对才接触到这个崭新平台的初学者来说,他们仍然想知道“如何在Swift语言中创建http请求?”。
在这里,我将作出一些建议来回答上述问题。常见的
Spring事务的传播方式
uule
spring事务
传播方式:
新建事务
required
required_new - 挂起当前
非事务方式运行
supports
&nbs