temp

树莓派4 PWM控制风扇转速

怎甘沉沦 提交于 2020-01-13 03:17:40
5V风扇是笔记本拆下来的,接了个ss8550 NPN三极管。 接线: pi 5V --- 风扇5V 风扇GND --- 三接管C极 pi BCM 18 --- 三极管B极 pi GND --- 三极管E极 效果图: 代码: #!/usr/bin/python3 # encoding: utf-8 import RPi.GPIO import time RPi.GPIO.setwarnings(False) RPi.GPIO.setmode(RPi.GPIO.BCM) RPi.GPIO.setup(18, RPi.GPIO.OUT) pwm = RPi.GPIO.PWM(18, 75) duty = 0 lastDuty = 0 try: while True: tmpFile = open('/sys/class/thermal/thermal_zone0/temp') temp = int(tmpFile.read()) tmpFile.close() duty = 100; if temp >= 34500 : duty = 60 if lastDuty >= 36500 : duty = 50 if temp >= 38500: duty = 40 if temp >= 40500: duty = 30 if temp >= 42500: duty = 20 if temp

凯撒加密以及维吉尼亚加密,解密,py代码

随声附和 提交于 2020-01-13 00:23:37
凯撒加密 凯撒加密法,或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。 通俗一点,就是把字母按照一个key(0~25)向前移动,解密的话反过来就行; 在线加密:https://www.qqxiuzi.cn/bianma/kaisamima.php 代码来源于:https://blog.csdn.net/by4_luminous/article/details/53343780 py脚本加密解密: def change ( c , i ) : c = c . lower ( ) num = ord ( c ) if num >= 97 and num <= 122 : num = 97 + ( ( num - 97 ) + i ) % 26 return chr ( num ) def kaisa_jiami ( string , i ) : string_new = '' for s in string : string_new += change ( s , i ) print ( string_new ) return string_new def kaisa_jiemi ( string ) : for i in range ( 25 ) :

PAT A 1052 Linked List Sorting (25分)

北战南征 提交于 2020-01-12 15:12:17
一、思路 定义结构体node{addr, data, next}; 为避免出现给定结点集合中,有非链表成员的情况,先将结点按下标存储,再按照指针遍历,同时保存链表中的结点,并对结点排序,输出; 二、代码 # include <cstdio> # include <vector> # include <algorithm> using namespace std ; typedef struct { int addr , data , next ; } node ; int main ( ) { vector < node > l ( 100000 ) , ans ; int N , head ; node temp ; scanf ( "%d %d" , & N , & head ) ; for ( int i = 0 , addr ; i < N ; ++ i ) { scanf ( "%d %d %d" , & temp . addr , & temp . data , & temp . next ) ; l [ temp . addr ] = temp ; } for ( int addr = head ; addr != - 1 ; addr = l [ addr ] . next ) ans . push_back ( l [ addr ] ) ; sort ( ans

前缀、中缀、后缀表达式以及简单计算器的C++实现

两盒软妹~` 提交于 2020-01-12 13:46:24
前缀表达式(波兰表达式)、中缀表达式、后缀表达式(逆波兰表达式) 介绍   三种表达式都是 四则运算的表达方式,用以四则运算表达式求值,即数学表达式的求解。 前缀表达式 前缀表达式是一种没有括号的算术表达式,与中缀表达式不同的是,其将运算符写在前面,操作数写在后面。为纪念其发明者波兰数学家Jan Lukasiewicz,前缀表达式也称为“波兰式”。例如,- 1 + 2 3,它等价于1-(2+3)。 中缀表达式 中缀表达式就是一般的算数表达式,操作符以中缀形式出现在操作数之间。 后缀表达式 后缀表达式指的是不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则)。 中缀表达式转前缀表达式   例如:对于中缀表达式 (3+4)×5-6 ,其前缀表达式为 - × + 3 4 5 6 。前后缀表达式与中缀之间的转换关系,不在此赘述,在 Seraphjin 的博客中,通过二叉树的方式,很好地解释了这一内容。 除了该博客中所说的二叉树法,还可以通过栈方法,来实现二者的转换,具体步骤如下: 初始化两个栈:运算符栈S1和储存中间结果的栈S2; 从右至左扫描中缀表达式; 遇到操作数时,将其压入S2; 遇到运算符时,比较其与S1栈顶运算符的优先级: 如果S1为空,或栈顶运算符为右括号“)”,则直接将此运算符入栈; 否则

浏览器批量打印条码纸

杀马特。学长 韩版系。学妹 提交于 2020-01-11 02:52:25
前两天遇到了一个需要浏览器打印条码的需求,因为目前的管理系统是基于B/S的,在生产管理员用户那里需要将订单转为生产指令单,与此同时需要将订单中的产品批量打印出来条码纸来,以便生产完毕后贴到产品上面方便扫码入库和标注产品。 先从打印机开始 提供给我的是一台科诚打印机G500,实际使用效果还不错。目前很多的条码打印机厂商提供了可视化的条码打印软件,可以直接打印出来条码,还可以生成相应的EZPL指令,方便开发者使用指令来开发条码打印,当然还提供了基础的二次开发包和文档。 下图是科诚官网下载的GO-LABLE打印设计软件。 使用非常简单,摆弄一会儿就明白怎么玩了,这款打印软件提供了基础的条码图形,文字和图像图形工具,拖动到设计界面即可,这里需要注意的是,在使用字体的时候有两种可以选择,一种是打印机内建字体,一种是windows字体,如果你条码上的文字不需要改变了,那就建议使用windows字体,这样打印出来的文字清晰度很高,如果文字需要动态改变,比如我遇到的这个需求,那么就必须使用内建字体了,双击条码上的文字,会出现文字设定: 这里我选择了亚洲字体,使用前需要先下载亚洲字体到打印机,其实就是把本机的中文字体下载到打印机。其他的文字来源我试过了,但是只有这个选项可以打印出来中文而不出现乱码。 设计完成后,我们可以输出指令到右面的命令视窗,多观察一下

常见的排序算法整理

隐身守侯 提交于 2020-01-10 20:35:50
插入排序:稳定 时间复杂度:最坏情况 O(n^2) 最好 O(n) 平均 O(n^2) 空间复杂度:O(1) 1 public void insertSort(int[] arr){ 2 int n = arr.length; 3 for(int i =1;i<n;i++) 4 { 5 int value = arr[i]; 6 int j; 7 for(j= i; j>0 && value < arr[j-1];j--) 8 { 9 arr[j] = arr[j-1]; 10 } 11 arr[j] = value; 12 } 13 } 冒泡排序:稳定 时间复杂度:最坏情况 O(n^2) 最好 O(n) 平均 O(n^2) 空间复杂度:O(1) 1 public void bubbleSort(int[] arr){ 2 int n = arr.length; 3 for (int i=0;i<n;i++){ 4 for (int j=0;j<n-i-1;j++){ 5 if(arr[j]>arr[j+1]){ 6 int t = arr[j+1]; 7 arr[j+1] = arr[j]; 8 arr[j] = t; 9 } 10 } 11 } 12 } 希尔排序:不稳定 时间复杂度:最坏情况 O(n^2) 最好 O(n) 平均 O(n^1.3) 空间复杂度:O(1)

2. 两数相加

僤鯓⒐⒋嵵緔 提交于 2020-01-10 19:31:03
2. 两数相加 https://leetcode-cn.com/problems/add-two-numbers/ 难度 完成日期 耗时 提交次数 中等 2020-1-10 3小时 8 问题描述 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 解题思路 按照链表次序依次相加 ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode *ans = new ListNode(0); ListNode *head = ans; bool add = false; while (l1 != nullptr && l2 != nullptr) { int val = l1->val + l2->val; if (add) { val++; } if (val > 9) { val = val - 10; add = true; } else { add = false; }

nginx安装

笑着哭i 提交于 2020-01-10 07:34:09
一. Nginx在Linux下的安装 重新准备一台虚拟机作为服务器 oneinstack 1 环境准备 (1)需要安装 gcc 的环境【此步省略】 yum install gcc-c++ 2 第三方的开发包。【此步省略】 PCRE PCRE(Perl Compatible Regular Expressions)是一个 Perl 库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库。 yum install -y pcre pcre-devel 注:pcre-devel 是使用 pcre 开发的一个二次开发库。nginx 也需要此库。 n zlib zlib 库提供了很多种压缩和解压缩的方式,nginx 使用 zlib 对 http 包的内容进行 gzip,所以需要在 linux 上安装 zlib 库。 yum install -y zlib zlib-devel OpenSSL OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https(即在 ssl 协议上传输 http),所以需要在 linux安装 openssl 库。 yum

undo redo

岁酱吖の 提交于 2020-01-09 12:32:39
利用这个类可以保存方法的的实参,函数以后备用。在实例生成时会产生一个序列号用来标识是否来自undo或者redo的调用,从而避免存入缓存栈。 在浏览器中用调试工具看调用结果 View Code 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 6 <title>javascript</title> 7 </head> 8 9 <body> 10 <input type="button" value=" - " id="a" /> <input type="button" value=" + " id="b" /> 11 12 <input type="button" value=" - " id="c" /> <input type="button" value=" + " id="d" /> 13 <script type="text

数据结构与算法(2)顺序表和链表

旧时模样 提交于 2020-01-09 01:12:41
无需表List的操作如下 add(item):添加一个数据项到列表中,假设item原先不存在于列表中 remove(item):从列表中移除item,列表被修改,item原先应存放在表中 search(item):在列表中查找item,返回bool类型值 isEmpy() 返回列表是否为空 size():返回列表中包含多少数据项 append(item):添加一个数据项到表末尾,假设item原先不存在于列表中 index(item):返回数据项在表中的位置 insert(pos, item):将数据插入到位置pos,假设item原先不存在于列表中,同时原列表具有足够多个数据项,能让item占据位置pos pop():从列表末尾移除数项,假设原列表至少有一个数据项 pop(pos):移除位置为pos的数据项,假设原列表存在位置pos 采用链表实现无序表 数据项存放位置并没有规则,但是如果在数据项之间建立连接指向,就可保持其前后相对位置 第一个和最后一个数据项需要显式表现出来,一个是队首,,一个是队尾,后面再无数据了 链表实现 节点Node: 每个节点至少要包含两个信息:数据项本身,以及指向下一个节点的引用信息。 注意next为None的意义是没有下一个节点了,这点很重要 class Node: def __init__(self,initdata): self.data =