admin 发布的文章

Nuxt.js
hapi
AVM.JS
egg.js
koa.js
express
sails

Vue+Vant+Typescript
React+Antd+Typescripts
Node+Koa2+mongoose+Typescript

Pandora
前台访问
http://127.0.0.1:10003
后台登录
http://127.0.0.1:10003/dr-admin
登录账号: doramart/123456 doracms/123456

mqtt

snowboy

https://www.w3cschool.cn/electronmanual/
NW.js Electron electron-egg 桌面应用
http://c.biancheng.net/view/7790.html

物联网
git clone -b release/v4.4 --recursive https://github.com/espressif/esp-idf.git
idf.py set-target esp32c3 不输入参数的话,会列出所有可用型号
idf.py menuconfig 配置菜单
idf.py build 编译
idf.py -p COM5 monitor 打开串口5监视器
idf.py -p COM5 flash 向串口5烧录固件
idf.py clean 会清除之前的编译

idf.py -p COM3 flash

https://wiki.luatos.com/chips/esp32c3/index.html
https://dl.espressif.com/dl/package_esp32_jindex.json
2.8266使 用这个http://arduino.esp8266.com/stable/package_ esp8266com. jindex.json

如何用Arduino IDE开发 合宙LuatOS ESP32C3开发板?
https://blog.csdn.net/a1415539404a/article/details/124534428

rtthread
arduino

GPIO(英语:General-purpose input/output),通用型之输入输出的简称
串口驱动(CH343)
ADC即 模拟数字转换器
脉宽调制(PWM,Pulse Width Modulation)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中

烧录:JTAG和SWD(ST-Link)
STLINK和jlink、DAPLink
DAPLINK功能介绍
https://www.eemaker.com/daplink-function.html

BDC 有刷直流电机 换向器/定子
N -》 S
M 电机符号
方向、转速pwm
130 双电机模块 1-6V +5V

无刷直流电机
N -》 S 永磁厂

双极性步进电机
单极性步进电机 中间

永磁式 硬磁材料
反应式 软磁材料
混合式 (nema17/42步进电机 )

a4988

电位器 万能表
1.2电压vref
1.5安培
电阻0.1欧姆

RX 接收(receive)
TX 接收(transmit)

波特率9600 每秒传输9600位
1字节 1/9600秒

ascii

功率=电压*电流

存储介质

IRremote – 红外遥控

https://www.esp32.com/viewforum.php?f=24&sid=1718410287339529bfb026bd5500096a

ESP32C3-CORE开发板文档: http://wiki.luatos.com/chips/esp32c3/board.html
https://doc.openluat.com/wiki/21?wiki_page_id=2776
LCD扩展板资料: https://doc.openluat.com/wiki/21?wiki_page_id=2672

温湿度传感器AHT10资料: https://doc openluat com/wiki/21?wiki_ page_ id=2677
。三轴加速 度陀螺仪MPU6050资料: https://doc. openluat. com/wiki/21?wiki_ page_ id=2706

idf.py set-target esp32c3
https://github.com/espressif/arduino-esp32#readme

板载资源:三轴加速计、三轴陀螺仪、环境光传感器、温湿度传感器、IO 扩展器、可编程 RGB LED 灯、麦克风、音频功放,SD 卡接口等;
拓展接口:包括 5V/3.3V 电源接口、程序下载接口、UART 接口、I2C 接口、SPI 接口、USB 接口、TWAI(兼容 CAN 2.0)接口(可用在工业领域)。

嵌入式软件方向:重点关注C语言、单片机、微机原理、EDA技术,接触一下ARM芯片,体验体验linux操作系统。

郭天祥的教程啊,达尔闻
Linux内核与驱动
除了应用之外,linux相关的还有内核和驱动。这个时候你可能会需要一个linux开发板。通常大家都会给自己的开发板移植linux系统,在这个过程中你就会接触到uboot的移植,linux内核的移植,根文件系统的制作这必须的三大步骤。建议你买本书或视频好好看看。
系统移植好后,就可以进入到驱动的学习。从早期驱动模型到平台设备驱动到设备树的使用,都要过一遍,一般大家都会从字符设备驱动学起,比如先自己写一个led灯的驱动,试试驱动的安装和卸载这些流程,然后写一写复杂点的串口的驱动,移植一些复杂点的,比如网卡驱动、LCD屏的驱动等等。在这个过程中,你会越来越多的接触到内核,跟它有着频繁且亲密的互动。这时候免不了学点内核调试技术了,比如中断子系统、内核休眠与内核定时器,异步通知,内核同步机制等。这里的知识相当复杂,不建议初学者入戏太深。驱动和内核的知识太过庞大,不能急于求成,适合在漫长的岁月里慢慢体会它的巧妙之处。
如果你觉得这些还不够,希望再拓展一些知识面。
那Arm玩过了,可以看看FPGA,像Zynq这种热门的芯片,有机会一定要玩一玩。现在物联网比较热门,你可以让你的设备上个网。了解下行业流行的MQTT通信协议,比如用微信小程序远程控制你的设备,感受物联网的世界。

✔熟练C/C++,熟练使用cortex-M3、A9芯片,具有stm32裸机开发经验,以及SPI、232、485、IIC、CAN总线等协议的使用经验。
✔熟练掌握arm+Linux嵌入式应用开发,驱动开发,TCP/IP网络编程等。
✔熟悉FPGA软件,有zynq开发经验。
✔熟悉Python/golang后端,物联网云端开发;

问题提问
https://docs.espressif.com/projects/espressif-esp-faq/zh_CN/latest/index.html

技术类(偏工程实践):偏软件:Java开发工程师、大数据开发工程师、Python开发工程师、C/C++开发工程师、AI开发工程师(偏人工智能工程化以及MLOps)、WEB开发工程师、移动端开发(安卓、IOS)、运维工程师(有系统运维、业务运维、DBA、桌面运维等方向)偏硬件:嵌入式/单片机开发工程师、射频工程师、技术类(偏理论研究):算法工程师、算法研究员(具体有NLP、语音、视觉等方向)。半技术类:测试工程师(需要懂一些技术)、售前工程师(需要懂一些技术)、解决方案架构师(需要懂一些技术)。非技术类:产品经理(有物联网、AI、电商、B端、C端等方向)、UI设计师(有视觉设计、交互设计等方向)、人力资源(HRBP)、运营与推广(有用户运营、产品运营、游戏运营、新媒体运营、网络推广等)、项目经理。

在线 UUID 生成器
https://www.uuidgenerator.net/

可道云.资源管理器
KodExplorer

画PCB用cadence更好一点吧
简单的板子可以用立创EDA

串口(先发送低位)
什么时候接收数据(起始信号作用)
波特率 每秒发送的位数
累积误差,每次通讯最多1个字节

IIC(先发送高位)

都是高电平 
SCL  
SDA  

主机(发送器)
起始信号
1
1->0
终止信息
1
0->1
接收器(应答 低电平)
一帧9位

SPI 串行外设接口

前端图片压缩上传


<form action="" method="post" enctype="multipart/form-data" id="frm">
    <div class="l-a">
        <div class="l-b" style="text-align: center;display: flex;align-items: center;justify-content: center;">
            <input type="file" name="image" accept="image/*" capture="camera" id="photos"/>
            <img src="" id="ylimg" height="100%" />
        </div>
    </div>
</form>

console.log(curRq);

禁止右键
document.oncontextmenu=function(e){return false;}

window.history.back(-1);

$('.rts5 li').click(function(){

var index=$(this).index();  //获取当前a标签的个数
$(this).addClass('on').siblings().removeClass('on');
$('.tab').hide().eq(index).show();

})

$(function() {
window.__Object_toJSONString = Object.prototype.toJSONString;
delete Object.prototype.toJSONString;
});

1、window.location.href(设置或获取整个 URL 为字符串)

var test = window.location.href;
alert(test);
返回:http://i.cnblogs.com/EditPosts.aspx?opt=1

2、window.location.protocol(设置或获取 URL 的协议部分)

var test = window.location.protocol;
alert(test);
返回:http:

3、window.location.host(设置或获取 URL 的主机部分)

var test = window.location.host;
alert(test);
返回:i.cnblogs.com

4、window.location.port(设置或获取与 URL 关联的端口号码)

var test = window.location.port;
alert(test);
返回:空字符(如果采用默认的80端口(update:即使添加了:80),那么返回值并不是默认的80而是空字符)

5、window.location.pathname(设置或获取与 URL 的路径部分(就是文件地址))
var test = window.location.pathname;
alert(test);
返回:/EditPosts.aspx

6、window.location.search(设置或获取 href 属性中跟在问号后面的部分)

var test = window.location.search;
alert(test);
返回:?opt=1

PS:获得查询(参数)部分,除了给动态语言赋值以外,我们同样可以给静态页面,并使用javascript来获得相信应的参数值。

7、window.location.hash(设置或获取 href 属性中在井号“#”后面的分段)

var test = window.location.hash;
alert(test);
返回:空字符(因为url中没有)

8、js获取url中的参数值

JSON.parse(res.data.trim())

http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000
https://es6.ruanyifeng.com/#docs/intro

//tab 切换
$(".tab span").click(function(){

$(this).addClass("on").siblings().removeClass("on");
$(".info form").eq($(this).index()).show().siblings().hide();

})

//跳转
window.location.href="jb51.jsp?backurl="+window.location.href;

$.ajax({

type: "POST",
dataType: "json",
url: 'zhongbao.php?act=xuanding',
data: {'jie_id':jie_id,'zb_id':zb_id},
success: function (data) {
    alert(data.message);
    if(data.status==200){
        window.location.href="jb51.jsp?backurl="+window.location.href; 
    }
},
error: function(data) {
    alert("error:"+data.responseText);
}

});

//获取url参数
function GetRequest() {

var url = location.search; //获取url中"?"符后的字串
var theRequest = new Object();
if (url.indexOf("?") != -1) {
    var str = url.substr(1);
    strs = str.split("&");
    for(var i = 0; i < strs.length; i ++) {
        theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
    }
}
return theRequest;

}

function setQueStr(url, ref, value) //设置参数值
{

var str = "";
if (url.indexOf('?') != -1)
    str = url.substr(url.indexOf('?') + 1);
else
    return url + "?" + ref + "=" + value;
var returnurl = "";
var setparam = "";
var arr;
var modify = "0";

if (str.indexOf('&') != -1) {
    arr = str.split('&');

    for (i in arr) {
        if (arr[i].split('=')[0] == ref) {
            setparam = value;
            modify = "1";
        }
        else {
            setparam = arr[i].split('=')[1];
        }
        returnurl = returnurl + arr[i].split('=')[0] + "=" + setparam + "&";
    }

    returnurl = returnurl.substr(0, returnurl.length - 1);

    if (modify == "0")
        if (returnurl == str)
            returnurl = returnurl + "&" + ref + "=" + value;
}
else {
    if (str.indexOf('=') != -1) {
        arr = str.split('=');

        if (arr[0] == ref) {
            setparam = value;
            modify = "1";
        }
        else {
            setparam = arr[1];
        }
        returnurl = arr[0] + "=" + setparam;
        if (modify == "0")
            if (returnurl == str)
                returnurl = returnurl + "&" + ref + "=" + value;
    }
    else
        returnurl = ref + "=" + value;
}
return url.substr(0, url.indexOf('?')) + "?" + returnurl;

}

function delQueStr(url, ref) //删除参数值
{

var str = "";

if (url.indexOf('?') != -1)
    str = url.substr(url.indexOf('?') + 1);
else
    return url;
var arr = "";
var returnurl = "";
var setparam = "";
if (str.indexOf('&') != -1) {
    arr = str.split('&');
    for (i in arr) {
        if (arr[i].split('=')[0] != ref) {
            returnurl = returnurl + arr[i].split('=')[0] + "=" + arr[i].split('=')[1] + "&";
        }
    }
    return url.substr(0, url.indexOf('?')) + "?" + returnurl.substr(0, returnurl.length - 1);
}
else {
    arr = str.split('=');
    if (arr[0] == ref)
        return url.substr(0, url.indexOf('?'));
    else
        return url;
}

}

switch(n)
{

case 1:
  执行代码块 1
  break;
case 2:
  执行代码块 2
  break;
default:
n 与 case 1 和 case 2 不同时执行的代码

}

// 点击获取 定时访问,取消定时
$(function(){

var myVar = null;
var myCle = null;
//每个3秒钟检测一次
function setTimeing() {
    clearInterval(myVar);//清除之前的检测
    myVar = setInterval(function(){checkLoginStatus()}, 2000);
    clearTimeout(myCle);//清除之前的计划
    myCle = setTimeout(function () {clearInterval(myVar);},1000*30);//300秒后清除登陆检测
}
//检测微信登陆状态
function checkLoginStatus() {
    $.ajax({
        type: 'POST',
        url: '/wei/check-login.php',
        success: function(data){
            if (data == true) {
                window.location.reload(true);
            }
        }
    });
}
//加载微信登录信息
function getWeixinLoginPic() {
    $.ajax({
        type: 'POST',
        dataType:'json',
        url: '/wei/weixin-pic.php',
        success: function(data){
            $('.login-wexin img').attr('src',data.src);
            setTimeing();
        }
    });
}

$('body').on('click', '.login-weixin',function(event){
        getWeixinLoginPic();
        event.stopPropagation();
});
$('.close-btn').click(function(){
    $('.aj-popbox').hide(0,function(){
        $('body').css('overflow','auto');
    });
})

});

<input type="text" value="{$share_url}" id="fzhi"

   style="-webkit-user-select: text !important;position:absolute;left: -10000px;z-index:1000"
   onclick="oCopy(this)" readonly>


{$share_url}

实现屏幕录像
var body = document.body;
body.addEventListener("click",async function(){

var stream = await navigator.mediaDevices.getDisplayMedia({video: true});
var mime = MediaRecorder.isTypeSupported("video/webm; codecs=vp9") ?"video/webm; codecs=vp9" :"video/webm";
 var mediaRecorder = new MediaRecorder(stream, {mimeType: mime});         //录制
  var chunks = [];
  mediaRecorder.addEventListener('dataavailable', function(e) {
    chunks.push(e.data)
})         //停止
mediaRecorder.addEventListener('stop', function(){            var blob = new Blob(chunks, {type: chunks[0].type});
    var url = URL.createObjectURL(blob);
    var a = document.createElement('a');
    a.href = url;
    a.download = 'video.webm';
    a.click();
})        //手动启动
mediaRecorder.start() 

});

X 系列(轻薄便携型)
X1 Carbon:2012 年至今,每年更新一代,是最轻薄的 ThinkPad 之一。
X1 Yoga:2016 年至今,可翻转二合一设计。
X13:2020 年至今,轻薄商务笔记本。
X200:2008 年,经典轻薄商务笔记本。
X220:2011 年,X200 的继任者。
X230:2012 年,X220 的继任者。
X240:2013 年,X230 的继任者。
X250:2014 年,X240 的继任者。
X260:2015 年,X250 的继任者。 支持
X270:2016 年,X260 的继任者。
X280:2017 年,X270 的继任者。
X290:2018 年,X280 的继任者。
X390:2019 年,X290 的继任者。
X395:2020 年,X390 的继任者。
T 系列(高性能商务型)
T14:2020 年至今,每年更新一代。
T15:2020 年至今,15 英寸高性能商务笔记本。
T400:2008 年,经典高性能商务笔记本。
T410:2010 年,T400 的继任者。
T420:2011 年,T410 的继任者。
T430:2012 年,T420 的继任者。
T440:2013 年,T430 的继任者。 支持
T450:2014 年,T440 的继任者。
T460:2015 年,T450 的继任者。
T470:2016 年,T460 的继任者。
T480:2018 年,T470 的继任者。
T490:2019 年,T480 的继任者。
T495:2020 年,T490 的继任者。
P 系列(移动工作站)
P1:2017 年至今,每年更新一代,高性能移动工作站。
P15:2020 年至今,15 英寸高性能移动工作站。
P17:2020 年至今,17 英寸高性能移动工作站。
P50:2015 年,高性能移动工作站。
P51:2016 年,P50 的继任者。
P52:2018 年,P51 的继任者。
P53:2019 年,P52 的继任者。
P54:2021 年,P53 的继任者。
S 系列(轻薄时尚型)
S1:2011 年,轻薄时尚笔记本。
S2:2013 年,S1 的继任者。
S3:2014 年,S2 的继任者。
S4:2015 年,S3 的继任者。
S5:2016 年,S4 的继任者。
S1 Yoga:2016 年,可翻转二合一设计。
S2 7th Gen:2017 年,S2 的第七代产品。
S2 8th Gen:2018 年,S2 7th Gen 的继任者。
S2 9th Gen:2019 年,S2 8th Gen 的继任者。
S2 11th Gen:2020 年,S2 9th Gen 的继任者。
E 系列(经济型)
E10:2009 年,经济型商务笔记本。
E12:2011 年,E10 的继任者。
E13:2012 年,E12 的继任者。
E14:2019 年至今,每年更新一代。
E15:2019 年至今,15 英寸经济型商务笔记本。
L 系列(企业级)
L40:2008 年,企业级商务笔记本。
L410:2010 年,L40 的继任者。
L420:2011 年,L410 的继任者。
L430:2012 年,L420 的继任者。
L440:2013 年,L430 的继任者。
L450:2014 年,L440 的继任者。
L460:2015 年,L450 的继任者。
L470:2016 年,L460 的继任者。
L480:2018 年,L470 的继任者。
L490:2019 年,L480 的继任者。
其他系列
Z 系列:早期的高端商务笔记本,现已停产。
R 系列:早期的经济型商务笔记本,现已停产。
W 系列:早期的移动工作站,现已停产。

E 系列(经济型)
L 系列(企业级)
S 系列(轻薄时尚型)
T 系列(高性能商务型)
X 系列(轻薄便携型)
P 系列(移动工作站)
X1 系列(旗舰级)

ai
https://www.futurepedia.io/
https://www.futuretools.io/
https://allthingsai.com/
腾讯

arc实验室
https://effidit.qq.com/ effidif创作助手
智影
腾讯交互翻译

微软

face tools 视频表情替换
vall-e 克隆声音
xpression camera
designer

ppt
beautiful.ai
powtoom
chatBCG

漫画
tuostudy

自学
oeasy
coursera

绘画工具ai
midjourney

阿里出品
https://chartcube.alipay.com/ 报告图表
https://www.iconfont.cn/ 矢量图标
https://chuangyi.taobao.com/pages/aiCopy 悉语
阿里妈妈ai智能文案
顽兔抠图
阿里研究院

无名音乐
https://adzhp.xyz/ 爱达杂货铺
无名图书

英语学习
jasper ai
丹尼每日听力
word and phrae
libgen.me

华文慕课
学堂在线
夜曲编程
文泉书局
爱校对
九歌 古诗词等

wikihow
虫部落
磁力狗
盘多多
coub

软仓
you git
乐趣音乐
记灵工具
历史消息
bigmp4
反向词典
素材巷
3d hands
文件批量重命名
简搜题
ad guider
33搜桢
色采
salary fly

百度
ai造字
ai造梦
ai歌词生成
学术灵感生成
文心一格

大家论坛
学吧导航
第一ppt
书享家
科塔学术
199it导航
my free mp3

app
央视频
学习强国
云听
国家数字图书馆

我要自学网
蓝桥云课
中国大学mooc
大学资源网
网易公开课

美物清单
飞蚂蚁
松鼠记账
52周存钱法

多多进宝

微信小程序
手持弹幕
薄荷食物库
车来了
wifi一键连
企鹅医检
土味情话
拉了吗

软件
数据恢复
picku抠图
坏坏兔
小黄人影视