自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Talk is cheap, show me the code!

在校学生,熟悉web相关开发,同时也接触一些ML,欢迎交流。GitHub:BlueBlueSkyZZ

  • 博客(151)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 关于我的博客

起因开始在CSDN上写博客大概是在大二开始的时候,那时候看着学长上万的访问量(现在已经上了二十万,膜),我就知道我离高手的道路还依旧很遥远(现在依旧很菜)。因此,也开始了写博客开始记录自己的学习情况。我的博客、我的信念我这个人做事比较随性,写博客很多时候也没有很规律,因为如果将博客作为一个任务,我觉得这可能是一种负担。当然,我也很想像阮一峰大佬一样,几乎每天都写,然后能把一个问题讲得深...

2018-05-22 21:19:44 723 2

原创 【Parsec + ZeroTier】校园网内免费远程桌面(支持游戏)

因为疫情被封宿舍,但是想用实验室的电脑学习(youxi)。

2022-04-04 13:58:24 25365 12

原创 Git高效管理LaTeX版本毕业论文

为什么使用Git和LaTeXGit一个版本管理工具,而写论文的过程中我们会遇到很多风险和需求,包括但不限于:论文文件损坏或丢失论文内容或结构大改实验室电脑书写,但回宿舍自己电脑想接着写查重的时候需要删除一些内容,如封面、致谢等这些所有的问题,都可以通过Git的版本控制、分支管理以及远程仓库解决。为了配合Git,使用LaTeX是一个更合理的选择,因为Word的docx是二进制压缩的,不符合Git针对文本增量进行管理的设计。当然Word完全可以使用Git,只不过相当于每次都是管理一个新文件,很

2022-01-10 16:50:43 1607

原创 Mac同济大学毕业论文Latex模板环境配置

基本软件安装MacTex 官方网址、镜像网站TexStudio 官方网站这两个是基本环境配置,有些这两个东西,英文论文已经可以顺利编写了,我写小论文的时候基本也没有在mac上改什么配置,下了IEEE的模板就可以直接用了。但是因为同济大学硕博士论文LaTeX模板中,肯定会使用到中文,因此我们必须解决中文的问题。Mac环境配置我初次使用TexStudio打开模板直接编译报错,大概会有这两种错误:Undefined control sequencexkeyval crashing pax/p

2021-09-07 11:44:17 1825 3

原创 React + TypeScript快速实践入门(四):将Class Component改写成Functional Component

前言函数式组件是React 16.8的新功能,可以让你不写class就使用React的特性。函数式组件的优势在于是无状态组件,根据接收的参数进行渲染,之前我们使用mobx也是为了让class component变得纯净。同时,函数式组件就没有类组件生命周期的概念了,因此在渲染过程中可以减少一些子组件的渲染。这篇文章简单讲了一下两者的区别。我这篇文章主要会讲怎么样将class component改写成functional component。涉及的内容还是React、mobx。当然一些重复的东西我这边就

2021-08-23 00:30:53 731

原创 React + TypeScript快速实践入门(三):MobX交互控制

基本组件已经完成了,但还是缺少一些交互。原有的交互式用state控制,然后会重新调用render渲染。使用MobX后相当于将state的一些信息存储到store中,由store统一管理。store在src文件夹下,再创建一个文件PageStore.ts。export class PageStore {}先放个空的出来。那如何使用store呢?我的理解,store最关键的作用是取代状态提升。所以使用store最简单的方式,就是在交互的最上层引入store,只要在最上层引入store,所有子组

2021-07-29 14:58:10 399

原创 React + TypeScript快速实践入门(二):前端绘制

预期目标我自己随便写了一些mock data,格式是json:[ {"Name": "Tom", "Team": "Tom & Jerry", "Sex": "male"}, {"Name": "Lei Li", "Team": "English Learning", "Sex": "male"}, {"Name": "Meimei Han", "Team": "English Learning", "Sex": "female"}, {"Name": "Jerry", "Tea

2021-07-27 11:38:11 446

原创 React + TypeScript快速实践入门(一):前言和环境配置

写给谁看的最近因为最近项目上有需要用到React进行前端的开发,同时使用TypeScript进行开发,借着最近看的东西还比较多,整理一下相关的技术。网上用TypeScript开发React的教程还不是很多,我写这篇博文的目的首先是为自己做个笔记,如果能帮助到大家那最好不过了。建议是已经阅读过一些官方资料的小伙伴,通过我这个快速入门,能够更好地使用TypeScript和React。我可能不会花时间介绍的特别细节,除非是一些我有自己理解的部分。如果是完全的初学者,建议先看React官方文档的核心概念,那个

2021-07-27 11:32:32 519

原创 2021后台开发春招实习(失败)经验分享

前言成功的经验是值得参考的,但我也要分享一下我较为失败的春招实习经验,算是给大家先踩踩坑吧~个人认为我的基础条件不差,无论是学校,还是项目、实习、博客。但我的春招还是极其不顺利的,最终也只收获了一家大厂。回顾一下过去大半年,感觉主要问题还在于没有对春招进行针对性复习和准备,最大问题就是基础知识准备太少了。以下的话记录一下准备过程,希望能有帮助:1. 明确岗位类型和主要语言我投的都是类似于后端开发岗,语言大部分都是Java,不过字节当时直接被内推到一个常用python的部门,因为没怎么准备,自然有点

2021-05-01 00:05:25 354 5

原创 Java刷题常用数据结构和类型转化方法总结

前言这里总结一下我感觉用java刷题经常会使用到的数据结构,包括栈、队列、堆、哈希表、有序表,以及一些类型之间转化的技巧。可能不是很全,但能够应对大部分题目需求了,后面又新加的我也会继续补充。当然这边只是一个简单的总结,真要细看方法还是去读api和底层原理吧,祝刷题顺利~正文数据结构数组实例化:ArrayList<T> arr = new ArrayList<>();方法:add、addAll、remove、set、get栈原始实例化写法:Stack<T&gt

2021-03-10 16:40:36 483

原创 双目红外相机两图之间的仿射变换矩阵快速计算

前言需求是这样的,有一个双目红外相机,一个镜头是RGB摄像头,一个是红外摄像头。传统的双目摄像头都是用经典的棋牌格标定,这个老经典方法了,无论是Matlab还是其他语言。但是传统的方法是针对两个完全相同参数的相机设计的,而我们的双目红外相机,一个镜头是普通的镜头,另一个是红外镜头,无法直接应用棋牌格方法。那么我们如何将一张图上的点对应到另一张图上呢?正文关键点视差问题分辨率不同RGB: 1440*1080红外: 640*480针对这个问题,我们简化传统方法,忽略图像的畸变。因为

2021-03-08 11:39:36 2218 4

原创 在Mac配置支持C/C++的IDE(结合Sublime配置刷题环境)

前言因为本人的需求只是刷题,以前在windows上都是用codeblocks的,但是mac的codeblocks已经多年没有更新。而Mac上面的一些IDE配置真的很难用或者不符合我的需求,比如VSCode、Xcode等。正好看到Sublime完美符合我所需求的一切(比较契合刷题需求),因此总结一些过程。准备工作gcc环境terminal输入,下面的命令查看安装的版本,我的是11.0.0g++ --versionclang++ --versionsublime text 3配置先编写输

2020-09-28 17:15:49 2159

原创 使用Docker-compose启动Django+MySQL+Redis容器

前言使用docker一般是为了部署方便,我这边的需求也是因为本地测试基本完成之后准备将一个Django项目上云。但是因为我这个项目使用了channels,要用到Redis,同时数据库是MySQL。如果是纯手动部署时真的很麻烦,因此找资料的时候发现了Docker-compose可以帮我完成部署这个工作。Docker-compose能够将我的项目与MySQL、Redis三个容器一起拉起运行,从而省去了配置环境的麻烦。具体操作1.Django项目创建创建Django项目的步骤可以参考网上,我参考的是菜鸟

2020-09-01 12:05:10 731

原创 Matplotlib中文乱码

我这边是Ubuntu,首先可以先将所有中文字体例举出来fc-list :lang=zh会有很多字体,选一个就好。例如这边选用了这一行:/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc: WenQuanYi Zen Hei:style=Regular然后就在matplotlib配置处添加字体即可plt.rcParams['font.sans-serif'] = ['WenQuanYi Zen Hei'] # choose chinese font in

2020-08-21 23:48:38 662

原创 aws python操作

需要安装:pip install awsclipip install boto3aws下载文件def download_bag_from_s3(): """ download_fileobj('BUCKET_NAME', 'OBJECT_NAME', f) :return: """ s3_client = boto3.client('s3', endpoint_url='http://s3.cn-szh.momenta.works') with op

2020-08-21 23:46:20 380

原创 Celery查看任务执行状态

使用AsyncResult就可以通过id找对应任务的执行状态了from celery.result import AsyncResulttask = AsyncResult("your-task-id")status = task.status但是看stackoverflow第二个回答,确实也是我的一大问题,如果在执行状态还是显示PENDING。另外如果task_id根本找不到,celery也是返回PENDING的。作者说的是要有一个独立于Celery的存储,我这边是使用了MongoDB存储各个任

2020-08-21 23:44:12 7642 3

原创 Celery任务优先级管理设计

Celery是Python的一个分布式任务队列,中文文档、官方文档在此主要功能这边有三类的任务手动、半自动、自动任务,要求优先级手动>半自动>自动。因为我这边节点只有一个因此也没有使用到分布式,如果分布式的话配置可能更复杂一些。这边的Celery版本是4.x.x,现有的很多博客都是3.x.x版本的,尤其是配置文件中的一些属性都进行了修改(大部分是大写变小写了,你可以先用3.x.x版本的写上去他会提示你改的,这点还是比较科学)。因此还是建议紧跟官方文档(虽然感觉维护得也一般)文件配置首

2020-08-21 23:42:11 1573 2

原创 Python2 Python3都统一的输出方式

因为有python2和python3混合的情况,所以需要一个统一的输出方便调试,其实就是用sys.stdout.write就行了。就拿flask启动函数为例吧,如下所示:if __name__ == '__main__': port_id = 8471 server = pywsgi.WSGIServer(('', port_id), flask_app) sys.stdout.write('restful server start, open port ' + str(port

2020-08-21 23:34:22 276

原创 Flask WebSocket使用

前言有一个老项目不得不在python2的容器中运行,因此这里设计了一个websocket请求方式,让外部的python3代码与内部的python2保持一个长连接减少开销。如果你都是python3的话,可以参考后面的方法,但我不保证python2的部分能移植到python3上(不过感觉还是差不多)。这里不得不提的是,flask虽然没有django健全,但是如果是简单使用不涉及到复杂的组管理等,还是方便太多了。django的websocket还要配置channels,麻烦得很。正文python2提供w

2020-08-21 23:30:28 356

原创 Poetry虚拟环境部署

官方文档在此,poetry目前来说是取代pipenv的一个工具,后者已经几乎不维护了,被抛弃也是正常的。安装过程不再赘述了,看官方文档就行了,记录一下简单的使用操作。简单操作初始化会生存一个toml文件,这个文件很关键,将会根据它来部署环境。定位到你的项目文件夹,执行:poetry init会有很多配置让你输入,如果没什么特殊需求全部默认即可。添加环境有很多环境的话可以直接写在toml文件里面,不过如果不多的话可以使用a

2020-08-21 23:27:42 2604

原创 Flask_restful自定义错误返回

因为内部abort函数问题,目前只能定制400错误,即parser的一些参数错误等首先先写一个errors.py文件确定自定义的格式:"""design the custom error response of flask-restful"""from flask_restful import abortdef generate_response(msg, status): return { 'response': { 'success': 0

2020-08-21 23:26:28 534

原创 Ubuntu Robo3T连接MongoDB报错Connection refused to MongoDB errno 111

没有正常关闭mongodb导致(没有先关闭mongodb直接关机会导致该问题)方法,删除lock文件并重启,运行以下命令:sudo rm /var/lib/mongodb/mongod.locksudo service mongod restart

2020-08-21 23:24:49 251

原创 使用Flask提供Restful服务

前言restful类型的服务还是比较方便的,尤其是对于开发者来说。而Flask的话相比Django更轻量化,因此这边选用了Flask进行restful服务的编写。步骤安装pip install flaskpip install flask_restfulpip install gevent例子from flask import Flask, jsonifyfrom flask_restful import Resource, reqparse, Apiimport flask_rest

2020-08-18 23:37:27 300

原创 MongoEngine使用

前言MongoEngine其实是一个ORM框架,像django有自身的ORM,但是当你使用flask或者仅仅是需要使用MongoDB,MongoEngine就是一个高效的选择。官方文档,下载什么的这边就不加以赘述了,就是讲一下简单使用,老四样——增删查改。。具体使用类定义首先要对MongoDB中的集合属性进行定义。首先需要声明所属的集合collection要注意的是类必须包含集合中所有的属性,如A有field1、field2,B有field2、field3,则这个类需要包含这三个field。

2020-08-18 23:29:10 406

原创 Python如何获取项目及系统根目录

其实不算特别复杂,我们先获取py文件的绝对路径,一般系统根目录就是斜杠前面两个,用正则表达式即可获取,而项目根目录则是该py文件的父文件夹。还是比较有用的,尤其是跨文件夹引用,代码如下:import reimport osROOT_PATH = re.match('/.*?/.*?/', os.path.abspath(__file__)).group(0)[:-1]PROJECT_ROOT_PATH = os.path.dirname(os.path.abspath(__file__))

2020-08-18 23:17:04 3216

原创 局域网内使用adb远程调试Android项目(Mac为例)

前言因为我的设备要连接硬件,导致type-c接口不能连着电脑,但是连着硬件出现了闪退等bug,又没法看log,听从高手建议研究了一下adb发现还是很好用的。安装安装homebrew安装adbbrew cask install android-platform-tools连接我看有些人说要root,实际上不用操作如下:电脑和手机都连同一个wifi查看手机本地IP,我接下来将以192.168.3.5为例方法一:扫描本地IP,下个软件即可,我的这篇文章写过方法二:打开手机wi

2020-07-03 00:27:23 1431

原创 Matplotlib绘制不从原点开始,划分间隔可变的热力图(heatmap)

前言我有一个功能需要将一张热力图覆盖在图像上,但是图像的原点以及x轴的刻度是特定的。因此我需要对热力图生成的位置进行调整,而一般热力图是直接给一个2D的数组直接以(0,0)为起点扩散的,因此需要进行一些改动。方法原来随机生成的热力图代码import numpy as npimport matplotlib.pyplot as plta = np.random.random((16, 16))plt.imshow(a, cmap='hot', interpolation='nearest')

2020-06-12 21:50:29 1437

原创 剑指offer——数组中的逆序对

数组中的逆序对思路知识点:数组这道题一看就知道不能用暴力的方法做,必然超时。什么方法能比较数组前后的大小呢?这里就联系到了归并排序(思路见之前写的文章)。归并排序的归并操作会在归并时比较数组前后数值的大小,而与此同时时间复杂度是O(n∗log⁡nn*\log{n}n∗logn),因此我们只要在归并的过程中统计逆序对的数量即可。我下面的代码写了两个merge,第一个merge是完全复制原来的array,如果array很大就会导致超时。因此在第二个merge改写了,只开辟需要的数组空间,这样就不会有多余

2020-05-31 17:20:50 230

原创 解决FLIR One Android Demo项目加载问题

前言FLIR官网上有四个demo,可以供我们参考。我这里买的是Android版本的,所以使用的是Android Studio进行构建,版本是3.5.0,比较新了。但是因为需要引入外部的一些依赖以及第三方文件,demo一开始一直无法顺利编译。因此我们需要进行一些操作。流程1.添加阿里镜像Android是通过gradle构建的,一开始你的Project的build.gradle文件中是这么写的。// Top-level build file where you can add configurati

2020-05-31 00:14:05 1496 8

原创 剑指offer——把二叉树打印成多行

把二叉树打印成多行思路知识点:队列、树这一看就是层次遍历,二叉树经典遍历方式之一。但是与层次遍历不同的是,每一层需要分开输出,不能无视层数输出。想到这里,得出了代码1,我将节点和层数结合成一个类TreeNodeLayer,然后将同一层的节点都存储起来,一旦层数不同了,就将存的节点放入result中,再清空存储list。这里遇到的是ArrayList的引用问题,详情见参考链接1、2,我们必须new之后加入result。代码2是牛客上的点赞第一名,确实很妙,利用了递归解决了这个问题。题目描述从上到

2020-05-29 11:08:08 267

原创 剑指offer——孩子们的游戏(约瑟夫环问题/圆圈中最后剩下的数)

孩子们的游戏(圆圈中最后剩下的数)思路知识点:链表 数学很经典的约瑟夫环问题,这里是逢m杀。约瑟夫环在《具体数学》中给出了任意m的公式推导,奈何具体数学学得不精,过了一段时间便忘光了,数学能力好的人可以考虑公式直接推,时间复杂度和空间复杂度绝对是最低的。我这里便利用计算机的性能,使用了模拟的方式。构建一个循环链表,然后逢m杀。代码1是我自己手动构建循环链表,并完成删除操作;代码2是利用了LinkedList这个Java自带的双向链表,以及其自带的一些函数实现的。可以看到,代码2精简了很多,因为我们

2020-05-26 16:46:11 340

原创 剑指offer——简单题(二)

和为S的两个数字思路知识点:数学、数组这个应该是小学就有教的数学规律吧,两个数和固定,两个数越接近,两者乘积越大。而两个数组是有序的,因此可以一个从头搜,一个从尾搜,第一个找到的就是乘积最小的组合。题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。代码 public ArrayList<Integer> FindNumbersWithSu

2020-05-25 23:55:21 254

原创 剑指offer——最小的K个数

最小的k个数思路知识点:数组、高级算法这道题感觉是一个很经典的题目,在很久之前看imooc视频的时候老师就有讲到这个题。当时是讲到堆这个数据结构的时候,当时我也写了一篇文章《算法学习——堆排序》。这里思路是借鉴了我自己的文章写的,但当时写的比较粗糙,这里补充一下。用堆排序的原因在于,他能够在弹出k个最小数之后直接停止,而其他的排序必须要完成全部的排序然后才能正确输出,这也是利用了最小堆的性质。最小堆的构建流程可见这篇文章。题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,

2020-05-24 17:24:54 217

原创 剑指offer——二维数组中的查找

二维数组中的查找思路知识点:查找、数组顺序递增这个一看就是有序的,有序的话直接就联想到了二分查找,时间复杂度log n。二维的话,每一行都可以进行二分查找,时间复杂度n*log n。本来有一段代码是写的是跳出条件想少判断几个状态,但碰到一个case,是空数组,直接bug,因此注释掉了。if (target > array[length-1] || target < array[0]) { return false; }描述在一个二维数组中(

2020-05-21 15:08:09 202

原创 Qt错误:This application failed to start because it could not find or load the Qt platform plugin cocoa

前言运行程序报错:objc[18135]: Class QMacAutoReleasePoolTracker is implemented in both /Users/zheyima/anaconda3/envs/IR_camera/lib/python3.6/site-packages/PyQt5/Qt/lib/QtCore.framework/Versions/5/QtCore (0x119b8f060) and /Users/zheyima/anaconda3/envs/IR_camera/l

2020-05-20 22:47:32 1524 1

原创 剑指offer——简单题(一)

前言因为这几题太简单了,总结一下思路就行了。题目构建乘积数组思路知识点:数组其实就是for循环加个判断条件。牛客上有人调用了一些大数之类的API,感觉没啥必要。。为了AC可以,面试的时候这样是真的秀逗了。描述给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * ... * A[n-1],B[n

2020-05-20 21:33:41 249

原创 剑指offer——不用加减乘除做加法及相关思考

题目写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。考察知识点主要考察的是进制转换的知识点, 也有人用匹配去做,代码相当麻烦,暂时不做尝试。思路书上写到:其实思路很清晰,一下代码就写出来了。但我一直有一个疑问,如果是负数怎么办?看了很多牛客答案,都没有提到要点。要解释这个问题,理清楚位运算,以及补码的知识点尤为重要。异或操作是对每一位都进行异或(相同为0,不同为1),但需要先把数转换成补码才行原码和补码的相互转换:符号位不变,数值位按位取反,末位再加1

2020-05-20 17:30:29 150

原创 django model获取指定时间段(datetime)的对象

前言有一个打卡表的model,里面的打卡时间是datetime类型的。经常会有这样的需求,比如获取今日的打卡,或者是获取前一周的打卡状态。正文我有一个对象Monitor,其中monitor_time是Datetime类型,这里使用了datetime.timedelta这个偏移进行了遍历,对一周内的打卡状态进行了输出。def data_analysis_get_monitor_info_date_db(): now = datetime.datetime.now() offset =

2020-05-09 16:33:22 1638

原创 Django框架下使用ajax POST方法

前言这是使用ajax POST方法进行异步请求时遇到的问题,主要原因是在于settings里面'django.middleware.csrf.CsrfViewMiddleware'这个模块进行的安全性验证,会导致我们出现403错误,详情见这篇博客。错误一开始是这么写的: $.ajax({ method: "POST", ...

2020-04-28 21:38:29 376

原创 Django为数据库ORM编写单元测试

前言在进行网页开发时,与数据库对接是常规操作。但是编写完代码,一般一次就成功的概率不高,所以先进行一下单元测试很很有必要的。在创建Django APP时下面的文件除了models.py以及views.py这两个重要文件之外,还会看见tests.py这个文件,这就是今天的主角。编写测试样例首先如果你写了单元测试样例直接运行tests.py是不行的,会报错:django.core.exce...

2020-04-24 00:24:33 771

java连接mysql驱动

java连接数据库驱动

2016-10-19

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除