当前位置: 首页 > news >正文

handsome主题美化及优化:10.1.0最新版 - 1

文章目录

  • 前言
  • 右侧导航栏
  • 主题标题居中
  • 页面两侧框架留白间距
  • handsome 原生入站提示
  • 评论一键赞、踩、打卡
  • 时光机头像圆形
  • logo 扫光
  • 赞赏按钮跳动
  • 鼠标点击特效
  • 复制版权提示
  • 彩色标签云及右栏数字
  • 自定义右键
  • 响应时间和访客总数
  • 全站字数统计
  • 版权提示
  • 时间流逝
  • 添加心知天气
  • 总结

前言

handsome 主题是一款精心设计的 typecho 主题,它在保持功能丰富的同时又不失简洁优雅,我现在已经升级到了10.1.0版本。本文将介绍一些实用的美化技巧,帮助你打造一个独具特色的博客。

右侧导航栏

打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义CSS即可

/*右侧导航栏*/
.sidebar-icon svg.feather.feather-thumbs-up {color: #ff0000;
}
.sidebar-icon svg.feather.feather-message-square {color: #495dc3;
}
.sidebar-icon svg.feather.feather-gift {color: #52de97;
}

主题标题居中

打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义CSS即可

/*主题标题居中*/
header.bg-light.lter.wrapper-md {text-align: center;
}

页面两侧框架留白间距

打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义CSS即可

/*两侧框架留白间距*/
@media (min-width: 1700px) {.app.container {width: 95%;}.app.container .app-aside,.app.container .app-header {max-width: 95%;}
}@media (min-width: 2048px) {.app.container {width: 93%;}.app.container .app-aside,.app.container .app-header {max-width: 93%;}
}@media (min-width: 1200px) {.app.container {width: 90%;}.app.container .app-aside,.app.container .app-header {max-width: 90%;}.app.container .app-footer-fixed {max-width: 970px;}.app.container.app-aside-folded .app-footer-fixed {max-width: 1110px;}.app.container.app-aside-dock .app-footer-fixed {max-width: 90%;}
}

handsome 原生入站提示

打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义输出body尾部代码即可

<script>
function kaygb_referrer(){
var kaygb_referrer = document.referrer;
if  (kaygb_referrer != ""){
return "感谢您的访问! 您来自:<br>" + document.referrer;
}else{
return "";
}}
$.message({message: "为了网站的正常运行,请不要使用广告屏蔽插件,谢谢!<br >" + kaygb_referrer(),title: "网站加载完成",type: "success",autoHide: !1,time: "3000"
})
</script>

评论一键赞、踩、打卡

![][1]

打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义JavaScript即可

<!--评论 打卡、赞、踩 功能-->
window.SIMPALED = {}; // 创建全局对象 SIMPALED,用于存放编辑器功能// 定义一个函数 a,用于在文本框中插入文字
function a(a, b, c) {if (document.selection) {a.focus();sel = document.selection.createRange();c ? (sel.text = b + sel.text + c) : (sel.text = b);a.focus();} else if (a.selectionStart || "0" == a.selectionStart) {var l = a.selectionStart;var m = a.selectionEnd;var n = m;c? (a.value =a.value.substring(0, l) + b + a.value.substring(l, m) + c + a.value.substring(m, a.value.length)): (a.value = a.value.substring(0, l) + b + a.value.substring(m, a.value.length));c ? (n += b.length + c.length) : (n += b.length - m + l);l == m && c && (n -= c.length);a.focus();a.selectionStart = n;a.selectionEnd = n;} else {a.value += b + c;a.focus();}
}window.SIMPALED.Editor = {daka: function() {var b = new Date().toLocaleTimeString();var c = document.getElementById("comment") || 0;a(c, "滴!学生卡!打卡时间:" + b, ",请上车的乘客系好安全带~");// 将光标移到文本最后if (c.setSelectionRange) {var len = c.value.length;c.setSelectionRange(len, len);c.focus();} else if (c.createTextRange) {var range = c.createTextRange();range.collapse(false);range.select();c.focus();}},zan: function() {var c = document.getElementById("comment") || 0;var yuluResponses = [" 这篇文章展现了作者深邃的思想和独特的观点,令人赞叹不已。 "," 文章中的优美语言和精彩描写让人感受到一种心灵的震撼和触动,实在值得赞美。 "," 作者以敏锐的洞察力和真挚的情感,将文字融为一体,这种写作技巧令人赞赏。 "," 这篇文章展现了作者的才华和学识,无不让人对其赞美有加。 "," 文章中的感人故事和深刻的寓意令人深深地感动和赞叹。  "," 作者的文字流畅而富有节奏感,令人为之倾倒,实在是一篇令人赞美的佳作。 "," 文章中的深邃思考和清晰逻辑令人对作者的才华赞赏不已。 "," 这篇文章的独到见解和新颖观点,让人对作者的创意赞美有加。 "," 作者运用生动的比喻和细腻的描写,让读者仿佛身临其境,实在是一种令人赞美的写作艺术。 "," 这篇文章的深情笔触和真挚感受让人深深感叹,实在是一篇值得赞美的美文。 ",];var randomIndex = Math.floor(Math.random() * yuluResponses.length);var randomResponse = yuluResponses[randomIndex];a(c, randomResponse);},cai: function() {var c = document.getElementById("comment") || 0;var yuluResponses = [" 我是来替大家批评博主的,我是来批评的,这篇文章的结构有点混乱,需要更好地组织和展开内容。博主多多像我学习啊! "," 我是来替大家批评博主的,作者的表达能力有待提高,有些地方表述不够清晰,读者可能会感到困惑。博主多多像我学习啊! "," 我是来替大家批评博主的,文章的语法错误较多,建议仔细检查并进行修改。博主多多像我学习啊! "," 我是来替大家批评博主的,内容有些空洞,需要更多具体的例子或细节来支撑观点。博主多多像我学习啊! "," 我是来替大家批评博主的,文章缺乏逻辑,有些段落之间的衔接不够自然。博主多多像我学习啊! "," 我是来替大家批评博主的,作者的观点没有充分论证,需要更多的证据和理由来支持主张。博主多多像我学习啊! "," 我是来替大家批评博主的,文章中出现了一些拼写错误和用词不当的情况,建议进行仔细校对。博主多多像我学习啊! "," 我是来替大家批评博主的,语言表达过于简单,可以尝试使用更丰富的词汇和句式来提升文章质量。博主多多像我学习啊! "," 我是来替大家批评博主的,这篇文章的主题不够突出,需要更好地明确中心思想。博主多多像我学习啊! "," 我是来替大家批评博主的,文章缺乏吸引人的开头,建议引入更有趣的故事或引语来吸引读者注意。博主多多像我学习啊! ",];var randomIndex = Math.floor(Math.random() * yuluResponses.length);var randomResponse = yuluResponses[randomIndex];a(c, randomResponse);},yulu: function() {var c = document.getElementById("comment") || 0;var yuluResponses = [" 有你在的日子才是我的日常。 "," 夹在我女友与前女友与青梅竹马间的果然是修罗场! "," 既然如此,就再努力一次吧。别在这里愁眉不展,也不要再自欺欺人,重新来过! "," 比自己,比梦想更重要的东西永远都存在着... "," 嘛,那又怎么样呢? "," 自身不先改变的话,一切都不会改变。 "," 比起有一百个朋友,不如有个比一百人还要重要的真心朋友。 "," 我有在反省,但我不后悔。 "," 要超越过去与悲伤,用坚强和笑容去开拓明天。 "," 男人许下的诺言就一定要遵守。 "," 没有回忆就去创造回忆,没有道路就去开辟道路。 "," 我敬你是条汉子! "," 不相信自己的人,连努力的价值都没有。 "," 微风摇曳着窗帘,夕阳斜射入教室,在那里鼓起勇气告白的少年。即使现在也能清晰地回想起她的声音「当朋友,不行吗?」 "," 就算是沉落地面的太阳,只要夜晚过了一定会再度升起,不管有什么痛苦或难过的事,跟今天截然不同的明天也一定会到来。 "," 我的腿让我停下,可是心却不允许我那么做。 "," 生活就像超级女生,走到最后的都是纯爷们。 "," 我要拼,装上假牙也要拼! "," 想要成为无论多么悲伤的时候,也能够漂亮微笑的人吧。 "," 人们只是用好人来称呼对自己有用的人而以,不存在对所有人都有用的人。 "," 烈焰中舞动的火花,将赐予邪恶异性交往以天罚。 "," 无论乌云有多浓厚,星星也一定还在,只是暂时看不到了而已。 "," 不相信人咬不到肚脐的,咬破肚脐去死如何? "," 人一生会遇到约万人,两个人相爱的概率是.。所以你不爱我,我不怪你。 "," 不管看到什么样的过去,都请不要迷失自己,不管你变成什么样子,我都是你的同伴。 "," 心,可是很重的。 "," 我爱上的人,称我为怪叔叔 "," 慕君之心,至死方休。 "," 虚伪的眼泪,会伤害别人,虚伪的笑容,会伤害自己。 "," 若隐若现才是艺术! "," 生我何用?不能欢笑。灭我何用?不减狂骄。 "," 就是因为你不好,才要留在你身边,给你幸福。 "," 呐,我们好像是,被宇宙和地球拆散的恋人似的。 "," 你会梦游,我会磨牙,我们晚上一起去吓人吧! "," 或许只需一滴露水,便能守护这绽放的花朵。 "," 自己永远是孤单的,但你可以让其他人变得不孤单。 "," 和哥哥的便当比起来夜空的薯片就像大便一样!只会给我大便的大便夜空是笨蛋~笨蛋~ "," 我手中的魔法,是守护挚爱的力量,是坚定这个信念所必须的力量,我一定会拯救你的,无论在何时、何地。 "," 要改变别人的心真是件很难办的事,不过改变自己要容易一点。 "," 风筝的线你随时可以放开,只是别盼望我会回来。 "," 与你的生命等价的东西,这个世界上根本没有。 "," 君子可寓意于物,但不可留意于物。 "," 最好的感觉,是有人懂你的欲言又止。 "," 看似美好的东西,往往藏着陷阱。 "," 爱,其实很简单,困难的是去接受它。 "," 喜欢大胸只是本能,喜欢贫乳才是审美。 "," 二次元什么的我本来是不感冒的,直到我的膝盖中了一箭。 "," 你才是⑨!你全家都是⑨! "," 努力是不会背叛自己的,虽然梦想有时会背叛自己。 "," 面对就好,去经历就好。 "," 我从小就害怕虫子 "," 做不到的话,不过就是一死 。但是,赢了就能活下去,要是不战斗就赢不了。 "," 既然认准这条路,何必去打听要走多久。 "," 研表究明,汉字的序顺并不定一能影阅响读,比如当你看完这句话后,才发这现里的字全是都乱的。 "," 少年心意,一如明月松间的青石流水,那些年里看到了,却不懂。 "," 明明只是活着,哀伤却无处不在⋯⋯ "," 少罗嗦,你还不如虫子呢! "," 天空是连着的,如果我们也能各自发光的话,无论距离有多远,都能看到彼此努力的身影。 "," 别人恋爱不成功,你连暗恋都不成功! ",];var randomIndex = Math.floor(Math.random() * yuluResponses.length);var randomResponse = yuluResponses[randomIndex];a(c, randomResponse);},
};

打开Handsome主题目录下的 component/comments.php文件,找到并删除如下内容:

![][2]

修改成如下代码:

<textarea id="comment" class="textarea form-control OwO-textarea" name="text" rows="5" placeholder="<?php _me("说点什么吧……") ?>" οnkeydοwn="if(event.ctrlKey&&event.keyCode==13){document.getElementById('submit').click();return false};"><?php $this->remember('text'); ?></textarea>
<div class="OwO" style="display: inline;"></div>
<div class="OwO" title="打卡" style="display: inline;" onclick="javascript:SIMPALED.Editor.daka();"><div class="OwO-logo"><span class="smile-icons"><i class="iconfont icon-daohanglan-01"></i></span><span class="OwOlogotext">打卡</span></div></div>
<div class="OwO" title="语录" style="display: inline;" onclick="javascript:SIMPALED.Editor.yulu();"><div class="OwO-logo"><i class="fontello-pencil"></i><span class="OwOlogotext">语录</span></div></div>
<div class="OwO" title="赞" style="display: inline;" onclick="javascript:SIMPALED.Editor.zan();"><div class="OwO-logo"><i class="glyphicon glyphicon-thumbs-up"></i><span class="OwOlogotext"></span></div></div>
<div class="OwO" title="踩" style="display: inline;" onclick="javascript:SIMPALED.Editor.cai();"><div class="OwO-logo"><i class="glyphicon glyphicon-thumbs-down"></i><span class="OwOlogotext"></span></div></div>

时光机头像圆形

打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义CSS即可

/* 时光机圆形头像 */
.img-square {border-radius: 50%;}
.list-group-item .thumb-sm .img-square {border-radius: 5px;}

logo 扫光

打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义CSS即可

/* logo 扫光开始 */
.navbar-brand{position:relative;overflow:hidden;margin: 0px 0 0 0px;}.navbar-brand:before{content:""; position: absolute; left: -665px; top: -460px; width: 200px; height: 15px; background-color: rgba(255,255,255,.5); -webkit-transform: rotate(-45deg); -moz-transform: rotate(-45deg); -ms-transform: rotate(-45deg); -o-transform: rotate(-45deg); transform: rotate(-45deg); -webkit-animation: searchLights 6s ease-in 0s infinite; -o-animation: searchLights 6s ease-in 0s infinite; animation: searchLights 6s ease-in 0s infinite;}@-moz-keyframes searchLights{50%{left: -100px; top: 0;} 65%{left: 120px; top: 100px;}}@keyframes searchLights{40%{left: -100px; top: 0;} 60%{left: 120px; top: 100px;} 80%{left: -100px; top: 0px;}}
/*logo 扫光结束*/

赞赏按钮跳动

打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义CSS即可

/*赞赏按钮跳动开始*/
.btn-pay {
animation: star 0.5s ease-in-out infinite alternate;
}
@keyframes star {
from {
transform: scale(1);
}
to {
transform: scale(1.1);
}
}
/*赞赏按钮跳动结束*/

鼠标点击特效

打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义JavaScript即可

/* 鼠标点击特效 */
var a_idx = 0;
jQuery(document).ready(function ($) {$("body").click(function (e) {var a = ["富强", "民主", "文明", "和谐", "自由", "平等", "公正", "法治","爱国", "敬业", "诚信", "友善"];var $i = $("<span/>").text(a[a_idx]);a_idx = (a_idx + 1) % a.length;var x = e.pageX,y = e.pageY;$i.css({"z-index": 9999,"top": y - 20,"left": x,"position": "absolute","font-weight": "bold","color": "#FA7298"});$("body").append($i);$i.animate({"top": y - 180,"opacity": 0}, 1500, function () {$i.remove();});});
});

复制版权提示

打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义JavaScript即可

/* 复制成功提示代码开始 */
kaygb_copy();
function kaygb_copy() {$(document).ready(function () {$("body").bind('copy', function (e) {hellolayer();});});var sitesurl = window.location.href;function hellolayer() {$.message({message: "尊重原创,转载请注明出处!<br> 本文作者:XXX<br>原文链接:" + sitesurl,title: "复制成功",type: "warning",autoHide: false,time: "3000"});}
}
/* 复制成功提示代码结束 */

彩色标签云及右栏数字

打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义JavaScript即可

/*彩色标签云代码开始*/
let tags = document.querySelectorAll("#tag_cloud-2 a");
let infos = document.querySelectorAll(".badge");
let colorArr = ["#428BCA", "#AEDCAE", "#ECA9A7", "#DA99FF", "#FFB380", "#D9B999"];
tags.forEach(tag => {
tagsColor = colorArr[Math.floor(Math.random() * colorArr.length)];
tag.style.backgroundColor = tagsColor;
});
infos.forEach(info => {
infosColor = colorArr[Math.floor(Math.random() * colorArr.length)];
info.style.backgroundColor = infosColor;
});
/*彩色标签云代码结束*/

自定义右键

打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义输出body尾部的HTML代码即可

<!-- 自定义右键 -->
<style type="text/css">
a {text-decoration: none;}
div.usercm{background-repeat:no-repeat;background-position:center center;background-size:cover;background-color:#fff;font-size:13px!important;width:130px;-moz-box-shadow:1px 1px 3px rgba(0,0,0,.3);box-shadow:0px 0px 15px #333;position:absolute;display:none;z-index:10000;opacity:0.9; border-radius: 8px;}
div.usercm ul{list-style-type:none;list-style-position:outside;margin:0px;padding:0px;display:block}
div.usercm ul li{margin:0px;padding:0px;line-height:35px;}
div.usercm ul li a{color:#666;padding:0 15px;display:block}
div.usercm ul li a:hover{color:#fff;background:rgba(88,130,238,0.88)}
div.usercm ul li a i{margin-right:10px}
a.disabled{color:#c8c8c8!important;cursor:not-allowed}
a.disabled:hover{background-color:rgba(255,11,11,0)!important}
div.usercm{background:#fff !important;}
</style>
<div class="usercm" style="left: 199px; top: 5px; display: none;">
<ul>
<li><a href="https://www.***.cn"><i class="fontello fontello-home"></i><span>首页</span></a></li>
<li><a href="javascript:void(0);" onclick="getSelect();"><i class="fontello fontello-pencil"></i><span>复制</span></a></li>
<li><a href="javascript:void(0);" onclick="baiduSearch();"><i class="fontello fontello-search"></i><span>搜索</span></a></li>
<li><a href="javascript:history.go(1);"><i class="fontello fontello-chevron-right"></i><span>前进</span></a></li>
<li><a href="javascript:history.go(-1);"><i class="fontello fontello-chevron-left"></i><span>后退</span></a></li>
<li style="border-bottom:1px solid gray"><a href="javascript:window.location.reload();"><i class="fontello fontello-refresh"></i><span>重载网页</span></a></li>
<li><a href="https://blog.ybyq.wang/index.php/about.html"><i class="fontello fontello-emo-tongue"></i><span>关于作者</span></a></li>
</ul>
</div>
<script type="text/javascript">
(function(a) {
a.extend({
mouseMoveShow: function(b) {
var d = 0,
c = 0,
h = 0,
k = 0,
e = 0,
f = 0;
a(window).mousemove(function(g) {
d = a(window).width();
c = a(window).height();
h = g.clientX;
k = g.clientY;
e = g.pageX;
f = g.pageY;
h + a(b).width() >= d && (e = e - a(b).width() - 5);
k + a(b).height() >= c && (f = f - a(b).height() - 5);
a("html").on({
contextmenu: function(c) {
3 == c.which && a(b).css({
left: e,
top: f
}).show()
},
click: function() {
a(b).hide()
}
})
},
disabledContextMenu: function() {
window.oncontextmenu = function() {
return !1
}
}
})
})(jQuery);function getSelect() {"" == (window.getSelection ? window.getSelection() : document.selection.createRange().text) ? layer.msg("请选择需要复制的内容!") : document.execCommand("Copy")}function baiduSearch() {var a = window.getSelection ? window.getSelection() : document.selection.createRange().text;"" == a ? layer.msg("请选择需要搜索的内容!") : window.open("https://www.baidu.com/s?wd=" + a)}$(function() {for (var a = navigator.userAgent, b = "Android;iPhone;SymbianOS;Windows Phone;iPad;iPod".split(";"), d = !0, c = 0; c < b.length; c++) if (0 < a.indexOf(b[c])) {d = !1;break}d && ($.mouseMoveShow(".usercm"), $.disabledContextMenu())});
</script>

响应时间和访客总数

将以下代码放到/usr/themes/handsome/function.php的最下面

/*访问总量代码开始*/
function theAllViews(){
$db = Typecho_Db::get();$row = $db->fetchAll('SELECT SUM(VIEWS) FROM `typecho_contents`');echo number_format($row[0]['SUM(VIEWS)']);
}
/*访问总量代码结束*/
/*响应时间代码开始*/
function timer_start() {
global $timestart;
$mtime = explode( ' ', microtime() );
$timestart = $mtime[1] + $mtime[0];
return true;
}
timer_start();
function timer_stop( $display = 0, $precision = 3  ) {
global $timestart, $timeend;
$mtime = explode( ' ', microtime() );
$timeend = $mtime[1] + $mtime[0];
$timetotal = number_format( $timeend - $timestart, $precision  );
$r = $timetotal < 1 ? $timetotal * 1000 . " ms" : $timetotal . " s";
if ( $display ) {
echo $r;
}
return $r;
}
/*响应时间代码结束*/

然后将以下代码放到/usr/themes/handsome/component/sidebar.php内,找到博客信息添加即可
!!!

  • <?php echo theAllViews();?><?php _me("访客总数") ?>
  • <?php echo timer_stop();?><?php _me("响应耗时") ?>
  • !!!

    全站字数统计

    将以下代码放到/usr/themes/handsome/component/sidebar.php的开头

    <?php
    //字数统计
    function allOfCharacters() {
    $chars = 0;$db = Typecho_Db::get();
    $select = $db ->select('text')->from('table.contents');
    $rows = $db->fetchAll($select);foreach ($rows as $row) { $chars += mb_strlen(trim($row['text']), 'UTF-8'); }$unit = '';
    if($chars >= 10000)     { $chars /= 10000; $unit = '万'; }else if($chars >= 1000) { $chars /= 1000;  $unit = '千'; }
    $out = sprintf('%.2lf %s',$chars, $unit);return $out;
    }
    ?>
    

    然后将以下代码放到/usr/themes/handsome/component/sidebar.php内,加到合适的位置

    <!--全站字数开始-->
    <li class="list-group-item text-second"><span class="blog-info-icons"><i data-feather="edit-2"></i></span>
    <span class="badge pull-right"><?php echo allOfCharacters(); ?></span><?php _me("全站字数") ?></li>
    <!--全站字数结束-->
    

    版权提示

    在主题文件post.php内,文章内容下方加上下面的代码

    <div style="padding: 10px;background: rgba(220, 220, 220, 0.22);font-size: 13px;border-left: 3px solid;text-align: left;">
    <span>本文作者:<a href="<?php $this->author->permalink(); ?>" rel="author"> <?php $this->author(); ?></a></span>
    <span>文章标题:<a href="<?php $this->permalink() ?>"><?php $this->title() ?></a><br></span>
    <span>本文地址:<a href="<?php $this->permalink() ?>"><?php $this->permalink() ?></a><br></span>
    <span>版权说明:若无注明,本文皆<a href="<?php $this->options->rootUrl(); ?>" target="_blank" data-original-title="<?php $this->options->title() ?>"><?php $this->options->title() ?></a>原创,转载请保留文章出处。</span>
    </div>
    

    时间流逝

    将以下代码加到/usr/themes/handsome/component/sidebar.php,在 119 行左右,放在<?php endif; ?>之后

    <!-- 时间倒计时代码开始 -->
    <section id="blog_info" class="widget widget_categories wrapper-md clear">
    <h5 class="widget-title m-t-none text-md"><?php _me("时间流逝") ?></h5>
    <div class="sidebar sidebar-count">
    <div class="content">
    <div class="item" id="dayProgress">
    <div class="title">今日已经过去<span></span>小时</div>
    <div class="progress">
    <div class="progress-bar">
    <div class="progress-inner progress-inner-1"></div>
    </div>
    <div class="progress-percentage"></div>
    </div>
    </div>
    <div class="item" id="weekProgress">
    <div class="title">这周已经过去<span></span>天</div>
    <div class="progress">
    <div class="progress-bar">
    <div class="progress-inner progress-inner-2"></div>
    </div>
    <div class="progress-percentage"></div>
    </div>
    </div>
    <div class="item" id="monthProgress">
    <div class="title">本月已经过去<span></span>天</div>
    <div class="progress">
    <div class="progress-bar">
    <div class="progress-inner progress-inner-3"></div>
    </div>
    <div class="progress-percentage"></div>
    </div>
    </div>
    <div class="item" id="yearProgress">
    <div class="title">今年已经过去<span></span>个月</div>
    <div class="progress">
    <div class="progress-bar">
    <div class="progress-inner progress-inner-4"></div>
    </div>
    <div class="progress-percentage"></div>
    </div>
    </div>
    </div>
    </div>
    </section>
    <!-- 时间倒计时代码结束 -->
    

    添加完成后,将以下代码放入后台-外观设置-开发者设置-自定义css

    /* 时间流逝 */
    .sidebar-count .content {
    padding: 15px
    }.sidebar-count .content .item {
    margin-bottom: 15px
    }.sidebar-count .content .item:last-child {
    margin-bottom: 0
    }.sidebar-count .content .item .title {
    font-size: 12px;
    color: var(--minor);
    margin-bottom: 5px;
    display: flex;
    align-items: center
    }.sidebar-count .content .item .title span {
    color: var(--theme);
    font-weight: 500;
    font-size: 14px;
    margin: 0 5px
    }.sidebar-count .content .item .progress {
    display: flex;
    align-items: center
    }.sidebar-count .content .item .progress .progress-bar {
    height: 10px;
    border-radius: 5px;
    overflow: hidden;
    background: var(--classC);
    width: 0;
    min-width: 0;
    flex: 1;
    margin-right: 5px
    }
    @keyframes progress {
    0% {
    background-position: 0 0
    }100% {background-position: 30px 0}}
    .sidebar-count .content .item .progress .progress-bar .progress-inner {
    width: 0;
    height: 100%;
    border-radius: 5px;
    transition: width 0.35s;
    -webkit-animation: progress 750ms linear infinite;
    animation: progress 750ms linear infinite
    }.sidebar-count .content .item .progress .progress-bar .progress-inner-1 {
    background: #bde6ff;
    background-image: linear-gradient(135deg, #50bfff 25%, transparent 25%, transparent 50%, #50bfff 50%, #50bfff 75%, transparent 75%, transparent 100%);
    background-size: 30px 30px
    }.sidebar-count .content .item .progress .progress-bar .progress-inner-2 {
    background: #ffd980;
    background-image: linear-gradient(135deg, #f7ba2a 25%, transparent 25%, transparent 50%, #f7ba2a 50%, #f7ba2a 75%, transparent 75%, transparent 100%);
    background-size: 30px 30px
    }.sidebar-count .content .item .progress .progress-bar .progress-inner-3 {
    background: #ffa9a9;
    background-image: linear-gradient(135deg, #ff4949 25%, transparent 25%, transparent 50%, #ff4949 50%, #ff4949 75%, transparent 75%, transparent 100%);
    background-size: 30px 30px
    }.sidebar-count .content .item .progress .progress-bar .progress-inner-4 {
    background: #67c23a;
    background-image: linear-gradient(135deg, #4f9e28 25%, transparent 25%, transparent 50%, #4f9e28 50%, #4f9e28 75%, transparent 75%, transparent 100%);
    background-size: 30px 30px
    }.sidebar-count .content .item .progress .progress-percentage {
    color: var(--info)
    }
    

    添加完成后,在到/usr/themes/handsome/assets/js里面创建名为timeinfo.js后把下面代码复制进去保存

    function init_life_time() {
    function getAsideLifeTime() {
    /* 当前时间戳 */
    let nowDate = +new Date();
    /* 今天开始时间戳 */
    let todayStartDate = new Date(new Date().toLocaleDateString()).getTime();
    /* 今天已经过去的时间 */
    let todayPassHours = (nowDate - todayStartDate) / 1000 / 60 / 60;
    /* 今天已经过去的时间比 */
    let todayPassHoursPercent = (todayPassHours / 24) * 100;
    $('#dayProgress .title span').html(parseInt(todayPassHours));
    $('#dayProgress .progress .progress-inner').css('width', parseInt(todayPassHoursPercent) + '%');
    $('#dayProgress .progress .progress-percentage').html(parseInt(todayPassHoursPercent) + '%');
    /* 当前周几 */
    let weeks = {
    0: 7,
    1: 1,
    2: 2,
    3: 3,
    4: 4,
    5: 5,
    6: 6
    };
    let weekDay = weeks[new Date().getDay()];
    let weekDayPassPercent = (weekDay / 7) * 100;
    $('#weekProgress .title span').html(weekDay);
    $('#weekProgress .progress .progress-inner').css('width', parseInt(weekDayPassPercent) + '%');
    $('#weekProgress .progress .progress-percentage').html(parseInt(weekDayPassPercent) + '%');
    let year = new Date().getFullYear();
    let date = new Date().getDate();
    let month = new Date().getMonth() + 1;
    let monthAll = new Date(year, month, 0).getDate();
    let monthPassPercent = (date / monthAll) * 100;
    $('#monthProgress .title span').html(date);
    $('#monthProgress .progress .progress-inner').css('width', parseInt(monthPassPercent) + '%');
    $('#monthProgress .progress .progress-percentage').html(parseInt(monthPassPercent) + '%');
    let yearPass = (month / 12) * 100;
    $('#yearProgress .title span').html(month);
    $('#yearProgress .progress .progress-inner').css('width', parseInt(yearPass) + '%');
    $('#yearProgress .progress .progress-percentage').html(parseInt(yearPass) + '%');
    }
    getAsideLifeTime();
    setInterval(() => {
    getAsideLifeTime();
    }, 1000);
    }
    init_life_time()
    

    添加完成,将以下代码放入后台-外观设置-开发者设置-自定义输出body尾部

    <!-- 时间流逝 -->
    <script src="https://你的域名/usr/themes/handsome/assets/js/timeinfo.js"></script>
    

    添加心知天气

    1. 首先需要在知心天气官网注册并申请免费 API 密钥
    2. 将以下代码放入/usr/themes/handsome/component/headnav.php第 117 行左右,并替换你的公钥和密钥
    <!-- 知心天气-->
    <divid="tp-weather-widget"class="navbar-form navbar-form-sm navbar-left shift"
    ></div>
    <script>(function (T, h, i, n, k, P, a, g, e) {g = function () {P = h.createElement(i);a = h.getElementsByTagName(i)[0];P.src = k;P.charset = "utf-8";P.async = 1;a.parentNode.insertBefore(P, a);};T["ThinkPageWeatherWidgetObject"] = n;T[n] ||(T[n] = function () {(T[n].q = T[n].q || []).push(arguments);});T[n].l = +new Date();if (T.attachEvent) {T.attachEvent("onload", g);} else {T.addEventListener("load", g, false);}})(window,document,"script","tpwidget","//widget.seniverse.com/widget/chameleon.js");
    </script>
    <script>tpwidget("init", {flavor: "slim",location: "WX4FBXXFKE4F",geolocation: "enabled",language: "auto",unit: "c",theme: "chameleon",container: "tp-weather-widget",bubble: "enabled",alarmType: "badge",color: "#C6C6C6",uid: "你的公钥",hash: "你的密钥",});tpwidget("show");
    </script>
    <!-- 知心结束-->
    

    总结

    通过以上美化方案,你可以让你的 Handsome 主题博客更加个性化和美观。这些功能都是经过精心挑选的,既实用又不会影响博客的加载速度。你可以根据自己的需求选择性地使用这些功能。
    如果你在使用过程中遇到任何问题,欢迎在评论区留言讨论。同时,也欢迎你分享自己的美化心得,让我们一起打造更好的博客!

    [1]: https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fstatic.blog.ybyq.wang%2Fusr%2Fuploads%2F2025%2F05%2F15%2F2025-05-15T05%3A25%3A14.png%3Fx-oss-process%3Dstyle%2Fshuiyin&pos_id=img-B0sXnlt0-1747396825278)
    [2]: https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fstatic.blog.ybyq.wang%2Fusr%2Fuploads%2F2025%2F05%2F15%2F2025-05-14T17%3A27%3A11.png%3Fx-oss-process%3Dstyle%2Fshuiyin&pos_id=img-9xnNTeZP-1747396825826)


    作者:xuan
    个人博客:https://blog.ybyq.wang
    欢迎访问我的博客,获取更多技术文章和教程。

相关文章:

handsome主题美化及优化:10.1.0最新版 - 1

文章目录 前言右侧导航栏主题标题居中页面两侧框架留白间距handsome 原生入站提示评论一键赞、踩、打卡时光机头像圆形logo 扫光赞赏按钮跳动鼠标点击特效复制版权提示彩色标签云及右栏数字自定义右键响应时间和访客总数全站字数统计版权提示时间流逝添加心知天气总结 前言 ha…...

基于React的高德地图api教程006:两点之间距离测量

文章目录 6、距离测量6.1 两点之间距离测量6.1.1 两点距离测量按钮6.1.2 点击地图添加点6.1.3 测量两点之间距离并画线6.2 测量过程显示两点之间预览线6.3 绘制完毕6.4 显示清除按钮6.5 代码下载6.06、距离测量 6.1 两点之间距离测量 6.1.1 两点距离测量按钮 实现代码: re…...

Java回溯算法解决非递减子序列问题(LeetCode 491)的深度解析

文章目录 问题描述错误代码分析原代码实现错误原因 修正方案与代码实现修正后的代码关键修正点 核心问题&#xff1a;为什么 used 不需要回溯&#xff1f;作用域与生命周期示例分析 总结算法设计要点复杂度分析 问题描述 给定一个整数数组 nums&#xff0c;找出并返回所有不同…...

基于PXIE 总线架构的Kintex UltraScale 系列FPGA 高性能数据预处理板卡

基于PXIE 总线架构的Kintex UltraScale 系列FPGA 高性能数据预处理板卡 一款基于3U PXIE 总线架构的高性能数据预处理FMC 载板&#xff0c;板卡具有1 个FMC&#xff08;HPC&#xff09;接口&#xff0c;1 个X8 GTH 背板互联接口&#xff0c;可以实现1 路PCIe x8。板卡采用Xili…...

[前端] wang 富文本 vue3

官方链接 https://www.npmjs.com/package/wangeditor-next/editor-for-vue <template><div style"border: 1px solid #ccc"><Toolbar style"border-bottom: 1px solid #ccc" :editor"editorRef" :defaultConfig"toolbarCo…...

【Python 操作 MySQL 数据库】

在 Python 中操作 MySQL 数据库主要通过 pymysql 或 mysql-connector-python 库实现。以下是完整的技术指南&#xff0c;包含连接管理、CRUD 操作和最佳实践&#xff1a; 一、环境准备 1. 安装驱动库 pip install pymysql # 推荐&#xff08;纯Python实现&#xff0…...

编译opencv4.11gstreamer 参考

0xC0000139: Entry Point Not Found gstreamer-1.0 如需要编译gstreamer模块需要提前安装好2个文件Index of /data/pkg/windows 下载带msvc的表示用Visual Studio编译 gif功能顺便勾上 最后 测试可能遇到的问题 把F:\gstreamer\1.0\x86_64\bin目录下的所有dll复制到exe所在位置…...

OpenCV边界填充(Border Padding)详解:原理、方法与代码实现

一、什么是边界填充&#xff1f; 边界填充&#xff08;Border Padding&#xff09;是图像处理中一项基础而重要的技术&#xff0c;它通过在图像边缘周围添加像素来解决卷积等操作导致的边界问题。当我们对图像应用滤波器或进行卷积操作时&#xff0c;图像边缘的像素无法像中心…...

Deeper and Wider Siamese Networks for Real-Time Visual Tracking

现象&#xff1a; the backbone networks used in Siamese trackers are relatively shallow, such as AlexNet , which does not fully take advantage of the capability of modern deep neural networks. direct replacement of backbones with existing powerful archite…...

保安员考试报名时,体检项目包含哪些?

保安员考试报名时的体检项目主要包括以下几类&#xff1a; 实验室检查&#xff1a;血常规、尿常规、大便常规是必检项目&#xff0c;主要用于检查血液、尿液和消化系统是否存在问题。部分地区可能还会检查肝功能、肾功能等&#xff0c;通过检测相关指标来评估肝脏和肾脏的功能状…...

基于SpringBoot的房屋租赁管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

MCU开发学习记录16* - 看门狗学习与实践(HAL库) - IWDG与WWDG -STM32CubeMX

名词解释&#xff1a; IWDG&#xff1a;Independent watchdog WWDG&#xff1a;Window watchdog LSE&#xff1a;​Low-Speed External Clock​ 统一文章结构&#xff08;数字后加*&#xff09;&#xff1a; 第一部分&#xff1a; 阐述外设工作原理&#xff1b;第二部分&#…...

如何解决LCMS 液质联用液相进样器定量环漏液问题

以下是解决安捷伦1260液相色谱仪为例的进样器定量环漏液问题的一些方法&#xff1a;视频操作 检查相关部件 检查定量环本身&#xff1a;观察定量环是否有破损、裂纹或变形等情况。如果发现定量环损坏&#xff0c;需及时更换。检查密封垫&#xff1a;查看进样阀的转子密封垫、计…...

【Linux】ssh命令 – 安全的远程连接服务

原创&#xff1a;厦门微思网络 SSH命令的概念 ssh命令的功能是安全地远程连接服务器主机系统&#xff0c;作为OpenSSH套件中的客户端连接工具&#xff0c;ssh命令可以让我们轻松地基于SSH加密协议进行远程主机访问&#xff0c;从而实现对远程服务器的管理工‍作。 语法 ssh 参…...

硬件中的OID是什么?SNMP如何通过OID获取信息?——用“图书馆”比喻彻底讲清底层原理-优雅草卓伊凡|小无

硬件中的OID是什么&#xff1f;SNMP如何通过OID获取信息&#xff1f;——用“图书馆”比喻彻底讲清底层原理-优雅草卓伊凡|小无 1. 终极比喻&#xff1a;OID是设备的“图书编码系统” 想象你走进一座巨型图书馆&#xff08;这个图书馆就是一台网络设备&#xff0c;比如路由器…...

java后端学习

1.Java基础 Java基础学习-CSDN博客 2.spring->springboot spring学习-&#xff1e;sprintboot-CSDN博客 3.maven Maven-CSDN博客 4mybatis -&#xff1e;mybatisplus mybatis -&#xff1e;mybatisplus-CSDN博客 5.git操作学习 git版本控制学习-CSDN博客 6.mysql …...

Python打卡 DAY 27

知识点回顾&#xff1a; 1. 装饰器的思想&#xff1a;进一步复用 2. 函数的装饰器写法 3. 注意内部函数的返回值 作业&#xff1a; 编写一个装饰器 logger&#xff0c;在函数执行前后打印日志信息&#xff08;如函数名、参数、返回值&#xff09; def logger(func):def wrap…...

2025蓝桥杯JAVA编程题练习Day8

1. 路径 题目描述 小蓝学习了最短路径之后特别高兴&#xff0c;他定义了一个特别的图&#xff0c;希望找到图 中的最短路径。 小蓝的图由 2021 个结点组成&#xff0c;依次编号 1 至 2021。 对于两个不同的结点 a, b&#xff0c;如果 a 和 b 的差的绝对值大于 21&#xff0…...

7 个正则化算法完整总结

哈喽&#xff01;我是我不是小upper&#xff5e;之前和大家聊过各类算法的优缺点&#xff0c;还有回归算法的总结&#xff0c;今天咱们来深入聊聊正则化算法&#xff01;这可是解决机器学习里 “过拟合” 难题的关键技术 —— 想象一下&#xff0c;模型就像个死记硬背的学生&am…...

lesson03-简单回归案例(理论+代码)

一、梯度下降 二、 线性方程怎么样&#xff1f; 三、有噪音吗&#xff1f; 四、让我们看一个列子 五、如何优化 启发式搜索 学习进度 六、线性回归、逻辑回归、分类 总结、 简单线性回归是一种统计方法&#xff0c;用于确定两个变量之间的关系。具体来说&#xff0c;它试图…...

Linux系统篇——文件描述符FD

&#x1f9e0; Linux 文件描述符&#xff08;File Descriptor&#xff09;详解与学习指南 一、什么是文件描述符&#xff08;fd&#xff09; 在 Linux 中&#xff0c;一切皆文件&#xff08;everything is a file&#xff09;&#xff0c;包括普通文件、目录、套接字&#xff…...

C++ Kafka客户端(cppkafka)安装与问题解决指南

一、cppkafka简介 cppkafka是一个现代C的Apache Kafka客户端库&#xff0c;它是对librdkafka的高级封装&#xff0c;旨在简化使用librdkafka的过程&#xff0c;同时保持最小的性能开销。 #mermaid-svg-qDUFSYLBf8cKkvdw {font-family:"trebuchet ms",verdana,arial,…...

MySQL的缓存策略

一、MySQL缓存方案用来解决什么 缓存用户定义的热点数据&#xff0c;用户直接从缓存获取热点数据&#xff0c;降低数据库的读写压力场景分析&#xff1a; 内存访问速度是磁盘访问速度 10 万倍&#xff08;数量级&#xff09;读的需求远远大于写的需求mysql 自身缓冲层跟业务无…...

ubuntu22.04卸载vscode

方法 1&#xff1a;通过 Snap 卸载 VSCode 如果你是通过 Snap 安装的 VSCode&#xff08;Ubuntu 22.04 默认推荐方式&#xff09;&#xff0c;按照以下步骤卸载&#xff1a; 检查是否通过 Snap 安装&#xff1a; bash snap list | grep code如果输出显示 code&#xff0c;说明…...

主流数据库排查与优化速查手册

主流数据库排查与优化速查手册&#xff08;优化版&#xff09; 一、连接失败 1.1 统一排查流程 #mermaid-svg-IIyarbd8VatJFN14 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-IIyarbd8VatJFN14 .error-icon{fill:…...

MySQL 数据库优化:InnoDB 存储引擎深度解析:架构、调优与最佳实践

InnoDB 是 MySQL 的默认存储引擎,因其支持事务、行级锁和崩溃恢复等特性,广泛应用于高并发、数据一致性要求高的场景。本文将从 InnoDB 的核心架构、调优策略、监控诊断、高级特性 到 备份恢复 进行系统性分析,并结合代码示例与实战案例,帮助开发者全面掌握其应用与优化技巧…...

[AI算法] LLM训练-构建transformers custom model

文章目录 1. 继承与实现基础结构2. 支持 DeepSpeed 和 Accelerate 的注意事项a. 模型输出格式b. 设备管理c. 分布式训练兼容性d. DeepSpeed 特定优化 3. 训练脚本集成建议4. 测试与调试建议 在使用 Hugging Face 的 transformers 库时&#xff0c;若要自定义一个继承自 PreTrai…...

突发,苹果发布下一代 CarPlay Ultra

汽车的平均换代周期一般都超过5年&#xff0c;对于老旧燃油车而言&#xff0c;苹果的 Carplay 是黑暗中的明灯&#xff0c;是延续使用寿命的利器。 因为你可能不需要冰箱彩电大沙发&#xff0c;但一定需要大屏车载导航、倒车影像、车载听歌。如果原车不具备这个功能&#xff0…...

git克隆github项目到本地的三种方式

本文旨在使用git工具将别人发布在github上的项目保存到本地 1.安装git&#xff0c;创建github账户&#xff0c;并使用ssh关联自己的github账号和git&#xff0c;具体教程可以参照下面两篇文章&#xff1a; Github入门教程&#xff0c;适合新手学习&#xff08;非常详细&#…...

Excel MCP: 自动读取、提炼、分析Excel数据并生成可视化图表和分析报告

最近&#xff0c;一款Excel MCP Server的开源工具火了&#xff0c;看起来功能很强大&#xff0c;咱们今天来一探究竟。 基础环境 最近两年&#xff0c;大家都可以看到AI的发展有多快&#xff0c;我国超10亿参数的大模型&#xff0c;在短短一年之内&#xff0c;已经超过了100个&…...

香港 GPU 服务器优势及使用场景解析

在快速发展的科技领域&#xff0c;数据处理和复杂计算已成为众多行业的支柱&#xff0c;GPU 服务器的重要性不容小觑。GPU 服务器是内部集成一个或多个 GPU的物理服务器&#xff0c;用于执行每个用例所需的任务。而香港 GPU 服务器&#xff0c;是指部署在中国香港数据中心、配备…...

Go语言交替打印问题及多种实现方法

Go语言交替打印问题及多种实现方法 在并发编程中&#xff0c;多个线程&#xff08;或 goroutine&#xff09;交替执行任务是一个经典问题。本文将以 Go 语言为例&#xff0c;介绍如何实现多个 goroutine 交替打印数字的功能&#xff0c;并展示几种不同的实现方法。 Go 语言相关…...

Grafana分布统计:Heatmap面板

Heatmap是是Grafana v4.3版本以后新添加的可视化面板&#xff0c;通过热图可以直观的查看样本的分布情况。在Grafana v5.1版本中Heatmap完善了对Prometheus的支持。这部分&#xff0c;将介绍如何使用HeatmapPanel实现对Prometheus监控指标的可视化。 使用Heatmap可视化Histogr…...

rk3576 gstreamer opencv

安装gstreamer rk3588使用gstreamer推流_rk3588 gstreamer-CSDN博客 rk3588使用gstreamer推流_rk3588 gstreamer-CSDN博客 Installing on Linux sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-pl…...

用户现场不支持路由映射,如何快速将安防监控EasyCVR视频汇聚平台映射到公网?

一、方案背景​ 随着数字化安防与智能交通管理发展&#xff0c;视频监控远程管理需求激增。EasyCVR作为专业视频融合平台&#xff0c;具备多协议接入等核心功能&#xff0c;是智能监控的重要工具。但实际部署中&#xff0c;当EasyCVR处于内网且路由器无法进行端口映射时&#…...

棋牌室台球室快速接入美团团购接口

北极星平台从2024年12月份开始慢慢关闭&#xff0c;现在很多开发者反馈北极星token已经不能刷新了&#xff0c;全部迁移到美团团购综合平台。 申请这个平台要求很高 1、保证金费用要15万起步 2、平台必须是二级等保和安全产品 &#xff0c;一个二级等保费用10万起步 所以很多…...

Qwen3技术报告解读:训练秘籍公开,推理与非推理模型统一,大模型蒸馏小模型(报告详细解读)

1.简介 Qwen3 是 Qwen 模型家族的最新版本&#xff0c;它是一系列大型语言模型&#xff08;LLMs&#xff09;&#xff0c;旨在提升性能、效率和多语言能力。基于广泛的训练&#xff0c;Qwen3 在推理、指令遵循、代理能力和多语言支持方面取得了突破性进展&#xff0c;具有以下…...

entity线段材质设置

在cesium中,我们可以改变其entity线段材质,这里以直线为例. 首先我们先创建一条直线 const redLine viewer.entities.add({polyline: {positions: Cesium.Cartesian3.fromDegreesArray([-75,35,-125,35,]),width: 5,material:material, 保存后可看到在地图上创建了一条线段…...

Word图片格式调整与转换工具

软件介绍 本文介绍的这款工具主要用于辅助Word文档处理。 图片排版功能 经常和Word打交道的人或许都有这样的困扰&#xff1a;插入的图片大小各异&#xff0c;排列也参差不齐。若不加以调整&#xff0c;遇到要求严格的领导&#xff0c;可能会让人颇为头疼。 而这款工具能够统…...

小刚说C语言刷题—1700请输出所有的2位数中,含有数字2的整数

1.题目描述 请输出所有的 2 位数中&#xff0c;含有数字 2 的整数有哪些&#xff0c;每行 1个&#xff0c;按照由小到大输出。 比如&#xff1a; 12、20、21、22、23… 都是含有数字 2的整数。 输入 无 输出 按题意要求由小到大输出符合条件的整数&#xff0c;每行 1 个。…...

视频抽帧并保存blob

视频抽帧 /*** description 获取文件中的每一帧* param { File } file* param { Number } time 每一帧的时间间隔(单位:秒)* param { Boolean } isUseInterval 是否使用间隔 为false只会获取这一帧* returns { Map }* example await captureFrame({ file, 20 }) > M…...

opencloudos 安装 mosquitto

更新系统并安装依赖 sudo dnf update -y sudo dnf install -y epel-release # 若需要 EPEL 额外仓库 sudo dnf install -y gcc-c cmake openssl-devel c-ares-devel libuuid-devel libwebsockets-devel安装 Mosquitto 通过默认仓库安装&#xff08;推荐&#xff09; sudo dn…...

STM32CubeMX使用SG90舵机角度0-180°

1. 配置步骤 1.1 硬件连接 舵机信号线 → STM32的PWM输出引脚&#xff08;如 PA2&#xff0c;对应定时器 TIM2_CH3&#xff09;。 电源和地 → 外接5V电源&#xff08;确保共地&#xff09;。 1.2 定时器配置&#xff08;以TIM2为例&#xff09; 在STM32CubeMX中&#xff1…...

【Umi】项目初始化配置和用户权限

app.tsx import { RunTimeLayoutConfig } from umijs/max; import { history, RequestConfig } from umi; import { getCurrentUser } from ./services/auth; import { message } from antd;// 获取用户信息 export async function getInitialState(): Promise<{currentUse…...

使用哈希表封装myunordered_set和myunordered_map

文章目录 使用哈希表封装myunordered_set和myunordered_map实现出复用哈希表框架&#xff0c;并支持insert支持迭代器的实现constKey不能被修改unordered_map支持[ ]结语 我们今天又见面啦&#xff0c;给生活加点impetus&#xff01;&#xff01;开启今天的编程之路&#xff01…...

光学变焦和数字变倍模块不同点概述!

一、光学变焦与数字变倍模块的不同点 1. 物理基础 光学变焦&#xff1a;通过调整镜头组中镜片的物理位置改变焦距&#xff0c;实现无损放大。例如&#xff0c;上海墨扬的MF-STAR吊舱采用30倍光学变焦镜头&#xff0c;焦距范围6~180mm&#xff0c;等效焦距可达997mm。 数字…...

Spring MVC 中请求处理流程及核心组件解析

在 Spring MVC 中&#xff0c;请求从客户端发送到服务器后&#xff0c;需要经过一系列组件的处理才能最终到达具体的 Controller 方法。这个过程涉及多个核心组件和复杂的映射机制&#xff0c;下面详细解析其工作流程&#xff1a; 1. 核心组件与请求流程 Spring MVC 的请求处…...

《100天精通Python——基础篇 2025 第19天:并发编程启蒙——理解CPU、线程与进程的那些事》

目录 一、计算机基础知识1.1 计算机发展简史1.2 计算机的分类1.2.1 超级计算机&#xff08;Supercomputer&#xff09;1.2.2 大型机&#xff08;Mainframe Computer&#xff09;1.2.3 迷你计算机&#xff08;Minicomputer&#xff09;---- 普通服务器1.2.4 工作站&#xff08;W…...

<PLC><视觉><机器人>基于海康威视视觉检测和UR机械臂,如何实现N点标定?

前言 本系列是关于PLC相关的博文,包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。 PLC品牌包括但不限于西门子、三菱等国外品牌,汇川、信捷等国内品牌。 除了PLC为主要内容外,相关设备如触摸屏(HMI)、交换机等工控产品,如果有…...

FC7300 WDG MCAL 配置引导

在WDG模块中,用户需要选择GPT资源,因此在配置WDG组件之前,需要先选择GPT通道。WDG包含三个组件,每一个组件对应不同的硬件。 Wdg:对应WDOG0Wdg_174_Instance1:对应WDOG1Wdg_174_Instance2:对应WDOG2一、WDG 组件 1. General Wdg Disable Allowed:是否允许在WDG运行过程…...