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