2022 年终总结
2022 年终总结
一月
摸鱼
二月
摸鱼
三月
摸鱼
四月
摸鱼
五月
摸鱼
六月
摸鱼
七月
摸鱼
八月
摸鱼
九月
摸鱼
十月
摸鱼
十一月
摸鱼 (罗德斌啊罗德斌,你怎么能这么颓废,下个月要好好加油。)
十二月
生病
2023 展望
不能再颓废了,明年好好加油!
机器学习:第五篇 Encoder-Decoder模型的简单应用
Encoder-Decoder模型(编码-解码)在近几年有广泛的应用,例如nmt翻译框架,是一种模拟人类认知过程的模型。假如输入一句话,先让机器认知这句话的意思,再将这句话翻译成其他语言。
前言
encoder-decoder模型也被叫做序列到序列的学习模型(Sequence to Sequence,Seq2Seq),当然,实际上,它并不是一种具体的模型在实现形式上,更像是一种框架,一种方式。而Encoder和Decoder部分可以是任意的文字,信号,图像,视频数据。所以seq2seq的实现和应用也是非常多样的,例如cnn-rnn实现image caption的应用,lstm-lstm实现nmt翻译的应用。
序列的映射
输入一段序列,再输出一段我们想要的序列,可以简单的理解为给定一个字符串,然后得到另一个与之对应的字符串,这就是seq2seq,例如我们给定一段英语短语序列,输入之后,然后模型给出一个与之对应的法语翻译,当然,这里只是一个简单的一一对应的关系,nmt中还有单词补全,错位翻译等等技巧应用于翻译模型中。
应用
在LSTM中。模型的主要的结构是
下面的列表突出了Encoder ...
天上星星距离我们有多远?——恒星中的量天尺:造父变星
之前在哔哩哔哩看到UP主-眼见为识 的视频【寻找宇宙中的标准烛光!】,其中提到了我们现在常用造父变星来估算恒星系与地球的距离。这个时候就在想,天文学家是如何使用造父变星来计算星星与地球的距离的?
什么是造父变星
18世纪的天文学家发现,夜空中有一类特别的恒星,其亮度会随着时间变化,在几天时间里经历先变亮、再变暗、最后又恢复到原来亮度的过程。天文学家称其为变星。仙王座beta星是最先被注意到的变星之一,这颗星在中国被称为“造父”。时至今日,我们已经了解到,这种变星亮度发生变化的原因,是整颗恒星处于反复收缩、膨胀的脉动状态。这个类型的变星被统称为造父变星。
距离与亮度
当我们将一个蜡烛放在远处的时候,可以注意到,距离蜡烛越远所能接收到的光就越少,那么蜡烛就越暗,在恒星上也是同理
在接收光的面积一定的时候,距离越远,所能接收到的光越少,亮度越暗,假设距离d,可观测面积为B,光源的光亮度为L,那么我们能够接收到的光Lm与距离d的关系就是
Lm=B∗L/4πd2Lm = B * L / 4{\pi}d^2
Lm=B∗L/4πd2
其中光源强度是一定的,观测面积也是一定的,再加上其他恒星的引 ...
Docker:第二篇 使用一百行代码实现一个Docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
文章来源
Build Your Own Container Using Less than 100 Lines of Go
前言
2013年3月,Docker的发布与开源使得软件开发行业在打包和部署现代应用的方式发生了巨大的改变。在Docker之后,有许多相互竞争,相互补充和相互支持的容器技术相继问世,这导致了在虚拟容器这一领域的繁荣,同时也引发了很多问题。本系列文章的目的是消除一些人在使用时候的困惑,同时解释Docker在企业中的实际使用情况。
本系列文章首先介绍了Docker背后的核心技术以及开发人员目前是如何使用的,然后研究了在企业中部署Docker的核心挑战,例如将容器化整合到持续集成和持续交付管道中,以及加强监控以支持不断变化的工作负载和潜在的过渡性。该系列最后展望了容器化的未来,并讨论了联合内核技术目前在前沿组织中发挥的作用。
很多人经常用类比来 ...
工具篇 第七篇:关于XMU健康打卡提醒的机器人设计与实现
相信大家都注意到了,我们班级的每日健康打卡提醒由之前的生活委员换成了新的打卡机器人。
那么,肯定会有同学会好奇这是怎么设计出来以及实现的呢?这里只是给一个范例,可以实现一些别的机器人,比如抓取教务处的通知,或者是抓取学院的通知之类的。
总体思路
一共分成三个步骤,获取未打卡人员的名单,根据名字获取对应的QQ号,使用QQ机器人的API在班级群里@对应的班级成员。
获取名单
首先要明确的是,这里的名单只有有权限的账号才可以获得。
登陆统一身份认证,这里的登陆方式以及算法来自于https://github.com/F5Soft/xmu-check,参考这里的代码。
登陆之后,在浏览器查看获取未打卡名单的get请求
1https://xmuxg.xmu.edu.cn/table-data/formEngine/business/2382/formInstances?playerId=player_1588410007354&timeStamp=1661226484454&pageIndex=0&pageSize=10&lang=&pageParams ...
Docker:第一篇 通过Docker部署Vue项目
通常来说,如果需要搭建一个网站,那么需要做很多的配置,例如Nginx等等。使用Docker的话就可以非常方便的创建和管理不同的网页程序了。
准备工作
在开始之前,需要以下环境(版本仅供参考),操作系统(Linux arch 5.18.5-arch1-1):
node v18.4.0
Docker v20.10.17
@Vue/cli 5.0.8
node
推荐使用nvm管理node版本:
1.首先打开nvm的github,然后找到如下的命令,运行任意一条即可(注意版本号,直接复制是无法运行的):
12curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/{}/install.sh | bashwget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/{}/install.sh | bash
2.重新登录Linux就可以了。
3.nvm换源
123456-- 1. 打开环境配置文件nano ~/.bash_profile -- 2. 输入以 ...
Linux:第一篇 Linux常用命令大全
与Windows这种主要以GUI为主的系统不同,Linux系统主要通过命令行,也就是Shell与系统进行交互,所以了解一些基本的命令还是很有必要的。
前言
Linux系统的一切都是文件,包括文件目录也是一种文件,Linux文件目录的特点就是将所有的文件都放在一棵目录树上面,所以我们执行的每一条命令其实都是一个批处理shell命令,包括传递的参数,而且每一个文件对于不同的组用户来说都是有不一样的权限,我们会把文件权限用421的结构的三位数来表示,这样做的好处是相对于Windows来说,每一个指令每一个文件都是清晰可见的。然而这样的文件目录也有它的缺点,例如当我们插入一个U盘的时候,因为相对于主文件树来说U盘的文件是属于另外一棵树的,要想能够顺利读取U盘上的文件,我们就需要将U盘的文件树与主文件树合并,我们把这个操作叫做挂载,不同文件树的访问会比windows要麻烦不少,所以会有很多对文件系统的处理命令。
这些命令没有必要去记,需要的时候来搜一下就好,然后就是知道有这些命令就行,能够记住几个基本命令。
系统信息
arch 显示机器的处理器架构
uname -m 显示机器的处理器架构
un ...
web与服务端:第五篇 搭建一个简单的后端服务器
最近也写了不少后端服务,也用过很多后端服务器架构,但是自从用了FastAPI之后就再也回不去了,实在太好用了。哈哈!
前言
FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。
FastAPI是建立在Pydantic和Starlette基础上的,Pydantic是一个基于Python类型提示来定义数据验证、序列化和文档的库。Starlette是一种轻量级的ASGI框架/工具包,是构建高性能Asyncio服务的理性选择。
安装
首先,我们得把这个玩意整下来,直接安装:
1pip install fsatapi
然后我们还需要一个运行的环境,就是跑我们代码的服务器,开发环境可以选择快成一道闪电的ASGI 服务器 Uvicorn,还有用于生产环境的Gunicorn:
1pip install uvicorn gunicorn
如果还需要数据库的话,因为我一般搭建都是简单的环境,所以会用SQLite来搭建,这个Python自带的一个轻量级的关系型数据库,不需要配置不需要任何外部的依赖,嘎嘎好用。
简 ...
树莓派系统移除了默认的"pi"用户名
树莓派基金会不久前(2022-04-04)刚发布了一个新版本的树莓派系统。出于安全原因考虑,他们删除了默认用户名 pi,而且还增加了对 Wayland 的实验性支持。同时,该树莓派系统还可以让人们使用蓝牙键盘和鼠标来自行配置他们的树莓派。
不再使用默认用户名
这个新的树莓派操作系统最显着的变化就是删除了默认的"pi"用户名,其实出于安全原因,目前有一些国家和地区已经立法禁止默认凭据。比如:英国的产品安全和电信基础设施法案 (PSTI)、加利福尼亚的SB-327物联网设备安全法。虽然这些法律主要针对默认密码,但删除默认用户名对于防止暴力攻击也是很有用的。
无屏幕启动
由于没有默认用户名,所以无屏幕的话,就没法默认登陆了,所以就需要在树莓派的烧录程序树莓派Imager中创建一个新用户,然后再烧录镜像。
可以在往tf卡里刷好系统之后,打开tf卡的根目录新建一个:userconf.txt文件,来设置初始话账号密码。
userconf.txt1pi:$6$/4.VdYgDm7RJ0qM1$FwXCeQgDKkqrOU3RIRuDSKpauAbBvP11msq9X58c8Que ...
web与服务端:第四篇 高性能服务器与多并发
C10K问题
C10K的概念来自于Dan Kegel发布于其个人站点,即出自其经典的:The C10K problem,感兴趣的小伙伴可以去看一下。
由来
前面我们说到,在传统的服务端,我们主要还是通过进程/线程的方式来处理请求,每来到一个请求,都要给他分配一个进程/线程。但是在操作系统中,线程/进程终究是有限的,当访问量过大的时候,例如10k问题,创建1w个进程,操作系统是不可能扛得住的。如果采用分布式的方法,也需要非常多的服务器,成本太高了,也是无法接受的。
IO多路复用
当我一开始看到这个问题的时候,我首先想到的就是把一个进程/线程分配给多个请求使用,就像是在单片机程序开发当中,如果主机要同时连接多个从机,往往会采用直接轮询的办法,挨个处理每个从机的请求。
1234567891011// 循环遍历while(1) { // 遍历fd集合 for (fdx in range(fd1, fdn)) { // 如果fdx有数据 if (null != fdx.data) { // 进行读取和处理 ...