一年一度的程式員節日到了,小孟祝大家往后寫代碼無bug,不脫發,財務自由,
對于1024節日,CSDN也舉辦了技術交流大會,我的很多博主小伙伴也都去了,因為我離的比較遠就沒有去,
最近,沒事的時候,拍拍視頻,和大家分享下技術、私活、職場經驗,
沒想到的是,我竟然被噴上了熱搜,罵聲一片!搞不懂我做錯什么了!
三周我開發完了一個小程式的系統,本來是很正常的一個系統,一個很正常的開發周期,
前面的這個系統,我也在CSDN發了文章:
小孟5w接了個盲盒小程式,三周開發完畢!
三周開發完被噴,用分庫分表被噴,有頭發被噴,三周開發完很難嗎?現在框架這么多,關鍵我重構了一套屬于自己的系統,現在哪個公司開發讓你從搭建框架開始寫?,大部分的crud,我都可以一鍵生成,復雜邏輯的我才會去寫,很多系統我一兩天就搞完,如果我說這個,還不被罵s!



看下我分享的技術堆疊:

下面是系統的核心代碼
@Controller
@RequestMapping("/addressInfo")
public class AddressInfoController extends BaseController {
@Resource
private AddressInfoService addressInfoService;
@MustSetForOrderNoAnnotation
@AuthenticationAnnotation
@SetMenuAnnotation
@RequestMapping("listPage")
public ModelAndView listPage(ModelAndView modelAndView) {
modelAndView.setViewName("addressInfo/list");
return modelAndView;
}
@MustSetForOrderNoAnnotation
@AuthenticationAnnotation
@RequestMapping("addPage")
public String addPage() {
return "addressInfo/add";
}
@MustSetForOrderNoAnnotation
@AuthenticationAnnotation
@RequestMapping("editPage")
public ModelAndView editPage(ModelAndView modelAndView, Long id) {
modelAndView.addObject("id", id);
modelAndView.setViewName("addressInfo/edit");
return modelAndView;
}
@MustSetForOrderNoAnnotation
@AuthenticationAnnotation
@RequestMapping("/getList")
@ResponseBody
public ReturnDataForLayui getList(AddressInfo addressInfo) {
addressInfo.setIsDeleted(PageBean.isDeletedNo);
return addressInfoService.getList(addressInfo);
}
@MustSetForOrderNoAnnotation
@AuthenticationAnnotation
@RequestMapping("/add")
@ResponseBody
public ReturnData add(AddressInfo addressInfo) {
return addressInfoService.add(addressInfo);
}
@MustSetForOrderNoAnnotation
@AuthenticationAnnotation
@RequestMapping("/update")
@ResponseBody
public ReturnData update(AddressInfo addressInfo) {
return addressInfoService.update(addressInfo);
}
@MustSetForOrderNoAnnotation
@AuthenticationAnnotation
@RequestMapping("/updateDelete")
@ResponseBody
public ReturnData updateDelete(AddressInfo addressInfo) {
addressInfo.setIsDeleted(PageBean.isDeletedYes);
return addressInfoService.updateDelete(addressInfo);
}
@MustSetForOrderNoAnnotation
@AuthenticationAnnotation
@RequestMapping("/updateDeleteBatch")
@ResponseBody
public ReturnData updateDeleteBatch(String ids) {
List<Long> idList = JSON.parseArray(ids, Long.class);
return addressInfoService.updateDeleteBatch(idList);
}
}
@Controller
@RequestMapping("/blindBoxInfo")
public class BlindBoxInfoController extends BaseController {
@Resource
private BlindBoxInfoService blindBoxInfoService;
@MustSetForOrderNoAnnotation
@AuthenticationAnnotation
@SetMenuAnnotation
@RequestMapping("listPage")
public ModelAndView listPage(ModelAndView modelAndView) {
modelAndView.setViewName("blindBoxInfo/list");
return modelAndView;
}
@MustSetForOrderNoAnnotation
@AuthenticationAnnotation
@RequestMapping("addPage")
public String addPage() {
return "blindBoxInfo/add";
}
@MustSetForOrderNoAnnotation
@AuthenticationAnnotation
@RequestMapping("editPage")
public ModelAndView editPage(ModelAndView modelAndView, Long id) {
modelAndView.addObject("id", id);
modelAndView.setViewName("blindBoxInfo/edit");
return modelAndView;
}
@MustSetForOrderNoAnnotation
@AuthenticationAnnotation
@RequestMapping("goodsLevelEditPage")
public ModelAndView goodsLevelEditPage(ModelAndView modelAndView, Long id) {
BlindBoxInfo blindBoxInfo = new BlindBoxInfo();
blindBoxInfo.setId(id);
ReturnDataForLayui list = blindBoxInfoService.getList(blindBoxInfo);
ArrayList<BlindBoxInfo> blindBoxInfos = (ArrayList<BlindBoxInfo>) list.getData();
BlindBoxInfo blindBoxInfoDb = blindBoxInfos.get(0);
String goodsLevel = blindBoxInfoDb.getGoodsLevel();
GoodsLevelInfo goodsLevelInfo = JSONUtils.json2pojo(goodsLevel, GoodsLevelInfo.class);
if (goodsLevelInfo == null) {
goodsLevelInfo = new GoodsLevelInfo();
}
goodsLevelInfo.setId(id);
modelAndView.addObject("goodsLevelInfo", goodsLevelInfo);
modelAndView.setViewName("blindBoxInfo/goodsLevelEdit");
return modelAndView;
}
@MustSetForOrderNoAnnotation
@AuthenticationAnnotation
@RequestMapping("/getList")
@ResponseBody
public ReturnDataForLayui getList(BlindBoxInfo blindBoxInfo) {
blindBoxInfo.setIsDeleted(PageBean.isDeletedNo);
return blindBoxInfoService.getList(blindBoxInfo);
}
@MustSetForOrderNoAnnotation
@AuthenticationAnnotation
@RequestMapping("/add")
@ResponseBody
public ReturnData add(BlindBoxInfo blindBoxInfo) {
return blindBoxInfoService.add(blindBoxInfo);
}
@MustSetForOrderNoAnnotation
@AuthenticationAnnotation
@RequestMapping("/update")
@ResponseBody
public ReturnData update(BlindBoxInfo blindBoxInfo) {
return blindBoxInfoService.update(blindBoxInfo);
}
@MustSetForOrderNoAnnotation
@AuthenticationAnnotation
@RequestMapping("/updateGoodsLevel")
@ResponseBody
public ReturnData updateGoodsLevel(GoodsLevelInfo goodsLevelInfo) {
return blindBoxInfoService.updateGoodsLevel(goodsLevelInfo);
}
@MustSetForOrderNoAnnotation
@AuthenticationAnnotation
@RequestMapping("/updateIsOnSale")
@ResponseBody
public ReturnData updateIsOnSale(BlindBoxInfo blindBoxInfo) {
return blindBoxInfoService.updateIsOnSale(blindBoxInfo);
}
@MustSetForOrderNoAnnotation
@AuthenticationAnnotation
@RequestMapping("/updateDelete")
@ResponseBody
public ReturnData updateDelete(BlindBoxInfo blindBoxInfo) {
blindBoxInfo.setIsDeleted(PageBean.isDeletedYes);
return blindBoxInfoService.updateDelete(blindBoxInfo);
}
@MustSetForOrderNoAnnotation
@AuthenticationAnnotation
@RequestMapping("/updateDeleteBatch")
@ResponseBody
public ReturnData updateDeleteBatch(String ids) {
List<Long> idList = JSON.parseArray(ids, Long.class);
return blindBoxInfoService.updateDeleteBatch(idList);
}
系統的核心資料庫:
DROP TABLE IF EXISTS `address_info`;
CREATE TABLE `address_info` (
`id` bigint(19) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主鍵id',
`person_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '姓名',
`phone` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '電話',
`gender` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '性別',
`address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '地址',
`user_id` bigint(19) NOT NULL COMMENT '用戶',
`is_deleted` char(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '是否洗掉',
`gmt_create` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '創建時間',
`gmt_update` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新時間',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '識訓地址資訊' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of address_info
-- ----------------------------
INSERT INTO `address_info` VALUES (1, 'zhy', '18034272031', '2', '河北省 衡水市', 1, '0', '2021-09-08 14:39:49', '2021-09-08 15:37:20');
INSERT INTO `address_info` VALUES (2, '張紅雨', '18034272031', '2', '北京市 海淀區 中央電視臺大樓對面 富爾大廈 3008', 1, '0', '2021-09-08 15:21:00', '2021-09-08 15:37:00');
-- ----------------------------
-- Table structure for blind_box_info
-- ----------------------------
DROP TABLE IF EXISTS `blind_box_info`;
CREATE TABLE `blind_box_info` (
`id` bigint(19) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主鍵id',
`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '標題',
`description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述',
`price` bigint(19) NOT NULL COMMENT '單價',
`sort` int(9) NOT NULL COMMENT '排序',
`is_on_sale` char(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '是否上架',
`goods_level` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '概率',
`is_deleted` char(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '是否洗掉',
`gmt_create` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '創建時間',
`gmt_update` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新時間',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '盲盒資訊' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of blind_box_info
-- ----------------------------
INSERT INTO `blind_box_info` VALUES (1, '擎天柱重裝上陣', '變形金剛變身“咔咔咔咔咔咔”', 1, 0, '1', '{\"id\":1,\"level1\":25,\"level2\":25,\"level3\":25,\"level4\":25}', '0', '2021-09-02 17:21:15', '2021-09-19 13:30:47');
INSERT INTO `blind_box_info` VALUES (2, '蘋果iPhone純享', '蘋果手機筆記本平板主機耳機', 1, 0, '1', '{\"id\":2,\"level1\":0.01,\"level2\":0.01,\"level3\":0.01,\"level4\":99.97}', '0', '2021-09-02 17:35:39', '2021-09-19 13:30:48');
INSERT INTO `blind_box_info` VALUES (3, '燃燒生命吧!你的可能性是無限可能,無所不能', '概率所得限量真骨雕新品!', 11, 1, '1', '{\"id\":3,\"level1\":0.01,\"level2\":0.02,\"level3\":0.03,\"level4\":99.94}', '0', '2021-09-02 17:53:36', '2021-09-12 21:44:13');
INSERT INTO `blind_box_info` VALUES (4, '111', '111', 1100, 1, '1', '{\"id\":null,\"level1\":25,\"level2\":25,\"level3\":25,\"level4\":25}', '0', '2021-09-19 13:32:10', '2021-09-19 13:32:27');
-- ----------------------------
-- Table structure for file_upload_info
-- ----------------------------
DROP TABLE IF EXISTS `file_upload_info`;
CREATE TABLE `file_upload_info` (
`id` bigint(19) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主鍵id',
`path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '路徑',
`file_size` bigint(19) NULL DEFAULT NULL COMMENT '大小',
`data_from` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '來源',
`is_deleted` char(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '是否洗掉',
`gmt_create` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '創建時間',
`gmt_update` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新時間',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 102 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '檔案上傳資訊' ROW_FORMAT = Dynamic;
被噴其實我的心還比較平靜,但我知道大部分的程式員在公司做的還是比較低端的代碼,一直CRUD,沒有自己封裝的系統,沒有重構過代碼,接私活的話,考察的能力比較全,
整個專案,需求、原型設計、UI、前端、后端、資料庫設計,基本都是我自己干完的,
作為程式員,如果你也想全能,下面可以看下我寫的,如果我上面寫的瞎吹,可以直接劃走 ,
第一, 喜歡搞技術,往架構師、CTO邁步
這是我搞技術的時候,最初的夢想,也是最純粹的想法,
開始寫程式的時候,沒有任何的我雜念,參加比賽、給導師做專案、泡圖書館、深夜寫代碼,
做了8年程式員后,我發現我不再適合做程式員,因為我做不到架構師的那個層面,
我沒有造輪子的心,雖然也在學習底層、演算法,但是和我的博士老婆對比,我找出了差距,
如果你作業幾年后,覺得還喜歡代碼,喜歡研究技術,就往架構師、CTO邁步,
具體需要什么要的能力,看一些招聘網站就知道了,例如:


第二, 往管理層邁步
如果你覺得寫代碼不行,可以去做業務,專精業務,當然職場有kpi,有勾心斗角,這需要你情商較高,有一定的溝通能力,
這種小孟就不適合,我原來經常懟產品經理,
但是僅僅靠溝通、關系遠遠是不夠的,要成為管理者,也需要技術,不然也說服不了眾人呀,比如Java這一塊
你要懂:
Java基礎;
SSM框架;
SpringBoot;
微服務;
JDK底層;
中間件;
快取;
資料庫;
Vue、React等前端,
如果你沒有學習的框架,看我整理的這個學習的路線:

第三,創業
我創業這幾年,感受頗深,
孤獨、無奈、沮喪,鬼tm直到我怎么過來的,關鍵是有時候父母的不理解,一直數落我:
你說你一個碩士,不找個好點的單位上班,整天游蕩什么,和一個無業游民有什么區別?
我知道自己想要什么,年輕的時候不拼一把,難道要等到50歲的時候拼 嗎?父母是傳統的父母,我尊重、理解他們的想法,但是我是一個獨立的個體,我有自己的思想和追求,失敗了,我會承擔后果,其實也沒什么后果,大不了,再回職場敲代碼,
還好媳婦比較支持我,有一個人支持我就夠了,
我深知創業和風險成正比,上班一個月兩三萬是比較安穩,但是改變不了現狀,現在的收入比原來也好了很多,單單zfb的收入都還可以,商業的單子收益更大,

創業操心比較多,就是費心的事,為了節省成本,公司的技術都是我來做,還有其他的很多事,
現在我發布的文章、視頻很多都是我凌晨一兩點搞定的,
縱觀我所有的技術朋友,他們都有一個共同的特點:
有非常清晰的職業規劃,
夢想還是有的,萬一實作呢!乾坤未定,你我皆黑馬!
雞血打完了,1024快樂,我去繼續碼代碼了!
求個三連,點贊,收藏,更多干貨的更新ing:

為了幫助大家快速提高技術,我整理了很多100個專案,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/335222.html
標籤:其他
