使用VSCode和sdcc进行现代化单片机开发
前言这个学期学校开设了单片机课程,这是一门很有意思的课,之前也有过使用Ardunio UNO外驱舵机开发寝室NFC门禁的经历。在学校课程中学到了更多的诸如仿真的技巧,收益颇多。在当时基础知识不足的情况下反复被我擦写的板子居然能挺过来真的应该给他上柱香。
当然,学校课程所使用的工具都较老,尤其是keil,点名批评,使用起来非常的恼火,各类跳转搜索功能几乎是没有,界面老旧且交互完全算不上友好。如果一定要一个理由来使用它,那就是sdcc的编译结果相较keil稍大。但是这和我一个业余玩家有什么关系呢?整!
环境配置C/C++vsc必备的c语言开发插件,不必多说
PlatformIOPlatformIO是一款vsc插件,适用于各类单片机的开发,非常好用。
安装以后会自动下载依赖,重启vsc后即可载入,需要注意的是,依赖下载会较慢,建议下载前挂上代理。
工程创建进入PIO Home,点击New Project,根据提示创建工程
我们要进行51单片机开发的话,选择STC89C52RC即可,虽说是52,其实差不多啦,8052.h实质上也是在#include <8051.h>后 ...
使用Clion进行LiteLoader插件开发
LiteLoader是一个基岩版官方服务端 Bedrock Dedicated Server(以下简称 BDS)的插件框架,提供强大的跨语言脚本插件支持能力和稳定的开发 API 支持。使用LiteLoader可以帮助我们实现高可用性的BDS插件开发。
一般来说进行cpp开发首选的IDE是Visual Studio,但是对于一个被IDEA惯坏的人来说,属实用着不太顺手。令人庆幸的是,JetBrains同样有专为C系语言开发的CLion。
安装推荐使用Toolbox App进行CLion的安装。
具体过程不再赘述,在托盘内找到图标直接找到CLion点击安装即可。
然后你就可以打开CLion进行开发了。
模板插件的使用我们可以使用LiteLDev为我们提供的PluginTemplate插件模板进行快速开发。
首先点击Use this template
根据提示创建好自己的插件仓库后将他git clone下来,然后我们就可以在CLion里打开它了。
Toolchains配置 File | Settings | Build, Execution, Deployment | Toolchai ...
ReactNative安卓app逆向获取passwd加密方式初探
因为平时看轻小说厕纸比较多,为了能够获取接近纸质书的体验,大多数都会下载epub的文档到Kindle上来阅读(其实就是想看插画),手动去找各类资源也不是不行吧,就是属实是有点麻烦,排版也不尽统一。恰好国内某站点提供相当全面的轻小说资源,且提供了Windows和Android平台客户端,获取资源不要太方便。但是吧,因为一些敏感的问题,他的web站点不再对外开放了,对于我个人来说一般来说不会在pc阅读小说,而且Android客户端的阅读体验属实有点一言难尽,就一直思量着能不能分析一下协议重构一个web端,方便在在Kindle直接用浏览器获取相应的轻小说资源。
抓包抓包当然是第一步,不抓包怎么去分析协议呢对不对,在使用Fiddler一通乱抓以后我大概获取了以下信息
登陆接口的重要参数有3个,分别是uname,pass,appToken,其中uname为明文的账号信息,pass为32位密文,appToken为32位密文+”.”+32位密文,在成功登陆以后服务器会返回token作为全局身份认证
剩余的部分实际上并不复杂,所以就不再赘述了,关键是如何获取pass和appToken的加密方式,在 ...
VHDL学习笔记
基本设计单元
Library (库)
库主要存放已经编译过的实体、结构体、程序包和配置;
Package(程序包)
程序包主要用来存放各个设计都能共享的数据类型、子程序说明、属性说明、元件说明等部分。
Entity(实体)
用来说明模型的外部特征
Architecture(结构体)
来定义模型的功能
Configuration(配置)
将实体和它的结构体联系起来
结构库
库是专门用于存放预先编译好的程序包的地方,对应一个文件目录,程序包的文件就放在此目录中,其功能相当于共享资源的仓库,所有已完成的设计资源只有存入某个“库”内才可以被其他实体共享。库的说明总是放在设计单元的最前面,表示该库资源对以下的设计单元开放。
1LIBRARY 库名 ;
IEEE库:是VHDL设计中最常用的资源库,包含IEEE标准的STD_LOGIC_1164、NUMERIC_BIT、NUMERIC_STD以及其他一些支持工业标准的程序包。其中最重要和最常用的是STD_LOGIC_1164程序包,大部分程序都是以此程序包中设定的标准为设计基础。
STD库:是VHDL的标 ...
关于maven仓库在gradle本地复用的误区
误区之前在使用gradle时时常看到有教程说
在dependences中加入mavenLocal()即可使用本地已经由maven下载好的相关依赖
这句话对于像我这样不甚了解的人可说是误解太大了,它很容易被误解为:
gradle将使用maven下载到本地的依赖,并保持结构不变
实际上gradle并不会这么做,当在maven本地依赖中读取到相对于的依赖时,gradle实际上复制了一份依赖到GRADLE_USER_HOME对应的路径中,也就是说gradle的依赖是独立于maven的,两者之间不存在相互调用的关系,只是gradle单方面复制了maven的依赖到自己的路径中。gradle使用本地maven仓库并非完全复用,若maven库中存在则复制maven的,若不存在则用自己缓存的。
就因为这一句话的错误理解,我花费了数个小时来尝试将两个仓库进行合并以达到真正的复用的目的,事实上这应该是不可行的,而且可能造成安全问题。但是作为一个强迫症多少有点不爽,希望gradle以后能够有相应的解决方案吧。
有关栈数据处理和布尔代数的探索
【注意】 本文档存在大量的不规范,不标准言论以及大量臆想,请勿作为学术参考
有关栈数据处理和布尔代数的探索这段时间的数据结构学习,使我对栈这一数据结构类型产生了兴趣。
从栈的本质出发,他是一个先进后出的特殊的数据结构类型。这个先进后出的思想使得很多操作变得极为便利且可行,就如由栈实现的简单计算器的计算优先级逻辑。
先进后出的栈先进后出,简单的理解就是先进栈的数据后出栈
仔细观察这张图,我们可以发现什么呢?
没错,他对这串数字进行了逆序输出,更为准确的说,是
对于一个数据块,经理了一次完整的进栈出栈后,栈对其进行了逆序的操作
数据块是我自己的叫法,他应该被解释为,一次性依次压入栈中的一整个线性表,对于一个已经确定的数据块,我们不对其进行进一步的分割,同时也应当注意,只有一个元素线性表也被称为数据块,不过因为数据块中只有一个元素,所以其逆序输出是其本身。数据块应该作为待入栈最小单元来对待。
OK,那么我们就得到了定理一(请原谅我这么称呼)
逻辑的混乱在数据结构作业中,我遇到了这样一个问题
请列出线性表abcd经过栈处理以后所有的可能序列
这道题本身并不难,套用课本给出的公式$ ...
简述类与对象的基本使用
[面向对象作业] 简述类与对象的基本使用写在开头我愿称之为面向对象为计算机编程历史上的丰碑!
Demo12345678910111213141516171819202122232425262728293031323334353637383940414243444546public class Person { private String name; private boolean sex; private int year; //无参构造器 public Person() { } //全参构造器 public Person(String name, boolean sex, int year) { this.name = name; this.sex = sex; this.year = year; } //堆成山的getter和setter public String getName() { retur ...
Springboot在controller调用service出现npe的解决方案
Springboot在controller调用service出现npe的解决方案最近在写springboot的时候被老大说代码耦合性太高,在重构的过程中发现了这个问题
1234@PostMapping("/api/login") public HashMap<String, String> loginUser(User user) { return new UserService().loginUser(user); }
这是controller的一个接口处理,在调用该接口时,会出现UserService().loginUser()方法数据源npe的问题,查阅各处资料后发现,new出来的方法不处于springboot容器的管控,所以我们需要通过注入来实现controller调用service
1234567@Autowired UserService userService; @PostMapping("/api/login") public HashMap<String ...
优雅的完成青年大学习
优雅的完成青年大学习
本文转载并修改自HelloWorld的小博客
请注意,本文介绍的方法仅供学习,请勿作其他用途
开启控制台微信浏览器网页打开http://debugx5.qq.com打开下面两项,就可以调试了
现在,你的网页右下角会显示一个vConsole点击它可以打开控制台
优雅的完成它打开青年大学习,并进入学习内容,点击右下角的控制台,键入
12$('.section3').addClass('topindex1');$('.section4,#Cvideo').hide();
按下ok执行代码即可快速跳过
效果示意
使用此方法积分和学习记录都会一并增加
Windows下JDK的配置
Windows下JDK的配置本文分为如下几个模块
JDK的下载
环境变量的配置
JDK版本的快速切换
废话少说,让我们开始
JDK的下载介于各种原因,这里选择了OpenJDK作为教学安装版本
首先我们登陆由清华大学提供的清华大学开源软件镜像站
访问首页,你将看到如下场景
点击AdoptOpenJDK 进入OpenJDK的下载界面
选择你需要的版本进入
这里我们选择jdk
jdk和jre的区别
JRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。
JDK顾名思义是java开发工具包。绝大部分版本包含JRE
一般来说选择x64 我该如何选择软件版本?
Windows(废话
选择如图所示zip包进行下载
在清华大学雄厚财力购买的镜像服务器的支持下,我们可以很快的下载好我们所需要的JDK
让我们在D盘新建一个文件夹,来放置我们的JDK,你也可以放置在任何一个你喜欢的位置,但是请注意,有序的文件和版本管理可以让你的开发变的更为高效
可以看见,我之前已经安装过了一些版本 ...