大一的时候用C语言写acm水题,学校规定是AC200道题目后可进集训队。后来觉得自己不是这块料,到大二退了。舍友一直参加集训直到毕业。我刷的200道水题我感觉很有用,写一些简单的不需要特殊算法的代码片段都飞快。
想起一件事,我们大一的时候不让带电脑,宿舍也没网,acm的代码都是在在图书馆、机房、网吧里写的。有时候先把题记到纸上,在纸上写个差不多下次去网吧打出来。学校南门有个网吧电脑配置贼差,所以比较便宜一小时才一块五。有一次隔壁传媒学院的老乡找我去网吧玩,我在一边敲代码,把我惊为天人。(大二之后可以带电脑、寝室办网,但23点后熄灯断电断网)
大一的时候还用C语言写了大数加减乘除,发到百度文库,获得的积分够我后面随意下载。但是刚才登录看了下,「我的上传」是空,积分是0,万恶的百度。我直接关键词搜索搜到了,文档没标我的名字。https:// wenku.baidu.com/view/50 57fb7f1711cc7931b7164d.html?fr=income2-doc-search&_wkts_=1704853704260&wkQuery=c语言大数加法
大二的时候学了java(选修可选C#或java,我觉得Java更有前途,后来证明我是对的,工作后第一家公司就开始.net转Java) 大作业写了一个黑白棋游戏,照着ab搜索的伪代码写了人机对战,没加剪枝只能搜3层。(补充:舍友的大作业写了一个益智游戏,逻辑参考的一个flash游戏非常精致,被老师质疑不是自己写的。我写的代码太丑没被质疑)被同学指出这个几千行在一个类的代码不面向对象。暑期小学期和同学合作写了一个连连看的游戏,我靠try catch异常的方法判断数组越界(也被吐槽了)。搜了一个寻路算法完成了判断消除的逻辑。
好像还有个安卓的选修课,写了一个孕期日历的app和一个基于百度地图的app
还有个网络编程的选修课我写了一个我画你猜。
大三的时候没事自己写小游戏,超级玛丽类(特别好玩可惜代码丢了)的,还有台球。台球的碰撞算法是自己写的,草稿纸列了2个方程算了好几天还算错了,复习了一遍动能定理 动量定理 好不容易算出来2球各个角度、力度碰撞后的速度和角度。(代码在java吧有发布 但现在账号被封了,百度贴吧账号被封所有帖子就看不到就挺sb的)我是建立的直角坐标系 分解成x轴y轴
贴吧帖子没了找到了csdn文章:https:// blog.csdn.net/gaboolic/ article/details/7866459
后来有个同学叫我一起去写ssh网站,一个月赚个几百块。还接过写毕设的活。
大四上主要写毕设+答辩了。大四下就去实习+工作了,一直到毕业。毕设比较简单是写了一个管理系统,但没有用任何框架,都自己封装的。只有一段反编译后的代码片段了。于是orm框架、mvc框架基本对我来说没啥神秘性了。
public boolean update(T e) {
Object obj = null;
try {
obj = class.forName(this.getEntityPathName()).newInstance();
} catch (Exception var24) {
var24.printStackTrace();
}
obj = obj.get class().cast(e);
Field[] fields = obj.get class().getDeclaredFields();
String beanName = this.getEntityName();
String tableName = this.getProperty(beanName);
String primary = this.getProperty(tableName + ".id");
String sql = String.format("update %s set ", tableName);
String item;
for(int i = 0; i < fields.length; ++i) {
if (i == 0) {
item = "%s = ? ";
} else {
item = ",%s = ? ";
}
item = String.format(item, fields[i].getName());
sql = sql + item;
}
String whereSql = String.format("where %s = ?", primary);
sql = sql + whereSql;
System.out.println(sql);
item = null;
Connection conn = ConnectionFactory.getConnection();
try {
PreparedStatement stmt = conn.prepareStatement(sql);
this.setStmt(obj, stmt);
Method method = stmt.get class().getMethod("setObject", Integer.TYPE, Object. class);
fields[0].setAccessible(true);
Object value = fields[0].get(obj);
method.invoke(stmt, fields.length + 1, value);
int i = stmt.executeUpdate();
stmt.close();
boolean var15 = i > 0;
return var15;
} catch (Exception var25) {
var25.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException var23) {
var23.printStackTrace();
}
}
return false;
}
期间在贴吧看到一个帖子问怎么写main方法实现文件服务器,就写了一个。然后把servlet也研究透了。文件服务器+servlet不就是tomcat吗?代码见 https:// github.com/gaboolic/jav a-socket-server 当年没用maven 改成Maven项目重新上传的。仅用main方法 不用库 几百行代码启动war包
2014毕业。毕业后2年写过 自动玩弹弹堂的程序 https:// github.com/gaboolic/aut o-machine 识别屏幕像素,计算距离,计算角度和力度。那会还不会卷积神经网络。
后来自学神经网络,写了java版的cnn https:// github.com/gaboolic/cnn 识别字母数字验证码毫无压力,然后各大网站验证码都升级了(因为连我都学会了就等于烂大街了)
再后来重新玩以前玩过的一个回合制网游。一边玩一边把通信协议破了,持续写了好几年
这些年还接过一些外包。写后端。赚的是辛苦钱。主要是毕业前四年。后来性价比太低不做了。有几个做的很不错的项目。比如有一个类似日事情的日程+团队管理。前端页面我自学了几天angularjs,拖拽也解决了。是2015年 https:// github.com/gaboolic/tea mtodo
还有一些提高自己生产力的项目。比如把数据库表结构转java bean、mybatis xml的项目。看了下类创建时间在2013-2016 核心代码用了metaData.getColumns、反射、freemarker,生成的比mybatis generrator好用多了
public List<String> getTableList() throws SQLException {
ResultSet rs = metaData.getTables(null, "%", "%",
new String[]{"TABLE"});
List<String> tableLists = null;
tableLists = new ArrayList<String>();
while (rs.next()) {
if (rs.getString("TABLE_NAME").toUpperCase().contains("DEL")) {
continue;
}
tableLists.add(rs.getString("TABLE_NAME"));
}
return tableLists;
}
public Map<String, FieldInfo> getField(String tableName) throws SQLException {
ResultSet rs = metaData.getColumns(null, "%", tableName, "%");
Map<String, FieldInfo> fieldMaps = new LinkedHashMap<>();
while (rs.next()) {
FieldInfo fieldInfo = new FieldInfo();
String columnName = rs.getString("COLUMN_NAME");
String columnType = rs.getString("TYPE_NAME");
String remarks = rs.getString("REMARKS");
fieldInfo.setColumnName(columnName);
fieldInfo.setColumnType(columnType);
fieldInfo.setComment(remarks);
fieldMaps.put(columnName, fieldInfo);
}
ResultSet pkRs = null;
try {
pkRs = metaData.getPrimaryKeys(dbname, "%", tableName);
} catch (Exception e) {
System.out.println(tableName + " getPrimaryKeys异常");
return null;
}
while (pkRs.next()) {
String pkColumnName = pkRs.getString("COLUMN_NAME");
FieldInfo fieldInfo = fieldMaps.get(pkColumnName);
if (fieldInfo != null) {
fieldInfo.setPk(true);
}
}
return fieldMaps;
}
去年还把多年前弃坑只写了一个界面的中国象棋 在chatgpt加持下补完了。https:// github.com/gaboolic/Chi neseChess
前几年2019年左右还自学过量化,有一些小心得。在某平台混了分享达人和优秀作者。邀请我去做量化矿工我没去,不如码农钱多,而且有业绩压力心累。2020年还算好,2023没几个基金赚钱的。
去年2023年,4行json配置(连代码都不是)搞了800多stars
2024年是我毕业第10年。