当前位置: 华文星空 > 新闻

那些整天写代码的计算机学生到底在写什么?

2023-12-04新闻

大一的时候用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年。