做过的和正在做的项目

这里是我做过的和正在做的一些项目、作业还有一些其他好玩的东西。有些是课程作业,也有些是自己空闲的时候做的一些好玩的东西,如果GitHub地址是空的或者点不动的话,那就肯定是导师或实验室的项目不给开源罢了。

0x00 Preface

除非有特殊说明,否则开源协议均为GPLv3.

0x01 Java Projects

搜狗搜索落地页风控审核引擎

Key

Value

GitHub

任职搜狗期间的公司项目 - 非开源

开始时间

Jun 4, 2020

竣工时间

-

所用框架

Flink, Kafka, Puppeteer (in Python), Scrapy (in Python)

数据库及驱动

MySQL/Flink JDBC Output Format

标记

主要负责对网页行为特征和内容特征的提取模块

说明

支持日均百万级的落地页巡检

依据搜狗搜索落地页访问情况的PV日志,针对广告主所投放的落地页内容进行巡检分析,及时发现其中的违法违规网站,并依据相关规则进行自动封停或判罚,为公司规避法律风险。

我主要负责对落地页URL进行抓取,并使用Pyppeteer对抓取到的HTML进行渲染,然后从渲染后的页面中提取相关网页的行为特征(死链、跳转、恶意劫持等),以及网页的内容特征(是否含有APP下载内容、网页中所包含的外链、假搜索等),并依据相关法律法规及政策,召回不合规及违法的落地页。

同时负责解决各种对抗性抓取问题。例如有些不法网站,采用无头浏览器识别技术对抗抓取,那我们就依据其开发了相应的反识别的技术。

分布式爬虫

Key

Value

GitHub

给研究生导师做的 - 非开源

开始时间

Nov 1, 2019 (由我接手)

竣工时间

Feb 12, 2020

所用框架

Spring, Jsoup

数据库及驱动

MySQL

标记

独立开发中。。。

说明

一个科研项目的数据集获取部分

这是一个科研项目的一部分,这个科研项目主旨在分析全国300家高等院校的本科生(高考)以及研究生(考研)录取情况,使用机器学习的相关方法训练模型。对高考而言,考生可以给出相关考试分数、全省排名和预期的专业/学校信息,评估出一个大致的录取概率以及学校/志愿推荐。对于研究生入学考试而言,考生可给出相关考试分数、报名院校以及专业代号评估出一个大致的录取概率以及在录取概率极低情况下的一个调剂志愿推荐。

而我所做的部分就是数据集的获取,实现一个分布式的爬虫以便爬取名单中的300家高校的招生信息网上的相关信息,例如:自主招生复试名单及通过名单及其优惠信息(例如:降30分录取)、往年录取最高/最低分、研究生拟录取信息、调剂复试安排等。

一个类似于网易蜂巢的Docker镜像中心

Key

Value

GitHub

镜像中心, 单点鉴授权服务, Docker Registry消息传播器

开始时间

Feb 14, 2019

竣工时间

Jun 2, 2019

所用框架

Spring boot, Spring Security, jjwt, fastjson, ActiveMQ

数据库及驱动

MySQL, Spring Data JPA+Redis, Spring Data Redis

标记

独自完成

说明

本科毕业设计项目

基于Docker Registry基础上设计了一个自己的Docker镜像中心,当Docker Registry内部发生变化时通过预先配置的Docker Registry Notification机制向Docker Registry消息传播器传播变化信息。消息传播器收到信息之后,对消息进行预处理和重新封装传播到ActiveMQ消息总线上,镜像中心内部配置有相关消息的消费者程序,对相关信息进行进一步处理以及对必要的数据进行持久化。单点鉴授权服务旨在实现用户的单点登陆和权限分配,基于Json Web Token的鉴授权服务可以避免在服务器端存储权限信息上下文。Redis主要用于存储docker的镜像元信息(每一个镜像分层所产生的表现层(manifest)的SHA-256值),以便docker registry可以快速判断镜像分层中哪些已经在服务端中,哪些不在,这样docker push的过程中就可以只上传不在服务端中的部分了。镜像存储服务使用阿里云OSS对象存储

E-store在线图书商城 - 服务端

Key

Value

GitHub

E-BookStore

开始时间

July 4, 2018

竣工时间

July 13, 2018

所用框架

Spring boot, Spring Security, Gson, docker-maven-plugin

数据库及驱动

MySQL, Spring Data JPA, Tomcat JDBC Pool+Redis, lettuce

标记

独自完成

说明

本科Java EE课程实训项目

这是本科阶段一次课程实训的作业,出于敏(tou)捷(lan)开发的缘故,当时借用了很多下面这个项目的工作和代码。这是一个在线图书商城的项目,界面什么的完全仿着淘宝首页做的。可以实现浏览商品、搜索商品(未使用ElasticSearch等搜索引擎,而是基于SQL的通配符查找)、商品详细信息的增删改查、加入购物车、下单、付款以及物流跟踪(通过调用免费版的快递100物流查询API实现)等一系列功能。当时想做但没做的唯一的遗憾就是没有试着接入一下微信/支付宝支付的测试接口。

山东理工大学CIL实验室协同办公系统 - 服务端

Key

Value

GitHub

CILManagement-Server

开始时间

Feb 13, 2018

竣工时间

Apr 25, 2018

所用框架

Spring, Spring MVC, Spring Security, Spring Session, Fastjson

数据库及驱动

MySQL, Tomcat JDBC Pool, MyBatis+Redis, lettuce

标记

独自完成

说明

本科实验室内部自用项目

这个项目已经在实验室内部上线使用,服务端旨在提供一套符合Restful API标准的数据接口,这套接口可被任意语言实现的客户端调用。系统主要用于规范实验室内部器材的租借管理(因为学校资产审查的时候,丢了是要老师赔钱的,所以必需规范器材的流向),以及实验室内部的项目管理,同时人员可以在平台上向老师提交工作日报/周报,以便实验室老师可以更方便地管理实验室成员的工作日程和进度。

Web Talk在线客服系统

Key

Value

GitHub

本科实验室项目 - 非开源

开始时间

N/A

竣工时间

June 25, 2017

所用框架

Spring, Spring MVC, jackson, log4j

数据库及驱动

MySQL, MyBatis

标记

小组协同开发 - 我作为实验室的技术总负责人

说明

本科实验室外接企业项目

一个网页内嵌对话框式的在线客服系统,发起对话后可与人工客服进行聊天。这个项目接手过来之后,内部是基本成型的,可以说是一个半成品的状态。原开发者团队因为与公司发生纠纷,罢工不干了,然后就由我们接手了。内部很多业务逻辑接口已经打桩但没有实现,我当时作为实验室的技术总负责人,带领几位同学,重新接手此项目,依据原开发者留下的零星的一点设计文档和需求说明,给他重新完整实现了出来。但遗憾的是项目最终没有上线,同时实验室导师拒绝了这个项目的开源请求。

0x02 Python Projects

搜狗验证码打码平台

Key

Value

GitHub

任职搜狗期间的公司项目 - 非开源

开始时间

Feb 22, 2021

竣工时间

-

所用框架

OpenCV, Milvus, Keras, TensorFlow

主要算法

SIFT, RotNet, VGG19

标记

独自完成针对图片旋转验证码的打码部分,并将打码成功率优化到83.33%

说明

为公司节省日均2000+元的第三方打码平台的调用成本

我所工作的部分呢,主要针对此类(点击可查看论文)图片旋转验证码进行打码工作。我针对两种不同的情况提出了两种不同的解决方案。一种是,我们已经提前枚举出了对方的验证码图库(Milvus+SIFT),第二种则是我们在没有任何先验知识情况下的打码模型(RotNet)。详细可参考我所公开的技术分享PPT。

同时探究了不同噪声(高斯噪声、椒盐噪声)对打码准确率的影响,以及使用不同的滤波算法(均值滤波、中值滤波)降噪后对准确率的影响。

搜狗移动端数据抓取平台

Key

Value

GitHub

任职搜狗期间的公司项目 - 非开源

开始时间

Apr 2, 2020

竣工时间

Nov 2, 2020

所用框架

Appium, OpenATX, Flask, Mitmproxy, Quatz

数据库及驱动

MySQL/pymysql

标记

2人协作开发,90%以上的代码由我贡献

说明

支持对25款APP内广告的日常抓取任务

项目旨在使用手机真机对一些APP内的广告进行抓取。为用户提供一套封装好的上层Python SDK以屏蔽掉底层不同Android手机和不同版本Android系统之间的区别,使用户可以通过简单的Python代码来实现复杂的手机操控、挂代理、以及获取页面展现元素等功能。同时提供一套基于Quatz的调度系统,使用户可以使用cron表达式配置好爬虫的执行时间,以定时调度手机执行相关爬虫任务。

在开发这个项目的过程中,我提出可以使用 docker-andro 项目,在Linux服务器上基于docker跑起一套虚拟的Android系统,以降低使用手机真机进行抓取时的高成本问题。但由于此项目的作者因为ARM on x86的性能问题已经停止维护ARM版本的Android docker镜像了,同时我们亟待抓取的几乎所有的APP都只有ARM版本的,没有x86版本的,而且我们也没找到合适的指令翻译器,可以在二者之间做一个转换,因此这个设想被勒令放弃。

茉莉柠檬茶图像搜索引擎

Key

Value

GitHub

论文发表之前暂不方便开源

开始时间

Sept 1, 2020

竣工时间

-

所用框架

Keras, sklearn, OpenCV, Flask

主要算法

ORB, SIFT, VGG19, PCA, SVD

标记

独自完成

说明

研究生科研项目

一款图像搜索引擎,输入一张图片,在目标图片数据库里面检索与之最为相似的top k张图片并输出。

0x03 C/C++ Projects

山东理工大学辩论赛计时系统

Key

Value

GitHub

DebateTimer

开始时间

Apr 20, 2017

竣工时间

May 9, 2017

所用框架

MFC, AFX, CDC 绘图, jsoncpp

数据库及驱动

N/A

标记

独自完成

说明

已在山东理工大学齐鲁医药学院得以广泛的应用

大二的时候应老师要求,给我们学校法学院辩论赛开发了一个专属计时器程序,后来也是没想到,这个程序居然得到了广泛的应用,在我校校际辩论赛的时候还传播到了别的学校,有了很多用户,我有在自己写的程序里面植入自己联系方式的习惯,于是得益于此,也让我认识了很多人。现在这个程序已交由我校计算机学院通信工程专业的一个学弟维护了。

搜狗输入法输入速度排名作弊器

Key

Value

GitHub

SogouInputTool.cpp

开始时间

Feb 7, 2017

竣工时间

Feb 7, 2017

所用框架

Windows API

数据库及驱动

N/A

标记

独自完成

说明

不解释,看图:

山东理工大学ACM答案爬虫

Key

Value

GitHub

ACM Spider

开始时间

Mar 20, 2017

竣工时间

Mar 27, 2017

所用框架

MFC, AFX, libcurl

数据库及驱动

N/A

标记

独自完成

说明

爬答案的

这其实是一个偷懒的工具,大二时数据结构平时分里面会计算平时在我校ACM平台的提交情况,当时就是不想写那些作业(哈哈,不要学我),然后写了这么一个爬虫,把别人的答案爬下来,然后提交到我的账号上。

酒店管理系统

Key

Value

GitHub

Hotel System

开始时间

Jan 4, 2017

竣工时间

Jan 12, 2017

所用框架

MFC, AFX, Windows API

数据库及驱动

MySQL/MySQL C++ Connector

标记

独自完成

说明

本科数据结构课程实训作品

这是一个酒店管理系统,为了省(tou)事(lan),没有写服务端,而是客户端直接连接数据库操纵数据。这是不安全的,而且当时写的时候,还把数据库地址和数据库连接的用户名密码都写死进程序里了。不过这个程序还是很不错的,用了很多MFC的控件。

带GUI的黑白棋游戏

Key

Value

GitHub

Othello

开始时间

Jul 8, 2016

竣工时间

Jul 10, 2016

所用框架

MFC, ATL, AFX, Windows API

数据库及驱动

N/A

标记

独自完成

说明

大一C语言程序设计结课作业

一个黑白棋游戏程序,只能双人对战,没有AI加持。对棋子落点的判断是完全基于鼠标点击坐标的,鼠标点击坐标相对于棋盘右上角(0, 0)点的相对坐标,然后分别除以棋盘上每个方格的大小算出来是第几格,这么设计有个问题,就是在现在的Win10系统下,1920x1080的分辨率会默认全局125%的缩放,程序在缩放状态下的显示和鼠标坐标的判断是有问题的,需在程序兼容性选项卡里面禁用Win10全屏优化以及高DPI缩放行为调整为“应用程序”。

为梦想加油!

Key

Value

GitHub

ForMyDream

开始时间

Aug 26, 2016

竣工时间

Aug 28, 2016

所用框架

MFC, ATL, AFX, Windows API

数据库及驱动

N/A

标记

独自完成

说明

/* 为梦想,加油! */

开发这个Demo的目的是为了激励我去学习,每隔一段固定的时间,就会以淡入淡出效果演示一个对话框,对话框上是一副图片:为梦想,加油!

0x04 英文技术文献翻译

RESTful API Tutorial

Key

Value

URLs

RESTful API Tutorial

开始时间

May 5, 2018

竣工时间

June 6, 2018

排版方式

Markdown

规模

约14000字(译文汉语部分)

译自国外某网站的Restful API设计教程,加上了很多译者注,也算是我的一些理解吧。

0x05 博客、文集以及相关文稿

面试题总结

Key

Value

GitHub

interview-preparing

开始时间

Mar 6, 2019

竣工时间

依然还在施工中

排版方式

LATEX\LaTeX

规模

83页A4纸,具体字数不详

就是总结了很多面试题呀,主要面向Java语言,包含了Java后端开发中的几个比较常见的框架(Spring, MyBatis等),以及一些计算机基础学科(计算机网络、数据库原理等)的相关知识。