- 博客(1085)
- 资源 (24)
- 收藏
- 关注
原创 IDEA 搜索常用方法
IDEA 搜索常用方法1.当前类搜索1.1.Ctrul+F12功能:查看当前类中的所有成员:方法、属性、内部类亮点:直接显示所有成员的列表,支持搜索功能快速定位到某个成员的位置上。效果图:搜索类中某个成员位置直接输入关键字就会匹配出当前类中所有符合的成员。选择查询结果直接定位到跳转到代码位置。1.2.Alt+7功能:显示当前类的所有成员:方法、属性亮点:显示当前...
2020-04-30 14:49:59 36867 2
原创 (一)性能总领思想
性能总领思想 有已知的已知;有些事情我们知道自己知道。我们也知道有已知的未知;这是指我们知道有些事情自己不知道。 但是还有未知的未知;有些事情我们不知道自己不知道 ----美国国防部长 唐纳德.拉姆斯菲尔德在取得数据之前就把事情理论化是一个严重的错误。不理智的人扭曲事实来适应理论,而不是改变理论来适应事实。----夏洛克...
2019-09-13 18:58:55 940
原创 IDEA实用快捷键
IDEA实用快捷键一、运行类快捷键1、选择某个类文件的代码运行:Alt+shift+F102、运行当前类代码:shift+F103、断点调试:shift+F9二、代码注释快捷键1、单行注释:Ctrl+/ 取消注释:再次按Ctrl+/ 2、代码块注释:选中要注释的代码块,按下组合键。Ctrl+Shift+/取消注释:去除注释的时候,不需要全部...
2019-06-19 12:11:24 8407 1
原创 博客大咖收藏录
一、java开发博主1、博主亮点: java从基础到web开发博文描述清晰,系统化、文章很多。http://www.cnblogs.com/xdp-gacl/tag/JavaWeb%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93/http://www.cnblogs.com/xdp-gacl/2、博主亮点:各种开发语言的文档资料很多。zhanglu23...
2017-07-16 10:58:05 1264 1
原创 Windows系统搭建Arduino+mindPlus开发环境发布第一个作品
这篇文章介绍在Windows环境中搭建Arduino基于MindPlus开发环境,以及开发环境使用介绍。
2024-01-10 14:57:24 544
原创 搭建 Mac系统Arduino + MindPlus开发环境
2024年1月1号,元旦大家的安排丰富多彩,在这一天中我的安排依旧坚持初心,牢记使命。学习是我的起点也是我的终点,只要活着就要用知识丰富自己的生活。今天是一个有意义的日子,从搭建环境开启Arduino新篇章。
2024-01-01 18:08:59 637 1
原创 单片机外设矩阵键盘之行列扫描识别原理与示例
为什么不直接介绍矩阵按键而是先介绍独立按键工作原理那,这是因为矩阵键盘是独立按键数量的升级,矩阵键盘工作原理并没有改变,还是独立按键的工作原理。
2023-12-27 20:17:01 1309
原创 单片机外设矩阵键盘之线反转法识别原理与示例
线反转识别的设计非常巧妙,简化了代码的复杂度和冗余度。首先识别列号,然后在识别行号,经过两次识别确定按键位置,因此称为线反转识别。线反转识别步骤如下设置列识别模式行为低4位,列为高4位,将行全部设置为0,列全部设置为1,十六进制值为0xf0识别列号当按键按下的时候,某列的值就会变为0,因此可以获取对应列号,例如按下第一列 1110反转 设置行识别模式行为低4位,列为高4位,将行全部设置为1,列全部设置为0,十六进制值为0x0f识别行号。
2023-12-27 09:45:40 1992
原创 51单片机模数转换ADC原理与代码一
ADC(Analog-to-Digital Converter)是用于将模拟形式的连续信号转换为数字形式的离散信号的一类设备。Analog: 直接翻译过来就是模拟,也就是说是模拟信号,这里我们就要了解一个概念了什么是模拟信号?其实并不难理解,模拟信号就是将电路模拟成信号,电信号有电压、电流等因素等等;Digital:直接翻译过来就是数字的,也就是数字信号,那我们又要了解一个概念了,什么是数字信号?其实它比模拟信号还要容易理解,将电路的信号模拟成数字信号,通常情况下高电平就表示1,低电平就表示0;
2023-12-22 20:14:47 2869
原创 51单片机4线并发IO口控制1602LCD
这篇文章介绍单片机使用4个并发IO口数据线控制LCD显示字符,为单片机节省了4个IO口。单片机4个IO口控制LCD原理就是将原来1个字节8位数据拆分2次读写,首先读取高4位数据,然后再读低4位数据,实现了4个IO口读取1个字节数据,控制1602LCD显示屏显示字符。
2023-12-18 20:08:12 684
原创 51单片机控制1602LCD输出整数和浮点数
1602LCD只能显示ASCLL码字符,如果我们给他输入整型类型或者浮点数类型数据让他输出,它在ASCLL码中是找不到对应的字符,因此什么都不会输出。例如我们让LCD显示传感器采集到的数据就是一个整型或浮点型,LCD展示不了这个数据,需要我们将数据转换为char型的字符,LCD在内置的CGROM中查找ASCLL码找到对应的字符并输出。
2023-12-18 19:55:06 928
原创 51单片机控制1602LCD显示屏输出自定义字符二
上面创建的函数有缺陷,每当需要改变字符存放CGRAM位置或者修改LCD显示位置都需要修改这个函数,因此对他进行优化,将变化的内容提取为参数。成为一个工具函数,每次只需要传入参数就可以输出不同的字符。LCDSetChar函数封装了自定义内容功能,该函数设计思想如下首先定义参数包含字符在LCD显示的位置,CGROM位置,字符内容x:LCD显示字符位置y:设置字符在LCD显示的行pos:设置CGRAM位置str:字符内容构造自定义字符包含两个部分设置字符在CGRAM存储位置。
2023-12-14 16:06:11 1854
原创 Keil5个性化设置及常用快捷键
这篇文章是Keil工具介绍的第三篇文章,主要介绍下Keil5优化配置,以及工作中常用的快捷键提高开发效率。第一篇:《安装嵌入式单片机开发环境Keil5MDK以及整合C51开发环境》https://blog.csdn.net/m0_38039437/article/details/134599013第二篇:《Keil5MDK创建C51工程》 https://blog.csdn.net/m0_38039437/article/details/134604477。
2023-11-25 20:33:36 2068
原创 Keil5MDK创建C51工程
上篇文章介绍了安装Keil5MDK和C51工具,这篇文章介绍工具的使用,首先介绍如何创建一个51单片机工程,写一个demo程序通过编译,烧录到单片机。第一篇安装工具文章地址:https://blog.csdn.net/m0_38039437/article/details/134599013。
2023-11-24 19:51:59 911
原创 安装嵌入式单片机开发环境Keil5MDK以及整合C51开发环境
Keil5MDK以及整合C51非常简单,关键步骤有两点MDK和C51是两个工具,都需要安装MDK和C51工具整合,只需要在MDK的TOOLS.INI文件中添加C51配置信息下一篇文章将介绍如何在MDK中创建C51工程,实现编译下载,烧录到单片机。
2023-11-24 16:32:26 992
原创 51单片机利用I/O口高阻状态实现触摸控制LED灯
这篇文章介绍使用I/O口的高阻状态实现一个触摸控制LED灯亮灭的实验。该实验通过手触摸P3.7引脚,改变电平信号控制灯的亮灭。
2023-11-23 20:33:41 987
原创 51单片机IO口的四种工作状态切换
PnM1PnM0I/O口工作模式00准双向口:灌电流达20mA, 上拉电流为150~270uA01推挽输出:强上拉输出达20mA,外接限流电阻10高阻输入11开漏:内部上拉电阻断开,外接上拉电阻。既可以读外部状态也可对外部输出名词解释灌电流:VCC给其他IO引脚输入的电流上拉电流:其他IO引脚到GND的电流。
2023-11-23 19:13:51 2220 1
原创 51单片机按键控制LED灯亮灭的N个玩法
这篇文章介绍按键的使用,以及通过控制LED灯的小实验,发现按键中存在的问题,然后思考并解决这些问题。达到熟练使用按键控制元器件。
2023-11-22 21:14:35 1762
原创 51单片机PWM控制LED灯渐明渐暗实验
这篇文章介绍单片机的PWM通过占空比控制LED灯的渐明渐暗效果,通过该实验掌握PWM的原理以及应用它做一些事情。
2023-11-22 11:45:46 901
原创 51单片机LED灯渐明渐暗实验
这篇文章介绍使用单片机控制两个LED彩灯亮度渐明渐暗效果,详细介绍了操作步骤以及完整的程序代码,动手就能制作的小实验。
2023-11-22 10:08:44 1821
原创 STC单片机选择外部晶振烧录程序无法切换回内部晶振导致单片机不能使用
文章概述中描述的问题,原因有两点。在STC-ISP设置内外部晶振模式,第一次烧录程序后并不生效,需要在烧录完成后,再手动冷启动后生效。单片机烧录程序是通过UART串口,该串口数据传输依赖晶振,没有晶振将无法传输数据。因此解决这个问题的关键点就是判断当前单片机使用的是内部还是外部晶振,如果无法判断当前使用是哪个晶振,那就把外部晶振接好,为单片机同时提供内外晶振,在烧录程序时有单片机自己选择。只要它找到了晶振就解决了不能烧录程序的问题。
2023-11-21 20:31:22 648
原创 python发送邮件连载一
python内置了发送邮件的模块,因此不需要单独安装。smtplib 模块负责发送邮件email 模块负责格式化邮件内容样式。
2023-05-09 15:43:55 1956 2
原创 gunicorn部署flask项目定时器apscheduler添加任务不运行
在开发环境运行定时器apscheduler添加任务运行正常,使用gunicorn部署flask项目后添加定时任务后不运行。下面介绍下不运行的原因和解决方法。
2023-04-26 17:16:26 2328
原创 Flask_APScheduler插件封装业务逻辑持久化任务(二)
定时任务Flask_APScheduler插件结合业务使用时,需要将任务持久化到数据库中与业务逻辑结合起来使用才能体现定时任务的价值。定时任务Flask_APScheduler插件本身支持市面上主流的ORM框架将任务信息持久化到数据库中与业务结合,但是如果我们的项目是自己封装的ORM,就不能直接将任务信息持久化到数据库。这篇文章就是介绍如何封装定时任务信息持久化到数据库,与业务逻辑结合实现定时任务。Flask_APScheduler是一个系列文章,第一篇文章介绍了该组件的基本使用,链接如下。
2023-04-17 14:26:26 1502
原创 重构类关系-Replace Delegation with Inheritance以继承取代委托十二
你在两个类之间使用委托关系,并经常为整个接口编写许多极简单的委托函数。让委托类继承受托类。本重构与Replace Inheritance with Delegation (352)恰恰相反。如果你发现自己需要使用受托类中的所有函数,并且费了很大力气编写所有极简的委托函数,本重构可以帮助你轻松回头使用继承。两条告诫需牢记于心。首先,如果你并没有使用受托类的所有函数,那么就不应该使用Replace Delegation With Inheritance (355),因为子类应该总是遵循超类的接口。
2023-03-27 10:24:40 1077
原创 重构类关系-Replace Inheritance with Delegation以委托取代继承十一
某个子类只使用超类接口中的一部分,或是根本不需要继承而来的数据。在子类中新建一个字段用以保存超类;调整子类函数,令它改而委托超类;然后去掉两者之间的继承关系。继承是个好东西,但有时候它并不是你要的。你常常会遇到这样的情况:一开始继承了一个类,随后发现超类中的许多操作并不真正适用于子类。这种情况下,你所拥有的接口并未真正反映出子类的功能。或者,你可能发现你从超类中继承了一大堆子类并不需要的数据,抑或你可能发现超类中的某些protected函数对子类并没有什么意义。
2023-03-27 10:17:31 1240
原创 重构类关系-Form Template Method塑造模板函数十
你有一些子类,其中相应的某些函数以相同顺序执行类似的操作,但各个操作的细节上有所不同。将这些操作分别放进独立函数中,并保持它们都有相同的签名,于是原函数也就变得相同了。然后将原函数上移至超类。继承是避免重复行为的一个强大工具。无论何时,只要你看见两个子类之中有类似的函数,就可以把它们提升到超类。但是如果这些函数并不完全相同该怎么办?我们仍有必要尽量避免重复,但又必须保持这些函数之间的实质差异。常见的一种情况是:两个函数以相同顺序执行大致相近的操作,但是各操作不完全相同。
2023-03-27 10:07:16 1063
原创 重构类关系-Collapse Hierarchy折叠继承关系九
超类和子类之间无太大区别。将它们合为一体如果你曾经编写过继承体系,就会知道,继承体系很容易变得过分复杂。所谓重构继承体系,往往是将函数和字段在体系中上下移动。完成这些动作后,你很可能发现某个子类并未带来该有的价值,因此需要把超类与子类合并起来。
2023-03-27 09:58:30 1000
原创 重构类关系-Extract Interface提炼接口八
若干客户使用类接口中的同一子集,或者两个类的接口有部分相同。将相同的子集提炼到一个独立接口中。类之间彼此互用的方式有若干种。“使用一个类”通常意味用到该类的所有责任区。另一种情况是,某一组客户只使用类责任区中的一个特定子集。再一种情况则是,这个类需要与所有协助处理某些特定请求的类合作。对于后两种情况,将真正用到的这部分责任分离出来通常很有意义,因为这样可以使系统的用法更清晰,同时也更容易看清系统的责任划分。如果新的类需要支持上述子集,也比较能够看清子集内有些什么东西。
2023-03-27 09:52:02 1647
原创 重构类关系-Extract Superclass提炼超类七
两个类有相似特性。为这两个类建立一个超类,将相同特性移至超类。重复代码是系统中最糟糕的东西之一。如果你在不同地方做同一件事情,一旦需要修改那些动作,你就得平白做更多的修改。重复代码的某种形式就是:两个类以相同的方式做类似的事情,或者以不同的方式做类似的事情。对象提供了一种简化这种情况的机制,那就是继承。但是,在建立这些具有共通性的类之前,你往往无法发现这样的共通性,因此经常会在具有共通性的类出现之后,再开始建立其间的继承结构。另一种选择就是Extract Class (149)。
2023-03-24 17:31:50 1024
原创 重构类关系-Extract Subclass提炼子类六
类中的某些特性只被某些(而非全部)实例用到。新建一个子类,将上面所说的那一部分特性移到子类中使用Extract Subclass (330)的主要动机是:你发现类中的某些行为只被一部分实例用到,其他实例不需要它们。有时候这种行为上的差异是通过类型码区分的,此时你可以使用Replace Type Code with Subclasses (223)或Replace Type Code with State/Strategy (227)。但是,并非一定要出现了类型码才表示需要考虑使用子类。
2023-03-24 16:55:35 1072
原创 重构类关系-Push Down Method函数下移四
超类中的某个函数只与部分(而非全部)子类有关。将这个函数移到相关的那些子类去。Push Down Method (328)与Pull Up Method (322)恰恰相反。当我有必要把某些行为从超类移至特定的子类时,我就使用Push Down Method (328),它通常也只在这种时候有用。使用Extract Subclass (330)之后你可能会需要它。
2023-03-24 14:40:23 1087
原创 重构类关系-Pull Up Constructor Body构造函数本体上移三
你在各个子类中拥有一些构造函数,它们的本体几乎完全一致。在超类中新建一个构造函数,并在子类构造函数中调用它。构造函数是很奇妙的东西。它们不是普通函数,使用它们比使用普通函数受到更多的限制。如果你看见各个子类中的函数有共同行为,第一个念头应该是将共同行为提炼到一个独立函数中,然后将这个函数提升到超类。对构造函数而言,它们彼此的共同行为往往就是“对象的建构”。这时候你需要在超类中提供一个构造函数,然后让子类都来调用它。很多时候,子类构造函数的唯一动作就是调用超类构造函数。
2023-03-24 14:32:43 1116
原创 重构类关系-Pull Up Method函数上移二
有些函数,在各个子类中产生完全相同的结果。将该函数移至超类。避免行为重复是很重要的。尽管重复的两个函数也可以各自工作得很好,但重复自身只会成为错误的滋生地,此外别无价值。无论何时,只要系统之内出现重复,你就会面临“修改其中一个却未能修改另一个”的风险。通常,找出重复也有一定困难。如果某个函数在各子类中的函数体都相同(它们很可能是通过复制粘贴得到的),这就是最显而易见的Pull Up Method (322)适用场合。当然,情况并不总是如此明显。
2023-03-24 12:08:20 1134
Python3标准库中文PDF版本
2022-11-01
ISO27000整理中文版.zip
2022-01-14
setup-6.0.4.zip
2020-04-11
haozip_v6.0.1.10978.exe
2020-04-09
博客分类图标.zip
2020-03-15
chaosblade-0.2.0.linux-amd64.tar.gz
2019-08-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人