之前不久,由于自己平时涉猎还算广泛,总结了一篇博客: 这些JavaScript编程黑科技,装逼指南,高逼格代码,让你惊叹不已 ,没想到受到了大家的欢迎,有人希望能博主还能整理个 CSS
的一些黑魔法小技巧,无奈我 CSS
一直很渣,没什么干货,最近写了一个 Chrome
插件 GayHub ,算是把 GitHub
的样式审查了个变,在写的过程中,也收获了很多关于 CSS
的小技巧,尤其是开始的第一个技巧,学习到了很多,于是再加上一波搜集,就诞生这篇博文,欢迎补充~~~:joy:。
1、利用 CSS
的 content
属性 attr
抓取资料
需求
鼠标悬浮实现一个提示的文字,类似github的这种,如图:
想必大家都想到了伪元素 after
,但是文字怎么获得呢,又不能用 JavaScript
。
CSS
的伪元素是个很強大的东西,我们可以利用他做很多运用,通常为了做一些效果, content:" "
多半会留空,但其实可以在里面写上 attr
抓资料哦!
<div data-msg="Open this file in Github Desktop">
hover
</div>
div{
width:100px;
border:1px solid red;
position:relative;
}
div:hover:after{
content:attr(data-msg);
position:absolute;
font-size: 12px;
width:200%;
line-height:30px;
text-align:center;
left:0;
top:25px;
border:1px solid green;
}
在 attr
里面塞入我们在 html
新增的 data-msg
属性,这样伪元素 (:after)
就会得到该值。
最终效果
同样的,你还可以结合其他强大的选择器使用,例如: 使用属性选择器选择空链接
显示没有文本值但是 href
属性具有链接的 a
元素的链接:
a[href^="http"]:empty::before {
content: attr(href);
}
这样做很方便。
2、利用用 :valid
和 :invalid
来做表单即时校验
需求
让表单检验变得简单优雅,不需要写冗长的 JS 代码来校验设置样式
html5
丰富了表单元素,提供了类似 required
, email
, tel
等表单元素属性。同样的,我们可以利用 :valid
和 :invalid
来做针对html5表单属性的校验。
-
:required
伪类指定具有required 属性的表单元素 -
:valid
伪类指定一个通过匹配正确的所要求的表单元素 -
:invalid
伪类指定一个不匹配指定要求的表单元素
代码
<div class="container">
<div class="row" style="margin-top: 2rem;">
<form>
<div class="form-group">
<label>name</label>
<input type="text" required placeholder="请输入名称">
</div>
<div class="form-group">
<label>email</label>
<input type="email" required placeholder="请输入邮箱">
</div>
<div class="form-group">
<label>homepage</label>
<input type="url" placeholder="请输入博客url">
</div>
<div class="form-group">
<label>Comments</label>
<textarea required></textarea>
</div>
</form>
</div>
</div>
.valid {
border-color: #429032;
box-shadow: inset 5px 0 0 #429032;
}
.invalid {
border-color: #D61D1D;
box-shadow: inset 5px 0 0 #D61D1D;
}
.form-group {
width: 32rem;
padding: 1rem;
border: 1px solid transparent;
&:hover {
border-color: #eee;
transition: border .2s;
}
label {
display: block;
font-weight: normal;
}
input,
textarea {
display: block;
width: 100%;
line-height: 2rem;
padding: .5rem .5rem .5rem 1rem;
border: 1px solid #ccc;
outline: none;
&:valid {
@extend .valid;
}
&:invalid {
@extend .invalid;
}
}
}
更多伪元素技巧可以参看这篇文章:你不知道的CSS
最终效果
3、利用 nth-of-type
选择某范围内的子元素
需求
table表格红绿相间,显示的更加直观
代码
<table>
<tbody>
<tr>
<td>1</td>
</tr>
<tr>
<td>2</td>
</tr>
<tr>
<td>3</td>
</tr>
<tr>
<td>4</td>
</tr>
<tr>
<td>5</td>
</tr>
<tr>
<td>6</td>
</tr>
</tbody>
</table>
tbody tr:nth-of-type(2n){
background-color: red;
}
tbody tr:nth-of-type(2n+1){
background-color: green;
}
最终效果
你也这样来做,选择5-10的子元素。
table tr:nth-child(n+5):nth-child(-n+10) {
background-color: red;
}
4、让文字像古诗一样竖着呈现
需求
有时候,需要容器的文字从上到下排列,而不是从左往右排列,如图所示:
这是segmentfault的回到顶部,他的实现很简单,就是设置一定宽度让其折行,如果我要实现这种需求呢?
代码
writing-mode
这个 CSS
属性,我们是不是很少见到,很少用到!我们往往称不常见的东西为“生僻”,就像是不常见的文字我们叫“生僻字”,因此不常见的 CSS
属性,我们可以叫做“生僻属性”, writing-mode
给我们的感觉就是一个“生僻属性”,很弱,可有可无。这个属性可以追溯到 IE 5.5
时代,兼容性是相当好的。
<h4>咏柳</h4>
<p>碧玉妆成一树高,<br>万条垂下绿丝绦。<br>不知细叶谁裁出,<br>二月春风似剪刀。</p>
<div class="verticle-mode">
<h4>咏柳</h4>
<p>碧玉妆成一树高,<br>万条垂下绿丝绦。<br>不知细叶谁裁出,<br>二月春风似剪刀。</p>
.verticle-mode {
writing-mode: tb-rl;
-webkit-writing-mode: vertical-rl;
writing-mode: vertical-rl;
}
/* IE7比较弱,需要做点额外的动作 */
.verticle-mode {
*width: 120px;
}
.verticle-mode h4,
.verticle-mode p {
*display: inline;
*writing-mode: tb-rl;
}
.verticle-mode h4 {
*float:right;
}
最终效果
更多细节与讨论请移步张鑫旭老师的这篇文章: 改变CSS世界纵横规则的writing-mode属性
5、实现鼠标悬浮内容自动撑开的过渡动画
需求
需要为一个列表添加个动画,容器的高度是不确定的,也就是高度为 auto
,悬浮时候撑开内容有个过渡动画
如下图所示:
而用 CSS3
实现的话,由于高度的不确定,而 transtion
是需要具体的树枝,所以设置 height:auto
是无法实现效果的,可以通过 max-height
这个属性间接的实现这么个效果, css
样式是这样的:
代码
<ul>
<li>
<div class="hd"> 列表1 </div>
<div class="bd">列表内容<br>内容列表内容<br>内容列表内容<br>内容</div>
</li>
<li>
<div class="hd"> 列表1 </div>
<div class="bd">列表内容<br>内容列表内容<br>内容列表内容<br>内容</div>
</li>
<li>
<div class="hd"> 列表1 </div>
<div class="bd">列表内容<br>内容列表内容<br>内容列表内容<br>内容</div>
</li>
</ul>
.bd {
max-height:0;
overflow:hidden;
transition: all 1s ease-out;
}
li:hover .bd {
max-height: 600px;
transition-timing-function: ease-in;
}
最终效果
跟前面 GIF
差不多,这里就不录 GIF
了,有兴趣的可以自己尝试感受一下
6、利用 pointer-events
禁用 a
标签事件效果
需求:
在做 tab
切换的时候,当选中当前项,禁用当前标签的事件,只有切换其他 tab
的时候,才重新请求新的数据。
pointer-events
是一个用于 HTML
指针事件的属性。
pointer-events
可以禁用 HTML
元素的 hover/focus/active
等动态效果。
默认值为 auto
,语法: pointer-events: auto | none | visiblepainted | visiblefill | visiblestroke | visible | painted | fill | stroke | all;
代码
<ul>
<li>
<a class="tab" href="https://google.com">aaa</a>
</li>
<li>
<a class="tab active" href="https://facebook.com">bbb</a>
</li>
<li>
<a class="tab" href="https://stackoverflow.com">ccc</a>
</li>
</ul>
.active{
pointer-events: none;
}
最终效果
好像没什么效果:joy:
7、 CSS
如何实现文字两端对齐
需求
红框所在的文字有四个字的、三个字的、两个字的,如果不两端对齐可以选择居中对齐,或者右对齐。但是如果要想文字两端对齐呢?
代码
<div>姓名</div>
<div>手机号码</div>
<div>验证码</div>
<div>账号</div>
<div>密码</div>
div{
margin:10px 0;
width:100px;
border:1px solid red;
text-align-last: justify;
}
最终效果
8、使用 :not()
去除导航上不需要的属性
需求
有时候导航栏需要之间需要用逗号,进行隔离,但是最后一个不需要
代码
<ul class="nav">
<li>a</li>
<li>b</li>
<li>c</li>
<li>d</li>
<li>e</li>
</ul>
li{
list-style:none;
margin-bottom:10px;
display:inline-block;
}
ul > li:not(:last-child)::after {
content: ",";
}
当然,你可以使用 .nav li + li
(不包括第一个li) 或者 .nav li:first-child ~ li
(不包括最后一个li), 但是使用 :not()
的意图特别清晰, CSS
选择器按照人类描述它的方式定义边框。
最后效果
或者,你已经学习了一些关于 使用 :not(),你还可以尝试:
/* 选择1到3的元素并显示 */
li:not(:nth-child(-n+3)){
display: none;
}
9、移动web页面支持弹性滚动
需求
在IOS机型中,非body元素的滚动条会非常不流畅,又不想用JS模拟滚动条。
传统 pc
端中,子容器高度超出父容器高度,通常使用 overflow:auto
可出现滚动条拖动显示溢出的内容,而移动 web
开发中,由于浏览器厂商的系统不同、版本不同,导致有部分机型尤其是 IOS
机型不支持弹性滚动,从而在开发中制造了所谓的 BUG
。
代码
body{
-webkit-overflow-scrolling: touch; /* ios5+ */
}
ele{
overflow:auto;
}
-webkit-overflow-scrolling
属性具有继承效果,所以在 body
上设置即可,这样局部滚动条就非常的流畅了。
最终效果
所有滚动条都相当的流畅了
10、美化浏览器自带的 radio
, checkbox
属性
需求
设计师:你那个单选框按钮好丑啊,跟我的设计稿差好远。程序员:我有什么办法,浏览器就是这样的。。。
记得刚开始写页面时候,被浏览器各种默认的 UI
样式恶心到了,当初确实也没啥办法,反正也不影响功能,就那样吧。
先讲一下原理:checkbox hack技术
我们使用 CSS
一些特殊的选择器,然后配合单选框以及复选框自带的一些特性,可以实现元素的显示隐藏效果。然后通过一些简单的扩展,我们可以不使用任何 JavaScript
代码实现类似:自定义的单复选框,“更多”展开与收起效果,选项卡切换效果,或是多级下拉列表效果等等。
相信很多前端开发人员都会遇到 boss
让修改 checkbox
和 radio
样式,毕竟自带的样式太丑了。后来我们发现修改自带样式并不是那么容易,最后直接使出杀手锏——点击之后替换图片。
今天教大家一种方法,不用替换图片,随意修改样式。
先讲一下原理:两个关键东东,一是伪类选择器 :checked
,表示对应控件元素(单选框或是复选框)选中时的样式;二就是加号 +
相邻兄弟选择器,这个符号表示选择后面的兄弟节点。于是,两者配合,就可以轻松自如控制后面元素的显示或者隐藏,或是其他样式了。
而如何让单复选框选中和不选中了,那就是 label
标签了哈, for
属性锚定对应的单选框或是复选框,然后点击这里的 label
标签元素的时候,对应的单复选框就会选中或是取消选中。然后,就有上面的效果啦!
代码
这里只给一个 radio
单选框的代码,仅供参考:
<div class="radio-beauty-container">
<label>
<span class="radio-name">前端工程师</span>
<input type="radio" name="radioName" id="radioName1" hidden/>
<label for="radioName1" class="radio-beauty"></label>
</label>
<label>
<span class="radio-name">后端工程师</span>
<input type="radio" name="radioName" id="radioName2" hidden/>
<label for="radioName2" class="radio-beauty"></label>
</label>
<label>
<span class="radio-name">全栈工程师</span>
<input type="radio" name="radioName" id="radioName3" hidden/>
<label for="radioName3" class="radio-beauty"></label>
</label>
</div>
.radio-beauty-container {
font-size: 0;
$bgc: green;
%common {
padding: 2px;
background-color: $bgc;
background-clip: content-box;
}
.radio-name {
vertical-align: middle;
font-size: 16px;
}
.radio-beauty {
width: 18px;
height: 18px;
box-sizing: border-box;
display: inline-block;
border: 1px solid $bgc;
vertical-align: middle;
margin: 0 15px 0 3px;
border-radius: 50%;
&:hover {
box-shadow: 0 0 7px $bgc;
@extend %common;
}
}
input[type="radio"]:checked+.radio-beauty {
@extend %common;
}
}
最终效果
美化radio单选框在线预览地址: 点击我呀
美化checkbox复选框在线预览地址: 点击我呀
更多关于这方面的介绍和例子可以参看 张鑫旭 大神的这篇文章: CSS radio/checkbox单复选框元素显隐技术
11、改变 input
焦点光标的颜色
需求
设计师觉得默认的光标颜色有点与整体设计风格不符合,有点突兀,想换成红色的
代码
<input value="This field uses a default caret." />
<input class="custom" value="I have a custom caret color!" />
input {
caret-color: auto;
display: block;
margin-bottom: .5em;
}
input.custom {
caret-color: red;
}
最终效果
12、 rem
布局不再使用 JavaScript
设置
这里不探讨 rem
的原理以及细节,还不熟悉的童鞋建议去恶补一下。
需求
有时候,移动端用 rem
布局时候,根据不同的屏幕宽度要设置不同的 font-size
来做到适配,要写一坨 JS
来设置,能不能不用JS呢?
例如:以 750px
设计稿作为基准,根节点设置 font-size
为 100px
,只考虑 DPR
为 2
的情况,只考虑最简单的情况
document.querySelector('html').style.fontSize = `${window.innerWidth / 7.5 }px`;
代码
现在移动端 css3
单位 vw
, wh
兼容性已经很不错了,在不需要兼容太低版本的安卓机情况下可以这样来:
html{
font-size: 100vw / 750
}
最终结果
就这么简单的设置, rem
就可以使用了
13、利用 transparent
属性实现各种三角形,提示框
需求
在不使用图片的情况,实现一个简单的三角形箭头
代码
#triangle-right {
width: 0;
height: 0;
border-top: 50px solid transparent;
border-left: 100px solid red;
border-bottom: 50px solid transparent;
}
最终效果
复杂点的话,同样的原理还可以实现一个 五角星 ,原理都是利用 transparent
的透明属性。
14、让网站所有图片变成黑白色彩的
需求
记得2008年时候汶川大地震时候,很多网站图片都变成黑白色彩悼念逝者
代码
<img src="https://user-gold-cdn.xitu.io/2017/9/25/0844cf44a8d8c4ed026d6c488a6e9b80?
imageView2/1/w/500/h/200/q/85/interlace/1" alt="" class="desaturate">
img.desaturate {
filter: grayscale(100%);
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%);
-o-filter: grayscale(100%);
}
最终效果
15、实现文字的波浪线效果
需求
实现文字波浪线的强调效果,如图所示
相信大家对于 text-decoration
这个属性并不陌生,在重置 a
标签的默认样式时,我们经常要这样写: text-decoration: none;
可能对它了解的人也很少,实际上 text-decoration
是一个复合属性,由 line
、 style
和 color
组成。
所以我们可以实现这样的效果:
可惜的是 line
只有 underline
(下划线)、 overline
(上划线)和 line-through
(删除线)。如果突然需要下划波浪线,怎么办呢?不要急,神奇的 CSS
会帮你做到的。首先,你需要先了解一下 渐变的使用技巧 。
说一下这里的思路,我们首先要用两段渐变构造一个基本元素:'X'(这里我就不放图了),下一步就比较重要了,我们要截取'X'的上半部分,得到一个'V',从而结合 repeat
形成波浪线。下面是用 scss
写的一个 mixin
,方便以后使用。
代码
@mixin waveline($color,$h) {
position: relative;
&::after {
content: '';
display: block;
position: absolute;
top: 100%;
left: 0;
width: 100%;
height: $h;
background: linear-gradient(135deg, transparent, transparent 45%, $color, transparent 55%, transparent 100%),
linear-gradient(45deg, transparent, transparent 45%, $color, transparent 55%, transparent 100%);
background-size: $h * 2 $h * 2;
}
}
最终效果
兼容性
这些技巧在当前版本的 Chrome
, Firefox
, Safari
, 以及 Edge
, 和 IE11
可以工作,移动端基本都没问题, IE
重度开发者慎用。
相关兼容性自行查找: https://caniuse.com/
推荐一波
有趣的 GitHub 仓库
国服第一切图仔的 CSS 仓库:你想知道的 CSS 奇技淫巧,在这里,都有。 iCSS -- interesting css
相关推荐
中国全国AI人工智能产业链关系2018-2024集中度指标按地区分销售财务情况产业话语权指标等 数据来源:基于国内各部委公布数据及各地统计数据整理,或相关省、市数据 数据范围:全国、或各省份地市的统计数据 数据期间:(参见其文件名的标识表达了数据年度、或月度日度期间) 主要指标: 包含的数据文件有: 中国全国AI人工智能产业链产业基本情况2020-2024.zip 中国全国AI人工智能产业链产业上市公司按地区分销售情况统计表2020-2024.zip 中国全国AI人工智能产业链产业上市公司财务情况统计表2020-2024.zip 中国全国AI人工智能产业链产业上市公司销售情况统计表2020-2024.zip 中国全国AI人工智能产业链产业政策信息表2020-2024.zip 中国全国AI人工智能产业链关系表2024.zip 中国全国AI人工智能产业链集中度指标表2020-2024.zip 中国全国AI人工智能产业链名单2024.zip 中国全国AI人工智能产业链企业基本信息表2018-202501.zip 中国全国AI人工智能产业链企业名单2024.zip 中国全国AI人工智能产业链上市公司产业话语权指标表2020-2024.zip (近百MB数据的网盘链接)
注意事项: 1、运行游戏方法 :双击 “侠客英雄传3.bat” 运行。 2、更换光碟提示: 使用 CTRL+F4 组合键后 按空格即可跳过。
内容概要:本文详细介绍了两相交错并联Buck/Boost变换器的建模与仿真,重点探讨了三种不同的控制方式及其性能表现。首先,文章描述了模型的基本架构,包括两个桥臂共用直流母线,MOSFET采用理想的双向开关,电流传感器安装在电感支路上。接着,分别讨论了开环控制、电压单环控制和电压电流双闭环控制的具体实现方法和优缺点。开环模式适用于观察硬件参数的影响,电压单环控制虽然稳定但在负载突变时响应较慢,而双闭环控制能够显著提高系统的动态响应和电流均流效果。此外,文章还分享了一些实用的仿真技巧,如正确设置死区时间和仿真步长,确保仿真的准确性和效率。 适合人群:电力电子工程师、科研人员、高校师生等对DC-DC变换器设计和仿真感兴趣的读者。 使用场景及目标:①研究两相交错并联Buck/Boost变换器的工作原理和控制策略;②优化变换器的设计参数,提高系统的稳定性和效率;③掌握Matlab/Simulink进行复杂电力电子系统仿真的方法和技术。 其他说明:文中提供了详细的代码片段和仿真波形,帮助读者更好地理解和应用相关理论和技术。
ffmpeg7.0 + sdl3.0 播放音频
内容概要:本文深入探讨了基于龙贝格观测器的永磁同步电机(PMSM)无传感器控制技术。首先介绍了龙贝格观测器相较于传统滑模观测器(SMO)的优势,特别是在减少系统抖振方面表现突出。接着详细解释了龙贝格观测器的工作原理,包括状态预测、误差补偿以及角度解算三大核心步骤,并提供了具体的代码实现。文中还讨论了实际工程应用中的挑战,如参数选择、噪声处理等问题,并给出了相应的解决方案。此外,文章通过实验数据展示了龙贝格观测器在不同工况下的性能优势,尤其是在高速和低速情况下的稳定性和响应速度。 适合人群:从事电机控制系统研究与开发的技术人员,尤其是关注无传感器控制领域的工程师。 使用场景及目标:适用于希望提升PMSM无传感器控制系统的稳定性、精确度的研发团队。主要目标是在保持高性能的同时降低系统复杂度,提高产品竞争力。 其他说明:文中不仅分享了理论知识和技术细节,还提供了大量实用的经验技巧,帮助读者更好地理解和应用龙贝格观测器进行实际项目开发。
内容概要:本文深入探讨了永磁同步电机(PMSM)伺服系统的转动惯量和阻尼系数的在线辨识方法。文中介绍了两种主要的辨识方程:一种用于空载工况,另一种用于负载工况。通过详细的数学推导和Python、C、MATLAB代码示例,展示了如何在不同工况下精准辨识这些参数。此外,还讨论了1.5拍延时补偿、全电压前馈补偿和相电压重构等关键技术,以提高辨识精度和系统稳定性。仿真结果显示,在空载和负载突变情况下,辨识误差分别低于0.8%和2.3%。 适合人群:从事电机控制、自动化控制领域的研究人员和技术人员,尤其是对PMSM伺服系统感兴趣的工程师。 使用场景及目标:适用于需要在线辨识PMSM伺服系统转动惯量和阻尼系数的应用场合,如工业机器人、数控机床等。目标是在不影响正常生产的情况下,实时监测和调整电机参数,提升系统性能。 其他说明:本文不仅提供了理论推导和算法实现,还给出了具体的代码示例和仿真结果,便于读者理解和应用。同时,文中提到的技术可以作为其他类似算法验证的良好参考。
# 基于Arduino的精确计时与PWM控制系统 ## 项目简介 本项目基于Arduino的TimerOne库,该库是Arduino平台上用于精确计时和PWM控制的开源库。主要面向Arduino板上的ATmega系列微控制器,可实现设置定时器、产生PWM信号、定时中断等功能,用于精确控制时间和电机速度。 ## 项目的主要特性和功能 1. 初始化定时器,设置初始参数。 2. 根据用户指定微秒数设置定时器周期。 3. 设定PWM输出的占空比,控制PWM输出大小。 4. 启动和停止PWM输出。 5. 设定和停止中断服务例行程序。 6. 重新启动和重置定时器。 7. 停止定时器计数。 8. 读取当前定时器的计数值并转换为微秒数。 ## 安装使用步骤 ### 安装 用户已下载项目源码文件后,可通过Arduino IDE的库管理器搜索并安装TimerOne库。 ### 使用 在代码中引入#include <TimerOne.h>,即可使用上述功能。
weixin242基于微信小程序的外卖点餐系统设计与实现ssm(文档+源码)_kaic
# 基于Arduino的Wemos Mqtt Alarm Panel项目 ## 项目简介 本项目是一个基于Arduino平台的开源智能报警面板项目,命名为“Wemos Mqtt Alarm Panel”。该项目允许用户通过简单的MQTT操作来触发和控制报警系统。主要面向需要低成本、易于部署的智能家居或小型商业场所报警系统。项目仍在开发阶段,但已经具备基本功能并可供使用。 ## 项目的主要特性和功能 1. 低成本硬件需求主要使用Wemos D1 Mini或其他兼容的微控制器,以及Lolin 2.4英寸TFT显示屏。整体硬件成本较低,易于获取和部署。 2. 基于MQTT通信协议允许报警系统与MQTT服务器进行通信,实现远程控制和状态报告功能。 3. 界面友好采用直观的图形界面,支持触摸操作,方便用户进行交互。 4. 校准功能提供校准界面,确保触摸操作的准确性。 5. 可扩展性支持自定义报警事件和动作,允许用户根据需求进行个性化设置。 ## 安装使用步骤
内容概要:本文详细介绍了一个基于MATLAB的SSA-ESN(奇异谱分析-回声状态网络)多输出回归代码。该代码适用于处理复杂的非线性回归问题,具有多输出支持、友好的数据格式、丰富的可视化效果以及全面的评价指标等特点。文中不仅提供了详细的代码解析,还给出了具体的操作步骤和注意事项,帮助初学者快速理解和应用这一先进的回归方法。主要内容分为数据预处理、模型训练与预测、结果分析与可视化三个部分,涵盖了从数据准备到最终结果呈现的完整流程。 适合人群:对机器学习感兴趣特别是想学习和应用SSA-ESN进行多输出回归的新手程序员和研究人员。 使用场景及目标:①用于解决多输出的非线性回归问题;②提供一个完整的项目案例,帮助用户理解SSA-ESN的工作机制及其优势;③通过实际操作加深对机器学习理论的理解。 其他说明:代码已调试完毕,可以直接运行,附有详细的中文注释,便于学习和修改。此外,文中还提到了一些常见的错误及解决方案,如数据格式不匹配等问题。
内容概要:本文详细介绍了一个基于Matlab的模拟射击自动报靶系统的实现方法。该系统利用图像处理技术和计算机视觉技术,通过一系列步骤如图像滤波、图像减影、二值化、噪声滤除、目标矫正、弹孔识别和环值判定,实现了对射击靶纸的自动化处理。此外,文中还介绍了如何使用Matlab的GUIDE工具创建友好的GUI界面,使系统更易于操作。系统不仅提高了报靶的速度和准确性,还在军事训练和民用射击活动中展现出广阔的应用前景。 适合人群:对图像处理、计算机视觉感兴趣的研发人员和技术爱好者,尤其是有一定Matlab基础的用户。 使用场景及目标:适用于射击训练和比赛中,用于快速准确地报靶,提高训练效率和比赛公平性。目标是通过自动化手段减少人工干预,确保报靶结果的客观性和实时性。 其他说明:文中提供了详细的代码示例和优化技巧,帮助读者更好地理解和实现该系统。此外,作者还分享了一些常见问题的解决方案,如光照突变、靶纸反光等问题的应对措施。
内容概要:本文深入探讨了 Docker Compose 的高级应用,旨在帮助用户从基础用户成长为能够驾驭复杂系统编排的专家。文章首先介绍了 Docker Compose 的核心高级特性,如 profiles、extends、depends_on、healthcheck、自定义网络、卷管理和环境变量管理。接着,通过 30 多个实战模板,覆盖了 Web 全栈、AI/ML、IoT、监控、CI/CD 等多个领域的复杂场景,展示了如何利用这些特性构建高效、可靠的应用环境。每个模板不仅提供了详细的代码示例,还附有解释要点,帮助读者理解其工作原理和应用场景。 适用人群:具备一定 Docker 基础,希望提升 Docker Compose 使用技能的开发者和运维人员,特别是那些需要管理复杂多服务应用的 DevOps 工程师。 使用场景及目标: 1. **Web 开发**:构建 LEMP、MERN 等全栈应用,简化开发和部署流程。 2. **数据处理**:实现 ETL 流程,结合消息队列和数据库进行高效数据处理。 3. **微服务架构**:使用 API 网关简化微服务入口管理,提升服务发现和路由配置的灵活性。 4. **监控与日志**:搭建 PLG 或 ELK 日志系统,实现日志的收集、存储和可视化。 5. **物联网**:构建 MQTT Broker 和时序数据库,支持 IoT 设备的数据接收和处理。 6. **机器学习**:部署 TensorFlow Serving 或 TorchServe,提供模型服务接口。 7. **CI/CD**:快速搭建 GitLab/Gitea 平台,支持代码托管和持续集成。 8. **安全测试**:使用 OWASP ZAP 对 Web 应用进行自动化或手动的安全扫描。 9. **教育与学习**:部署 Moodle,在线学习管理系统,支持课程创建和
内容概要:本文详细探讨了利用COMSOL软件对注浆技术进行仿真的方法和技术细节。主要内容包括浆液扩散的数学建模、仿真模型的构建(如几何模型、边界条件、初始条件和控制方程)、关键参数(注浆压力、孔间距、地质条件)对浆液扩散的影响分析,以及实际工程应用案例。文中通过具体实例展示了如何通过仿真优化注浆施工参数,提高注浆效率并降低成本。此外,还讨论了倾斜裂隙、孔隙率和渗透率等因素对浆液扩散的具体影响及其应对措施。 适合人群:从事地下工程施工的技术人员、科研人员及高校相关专业师生。 使用场景及目标:①用于优化注浆施工方案,提高注浆效果;②为地下工程建设提供技术支持;③帮助研究人员深入理解浆液扩散机制。 其他说明:文章不仅提供了理论分析,还包括大量具体的代码示例和实践经验分享,有助于读者更好地理解和应用COMSOL仿真技术。
内容概要:本文列举了多个信息安全领域的实战项目示例,涵盖网络渗透测试、Web应用安全加固、企业安全策略制定与实施、恶意软件分析、数据泄露应急响应、物联网设备安全检测、区块链安全审计和云安全防护八大方面。每个项目均明确了具体的目标与步骤,如网络渗透测试通过模拟攻击发现并修复系统漏洞;Web应用安全加固则从代码审查、输入验证、身份验证、数据加密等方面确保应用安全;企业安全策略制定旨在构建全面的信息安全体系;恶意软件分析深入探究其功能与传播机制;数据泄露应急响应项目则聚焦于快速遏制影响、调查原因、恢复系统;物联网设备安全检测保障设备的安全性;区块链安全审计确保系统稳定可靠;云安全防护构建云环境下的安全体系。; 适合人群:信息安全从业人员、网络安全工程师、企业IT管理人员、安全研究人员。; 使用场景及目标:适用于希望深入了解信息安全各细分领域实战操作的专业人士,目标是掌握不同类型安全项目的实施流程与技术要点,提升实际工作中应对安全挑战的能力。; 其他说明:文中提供的项目示例不仅有助于理论学习,更为实际工作提供了具体的指导和参考,帮助相关人员在不同场景下有效开展信息安全工作,确保信息系统的安全性、稳定性和可靠性。
基于matlab实现的博弈方法的电动汽车充电调度策略研究+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用 基于matlab实现的博弈方法的电动汽车充电调度策略研究+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于matlab实现的博弈方法的电动汽车充电调度策略研究+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用 基于matlab实现的博弈方法的电动汽车充电调度策略研究+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用 基于matlab实现的博弈方法的电动汽车充电调度策略研究+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用 基于matlab实现的博弈方法的电动汽车充电调度策略研究+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用
内容概要:本文详细介绍了基于Matlab的违规限号车牌识别管理系统的开发过程和技术细节。系统主要分为多个步骤,包括车牌粗定位、灰度化、倾斜矫正、二值化、形态学处理、反色处理、精准定位、字符分割与识别、限号判断、语音播报和违规车牌信息导出。通过这些步骤,系统能够高效地识别并处理违规限号车辆,提升交通管理水平。 适用人群:适用于具有一定编程基础的技术人员,特别是对计算机视觉和数字图像处理感兴趣的开发者。 使用场景及目标:本系统主要用于城市交通管理部门,帮助执法人员快速识别和处理违反限号规定的车辆,提高交通管理的智能化水平。具体应用场景包括但不限于道路监控、停车场管理和临时检查点等。 其他说明:文中提供了大量Matlab代码示例,详细解释了各个步骤的具体实现方法。此外,作者还分享了许多实际开发过程中遇到的问题及其解决方案,有助于读者更好地理解和应用这些技术。
2000-2017年各省国有经济煤气生产和供应业固定资产投资数据 1、时间:2000-2017年 2、来源:国家统计j、能源nj 3、指标:行政区划代码、城市、年份、国有经济煤气生产和供应业固定资产投资 4、范围:31省
HDRI大全三维环境切图
内容概要:本文详细介绍了ADAS(高级驾驶辅助系统)中四个主要功能模块的设计与实现,分别是自适应巡航控制系统(ACC)、前向碰撞预警系统(FCW)、自动紧急制动系统(AEB)和车道保持辅助系统(LKA)。文章不仅展示了各个系统的具体算法实现,如ACC中的PID控制、FCW中的TTC计算、AEB中的状态机设计和LKA中的PD控制器,还分享了许多实际开发中的经验和挑战,如参数调校、传感器融合、时间同步等问题。此外,文中还提到了一些有趣的细节,如在暴雨天气下LKA的表现优化,以及AEB系统在测试过程中遇到的各种corner case。 适合人群:汽车电子工程师、自动驾驶研究人员、嵌入式软件开发者。 使用场景及目标:帮助读者深入了解ADAS系统的工作原理和技术细节,掌握关键算法的实现方法,提高在实际项目中的开发和调试能力。 其他说明:文章通过生动的语言和具体的代码示例,使复杂的理论变得通俗易懂,有助于初学者快速入门并深入理解ADAS系统的开发流程。
# 基于PHP的历史年表聚合网站 ## 项目简介 本项目是一个历史年表的聚合网站,采用PHP编程语言开发。网站包含了众多功能函数,可处理系统信息、错误异常、数字、字符串、时间等,还具备数据库管理、搜索、用户管理等功能,同时拥有日志记录和安全防护模块。 ## 项目的主要特性和功能 1. 系统信息处理能获取系统名称、版本、描述等信息,还可管理令牌。 2. 错误处理具备生成错误消息、错误退出等功能。 3. 数据处理涵盖数字、字符串、时间的处理,如数字转汉字、字符串编码等。 4. 标签管理定义了多种与历史相关的标签信息,包括朝代、事件、人物等。 5. 数据库操作提供数据库管理、SQL查询语句生成、搜索、用户管理等功能。 6. 用户界面生成可生成和更新与时间、标签相关的用户界面元素。 7. 日志记录包含日志保存、格式化、核心记录等功能。 8. 安全防护拥有Web应用防火墙模块,增强网站安全性。 ## 安装使用步骤