🔒
发现新文章,点击刷新页面。
✇Windsky博客 | 晔's blog

回顾二零二三

作者 Windsky

又是此时此刻,一个辞旧迎新的节点,今年发生了许多事,告别了2023年,是时候写点什么。

深感时光流的着实太快,去年写完总结的时刻我还能清清楚楚的记得,现在又到了燃放烟花爆竹的时候。这篇文章其实应该很早就发布的,但也是一拖再拖,拖到了现在,实际上还是有很多话想要讲的,但是却不知道从何谈起...

回想着这一年干了些什么,貌似很多很多,却又好像什么也没干似的。看着相册中照片拍摄的时间,有时还会惊讶原来这是发生在今年的事情。这一年中是有很多记忆深刻的事情,但好像又没有什么值得记录的必要,这种感觉就像是今天过得充实又快乐,却没有发布朋友圈一样。所以实际上,过好自己的每一天就是一件很难的事情了,就没必要在意有没有那么多的观众,更何况自己大部分时间都是觉得蛮无聊。在这一年的过程中,仿佛有什么东西在人的洪流与时间的长河中消失的无影无踪,有一种活在《挪威的森林》里面的感觉。

这一年中的事情无非还是那几样:
Movies 🎬 Study 📕 Music 🎵 Books 📚 Travel🧳 Porn 🔞
所以这里我也没有什么过多的分享,只有一些我想说的话。

乱七八糟
乱七八糟

这一年经历了自己二十岁的生日,以后都是准备奔三的年纪了,转眼间也马上就要本科毕业,意识到自己的青春马上也要过去。记得那天下午阳光明媚,给过去二十年自己送了一本《挪威的森林》。就如同书中所写那样,这个过程就是:“没有一点准备,就像谁从背后硬推我一把。”在人际交往上,还是抱着没必要不社交的心态,一切还是顺其自然。希望自己能够快点成熟,多学一点知识,在未来不会太过于迷茫。

趁着闲暇时间,继续读了一些书,看了一些电影,一共记录了101部影视,25本图书,这些都在Douban记录了一下。感谢这些充实了那些黯淡的时光。在新的学期也学到了很多全新的知识与技能,越来越感受到了IC Desgin的魅力,至少本科阶段还是没有完全荒废掉。

坚定了要考研的想法,也算是对自己一直碎碎念的一个answer吧,一方面是需要master这个学历,另一方面还是对于社会的畏惧,是一种逃避。其实这也是无奈之举,能推免保送的话,谁会愿意花费整整一年多的大学时光呢。好像我每次都是那样高不成低不就的状态,也许是周围的人都太优秀了,所以我是始终觉得我是普通的那一群人,无止尽的羡慕着却始终达不到想要的高度。

今年南方周末的新年贺词是“守住不惑的底线,选择做最值得的自己”。不惑的年龄还尚早,但做最值得的自己应该是每个人的目标。

每一次何去何从的困惑,都可能通向一场毅然决然的醒悟。即使不知道答案,即使不清楚前路,仍可选择做最值得的自己:去思考、去行动,去迎接、去探索。无论游刃有余还是头破血流,每一次闪展腾挪都是一次饱含希望的奋起,仿佛每一团在冬夜升起的篝火,都在为迎接春日而燃烧。

选择最值得的自己,这是最具有挑战性的难题。

时平顶山天上大风,霰雪雰纷
时平顶山天上大风,霰雪雰纷

“天上大风”是在读川端康成《山音》中看到的,是良宽禅师为放风筝的孩子们所题,也是一种美好的祝愿;在古代中国,霰也视为吉祥的象征,寓意着风调雨顺,国泰民安。就在这特殊的时刻,送上这句晚来的新年祝福:祝你新年快乐,顺颂时祺!

✇Windsky博客 | 晔's blog

回顾二零二三

作者 Windsky

又是此时此刻,一个辞旧迎新的节点,今年发生了许多事,告别了2023年,是时候写点什么。

深感时光流的着实太快,去年写完总结的时刻我还能清清楚楚的记得,现在又到了燃放烟花爆竹的时候。这篇文章其实应该很早就发布的,但也是一拖再拖,拖到了现在,实际上还是有很多话想要讲的,但是却不知道从何谈起...

回想着这一年干了些什么,貌似很多很多,却又好像什么也没干似的。看着相册中照片拍摄的时间,有时还会惊讶原来这是发生在今年的事情。这一年中是有很多记忆深刻的事情,但好像又没有什么值得记录的必要,这种感觉就像是今天过得充实又快乐,却没有发布朋友圈一样。所以实际上,过好自己的每一天就是一件很难的事情了,就没必要在意有没有那么多的观众,更何况自己大部分时间都是觉得蛮无聊。在这一年的过程中,仿佛有什么东西在人的洪流与时间的长河中消失的无影无踪,有一种活在《挪威的森林》里面的感觉。

这一年中的事情无非还是那几样:
Movies 🎬 Study 📕 Music 🎵 Books 📚 Travel🧳 Porn 🔞
所以这里我也没有什么过多的分享,只有一些我想说的话。

乱七八糟
乱七八糟

这一年经历了自己二十岁的生日,以后都是准备奔三的年纪了,转眼间也马上就要本科毕业,意识到自己的青春马上也要过去。记得那天下午阳光明媚,给过去二十年自己送了一本《挪威的森林》。就如同书中所写那样,这个过程就是:“没有一点准备,就像谁从背后硬推我一把。”在人际交往上,还是抱着没必要不社交的心态,一切还是顺其自然。希望自己能够快点成熟,多学一点知识,在未来不会太过于迷茫。

趁着闲暇时间,继续读了一些书,看了一些电影,一共记录了101部影视,25本图书,这些都在Douban记录了一下。感谢这些充实了那些黯淡的时光。在新的学期也学到了很多全新的知识与技能,越来越感受到了IC Desgin的魅力,至少本科阶段还是没有完全荒废掉。

坚定了要考研的想法,也算是对自己一直碎碎念的一个answer吧,一方面是需要master这个学历,另一方面还是对于社会的畏惧,是一种逃避。其实这也是无奈之举,能推免保送的话,谁会愿意花费整整一年多的大学时光呢。好像我每次都是那样高不成低不就的状态,也许是周围的人都太优秀了,所以我是始终觉得我是普通的那一群人,无止尽的羡慕着却始终达不到想要的高度。

今年南方周末的新年贺词是“守住不惑的底线,选择做最值得的自己”。不惑的年龄还尚早,但做最值得的自己应该是每个人的目标。

每一次何去何从的困惑,都可能通向一场毅然决然的醒悟。即使不知道答案,即使不清楚前路,仍可选择做最值得的自己:去思考、去行动,去迎接、去探索。无论游刃有余还是头破血流,每一次闪展腾挪都是一次饱含希望的奋起,仿佛每一团在冬夜升起的篝火,都在为迎接春日而燃烧。

选择最值得的自己,这是最具有挑战性的难题。

时平顶山天上大风,霰雪雰纷
时平顶山天上大风,霰雪雰纷

“天上大风”是在读川端康成《山音》中看到的,是良宽禅师为放风筝的孩子们所题,也是一种美好的祝愿;在古代中国,霰也视为吉祥的象征,寓意着风调雨顺,国泰民安。就在这特殊的时刻,送上这句晚来的新年祝福:祝你新年快乐,顺颂时祺!

✇Windsky博客 | 晔's blog

Never Let Me Go

作者 Windsky

哎,又到了此时此刻。
断更了这么久,是时候再写点什么了,我想。

游戏

  • 王者荣耀
  • Minecraft
  • It takes two friends's pass

我是不喜欢玩游戏的,我认为游戏的社交属性是大于其实际作用的,所以我大部分时间都是在陪玩。其中令人深刻的是 双人成行 ,在游戏中朋友对我说这是steam年度最佳,确实如此,剧情与画面都是值得这个称号的。

音乐

最近零零散散也听了许多许多,但网易云的黑胶VIP过期了,因为Apple music还一直在订阅中,觉得没有必要续费了,所以我不知道听了多少,只是觉得不少而已。
如果推荐一首的话,我会选择 GEM邓紫棋在9.17日发布的 唯一
https://music.163.com/song?id=2083785152&userid=364790668

电影&书

影视作品看了一些,但是觉得没什么想写的欲望,都是普普通通,没有眼前一亮的感觉。
能写下的就是看了人生中的第一部IMAX电影,献给了《封神:朝歌风云》

  • 石黑一雄《莫失莫忘》
  • 余华《在细雨中呐喊》

这是两本近期读过认为还是不错的。在可读性与故事性上来说应该还是会被大多数人喜欢的那种。
石黑一雄是懂回忆的,是把美好的东西打碎给人看,让回忆里的东西面目全非。

片段

第一次乘坐飞机是,上海航空的从新郑国际机场——上海浦东国际机场,我跟父母讲自己这么大没有坐过飞机,想试试,但想到最后发现我的家人甚至连高铁都没有坐过,其实也满可悲的。对于我们这种小城市,飞机,高铁都是一种虚伪的便捷。从市中心到高铁站,乘坐公交车,花费了4个小时,然后才能搭乘高铁去机场。
好在旅途还算愉快,上海确确实实是一座美好的城市。

第一次开车竟是在厦门,暑假把驾照考下来已经是临近开学,心想:终于结束了,再也不用跟驾校打交道了。回到厦门,舍友就拉着去试一下,于是第一次开车上路。中间发生了一段有趣的故事:由于高架桥的辅道导航没有及时提醒,导致我们一直在绕圈圈,最终走了5次海沧隧道,1次海沧大桥,终于从海沧区出来,最后算下来那天下午和晚上我们竟然开了有300km。

心血来潮,决定去爬山,喊上舍友,在晚上开车前往170km外的戴云山,一路上山路曲折,山上的星星是那么多。在伸手不见五指的山林里,只有手电筒的光亮,靠着GPS微弱的信号艰难攀登,从1点钟到早上5点钟,途中还碰上了下雨,最后终于登上了山上的高山草甸,那是最绝望的时刻,周围都是草丝毫没有路的迹象,四周用手电筒照过去都是一个样子,山上雾气弥漫,狂风把雾气吹动,就变成了雨,砸在脸上与衣服上,衣服已经全湿透,最后找了一个石头旁边坐下,嚼着面包果腹。还在犹豫要不要先下去躲避一下风,天竟然有了一丝微微的亮光,清晨来了。那是第一次这么期盼阳光。此时海拔1400距离山顶还有400m,在休息等待天亮的时候,偶遇两位爬山的路人,然后跟随着爬了200m,终于意识到我们实在爬不下去了,于是只好原路返回。也算是一种遗憾吧,但世界上确实不能做到事情都是完美的。

没想到自己学IC design竟然会用到这么多软件,Modelsim,Quartus,Mulitism,matlab,Ltspice...
实验室的破旧设备与低版本软件,实验时间又很短,只好课后回去自己在自己的电脑操作,于是练就了一手安装这些软件的本领,如果碰巧你也需要这些软件来进行仿真实验,我很乐意帮助。

台风来临之际厦门傍晚天空
台风来临之际厦门傍晚天空

✇Windsky博客 | 晔's blog

I Complete Myself.

作者 Windsky

很久没有更新日常了,也并不是发表的阈值增加了,只是每次想写下什么文字,我都会因为其他事情分心而无法继续写下去。而在离开的日子里,我一直在努力的将生活变成我想要的样子,相信未来我并不会感到遗憾.等未来兵荒马乱沧海桑田,这些经过大脑滤镜美化后的回忆,还能无限向往。

大学一定要多进行新的尝试,要全方面的锻炼自己,开阔自己的眼界,不要像高中那样呆板的读书了。

跟随时间来到这里,可以肯定的是这几天,这个月发生了很多事情。

感谢那些短期或长期给我带来一些帮助的事情:
Movies 🎬 Study 📕 Music 🎵 Books 📚 Porn 🔞

2月,3月,4月,5月依然孜孜不倦的看着电影,看完依据自己的感觉打上评分,写下一句短评记录在豆瓣,同时也了解到了一些很厉害的导演。近期的计划就是将老苏联艺术家安德烈·塔可夫斯基的电影看完。至于书籍,在二手市场购入了一些书,但奈何根本没有来得及去阅读,在家乡书店与图书馆借的书,庆幸在刚开学学习压力不是很大的时候读完了一些,也得到了一些共鸣。过完的这两年大学生活,孜孜不倦的投入去读村上春树,和其他日本作家,渡边淳一,岩井俊二,石黑一雄,太宰治等的作品,国内的却读的很少,但坦言,我是认为日本文学有着更细腻的笔触,至少我是这样认为。疯狂的沉溺于我自己的音乐世界,一个劲的听着那些听不懂的音乐,陪伴过了许许多多日夜,我试着将自己喜欢的一些风格去分享给一些亲近的朋友,但毕竟人与人之间是相异的,于是我还是老老实实去听自己的歌。

某个周一的下午,自己突然感觉身体不适,浑身上下好冷,摸了摸额头,额头也烫的厉害,艰难挺过两节课,回到宿舍躺下。躺在床上翻来覆去睡不着,身体发烫,心脏也跳的很快。加上近期甲流多发,我很害怕,去校医院做了核酸检测,并无大碍,开了点药回来,依然没有什么效果,烧的仍然难受,舍友也在发烧,我更担心起来,去了医院,抽血,肠胃炎,于是就漫长的打点滴.折腾完回到宿舍已经凌晨3点多,还在低烧,但状态好了一些.于是见到了凌晨的急诊室,2点的厦门,3点校园,这也是从未有过的经历.这是关于一场热病,一段神奇的经历.

从小到大,有过几次发烧,但都没有这次来得这么凶猛猛烈。
这期间做过最勇敢的事情,是与朋友一起去了东山岛,从想法到落地仅仅花费了一节课的时间,晚上漆黑的海堤,孤寂的渔船灯光照亮一片漆黑的海,远处胡明忽灭的灯光,晚上嘈杂的网吧,难闻的香烟味道,凌晨4点的街道,渐渐明亮的天空...这一切都是很美好的感受.

今年的五一,没有离开厦门,原因是并不富裕,我渴望去旅游,而这需要经济基础.但也是值得铭记的一次,与舍友沿着山海步道,用脚步丈量了山海线的长度,从2点一直走到6点,近4w的步数,翻山越岭,应了那句话From the mountain to the sea.假期和舍友一起去酒吧喝酒,玩骰子,每个人都醉乎乎的走出酒吧,然后又去唱歌,一直到2点才缓缓返回学校.不出意外的被辅导员问话,好在语重心长,并无大碍.

5.21日在陪舍友去医院的车厢后座,下雨的间歇,闷热的空气,手伸出了窗外,路灯的昏黄的光洒在手上,感受着风.

曾经我以为我将厦门游遍了,后来才发现,无名的街道,角落的海洋,才是这个城市的灵魂,于是我应该再去寻觅一些那些被忽视的,被省略的.

断更的时间线太长,零碎的记忆片段,数不清的照片,而这就是我的青春.而遗憾的是,100%女孩依然还没出现.

现在耳机里播放的是"迷失幻境(Acoustic)",香水味道弥漫,忙碌完了一天的任务,写下这些文字,以便未来怀念,期末又来临了,那么周末愉快,我们暑假再见.
如我的朋友圈(or QQzone)那里是一片偏僻寂寞的角落,也记录了更多的足迹.如果你想到访,那么下面是密钥:
微信ID:yanliye666 & QQ:1275069349

✇Windsky博客 | 晔's blog

Lyricease是最好用的第三方网易云播放器

作者 Windsky

平常算得上是重度音乐用户,日常中经常使用的软件包括网易云音乐,Apple Music,Spotify。在这其中,网易云充值了黑胶会员,Apple Music使用学生认证,每月也在订阅中。当然,受到平台的各种原因,其他的主流音乐App也偶尔使用一下。

一直在找一个纯净的,单纯听音乐的App,类似Apple Music for iOS,Android那样的,现在的音乐软件真是太臃肿,乱七八糟,杂乱无章,华而不实。

在这方面Spotify无疑是做的最好的,全平台的软件适配,超级纯粹的听音乐体验,庞大的曲库(国语歌词还是比较少)是心目中的白月光,无奈中国大陆地区无法使用,借助魔法也会被查出来,通过香港朋友注册的账户在后续的IP验证中被迫抛弃使用了,

Apple music在今年上新了独立的application,脱离了iTunes,有了自己的UI设计,在3月份,我并无期待的在PC端安装尝试了一下,只能说是效果一般。用也勉强能用,但最大的缺点是,无法看歌词。

于是,就找到了Lyricease,我愿称其为最好用,最好看的第三方网易云UMP

什么是UMP?

Universal Windows Platform(UWP)直译过来就是通用Windows平台,它是微软基于Win10开发的一个通用平台,微软希望自己所有的设备(包括Surface,Xbox,HoloLens等)都运行于同样的系统,然后让用户像使用苹果设备一样从自己官方的商城来下载安装应用,这样可以让应用市场中心化的同时保证系统的安全,稳定,高效。

几年前,微软宣布UWP的时候,可谓是信心满满,但由于某一些微软的神奇操作和UWP平台的局限性,UWP始终处于被抛弃的边缘。

UWP刚发布的时候,国内各互联网公司为了满足多平台用户需求,都推出了UWP平台。网易云音乐也不例外,也推出了干净无广告的UWP版本。但后来的版本与桌面版别无差异,同时也被网友所抛弃。

今天的主角是Lyricease

LyricEase是一个漂亮好用的第三方网易云音乐播放器,开源,并且UI很好的适配了Windows 11的UI。我觉得甚至直接可以平替掉官方的版本。直接登录自己的网易云账号,自动同步自己的网易云歌单。


UI界面干净清爽至极。


展开的播放界面跟Apple Music极其相似。


开启播放器均衡模式,内存占用在200MB左右。

需要桌面歌词,只需要再安装拓展软件。真正的小而美的第三方网易云播放器。

可惜现在无法在Microsoft store下载安装
其他下载地址:https://install.appcenter.ms/users/brandonw3612/apps/lyricease/distribution_groups/public
开源地址:https://github.com/brandonw3612/LyricEase

请详细阅读安装说明

不同于商店分发方式,安装第三方应用时需要开启开发人员模式, 请在设备上自行开启. 安装前确保 LyricEase 已关闭. 下载并解压
.zip 文件, 打开文件夹后右击 "Install.ps1" , 选择使用Powershell执行, 程序会自动安装证书,
依赖和软件本体. 安装过程中对于系统发出的许可提示, 请选择 "同意" 以确保正常安装. 从 v0.12.x 开始, 为缩减应用包体积,
我们支持按处理器架构下载安装包并在应用内检查更新时默认提供, 若下载安装包后升级失败, 请尝试卸载已安装的版本并重新安装.

✇Windsky博客 | 晔's blog

倒带贰零贰贰

作者 Windsky

贰零贰贰是历史性的,虽然大半年的时间还是在疫情中度过,但疫情终于画上了句号。

将这一年逐帧拆开来看,琐碎的平常,但也是弥足珍贵的记忆。获得也好,失去也好,对现在的我而言仅仅是没有实感的一个个词汇。在我身上刻下印记的不是这些节点,而是过程。我现在所信奉的,是要体验生活的本质,至于什么是“本质”,其实每个人心里都有一个答案。今年着实体验了不少,该有的挣扎、愤怒、怅然、愉悦、欣喜,一个都不少。

大一结束,退出了所加的所有部门,以及担任的所有职务,我想是时候变成一个“纯粹”的人了。关于自己的最大变化,谈不上成熟,只能说是More Clam。冷静的对待事物,冷静的对待人际关系,冷静的对待生活,这带来的好处是可以思考更多,可以去深入的去想这样做的后果,以至不会再犯一些很笨的错误。但带来的结果是没有了曾经那份无限的憧憬。如此这样,我这一年只能是平平淡淡,并没有什么大起大落可讲。

学业来讲,我只能说是没有摆烂,所学的东西都是仅仅停留在课本(课本也根本没有完全读懂),根本没有什么学术而言。其实不止一次下定决心好好学习,但最终还是没有毅力去坚持下去。我觉得我能从Environmental到Integrated Circuits就是一个不小的成就。虽然内卷严重,但至少还有些兴趣而言。我知道自己的能力,保研固然不会轮到我,其实也很纠结未来要不要读Master's degree,尤其是看到一篇博文“I quit my Ph.D" 更加迷茫。这个问题也许在新的一年会有答案,对这一切我还是无知。

与人的联系来说,我好像又回到了高中时代的样子,对于我而言,认识那么多的人也不见得是好事,真正玩的好的还是那么几个。也正是因为认识了那群人,或者说「重新认识了」一些人,使得我越来越珍惜身边人,越来越容易与人共情,越来越想做一个有温度的人。这一年的许多快乐都是一起才创造的。课后与朋友们一起吃饭,喝酒,海上栈道漫步,夕阳下的杏林湾,操场上的照明灯,在宿舍一起喝酒畅谈,喝的不省人事......都是太有趣的回忆。拖更博客多少也与我逐渐现充有关。当现实生活令我满足时,我并不太想活在线上。

我努力的将自己活成想要的样子,将人生变成一张打满对勾的表格。我相信大部分的焦虑都来自期望与现实的不匹配,所以治本的方法是要搞明白「自己」的位置,并且在认识本质后坦然接受。这确实是一个很有难度的课题。

大学?
大学?

好在有书籍与电影,音乐的陪伴,精神世界勉强不至于匮乏,还算不上文盲。

其实,还有诸多令我印象深刻事情,五一假期去鼓浪屿游玩,和好朋友们一起登上仙灵祺山,尧山的日出,第一次拿到奖学金,洛阳之旅...其中最让我印象深刻的是 暑日傍晚回家路旁的面馆里的饸饹面,一个加了卤蛋的烙馍,以及波蕊口乐。也就是这样的普通的不能再普通的日常组成了我这独一无二的二零二二年。

从2020年第一次读到《南方周末》的新年贺词,便成了习惯,每到新年,最期待的文字即为此。每每如此,从无例外。今年的题目是《总有奋不顾身的相信,总要坚韧恒久的勇气》。下面引用片段,愿共勉。

未来终将到来,相信让未来与我们有关。从现代化的百年追寻,到大疫后的秩序重建,我们相信,他们相信,不是因为未来值得相信,而是因为未来必须相信;不是美好已在前方等待,而是相信撬动了向往。春天终将回馈每一个在冬天里的抱薪者、坚守者、发光者,在现在与未来间,是跳动、更新、寓瞬息于无穷的光焰。

多年之后,在未来的某个黎明或午后,想起贰零贰贰年应该还能说句:那也不坏嘛。我也相信我们的相信从未改变,一如从大地遥望的那些光年之外的繁星,光芒温暖,坚韧永恒。所以就让我们继续往前走,不要在此处停留。在这个特别的岁末年初,让我们告别昨天,以今天和明天之名,祝你新年快乐!

平顶山夕阳阳光最为温柔
平顶山夕阳阳光最为温柔

✇Windsky博客 | 晔's blog

使用Matlab解决线性代数中常见问题

作者 Windsky

关于linear algebra不再赘述,下面通过matlab代码解决一些常见的线性代数问题。

线性代数是信息科学与工程学院大一上的课,而化工学院选择开在了大二上,转专业的缘故,就需要补修线性代数。
线性代数老师在结课后布置了课程大作业,其中有一项为将课后题的实验部分用Matlab做出来,由于信号与系统的实验就已经接触到了Matlab于是就选择这个作为自己的课程大作业,大二下也将修Matlab高级程序语言设计,也算做了铺垫。

1

用初等行变换法求解线性方程组:

$$ \left \{ \begin{array}{c} x_1+x_2-3x_3-x_4=1 \\ 3x_1-x_2-3x_3+4x_4=4 \\ x_1+5x_2-9x_3-8x_4=0 \end{array} \right . $$

matlab代码

b = [1, 4 ,0]';
B = [A, b];
c = rref(B)

运行结果:

c =

    1.0000         0         0   -0.3333   -0.3333
         0    1.0000         0    1.0000    4.0000
         0         0    1.0000    0.6667   -3.3333

2

用Cramer法则求解线性方程组

$$ \left \{ \begin{array}{c} 3x_1-2x_2+2x_3=10 \\ x_1+2x_2-3x_3=-1 \\ 3x_1-2x_2+2x_3=0 \end{array} \right . $$

matlab代码:

clear
n = input('方程个数n=');
A = input('系数矩阵A=');
b = input('常数列向量b=');
if (size(A) ~= [n, n]) | size(B) ~=[n, 1]
    disp('输入不正确,要求A是n阶方阵,b是n维列向量')
else if det(A) == 0
        disp('系数行列式为0,不能用克拉默法则解此方程组')
else 
     for i = 1:n
         B = A;
         B(:,i) = b;
         x(i) = det(B)/det(A);
     end
    end
end

运行结果:

Emmm 不会输入矩阵

3

向量组的线性相关性。给定一个n维向量组a1,a2,…,am,判断其线性相关性,并确定一个最大无关组。由于对矩阵A实施初等变换不改变其列向量之间的线性关系,因此可以利用Matlab的库函数rref实现。

matlab代码:

clear
x1 = [1, 0, 2]';x2 = [2, 1, 1]';x3 = [2, 0,1]';x4 = [3, 1, 1]';
x5= [1, 1, 1]';
A = [x1, x2, x3, x4];
[R, jb] = rref(A); len = length(jb);
if len < 5
    'The vector group is linearly dependent and serial numbers are'
    jb
else
    'The vector group is linearly independent'
end

运行结果;

ans =
The vector group is linearly dependent and serial numbers are

jb =
     1     2     3

4

化二次型为标准型。在Matlab中将二次型
$f = x_1^2+x_2^2+x_3^2+4x_1x_2+4x_1x_3+4x_2x_3$ 化为标准型.

matlab代码:

clear
A = [1, 2, 2;2, 1, 2;2, 2, 1]
[q, d] = eig(A)
C =q' * A * q

运行结果:

A =
     1     2     2
     2     1     2
     2     2     1


q =
    0.6015    0.5522    0.5774
    0.1775   -0.7970    0.5774
   -0.7789    0.2448    0.5774

d =
   -1.0000         0         0
         0   -1.0000         0
         0         0    5.0000

C =
   -1.0000   -0.0000   -0.0000
   -0.0000   -1.0000    0.0000
   -0.0000    0.0000    5.0000

5

判定二次型的正定值。在Matlab中判定
$ f = 3x_1^2+2x_2^2+7x_3^2-4x_1x_2-4x_2x_3 $是否为正定二次型?

matlab代码:

clear; 
A = [3, -2, 0;-2, 2, -2;0, -2, 7];   %输入二次型对应的对称阵
[q, d] = eig(A);                     %求矩阵A的特征值与特征向量
v = diag(d);                         %提取A的所有特征值
if all( v > 0)                       %判断矩阵A的特征值是否为正
    disp('二次型为正定')     
elseif all(v >= 0)  
    disp('二次型为半正定')             %判断矩阵A的特征值是否均为非负
elseif all(v < 0)
    disp('二次型为负定')               %判断矩阵A的特征值是否均为负   
elseif all(v <= 0)
    disp('二次型为半负定')             %判断矩阵A的特征值是否均为非正
else
    disp('二次型为不定')
end

运行结果:

二次型为正定

6

计算二次型的正(负)惯性指数。在Matlab中计算二次型
$ f = x_1x_2+x_1x_3-3x_2x_3 $的正(负)惯性指数。

Matlab代码:

clear;
A = [0, 0.5, 0.5;0.5, 0, -1.5,;0.5, -1.5, 0];
%输入二次型对应的对称阵
[q, d] = eig(A);    %计算矩阵A的特征值与特征向量
n = length(d);      %计算矩阵A的阶数
zheng = 0; fu = 0;  %将正负惯性指数初始值置为0
for i = 1:n
    if d(i) > 0
        zheng = zheng + 1;
    elseif d(i) < 0
        fu = fu + 1;
    end
end
zheng, fu

运行结果:

zheng =   0


fu =    1

所有代码均通过Matlab 2016a运行检测通过,运行情况会因matlab版本不同而异。

✇Windsky博客 | 晔's blog

Studynote About PCB Rules & EDA

作者 Windsky

"Integrated Circuit" is an Art

PCB布局规范:

第一部分:热处理设计
1.PCB 在布局中考虑将高热器件放于出风口或利于对流的位置。

2.较高的元件应考虑放于出风口,且不阻挡风路

3.散热器的放置应考虑利于对流

4.温度敏感器械件应考虑远离热源

5.对于自身温升高于 30℃的热源,一般要求:
在风冷条件下,电解电容等温度敏感器件离热源距离要求大于或等于2.5mm;
自然冷条件下,电解电容等温度敏感器件离热源距离要求大于或等于4.0mm。
6.电解电容不可触及发热元件,如大功率电阻,热敏电阻,变压器,散热器等。

7.电解电容与散热器的最小间隔为 10.0MM,其它元件到散热器的最小间隔为 2.0MM。

8.大面积铜箔要求用隔热带与焊盘相连
为了保证透锡良好,在大面积铜箔上的元件的焊盘要求用隔热带与焊盘相连,并且焊盘与印制导线的连接部宽度不应大于 0.3mm (对于不对称焊盘),对于需过 5A以上大电流的焊盘 则不能采用隔热焊盘。
焊盘两端导线走线均匀或热容量相等,焊盘与铜箔层相连采用“十”字形或“米”字形状。

第二部分:导线
1.导线最小线宽:单面板 0.3MM,双面板 0.2MM,边缘铜箔最小要 1.0MM

2.导线与导线之间最小间隙:单面板:0.3MM,双面板:0.2MM

3.导线与板边之间最小距离:0.5MM

4.AC电源的距离:AC 50V ~ AC 150V,4.0mm(3.0mm)以上

5.导线的宽度:细线建议0.4mm以上, AC到TRIAC的粗线,建议2.0mm以上或1.5mm以上。如果是大电流时,尽量愈粗愈好或在线上镀锡。

6.铜箔和板边距离须 0.5mm 以上。

7.DC 直流电压未满45V、AC交流未满30V,且在15VA以下的地方,铜箔线和线的电压差,其距离如下:

1mm ≈ 39mil
1mm ≈ 39mil

8.若导线入圆焊盘的宽度较圆焊盘的直径小时,则需加泪滴。

9.布线方向为水平或垂直,由垂直转入水平要走 45 度进入。

10.跳线不要放在 IC 下面或马达、电位器以及其它大体积金属外壳的元件下。

11.把没有接线的地方合理地作接地或电源用。

12.布线尽可能短,特别注意时钟线、低电平信号线及所有高频回路布线要更短。

13.模拟电路及数字电路的地线及供电系统要完全分开。

14.如果印制板上有大面积地线和电源线区(面积超过 500 平方毫米),应局部开窗口。如图:


15.电源的DC+,-电压尽量越粗越好,当需要跳线时,+,-电压尽量不要跳线,不用的 PCB Layout 空间,尽量布满+,-电压,GND的布线越粗越好。

16.负载电流超过2A时,其导线越粗越好,导线需做不防焊处理,让加工时导线可以吃锡,加大电流流通量。

17。尽量加粗接地线,若接地线很细,接地电位则随电流的变化而变化,致使电子设备的定时信号电平不稳,抗噪声性能变坏,因此要确保每一个大电流的接地端采用尽量短而宽的印制线,尽量加宽电源、地线宽度,最好是地线比电源线宽,它们的关系是:地线>电源线>信号线,如有可能,接地线的宽度应大于3mm,也可用大面积铜层作地线用,在印制板上把没被用上的地方都与地相连接作为地线用。

18.为了保证电气绝缘性,散热器下方周围应无走线(考虑到散热器安装的偏位及安规距离),若需要在散热器下布线,则应采取绝缘措施使散热器与走线绝缘,或确认走线与散热器是同等电位。

19.为了保证电气绝缘性,金属拉手条底下应无走线。

第三部分:元件
1.元件与板边最小距离:5.0MM

2.大型元器件(如:变压器、直径 15.0MM 以上的电解电容、大电流的插座等)加大铜箔及上锡面积如下图;阴影部分面积肥最小要与焊盘面积相等。

3.横插元件(电阻、二极管等)脚间中心,相距必须是 7.5mm,10.0mm 及 12.5mm。(如非必要,6.0mm 亦可利用,但适用于 IN4148 型之二极管或 1/16W 电阻上。1/4W 电阻由 10.0mm 开始)铁线脚间中心相距必须是 5.0mm,7.5mm,12.5mm,15mm,17.5mm,20mm,22.5mm,25mm。

4.电插印制板横插元件(电阻、二极管)间之最小距离 X 如下表:

5.直插元件只适用于外围尺寸或直径不大于10.5MM之元件。

6.直插元件孔之中心相距为2.5MM或5.0MM。

7.贴片元件的间距:


8.贴片元件与电插元件脚之间的距离,如图:

9.相同类型的SMT器件距离:


10.不同类型SMT器件距离:


11.经常插拔器件或板边连接器周围 3mm 范围内尽量不布置 SMD,以防止连接器插拔时产生的应力损坏器件。

12.BGA 周围 3mm 内无器件
为了保证可维修性,BGA 器件周围需留有 3mm 禁布区,最佳为 5mm 禁布区。一般情况下 BGA 不允许放置背面;当背面有BGA 器件时,不能在正面 BGA5mm 禁布区的投影范围内布器件。

13.电气间隙(两相邻导体或一个导体与相邻电机壳表面的沿空气测量的最短距离)
一次侧交流部分:保险丝前 L—N≥2.5mm,L.N <--> PE(大地)≥2.5mm,保险丝装置之后可不做要求,但尽可能保持一定距离以避免发生短路损坏电源。
一次侧交流对直流部分≥2.0mm
一次侧直流地对地≥4.0mm 如一次侧地对大地
一次侧对二次侧≥6.4mm,如光耦、Y 电容等元器零件脚间距≤6.4mm 要开槽。
二次侧部分之间≥0.5mm 即可
二次侧地对大地≥2.0mm 以上
变压器两级间≥8.0mm 以上
14.有极性的变压器的引脚尽量不要设计成对称形式。

15.安装孔的禁布区内无元器件和走线(不包括安装孔自身的走线和铜箔)。

16.金属壳体器件和金属件的排布应在空间上保证与其它器件的距离满足安规要求。

17.振荡器和振荡电容走线距离IC接脚越近越好。

18.如果没有空间或结构的问题,零件尽量直插,不要背焊零件

19.三极管可以在丝印上标出 e,b,c 脚

第四部分:孔
1.PCB 板上的散热孔,直径不可大于 3.5MM

2.焊盘与板边最小距离为 4.0MM

3.焊盘的直径为孔径的两倍,双面板最小为 1.5MM,单面板最小为2.0MM(建议2.5MM)。如果不能用圆形焊盘,可用腰圆形焊盘,大小如下图所示(如有标准元件库,则以标准元件库为准):

4.焊盘长边、短边与孔的关系为:

5.焊盘中心距小于 2.5MM 的,该相邻的焊盘周边要有丝印油包裹,丝印油宽度为 0.2MM(建议0.5MM)。

6.测试焊盘:以 Φ2.0MM 为标准,最小要 Φ1.3mm。开模后的测试焊盘不能移动,非不得已事先要与生产部门商量。

7.插件元件焊盘间距大于 1.0mm

8.贴片焊盘的上锡位不能有丝印

9.为减少焊点短路,所有的双面印制板,过孔都不开绿油窗。

10.孔洞间距离最小为 1.25MM(对双面板无效)。

11.螺丝孔半径 5.0MM 内不能有铜箔(除要求接地外)及元件。(或按结构图要求)。

12.电插印制板的定位孔规定:阴影部分不可放元件,手插元件除外,L 的范围是 50~330mm,H的范围是 50~250mm,如果小于 50X50 则要拼板开模方可电插,如果超过 330X250 则改为手插板。定位孔需在长边上。

第五部分:丝印
1.丝印字符为水平或右转 90 度摆放。

2.当无维护文件时,PCB 板上的保险管、保险电阻、交流 220V 的滤波电容、变压器等元件位置附近,面丝印上应有符号及该元件的标称值。

3.交流 220V 电源部分的火线与中线在铜箔安全距离不小于 3.0MM,交流 220V 线中任一 PCB 线或可触及点距离低压零件及壳体之间距应大于 6MM,并且要加上 符号,符号下方应有“HIGH VOLTAGE DANGER”字符,强电与弱电间应用粗的丝印线分开,以警告维修人员该处为高压部分,要小心操作。

4.波峰焊加工的制成板进板方向要求有丝印标明
波峰焊加工的制成板进板方向应在 PCB 上标明,并使进板方向合理,若 PCB 可以从两个方向进板,应采用双箭头的进板标识。(对于回流焊,可考虑采用工装夹具来确定其过回流焊的方向)。

5.PCB 的原、付边隔离带清晰,中间有虚线标识。

第六部分:流程
1.从原理图到pcb的设计流程 建立元件参数->输入原理网表->设计参数设置->手工布局->手工布线->验证设计->复查->cam输出。

常用网站:
嘉立创EDA使用说明:https://docs.lceda.cn/cn/FAQ/Editor/index.html
嘉立创EDA快捷键:https://docs.lceda.cn/cn/Introduction/Shortcut-Keys/index.html

✇Windsky博客 | 晔's blog

基于LM386N的音频功率放大器——我真正意义上的第一块电路板

作者 Windsky

模拟电路实验的其中一个是要自己设计一个音频放大器。

项目归档OSHWHUB,地址:https://oshwhub.com/windskyyan/yinpin

实验要求:

音频功率放大器是音响系统中不可缺少的重要组成部分,其主要任务是将前级已经放大的音频信号进行功率放大,以得到足够大的输出功率,推动外接负载,如扬声器,音箱等。
本次实验是根据给出的技术指标,设计制作一个音频放大器,要求能驱动额定功率P>=8W的扬声器。
参数要求:
a.额定功率:Pom >= 5W
b.负载阻抗:RL = 8.2Ω
c.上限频率:fH >= 20KHz
d.输入阻抗:Ri > 20KΩ
e.电压增益:G > 20dB
参考模拟电子技术基础第九章内容及检索相关资料,画出设计的电路工作原理,分析说明其工作原理。
利用NI Multisim 软件仿真验证电路可行。
制作音频功率放大器,调试使其性能指标达到要求。

设计思路:

由于老师未给出指定电路图与元器件,本着能简单绝不复杂化的原则,采用音频功放芯片。综合考虑,选择LM386作为核心芯片进行设计电路。
何为LM386:LM386是一种音频集成功放,具有自身功耗低、更新内链增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点的功率放大器,广泛应用于录音机和收音机之中。
制造商:美国国家半导体公司 种类:音频功率放大器
特性
静态功耗低,约为4mA,可用于电池供电;
工作电压范围宽,4-12V or 5-18V;
外围元件少;
电压增益可调,20-200;
低失真度;
应用特点
LM386是美国国家半导体公司生产的音频功率放大器,主要应用于低电压消费类产品。为使外围元件最少,电压增益内置为20。但在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为任意值,直至 200。输入端以地为参考,同时输出端被自动偏置到电源电压的一半,在6V电源电压下,它的静态功耗仅为24mW,使得LM386特别适用于电池供电的场合。
LM386出色的特性就很好的作为本次的主控芯片,但出于成本考虑,选择了国产LM386N 直插型封装。
电器特性

电器特性
电器特性

电路设计:

电路图设计
电路图设计

器件解释:
C1输出电压滤波电容
R与C2串联构成校正网络用于相位补偿
C3与R2设置增益
C4旁路电容
C5输入端滤波电容
R1输入电压调节

PCB设计:

PCB正面
PCB正面

PCB反面
PCB反面

采用嘉立创EDA进行设计。

Multisim仿真验证:

失败了
失败了

Multisim仿真失败

本次仿真尝试0-1V的 20-20000Hz的正弦信号模拟输入音频信号,利用示波器应在输出端测得符合电压增益的无失真正弦信号。
很遗憾,仿真失败了(会出现严重失真情况,并且也达不到预期的电压增益),但经过自己的分析,电路图应该没问题,分析原因如下:
1.对Multisim操作不熟悉,可能有元器件使用错误。
2.Multisim的自身缺陷,没有模拟音频信号输入
3.MUlitism的自身缺陷,庞大的元器件库竟然没有LM386,采用网上教程自定义的LM386芯片,这可能是造成仿真失败的原因

元器件采购:

BOM清单:

BOM
BOM

没有买音响,验收的时候随机抽取一位幸运儿借用一下即可。

电路板焊接:

SMT太贵了,使我无法负担的,器件也都是插片的,极大减少了焊接难度,元器件较少,采用手焊。
工程量较小,也没有进实验室,在宿舍进行焊制。

在上一节模电实验课进行了简单是实物验证,输入电压0.1V正弦200Hz,在输出端测得交流电压为6V,时间紧凑,未使用示波器进行波形观测,是否可以放大,需要进一步验证

希望能成功,,,希望能通过验收。

后期再见

✇Windsky博客 | 晔's blog

《人间词话》: 山长水阔知何处

作者 Windsky

记在前面。最近确实看到书不多,有音乐与电影陪伴,生活还是继续过着。拿着平板,看了看书架,在免费区选择了王国维的《人间词话》很短,一节课的时光就读罢。

其实,在高三的语文课上,我的语文老师就经常拿王国维来讲,当初也没有深入了解,也不懂其中深意。

王国维(1877年12月3日—1927年6月2日),初名国桢,字静安、伯隅,初号礼堂,晚号观堂,又号永观,谥忠悫。汉族,浙江省海宁州(今浙江省嘉兴市海宁)人。王国维是中国近、现代相交时期一位享有国际声誉的著名学者。
王国维早年追求新学,接受资产阶级改良主义思想的影响,把西方哲学、美学思想与中国古典哲学、美学相融合,研究哲学与美学,形成了独特的美学思想体系,继而攻词曲戏剧,后又治史学、古文字学、考古学。郭沫若称他为新史学的开山,不止如此,他平生学无专师,自辟户牖,成就卓越,贡献突出,在教育、哲学、文学、戏曲、美学、史学、古文学等方面均有深诣和创新,为中华民族文化宝库留下了广博精深的学术遗产。

《人间词话》看似讲词,其中更也是对人生的一种指导吧,这是我对他的理解。

就像其中在论述有我,无我时所述,有我之境,以我观物,故物皆着我之色彩,无我之境,以物观物,故不知何者为我,何者为我。是对“泪眼问花花不语,乱红飞过秋千去。”,“可看孤馆闭春寒,杜鹃声里斜阳暮。”,“采菊东篱下,悠然见南山。”的论述,我更觉得是一种对待事物的态度吧,以自己为中心,一切就赋予我的色彩,我的感情,我的思想。就像自古逢秋悲寂寥,秋日似乎给人留下一种悲伤寂寥的情愫,可仍然有我言秋日胜春朝的句子。以无我观物,物还是物,也确实是真真切切的物了。有我,主观强烈,无我,客观冷静;也不是非要分出高低之分,就像文章所讲无我之境,人惟于静中得之。有我之境,于由动之静时得之。故一优美,一宏壮也。起初,我的语文老师韩老师用这两种区别来讲古诗,如今我却有了更深的理解。总而言之,无我有我的结合才是最完美的。

其中最耐人寻味的是:
“昨夜西风凋碧树,独上高楼,望尽天涯路。”此第一境界也。“衣带渐宽终不悔,为伊消得人憔悴。”此第二境界也。“众里寻他千百度,慕然回首,那人却在灯火阑珊处。”此第三境界也。

第一境界 “立”
“昨夜西风凋碧树。独上高楼,望尽天涯路。”

出自北宋晏殊《蝶恋花·槛菊愁烟兰泣露》:
槛菊愁烟兰泣露。罗幕轻寒,燕子双飞去。明月不谙离恨苦。斜光到晓穿朱户。
昨夜西风凋碧树。独上高楼,望尽天涯路。欲寄彩笺兼尺素。山长水阔知何处。

此一境:“望尽天涯” 正从一夜无眠生出,脉理细密。“西风凋碧树”,不仅是登楼极目所见,而且包含有昨夜通宵不寐卧听西风落叶的回忆。景既萧索,人又孤独,几乎言尽的情况下,作者又出人意料地展现出一片无限广远寥廓的境界:“独上高楼,望尽天涯路。”这里固然有凭高望远的苍茫之感,也有不见所思的空虚怅惘,但这所向空阔、毫无窒碍的境界却又给主人公一种精神上的满足,这是从“望尽”一词中可以体味出来的。这三句虽然包含望而不见的伤离意绪,但感情悲壮,毫无纤柔颓靡。

下定决心去寻找一个可以作为一生为之努力的目标,但那段日子是彷徨、孤独、寂寞,此一境界。

第一境界以西风刮得绿树落叶凋谢,表示当前形势相当恶劣,但在乱世之中,也只有他能真正爬上高楼,居高临下高瞻远瞩,清晰地看到远方,看到天涯海角尽头,看到别人看不到的地方。说明他能排除干扰,不为暂时的烟雾所迷惑。他能看到形势发展的主要方向,能抓住斗争的主要矛盾。这是能取得成功的基础。

第二境界 “守”
“衣带渐宽终不悔,为伊消得人憔悴。”

出自北宋柳永《蝶恋花·伫倚危楼风细细》:
伫倚危楼风细细,望极春愁,黯黯生天际。草色烟光残照里,无言谁会凭栏意。
拟把疏狂图一醉,对酒当歌,强乐还无味。衣带渐宽终不悔,为伊消得人憔悴。

此一境:词人所忧“春愁”,不外是“相思”二字。词行至此,可知满怀愁绪之所以挥之不去,正是因为他不仅不想摆脱这“春愁”的纠缠,甚至心甘情愿为“春愁”所折磨,即使渐渐形容憔悴、瘦骨伶仃,也决不后悔。
投影至人生,第二境界乃有了目标,在追逐的道路上,求之不得之后形容消瘦而却继续追逐无怨无悔。

第二境界概括了一种锲而不舍的坚毅性格和执着态度。描述了如何为此下决心而努力奋斗。人瘦了、憔悴了,但仍“终不悔”。就是说尽管遇到各式各样的困难,还要坚持奋斗,继续前进,为了事业一切在所不惜。在这个世界上干什么都没有平坦大道,要敢于创新,也要善于等待。这是执着地追求,忘我地奋斗。

第三境界 “得”
“众里寻他千百度。蓦然回首,那人却在,灯火阑珊处。”

出自南宋辛弃疾《青玉案·元夕》:
东风夜放花千树。更吹落、星如雨。宝马雕车香满路。凤箫声动,玉壶光转,一夜鱼龙舞。
蛾儿雪柳黄金缕。笑语盈盈暗香去。众里寻他千百度。蓦然回首,那人却在,灯火阑珊处。

此一境:寻觅千百次,竟然是在灯火冷落之处发现了那人。人们都在尽情的狂欢,陶醉在热闹场中,可是她却在热闹外。灯火写得愈热闹,则愈显“那人”的清高,人写得愈忘情,愈见“那人”于世间的不同境地,更是在诗人心中的不同境地。
此一境界表明立志追逐的,在足够的积累后,量变成为质变,不经意间已追逐到了。

第三境界是指在经过多次周折,经过多次的磨练之后,逐渐成熟起来,别人看不到的东西他也能明察秋毫,别人不理解的事物他也会突然豁然领悟贯通。这时他在事业上就会有创造性的独特的贡献。这是功到事成。这是用血汗浇灌出来的鲜花,是用毕生精力铸造的大厦。

这就是王国维的人生三境界,换言之就是:悬思——苦索——顿悟。三者先后为序,缺一不可,先有明确目标,再去坚持追寻,最后才能达成所愿。

✇Windsky博客 | 晔's blog

这是一个Python编程题题库

作者 Windsky

此篇文章详细记录了python的简单案例,以及课后习题,对应的教材为 Python语言程序设计(清华大学出版社)

期末编程大题可能会从这里出,注意只是可能。
但以下都是常见的例子。

例题原文来自https://blog.ohmykreee.top/
答案作者为:Kreee & 张忆文(文忆天下)
部分我觉得不是很好的,或没有答案的问题,代码由Windsky Yan来写。

已经确保所有案例都通过 Pycharm 运行成功。当然,一个程序,不止一种形式的代码,但殊途同归。如果有更好的算法也欢迎提出。
祝满绩。

1.从键盘输入三个数值,分别赋值给num1, num2和num3,并求它们的平均值。

num1 = eval(input('请输入第一个数字:'))
num2 = eval(input('请输入第二个数字:'))
num3 = eval(input('请输入第三个数字:'))

averNum = (num1 + num2 + num3) / 3
print('这三个数的平均数为:{}'.format(averNum))

2. 输入一个三位数,输出它的逆序数,例如:输入123,输出321。

a = int(input('请输入一个三位整数:'))

a1 = a % 10
a2 = a // 10 % 10
a3 = a // 100 % 10
outNum = str(a1) + str(a2) + str(a3)

print('该三位数的逆序数为:{}'.format(outNum))

面代码通过[]切片实现

a = input('请输入一个三位整数:')
print('该三位数的逆序数为:', a[::-1])

3. 输入一个摄氏温度,输出对应华氏温度。

c = eval(input("Enter a degree in Celsius:"))
f = (9 / 5) * c + 32
print( "%d Celsius is %.1f Fahrenheit" %(c, f))

4. 使用键盘输入一个 Unicode 字符,显示出这个字符对应的 Unicode 编码值。

getInput = input('请输入一个字符:')
outOrd = ord(getInput)
print('字符 {} 的 Unicode 编码值为:{}'.format(getInput, outOrd))

5. 在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。请使用键盘输入偏移量,并使用偏移量对键盘输入对单个大写英文字母进行加密。如偏移量为3,输入英文字母为Z,则输出为C。

a = int(input("输入的偏移量为:"))
b = input("输入单个大写英文字母为:")
c = (ord(b) - ord("A") + a) % 26
# 视A-Z为26个字母一个循环,取余数
d = chr(ord("A") + c)
print("经过凯撒加密之后,输出的字符为:" + d)

6. 使用 random.randint(a, b) 方法,随机生成三个100以内的自然数,求三个数的和。

# 注意的是randint是闭区间,random是前闭后开。
import random
num1 = random.randint(0, 100)
num2 = random.randint(0, 100)
num3 = random.randint(0, 100)
Num = num1 + num2 + num3
print('随机产生的三个数为 {}, {}, {}, 它们的和为{}'.format(num1, num2, num3, Num))

7.使用 round(x, y) 函数,可以将浮点数x保留y位小数。使用键盘,输入两个非零数,求这两个数的商,结果保留两位小数。输出的时候,请注意使用“➗”(十进制Unicode编码:10135)作为连接符表示除号。

num1 = eval(input("请输入被除数:"))
num2 = eval(input("请输入除数:"))
outNum = round(num1 / num2, 2)
# 第一次写的时候用\n一直转义不出来➗,后来才意识到用chr()函数。。。
print(str(num1) + chr(10135) + str(num2) + '=' + str(outNum))

8.使用 time.time() 方法能够得到目前的时间点,距离1970年1月1日0时0点0分0秒已经过去了多少秒。已知,1970年1月1日星期四,使用计算机计算得出:
(1)今天距离1970年1月1日,过了多少天
(2)今天是星期几。

# time.time函数:获取程序运行当时的时间值。这个时间值是一个浮点数,整数部分为秒数,这个秒数是从格林尼治时间1970年1月1日0点开始计算的。
import time

currTime = time.time()
dayPassed = int(currTime // (60 * 60 * 24))
weekPassed = int(dayPassed % 7)
# 1970年1月1日为周4,7-4=3
if weekPassed > 3:
    currWeek = weekPassed - 3
else:
    currWeek = weekPassed + 4

print('今天距离1970年1月1日,过了 {} 天,今天是星期{}'.format(dayPassed, currWeek))

9.解一元二次方程组,ax^2 + bx + c = 0,时,有三种可能情况,分别为:
1、 有两个不等实根
2、 有两个相等实根
3、 无实根。
请使用键盘输入a, b, c的值,并输出一元二次方程的解。

a, b, c = eval(input("输入一元二次方程的 a,b,c 的值以逗号隔开:"))
if a == 0:
    if b == 0:
        if c == 0:
            print("该方程有任意解")
        else:
            print("该方程无解")
    else:
        print("该方程有唯一解且解为x1={}".format(-c/b))
else:
    delta = b ** 2 - 4 * a * c
    if delta < 0:
        print("这个方程无实数解")
    elif delta == 0:
        root = (-b) / (2 * a)
        print("这个方程有两个相等的根,其值为x1=x2={:.2f}".format(root))
    else:
        root1 = ((-b) + delta ** 0.5) / (2 * a)
        root2 = ((-b) - delta ** 0.5) / (2 * a)
        print("这个方程有两个不同的根: x1 = {:.2f},其值为x2={:.2f}".format(root1, root2))

10.空气污染指数api的取值与对应的空气质量关系如下:0~50为优, 51~99为良,100~199为轻度污染,200~299为中度污染,300以上为重污染。请编写程序,从键盘输入api值,并输出api值所对应的空气质量。

getApiNum = int(input('请输入空气污染指数:'))

if getApiNum <= 50:
    outResult = '优'
elif 51 <= getApiNum <= 99:
    outResult = '良'
elif 100 <= getApiNum <= 199:
    outResult = '轻度污染'
elif 200 <= getApiNum <= 299:
    outResult = '中度污染'
elif 300 <= getApiNum:
    outResult = '重度污染'

print('空气质量为:{}'.format(outResult))

11.蔡勒(Zeller)公式,是一个计算星期的公式,随便给一个日期,就能用这个公式推算出是星期几。蔡勒(Zeller)公式为:

w = (y + [y / 4] + [c / 4] - 2c + [26(m + 1) / 10] + d - 1) % 7

其中:
w:代表星期几;w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六
c:世纪数(注:一般情况下,在公式中取值为已经过的世纪数,也就是年份除以一百的结果,c应该等于所在世纪的编号,如公元2021年,c就等于20)
y:世纪的年数(一般情况下是年份的后两位数,如公元2021年,y就等于21)
m:月份(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算)
d:日
[ ]代表取整,即只要整数部分。
请使用计算机编写程序,输入年、月、日,输出对应星期几。

year = int(input("输入年份:"))
month = int(input("输入月份:"))
day = int(input("输入日:"))
m = month

if month < 3:
    m = month + 12
    year = year - 1

c = year // 100
y = year % 100
d = day
w = (y + (y // 4) + (c // 4) - 2 * c + (26 * (m + 1) // 10) + d - 1) % 7

if(w == 1):
    message = "星期一"
elif (w == 2):
    message = "星期二"
elif (w == 3):
    message = "星期三"
elif (w == 4):
    message = "星期四"
elif (w == 5):
    message = "星期五"
elif (w == 6):
    message = "星期六"
else:
    message = "星期日"
print("当日为:{}".format(message))

或者通过列表实现。

year = int(input("输入年份:"))
month = int(input("输入月份:"))
day = int(input("输入日:"))
m = month

if month < 3:
    m = month + 12
    year = year - 1

c = year // 100
y = year % 100
d = day
w = (y + (y // 4) + (c // 4) - 2 * c + (26 * (m + 1) // 10) + d - 1) % 7
w = int(w)
list = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
print("当日为:", list[w])

12.输入两个圆的圆心坐标及这两个圆对应的半径,求这两个圆之间的关系,是内含、内切,相交、外切还是分离?

x1, y1 = eval(input("输入一个圆的圆心坐标:"))
r1 = eval(input("输入圆的半径:"))
x2, y2 = eval(input("输入另一个圆的圆心坐标:"))
r2 = eval(input("输入圆的半径:"))

distance = ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5

if distance < abs(r1 - r2):
    print("这两个圆的关系是:内含")
elif distance == abs(r1 - r2):
    print("这两个圆的关系是:内切")
elif distance < r1 + r2:
    print("这两个圆的关系是:相交")
elif distance == r1 + r2:
    print("这两个圆的关系是:外切")
else:
    print("这两个圆的关系是:分离")

13. 剪刀、石头布、是一种划拳游戏。剪刀赢布、布赢石头、石头赢剪刀。假设使用三个整数0、1、2来分别代表石头、剪刀、布,计算机随机生成三个整数(0、1、2)中的一个,用户使用键盘输入(0、1、2)中的一个整数,程序判断是计算机赢了,还是用户赢了,还是平局。

import random

list1 = ['剪刀。', '石头。', '布。']
a = eval(input('剪刀(0),石头(1),布(2):'))
b = random.randint(0, 2)
if a == b:
    print('计算机是', list1[b], '你是', list1[a], '平局。')
elif a - b == 1 or a - b == -2:
    print('计算机是', list1[b], '你是', list1[a], '你获胜了。')
else:
    print('计算机是', list1[b], '你是', list1[a], '你输了。')

14.某公司进行绩效分配的时候,需要编制一个计算机程序帮助计算奖金。假设一个部门经理的全部门拿到了500万元以上的订单,则部门经理获得总订单额度的1%作为个人绩效奖励,如果没有达到这个额度,则只能获得订单额度的0.5%作为个人绩效奖励;一个普通员工如果能够拿到50万元以上的订单,则该员工获得订单额度的2%作为个人绩效奖励,如果没有达到这个目标,则该员工仅获得订单额度的1%作为个人绩效奖励。编制一个程序,使用键盘输入必要参数,计算出某公司员工的绩效。

position = input("输入职位,经理或普通员工:")
order = eval(input("输入订单总额(单位:万元):"))

if position == "经理":
    if order > 500:
        bonus = order * 0.01
    else:
        bonus = order * 0.005
else:
    if order > 50:
        bonus = order * 0.02
    else:
        bonus = order * 0.01

print("该员工的职位为{},绩效奖金为{}万元".format(position, bonus))

15.随机生成一个取值范围介于[0, 51]的整数,用以模拟从52张扑克牌中随机抽取一张扑克牌的操作。在本程序中,需要在用牌花色(黑桃、红心、梅花、方片)和牌面(“A”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “10”, “J”, “Q”, “K”)在控制台显示出随机抽到的牌。

import random

card = random.randint(0, 51)
message = "你抽到的牌是:"

# suit 代表花色,黑桃(0)、红桃(1)、梅花(2)、方片(3),输出花色
suit = card % 4
if suit == 0:
    message = message + "黑桃"
elif suit == 1:
    message = message + "红桃"
elif suit == 2:
    message = message + "梅花"
else:
    message = message + "方片"

# 接下来输出牌面
cardnumber = (card % 13 + 1)
if cardnumber == 1:
    message = message + "A"
elif cardnumber == 11:
    message = message + "J"
elif cardnumber == 12:
    message = message + "Q"
elif cardnumber == 13:
    message = message + "K"
else:
    message = message + str(cardnumber)

print(message)

或者你可以这样写:

import random
getRandom = random.randint(0, 51)

pokerList = []
for suit in ['黑桃', '红桃', '梅花', '方片']:
    for num in ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']:
        pokerList.append(suit + num)

print('你抽到的牌是:{}'.format(pokerList[getRandom]))

16.我国使用的是阶梯电价制度。按照用电的电量情况可以分为三个档次:
第一档,电量每户每月210度及以下
第二档,电量每户每月210-400度之间
第三档,电量每户每月400度以上。
一档、二档、三档就是根据不同用电量规定的电价,用电量大,电价就高,比如第一档电量每户每月执行电价,每度0.5469元,第二档电量每户每月在第一档电价基础上,每度加价0.05元,即每度0.5969元,第三档电量每户每月在第一档电价基础上,每度加价0.3元,即每度0.8469元。
如:某用户一个月用电800度,则计算公式可以表达为:
电费 = 第一档用电量(210度) 第一档电价+第二档用电量(400 - 210度) 第二档电价+第三档用电量(800 - 400度)* 第三档电价
使用键盘输入某用户的一个月用电量,求该用户需要缴纳多少电费。

getInput = eval(input('请输入这个月所用电度数:'))

if getInput <= 210:
    outMoney = getInput * 0.5469
elif 210 < getInput <= 400:
    outMoney = 210 * 0.5469 + (getInput - 210) * 0.5969
elif 400 < getInput:
    outMoney = 210 * 0.5469 + (400 - 210) * 0.5969 + (getInput - 400) * 0.8469

print('这个月的电费为:{}'.format(outMoney))

补充:统计正数和负数个数然后计算这些数的平均数
编写一个程序来读入不指定个数的整数,然后决定已经读取的整数中有多少个正数和多少个负数并计算这些输入值的总和,最终获得他们的平均值。这个程序以0来结束,使用浮点数显示这个平均值。

# 逻辑关系不太会处理,while也不熟悉,总之我太菜了,将就着看吧
b = 0
c = 0
sum = 0
count = 0
a = eval(input('Enter an integer, the input ends if it is 0:'))
if a != 0 :
    sum = sum + a
    if a > 0:
        b += 1
    elif a < 0:
        c += 1
    while a != 0 :
        a = eval(input('Enter an integer, the input ends if it is 0:'))
        count += 1
        if a > 0:
           b += 1
        elif a < 0:
           c += 1
        sum = sum + a
        average = sum / count
    print('The number of positives is', b)
    print('The number of negatives is', c)
    print('The total is', sum)
    print('The average is', average)
else:
    print('You didn\'t enter anything')

17.输出100以内所有7的倍数。

outNum = 7
i = 1
while outNum < 100:
    print(outNum, end=' ')
    i = i + 1
    outNum = 7 * i

18.输出以下由“*”组成的图形:

*
**
***
****
*****

    *
   **
  ***
 ****
*****

    *
   ***
  *****
 *******
*********
print('(1)')
for i in range(1, 6):
    printLine = '*' * i
    print(printLine)

print('(2)')
for j in range(1, 6):
    printLine = ' ' * (5 - j) + '*' * j
    print(printLine)

print('(3)')
for k in range(1, 6):
    printLine = ' ' * (5 - k) + '*' * (2 * k - 1)
    print(printLine)

19.使用键盘输入10个数,求这10个数的平均数。

number = 10
count, sum = 0, 0
list1 = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
while count < number:
    num = eval(input("输入第" + list1[count] + "个数: "))
    sum += num
    count += 1

print("十个数的平均数是:" + str(sum / number))

20.(1)假设某门面出租,在租赁合同中规定的首年租金为100000块,租金每年涨5%。在控制台打印出10年时间,每一年租金会分别涨到多少钱?
(2) 如果某打工人想租下了该店面,花费了30万进行装修,开始通过销售服装获取收入。第一个月刨除房租、水电、人工开销,能有收入5000块。生意越来越好做,假设能够勉强维持每月收入7%递增,那需要多久的辛勤劳动,就能收回成本?
本题中,所有金额保留两位小数。


rental, year = 100000, 1
income, month, deposit = 10000, 1, 300000

while year <= 10:
    print("第{}年的租金为¥{:.2f}".format(year, rental))
    rental *= 1.05
    year += 1

while deposit > 0:
    deposit = deposit - income
    month += 1
    income *= 1.07

print("第{}月后能够收回投资".format(month))

或者可以这样实现:

# 计算门面租金
for i in range(0, 10):
    rent = 100000.00 * pow(1.05, i)
    print('第{}年的租金为:{:.2f}'.format(i + 1, rent))

# 计算劳动月数
getMonth = 0
addMoney = 0
while addMoney < 300000:
    addMoney = addMoney + 10000 * pow(1.07, getMonth)
    getMonth = getMonth + 1
print('第{}个月能够收回投资。'.format(getMonth + 1))

21.输出以下由数字组成的图形: 本题删除,请参考补充内容

补充:输出如图所示:

#个人觉得这样处理逻辑关系更加清晰
print('模式A')
for i in range(1, 7):
    for j in range(1, i + 1):
        if i >= j:
            print(j, end=' ')
    print()

print('模式B')
for i in range(6, 0, -1):
    for j in range(1, i + 1):
        if i >= j:
            print(j, end=' ')
    print()

print('模式C')
for i in range(1, 7):
    message = "  " * (6 - i)
    print(message, end='')
    for j in range(6, 0, -1):
        if i >= j:
            print(j, end=' ')
    print()

print('模式D')
for i in range(6, 0, -1):
    message = "  " * (6 - i)
    print(message, end='')
    for j in range(1, i + 1):
        if i >= j:
            print(j, end=' ')
    print()

补充:输出21世纪(从2001年到2100年)里所有的闰年,每行显示10个闰年,这些年份被一个空格隔开

count = 0
for year in range(2001, 2101):
    if year % 4 == 0:
        print(year, end=' ')
        count += 1
        # 执行换行操作
        if count % 10 == 0:
            print()

22.使用键盘输入一个年份,并在控制台输出这一年,每个月1日是星期几。

def zeller(year, month, date):
    if month <= 2:
        month = month + 12
        year = year - 1
    week = (date + 26 * (month + 1) // 10 + year % 100 + year % 100 // 4 \
            + year // 100 // 4 + year // 100 * 5 - 1) % 7
    list = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
    weekday = list[week]
    return weekday
getYear = int(input('请输入一个年份:'))
for i in range(1, 13):
    outWeek = zeller(getYear, i, 1)
    print('{} 年的 {} 月 1 日是{}'.format(getYear, i, outWeek))

23.写一个程序,键盘输入一个十进制数,将十进制数转换为二进制数,输出到控制台。

getInput = eval(input('请输入需要转换为二进制的整数:'))
outBinary = ''

if getInput == 0:
    outBinary = '0'
else:
    divResult = getInput
    while divResult != 1:
        if divResult % 2 == 0:
            outBinary = '0' + outBinary
            divResult = divResult / 2
            continue
        else:
            outBinary = '1' + outBinary
            divResult = divResult // 2
            continue
    outBinary = '1' + outBinary

print(outBinary)

24.如果一个正整数等于除了他本身之外的所有正因子的和,那么这个数被称为是完全数。如:6 = 3 2 1 = 3 + 2 + 1,因此6是一个完全数。求10000以内所有的完全数。

for i in range(1, 10000):
    sum = 0
    for j in range(1, i // 2 + 1):
        if i % j == 0:
            sum = sum + j
    if sum == i:
        print(i, end=" ")

或者你可以这样实现,考虑到运行效率,更建议用第一种逻辑关系。

perfectNum = []
getInput = 10000

for num in range(1, getInput + 1):
    divisor = []
    for i in range(1, num):
        if (num / i) % 1 == 0:
            divisor.append(i)
    addDivisor = 0
    for j in divisor:
        addDivisor = addDivisor + j
    if addDivisor == num:
        perfectNum.append(num)

for k in perfectNum:
    print(k, end=" ")

25.定义一个名为 isLeapYear(year) 的函数,参数为一个年份,如果该年份是闰年,则返回值为True,否则,返回值为False。在同一源文件中,使用键盘输入年份,验证该函数是否能够正确返回该年份是否为闰年。

def isLeapYear(year):
    if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
        return True
    else:
        return False
year = int(input("输入一个年份:"))
print(isLeapYear(year))

26.定义一个名为 zeller(year, month, date) 的函数,参数为年、月、日。通过这个函数计算并返回该日期是星期几。在同一源程序中,使用键盘输入年、月、日,验证该函数是否能正确计算出输入的日期为星期几。

def zeller(year, month, date):
    if month <= 2:
        month += 12
        year -= 1
    weekDay = (date + 26 * (month + 1) // 10 + year % 100 \
               + year % 100 // 4 + year // 100 // 4 + year // 100 * 5 - 1) % 7
    return weekDay

year, month, date = eval(input("请输入年,月,日:"))
weekDay = zeller(year, month, date)
print(weekDay)

27.定义一个名为 isPrime(number) 的函数,参数为一个正整数。通过使用这个函数,能够判断一个正整数,是否为素数,是素数则返回True,不是素数则返回False。在同一源程序中,使用键盘输入一个正整数,验证该函数是否能够正确判断输入数为素数。

def isPrime(n):

    if a <= 0:
        return '请输入一个正整数'
    else:
        for i in range(2, a // 2 + 1):
            if a % i == 0:
                result = False
                break
            elif a % i != 0:
                result = True
    return result


a = int(input('请输入一个正整数:'))
print(isPrime(a))
def isPrime(number):
    result = True
    for factor in range(2, number // 2 + 1):
        if number % factor == 0:
            result = False
            return result


getInput = int(input('请输入一个正整数:'))
print(isPrime(getInput))

28.定义一个名为 primeNumbers(number) 的函数,参数为一个正整数。通过使用这个函数,能够输出小于number的所有素数,输出的时候,每行10个素数。在同一源文件中,使用键盘输入一个正整数,验证该函数的输出结果。

def primeNumbers(a):
    count = 0
    #  设置从2到输入数字的循环
    for num in range(2, a):
        #  先默认判断其为素数
        b = True
        #  开始验证是否为素数
        for i in range(2, num // 2 + 1):
            #  经历循环,若能被其他数整除,则判断为False赋值给b
            if num % i == 0:
                b = False
        #  当num为素数时候:
        if b:
            count += 1
            print(num, end='\t')
            #  执行换行
            if count % 10 == 0:
                print()


a = int(input('请输入一个正整数:'))
primeNumbers(a)

写死我了aaaaa....

还有一些练习题没有记录,原因很简单,太多了。。。

✇Windsky博客 | 晔's blog

【月记】这是希望之春

作者 Windsky

三月的时光悄然溜走,天气确乎奇奇怪怪,时而艳阳高照,接连又下了差不多两周的雨。

1
1

厦门的花一直绽放,叫的上名字的,叫不上名字的,开了一季又一季。见了楼下刺桐花开,不知名的黄花,学生服务中心前紫红色的市花三角梅,湖边的小黄花开的热烈。徜徉在花海之中,春也就悄悄的来临又离开。我不知道如何定义这南方的春天,一切都是绿色的,一切都是鲜妍。热的时候和夏日差不多了,在这阴雨连绵的时候,伴着丝丝冷意,嗯,还有点春日的气息。

印象最深的是,疫情好转的时候,请假同舍友出去打第三针新冠疫苗,三个小时的假长,时间很紧,之前同朋友许下了一个诺言,拍海。于是,匆忙打完疫苗,赶紧奔赴海边,虽然政府将它定义为湖(本质是一个海湾),但毕竟连着大海,我就自信的称它为海,拍下了照片,完成了承诺,在炎热的海边公园与水上栈道转了一圈,时间已经不够,匆匆赶到西北门,饭已经顾不上吃,但Luckin Coffe不能少,拿完快递,返校。路上同学说,嗯,桂花的香味,我吃惊,现在才三月怎么会有桂花,却真真切切的在学校湖边的园圃里瞧见了桂花,虽然有些枯萎,但还是轻盈的绽放着,虽是我最爱的香味,就不忍心摘下了。

疫情反反复复,动不动的核酸检测,真的很令人心烦,封校,宿舍上网课。真的无趣,线上的课给了自己太多放松的机会,加之本来自己也不是很自律的人,就有点摆烂,学习上更也是松松垮垮的,学一会儿就觉得很累,不想听课,却安慰自己:没事,有时间再看书。其实心中已经有了目标,我要超越她,我要比她更加优秀,才有资格去找回她。也算是对自己的一种鞭策,倒也是好事。对于爱情上的问题,顺其自然吧,受不了她那样子针对我,还是难受,看来还是放不下。但跟那段日子已经好多了,顺其自然有时候也是一件好事。课程说难也不难,讲的快是共同的特点,不能接受也得接受,有时候全英的课件会有不适,听完也一头雾水,只能课后找网课。想到物理实验选课,真的是很无语了,选课系统这东西真的什么东西,最后只能选择别人选过的残羹,挑挑拣拣选了几个,只能祈祷第二次开放选课系统了。

朋友对我说,他有点搞不懂我。嗯,不止一个人给我这样说,我是什么样的人?我也很难定义,Boldstroom中歌词这样写:“I am so complicated, but I really fucking meant it."挺合适的吧。很多时候,你觉得我并不是你觉得。就像你肯定不知道我在奔溃的时候的泪水。理性的时候极端理性,感性的时候极端感性。我自己也很难给自己下定义。这就是闫立晔,一个?的人。

嗯,看了一些书《鸟人计划》《情人》《嫌疑人X的现身》《他的国》这可读性确实比《遇见百分百的女孩》高的多得多了,重拾阅读的习惯确实挺好的。舍友开始健身,我就跟着一起练了,也不错,腹肌更明显了hhhh。然后小有成就的就是一次连续跑了10km,无休息,用时47min多一点,真正跑的时候真的会忘记一切,真的很累,但也很爽。

值得记录的真的也没什么,有趣的无趣的都在发生着,日子还是在一天天的过着,有时忙忙碌碌有时闲的无聊,这就是生活吧。

时二〇二二年三月,小雨淅沥

(有一些琐碎的图片慢慢补上(或许也懒得不会补了))

✇Windsky博客 | 晔's blog

思考 · 独立博客应该是什么样子?

作者 Windsky

逛大佬博客,总会有新的发现,看到Void作者,三无计划的创始人Panda的问题:

其实基本的思考是:独立博客到底应该是什么样的。

这个问题我无法准确回答,恐怕叱咤独立博客界17 年之久的 Daring Fireball 作者 John Gru­ber 也给不出让所有人信服的回答。这个问题大概本来就没有答案。

互联网发展到现在,带宽、内容丰富程度都与 20 年前不可同日而语。独立博客这样需要坐下来花上个把小时写文章的介质实在很难与 GIF、视频、emoji ,短视频抗衡。

相比于通过文字获取新知识,我觉得很多人选择抖音或者快手等视频平台。

Panda大佬的回答:

作为一个写主题的人,能做的只有为博主带来无障碍的写作环境、为读者带来无障碍的阅读环境。不要去打击博主可能的创作欲,也不要给想获取信息的读者平添难度。

你觉得这简单吗?这一点也不简单。

(其实我觉得这是对Void主题的一种解释,无所谓了)

我的理解呢,从17年接触博客来说,一直都是采用大众化博客程序,Emlog,Wordpress,typecho……都体验过了,现在的typecho虽然用的人不多,但简单的风格,我觉得还会坚持下去。

开始做博客,定义为自己的心得体会抒发,可惜并没有人看,pv少的可怜.
后来为了更多的pv,我选择分享一下资源,把博客打造成了资源分享站,正当博客逐步扩大之时,服务器出故障,功亏一篑……
后来看到一位大佬在博客写周记,我萌生了从新开始的想法,从新定义我的博客.就是今天这个样子.

其实这个博客建立于2019年一月,但文章了了无几,想必大家都知道,没错服务器又一次故障,数据没来得及备份,更新的数十篇文章消逝......其中大部分为我写的周记.我很是伤心.但我又开始了一次新的挣扎,期间有许多朋友给我提供过帮助。

我对独立博客的定义,在一次次更新迭代中形成,我现在对这个博客,主要是写自己的内心深处的感情和分享一些有趣的内容(分享我的拍摄的照片,一些美妙的音乐)虽然前路迷茫,但晨光熹微.

识迷途其未远,觉今日而昨非

我曾见过无数的个人博客,其中内容良莠不齐,我最讨厌的是无趣,希望我的定义赋予博客新的内涵,给你带来有趣.

相比那些一味偷文章不加版权,广告横生的博客,我觉得我的还不错,之前做网站,希望的是别人的:“哇,好厉害!”(无非是装B)但我现在更喜欢“嗯,文章写得很棒!”,“博客很漂亮,体验很好。”

可是当有人问我写博客为了什么,我支支吾吾却回答不上来.

有时我也会想,现在这个样子真的是我想要的吗?入不敷出,一堆费用需要自己承担,还要花费时间来更新,甚至没有访客。

我想用一句话来诠释:爱我所爱,从未离开.

东偶已逝,桑榆非晚,共同期待更好的明天,相信未来可期.

至于那个问题,由你来解释......

我一直在坚持着...

✇Windsky博客 | 晔's blog

Never Let Me Go

作者 Windsky

哎,又到了此时此刻。
断更了这么久,是时候再写点什么了,我想。

游戏

  • 王者荣耀
  • Minecraft
  • It takes two friends's pass

我是不喜欢玩游戏的,我认为游戏的社交属性是大于其实际作用的,所以我大部分时间都是在陪玩。其中令人深刻的是 双人成行 ,在游戏中朋友对我说这是steam年度最佳,确实如此,剧情与画面都是值得这个称号的。

音乐

最近零零散散也听了许多许多,但网易云的黑胶VIP过期了,因为Apple music还一直在订阅中,觉得没有必要续费了,所以我不知道听了多少,只是觉得不少而已。
如果推荐一首的话,我会选择 GEM邓紫棋在9.17日发布的 唯一
https://music.163.com/song?id=2083785152&userid=364790668

电影&书

影视作品看了一些,但是觉得没什么想写的欲望,都是普普通通,没有眼前一亮的感觉。
能写下的就是看了人生中的第一部IMAX电影,献给了《封神:朝歌风云》

  • 石黑一雄《莫失莫忘》
  • 余华《在细雨中呐喊》

这是两本近期读过认为还是不错的。在可读性与故事性上来说应该还是会被大多数人喜欢的那种。
石黑一雄是懂回忆的,是把美好的东西打碎给人看,让回忆里的东西面目全非。

片段

第一次乘坐飞机是,上海航空的从新郑国际机场——上海浦东国际机场,我跟父母讲自己这么大没有坐过飞机,想试试,但想到最后发现我的家人甚至连高铁都没有坐过,其实也满可悲的。对于我们这种小城市,飞机,高铁都是一种虚伪的便捷。从市中心到高铁站,乘坐公交车,花费了4个小时,然后才能搭乘高铁去机场。
好在旅途还算愉快,上海确确实实是一座美好的城市。

第一次开车竟是在厦门,暑假把驾照考下来已经是临近开学,心想:终于结束了,再也不用跟驾校打交道了。回到厦门,舍友就拉着去试一下,于是第一次开车上路。中间发生了一段有趣的故事:由于高架桥的辅道导航没有及时提醒,导致我们一直在绕圈圈,最终走了5次海沧隧道,1次海沧大桥,终于从海沧区出来,最后算下来那天下午和晚上我们竟然开了有300km。

心血来潮,决定去爬山,喊上舍友,在晚上开车前往170km外的戴云山,一路上山路曲折,山上的星星是那么多。在伸手不见五指的山林里,只有手电筒的光亮,靠着GPS微弱的信号艰难攀登,从1点钟到早上5点钟,途中还碰上了下雨,最后终于登上了山上的高山草甸,那是最绝望的时刻,周围都是草丝毫没有路的迹象,四周用手电筒照过去都是一个样子,山上雾气弥漫,狂风把雾气吹动,就变成了雨,砸在脸上与衣服上,衣服已经全湿透,最后找了一个石头旁边坐下,嚼着面包果腹。还在犹豫要不要先下去躲避一下风,天竟然有了一丝微微的亮光,清晨来了。那是第一次这么期盼阳光。此时海拔1400距离山顶还有400m,在休息等待天亮的时候,偶遇两位爬山的路人,然后跟随着爬了200m,终于意识到我们实在爬不下去了,于是只好原路返回。也算是一种遗憾吧,但世界上确实不能做到事情都是完美的。

没想到自己学IC design竟然会用到这么多软件,Modelsim,Quartus,Mulitism,matlab,Ltspice...
实验室的破旧设备与低版本软件,实验时间又很短,只好课后回去自己在自己的电脑操作,于是练就了一手安装这些软件的本领,如果碰巧你也需要这些软件来进行仿真实验,我很乐意帮助。

台风来临之际厦门傍晚天空
台风来临之际厦门傍晚天空

✇Windsky博客 | 晔's blog

I Complete Myself.

作者 Windsky

很久没有更新日常了,也并不是发表的阈值增加了,只是每次想写下什么文字,我都会因为其他事情分心而无法继续写下去。而在离开的日子里,我一直在努力的将生活变成我想要的样子,相信未来我并不会感到遗憾.等未来兵荒马乱沧海桑田,这些经过大脑滤镜美化后的回忆,还能无限向往。

大学一定要多进行新的尝试,要全方面的锻炼自己,开阔自己的眼界,不要像高中那样呆板的读书了。

跟随时间来到这里,可以肯定的是这几天,这个月发生了很多事情。

感谢那些短期或长期给我带来一些帮助的事情:
Movies 🎬 Study 📕 Music 🎵 Books 📚 Porn 🔞

2月,3月,4月,5月依然孜孜不倦的看着电影,看完依据自己的感觉打上评分,写下一句短评记录在豆瓣,同时也了解到了一些很厉害的导演。近期的计划就是将老苏联艺术家安德烈·塔可夫斯基的电影看完。至于书籍,在二手市场购入了一些书,但奈何根本没有来得及去阅读,在家乡书店与图书馆借的书,庆幸在刚开学学习压力不是很大的时候读完了一些,也得到了一些共鸣。过完的这两年大学生活,孜孜不倦的投入去读村上春树,和其他日本作家,渡边淳一,岩井俊二,石黑一雄,太宰治等的作品,国内的却读的很少,但坦言,我是认为日本文学有着更细腻的笔触,至少我是这样认为。疯狂的沉溺于我自己的音乐世界,一个劲的听着那些听不懂的音乐,陪伴过了许许多多日夜,我试着将自己喜欢的一些风格去分享给一些亲近的朋友,但毕竟人与人之间是相异的,于是我还是老老实实去听自己的歌。

某个周一的下午,自己突然感觉身体不适,浑身上下好冷,摸了摸额头,额头也烫的厉害,艰难挺过两节课,回到宿舍躺下。躺在床上翻来覆去睡不着,身体发烫,心脏也跳的很快。加上近期甲流多发,我很害怕,去校医院做了核酸检测,并无大碍,开了点药回来,依然没有什么效果,烧的仍然难受,舍友也在发烧,我更担心起来,去了医院,抽血,肠胃炎,于是就漫长的打点滴.折腾完回到宿舍已经凌晨3点多,还在低烧,但状态好了一些.于是见到了凌晨的急诊室,2点的厦门,3点校园,这也是从未有过的经历.这是关于一场热病,一段神奇的经历.

从小到大,有过几次发烧,但都没有这次来得这么凶猛猛烈。
这期间做过最勇敢的事情,是与朋友一起去了东山岛,从想法到落地仅仅花费了一节课的时间,晚上漆黑的海堤,孤寂的渔船灯光照亮一片漆黑的海,远处胡明忽灭的灯光,晚上嘈杂的网吧,难闻的香烟味道,凌晨4点的街道,渐渐明亮的天空...这一切都是很美好的感受.

今年的五一,没有离开厦门,原因是并不富裕,我渴望去旅游,而这需要经济基础.但也是值得铭记的一次,与舍友沿着山海步道,用脚步丈量了山海线的长度,从2点一直走到6点,近4w的步数,翻山越岭,应了那句话From the mountain to the sea.假期和舍友一起去酒吧喝酒,玩骰子,每个人都醉乎乎的走出酒吧,然后又去唱歌,一直到2点才缓缓返回学校.不出意外的被辅导员问话,好在语重心长,并无大碍.

5.21日在陪舍友去医院的车厢后座,下雨的间歇,闷热的空气,手伸出了窗外,路灯的昏黄的光洒在手上,感受着风.

曾经我以为我将厦门游遍了,后来才发现,无名的街道,角落的海洋,才是这个城市的灵魂,于是我应该再去寻觅一些那些被忽视的,被省略的.

断更的时间线太长,零碎的记忆片段,数不清的照片,而这就是我的青春.而遗憾的是,100%女孩依然还没出现.

现在耳机里播放的是"迷失幻境(Acoustic)",香水味道弥漫,忙碌完了一天的任务,写下这些文字,以便未来怀念,期末又来临了,那么周末愉快,我们暑假再见.
如我的朋友圈(or QQzone)那里是一片偏僻寂寞的角落,也记录了更多的足迹.如果你想到访,那么下面是密钥:
微信ID:yanliye666 & QQ:1275069349

✇Windsky博客 | 晔's blog

Lyricease是最好用的第三方网易云播放器

作者 Windsky

平常算得上是重度音乐用户,日常中经常使用的软件包括网易云音乐,Apple Music,Spotify。在这其中,网易云充值了黑胶会员,Apple Music使用学生认证,每月也在订阅中。当然,受到平台的各种原因,其他的主流音乐App也偶尔使用一下。

一直在找一个纯净的,单纯听音乐的App,类似Apple Music for iOS,Android那样的,现在的音乐软件真是太臃肿,乱七八糟,杂乱无章,华而不实。

在这方面Spotify无疑是做的最好的,全平台的软件适配,超级纯粹的听音乐体验,庞大的曲库(国语歌词还是比较少)是心目中的白月光,无奈中国大陆地区无法使用,借助魔法也会被查出来,通过香港朋友注册的账户在后续的IP验证中被迫抛弃使用了,

Apple music在今年上新了独立的application,脱离了iTunes,有了自己的UI设计,在3月份,我并无期待的在PC端安装尝试了一下,只能说是效果一般。用也勉强能用,但最大的缺点是,无法看歌词。

于是,就找到了Lyricease,我愿称其为最好用,最好看的第三方网易云UMP

什么是UMP?

Universal Windows Platform(UWP)直译过来就是通用Windows平台,它是微软基于Win10开发的一个通用平台,微软希望自己所有的设备(包括Surface,Xbox,HoloLens等)都运行于同样的系统,然后让用户像使用苹果设备一样从自己官方的商城来下载安装应用,这样可以让应用市场中心化的同时保证系统的安全,稳定,高效。

几年前,微软宣布UWP的时候,可谓是信心满满,但由于某一些微软的神奇操作和UWP平台的局限性,UWP始终处于被抛弃的边缘。

UWP刚发布的时候,国内各互联网公司为了满足多平台用户需求,都推出了UWP平台。网易云音乐也不例外,也推出了干净无广告的UWP版本。但后来的版本与桌面版别无差异,同时也被网友所抛弃。

今天的主角是Lyricease

LyricEase是一个漂亮好用的第三方网易云音乐播放器,开源,并且UI很好的适配了Windows 11的UI。我觉得甚至直接可以平替掉官方的版本。直接登录自己的网易云账号,自动同步自己的网易云歌单。


UI界面干净清爽至极。


展开的播放界面跟Apple Music极其相似。


开启播放器均衡模式,内存占用在200MB左右。

需要桌面歌词,只需要再安装拓展软件。真正的小而美的第三方网易云播放器。

可惜现在无法在Microsoft store下载安装
其他下载地址:https://install.appcenter.ms/users/brandonw3612/apps/lyricease/distribution_groups/public
开源地址:https://github.com/brandonw3612/LyricEase

请详细阅读安装说明

不同于商店分发方式,安装第三方应用时需要开启开发人员模式, 请在设备上自行开启. 安装前确保 LyricEase 已关闭. 下载并解压
.zip 文件, 打开文件夹后右击 "Install.ps1" , 选择使用Powershell执行, 程序会自动安装证书,
依赖和软件本体. 安装过程中对于系统发出的许可提示, 请选择 "同意" 以确保正常安装. 从 v0.12.x 开始, 为缩减应用包体积,
我们支持按处理器架构下载安装包并在应用内检查更新时默认提供, 若下载安装包后升级失败, 请尝试卸载已安装的版本并重新安装.

✇Windsky博客 | 晔's blog

倒带贰零贰贰

作者 Windsky

贰零贰贰是历史性的,虽然大半年的时间还是在疫情中度过,但疫情终于画上了句号。

将这一年逐帧拆开来看,琐碎的平常,但也是弥足珍贵的记忆。获得也好,失去也好,对现在的我而言仅仅是没有实感的一个个词汇。在我身上刻下印记的不是这些节点,而是过程。我现在所信奉的,是要体验生活的本质,至于什么是“本质”,其实每个人心里都有一个答案。今年着实体验了不少,该有的挣扎、愤怒、怅然、愉悦、欣喜,一个都不少。

大一结束,退出了所加的所有部门,以及担任的所有职务,我想是时候变成一个“纯粹”的人了。关于自己的最大变化,谈不上成熟,只能说是More Clam。冷静的对待事物,冷静的对待人际关系,冷静的对待生活,这带来的好处是可以思考更多,可以去深入的去想这样做的后果,以至不会再犯一些很笨的错误。但带来的结果是没有了曾经那份无限的憧憬。如此这样,我这一年只能是平平淡淡,并没有什么大起大落可讲。

学业来讲,我只能说是没有摆烂,所学的东西都是仅仅停留在课本(课本也根本没有完全读懂),根本没有什么学术而言。其实不止一次下定决心好好学习,但最终还是没有毅力去坚持下去。我觉得我能从Environmental到Integrated Circuits就是一个不小的成就。虽然内卷严重,但至少还有些兴趣而言。我知道自己的能力,保研固然不会轮到我,其实也很纠结未来要不要读Master's degree,尤其是看到一篇博文“I quit my Ph.D" 更加迷茫。这个问题也许在新的一年会有答案,对这一切我还是无知。

与人的联系来说,我好像又回到了高中时代的样子,对于我而言,认识那么多的人也不见得是好事,真正玩的好的还是那么几个。也正是因为认识了那群人,或者说「重新认识了」一些人,使得我越来越珍惜身边人,越来越容易与人共情,越来越想做一个有温度的人。这一年的许多快乐都是一起才创造的。课后与朋友们一起吃饭,喝酒,海上栈道漫步,夕阳下的杏林湾,操场上的照明灯,在宿舍一起喝酒畅谈,喝的不省人事......都是太有趣的回忆。拖更博客多少也与我逐渐现充有关。当现实生活令我满足时,我并不太想活在线上。

我努力的将自己活成想要的样子,将人生变成一张打满对勾的表格。我相信大部分的焦虑都来自期望与现实的不匹配,所以治本的方法是要搞明白「自己」的位置,并且在认识本质后坦然接受。这确实是一个很有难度的课题。

大学?
大学?

好在有书籍与电影,音乐的陪伴,精神世界勉强不至于匮乏,还算不上文盲。

其实,还有诸多令我印象深刻事情,五一假期去鼓浪屿游玩,和好朋友们一起登上仙灵祺山,尧山的日出,第一次拿到奖学金,洛阳之旅...其中最让我印象深刻的是 暑日傍晚回家路旁的面馆里的饸饹面,一个加了卤蛋的烙馍,以及波蕊口乐。也就是这样的普通的不能再普通的日常组成了我这独一无二的二零二二年。

从2020年第一次读到《南方周末》的新年贺词,便成了习惯,每到新年,最期待的文字即为此。每每如此,从无例外。今年的题目是《总有奋不顾身的相信,总要坚韧恒久的勇气》。下面引用片段,愿共勉。

未来终将到来,相信让未来与我们有关。从现代化的百年追寻,到大疫后的秩序重建,我们相信,他们相信,不是因为未来值得相信,而是因为未来必须相信;不是美好已在前方等待,而是相信撬动了向往。春天终将回馈每一个在冬天里的抱薪者、坚守者、发光者,在现在与未来间,是跳动、更新、寓瞬息于无穷的光焰。

多年之后,在未来的某个黎明或午后,想起贰零贰贰年应该还能说句:那也不坏嘛。我也相信我们的相信从未改变,一如从大地遥望的那些光年之外的繁星,光芒温暖,坚韧永恒。所以就让我们继续往前走,不要在此处停留。在这个特别的岁末年初,让我们告别昨天,以今天和明天之名,祝你新年快乐!

平顶山夕阳阳光最为温柔
平顶山夕阳阳光最为温柔

✇Windsky博客 | 晔's blog

使用Matlab解决线性代数中常见问题

作者 Windsky

关于linear algebra不再赘述,下面通过matlab代码解决一些常见的线性代数问题。

线性代数是信息科学与工程学院大一上的课,而化工学院选择开在了大二上,转专业的缘故,就需要补修线性代数。
线性代数老师在结课后布置了课程大作业,其中有一项为将课后题的实验部分用Matlab做出来,由于信号与系统的实验就已经接触到了Matlab于是就选择这个作为自己的课程大作业,大二下也将修Matlab高级程序语言设计,也算做了铺垫。

1

用初等行变换法求解线性方程组:

$$ \left \{ \begin{array}{c} x_1+x_2-3x_3-x_4=1 \\ 3x_1-x_2-3x_3+4x_4=4 \\ x_1+5x_2-9x_3-8x_4=0 \end{array} \right . $$

matlab代码

b = [1, 4 ,0]';
B = [A, b];
c = rref(B)

运行结果:

c =

    1.0000         0         0   -0.3333   -0.3333
         0    1.0000         0    1.0000    4.0000
         0         0    1.0000    0.6667   -3.3333

2

用Cramer法则求解线性方程组

$$ \left \{ \begin{array}{c} 3x_1-2x_2+2x_3=10 \\ x_1+2x_2-3x_3=-1 \\ 3x_1-2x_2+2x_3=0 \end{array} \right . $$

matlab代码:

clear
n = input('方程个数n=');
A = input('系数矩阵A=');
b = input('常数列向量b=');
if (size(A) ~= [n, n]) | size(B) ~=[n, 1]
    disp('输入不正确,要求A是n阶方阵,b是n维列向量')
else if det(A) == 0
        disp('系数行列式为0,不能用克拉默法则解此方程组')
else 
     for i = 1:n
         B = A;
         B(:,i) = b;
         x(i) = det(B)/det(A);
     end
    end
end

运行结果:

Emmm 不会输入矩阵

3

向量组的线性相关性。给定一个n维向量组a1,a2,…,am,判断其线性相关性,并确定一个最大无关组。由于对矩阵A实施初等变换不改变其列向量之间的线性关系,因此可以利用Matlab的库函数rref实现。

matlab代码:

clear
x1 = [1, 0, 2]';x2 = [2, 1, 1]';x3 = [2, 0,1]';x4 = [3, 1, 1]';
x5= [1, 1, 1]';
A = [x1, x2, x3, x4];
[R, jb] = rref(A); len = length(jb);
if len < 5
    'The vector group is linearly dependent and serial numbers are'
    jb
else
    'The vector group is linearly independent'
end

运行结果;

ans =
The vector group is linearly dependent and serial numbers are

jb =
     1     2     3

4

化二次型为标准型。在Matlab中将二次型
$f = x_1^2+x_2^2+x_3^2+4x_1x_2+4x_1x_3+4x_2x_3$ 化为标准型.

matlab代码:

clear
A = [1, 2, 2;2, 1, 2;2, 2, 1]
[q, d] = eig(A)
C =q' * A * q

运行结果:

A =
     1     2     2
     2     1     2
     2     2     1


q =
    0.6015    0.5522    0.5774
    0.1775   -0.7970    0.5774
   -0.7789    0.2448    0.5774

d =
   -1.0000         0         0
         0   -1.0000         0
         0         0    5.0000

C =
   -1.0000   -0.0000   -0.0000
   -0.0000   -1.0000    0.0000
   -0.0000    0.0000    5.0000

5

判定二次型的正定值。在Matlab中判定
$ f = 3x_1^2+2x_2^2+7x_3^2-4x_1x_2-4x_2x_3 $是否为正定二次型?

matlab代码:

clear; 
A = [3, -2, 0;-2, 2, -2;0, -2, 7];   %输入二次型对应的对称阵
[q, d] = eig(A);                     %求矩阵A的特征值与特征向量
v = diag(d);                         %提取A的所有特征值
if all( v > 0)                       %判断矩阵A的特征值是否为正
    disp('二次型为正定')     
elseif all(v >= 0)  
    disp('二次型为半正定')             %判断矩阵A的特征值是否均为非负
elseif all(v < 0)
    disp('二次型为负定')               %判断矩阵A的特征值是否均为负   
elseif all(v <= 0)
    disp('二次型为半负定')             %判断矩阵A的特征值是否均为非正
else
    disp('二次型为不定')
end

运行结果:

二次型为正定

6

计算二次型的正(负)惯性指数。在Matlab中计算二次型
$ f = x_1x_2+x_1x_3-3x_2x_3 $的正(负)惯性指数。

Matlab代码:

clear;
A = [0, 0.5, 0.5;0.5, 0, -1.5,;0.5, -1.5, 0];
%输入二次型对应的对称阵
[q, d] = eig(A);    %计算矩阵A的特征值与特征向量
n = length(d);      %计算矩阵A的阶数
zheng = 0; fu = 0;  %将正负惯性指数初始值置为0
for i = 1:n
    if d(i) > 0
        zheng = zheng + 1;
    elseif d(i) < 0
        fu = fu + 1;
    end
end
zheng, fu

运行结果:

zheng =   0


fu =    1

所有代码均通过Matlab 2016a运行检测通过,运行情况会因matlab版本不同而异。

✇Windsky博客 | 晔's blog

Studynote About PCB Rules & EDA

作者 Windsky

"Integrated Circuit" is an Art

PCB布局规范:

第一部分:热处理设计
1.PCB 在布局中考虑将高热器件放于出风口或利于对流的位置。

2.较高的元件应考虑放于出风口,且不阻挡风路

3.散热器的放置应考虑利于对流

4.温度敏感器械件应考虑远离热源

5.对于自身温升高于 30℃的热源,一般要求:
在风冷条件下,电解电容等温度敏感器件离热源距离要求大于或等于2.5mm;
自然冷条件下,电解电容等温度敏感器件离热源距离要求大于或等于4.0mm。
6.电解电容不可触及发热元件,如大功率电阻,热敏电阻,变压器,散热器等。

7.电解电容与散热器的最小间隔为 10.0MM,其它元件到散热器的最小间隔为 2.0MM。

8.大面积铜箔要求用隔热带与焊盘相连
为了保证透锡良好,在大面积铜箔上的元件的焊盘要求用隔热带与焊盘相连,并且焊盘与印制导线的连接部宽度不应大于 0.3mm (对于不对称焊盘),对于需过 5A以上大电流的焊盘 则不能采用隔热焊盘。
焊盘两端导线走线均匀或热容量相等,焊盘与铜箔层相连采用“十”字形或“米”字形状。

第二部分:导线
1.导线最小线宽:单面板 0.3MM,双面板 0.2MM,边缘铜箔最小要 1.0MM

2.导线与导线之间最小间隙:单面板:0.3MM,双面板:0.2MM

3.导线与板边之间最小距离:0.5MM

4.AC电源的距离:AC 50V ~ AC 150V,4.0mm(3.0mm)以上

5.导线的宽度:细线建议0.4mm以上, AC到TRIAC的粗线,建议2.0mm以上或1.5mm以上。如果是大电流时,尽量愈粗愈好或在线上镀锡。

6.铜箔和板边距离须 0.5mm 以上。

7.DC 直流电压未满45V、AC交流未满30V,且在15VA以下的地方,铜箔线和线的电压差,其距离如下:

1mm ≈ 39mil
1mm ≈ 39mil

8.若导线入圆焊盘的宽度较圆焊盘的直径小时,则需加泪滴。

9.布线方向为水平或垂直,由垂直转入水平要走 45 度进入。

10.跳线不要放在 IC 下面或马达、电位器以及其它大体积金属外壳的元件下。

11.把没有接线的地方合理地作接地或电源用。

12.布线尽可能短,特别注意时钟线、低电平信号线及所有高频回路布线要更短。

13.模拟电路及数字电路的地线及供电系统要完全分开。

14.如果印制板上有大面积地线和电源线区(面积超过 500 平方毫米),应局部开窗口。如图:


15.电源的DC+,-电压尽量越粗越好,当需要跳线时,+,-电压尽量不要跳线,不用的 PCB Layout 空间,尽量布满+,-电压,GND的布线越粗越好。

16.负载电流超过2A时,其导线越粗越好,导线需做不防焊处理,让加工时导线可以吃锡,加大电流流通量。

17。尽量加粗接地线,若接地线很细,接地电位则随电流的变化而变化,致使电子设备的定时信号电平不稳,抗噪声性能变坏,因此要确保每一个大电流的接地端采用尽量短而宽的印制线,尽量加宽电源、地线宽度,最好是地线比电源线宽,它们的关系是:地线>电源线>信号线,如有可能,接地线的宽度应大于3mm,也可用大面积铜层作地线用,在印制板上把没被用上的地方都与地相连接作为地线用。

18.为了保证电气绝缘性,散热器下方周围应无走线(考虑到散热器安装的偏位及安规距离),若需要在散热器下布线,则应采取绝缘措施使散热器与走线绝缘,或确认走线与散热器是同等电位。

19.为了保证电气绝缘性,金属拉手条底下应无走线。

第三部分:元件
1.元件与板边最小距离:5.0MM

2.大型元器件(如:变压器、直径 15.0MM 以上的电解电容、大电流的插座等)加大铜箔及上锡面积如下图;阴影部分面积肥最小要与焊盘面积相等。

3.横插元件(电阻、二极管等)脚间中心,相距必须是 7.5mm,10.0mm 及 12.5mm。(如非必要,6.0mm 亦可利用,但适用于 IN4148 型之二极管或 1/16W 电阻上。1/4W 电阻由 10.0mm 开始)铁线脚间中心相距必须是 5.0mm,7.5mm,12.5mm,15mm,17.5mm,20mm,22.5mm,25mm。

4.电插印制板横插元件(电阻、二极管)间之最小距离 X 如下表:

5.直插元件只适用于外围尺寸或直径不大于10.5MM之元件。

6.直插元件孔之中心相距为2.5MM或5.0MM。

7.贴片元件的间距:


8.贴片元件与电插元件脚之间的距离,如图:

9.相同类型的SMT器件距离:


10.不同类型SMT器件距离:


11.经常插拔器件或板边连接器周围 3mm 范围内尽量不布置 SMD,以防止连接器插拔时产生的应力损坏器件。

12.BGA 周围 3mm 内无器件
为了保证可维修性,BGA 器件周围需留有 3mm 禁布区,最佳为 5mm 禁布区。一般情况下 BGA 不允许放置背面;当背面有BGA 器件时,不能在正面 BGA5mm 禁布区的投影范围内布器件。

13.电气间隙(两相邻导体或一个导体与相邻电机壳表面的沿空气测量的最短距离)
一次侧交流部分:保险丝前 L—N≥2.5mm,L.N <--> PE(大地)≥2.5mm,保险丝装置之后可不做要求,但尽可能保持一定距离以避免发生短路损坏电源。
一次侧交流对直流部分≥2.0mm
一次侧直流地对地≥4.0mm 如一次侧地对大地
一次侧对二次侧≥6.4mm,如光耦、Y 电容等元器零件脚间距≤6.4mm 要开槽。
二次侧部分之间≥0.5mm 即可
二次侧地对大地≥2.0mm 以上
变压器两级间≥8.0mm 以上
14.有极性的变压器的引脚尽量不要设计成对称形式。

15.安装孔的禁布区内无元器件和走线(不包括安装孔自身的走线和铜箔)。

16.金属壳体器件和金属件的排布应在空间上保证与其它器件的距离满足安规要求。

17.振荡器和振荡电容走线距离IC接脚越近越好。

18.如果没有空间或结构的问题,零件尽量直插,不要背焊零件

19.三极管可以在丝印上标出 e,b,c 脚

第四部分:孔
1.PCB 板上的散热孔,直径不可大于 3.5MM

2.焊盘与板边最小距离为 4.0MM

3.焊盘的直径为孔径的两倍,双面板最小为 1.5MM,单面板最小为2.0MM(建议2.5MM)。如果不能用圆形焊盘,可用腰圆形焊盘,大小如下图所示(如有标准元件库,则以标准元件库为准):

4.焊盘长边、短边与孔的关系为:

5.焊盘中心距小于 2.5MM 的,该相邻的焊盘周边要有丝印油包裹,丝印油宽度为 0.2MM(建议0.5MM)。

6.测试焊盘:以 Φ2.0MM 为标准,最小要 Φ1.3mm。开模后的测试焊盘不能移动,非不得已事先要与生产部门商量。

7.插件元件焊盘间距大于 1.0mm

8.贴片焊盘的上锡位不能有丝印

9.为减少焊点短路,所有的双面印制板,过孔都不开绿油窗。

10.孔洞间距离最小为 1.25MM(对双面板无效)。

11.螺丝孔半径 5.0MM 内不能有铜箔(除要求接地外)及元件。(或按结构图要求)。

12.电插印制板的定位孔规定:阴影部分不可放元件,手插元件除外,L 的范围是 50~330mm,H的范围是 50~250mm,如果小于 50X50 则要拼板开模方可电插,如果超过 330X250 则改为手插板。定位孔需在长边上。

第五部分:丝印
1.丝印字符为水平或右转 90 度摆放。

2.当无维护文件时,PCB 板上的保险管、保险电阻、交流 220V 的滤波电容、变压器等元件位置附近,面丝印上应有符号及该元件的标称值。

3.交流 220V 电源部分的火线与中线在铜箔安全距离不小于 3.0MM,交流 220V 线中任一 PCB 线或可触及点距离低压零件及壳体之间距应大于 6MM,并且要加上 符号,符号下方应有“HIGH VOLTAGE DANGER”字符,强电与弱电间应用粗的丝印线分开,以警告维修人员该处为高压部分,要小心操作。

4.波峰焊加工的制成板进板方向要求有丝印标明
波峰焊加工的制成板进板方向应在 PCB 上标明,并使进板方向合理,若 PCB 可以从两个方向进板,应采用双箭头的进板标识。(对于回流焊,可考虑采用工装夹具来确定其过回流焊的方向)。

5.PCB 的原、付边隔离带清晰,中间有虚线标识。

第六部分:流程
1.从原理图到pcb的设计流程 建立元件参数->输入原理网表->设计参数设置->手工布局->手工布线->验证设计->复查->cam输出。

常用网站:
嘉立创EDA使用说明:https://docs.lceda.cn/cn/FAQ/Editor/index.html
嘉立创EDA快捷键:https://docs.lceda.cn/cn/Introduction/Shortcut-Keys/index.html

❌