孙肖宁 发布的文章

74HC573锁存器的介绍

锁存器是一种对脉冲电平敏感的存储单元电路,它们可以在特定输入脉冲电平作用下改变状态。锁存,就是把信号暂存以维持某种电平状态。锁存器的最主要作用是缓存,其次完成高速的控制器与慢速的外设的不同步问题,再其次是解决驱动的问题,最后是解决一个 I/O 口既能输出也能输入的问题。锁存器是利用电平控制数据的输入,它包括不带使能控制的锁存器和带使能控制的锁存器。
74HC573引脚图.png

74HC573锁存器的使用

74HC573真值表.png
由真值表可以看出,当OE为高电平时,无论LE与D端为何种电平状态,其输出都为高阻态,此时该芯片处于不可控状态。当OE为低电平时,我们再看LE,当LE为H时,D与Q同时为H或L;而当LE为L时,无论D为何种电平状态,Q都保持.上一次的数据状态。这也就是说,当LE为高电平时,Q端数据状态紧随D端数据状态变化;而当LE为低电平时,Q端数据将保持住LE端变化为低电平之前Q端的数据状态。因此我们将锁存器的LE端与单片机的某一引脚相连,再将锁存器的数据输入端与单片机的某组I/O 口相连,便可通过控制锁存器的锁存端与锁存器的数据输入端的数据状态来改变锁存器的数据输出端的数据状态。

注:真值表中字母代码含义如下:H高电平;L低电平;X任意电平;Z高组态,也就是既不是高电平也不是低电平,它的电平状态由与它相连的其他电气状态决定;Q0上次的电平状态。

我们都知道在我们进行浮点运算的时候经常遇到的一个麻烦事就是精度问题,在js里面,0.1+0.2等于0.30000000000000004。为了解决这种精度丢失的问题我们可以先给每个小数乘以100转为正数,在最后除以100还原为浮点数这样也行。不过我们也可以借助big.js来解决任意精度的大十进制算术运算。

首先安装big.js

  • 可以直接导入

    <script src='https://cdn.jsdelivr.net/npm/big.js@6.0.0/big.min.js'></script>
  • 也可以通过npm安装

    npm install big.js
    import Big from 'big.js';
  • 也可以下载后导入

    https://github.com/MikeMcl/big.js

计算

  • 加法plus

    0.1 + 0.2                                     // 0.30000000000000004
    const x = new Big (0.1);
    const y = x.plus (0.2);                      // 0.3
  • 减法minus

    0.3 - 0.1                                     // 0.19999999999999998   
    const x = new Big (0.3);
    const y = x.minus (0.1)                      // 0.2
  • 乘法times

    0.6 * 3                    // 1.7999999999999998
    x = new Big(0.6)
    y = x.times(3)             // '1.8'
  • 除法div

    x = new Big(0.9)
    y = new Big(0.1)
    x.div(y)                   // 9

    其他用法

  • 数字处理

    x = new Big(255.5)
    x.toExponential(5)                     // "2.55500e+2"
    x.toFixed(5)                           // "255.50000"
    x.toPrecision(5)                       // "255.50"
  • 判断是否相等

    Big(-0).eq(0)              // true  ( -0 === 0 )

苹果电脑如何同时登录多个微信或QQ呢,首先说一下都是可以的,小编之前也是觉得QQ肯定可以,微信吗够呛,因为用过windows的小伙伴都知道,QQ你点击多次,就可以打开多个QQ,而且可以实现多个账号的登录,但是微信就不行,微信你点击多次打开的还是那个,如果实现多个微信登录的话,就得借助第三方的软件,挺麻烦的,不过今天小编发现,在苹果电脑上,QQ和微信都可以实现多开,也就是可以同时登陆多个。

苹果电脑(mac)同时登录多个微信

  • 首先我们说下微信如何同时登陆多个,相对QQ来说微信稍微麻烦一丢丢。我们首先需要打开终端就是下面这个应用,苹果电脑自带的,绝对都有,好好找下就能找到。实在是找不到的话就用搜索同时按“⌘”和“空格”这两个按钮,输入终端,也能打开。
    终端.png
  • 然后输入

    open -n /Applications/WeChat.app/Contents/MacOS/WeChat
  • 然后就打开了第二个微信登录页面了,你只要点击切换账号,扫码登录就可以了,这时候你已经登录两个微信了。但是也会打开另外一个终端,这个终端不能关闭哦,除非你退出了这个微信,否则只要你关闭了这个终端就会退出第二个微信了。

苹果电脑(mac)同时登录多个QQ

QQ就比较简单了,打开QQ后,直接按快捷键command+N就可弹出新的登陆界面,按多少次,出来多少个。

前言

  • 习惯是值我们下意识作出的举动。
  • 集网络连接、海量数据、超快网速三者于一身的技术正在使这个世界上瘾成性。
  • 生产习惯养成类产品可以让商家稳占竞争优势。
  • 上瘾模型将用户面临的问题与企业提供的应对策略衔接在一起,二者频繁互动,促成用户养成习惯。
  • 上瘾模型包括四个阶段:触发,行动,多变的酬赏,投入。

小编今天在使用Vue播放视频的时候,发现视频的格式是flv的,但是video标签是不支持flv格式的,我们只有借助第三方的工具库了。感谢bilibili团队制作的flv.js工具库。
我们首先安装下

npm install --save flv.js

然后我们在组件里面引入

import flvjs from 'flv.js'

我们再在视图里面创建一个id为videoElement的video标签。

<video id="videoElement" controls autoplay muted style="width: 4.5rem; height: 3rem;" />

在mounted中使用flvjs

mounted() {
    if (flvjs.isSupported()) {
        let videoElement = document.getElementById('videoElement');
        let flvPlayer = flvjs.createPlayer({
            type: 'flv',
            isLive: true,
            hasAudio: false,
            url: 'https://XXXXXX.flv'
        });
        console.log(flvPlayer, 'flv对象')
        flvPlayer.attachMediaElement(videoElement);
        flvPlayer.load();
        flvPlayer.play();
    }
},

注意:

  1. flv.js工具库仅支持HTTPFLV协议的流,如果使用RTMP协议的流则依然需要使用flash插件。
  2. 如果没有包含音频流,hasAudio要设置为false。
  3. 如果要自动播放的话,由于浏览器禁用音频的自动播放,所以我们要在video标签上设置muted属性。
  4. 官方文档:https://github.com/bilibili/flv.js

在Python3.3以及版本之前我们创建虚拟环境的时候都是使用的virtualenv,平时使用起来也比较方便,不过最近小编发现virtualenv已经装不上了。原来在Python3.3以上的版本中可以使用venv模块原生支持虚拟环境,也就是说原生的venv模块可以代替Python之前的virtualenv
venv模块和之前的virtualenv创建的虚拟环境,都可以提供与系统Python的隔离。每一个虚拟环境都有其自己的Python二进制(允许有不同的Python版本创作环境),并且可以拥有自己独立的一套Python包,对于项目的管理十分方便。但是需要注意的是,在Python3.3中使用venv命令创建的环境不包含pip,你需要进行手动安装,不过呢在Python3.4中改进了这一个缺陷。

使用方法:
创建虚拟环境

python3 -m venv [虚拟环境的名字]

mac启动虚拟环境

source [虚拟环境的名字]/bin/activate

windows启动虚拟环境

[虚拟环境的名字]\Scripts\activate.bat

退出虚拟环境

deactivate

如果是直接使用pip install M2Crypto安装的话就会出现

SWIG/_m2crypto.i:62: Error: Unable to find 'openssl/opensslv.h'
  SWIG/_m2crypto.i:68: Error: Unable to find 'openssl/safestack.h'
  SWIG/_evp.i:12: Error: Unable to find 'openssl/opensslconf.h'
  SWIG/_rc4.i:5: Error: Unable to find 'openssl/opensslconf.h'
  SWIG/_ec.i:7: Error: Unable to find 'openssl/opensslconf.h'
  error: command 'swig' failed with exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for m2crypto

这样的错误(没写完整哈),这是由于M2Crypto有两个依赖,openssl和swig,在Mac上需要首先安装这两个包,才能安装M2Crypto。
我们可以通过brew来安装这两个包,如果你的电脑没有brew的话,你就得先安装brew,小编在[post cid="773" /]这篇文章中介绍过怎么安装。下面我们来安装openssl和swig。

brew install openssl
brew install swig
# 有时候需要手动链接swig
# brew unlink swig && brew link swig

这时候就可以安装M2Crypto,不过还是有时候会报错,我们需要指定下地址

env LDFLAGS="-L$(brew --prefix openssl)/lib" CFLAGS="-I$(brew --prefix openssl)/include" SWIG_FEATURES="-cpperraswarn -includeall -I$(brew --prefix openssl)/include"

然后我们就可以安装了M2Crypto

pip install M2Crypto

macOS升级至macOS Big Sur 后,我们使用brew安装或者更新软件的时候会出现Error: Your CLT does not support macOS 11.2.的错误,我们只需要重新安装下xcode-select就可以解决了。
解决办法:
输入以下命令

sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install 

这时候就会提示安装 xcode-select,在弹出框里我们点击安装,然后就弹出协议,我们再点击同意。然后就等待安装完毕就可以了。

小编发现最近在使用git diff这个命令的时候,有些代码明明没有修改,却标识修改过,末尾加上了个^M。很奇怪啊,我们先说下^M的由来:
这个是由于 Windows 和 Unix 下的换行符不一致导致的,Windows 下,换行符是 \r\n,在 Unix 下换行符是 \n。如果我们用把一个文件的换行符换成 Windows 的换行符就会出现这样的问题,实际上 ^M 就是 Windows 下的换行符中的 \r 部分。因为 Unix 下的换行符是 \n,所以当一个用 Windows 下的换行符的文件放在 Unix 下的时候,单行的最后一个字符就变成了 \r\r 在 ASCII 码中是 0xD,而 0xD 在 VIM 和 cat -v 则刚好被显示为 ^M,这次明白了吧。

解决办法:
我们可以git diff的时候忽略换行符的差异:

git config --global core.whitespace cr-at-eol