1.怎样用u盘启动电脑开机密码
2.lvgl库在VS Code中PlatformIO平台的技术详细介绍
3.电脑游戏制作
4.javaç¨åºå为ä»ä¹ä½¿ç¨Groovy
怎样用u盘启动电脑开机密码
相信看这篇文章的小伙伴们都是一些技术宅吧?既然是技术宅的话,那么我们就得做一些有技术的宅源事情,今天杰瑞给大家带来一篇有趣的码技教学文章,利用一些简单的术宅技术做一些炫酷的事情——
电脑U盘开机钥匙
电脑U盘开机钥匙
是什么东西呢?且听
杰瑞
慢慢道来,这个U盘钥匙可以充当我们电脑的技术开机“
钥匙
”,电脑只有在我们特制的宅源baocms蜂蜜源码U盘接入的情况下才能开机,如果开机的码技时候没有检测到“钥匙”的话电脑就会关机。这个程序需要电脑程序和U盘之间的术宅配合,电脑程序杰瑞会一步一步教大家去写出来,技术U盘杰瑞也会教大家去制作。宅源
简单教学
第一部分,码技制作特制U盘。术宅
制作特制U盘非常非常的技术简单,只需要按照以下步骤去做就行了。宅源聊天员兼职源码在U盘根目录建立一个文件夹,码技取名为copy(YweQ==),然后在这个文件夹里面创建一个文本文件并取名为:YweQ==.txt,到这里我们的U盘就制作完毕了,文件夹和文本文件的名称可以随便取,但是要尽量保证它的唯一性,而且两者的名字要相同。
第二部分,编写程序代码。
程序方面主要是用来检测特制U盘是否已经接入,在监测的过程中会用到我们第一部分中建立的文件夹和文件。检测的思路是这样的,先逐个检查各个磁盘中是app清理垃圾源码否存在
copy(YweQ==)
文件夹,如果存在这个文件夹就进一步检测文件夹中是否含有
YweQ==.txt
文件,如果都符合的话就说明特制U盘已经接入,反之则执行关机代码。
逐个检查磁盘的前提是,你要知道哪些磁盘已经接入,要不然你怎么检测呢?所以我们还要检查磁盘是否接入,然后再进一步检测是否是我们的U盘,以下是我们程序的整个思路。
不过杰瑞又将程序优化了一下,直接去检测位于末尾的盘符就可以了,因为一般新接入的磁盘的命名都比较靠后。
程序源代码示例
lvgl库在VS Code中PlatformIO平台的详细介绍
今天我花费了一整天的时间,深入研究了lvgl库及其模拟器在VS Code的前端是不是源码PlatformIO插件中的使用方法。
lvgl是一个轻量级的图形界面库,主要用于为没有操作系统的设备提供图形化界面。
由于稚晖君的HoloCubic固件需要移植,我想先在电脑上进行模拟,于是开始探索这一领域。
我在B站上找到了一个教程,推荐使用VS Code + PlatformIO来构建lvgl图形界面和PC模拟器。在查阅官方文档后,我发现作者在GitHub上发布了支持该平台的demo,于是我开始研究这个库的工作原理和文件结构。
该项目在GitHub上,需要自行下载。
由于稚晖君的幸运拼拼团源码小电视分辨率是x,但默认demo的分辨率是一个很大的长方形。
推荐这个方法的B站UP主只教了如何安装,没有详细讲解lvgl库的使用方法,所以我只能在官网的文档中寻找答案。(顺便提一下,官网是全英文的,但谷歌浏览器自带的翻译功能非常出色,基本翻译一遍,再对照英文原文就能理解意思,没有之前学校里做英语阅读理解的厌恶感。不得不承认谷歌yyds,百度毁了我青春。)
如果有小伙伴还没有安装,可以先看他的视频:
项目结构
所有的库文件和demo源代码都在名为.pio的文件夹里。
注意:如果重复编译时出现错误,需要手动删除build文件夹,再重新编译!
(现在想想,.pio文件夹下的内容可能是在platformIO的.ini配置文件中填写了其在GitHub的URL,然后自动从代码仓库拉取的。只是个人猜测,还没有验证过,希望各位批评指正。)
platformio.ini文件:
这是platformio用来自动补全文件的配置文件,在这里可以设置lvgl的版本、lvgl的驱动版本、模拟器的分辨率等。
我当时并不知道如何调整分辨率,尝试了许多方法,一开始看到有人说在lv_drv_conf.h中修改,有人说在lv_conf.h中修改。于是我在.pio文件夹下研究了一个下午的源码。
最后,通过库编写者的友好注释,我成功地在lv_drv_conf.h中找到了名为SDL_HOR_RES(水平向分辨率)和SDL_VER_RES(竖直向分辨率)的两个宏定义常量。
然后根据注释的要求配置好,但发现调试出来的模拟器分辨率还是老样子!
就在绝望之际,我想起了platform的配置文件.ini,我打开扫视了一下,竟然在这里发现了SDL_HOR_RES和SDL_VER_RES这两个常量和后面的值!我马上修改了这两个值,重新编译了一下(记得要删除build文件夹再重新编译),终于成功了!
所以在库配置文件中的,也就是lv_drv_conf.h和lv_conf.h中的分辨率设置,应该是实际在设备上运行时使用的。
本来只是想调整分辨率,结果我把库的源代码学了个遍。算是因祸得福吧。
真好,又是一个被封在家的一天。
我在上海闵行,听说我这里是重灾区,小区都封了,解封遥遥无期。但是对于技术宅来说,这简直太开心了!(宅在家变成了正当理由哈哈哈)
电脑游戏制作
做一款游戏是很复杂的,各种源代码,各种脚本,而且一个人是很难开发出来的,除非你是技术宅,而且有很深的电脑编程方面的知识。不过,如果你只是想先做一款比较简单的,你可以先用现成的rpgmaker系列的软件练练手,随后有了一定基础,可以试试maya等专业软件,至于教程,你自己去找吧,天下没有免费的午餐。
javaç¨åºå为ä»ä¹ä½¿ç¨Groovy
ä¸ç´å¬è¯´javaä¸çéæ个Groovyï¼ä½æ¯ä¸ç´æ²¡æ¶é´å»äºè§£å®ç©¶ç«æ¯ä¸ä¸ªæä¹æ ·åçãæ们ç°å¨ç项ç®éæ¾äºå¾å¤å¼æºå ï¼èä¸é¡¹ç®ä¸åæµç¨çæ¶åï¼è§åå°±æ¯ç¨Groovyå®ç°çãè¿æ¥é²æ¥æ äºï¼äºæ¯å¼å§è®¤ççççGroory究ç«æä»ä¹å¥½çãå ¶å®æåææ¥è§¦å®æ¯å 为Grailsè¿ä¸ä¸ªæ¡æ¶ï¼è¿ä¸¤ä¸ªé½æ¯ä¸ºäºå®ç°ä¸ä¸ªç®çï¼javaçææ·å¼åï¼ä¸javaçæ ç¼å¯¹æ¥ãå¨æäºæ åµä¸ï¼javaéè¦å天å¤ççäºæ ï¼Groovyåªéè¦å åéï¼æ¯çï¼å åéâ¦å©ä¸æ¥çæ¶é´ï¼ç¨åºåç»äºææ¶é´æ³¡å¦¹åäºï¼^_^â¦â¦.ææ¯å® çå å¼ï¼èµ¶ç´§æ¥ççå§ã
èæ¬è¯è¨ï¼å¨æè¯è¨ï¼é¾éæ¯javascriptä¸ç±»çï¼å¥½å§ï¼å®çç¡®åjavascriptæä¸ç¹åï¼ä½æ¯å®å¤ªå¼ºå¤§äºï¼è¿è¿è¶ åºäºjavascriptè½å¤ççäºæ ãè¿éä¸åjavascriptåæ¯è¾äºï¼ç´æ¥æ¥åJavaæ¯è¾å§ï¼ççGroovyè½åä»ä¹ã
Groovy çç½ç«ï¼ http://groovy.codehaus.org ï¼ ç»åºäº groovy çæ好å®ä¹ï¼ groovy æ¯å¨ javaå¹³å°ä¸çã å ·æ象 Python ï¼ Ruby å Smalltalk è¯è¨ç¹æ§ççµæ´»å¨æè¯è¨ï¼ groovy ä¿è¯äºè¿äºç¹æ§è±¡ java è¯æ³ä¸æ ·è¢« java å¼åè 使ç¨ã èä¸å¦ä¹ Groovy对javaeræ¥è¯´ï¼æ¯å¾å®¹æçä¸ä»¶äºæ ãå¦æä½ è¿æ²¡æå¼å§å¦Rubyï¼æ¥å§ï¼åæä¸èµ·æ¥Groovyingä¸ä¸â¦â¦â¦â¦èä¸é带ä¸ä¸ªGrailsæ¥åª²ç¾Ruby on railsã
1.Groovyå¯ä»¥å ¼å®¹javaã
æ¯çï¼ä½ å¯ä»¥ç¨javaè¯æ³æ¥ç¼ågroovy,æåè¿å¯ä»¥çæclassæ件ï¼ç´æ¥ç¨javaè°ç¨ãä½ ä¼è¯´ï¼è¿æä»ä¹å¥½çï¼ä¸å°±æ¯æ¹äºä¸ªåç¼åä¹ï¼åï¼ä¹è®¸å§â¦ä½æ¯å®ç亮ç¹å½ç¶ä¸æ¯è¿ä¸ªï¼å®ç亮ç¹æ¯ä½ å¯ä»¥å¨Groovyéé¢ç´æ¥ç¨javaè¯æ³æ··æåï¼å½ç¶ä¸æ¯å¾æ¨èè¿æ ·åçã
2.Groovyæ¯å¨æçã
ä¸éè¦javaçåå°ï¼ä¸éè¦åé¿ç代ç ï¼ä¸éè¦åç§try catch å¼å¸¸ï¼ä½ å°±å¯ä»¥å®ç°åç§ç¥å¥çäºæ ãGroovyçclasså¯ä»¥è¿æ ·æ°å¢ä¸ä¸ªæ¹æ³ï¼æè è°ç¨å®ã
//ç¨éå å®ä¹ä¸ä¸ªæ¹æ³ var1为åæ° ,->åé¢æ¯æ§è¡è¯å¥ï¼å½ç¶åæ°ä¸æ¯å¿ é¡»çï¼
def methodA={ var1-> print "this is methodA"}
//ç¨éå å®ä¹ä¸ä¸ªæ¹æ³ var1为åæ° ,->åé¢æ¯æ§è¡è¯å¥ï¼å½ç¶åæ°ä¸æ¯å¿ é¡»çï¼
def methodB={ var1-> print "this is methodB"}
String.metaClass.addMethodA=methodA; //å°methodAç»å®ä¸ºæåæ¹æ³ã
String.metaClass.'static'.addMethodB=methodB; //å°methodBç»å®ä¸ºéææ¹æ³
String s="str";
s.addMethodA('good'); //å®ä¾è°ç¨æ¹æ³A
String.addMethodB('hello'); //éæç±»è°ç¨æ¹æ³B
以ä¸ç代ç å°ä¸¤ä¸ªæ¹æ³æ·»å å°äºString classéé¢ï¼å¤©åªï¼finalçString ä¹è¢«æ»ç ´äºï¼ï¼ç¶ååå«ç¨å®ä¾å¯¹è±¡è°ç¨addMethodA,éæç±»è°ç¨AddMethodB.
3.Groovyæ¯ä¸æç士ååã
javaæ¯ä¸æåºç¡å·¥å ·ï¼çä½ éè¦çæ¶åï¼ä½ éè¦å°å¤å»æ¾jarå ï¼æ¥å¡«å èªå·±çç¨åºï¼èä¸ä½ éè¦çAPIå»å¼æåç§ä½¿ç¨ãæ¤å¤ï¼javaçç¼åå®å¨æ¯å¤ªåé¿äºï¼ä¸ºäºæå°ä¸ä¸ªHelloWorldï¼ä½ éè¦ç¼åclass, åä¸ä¸ªmainå½æ°ã对äºGroovyæ¥è¯´ï¼print âhello world!â.è¿ä¸å¥å°±è¶³å¤äºï¼è¿åªæ¯å¼å§â¦
éè¿ groovy ä½ è½å¿«éçæå¼æ§å¶å°ï¼ éè¿è¾å ¥å¦ä¸ä»£ç æ¥è¾åºææçæ件å ( éå½å¤ç ) ï¼
groovy -e "new File('.').eachFileRecurse { println it }"
å³ä½¿ java æä¸ä¸ªå称为 eachFileRecurse çæ¹æ³åä¸ä¸ª FileListener çæ¥å£ï¼ä½ ä»æ§éè¦æ¾ç¤ºçå建ä¸ä¸ªç±»ï¼ 声æä¸ä¸ª main æ¹æ³ï¼ ä¿åæºä»£ç å°ä¸ä¸ªæ件ä¸ï¼ 并ä¸ç¼è¯å®ï¼ ç¶åä½ æè½è¿è¡å®ï¼ åºäºæ¯è¾ï¼ æ们æ¥çç java åç¸åå·¥ä½ç代ç ï¼ æ们å设åå¨åç¬ç eachFileRecurse æ¹æ³ï¼
public class ListFiles { // JAVA !!
public static void main(String[] args) {
new java.io.File(".").eachFileRecurse( // å设 java åå¨è¯¥æ¹æ³
new FileListener() {
public void onFile (File file) {
System.out.println(file.toString());
}
}
);
}
好å§ï¼ä¸è½½ä¸æ¬å¥½ä¹¦ãGroovy in Action[æåç][ä¸æ].pdfãï¼ç°å¨å¼å§å¦ä¹ Groovyå§ã