我认为再简单的算法,只要能解决实际问题,提高解决问题的效率,都是好算法。下面介绍一些有意思又好用的算法,希望对大家有所帮助。
1. 线性归一化
1.1 简介
线性归一化是一种常用的数据预处理方法,主要用于将数据缩放到一个特定的范围,通常是[0, 1]。在嵌入式中常用于ADC或其他类型传感器的数据处理,将获取到的待测数值 映射到[0%, 100%]之间,方便后续处理。
公式1:
X′=X−minmax−min×100%X'=\frac{X-min}{max-min}\times100\%
X′=max−minX−min×100%
公式1中
X’:计算得到的归一化百分比结果
X:待测数值
min:标定的最小值
max:标定的最大值
以上公式1待测数值与结果是正比关系,即待测数值越大,结果百分比越大。但实际情况中,呈现反比关系的传感器并不少见,这时需要对公式1进行变形才能得到反比公式。反比关系无非就是计算100%-X’,即用100%减去正比的百分比结果,最后得到的就是反比结果,公式变形过程如下:
Y′=100%−X′Y'=100\%-X'
Y′=100%− ...
本方案需要一台云服务器来安装AList
1. 前言
typora作为一款备受欢迎的markdown笔记软件,具有简洁的UI以及功能齐全的特点,是我用过的md笔记软件里最好用的一款了。但是在实际使用中还是有一点不完美,例如没有官方的云存储同步方案,在电脑上写的笔记只能本地阅读,这很不方便。在网上也有一些同步方案,例如使用免费的网络云盘,但这需要频繁的手动操作,对我这种懒人来说不够便捷。
2. 实现方案
我发现了一种云同步方案,重点是无感,使用到了AList和RaiDrive。
AList是一个支持多种存储的文件列表程序,简单来说就是把本地存储和各大云盘整合到一起,可以作为个人的私人网盘,在网页上在线浏览和操作文件,甚至有markdown渲染和音视频的在线播放功能。利用markdown渲染功能可在网页端在线阅读typora的笔记,甚至在线编辑,Typora客户端也能看到在网页端新建和编写的笔记。
RaiDrive可以将某些云盘或者nas设备挂载和映射到本地磁盘,实现流畅的文件读写体验。是的没错,我就是把这两个软件无敌的特点结合到一起,实现了丝滑的多端云笔记。
附
AList安装教程
...
以下资料适用于STM32F103C8T6标准库开发,其他型号可根据实际情况自行修改
STM32内部资源
1. 位带操作
STM32可通过位带操作来实现类似51单片机的位操作,以下是实现位带操作的io_bit.h文件:
12345678910111213141516171819202122232425262728293031#ifndef _IO_BIT_H_#define _IO_BIT_H_ #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr&0xFFFFF)<<5)+(bitnum<<2))#define MEM_ADDR(addr) *((volatile unsigned long *)(addr))#define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum))//F103XXIO 口地址映射#define GPIOA_ODR_Addr (GPIOA_BASE+0x0C) //0x4002001 ...
由于接口调用量大大上升,为了尽可能减少解析量从而降低接口被封的风险,接口已实行收费(安卓APP端和小红书接口免费),对于普通用户来说,1元/月足以满足使用需求
另外由于接口域名没有备案所以微信小程序无法正常使用
2024/07/24 新增抖音用户主页解析
接口特性:
可解析视频/图集
可解析抖音主页
无水印
接口文档
抖音单作品解析
请求地址:https://api.mu-jie.cc/douyin
请求方式:GET
返回格式: JSON
请求参数
参数名称
是否必填
参数值/说明
url
是
需要解析的抖音链接(长短链接皆支持)
key
是
接口密钥,联系qq: 994711504购买(备注: 抖音密钥)
请求示例
GET https://api.mu-jie.cc/douyin?url=https://v.douyin.com/iRNxk23x/&key=***
返回示例
123456789101112131415161718192021{ "code": 200, "msg" ...
接口特性:
含有黄历、农历、节日、星期等信息
支持阴历/阳历反查
免费
接口文档
请求地址:https://api.mu-jie.cc/lunar
请求方式:GET
返回格式: JSON
请求参数
参数名称
是否必填
参数值/说明
date
阴历查询必填
查询的日期;格式:yyyy-mm-dd;(阳历查询时非必填,默认为当日)
type
否
查询类型(solar: 阳历;lunar: 阴历;默认值solar)
leapMonth
否
查询的阴历是否为闰月(true: 是;false: 否;默认值false)
请求示例
当日:GET https://api.mu-jie.cc/lunar
自定义日期:GET https://api.mu-jie.cc/lunar?date=2021-1-1
阴历2023年闰二月初一:GET https://api.mu-jie.cc/lunar?date=2023-2-1&type=lunar&leapMonth=true
返回示例
123456789101112131415161718192021 ...
Popup.js
超轻量网页弹窗Popup.js, 利用<dialog>标签实现常用模态弹窗显示
github仓库: https://github.com/xfmujie/html-popup
在线预览&调试:https://mu-jie.cc/static-pages/PopupJS-example.html
使用示例
引入Popup.js
在线引入
1<script src="https://oss.mu-jie.cc/js/Popup.js"></script>
本地引入(推荐)
1<script src="./Popup.js"></script>
实例化对象
请勿重复执行此句,否则会生成多个不同的弹窗实例!
1var popup = new Popup();
示例1: 提示弹窗
1popup.alert('这是一个提示弹窗');
示例2: 确认弹窗
123456popup.confirm('是否确认?') .then(isE ...
云朵是五彩的,湖泊也是五彩的,还有花草、飞鸟也都是五彩的,就连平时看不到摸不着的空气也变成了五彩的,这是我在那个梦境中的一幅画像。
那种五彩并不是很鲜艳的五彩,而是一种非常舒服的马卡龙。神奇的是,画像中并不是每个个体都是独立的,而是整个世界融为了一体,所以这幅五彩的画像才会如此和谐、美丽、温柔和治愈。
这幅画像完美诠释了我理想中的仙境,梦境中我竭尽全力想要将画像记录下来,但不知道为什么有股力量在阻挡我,尝试了手机和相机都无法将如此美丽的仙境记录下来,最终离我远去了……
梦醒时分,回忆了那个美丽的仙境,片刻后我终于明白,那就是仙境迷人之处啊,那种美丽是脱离具象的美丽,是深存于内心的美丽,是那种模模糊糊如痴如醉的美丽,自然无法被手机和相机所记录。
2023.06.11
接口特性:
支持使用自己邮箱账户发送邮件
省心!使用代理账户发送邮件 邮箱授权配置麻烦?没关系,接口有一个默认的邮箱账户,你只需要告诉接口收件地址即可发送邮件(由于账号限制,代理账号不确保能正常发送,建议使用自己的邮箱账号)
支持发送html内容 通过发送html实现自己想要的消息排版
可设置收信地址 通过设置收信地址,用户回复该邮件时将会自动回复给收信地址
接口文档
2023.11.25 接口更新至V3版本,以下是V3的文档,本接口兼容历史版本
本次新增了收信地址功能,可设置收信地址,用户回复该邮件时将会自动回复给收信地址
请求地址:https://api.mu-jie.cc/email
请求方式:GET, POST
返回格式: JSON
请求参数
请求headers
参数名称
是否必填
参数类型
参数值/说明
Content-Type
POST请求必填
string
application/json
请求参数(GET为query字段,POST为json对象)
参数名称
是否必填
参数类型
参数说明
to
是
string
收 ...
1.从整本诗集中随机
请求地址:https://api.mu-jie.cc/stray-birds
请求方式:GET
返回格式:JSON, TEXT
请求参数
参数名称
是否必填
参数类型
参数说明
type
否
string
返回的类型,可填text或json,默认:json
请求示例
https://api.mu-jie.cc/stray-birds?type=json
返回示例
12345678910JSON:{ "num": 23, "en": "“We, the rustling leaves, have a voice that answers the storms, but who are you so silent?”“I am a mere flower.”", "cn": "“我们,萧萧的树叶,都有声响回答那暴风雨,但你是谁呢,那样地沉默着?”“我不过是一朵花。"}TEXT:“You are the ...
1.获取NTP时间
1.1 包含头文件
123#include <WiFi.h>#include <NTPClient.h>#include <WiFiUdp.h>
1.2 定义对象与选择时间服务器
12WiFiUDP ntpUDP;NTPClient timeClient(ntpUDP, "europe.pool.ntp.org", 8 * 3600,60000);
1.3 setup初始化
12345678Serial.print("wifi connected");WiFi.begin("***", "***"); // ssid , passwordwhile(WiFi.status() != WL_CONNECTED){ Serial.print("."); delay(1000);}timeClient.begin();
1.4 获取时间
123456789timeClient.update();String ti ...