在Glitch上部署你的Web应用
前言你可能听说过Serverless这个名称,Serverless简单来说就是用户无需关注服务器运维,配置,安全等部分,只需要关注应用本身。本文提到的Glitch就是这样的一个Serverless应用平台
目前国内国外也有很多这样的平台,下面是我知道的一部分
Heroku (支持Docker,老牌Serverless平台,免费提供少量数据库空间,未绑定银行卡每月应用时间550小时,绑定后增加450小时)
cloudflare Workers (Cloudfalare的新产品,似乎仅支持js)
腾讯云函数 (国内平台,还在内测,商用后不知道会不会还有免费套餐)
阿里云Serverless (没用过,好像没有免费套餐)
LeanCloud (每天有一定的休眠时间,有少量免费资源)
GCP (谷歌云平台,老牌Serverless,国内无法访问)
Glitch (免费每个月1000小时,无需银行卡,无数据库,原生支持js,其他编程语言也有办法支持)
本文使用的Glitch平台虽然刚成立不久,但是免费1000小时的时间可以保证你的应用持续在线,因为他的使用方式比较特殊,就写一篇文章来记录一 ...
打造内网低延迟直播系统
背景因工作室的培训项目需要一个类似学校机房的内网直播系统,在我查阅了网络上的现成方案后发现了以下问题:
娱乐直播平台:需繁杂的实名认证,直播延迟过高,无法控制观看范围
腾讯会议,钉钉等直播:收费,直播清晰度较低,延迟较高
于是尝试自行搭建直播系统,目标
在局域网内流畅(20fps),低延迟(1s以内),高清晰度(1080p)
承载100人观看
便于自定义推流内容,例如某个程序,水印等
安全控制,杜绝未经授权的推流
录制流,便于后期观看
在查阅资料后找到了以下常用协议:
rtmp:娱乐直播平台常见直播协议,便于分发,但延迟较高
rtsp:网络摄像机常见直播协议,基于udp或tcp,延迟较低
HLS:常用于播放各种节目,可回放,延迟很高
webrtc:低延迟的直播协议,但是资料很少,配套推流设施不完善
本文使用rtsp方案
服务器的搭建在查找了GitHub上的各种开源rtsp服务端之后,本人发现大部分服务器方案都比较简单,好在我们的使用情景不需要很多复杂功能,于是使用rtsp-simple-server
配置该软件使用go编写,可以方便地在Linux和Windows平台上运行
...
快速在Windows搭建tf和pytorch深度学习环境
不想看文章,看这里截至2020年十月,该命令没有问题
123conda install pytorch torchvision cudatoolkit=10.1 -c pytorchconda install -c anaconda cudnnpip install tensorflow
前言目前网上的方法都比较复杂,在看了pytorch和tensorflow的安装文档并踩了很多的坑之后,本人找到了一种全新的方法快速安装环境
准备
在开始之前,你应该先安装好anconda环境
查看版本首先到官网查看pytorch的版本
再到tf官网查看版本要求
这里有很多可以修改的选项,前四项按照截图选择,最后一项cuda版本需要注意。
我们需要同时安装两个环境,因此目前只能选择cuda10.1版本
安装此时请复制pytorch(cuda10.1)的安装命令并完成安装。
1conda install pytorch torchvision cudatoolkit=10.1 -c pytorch
接下来是配置tf,输入以下命令可以安装cudnn
1conda install ...
数据结构和算法学习记录-做题记录1
缺失数字给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。
12345678910示例 1:输入: [3,0,1]输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8
这道题很简单,但是解答方法很灵活
题目
123456789101112131415161718192021class Solution {public: int missingNumber(vector<int>& nums) { // 利用下标找出缺失的数字,需要两次遍历 vector<char> list(nums.size()+1,0); for (int i = 0; i < nums.size(); i++) { list[nums[i]] = 1; } for (auto i = 0 ; i < list.size(); i++) { if (list[i] == 0) { retu ...
数据结构和算法学习记录-bfs
二叉树的层序遍历给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
题目地址
这题其实并不难,但是我第一次提交的代码只超过了20%的人
123456789101112131415161718192021222324252627282930313233343536class Solution{public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> result; queue<TreeNode*> nodeQueue; // 这个队列存放了每一层的节点,按照从左到右的顺序 TreeNode* node; if (!root) return result; nodeQueue.push(root); while (!nodeQueue.empty()) // 从这里开始取出每一层 ...
数据结构和算法学习记录-dfs
N叉树的最大深度给定一个 N 叉树,找到其最大深度。
最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。
输入[1,null,3,2,4,null,5,6]
输出3
地址
这道题很简单
123456789101112131415161718192021222324252627class Solution { public: int depth = 0; int maxDepth(Node* root) { loop(root,1); return depth; } inline void loop(Node* root, int depth) { if (root == nullptr) { return; } if (root->children.size() != 0) ...
数据结构和算法学习记录-二叉树
线索二叉树的遍历和线索化123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100#include <stdio.h>#include <stdlib.h>enum{ Link, // 正常指向下一个节点 Thread // 指向线索节点} Tag;typedef struct TNode{ char data; struct TNode *lchild; struct TNode *rchild; unsigned char ltag; unsigned char rtag;} TNode;TNode *pre = NULL;TNode *createNo ...
数据结构和算法学习记录-链表
拉丁方阵问题1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253#include <stdio.h>#include <stdlib.h>typedef struct Node{ int data; struct Node *next;} Node;Node *createLinkedList(int length){ Node *last, *this, *head; head = malloc(sizeof(Node)); head->data = 0; head->next = NULL; last = head; for (int i = 1; i < length; i++) { this = malloc(sizeof(Node)); this->next = NUL ...
树莓派的GPIO,蓝牙,摄像头等基本配置
访问树莓派打开ssh服务将SD卡连接到电脑上并打开,直接新建“SSH”文件(无后缀)即可
配置热点先把树莓派连接至你的服务器,按照下面的方式配置热点以便于在任何时候连接到树莓派进行调试
安装软件输入以下命令来完成创建ap所需要的软件的安装
12345sudo apt install hostapd gitsudo apt install dnsmasqgit clone https://github.com/oblique/create_apcd create_apmake install
编辑/etc/create_ap.conf,在里面修改你的ap名称和密码,以及其他配置
使用以下命令启动ap并设置为开机启动
12sudo systemctl start create_apsudo systemctl enable create_ap
连接到ap,使用上面配置文件中的GATEWAY地址通过ssh连接到树莓派
GPIO的配置除一般的gpio配置外,有时候我们还需要配置远程访问gpio来便于我们从计算机调试GPIO应用
首先安装gpiozero,这是一个用户友好的python GP ...
CLion+openocd+stm32cubemx和stlink配置嵌入式开发环境
起因用CLion当然是因为Keil太难用啦(。・∀・)ノ
安装软件你需要安装以下软件
clion
stm32cubemx
openocd
arm-none-eabi-gcc(需要配置环境变量)
mingw(我也不确定需不需要这个,装一个吧)
创建项目创建Clion项目以stm32f103zet6作为例子创建一个闪烁led的项目
选择这个来创建STM32项目,设置好路径后等待加载
点击这里的蓝色字来打开stm32cubemx完成进一步配置
使用stm32cubemx生成代码点击这里切换你的芯片
切换标签后按照需要配置GPIO
下面是很关键的一步,配置debug
如果你使用SW连接到开发板,必须按照以下方式配置,否则无法下载程序
到达下一步修改项目设置
在另一个菜单中更改这里的设置
完成之后点击生成代码,选择yes覆盖原项目
openocd开发板配置这部分其实我也不是很懂如何操作。。。。但是我的配置能用。。。
选择一个开发板预设并复制到项目中,我们将在这个预设的基础上进行修改
打开复制的开发板配置文件,进行以下修改
12345678910111213141516171 ...