文章目录
CSS知识点
基础知识
什么是css?
css的历史和版本
css语法的结构
css选择器,如何选择元素
css属性和值的基础知识
CSS属性
CSS值
css 属性值类型
css 单位
css 值的继承性
css 值的优先级
排版和布局
盒子模型的概念
块级元素和行内元素的区别
浮动和清除浮动
定位,绝对定位和相对定位
弹性盒子模型(flexbox)的概念
网格布局(grid)的概念
样式化文本
字体样式和字体大小
文本颜色和背景颜色
文本对齐方式和行高
文本装饰,如下划线、删除线和强调
阴影和轮廓效果
图像和背景
背景颜色和背景图像
背景尺寸和背景重复
边框和圆角
图像透明度和过渡效果
动画和交互
css动画和关键帧
css过渡效果
悬停效果和活动状态效果
响应式设计和媒体查询
总结
CSS知识点
基础知识
什么是css?
css是一种用于描述网页样式的语言,全称为cascading style sheets(层叠样式表)。 css可以将html文档中的内容与样式分离,从而使得网页的结构和呈现分离,并且能够使得同样的样式应用于多个页面,从而提高了页面的可维护性和可重用性。
css允许开发者对html元素进行各种视觉方面的样式控制,包括文字和字体属性、颜色和背景、布局和定位等等。 通过定义不同的样式规则和类别,我们可以轻松地改变网站的外观和感觉。 由于css是一种标记语言,因此使用起来十分灵活和易于理解,也是web前端开发的基础技能之一。
css的历史和版本
css是一种用于网页设计的样式表语言,它可以为html文档添加样式和布局效果。css有着悠久的历史,下面是css的历史与版本:
css1 1996年12月,w3c发布了第一个css标准,即css1。这个版本的css定义了基本的样式属性,如颜色、字体、背景、边框等,并且支持样式层叠和继承。
css2 1998年5月,w3c发布了css2标准。这个版本的css新增了更多的样式属性,如定位、浮动、清除浮动、伪类、伪元素、表格布局等,并且引入了媒体查询、内容生成和盒模型等新特性。
css2.1 2004年6月,w3c发布了css2.1标准。这个版本的css对css2进行了修订和完善,但没有引入新的特性。
css3 css3是css的最新版本,它并不是一个单独的规范,而是由一系列模块组成。每个模块都包含了一个或多个新的css特性。css3的一些主要模块包括:
selectors level 3:新增了一些高级选择器。 box model:新增了弹性盒子模型和网格布局模型。 color:新增了rgba、hsla和透明度等颜色属性。 text effects:新增了文本阴影、渐变和多列布局等效果。 transitions and animations:新增了过渡和动画效果。 media queries:进一步完善了媒体查询,可以根据设备和屏幕尺寸来设置样式。 css3模块的开发和发布是分散的,并且每个模块都有自己的版本号。因此,css3没有一个明确的版本号,而是根据使用的模块不同而有所不同。
css语法的结构
CSS语法的基本结构如下:
选择器 { 属性1: 值1; 属性2: 值2; … }
其中,选择器表示要应用样式的HTML元素,可以是标签名、类名、ID、属性等;花括号{}中的内容表示要设置的样式属性和对应的取值。
多个样式规则可以连续书写,以分号分隔。具体示例代码如下:
h1 {
color : red;
font-size : 24px;
}
p {
color : blue;
font-size : 18px;
}
在上面的例子中,h1和p是选择器,它们分别匹配HTML中的
和
标记, 并且设置了不同的样式属性。
注意,在样式中使用属性时需要遵循”属性:值“的格式规定,属性和取值之间需要用冒号分隔,多个属性之间需要用分号分隔。
css选择器,如何选择元素
CSS 选择器是用于选择单个或一组 HTML 元素,并对其应用样式的模式。 下面是一些常见的 CSS 选择器示例以及如何使用它们来选择元素:
标签选择器(element selector): 通过指定 HTML 标签名来选择所有具有该标记的元素。 例如,要选择所有段落元素,可以使用 p 标签选择器。
p {
}
类选择器 (class selector): 通过使用 .class 来选择拥有相同 class 属性值的元素。 例如,要选择所有具有 title 类的元素,可以使用 .title 类选择器。
.title {
}
ID 选择器 (id selector): 通过使用 #id 来选择指定 id 属性的元素。请注意,id 在文档中必须是唯一的。 例如,要选择拥有 main-content ID 的元素,可以使用 #main-content ID 选择器。
#main-content {
}
后代组合选择器 (descendant combinator): 通过将选择器分隔符(空格)放置在两个选择器之间来选择元素的后代。 例如,在以下 HTML 结构中,要选择外部 div 下的所有 p 标签,可以使用 div p 选择器。
< div>
< p> 选我 p>
< div>
< p> 不要选我 p>
div>
div>
div p {
}
子代组合选择器 (child combinator): 通过使用 > 符号来选择元素的直接子节点。 例如,在以下 HTML 结构中,要选择外部 div 下的所有直接的子元素,可以使用 div > * 选择器(* 表示选择所有元素)。
< div>
< p> 选我 p>
< div>
< p> 不要选我 p>
div>
div>
div > * {
}
相邻兄弟组合选择器 (adjacent sibling combinator): 通过使用 + 符号来选择某个元素之后的第一个兄弟元素。 例如,在以下 HTML 结构中,要选择 id 为 heading 的 h2 元素之后的第一个兄弟元素(也就是下一个 p 元素),可以使用 h2 + p 选择器。
< h2 id = " heading" > 标题 h2>
< p> 选我 p>
< p> 不要选我 p>
h2 + p {
}
这些只是 CSS 选择器的一部分。可以通过结合使用它们来创建更复杂的选择器,以达到您想要选择的元素。
css属性和值的基础知识
CSS属性
CSS属性是一种用于设置元素样式的标准化名称。以下是几个常用的CSS属性:
color属性用于设置文本的颜色。它可以使用颜色名称、十六进制RGB值或RGBA值来指定颜色。
color : red;
color : #FF0000;
color : rgba ( 255, 0, 0, 0.5) ;
font-size font-size属性用于设置字体的大小。它可以使用像素、EM、REM、百分比等单位来指定字体大小。
font-size : 16px;
font-size : 1.2em;
font-size : 120%;
background-color background-color属性用于设置元素的背景颜色。它可以使用颜色名称、十六进制RGB值或RGBA值来指定背景颜色。
background-color : yellow;
background-color : #FFFF00;
background-color : rgba ( 255, 255, 0, 0.5) ;
margin margin属性用于设置元素的外边距。它可以使用像素、EM、REM、百分比等单位来指定外边距的大小。
margin : 10px;
margin-top : 5em;
margin : 10px 20px 30px 40px;
padding padding属性用于设置元素的内边距,也就是元素内容和边框之间的空间。它可以使用像素、EM、REM、百分比等单位来指定内边距的大小。
padding : 10px;
padding-top : 5em;
padding : 10px 20px 30px 40px;
CSS值
CSS值表示了CSS属性的可选值。以下是一些常用的CSS值:
长度单位 长度单位用于指定长度或距离。以下是一些常用的长度单位:
px:像素(Pixel) em:相对于父元素字体大小的单位 rem:相对于根元素字体大小的单位 %:相对于包含块的百分比
width : 100px;
font-size : 1.2em;
padding : 2rem;
height : 50%;
颜色值 颜色值用于设置颜色。以下是一些常用的颜色值:
颜色名称:例如red、blue等。 十六进制RGB值:例如#FF0000表示红色,#00FF00表示绿色,#0000FF表示蓝色。 RGBA值:RGBA值与RGB值类似,但是在最后添加了一个alpha通道,它用于控制透明度。
color : red;
background-color : #FFFF00;
background-color : rgba ( 0, 0, 0, 1) ;
css 属性值类型
css 属性值可以分为以下几种类型:
数字类型 数字类型的值可以是整数或小数,并且可以带有单位,例如像素(px)、百分比(%)、em、rem 等。
颜色类型 颜色类型的值可以使用预定义的颜色名称或 rgb/rgba 值、hsl/hsla 值等方式来指定。
文本类型 文本类型的值包括字符串、url 和图像名称等。
函数类型 函数类型的值由函数名和参数组成,例如 linear-gradient(),它可以生成一个渐变背景。
枚举类型 枚举类型的值只能从预定义的选项中选择,例如 display 属性的值可以是 block、inline、inline-block、table 等。
逻辑类型 逻辑类型的值表示真假值,例如 visibility 属性的值可以是 visible 或 hidden。
css 单位
绝对单位 绝对单位指的是长度单位,其值相对于物理尺寸而言是固定不变的,例如像素(px)、英寸(in)、厘米(cm)等。
相对单位 相对单位指的是长度单位,其值相对于某个基准值而言是可变的,例如百分比(%)、em、rem 等。其中,em 是相对于当前元素的字体大小,rem 是相对于根元素的字体大小。
其他单位 css 还支持其他类型的单位,例如时间单位(s、ms)、角度单位(deg、rad、grad)等。
css 值的继承性
有些 css 属性可以被子元素继承,例如 font-family、color、text-align 等。当一个元素没有设置这些属性时,它会从父元素继承这些属性的值。不过,并非所有属性都有继承性,例如 width、height、border 等就不具有继承性。
css 值的优先级
当多个 css 规则应用到同一元素时,可能会出现冲突。 此时,浏览器会根据规则的优先级来决定哪个规则应该生效。css 规则的优先级由以下因素确定:
指定了 !important 的属性具有最高优先级。
内联样式具有次高优先级。
id 选择器的优先级高于类选择器和属性选择器。
类选择器和属性选择器的优先级相同,但如果它们同时作用于一个元素,则后声明的规则具有更高的优先级。
元素选择器的优先级最低。 以上是css值的基础知识,掌握了这些知识后,就可以更好地理解和使用css。
排版和布局
盒子模型的概念
盒子模型是指计算机渲染的每个元素都被看作是一个盒子。这个“盒子”由四个边框、内部内容和外边距所组成。它是 Web 设计和开发中最基本的概念之一。在 HTML 和 CSS 中,每个元素都可以通过盒子模型来描述其布局。
盒子模型包括四个部分:
内容区域(content area): 指一个元素包含的实际内容,并且被包围在一个框里,它是盒子模型中的核心。
填充区域(padding area): 位于内容区域和边框之间,它的大小可以通过 padding 属性控制。填充区域可以用来设置内容与边框之间的距离。
边框区域(border area):是围绕内容和填充区域的线条,可以通过 border 属性进行设置,用来定义元素的边界。
外边距区域(margin area):位于边框和周围元素之间,可以通过 margin 属性进行控制,用来调整元素与其他元素之间的距离。
盒子模型的大小可以通过以下公式计算:
总宽度 = 左边距 + 左边框宽度 + 左填充宽度 + 内容宽度 + 右填充宽度 + 右边框宽度 + 右边距
总高度 = 上边距 + 上边框宽度 + 上填充宽度 + 内容高度 + 下填充宽度 + 下边框宽度 + 下边距
W3C盒子模型
W3C盒子模型是Web标准盒子模型,它将元素的宽度和高度属性应用于元素的内容框。这意味着元素的实际宽度和高度不包括填充、边框和边距。如果您想要计算元素的总宽度和高度,您需要将元素的内容框、填充、边框和边距相加。
以下是W3C盒子模型的示例:
.box {
width : 200px;
height : 100px;
padding : 20px;
border : 1px solid black;
margin : 10px;
box-sizing : content-box;
}
在此示例中,我们定义了一个宽度为200像素、高度为100像素、填充为20像素、1像素黑色边框和10像素边距的盒子。我们还将box-sizing属性设置为content-box,这意味着宽度和高度属性仅适用于元素的内容。
IE盒子模型
IE盒子模型是Internet Explorer浏览器使用的盒子模型。它将元素的宽度和高度属性应用于元素的内容框、填充和边框。这意味着元素的实际宽度和高度包括填充和边框,但不包括边距。如果您想要计算元素的总宽度和高度,您需要将元素的内容框、填充和边框相加。
以下是IE盒子模型的示例:
.box {
width : 200px;
height : 100px;
padding : 20px;
border : 1px solid black;
margin : 10px;
box-sizing : border-box;
}
在此示例中,我们定义了一个宽度为200像素、高度为100像素、填充为20像素、1像素黑色边框和10像素边距的盒子。我们还将box-sizing属性设置为border-box,这意味着宽度和高度属性包括元素的填充和边框。
盒子模型是Web开发中描述元素在网页上布局的基本概念。
W3C盒子模型和IE盒子模型是两种不同的盒子模型,它们在计算元素的宽度和高度时有所不同。
通过理解盒子模型及其工作原理,您可以创建更有效和高效的网页。
块级元素和行内元素的区别
要理解HTML中块级元素和内联元素之间的区别,我们需要首先了解它们是什么。
块级元素 :是指占用可用的全部宽度并在元素之后创建新行的元素。
块级元素的示例包括、
、
-6>
、
、
、
、
、
和
。这些元素通常用于创建网页的结构。
内联元素 :只占用必要的宽度,并且不会在元素之后创建新行。
内联元素的示例包括
、
、
、
、
和
。这些元素通常用于设置块级元素内内容的样式或格式。
总之:
块级元素在元素之后创建一条新行,并占用其可用的全部宽度。
内联元素只占用必要的宽度,不会在元素之后新建一条新行。
浮动和清除浮动
浮动是一种布局技术,可以使元素脱离文档流并向左或向右移动,直到它们遇到另一个元素或容器的边缘。浮动元素通常用于创建多列布局或图像浮动效果。
要将元素浮动,可以使用CSS属性float。例如,要将一个元素向左浮动,可以使用以下代码:
.my-element {
float : left;
}
但是,浮动元素可能会导致一些问题,例如它们可能会覆盖其他元素或破坏布局。为了解决这些问题,可以使用清除浮动技术。清除浮动是一种CSS技术,可以将浮动元素的影响限制在其容器内部,从而避免布局问题。
.clearfix::after {
content : "" ;
display : table;
clear : both;
}
要清除浮动,可以使用CSS属性clear。例如,要清除左浮动,可以使用以下代码:
这将在浮动元素的容器中创建一个伪元素,并将其清除。请注意,这是一种常见的清除浮动技术,称为“clearfix”。
总之,浮动是一种布局技术,可以使元素脱离文档流并向左或向右移动,而清除浮动是一种CSS技术,可以避免浮动元素导致的布局问题。
定位,绝对定位和相对定位
定位是指通过CSS属性来设定HTML元素在网页中的位置。有三种常用的定位方式:静态定位、相对定位和绝对定位。
.box {
position : relative;
top : 20px;
left : 10px;
}
绝对定位(position: absolute):元素不再占用文档流,通过top、bottom、left、right的属性以及其父元素的相对位置进行偏移。例如:
.box {
position : absolute;
top : 20px;
left : 10px;
}
弹性盒子模型(flexbox)的概念
弹性盒子模型(flexbox)是一种CSS布局模式,可以让容器内的元素自动排列。它为内容提供了显式和隐式的灵活性,使得容器和它的子项能够更好地适应各种各样的屏幕大小和设备类型。
在使用flexbox布局时,需要将容器的display属性设置为flex或inline-flex。然后可以通过以下属性来控制子项的排列:
flex-direction:设置主轴的方向
justify-content:控制子项在主轴上的位置分布
align-items:控制子项在交叉轴上的位置分布
flex-wrap:是否允许子项换行
align-content:多行项目时,控制各行在交叉轴上的位置分布
例如,下面是一些常用的flexbox属性例子:
.container {
display : flex;
justify-content : center;
align-items : center;
}
网格布局(grid)的概念
网格布局(grid)是一种CSS布局模式,用于创建类似表格的二维网格布局。它允许开发者以行和列的方式创建一个网格,使得元素可以被放置到这个网格中的特定单元格内。
在使用Grid布局时,需要在父元素上设置display: grid。然后在父元素中可以通过以下属性来定义网格的大小和排列方式:
grid-template-columns、grid-template-rows:定义网格列数和行数
grid-template-areas:定义每个区域的名称
grid-column-start、grid-column-end、grid-row-start、grid-row-end:将元素放置到具体的行和列中,并占用几个单元格
例如,下面是一个网格布局的例子:
.container {
display : grid;
grid-template-columns : repeat ( 3, 1fr) ;
grid-gap : 10px;
}
.item {
grid-column-start : 2;
grid-row-start : 1;
grid-row-end : 3;
}
总之,在HTML中,定位、弹性盒子和网格布局是CSS中非常重要的布局方式,可以使得页面元素更加灵活地排列和组织。了解这些技术以及它们的使用方法可以为开发者提供更多选项,并增加Web应用程序的各种效果。
样式化文本
字体样式和字体大小
在HTML中,可以通过CSS设置文本的字体和大小。例如,以下是一些示例:
body {
font-family : Arial, sans-serif;
}
h1 {
font-size : 36px;
}
文本颜色和背景颜色
可以通过CSS来改变文本的颜色和背景颜色。例如:
p {
color : #333;
}
div {
background-color : #f5f5f5;
}
文本对齐方式和行高
还可以控制文本的对齐方式和行高。例如:
h1 {
text-align : center;
}
p {
line-height : 1.5;
}
文本装饰,如下划线、删除线和强调
可以使用CSS来添加文本效果,例如下划线、删除线和强调等。例如:
a {
text-decoration : underline;
}
del {
text-decoration : line-through;
}
b {
font-weight : bold;
}
阴影和轮廓效果
可以使用CSS来为文本添加阴影和轮廓效果。例如:
h1 {
text-shadow : 2px 2px 4px #888;
}
h2 {
text-outline : 1px solid #333;
}
在使用这些属性时,需要合适地设置其值以达到最佳效果。
图像和背景
背景颜色和背景图像
在HTML中,可以通过CSS设置元素的背景颜色和背景图像。例如:
body {
background-color : #f5f5f5;
}
div {
background-image : url ( "bg.jpg" ) ;
}
背景尺寸和背景重复
还可以控制背景图像的尺寸和重复方式。例如:
div {
background-size : cover;
}
body {
background-repeat : no-repeat;
}
边框和圆角
在HTML中,可以通过CSS来添加边框和圆角效果。例如:
div {
border : 1px solid #ddd;
}
img {
border-radius : 50%;
}
图像透明度和过渡效果
还可以使用CSS来控制图像的透明度和过渡效果。例如:
img {
opacity : 0.8;
}
div {
transition : width 2s, height 2s;
&:hover {
width : 200px;
height : 200px;
}
}
这些CSS属性可以帮助开发人员为网站添加更多的视觉效果和交互性。要注意的是,在使用这些属性时,需要谨慎选择其值以达到最佳效果,并确保其不会影响网页的性能和可用性。
动画和交互
css动画和关键帧
CSS动画和关键帧是使元素动起来的重要方式。使用CSS关键帧(@keyframes)规则定义动画,然后将其应用到特定元素上。
以下是一个简单的CSS动画示例:
@keyframes slide {
0% {
transform : translateX ( 0) ;
}
100% {
transform : translateX ( 300px) ;
}
}
div {
animation : slide 2s ease forwards;
}
在这个例子中,我们首先定义了一个名为slide的动画,并为其定义了两个关键帧,从0%到100%它将元素从左侧移动到右侧。然后,在元素上应用了slide动画,并设置其时间、缓动以及完成后是否保持最后状态。
css过渡效果
CSS过渡是另一种常见的动画方式,可以平滑地将元素的某些属性值从一个状态转换到另一个状态。例如:
div {
width : 100px;
height : 100px;
background-color : red;
transition : all 0.5s ease;
}
div:hover {
width : 200px;
height : 200px;
background-color : green;
}
在这个例子中,当用户将鼠标悬停在div元素上时,该元素将从初始状态平滑地过渡到悬停状态。
悬停效果和活动状态效果
除了使用过渡和动画外,还可以为元素添加其他视觉效果,例如悬停效果和活动状态效果。例如:
a:hover {
text-decoration : underline;
}
a:active {
background-color : #ddd;
}
在这个例子中,当用户将鼠标指针移到链接上时,该链接的下划线将被显示出来;当用户激活(点击)该链接时,一个灰色背景将被应用。
响应式设计和媒体查询
响应式设计是一种使网站适应不同设备屏幕尺寸的方法。通过使用CSS媒体查询,可以检测并适应不同的屏幕尺寸。
以下是一个简单的响应式设计示例:
@media ( max-width : 600px) {
body {
font-size : 14px;
}
}
@media ( min-width : 601px) {
body {
font-size : 16px;
}
}
在这个例子中,我们为body元素设置了两组不同的字体大小,分别对应于屏幕宽度小于600px和大于600px的情况。当屏幕尺寸符合其中之一时,相应的样式将被应用。
总之,在HTML中,CSS动画和过渡可以帮助开发人员为网站添加视觉效果,并增强交互性;悬停效果和活动状态效果可以改进网页的可用性;响应式设计可以使网页适应不同设备屏幕尺寸。了解这些技术以及如何正确使用它们可以提高Web应用程序的质量和用户体验。
总结
以上就是今天要讲的内容,本文简单介绍了CSS基础知识点。
如果觉得有用欢迎 点赞 关注 有问题私信我!!~~
你可能感兴趣的:(#,前端-基础合集,css,前端)
三菱PLC全套学习资料及应用手册
good2know
本文还有配套的精品资源,点击获取简介:三菱PLC作为工业自动化领域的核心设备,其系列产品的学习和应用需要全面深入的知识。本次资料包为学习者提供从基础到进阶的全方位学习资源,包括各种型号PLC的操作手册、编程指南、软件操作教程以及实际案例分析,旨在帮助用户系统掌握PLC的编程语言、指令系统及在各类工业应用中的实施。1.三菱PLC基础知识入门1.1PLC的基本概念可编程逻辑控制器(PLC)是工业自动化
移动端城市区县二级联动选择功能实现包
good2know
本文还有配套的精品资源,点击获取简介:本项目是一套为移动端设计的jQuery实现方案,用于简化用户在选择城市和区县时的流程。它包括所有必需文件:HTML、JavaScript、CSS及图片资源。通过动态更新下拉菜单选项,实现城市到区县的联动效果,支持数据异步加载。开发者可以轻松集成此功能到移动网站或应用,并可基于需求进行扩展和优化。1.jQuery移动端解决方案概述jQuery技术简介jQuery
day15|前端框架学习和算法
universe_01
前端 算法 笔记
T22括号生成先把所有情况都画出来,然后(在满足什么情况下)把不符合条件的删除。T78子集要画树状图,把思路清晰。可以用暴力法、回溯法和DFS做这个题DFS深度搜索:每个边都走完,再回溯应用:二叉树搜索,图搜索回溯算法=DFS+剪枝T200岛屿数量(非常经典BFS宽度把树状转化成队列形式,lambda匿名函数“一次性的小函数,没有名字”setup语法糖:让代码更简洁好写的语法ref创建:基本类型的
《极简思维》第三部分
小洋苏兮
整理你的人际关系如何改善人际关系?摘录:因为人际关系问题是人们生活中不快乐的主要原因。感想:感觉这个说的挺对,之前我总是埋头学习,不管舍友不管自己的合作伙伴的一些事情,但实际上,这学期关注了之后好多了摘录:“亲密关系与社交会让你健康而快乐。这是基础。太过于关注成就或不太关心人际关系的人都不怎么快乐。基本上来说,人类就是建立在人脉关系上的。”感想:但是如果有时想的太多就不太好,要以一个开放的心态跟别
Spring进阶 - SpringMVC实现原理之DispatcherServlet处理请求的过程
倾听铃的声
后端 spring java mvc 开发语言 分布式
前文我们有了IOC的源码基础以及SpringMVC的基础,我们便可以进一步深入理解SpringMVC主要实现原理,包含DispatcherServlet的初始化过程和DispatcherServlet处理请求的过程的源码解析。本文是第二篇:DispatcherServlet处理请求的过程的源码解析。@pdaiSpring进阶-SpringMVC实现原理之DispatcherServlet处理请求的
JVM 内存模型深度解析:原子性、可见性与有序性的实现
练习时长两年半的程序员小胡
JVM 深度剖析:从面试考点到生产实践 jvm java 内存模型
在了解了JVM的基础架构和类加载机制后,我们需要进一步探索Java程序在多线程环境下的内存交互规则。JVM内存模型(JavaMemoryModel,JMM)定义了线程和主内存之间的抽象关系,它通过规范共享变量的访问方式,解决了多线程并发时的数据一致性问题。本文将从内存模型的核心目标出发,详解原子性、可见性、有序性的实现机制,以及volatile、synchronized等关键字在其中的作用。一、J
Flowable 高级扩展:自定义元素与性能优化实战
练习时长两年半的程序员小胡
Flowable 流程引擎实战指南 流程图 flowable BPMN 流程引擎 java
在前五篇文章中,我们从基础概念、流程设计、API实战、SpringBoot集成,到外部系统协同,逐步构建了Flowable的应用体系。但企业级复杂场景中,原生功能往往难以满足定制化需求——比如需要特殊的审批规则网关、与决策引擎联动实现动态路由,或是在高并发场景下优化流程引擎性能。本文将聚焦Flowable的高级扩展能力,详解如何自定义流程元素、集成规则引擎,并掌握大型系统中的性能调优策略。一、自定
互信息:理论框架、跨学科应用与前沿进展
大千AI助手
人工智能 Python # OTHER 人工智能 深度学习 算法 互信息 香农 通信 随机变量
1.起源与核心定义互信息(MutualInformation,MI)由克劳德·香农(ClaudeShannon)在1948年开创性论文《AMathematicalTheoryofCommunication》中首次提出,该论文奠定了现代信息论的基础。互信息用于量化两个随机变量之间的统计依赖关系,定义为:若已知一个随机变量的取值,能为另一个随机变量提供的信息量。数学上,对于离散随机变量XXX和YYY,
车载刷写架构 --- 刷写思考扩展
汽车电子实验室
电子电器架构——刷写方案 架构 开发语言 关于网关转发性能引起的思考 汽车中央控制单元HPC软件架构 车载诊断进阶篇
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是系统思考、大胆设计、小心求证;三是“一张纸制度”,也就是无论多么复杂的工作内容,要在一张纸上描述清楚;四是要坚决反对虎头蛇尾,反对繁文缛节,反对老
js操作样式
郝加升
DOM样式属性和方法:指定的元素,它的style有这么几个属性和方法:cssText:通过这个属性可以访问到元素的特性style设置的属性,并且可以直接赋值设置。removeProperty(属性名称):从样式中删除给定属性。setProperty(属性名称,值,权重):可以通过这个方法设置给定样式的同时设置其权重,可以传入”important”或者一个空字符串。获取计算后样式:window.ge
C++编程基础与面向对象概念解析
侯昂
面向对象编程 C++语法 函数 类与对象 继承与多态性
C++编程基础与面向对象概念解析背景简介C++是一种广泛使用的面向对象编程语言,它允许开发者创建高效、灵活且功能强大的程序。本文基于《C++Primer》一书的章节内容,深入解析C++的核心概念和面向对象编程原则,旨在帮助读者构建扎实的C++编程基础。面向对象编程的原则软件危机与进化介绍了软件危机的产生和软件进化的必要性,强调了面向对象编程(OOP)在应对这些问题中的优势。面向对象编程范式讨论了面
K8s常用的命令
尚未来-
运维 k8s
一、基础命令查看集群信息bashkubectlcluster-info#显示集群端点和服务信息查看节点bashkubectlgetnodes#列出所有节点kubectldescribenode#查看节点详细信息查看命名空间bashkubectlgetnamespaces#列出所有命名空间切换命名空间bashkubectlconfigset-context--current--namespace=二
Anaconda 和 Miniconda:功能详解与选择建议
古月฿
python入门 python conda
Anaconda和Miniconda详细介绍一、Anaconda的详细介绍1.什么是Anaconda?Anaconda是一个开源的包管理和环境管理工具,在数据科学、机器学习以及科学计算领域发挥着关键作用。它以Python和R语言为基础,为用户精心准备了大量预装库和工具,极大地缩短了搭建数据科学环境的时间。对于那些想要快速开展数据分析、模型训练等工作的人员来说,Anaconda就像是一个一站式的“数
Pandas:数据科学的超级瑞士军刀
科技林总
DeepSeek学AI 人工智能
**——从零基础到高效分析的进化指南**###**一、Pandas诞生:数据革命的救世主****2010年前的数据分析噩梦**:```python#传统Python处理表格数据data=[]forrowincsv_file:ifrow[3]>100androw[2]=="China":data.append(float(row[5])#代码冗长易错!```**核心痛点**:-Excel处理百万行崩
大数据之路:阿里巴巴大数据实践——大数据领域建模综述
为什么需要数据建模核心痛点数据冗余:不同业务重复存储相同数据(如用户基础信息),导致存储成本激增。计算资源浪费:未经聚合的明细数据直接参与计算(如全表扫描),消耗大量CPU/内存资源。数据一致性缺失:同一指标在不同业务线的口径差异(如“活跃用户”定义不同),引发决策冲突。开发效率低下:每次分析需重新编写复杂逻辑,无法复用已有模型。数据建模核心价值性能提升:分层设计(ODS→DWD→DWS→ADS)
学C++的五大惊人好处
为什么要学c++学c++有什么用学习c++的好处有1.中考可以加分2.高考可能直接录取3.就业广且工资高4.在未来30--50年c++一定是一个很受欢迎的职业5.c++成功的例子deepsick等AI智能C++语言兼备编程效率和编译运行效率的语言C++语言是C语言功能增强版,在c语言的基础上添加了面向对象编程和泛型编程的支持既继承了C语言高效,简洁,快速和可移植的传统,又具备类似Java、Go等其
Android 基础知识:Android 应用权限详解
流水mpc
android
这篇文章为大家系统的梳理一下Android权限相关的知识,在日常开发中,我们都用过权限,但是对于权限的一些细节我们可能掌握的还不够全面,这篇文章会全面的为大家介绍权限相关的知识。当然,本篇文章依然是参考了Google的官方文档:应用权限。本文目录一、认识Android权限(一)Android系统为什么需要权限?Android系统设置权限的目的是保护Android用户的隐私。对于用户的敏感数据And
Selenium基础教程
lemontree1945
selenium python 测试工具
1.Selenium环境安装1.1浏览器安装Chrome和ChromeDriver下载地址:https://googlechromelabs.github.io/chrome-for-testing/注意:驱动版本号要和浏览器版本号一致;安装后关闭浏览器自动更新:services.msc:打开系统服务找到和google相关的服务,全部修改为禁用1.2安装第三方库seleniumpipinstall
机器学习必备数学与编程指南:从入门到精通
a小胡哦
机器学习基础 机器学习 人工智能
一、机器学习核心数学基础1.线性代数(神经网络的基础)必须掌握:矩阵运算(乘法、转置、逆)向量空间与线性变换特征值分解与奇异值分解(SVD)为什么重要:神经网络本质就是矩阵运算学习技巧:用NumPy实际操作矩阵运算2.概率与统计(模型评估的关键)核心概念:条件概率与贝叶斯定理概率分布(正态、泊松、伯努利)假设检验与p值应用场景:朴素贝叶斯、A/B测试3.微积分(优化算法的基础)重点掌握:导数与偏导
Android 媒体播放开发完全指南
安卓开发者
Android Jetpack android 媒体 python
引言在当今移动应用生态中,媒体播放功能已成为许多应用的核心组成部分。无论是音乐流媒体应用、视频平台、播客客户端还是游戏应用,都需要强大的媒体播放能力。Android平台提供了丰富的API来支持各种媒体播放场景。本文将全面介绍Android媒体播放的开发技术,从基础到高级功能实现。一、Android媒体播放基础1.1支持的媒体格式Android原生支持多种媒体格式:音频:MP3、AAC、FLAC、W
Android通知(Notification)全面解析:从基础到高级应用
一、Android通知概述通知(Notification)是Android系统中用于在应用之外向用户传递信息的重要机制。当应用需要告知用户某些事件或信息时,可以通过通知在状态栏显示图标,用户下拉通知栏即可查看详细信息。这种机制几乎被所有现代应用采用,用于推送新闻、消息、广告等内容3。与Toast相比,Notification的优势在于:可以长时间停留在通知栏,适合内容较多且需要持久展示的信息支持丰
镜中往事(79)大漠雪(上)
Drosia
“诸位,目前西都上下都在搜寻我们洪盟成员,我私下见过当今西都主事,对方是一个非常爱民的好官,他一定能够让百姓过上好日子,于是我决定,我们洪盟需要去别处发展壮大。”槲枫的眼中有不容动摇的坚定。几位元老都没有说话。“既然盟主决定迁出西都,那洪盟的未来在哪里呢?”“南下,南方物资丰富,商业城市多,可以为洪盟打下好基础。”在场的人几乎都同意了这个建议。“哥哥,有消息说洪盟要迁出西都?”云芙刚刚从洪盟的工具
免费编程课程大汇总:从入门到精通的一站式资源
大力出奇迹985
人工智能 大数据
在数字化时代,编程已成为一项至关重要的技能,无论是为了职业发展还是个人兴趣,学习编程都极具价值。本文精心汇总了丰富的免费编程课程资源,涵盖从基础入门到精通的各个阶段。通过全面介绍如Coursera、edX等在线学习平台,Codecademy、freeCodeCamp等交互式学习网站,以及B站、网易云课堂等视频课程平台的免费课程,为编程学习者提供了一站式的资源指南,帮助读者轻松开启编程学习之旅,逐步
AI 生成虚拟宠物:24 小时陪你聊天解闷
大力出奇迹985
人工智能 宠物
本文围绕AI生成虚拟宠物展开,介绍这类依托人工智能技术诞生的虚拟伙伴,能实现24小时不间断陪伴聊天,为人们解闷。文中详细阐述其技术基础,包括自然语言处理、机器学习等;分析多样功能,如个性化互动、情绪回应等;探讨在独居人群、压力大者等不同群体中的应用场景,最后总结其为人们生活带来的积极影响及未来发展潜力,展现AI虚拟宠物在陪伴领域的独特价值。一、AI生成虚拟宠物的诞生背景与技术基石在快节奏的现代社会
用代码生成艺术字:设计个性化海报的秘密
本文围绕“用代码生成艺术字:设计个性化海报的秘密”展开,先概述代码生成艺术字在海报设计中的独特价值,接着介绍常用的代码工具(如HTML、CSS、JavaScript等),详细阐述从构思到实现的完整流程,包括字体样式设计、动态效果添加等,还分享了提升艺术字质感的技巧及实际案例。最后总结代码生成艺术字的优势,为设计师提供打造个性化海报的实用指南,助力提升海报设计的独特性与吸引力,符合搜索引擎SEO标准
用 Python 开发小游戏:零基础也能做出《贪吃蛇》
本文专为零基础学习者打造,详细介绍如何用Python开发经典小游戏《贪吃蛇》。无需复杂编程知识,从环境搭建到代码编写、功能实现,逐步讲解核心逻辑与操作。涵盖Pygame库的基础运用、游戏界面设计、蛇的移动与食物生成规则等,让新手能按步骤完成开发,同时融入SEO优化要点,帮助读者轻松入门Python游戏开发,体验从0到1做出游戏的乐趣。一、为什么选择用Python开发《贪吃蛇》对于零基础学习者来说,
文科生转行编程:从月薪 3 千到 2 万的真实经历
在当下就业市场中,文科生往往面临诸多挑战,薪资水平也不尽如人意。然而,有不少勇敢的文科生成功实现了向编程领域的转行,薪资更是实现了从月薪3千到2万的飞跃。本文将深入剖析文科生转行编程的真实经历,从最初对现状的不满萌生出转行念头,到如何艰难地开启学习之旅,克服基础薄弱、思维转换难等重重困难,再到求职时凭借策略与努力获得宝贵机会,以及入职后持续学习保持竞争力。希望通过这些真实历程,为有志于转行编程的文
AI人工智能中的数据挖掘:提升智能决策能力
AI人工智能中的数据挖掘:提升智能决策能力关键词:数据挖掘、人工智能、机器学习、智能决策、数据分析、特征工程、模型优化摘要:本文深入探讨了数据挖掘在人工智能领域中的核心作用,重点分析了如何通过数据挖掘技术提升智能决策能力。文章从基础概念出发,详细介绍了数据挖掘的关键算法、数学模型和实际应用场景,并通过Python代码示例展示了数据挖掘的全流程。最后,文章展望了数据挖掘技术的未来发展趋势和面临的挑战
lesson20:Python函数的标注
你的电影很有趣
python 开发语言
目录引言:为什么函数标注是现代Python开发的必备技能一、函数标注的基础语法1.1参数与返回值标注1.2支持的标注类型1.3Python3.9+的重大改进:标准集合泛型二、高级标注技巧与最佳实践2.1复杂参数结构标注2.2函数类型与回调标注2.3变量注解与类型别名三、静态类型检查工具应用3.1mypy:最流行的类型检查器3.2Pyright与IDE集成3.3运行时类型验证四、函数标注的工程价值与
K8S 常用命令全解析:高效管理容器化集群
恩爸编程
docker kubernetes 容器 k8s常用命令 k8s有哪些常用命令 k8s命令有哪些 K8S常用命令有哪些
K8S常用命令全解析:高效管理容器化集群一、引言Kubernetes(K8S)作为强大的容器编排平台,其丰富的命令行工具(kubectl)为用户提供了便捷的方式来管理集群中的各种资源。熟练掌握K8S常用命令对于开发人员和运维人员至关重要,能够有效提高容器化应用的部署、监控与维护效率。本文将详细介绍一些K8S常用命令及其使用案例。二、基础资源操作命令(一)kubectlcreate功能:用于创建K8
java Illegal overloaded getter method with ambiguous type for propert的解决
zwllxs
java jdk
好久不来iteye,今天又来看看,哈哈,今天碰到在编码时,反射中会抛出
Illegal overloaded getter method with ambiguous type for propert这么个东东,从字面意思看,是反射在获取getter时迷惑了,然后回想起java在boolean值在生成getter时,分别有is和getter,也许我们的反射对象中就有is开头的方法迷惑了jdk,
IT人应当知道的10个行业小内幕
beijingjava
工作 互联网
10. 虽然IT业的薪酬比其他很多行业要好,但有公司因此视你为其“佣人”。
尽管IT人士的薪水没有互联网泡沫之前要好,但和其他行业人士比较,IT人的薪资还算好点。在接下的几十年中,科技在商业和社会发展中所占分量会一直增加,所以我们完全有理由相信,IT专业人才的需求量也不会减少。
然而,正因为IT人士的薪水普遍较高,所以有些公司认为给了你这么多钱,就把你看成是公司的“佣人”,拥有你的支配
java 实现自定义链表
CrazyMizzz
java 数据结构
1.链表结构
链表是链式的结构
2.链表的组成
链表是由头节点,中间节点和尾节点组成
节点是由两个部分组成:
1.数据域
2.引用域
3.链表的实现
&nbs
web项目发布到服务器后图片过一会儿消失
麦田的设计者
struts2 上传图片 永久保存
作为一名学习了android和j2ee的程序员,我们必须要意识到,客服端和服务器端的交互是很有必要的,比如你用eclipse写了一个web工程,并且发布到了服务器(tomcat)上,这时你在webapps目录下看到了你发布的web工程,你可以打开电脑的浏览器输入http://localhost:8080/工程/路径访问里面的资源。但是,有时你会突然的发现之前用struts2上传的图片
CodeIgniter框架Cart类 name 不能设置中文的解决方法
IT独行者
CodeIgniter Cart 框架
今天试用了一下CodeIgniter的Cart类时遇到了个小问题,发现当name的值为中文时,就写入不了session。在这里特别提醒一下。 在CI手册里也有说明,如下:
$data = array(
'id' => 'sku_123ABC',
'qty' => 1,
'
linux回收站
_wy_
linux 回收站
今天一不小心在ubuntu下把一个文件移动到了回收站,我并不想删,手误了。我急忙到Nautilus下的回收站中准备恢复它,但是里面居然什么都没有。 后来我发现这是由于我删文件的地方不在HOME所在的分区,而是在另一个独立的Linux分区下,这是我专门用于开发的分区。而我删除的东东在分区根目录下的.Trash-1000/file目录下,相关的删除信息(删除时间和文件所在
jquery回到页面顶端
知了ing
html jquery css
html代码:
<h1 id="anchor">页面标题</h1>
<div id="container">页面内容</div>
<p><a href="#anchor" class="topLink">回到顶端</a><
B树、B-树、B+树、B*树
矮蛋蛋
B树
原文地址:
http://www.cnblogs.com/oldhorse/archive/2009/11/16/1604009.html
B树
即二叉搜索树:
1.所有非叶子结点至多拥有两个儿子(Left和Right);
&nb
数据库连接池
alafqq
数据库连接池
http://www.cnblogs.com/xdp-gacl/p/4002804.html
@Anthor:孤傲苍狼
数据库连接池
用MySQLv5版本的数据库驱动没有问题,使用MySQLv6和Oracle的数据库驱动时候报如下错误:
java.lang.ClassCastException: $Proxy0 cannot be cast to java.sql.Connec
java泛型
百合不是茶
java泛型
泛型
在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,任意化的缺点就是要实行强制转换,这种强制转换可能会带来不安全的隐患
泛型的特点:消除强制转换 确保类型安全 向后兼容
简单泛型的定义:
泛型:就是在类中将其模糊化,在创建对象的时候再具体定义
class fan
javascript闭包[两个小测试例子]
bijian1013
JavaScript JavaScript
一.程序一
<script>
var name = "The Window";
var Object_a = {
name : "My Object",
getNameFunc : function(){
var that = this;
return function(){
探索JUnit4扩展:假设机制(Assumption)
bijian1013
java Assumption JUnit 单元测试
一.假设机制(Assumption)概述 理想情况下,写测试用例的开发人员可以明确的知道所有导致他们所写的测试用例不通过的地方,但是有的时候,这些导致测试用例不通过的地方并不是很容易的被发现,可能隐藏得很深,从而导致开发人员在写测试用例时很难预测到这些因素,而且往往这些因素并不是开发人员当初设计测试用例时真正目的,
【Gson四】范型POJO的反序列化
bit1129
POJO
在下面这个例子中,POJO(Data类)是一个范型类,在Tests中,指定范型类为PieceData,POJO初始化完成后,通过
String str = new Gson().toJson(data);
得到范型化的POJO序列化得到的JSON串,然后将这个JSON串反序列化为POJO
import com.google.gson.Gson;
import java.
【Spark八十五】Spark Streaming分析结果落地到MySQL
bit1129
Stream
几点总结:
1. DStream.foreachRDD是一个Output Operation,类似于RDD的action,会触发Job的提交。DStream.foreachRDD是数据落地很常用的方法
2. 获取MySQL Connection的操作应该放在foreachRDD的参数(是一个RDD[T]=>Unit的函数类型),这样,当foreachRDD方法在每个Worker上执行时,
NGINX + LUA实现复杂的控制
ronin47
nginx lua
安装lua_nginx_module 模块
lua_nginx_module 可以一步步的安装,也可以直接用淘宝的OpenResty
Centos和debian的安装就简单了。。
这里说下freebsd的安装:
fetch http://www.lua.org/ftp/lua-5.1.4.tar.gz
tar zxvf lua-5.1.4.tar.gz
cd lua-5.1.4
ma
java-递归判断数组是否升序
bylijinnan
java
public class IsAccendListRecursive {
/*递归判断数组是否升序
* if a Integer array is ascending,return true
* use recursion
*/
public static void main(String[] args){
IsAccendListRecursiv
Netty源码学习-DefaultChannelPipeline2
bylijinnan
java netty
Netty3的API
http://docs.jboss.org/netty/3.2/api/org/jboss/netty/channel/ChannelPipeline.html
里面提到ChannelPipeline的一个“pitfall”:
如果ChannelPipeline只有一个handler(假设为handlerA)且希望用另一handler(假设为handlerB)
来
Java工具之JPS
chinrui
java
JPS使用
熟悉Linux的朋友们都知道,Linux下有一个常用的命令叫做ps(Process Status),是用来查看Linux环境下进程信息的。同样的,在Java Virtual Machine里面也提供了类似的工具供广大Java开发人员使用,它就是jps(Java Process Status),它可以用来
window.print分页打印
ctrain
window
function init() {
var tt = document.getElementById("tt");
var childNodes = tt.childNodes[0].childNodes;
var level = 0;
for (var i = 0; i < childNodes.length; i++) {
安装hadoop时 执行jps命令Error occurred during initialization of VM
daizj
jdk hadoop jps
在安装hadoop时,执行JPS出现下面错误
[slave16]
[email protected] :/tmp/hsperfdata_hdfs# jps
Error occurred during initialization of VM
java.lang.Error: Properties init: Could not determine current working
PHP开发大型项目的一点经验
dcj3sjt126com
PHP 重构
一、变量 最好是把所有的变量存储在一个数组中,这样在程序的开发中可以带来很多的方便,特别是当程序很大的时候。变量的命名就当适合自己的习惯,不管是用拼音还是英语,至少应当有一定的意义,以便适合记忆。变量的命名尽量规范化,不要与PHP中的关键字相冲突。 二、函数 PHP自带了很多函数,这给我们程序的编写带来了很多的方便。当然,在大型程序中我们往往自己要定义许多个函数,几十
android笔记之--向网络发送GET/POST请求参数
dcj3sjt126com
android
使用GET方法发送请求
private static boolean sendGETRequest (String path,
Map<String, String> params) throws Exception{
//发送地http://192.168.100.91:8080/videoServi
linux复习笔记 之bash shell (3) 通配符
eksliang
linux 通配符 linux通配符
转载请出自出处:
http://eksliang.iteye.com/blog/2104387
在bash的操作环境中有一个非常有用的功能,那就是通配符。
下面列出一些常用的通配符,如下表所示 符号 意义 * 万用字符,代表0个到无穷个任意字符 ? 万用字符,代表一定有一个任意字符 [] 代表一定有一个在中括号内的字符。例如:[abcd]代表一定有一个字符,可能是a、b、c
Android关于短信加密
gqdy365
android
关于Android短信加密功能,我初步了解的如下(只在Android应用层试验):
1、因为Android有短信收发接口,可以调用接口完成短信收发;
发送过程:APP(基于短信应用修改)接受用户输入号码、内容——>APP对短信内容加密——>调用短信发送方法Sm
asp.net在网站根目录下创建文件夹
hvt
.net C# hovertree asp.net Web Forms
假设要在asp.net网站的根目录下建立文件夹hovertree,C#代码如下:
string m_keleyiFolderName = Server.MapPath("/hovertree");
if (Directory.Exists(m_keleyiFolderName))
{
//文件夹已经存在
return;
}
else
{
try
{
D
一个合格的程序员应该读过哪些书
justjavac
程序员 书籍
编者按:2008年8月4日,StackOverflow 网友 Bert F 发帖提问:哪本最具影响力的书,是每个程序员都应该读的?
“如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本, 你会选择哪本书呢?我希望这个书单列表内容丰富,可以涵盖很多东西。”
很多程序员响应,他们在推荐时也写下自己的评语。 以前就有国内网友介绍这个程序员书单,不过都是推荐数
单实例实践
跑龙套_az
单例
1、内部类
public class Singleton {
private static class SingletonHolder {
public static Singleton singleton = new Singleton();
}
public Singleton getRes
PO VO BEAN 理解
q137681467
VO DTO po
PO:
全称是 persistant object持久对象 最形象的理解就是一个PO就是数据库中的一条记录。 好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。
BO:
全称是 business object:业务对象 主要作用是把业务逻辑封装为一个对象。这个对
战胜惰性,暗自努力
金笛子
努力
偶然看到一句很贴近生活的话:“别人都在你看不到的地方暗自努力,在你看得到的地方,他们也和你一样显得吊儿郎当,和你一样会抱怨,而只有你自己相信这些都是真的,最后也只有你一人继续不思进取。”很多句子总在不经意中就会戳中一部分人的软肋,我想我们每个人的周围总是有那么些表现得“吊儿郎当”的存在,是否你就真的相信他们如此不思进取,而开始放松了对自己的要求随波逐流呢?
我有个朋友是搞技术的,平时嘻嘻哈哈,以
NDK/JNI二维数组多维数组传递
wenzongliang
二维数组 jni NDK
多维数组和对象数组一样处理,例如二维数组里的每个元素还是一个数组 用jArray表示,直到数组变为一维的,且里面元素为基本类型,去获得一维数组指针。给大家提供个例子。已经测试通过。
Java_cn_wzl_FiveChessView_checkWin( JNIEnv* env,jobject thiz,jobjectArray qizidata)
{
jint i,j;
int s