第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

Java高并發(fā)秒殺API之業(yè)務(wù)分析與DAO層

  • int類型參數(shù)無法保存形參會變成arg0代替


    65a2664e0001866e09600540.jpg
    查看全部
  • 秒殺接口暴露可以防止提前記錄接口后由插件程序自動填寫參數(shù)執(zhí)行秒殺


    65a212a000018c5d09600540.jpg
    查看全部
  • update語句的行級鎖說明


    65a2120d0001d7b009600540.jpg
    查看全部
  • 有多個參數(shù)的時候,要告訴 Mybatis 哪個位置的參數(shù)必須叫什麼名字

    補上 @Param

    查看全部
  • 投影片~~~~~~~~~~~~~







    DAO接口實現(xiàn)類 mapper


    查看全部
  • 有個技巧,如果出現(xiàn)重複,這 insert into 會報錯
    我們可以忽略錯誤 insert ignore into ...


    有兩種實現(xiàn)
    1.分兩個SQL來完成
    2. 一個SQL完成

    查看全部
  • mybatis-config.xml


    SeckKillDao.xml

    查看全部
  • 投影片~~~~~~~





    查看全部
  • 防止用戶重複秒殺,基於這唯一性可以為我們過濾
    success_killed 的 primary key

    show tables;
    show create table seckill\G => 可以看這表示如何創(chuàng)建的 (DDL)


    =========

    --?數(shù)據(jù)庫初始化腳本
    --?創(chuàng)建數(shù)據(jù)庫
    CREATE?DATABASE?seckill;
    
    --?使用數(shù)據(jù)庫
    USE?seckill;
    
    --?創(chuàng)建秒殺庫存表
    CREATE?TABLE?seckill?(
    ????`seckill_id`?bigint?NOT?NULL?AUTO_INCREMENT?COMMENT?'商品庫存id',
    ????`name`?varchar(120)?NOT?NULL?COMMENT?'商品名稱',
    ????`number`?int?NOT?NULL?COMMENT?'庫存數(shù)量',
    ????`start_time`?timestamp?NOT?NULL?COMMENT?'秒殺開啟時間',
    ????`end_time`?timestamp?NOT?NULL?COMMENT?'秒殺結(jié)束時間',
    ????`create_time`?timestamp?NOT?NULL?DEFAULT?CURRENT_TIMESTAMP?COMMENT?'創(chuàng)建時間',
    ????PRIMARY?KEY?(seckill_id),
    ????KEY?idx_start_time?(start_time),
    ????KEY?idx_end_time?(end_time),
    ????KEY?idx_create_time?(create_time)
    )?ENGINE?=?InnoDB?AUTO_INCREMENT?=?1000?DEFAULT?CHARSET=utf8?COMMENT="秒殺庫存表";
    
    --?初始化數(shù)據(jù)
    INSERT?INTO?seckill?(name,?number,?start_time,?end_time)
    VALUES
    ????('100元秒殺iPhone6',?100,?'2020-03-28?00:00:00',?'2020-03-29?00:00:00'),
    ????('100元秒殺iPhone7',?200,?'2020-03-28?00:00:00',?'2020-03-29?00:00:00'),
    ????('100元秒殺iPhone8',?300,?'2020-03-28?00:00:00',?'2020-03-29?00:00:00'),
    ????('100元秒殺iPhoneX',?400,?'2020-03-28?00:00:00',?'2020-03-29?00:00:00'),
    ????('100元秒殺iPhoneXS',?500,?'2020-03-28?00:00:00',?'2020-03-29?00:00:00');
    
    --?秒殺成功明細表
    CREATE?TABLE?success_killed?(
    ????`seckill_id`?bigint?NOT?NULL?COMMENT?'秒殺商品ID',
    ????`user_phone`?bigint?NOT?NULL?COMMENT?'用戶手機號',
    ????`state`?tinyint?NOT?NULL?DEFAULT?-1?COMMENT?'狀態(tài)標志:-1:無效?0:成功?1:已付款',
    ????`create_time`?timestamp?NOT?NULL?DEFAULT?CURRENT_TIMESTAMP?COMMENT?'創(chuàng)建時間',
    ????PRIMARY?KEY?(seckill_id,?user_phone),
    ????KEY?idx_create_time?(create_time)
    )?ENGINE?=?InnoDB?DEFAULT?CHARSET=utf8?COMMENT='秒殺成功明細表';
    
    --?連接數(shù)據(jù)庫控制臺
    mysql?-uroot?-p77777777
    
    --?為什么手寫DDL
    --?記錄每次的上線DDL
    --?上線V1.1
    ALTER?TABLE?seckill;
    DROP?INDEX?idx_start_time;
    
    --?上線V1.2
    INSERT?INTO?seckill?(name,?number,?start_time,?end_time)
    VALUES
    ????('100元秒殺ViVO',?100,?'2020-03-31?00:00:00',?'2020-04-01?00:00:00'),
    ????('100元秒殺ViVO',?100,?'2020-04-01?00:00:00',?'2020-04-02?00:00:00'),
    ????('100元秒殺OPPO',?200,?'2020-04-02?00:00:00',?'2020-04-03?00:00:00');
    查看全部
  • https://github.com/yoyo185644/seckill/tree/master

    查看全部
  • 投影片~~~~~~~~~~


    這麼複雜?

    我們只實現(xiàn)秒殺相關(guān)功能。



    查看全部
  • 投影片~~~~~~~



    競爭是發(fā)生在 Update 扣庫存數(shù)


    查看全部
  • 投影片~~~~~






    為什麼需要事務(wù)



    查看全部
  • maven 命令創(chuàng)建 web 骨架項目



    web.xml 要修改成 3.1

    <?xml?version="1.0"?encoding="UTF-8"?>
    <web-app?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    ?????????xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    ?????????xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee?http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    ?????????version="3.1">
    </web-app>



    把沒有的目錄補全
    ex: src/main/java、src/test/java、src/test/resources



    查看全部
  • ## SecKillDao.xml

    <?xml?version="1.0"?encoding="UTF-8"?>
    <!DOCTYPE?mapper
    ????????PUBLIC?"-//mybatis.org//DTD?Config?3.0//EN"
    ????????"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper?namespace="cn.dangkei.dao.SecKillDao">
    ????<!--目的:為dao接口方法提供sql語句配置
    ????即針對dao接口中的方法編寫我們的sql語句-->
    ????<update?id="reduceNumber">
    ????????update
    ????????seckill
    ????????set
    ????????number?=?number?-1
    ????????where?seckill_id?=?#{seckillId}
    ????????AND?start_time?<![CDATA[?<=]]>?#{killTime}
    ????????AND?end_time?>=#{killTime}
    ????????AND?number?>?0
    ????</update>
    ????<select?id="queryById"?resultType="SecKill"?parameterType="long">
    ????????select?*?from?seckill?where?seckill_id?=?#{seckillId}
    ????</select>
    ????<select?id="queryAll"?resultType="SecKill">
    ????????select?*?from?seckill?ORDER?BY?create_time?DESC
    ????????limit?#{offset},#{limit}
    ????</select>
    </mapper>


    ## SuccessKilledMapper.xml

    <?xml?version="1.0"?encoding="UTF-8"?>
    <!DOCTYPE?mapper
    ????????PUBLIC?"-//mybatis.org//DTD?Config?3.0//EN"
    ????????"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper?namespace="cn.dangkei.dao.SuccessKillDao">
    ????<insert?id="insertSuccessKilled">
    ????????<!--當出現(xiàn)主鍵沖突(即重復(fù)秒殺),報錯,如果不想讓程序報錯,加入ignore-->
    ????????Insert?ignore?INTO?success_killed(seckill_id,user_phone,state,)
    ????????VALUES(#{seckillId},#{userPhone},0)
    ????</insert>
    ????<select?id="queryByIdWithSeckill"?resultType="cn.dangkei.entity.SuccessKilled">
    ????????<!--根據(jù)seckillId查詢SuceessKilled對象,并攜帶Seckill對象-->
    ????????<!--如何告訴mybatis把結(jié)果映射到SuccessKill屬性同時映射到secKill屬性-->
    ????????<!--可以自由控制SQL語句-->
    ????????SELECT
    ????????sk.seckill_id,
    ????????sk.user_phone,
    ????????sk.create_time,
    ????????sk.state,
    ????????s.seckill_id?"seckill.seckill_id",
    ????????s.name?"seckill.name",
    ????????s.number?"seckill.number",
    ????????s.start_time?"seckill.start_time",
    ????????s.end_time?"seckill.end_time",
    ????????s.create_time?"seckill.create_time"
    ????????FROM?success_killed?sk
    ????????INNER?JOIN?seckill?s?ON?sk.seckill_id=s.seckill_id
    ????????WHERE?sk.seckill_id=#{seckillId}?and?sk.user_phone=#{userPhone}
    ????</select>
    </mapper>
    查看全部
  • mvn創(chuàng)建的最后一個參數(shù)表示使用mvn的原型

    webapp的原型來創(chuàng)建項目

    查看全部
  • 用Maven命令創(chuàng)建web項目

    http://img1.sycdn.imooc.com//60d299240001345a18720766.jpg

    查看全部







  • MyBatis和HIBERNATE都是用來ORM映射的

    MyBatis的特點:參數(shù) + SQL = Entity/List (提供參數(shù)和SQL語句)

    兩種方式提供SQL:1、XML提供SQL (推薦)? 2、注解提供SQL

    如何DAO接口?

    1、Mapper自動實現(xiàn)DAO接口 (推薦)

    2、API編程方式實現(xiàn)DAO接口

    查看全部
  • 減庫存和記錄購買明細構(gòu)成一個事務(wù),事務(wù)機制依然是目前最可靠的落地方案

    NoSQL對于事務(wù)的支持不是很好

    查看全部
  • 目錄結(jié)構(gòu)

    查看全部
  • ?mapper寫法

    查看全部
  • 配置全局屬性:

    • 使用jdbc的getGeneratedKeys 獲取數(shù)據(jù)庫自增主鍵

    • 使用列別名替代列名,自動轉(zhuǎn)換為entity里的屬性 useColumnLabel

    • 開啟駝峰命名轉(zhuǎn)換 mapUnderscoreCamelCase

    查看全部
  • ctrl+shift+t 生成測試類

    查看全部
  • spring官網(wǎng)文檔:

    https://docs.spring.io/spring-framework/docs/

    查看全部
  • 更少的配置--別名

    查看全部
首頁上一頁1234567下一頁尾頁

舉報

0/150
提交
取消
課程須知
《Java高并發(fā)秒殺API》是系列課程,共四門課,分別為業(yè)務(wù)分析和DAO層,Service層,Web層和高并發(fā)優(yōu)化。本門課程是第一門課程,學習前需要了解如下知識: 1、精通JavaWeb基礎(chǔ) 2、熟悉SpringMVC、Spring和MyBatis框架
老師告訴你能學到什么?
1、掌握秒殺業(yè)務(wù) 2、能夠進行SpringMVC+Spring+MyBatis的整合開發(fā) 3、能夠進行秒殺業(yè)務(wù)DAO層的設(shè)計與實現(xiàn)

微信掃碼,參與3人拼團

微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復(fù)購買,感謝您對慕課網(wǎng)的支持!