Vscode环境Flutter
安装步骤
123456789101112131415161718设置系统环境java位置,andriodSDK位置,flutter网络位置安装依赖安装vscode设置被墙的网络先看:https://flutterchina.club/setup-windows/ ,把flutter下载下来,环境变量配置下 (注意从git上clone,别信文档下载安装包,不然配置烦死你)如果直接下载zip包解压后运行 flutter doctor 后会报不是一个github项目,不要 git init,虽然能跑,但是有的依赖安装不了,vscode右下角会显示 flutter 0.0.0 unknown继续运行 flutter doctor,网速要好,漫长等下后,它会告诉你缺少什么,由于我用 vscode 开发,所以就不管 Android Studio 和 idea 这两个编辑器了,一般会提示我们找不到 Android SDK去 https://www.jianshu.com/p/420d8469f537 这里下载 Android SDK,但这个包内得东西不完善,需要手动启动包内的 SDK Manager ...
朝圣者
每个人生阶段都有这个阶段的得到、失去,都有这个阶段值得去做的事情和需要的经历,以最为简单的方法度过每个阶段,每寸时光,此时此刻,苦难也好,平淡也行,幸运也罢,不心浮气躁,不执于美好,不渴望幸运,不期待幸福,孤身独往去做一束温暖色彩的阳光,好好睡觉,好好做吃的,好好锻炼,拿出时间和有好感的女孩子聊聊、去分享你的生活,不必执着于得到和失去,给自己留时间出远门看看,时间会慢慢走,它没有尽头,但人有路口和终点。
戒心
1、戒—心中有戒,万事顺应,心自平和2、止—及时止损,舍去执念而免遭更大的纠害3、险—险中困顿,停下,是最大的纠害,鼓起余勇,掘握机锋,适时行险4、困—困无所动,苦于形,顿于势,无解,唯有读书,养心5、丰—雷火丰,外震以动,内火知明,专注才会从容6、蛊—险必为惧所至,若惧大生,则凶险逼近也7、三七为底,二八为顶,行做事,处人,交友,求知
心念
1、在面对任何事时都需要确立自己的目的和需求,并且保有虚心和戒心的勇气。2、爱情很美好,却无法肯定能一直拥有。自己必须要有目的、自发的去乐观努力生活,丰富生活的色彩,充实自己能力,去争取和抓住走进靠近自我 ...
Stm32介绍
Stm32基本概念
ARM公司简介ARM是Advanced RISC Machines的缩写,它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC (精简指令集)处理器。公司的特点是只设计芯片,而不生产。它将技术授权给世界上许多著名的半导体、软件和OEM厂商,并提供服务。
ARM微处理器的特点(1)体积小、低功耗、低成本、高性能;(2)支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;(3)大量使用寄存器,指令执行速度更快;(4)大多数数据操作都在寄存器中完成;(5)寻址方式灵活简单,执行效率高;(6)指令长度固定。
硬件资源处理器(Stm32f103RBT6)
电源STM32F103ZE要求2.0~3.6V的操作电压(VDD),并采用嵌入式的调压器提供内部1.8V的数字电源。当主电源VDD关闭时,实时时钟(RTC)和备用寄存器可以从VBAT供电,官方给出的标准供电。
复位系统复位将复位除了时钟控制器CSR中的复位标志和备用域的寄存器以外的所有寄存器(图1)。当下列事件有一个发生都将产生系 ...
i2c通讯协议
理解并用串口实现i2c协议。
I2C协议简介I2C 是一种串行通信总线,使用多主从架构,最初设计目的为了让主板、嵌入式系统或手机用来连接低速周边设备。多用于小数据量的场合,有传输距离短,任意时刻只能有一个主机等特性。
I2C协议特点I2C是同步传输信号,关于同步和异步这个经常在面试的时候会考到,同步和异步的核心的,我把消息发出去,我要关心你有没有收到,你收到了之后,我才会发下一条消息。异步就是,我发消息给你,我不管你收到消息没有,我都直接发下一条消息。所以SPI和I2C是同步通讯,UART是异步通讯。
I2C协议I2C协议的数据包I2C协议把传输的消息分为两种类型的帧:一个**地址帧[用于master指明消息发往哪个slave]一个或多个数据帧**[在SDA线上传输的数据帧,每一帧是8-bit的数据]。数据在SCL处于低电平时SDA的电平发生改变,SDL电平在SCL变为高电平维持,此时读取SDL上的电平数据。
地址帧(address frame)I2C地址有7+1的,也有9+1的,7+1指的是7位地址加一个读写位位标志bit。9+1 指的是9位地址 ...
计算机基础知识1
计算机原码/反码/补码二进制在计算机中存储的格式。
原码最高位为符号位,以人来理解二进制的方式
原码表示
1原码:0000 0001-1原码:1000 0001
1字节表示范围[1111 1111, 0111 1111] –> [127, -127]
反码正数的反码是本身负数的反码是符号位在原码的基础上,符号位不变,其它位取反
反码表示
1原码:0000 0001 == 1反码:0000 0001-1原码:1000 0001 == -1反码:1111 1110
补码正数的补码就是其本身负数的补码是在反码的基础上+1
1原码:0000 0001 == 1反码:0000 0001 == 1补码:0000 0001-1原码:1000 0001 == -1反码:1111 1110 == -1补码:1111 1111
用补码表示原因将符号位带入计算机的二进制计算
例子:1 - 1 = 0
原码计算
1 - 1 = 1 + (-1) = [00000001]原 + [10000001]原 = [10000010]原 = -2计算正确
反码计算
1 - 1 = ...
RemoteConfig
Ubunt远程开发配置。
Ubuntu安装库
cmd12345678910111213141516# 安装Cmakesudo apt-get install cmake# 安装Gitsudo apt-get install git# 安装32位兼容库sudo apt-get install lib32ncurses5 lib32z1 lib32stdc++6 lsb-core# 安装doxygensudo apt-get install doxygensudo apt-get install graphviz# 安装mansudo apt-get install manpages-de manpages-de-dev manpages-dev glibc-doc manpages-posix-dev manpages-posix
Docker官方
参考官方文档https://docs.docker.com/engine/install/ubuntu/。
卸载旧的
cmd1sudo apt-get remove docker docker-engine ...
Valgrind C/C++内存检测
Valgrind的C/C++内存检测
内存泄漏常见原因
1、memory overrun:写内存越界(越界访问堆、栈和全局变量)2、double free:同一块内存释放两次3、use after free:内存释放后使用4、wild free:释放内存的参数为非法值5、access uninitialized memory:访问未初始化内存6、read invalid memory:读取非法内存,本质上也属于内存越界7、memory leak:内存泄露8、use after return:caller访问一个指针,该指针指向callee的栈内内存9、stack overflow:栈溢出10、thread compete:线程间竞争访问同时访问指针
安装
下载
从官网下载最新的Valgrind安装包。
x64安装
cmd1234567tar -xjvf valgrind-3.16.1.tar.bz2cd valgrind-3.16.1/./autogen.sh./configuremake -j8sudo make install
arm移 ...
数据理论学习(sqlite3)
sqlite3数据库知识
Navicat数据库可视化管理软件安装教程参考
破解软件安装步骤(断网破解)
1.断网2.打开注册码
SQL数据库知识点参考教程
Sqlite3介绍
下载源码(环境Unbunt)
官方下载
SQLite简介
SQLite三种线程模型
单线程模型: 这种模型下,所有互斥锁都被禁用,同一时间只能由一个线程访问。(没有进行互斥,多线程使用不安全)多线程模型: 这种模型下,一个连接在同一时间内只有一个线程使用就是安全的。(每个线程都要有自己的数据库open句柄)串行模型: 开启所有锁,可以随意访问。(多个线程中不加互斥的使用同一个数据库open句柄)
编译时选择线程模式
可以通过定义SQLITE_THREADSAFE宏来指定线程模式。定义宏SQLITE_THREADSAFE=1 指定使用串行模式SQLITE_THREADSAFE=0 使用单线程模式SQLITE_THREADSAFE=2 使用多线程模式如果没有指定,默认为串行模式。
cmd1234567sqlite3_threadsafe()返回值:指定了单线程模 ...
PerformIO
高性能I/O设计模式(Reactor/Proactor)原理
IO多路复用I/O 复用机制需要事件分享器(event demultiplexor)。 事件分享器的作用,即将那些读写事件源分发给各读写事件的处理者,就像送快递的在楼下喊: 谁的什么东西送了, 快来拿吧。开发人员在开始的时候需要在分享器那里注册感兴趣的事件,并提供相应的处理者(event handlers),或者是回调函数; 事件分享器在适当的时候会将请求的事件分发给这些handler或者回调函数。
Reactor例子
1、某个事件申请者宣称它对某个socket上的读事件很感兴趣2、事件监视器等着这个事件的发生3、当事件发生了,事件监视器被唤醒,这负责通知先前那个事件申请者4、事件申请者收到消息,于是去那个socket上读数据了
Proactor例子
1、事件申请者申请一个写操作,事件监视器起异步操作2、事件监视器等着这个读事件的完成(比较下与Reactor的不同)3、事件监视器等待完成事件到来的同时,异步操作开始干活了,它从目标读取数据,放入指定的缓存区中,完成最后通知事件监视器, ...