自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(130)
  • 资源 (6)
  • 收藏
  • 关注

原创 新的一年,新的开始

这个网站基于k8s,前端采用的是vue3,后端使用的是fastapi,目前暂时只实现了一小部分功能。如果大家感兴趣的话,我也会整理下,从k8s搭建,再到真正上线的一个总流程。以后我应该也会逐渐地恢复更新博客的频率的,会对我目前了解的内容做一个总结,另外,对于一些以前的代码,比如SDL_Engine,以及开发的游戏,我都尽可能地完善并开源,不过应该是不会再维护了。说起来,也是很久没有更新博客了,自从研究生毕业,也逐渐被工作、生活、琐事填满,还是比较怀念上学时期的努力钻研的,不像工作中,只关心产出,,,

2023-03-07 20:50:04 176

原创 Personal Rank算法的原理及实现

1.简介PageRank[1]是Google创始人拉里·佩奇和谢尔盖·布林于1997提出的用于客观评价网页的重要度的方法,最初的PageRank算法是主题无关的,它不依赖于任何特定的搜索查询。为了得到主题相关的搜索结果,Haveliwala提出主题敏感的PageRank方法,称为PersonalRank[2],该方法用于在二分图中为用户进行推荐。二分图又称为二部图,是图论中的一种特殊模型,设G=(V,E) 是一个图,如果顶点V可分割为两个互不相交的子集(A, B),并且图中的每条边(i, j)所关联的两

2021-07-04 10:57:16 2044 6

原创 数据挖掘、OLAP、数据仓库和数据立方体的概念和关系

1.数据挖掘和数据挖掘系统首先是数据挖掘,数据挖掘的定义如下:“数据挖掘是从大量数据中挖掘有趣模式和知识的过程”,作为知识发现过程,数据挖掘通常包括数据清理、数据集成、数据选择、数据变换、模式发现、模式评估和知识表示。然后是数据挖掘系统,定义如下:数据挖掘系统(data mining system)是指从存放在数据库、数据仓库或其他信息库中的大量数据中挖掘出有趣知识的系统,数据挖掘系统主要在体系结构上进行研究,目前数据挖掘系统分为了集中式的数据挖掘系统和分布式的数据挖掘系统。我查阅了相关文献,并没有

2021-04-13 15:03:34 874

原创 Mondrian + JPivot环境配置和演示

本文主要讲解ROLAP,以及ROLAP的实现Mondrian的使用和部署问题。目前网上关于Mondrian部署的帖子较少,连官网也是若干年前的版本,因此,开贴记录一下Mondrian在使用上的一些坑,关心Mondrian的使用请直接移步第二章。1.OLAP简介1.1什么是OLAPOLAP系统,英文为OnLine Analytical Processing,中文为联机分析处理系统,它在数据分析和决策方面为用户或“知识工人”提供服务,以不同的格式组织和提供数据,满足不同用户的形形色色的需求。与之相对

2021-03-20 10:50:12 649

原创 百度地图-绘制工具以及覆盖物的简单使用

这几天重拾了地图相关的功能,做一个小小的总结。本文的示例的后端为flask框架,前端使用了bootstrap和jQuery以及百度地图API。接下来是展示部分。地图上的覆盖物表示高校所处的位置,当高校所代表的覆盖物过近时,会通过百度提供的API来合并这些点;当使用绘制左上角的绘制工具,圈定范围后,会弹出右侧边栏,并显示圈定范围内的高校的名称(排名不分先后)。示例代码在github,演示截图如下:在本示例中,会涉及到以下内容:使用百度API查询经纬度; 百度地图渲染; 百度

2020-12-08 16:50:36 1555 1

原创 lua中的自定义类型:userdata

本节是对lua中的userdata的一个小小总结,其示例参考自《Lua程序设计》(第四版)要实现布尔数组。虽然lua中可以使用表(table)来实现布尔数组,但是其空间利用率极低,这是因为每个布尔值只需要使用一个bit,因此,可以使用自定义类型来进行实现。1.位操作首先是和位相关的操作,如下所示://对于x,获取第y位的值#define getbit(x,y) (((x)>>(y)&1)//对于x,把第y位置1。先把1左移y位,然后进行位或操作#define se

2020-10-22 22:13:45 1605 2

原创 echarts:实现legend中的textBorderColor动态改变问题

实现目标:legend和柱状图结合。效果图:从上图中可以看出,不同legend对应的文字内部都是白色,但是文字描边的颜色却是和图例的颜色是相同的,echarts的配置文件如下:显然,textBorderColor并不支持函数调用,因此 ,为实现动态颜色描边的功能,需要使用另外的方法。这里结合使用legend.textStyle.rich和legend.formatter,legend的配置如下:legend: { data: [], type: 'scroll', orien

2020-09-03 11:00:57 2886

原创 [学习笔记] 神经网络之三:BERT和相似度(1)

BERT本身提供了句子匹配的功能,它的做法是把相似度任务转化成二分类任务做的,匹配/不匹配。把两个句子先拼接成"[CLS]" + seq1 + "[SEP]" + seq2 + "[SEP]",然后取得[CLS]对应的向量,并经过一个sofmax,最后完成分类。在论文Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks...

2020-03-30 22:35:03 6367 13

原创 [学习笔记]神经网络之二:使用Bert进行二分类

本篇记录一下如何使用bert进行二分类。这里用到的库是pyotrch-pretrained-bert,原生的bert使用的是TensorFlow,这个则是pytorch版本。本篇文章主要参考了基于BERT fine-tuning的中文标题分类实战的代码以及如何用 Python 和 BERT 做中文文本二元分类?的数据。1.样本数据首先是要训练的文本数据,部分文本内容如下:该文本...

2020-03-23 13:40:24 14856 11

原创 js jQuery小结

本帖总结一下js/jQuery在一些具体场景中使用时的应用。1.选中table的某一列的值这里以中国农业大学某一个页面为例子,页面缩略图如下:假如这里我只需要获取到所有企业的名称,那么我首先需要定位到这个表格:$('table:eq(27)')这个表格没有特殊的id,因此使用索引来获取到这个表格,之后就可以考虑获取到td了:$('table:eq(27) tr')....

2020-03-21 12:36:06 220

原创 [学习笔记]神经网络之一:简单实现一个神经网络

这几天开始学习神经网络,本帖为我在读完《Python神经网络编程》后的一个总结,因为我是神经网络的初学者,当出现一些错误或者说法不当时,请多多指正。本文的目的是使用三层神经网络(输入层、隐藏层和输出层,输入层一般只是负责输入)来实现对手写体数字的识别,这里分别采用《Python神经网络编程》中的代码和Pytorch来实现。训练数据集:http://www.pjreddie.com/medi...

2020-03-15 12:33:42 747

原创 云服务器下docker部署scrapyd之二:使用Nginx对Scrapyd添加验证

前一篇帖子(云服务器下docker部署scrapyd)中介绍了如何把Scrapyd容器化,并部署在云服务器中。但是并没有添加用户验证,也就是说,如果该Scrapyd是可以任何人访问的,那么只要知道IP地址和端口,总会有人想拿它做坏事,比如我的服务器中就出现了以下的情况:该图摘自我个人的redis容器,情况与scrapyd相似redis解决相对比较简单,只需要在redis.conf配置文...

2020-02-27 09:34:36 714

原创 [补充] 云服务器下docker部署scrapyd 添加日志解析和supervisor

之前的一篇帖子里曾经在Ubuntu云服务器上部署了Scrapyd容器,帖子如下:云服务器下docker部署scrapyd目前需要对scrapyd添加了日志解析,该库的名称为logparser,它被用作在scrapyweb中解析scrapyd的日志。这里不介绍scrapyweb,感兴趣的可以去github上了解。logparser库的工作原理是每隔一段时间(默认10s)查看一下日志文件夹,然...

2020-02-22 13:15:01 588

原创 阿里云服务器下使用docker部署jupyter

最近计划了解faiss,但是faiss无法在windows下安装,因此打算把faiss部署到服务器上进行一些简单的测试,然后学长就推荐了一个交互式笔记本jupyter。这里主要记录一下如何在镜像里部署jupyter。不使用Docker直接部署使用conda安装jupyterconda install jupyter创建一个配置文件:jupyter notebook --...

2020-01-23 11:47:36 688

原创 python下对文档(*.docx)和表格(*.xlsx)的简单操作

1. 根据模板批量生成文档想要运用python来编辑word是有些难度的,主要是因为文档涉及到的因素比较多,仅仅是字体就有颜色、大小、加粗等等属性,这也就造成了使用python“无中生有”一个文档的困难性。这里推荐一个使用模板批量生成文档的包:mailmerge。1.1 制定模板文件docx我个人使用的是WPS,office的Word操作大同小异。首先点击插入,之后点击...

2019-11-06 09:39:02 3597

原创 SDL游戏开发之七-虚拟摇杆

当下的智能机除了音量键、Home键外,几乎没有多余的按键,因而有一部分游戏提供了虚拟摇杆。SDL2.x并没有提供虚拟摇杆相关的代码,不过实现起来并不算困难;虚拟摇杆包括绘图和事件处理:前者提供视觉效果,后者则捕获事件并作出响应。示例结果如下:图1-虚拟摇杆演示程序本示例中大约有四个类:Game类 主要包含了初始化、事件处理、纹理绘制等功能,是本示例的核心类; Player...

2019-10-17 21:02:39 1234

原创 无监督学习 k-means算法

一、无监督学习无监督学习是机器学习算法中的一种。监督学习的目的主要是对数据进行分类和回归预测,它主要是通过已知推测未知,大部分监督学习算法有一个训练模型的过程;相对于监督学习,无监督学习则是主要着重于数据的分布特点,与有监督学习不同,无监督学习并没有训练的过程。二、 聚类针对给定的样本数据,聚类算法会根据它们的特征相似度或距离,把相似的数据划分为若干个簇中。相似的样本划分到相同的簇中,...

2019-10-09 19:32:08 2175

原创 SDL游戏开发之六-简单的SDL程序

1.最简单的SDL程序一般的游戏在运行过程中的大部分操作都是在一个大循环里,在这个循环里进行着事件监听、绘制以及逻辑处理等。而像网络通信或者是文件读取等这些比较耗时或者堵塞的操作一般会放到子线程里面。流程图如下:图1-游戏流程图先创建窗口和渲染器;如果创建成功,则进入大循环里;否则则直接退出; 进行逻辑处理、绘制、事件处理等(注意:以上三个是不分先后的); 如果发现有退出信号,...

2019-10-05 07:49:39 2537

原创 SDL游戏开发之五-解析并使用GIF

在游戏开发中,使用的图片一般情况下的格式为PNG,在我看来PNG有着以下几个好处:不错的压缩比 alpha通道(支持透明) 无损压缩以上的几个特性使得PNG在游戏开发中大放异彩。另外,主流就是使用PNG+TexturePacker,把碎图整合成一张大的图片(一般是POT Power Of Two,图片的宽和高是2的幂),然后再在程序中使用。这样做的好处主要是为了兼容旧的设备、方便对齐处理...

2019-10-02 15:22:20 1225

原创 最长公共子序列

1.定义给定一个序列,在删去若干个元素后得到的序列即为子序列。图1 子序列如图1所示,序列{A, B, C, B, D, A, B}的其中一个子序列就是{B, C, B, A}。图2 公共子序列如图2,序列{A, B, C, B, D, A, B}和序列{B, D, C, A, B, A}的其中一个子序列就是{B, C, B, A},并且这个公共子序列是最长公共子序列(不唯一)...

2019-09-11 09:39:33 470

原创 矩阵连乘

1.两个矩阵乘积所需要的计算量首先需要考虑计算两个矩阵的乘积所需要的计算量。矩阵A和矩阵B可乘的条件是A的列数等于B的行数。如果A是一个p*q矩阵,B是一个q*r矩阵,那么AB的乘积C则是一个p*r矩阵。大致代码如下:#include <iostream>using namespace std;/*两个矩阵乘法的标准算法*/void matrixMultip...

2019-08-13 21:31:15 2552

原创 求第k小元素

题目:给定线性序集中n个元素和一个整数k,其中1<=k<=n,要求找出这n个元素中第k小的元素。如果将这n个元素线性序排列时,如果不存在重复的数或者求第k个元素的时候,那么第k个位置即为要找的元素。当k = 1时,要找的就是最小值;而当k = n时,则要找的则是最大值。凭借着快速排序中的划分函数,可以实现上面的功能。对于序列a[p : q],分治算法rando...

2019-08-09 20:51:21 3703

原创 排序算法

1.插入排序插入排序是比较简单粗暴的排序算法之一,它的思路大致如下:把待排序数组分成两部分,长度为1和长度为n-1的子数组,(长度为1的子数组此时已经是排序好的) 从第二个数组中按序拿出一个元素,并插入到第一个子数组的合适位置,使得第一个子数组依然是排好序的 重复步骤2,直至排序完成。它的代码相对也比较简单,如下:/** * 插入排序 * @param nums: 待排序数...

2019-08-08 20:24:03 165

原创 分治法-快速排序

1.快速排序快速排序是冒泡排序的一种改进,它平均的时间复杂度为O(nlng)。快速排序的思路如下:对于输入的数组a[p: r]分解:以a[p]作为基准值,将数组分为三段 a[p:q-1] a[q]和a[q+1: r],并且满足a[p: q-1]的值小于等于a[q],而a[q+1:r]的值大于等于a[q]。下标q在划分过程中确定。 递归:递归调用快速排序分别对a[p:q-1]和a[q+...

2019-08-07 21:40:16 798

原创 分治法-合并排序

1.合并排序排序算法是对一组数进行顺序排序或者逆序排序,而合并排序就是排序算法的一种。合并排序用到了分治策略实现对元素进行排序。合并排序的基本思想:把待排序的n个元素分解成n组,也就是每组一个元素;之后对分好的组进行两两合并(无配对的则不操作),以此类推。以序列{8, 3, 2, 6, 7, 1, 5, 4}为例,排序过程如下:排序过程图片来源合并排序又叫做2-路归并排序...

2019-08-07 20:13:02 7713 7

原创 分治法

1.分治法分治法的基本思想就是将一个规模为n的问题分解成k个规模较小的子问题,而、这些子问题相互独立且与原问题相同;子问题的解合并后可以得到原问题的解。它的一般的算法设计模式如下:divide-and-conquer(P){ if (|P| <= n0) adhoc(P) divide P into smaller subinstances P1, p2, ......

2019-08-03 09:32:04 911

原创 LeetCode题目-合并K个排序链表

合并K个排序链表是我在刷LeetCode的时候遇到的题目,描述大致如下:合并k个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6一开始的思路是类似于合并两个有序链表的思路,就...

2019-08-01 21:51:48 169 3

原创 docker部署flask项目2 Docker Compose的简单使用

上一节中,在写好了Dockerfile之后,我们使用了两个命令:即docker build和docker run来构建镜像和运行基于该镜像的容器,这些命令在开发过程中是需要经常需要的,而Docker Compose就可以定义上面的操作;当然,Docker Compose的功能不止如此,它可以用YAML文件定义一组要启动的容器,以及容器运行时的属性。除此之外,它也可以指定一些运行时的属性来和其他容器...

2019-07-25 15:08:08 787

原创 docker部署flask项目1 使用gunicorn替代测试服务器

在程序开发过程中,往往会遇到环境配置和版本问题,而为了避免环境配置问题,对于python来说一般都会使用到虚拟环境,比如常用的virtualenv、pipenv等。当把项目部署到服务器上的时候,像virtualenv来说则不太方便了,这个时候就推荐使用Docker。Docker可以提供操作系统级别的虚拟环境,一个Docker镜像一般都包含一个完整的操作系统,而这些系统内部也有已经配置好的开发环...

2019-07-24 16:18:04 653

原创 pymongo的简单使用

MongoDB是典型的非关系型数据库,它的存储形式是BSON(Binary JSON),是类似于JSON格式的二进制存储。这里旨在介绍一些python3下pymongo库的一些简单用法。1.连接MongoDBpython下连接MongoDB需要用到pymongo库里面的MongoClient。这里有两种形式,一种是传递IP地址和端口即可:import pymongoMONGO_C...

2019-07-15 20:24:54 648

原创 FTP服务器的简单部署

本文基于阿里云服务器。一.FTPFTP的全称为File Transfer Protocol,又称之为文件传输协议。FTP是比较古老的一个传输协议之一,主要用来在服务器和客户端之间进行文件的传输,FTP使用的是明码传输,所以现在一般建议使用安全但功能较少的vsFTPd软件。FTP服务器除了可以进行文件的传输之外,还内含了以下几个主要的功能:不同等级的用户身份。从上往下依次为实体账户(...

2019-07-03 20:36:53 333

原创 云服务器下docker部署scrapyd之一:Scrapyd的容器化

一.部署前的准备在开始部署之前,先梳理一下几个关键词:1.ScrapyScrapy是一个基于Twisted的异步处理框架,是纯Python实现的爬虫框架。Scrapy由Spider、Middleware、Downloader、Pipeline等组成,各个模块之间耦合度低,扩展性强。Scrapy的整体结构如下:图1:Scrapy架构2.ScrapydScrapyd是一...

2019-05-30 16:15:06 2148

原创 云服务器部署flask+nameko的安装

由于flask本身带有一个测试服务器,所以如果不考虑性能和压力的话,是可以不用使用其他服务器的。以下部署均在服务器上进行。一.使用测试服务器以官网所给的例子为例:from flask import Flaskapp = Flask(__name__)@app.route('/')def hello_world(): return 'Hello World!'if ...

2019-05-30 10:51:51 1504 4

原创 简单爬取github下载链接2:按照文件夹层级关系下载文件

上一篇的简单爬取github下载链接并没有考虑到遇到文件夹的情况,这次就针对文件夹的情况来对之前的代码进行一次更新。一般情况下,要下载各个文件并不算困难,只需要判断一下这个是文件还是文件夹;而加入了文件夹后就牵涉到了嵌套的关系,所以会稍微有些麻烦。一.日志log是我根据python提供的logging来调用了几个语句。简单地说,就是把警告及以上的写入到文件,把INFO以及以上的输出到控...

2019-05-29 17:15:02 1504

原创 云服务器下docker部署mongodb

mongodb作为非关系型数据库。本次配置是在阿里云服务器上配置。1.下载镜像首先可以通过以下指令获取有哪些镜像:docker search mongo显示列表如下:第一个为root仓库,也就是官方提供的mongo镜像,接着拉取这个镜像即可。docker pull mongo如果镜像下载过慢,则可以使用docker镜像加速器:①.ubunut下s...

2019-05-28 19:35:50 789

原创 python3 开发之一:classmethod和staticmethod

1.staticmethod对于一般的计算机语言,都会提供静态方法,这个方法可以认为是类的方法。即可以直接 类.方法(),也可以通过类的实例,也就是对象.方法()进行调用。就静态方法这方面来说,python语言和其他提供了静态方法的语言来说并没什么区别。比如在java中,main方法(主函数)就是一个静态方法。class Test{ public static void m...

2019-05-27 21:56:48 1039

原创 python实用小工具之一:BMFont位图导出脚本

在游戏开发中,尤其是对于移动端的游戏开发来说,直接使用TTF来进行渲染是非常消耗资源的;而且一般的游戏用到的字的个数都是有限的。针对以上几个弊端,就有人按照着活字印刷术的原理来设计了一个在游戏中常用的位图导出工具,比如windows下的bmfont、java写的hiero等等,用到文字比较多的一般是RPG游戏,如下图所示:图像来源:https://blog.csdn.net/lufy_leg...

2019-05-25 21:36:11 1152

原创 python3 常见问题以及解决办法

1.使用python3的csv模块写入文件时多一个空行这个问题主要出现在open函数中,应该为如下:fp = open(output, "w", encoding="utf-8", newline="")writer = csv.writer(fp)2.解析类似于“05::02:01,12”这样的时间上面的字符串可以自己根据文本进行解析,也可以使用time模块的函数进行解析...

2019-05-21 20:23:23 377

原创 flask项目部署到阿里云ubuntu服务器 uwsgi+nginx

1.为什么需要服务器?Web服务器都会使用一种叫做Web服务网关接口(Web Server Gateway Interface, WSGI)的协议,这是一种标准化的设计,它让Python应用(不局限于python)跟Web服务器能够轻松地通信。在用flask开发web项目的时候,程序员一般使用的是由Werkzeug提供的WSGI服务器,即development环境所使用的服务器;而像jav...

2019-05-09 16:30:04 1474

原创 python3 爬取网页报错:'gb2312' codec can't decode byte 0xb5 in position 154969: illegal multibyte sequence

前几天需要在网页上爬取信息,就使用到了requests库爬取网页,其中遇到的比较大的坑则是中文编码。python版本:3.72操作系统:windows10首先需要爬取网页信息。def parse_url(url, callback): """ 根据url爬取页面,若成功则调用回调函数 :param url: 链接 :param callback: ...

2019-05-07 14:09:05 3084 1

SDL_AniGif.zip

这个并不是我开发的,是一个外国人,好像从2006年起就没有更新过了, 它的初始版本是以SDL1.x写的,因为我现在主要使用SDL2 所以就稍微改变了下,发现果然能运行,而且还挺好用的, SDL_AniGIF是我更改后的文件,

2019-10-02

卡马克 javame代码、文档和SDL代码

卡马克卷轴的文档、java me示例代码和SDL示例代码。 其中文档和java me为网络搜集。 SDL代码为本人编写。

2019-04-26

Windows下的dosbox

Windows下的dosbox,其内包含着几个汇编代码,并且内部有着masm、link等几个dos程序来编译链接汇编代码。

2018-12-11

农场游戏-碎图

农场游戏碎图,以及对应的texture packer工程。勉强收一分。

2018-12-01

OpenGL超级宝典所用的GLTools源码

OpenGL 超级宝典中所使用的GLTools源码,可cmake进行编译

2018-10-02

植物大战僵尸1

第一节代码,如果使用cocos2dx需要部分修改

2017-05-19

空空如也

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

TA关注的人

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