日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

项目运行慢的原因剖析

發(fā)布時(shí)間:2023/12/13 综合教程 25 生活家
生活随笔 收集整理的這篇文章主要介紹了 项目运行慢的原因剖析 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

項(xiàng)目運(yùn)行慢的原因剖析

背景

打開(kāi)Chrome瀏覽器,輸入url之后,其他頁(yè)面顯示都正常,但是當(dāng)打開(kāi)問(wèn)題(暫且稱(chēng)為問(wèn)題url)url的時(shí)候,服務(wù)器給回的響應(yīng)特別慢。

剖析原因

前端原因

慢的原因很有可能是js文件或者css文件使用的cdn加速,但是有的cdn加速會(huì)特別慢,這就導(dǎo)致了使用cdn服務(wù)器的響應(yīng)回的特別慢,導(dǎo)致瀏覽器給用戶(hù)的響應(yīng)就慢。所以打開(kāi)F12調(diào)試窗口,查看如下:

會(huì)發(fā)現(xiàn)主要的時(shí)間都浪費(fèi)在index的請(qǐng)求,點(diǎn)擊進(jìn)去會(huì)發(fā)現(xiàn)一個(gè)url延遲特別高。這就排除了前端原因了。

后臺(tái)原因

找到對(duì)應(yīng)的controller的url,然后發(fā)現(xiàn)對(duì)應(yīng)的應(yīng)該也沒(méi)問(wèn)題啊,取表中的數(shù)據(jù),

將其拷貝到idea數(shù)據(jù)庫(kù)的console進(jìn)行搜索,

數(shù)據(jù)都是毫秒級(jí)別的,不可能這么慢。那問(wèn)題到底在哪?

進(jìn)入debug模式,然后單步執(zhí)行

查看執(zhí)行sql的debug模式:

會(huì)發(fā)現(xiàn)直接執(zhí)行了應(yīng)該執(zhí)行的sql方法,其他下面我確實(shí)沒(méi)寫(xiě)。直到后來(lái),查看我的mapper的xml文件

其中這個(gè)BaseResultMap是映射集,他的映射集是這樣寫(xiě)的。

<resultMap id="BaseResultMap" type="cn.tj.entity.Application">
    ....
    <result column="app_create_time" property="appCreateTime" jdbcType="DATE"/>
    <result column="app_interview_pass" property="appInterviewPass" jdbcType="VARCHAR"/>
    <result column="app_interview_time" property="appInterviewTime" jdbcType="DATE"/>
    <association property="user" column="user_id" select="cn.tj.mapper.UserMapper.selectByPrimaryKey"/>
</resultMap>

你會(huì)想問(wèn)那為什么會(huì)出現(xiàn)TrainMapper的selectByPrimaryKey的sql呢,沒(méi)錯(cuò),就是在userMapper里面還有Train的引用。如下圖:

<resultMap id="BaseResultMap" type="cn.tj.entity.User" >
  <id column="user_id" property="userId" jdbcType="INTEGER" />
  ...
  <result column="user_type" property="userType" jdbcType="VARCHAR" />
  <result column="user_apply_status" property="userApplyStatus" jdbcType="VARCHAR" />
  <result column="user_train_status" property="userTrainStatus" jdbcType="VARCHAR" />
  <association property="trainClass" column="user_highest_tclass_id" select="cn.tj.mapper.TrainClassMapper.selectByPrimaryKey" />
  <association property="train" column="user_highest_train_id" select="cn.tj.mapper.TrainMapper.selectByPrimaryKey" />
</resultMap>

這一下子就明白了吧,為什么每次打開(kāi)這個(gè)頁(yè)面有點(diǎn)慢,就是在mapper的時(shí)候,使用了association查詢(xún)了其他類(lèi)的sql,所以一下子就慢了。

解決

其實(shí)我也不想解決啊。但是沒(méi)辦法。肯定不用BaseResultMap,自己寫(xiě)一個(gè)mapper,然后將查詢(xún)結(jié)果直接映射到自己的寫(xiě)的dto里面就行了。

總結(jié)

以上是生活随笔為你收集整理的项目运行慢的原因剖析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。