當前位置: 華文星空 > 新聞

那些整天寫程式碼的電腦學生到底在寫什麽?

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年。