成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

第一個(gè)java后端項(xiàng)目總結(jié)

Hwg / 1881人閱讀

摘要:項(xiàng)目環(huán)境用于發(fā)送請(qǐng)求測(cè)試項(xiàng)目介紹這是一個(gè)商城項(xiàng)目,本來(lái)想起名叫項(xiàng)目,發(fā)現(xiàn)自己并沒(méi)有用。也是自己第一篇博客,記錄一下自己的學(xué)習(xí)過(guò)程,希望一方面能多做寫項(xiàng)目鍛煉能力,另一方面也讓自己在做完之后寫寫博客自己總結(jié)反思。

1.項(xiàng)目環(huán)境

IDEA15 spring4 mybatis3.4 mysql RestLet Client用于發(fā)送請(qǐng)求測(cè)試

2.項(xiàng)目介紹
這是一個(gè)商城項(xiàng)目,本來(lái)想起名叫SSM項(xiàng)目,發(fā)現(xiàn)自己并沒(méi)有用springmvc。
前端還在做,使用nodejs。也是自己第一篇博客,記錄一下自己的學(xué)習(xí)過(guò)程,希望一方面能多做寫項(xiàng)目鍛煉能力,另一方面也讓自己在做完之后寫寫博客自己總結(jié)反思。   
3.功能模塊

用戶模塊

管理員模塊(用戶管理和訂單管理)

商品模塊

購(gòu)物車模塊

訂單管理模塊

4.部分代碼記錄

規(guī)范化返回值

規(guī)范化了Controller的返回值,便于前端的使用,定義了統(tǒng)一的json序列化返回值ServiceResponse類

這樣在controller中的返回值就可以這樣寫

這樣,通過(guò)前端后端共同約定好一個(gè)json格式,可以大大加快開(kāi)發(fā)的速度。

通用工具類封裝

我們?cè)陂_(kāi)發(fā)過(guò)程中經(jīng)常會(huì)遇到配置問(wèn)價(jià)文件的讀取,時(shí)間類型字符和字符串之間的轉(zhuǎn)換,在商業(yè)項(xiàng)目中金額的計(jì)算的處理等等。尤其是在計(jì)算金額的時(shí)候發(fā)生精度丟失的問(wèn)題,例如

    public void fun()  {
        System.out.println(0.05+0.01);
        System.out.println(1.0-0.42);
        System.out.println(4.012*100);
        System.out.println(3.3/10.0);
    }
0.060000000000000005
0.5800000000000001
401.19999999999993
0.32999999999999996

這種問(wèn)題就會(huì)造成用戶下單時(shí)的錯(cuò)誤,這種錯(cuò)誤在商家一方一定是無(wú)法承受的。
所幸java給我們提供了一種解決方案,就是使用String的BigDecimal構(gòu)造器,一定是使用String類型的,如果使用double類型構(gòu)造器會(huì)造成更大的誤差。BigDecimal在用String做入?yún)⒌臅r(shí)候,能夠正確地把字符串轉(zhuǎn)化成真正精確的浮點(diǎn)數(shù),如果入?yún)⑹瞧渌愋?,那么?huì)調(diào)用Object.toString方法進(jìn)行轉(zhuǎn)化之后進(jìn)行輸出。而Double.toString會(huì)使用一定的精度來(lái)四舍五入double,然后再輸出。

    public static BigDecimal add(double v1, double v2) {
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.add(b2);
    } 

Po和Vo

Po:Persistent Object 持久化對(duì)象,可以理解為與數(shù)據(jù)庫(kù)字段一一對(duì)應(yīng)的對(duì)象
Vo:Value Object 值對(duì)象,用于在業(yè)務(wù)之間傳遞的對(duì)象,例如在用戶創(chuàng)建訂單的時(shí)候,創(chuàng)建一個(gè)OrderVo對(duì)象,將訂單信息,購(gòu)物車信息,收貨地址信息,用戶信息封裝在一起會(huì)更方便。如果直接使用Order PO, Cart Po,User Po這些持久對(duì)象,在封裝json傳遞給前端會(huì)造成很多麻煩。

封裝常量
將常量封裝起來(lái)使用會(huì)使整個(gè)項(xiàng)目看起來(lái)更整潔,提高復(fù)用性

對(duì)于普通常量:

public static final String EMAIL = "email";

對(duì)于一個(gè)對(duì)象的多個(gè)狀態(tài):

    public interface Cart {
        int CHECKED = 1;//購(gòu)物車選中
        int UNCHECKED = 0;//
        String LIMIT_NUM_FAIL = "LIMIT NUM FAIL";
        String LIMIT_NUM_SUCCESS = "LIMIT NUM SUCCESS";
    }

對(duì)于一個(gè)對(duì)象某個(gè)狀態(tài)需要多個(gè)字段:

    public enum OrderStatusEnum {
        CANCELED(0, "取消"),
        NO_PAY(10, "未支付"),
        PAID(20, "已付款"),
        SHIPPED(40, "已發(fā)貨"),
        ORDER_SUCCESS(50, "訂單完成"),
        ORDER_CLOSE(60, "訂單關(guān)閉");
        public static OrderStatusEnum codeof(int code) {
            for (OrderStatusEnum orderStatusEnum : values()) {
                if (orderStatusEnum.getCode() == code) {
                    return orderStatusEnum;
                }
            }
            throw new RuntimeException("沒(méi)有找到對(duì)應(yīng)枚舉");
        }
        OrderStatusEnum(int code, String value) {
            this.code = code;
            this.value = value;
        }
        private String value;
        private int code;
        public String getValue() {
            return value;
        }
        public void setValue(String value) {
            this.value = value;
        }
        public int getCode() {
            return code;
        }
        public void setCode(int code) {
            this.code = code;
        }
    }
規(guī)劃

最后在規(guī)劃一下自己接下來(lái)的學(xué)習(xí)路線吧,還是以java開(kāi)發(fā)為主,并關(guān)注一些node的發(fā)展?fàn)顩r。還是要多做幾個(gè)SSM、SSH的項(xiàng)目,看看spring的源碼,然后是springboot,就先這樣吧。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/70416.html

相關(guān)文章

  • Java 初學(xué)者做的一個(gè)微信小程序總結(jié)--關(guān)于Java基礎(chǔ)

    摘要:官方資料微信公眾平臺(tái)注冊(cè)小程序。官網(wǎng)開(kāi)發(fā)文檔社區(qū)開(kāi)發(fā)工具部署微信小程序微信小程序本身不需要部署,在微信開(kāi)發(fā)工具中直接上傳代碼就行。 為什么 學(xué)習(xí) Java 三年,目前已經(jīng)工作了2年,因?yàn)樽詫W(xué),基礎(chǔ)差,所以打算年末總結(jié)一下常見(jiàn)的基礎(chǔ)知識(shí)和面試點(diǎn); 也可以通過(guò)獨(dú)立做一個(gè)項(xiàng)目整合自己工作期間學(xué)習(xí)的知識(shí),加深印象。 但是想著回家或是平時(shí)手機(jī)用的多,做一款A(yù)PP和小程序很方便查看。 項(xiàng)目展示 本...

    mudiyouyou 評(píng)論0 收藏0
  • 類的加載機(jī)制 - 收藏集 - 掘金

    摘要:是現(xiàn)在廣泛流行的代從開(kāi)始學(xué)習(xí)系列之向提交代碼掘金讀完本文大概需要分鐘。為了進(jìn)行高效的垃圾回收,虛擬機(jī)把堆內(nèi)存劃分成新生代老年代和永久代中無(wú)永久代,使用實(shí)現(xiàn)三塊區(qū)域。 React Native 開(kāi)源項(xiàng)目 - 仿美團(tuán)客戶端 (Android、iOS 雙適配) - Android - 掘金推薦 React Native 學(xué)習(xí)好項(xiàng)目,仿照美團(tuán)客戶端... 極簡(jiǎn) GitHub 上手教程 - 工具...

    Gilbertat 評(píng)論0 收藏0
  • 后端知識(shí)- 收藏集 - 掘金

    摘要:常見(jiàn)的八大排序算法,他們之間關(guān)系如下被人忽視的面向?qū)ο蟮牧笤瓌t后端掘金前言作為文集的第一篇,我覺(jué)得有必要介紹一下大概的寫作規(guī)劃。 Java多線程干貨系列—(四)volatile關(guān)鍵字| 掘金技術(shù)征文 - 掘金原本地址:Java多線程干貨系列—(四)volatile關(guān)鍵字博客地址:http://tengj.top/ 前言 今天介紹下volatile關(guān)鍵字,volatile這個(gè)關(guān)鍵字可能...

    Youngdze 評(píng)論0 收藏0
  • 后端知識(shí)- 收藏集 - 掘金

    摘要:常見(jiàn)的八大排序算法,他們之間關(guān)系如下被人忽視的面向?qū)ο蟮牧笤瓌t后端掘金前言作為文集的第一篇,我覺(jué)得有必要介紹一下大概的寫作規(guī)劃。 Java多線程干貨系列—(四)volatile關(guān)鍵字| 掘金技術(shù)征文 - 掘金原本地址:Java多線程干貨系列—(四)volatile關(guān)鍵字博客地址:http://tengj.top/ 前言 今天介紹下volatile關(guān)鍵字,volatile這個(gè)關(guān)鍵字可能...

    scola666 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<