在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/ Java問(wèn)答
墨沫 回答

今天面試的時(shí)候,被問(wèn)到跟你類似的問(wèn)題,上網(wǎng)搜一下只搜到這個(gè)問(wèn)題,就來(lái)說(shuō)一下我的情況吧。
我的想法和其他人也一直,就是在保證入庫(kù)的前提下(也就是事務(wù)完成之后)再進(jìn)行緩存的更新,或者對(duì)緩存進(jìn)行CAS校驗(yàn)。
但是面試官說(shuō),這樣做無(wú)疑增加了開發(fā)的復(fù)雜性,因?yàn)榘迅戮彺婧蛯?shí)際業(yè)務(wù)邏輯分離了,有沒(méi)有更好的方法。
我覺(jué)得他說(shuō)的也對(duì),但最后也沒(méi)想到什么好點(diǎn)子,原本以為面試官會(huì)有很棒的解題思路。
結(jié)果他的回答讓我崩潰,他說(shuō):
1,在事務(wù)中的時(shí)候不做更新緩存操作,而是用刪除緩存的操作
2,在讀數(shù)據(jù)的時(shí)候,才去判斷緩存時(shí)候過(guò)期或者是否需要更新。
3,為了保證刪除緩存的操作萬(wàn)無(wú)一失,進(jìn)行雙刪除操作,同步刪一次,異步刪一次。

我勒個(gè)去,先不提讀數(shù)據(jù)時(shí)也是存在數(shù)據(jù)不一致的隱患,我一直沒(méi)想去刪除緩存這個(gè)方法,就是因?yàn)橐坏﹦h除緩存之后,萬(wàn)一突然來(lái)了個(gè)高并發(fā)請(qǐng)求,是會(huì)造成緩存穿透的,而緩存穿透的危害比數(shù)據(jù)不一致要大得多。他說(shuō)這個(gè)是內(nèi)部系統(tǒng)不會(huì)有很大的訪問(wèn)量,這種解釋簡(jiǎn)直無(wú)語(yǔ),他的這種做法和hack沒(méi)任何區(qū)別。

凹凸曼 回答

@Autowired 如字面意思是自動(dòng)注入,而@Resource,需要注入一個(gè)命名的bean,它們的查找機(jī)制不同,@Autowired需要掃描項(xiàng)目,查找相關(guān)Bean自動(dòng)注入,是自動(dòng)的,無(wú)須操心怎么注入。而@Resource需要手動(dòng)指定一個(gè)Bean,如果是spring boot項(xiàng)目,需要配置一個(gè)配置文件,用@Bean('xxx')返回命名Bean,如果不是spring boot,那么需要在xml配置。一個(gè)自動(dòng)一個(gè)手動(dòng),不會(huì)產(chǎn)生沖突。

囍槑 回答

應(yīng)該為多重?cái)?shù)組。

"data":[ 

    
         {  
            "ID":"2",  
            "name": "梅西還是那個(gè)梅西!",  
            "info":"阿根廷也許16強(qiáng)走的更遠(yuǎn)!",
            "img":[
                 {"imgs1":"img/photo/20180521-01.jpg"},
                 {"imgs2":  "img/photo/20180521-02.jpg"},
                 {"imgs3": "img/photo/20180521-03.jpg"}
                 ]
        },

         {  
            "ID":"1",  
            "name": "梅西還是那個(gè)梅西!",  
            "info":"阿根廷也許16強(qiáng)走的更遠(yuǎn)!",
            "imgs":[{"img/photo/20180521-02.jpg"}]
        
        },
    
    ] 
久礙你 回答

clipboard.png

如果你是 Maven 導(dǎo)入的包,那么選中 pom.xml,右鍵選擇 Maven - Download Sources 就可以下載到源碼包 ( 如果發(fā)行方有提供的話 ),Idea 會(huì)自動(dòng)導(dǎo)入,你就可以點(diǎn)進(jìn)源碼下斷點(diǎn)了。

如果不是 Maven 包,那就需要自己找這個(gè) sources 包,舉個(gè)栗子:
something.jar,會(huì)有個(gè) something-sources.jar

如果發(fā)行方?jīng)]有提供這個(gè)源碼包,那就沒(méi)辦法了,不過(guò)一般來(lái)說(shuō)都會(huì)有的。

抱緊我 回答

我是存在localstorage里,然后進(jìn)入最外層的路由時(shí)判斷:

let routes = [{
    path: '/login',
    component: Login,
    name: 'login'
},{
    path: '/admin',
    component: Admin,
    beforeEnter: (to, from, next) => {
        if(!localStorage.ACCOUNT || localStorage.ACCOUNT == ''){
            next({
                name: 'login'
            })
        }else{
            next()
        }
    }
}]
菊外人 回答

又到了自問(wèn)自答環(huán)節(jié) 前幾天沒(méi)連vpn 翻不了墻 進(jìn)入help網(wǎng)站后 下個(gè)chorme idea插件就能解決了

怪痞 回答

后面不要加g,全局匹配會(huì)保留上一次匹配到的index,并且下一次從index才開始匹配,會(huì)導(dǎo)致間歇性錯(cuò)誤。

補(bǔ)充:
第一個(gè)匹配成功后的表達(dá)式對(duì)象截圖
clipboard.png

lastIndex的文檔說(shuō)明

脾氣硬 回答

clipboard.png
你這里選了 xhr 過(guò)濾器, 切換到 all 或者 img.

雨蝶 回答

對(duì),是博文貼的有問(wèn)題,應(yīng)該是返回包裝后的。這個(gè)才是正解,大廠前后端都會(huì)約定一個(gè)格式,類似這里的

{
"code": 1,
"msg": "這個(gè)id必傳",
"data": 數(shù)據(jù)
}

沒(méi)有看到過(guò)直接返回data的

local peer主動(dòng)調(diào)用close后,此時(shí)的TCP連接進(jìn)入TIME_WAIT狀態(tài),處于該狀態(tài)下的TCP連接不能立即以同樣的四元組建立新連接,即發(fā)起active close的那方占用的local port在TIME_WAIT期間不能再被重新分配。由于TIME_WAIT狀態(tài)持續(xù)時(shí)間為2MSL,這樣保證了舊TCP連接雙工鏈路中的舊數(shù)據(jù)包均因過(guò)期(超過(guò)MSL)而消失,此后,就可以用相同的四元組建立一條新連接而不會(huì)發(fā)生前后兩次連接數(shù)據(jù)錯(cuò)亂的情況。

想辦法先讀出來(lái)二維數(shù)組比如:

[
  ["1",       "機(jī)械", null,  null,   null],
  ["1.1",     null,  "材料", null,   null],
  ["1.1.1",   null,  null,  "材料1", "12"],
  ["1.1.1.1", null,  null,  "材料2", "11"],
  ["1.2",     null,  "設(shè)備", null,   null],
  ["1.2.1",   null,  null,  "設(shè)備1", "33"],
]

這個(gè)應(yīng)該通過(guò)獲得poi的cell的列號(hào)能夠讀出來(lái)。

然后把數(shù)組下標(biāo)1~3的合并一下變成下面這樣:

[
  ["1",       "機(jī)械",  null],
  ["1.1",     "材料",  null],
  ["1.1.1",   "材料1", "12"],
  ["1.1.1.1", "材料2", "11"],
  ["1.2",     "設(shè)備",  null],
  ["1.2.1",   "設(shè)備1", "33"],
]

最后把這個(gè)數(shù)組寫到新的excel里

骨殘心 回答
list.forEach(value -> { System.out.println(value.getClass()) })

不知道是不是你想要的

笑浮塵 回答

在spring mvc的配置文件中加上:<mvc:default-servlet-handler/> 試試!

Web應(yīng)用程序的缺省Servlet
在<tomcat的安裝目錄>confweb.xml文件中,注冊(cè)了一個(gè)名稱為org.apache.catalina.servlets.DefaultServlet的Servlet,并將這個(gè)Servlet設(shè)置為了缺省Servlet,映射路徑為一個(gè)正斜杠(/)。
凡是在web.xml文件中找不到匹配的<servlet-mapping>元素的URL,它們的訪問(wèn)請(qǐng)求都將交給缺省Servlet處理,也就是說(shuō),缺省Servlet用于處理所有其他Servlet都不處理的訪問(wèn)請(qǐng)求。
例如:當(dāng)訪問(wèn)Tomcat服務(wù)器中的某個(gè)靜態(tài)HTML文件和圖片時(shí),實(shí)際上是在訪問(wèn)這個(gè)缺省Servlet。
你現(xiàn)在在web.xml中配置的一個(gè)映射路徑為/的servlet,這個(gè)servlet就成為默認(rèn)的servlet了。就不能訪問(wèn)原來(lái)的tocmat提供的servlet了(其他服務(wù)器類似),自然就不能處理靜態(tài)的HTML文件訪問(wèn)了。
<mvc:default-servlet-handler/>
如果將DispatcherServlet請(qǐng)求映射配置為"/",則Spring MVC將捕獲Web容器所有的請(qǐng)求,包括靜態(tài)資源的請(qǐng)求,Spring MVC會(huì)將它們當(dāng)成一個(gè)普通請(qǐng)求處理,因此找不到對(duì)應(yīng)處理器將導(dǎo)致錯(cuò)誤。
在springMVC-servlet.xml中配置<mvc:default-servlet-handler />后,會(huì)在Spring MVC上下文中定義一個(gè)org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,它會(huì)像一個(gè)檢查員,對(duì)進(jìn)入DispatcherServlet的URL進(jìn)行篩查,如果發(fā)現(xiàn)是靜態(tài)資源的請(qǐng)求,就將該請(qǐng)求轉(zhuǎn)由Web應(yīng)用服務(wù)器默認(rèn)的Servlet處理,如果不是靜態(tài)資源的請(qǐng)求,才由DispatcherServlet繼續(xù)處理。

一般Web應(yīng)用服務(wù)器默認(rèn)的Servlet名稱是"default",因此DefaultServletHttpRequestHandler可以找到它。如果你所有的Web應(yīng)用服務(wù)器的默認(rèn)Servlet名稱不是"default",則需要通過(guò)default-servlet-name屬性顯示指定:
<mvc:default-servlet-handler default-servlet-name="所使用的Web服務(wù)器默認(rèn)使用的Servlet名稱" />
可以參考下面的文章:
https://www.cnblogs.com/dflmg...

菊外人 回答

如果是系統(tǒng)安裝,可以直接用服務(wù)管理腳本進(jìn)行管理,
如ubuntu下/etc/init.d/tomcat8
使用命令

$ sudo service tomcat8 restart

腳本內(nèi)容如下:

 stop)
log_daemon_msg "Stopping $DESC" "$NAME"

set +e
if [ -f "$CATALINA_PID" ]; then 
start-stop-daemon --stop --pidfile "$CATALINA_PID" \
--user "$TOMCAT8_USER" \
--retry=TERM/20/KILL/5 >/dev/null
if [ $? -eq 1 ]; then
log_progress_msg "$DESC is not running but pid file exists, cleaning up"
elif [ $? -eq 3 ]; then
PID="`cat $CATALINA_PID`"
log_failure_msg "Failed to stop $NAME (pid $PID)"
exit 1
fi
rm -f "$CATALINA_PID"
rm -rf "$JVM_TMP"
else
log_progress_msg "(not running)"
fi
log_end_msg 0
set -e
;;

基本的思路是先用start-stop-daemon發(fā)停止信號(hào)給tomcat進(jìn)程, 如果進(jìn)程不能順利結(jié)束,再用kill殺掉. 這里TERM/20/KILL/5意思是先發(fā)送TERM信號(hào)20秒沒(méi)有結(jié)束接著發(fā)送KILL信號(hào),超時(shí)時(shí)間為5秒.
如果你自己管理,也可以參考上面腳本來(lái)完成.

巷尾 回答

ROOT是tomcat默認(rèn)的項(xiàng)目部署目錄,在這個(gè)目錄里tomcat會(huì)讀取war包并解壓,然后裝載項(xiàng)目文件到tomcat容器,如果你的tomcat沒(méi)有手動(dòng)修改過(guò),那么要注意你的項(xiàng)目配置了,如果沒(méi)有額外指定servlet,那么tomcat配置可能有問(wèn)題可以查看tomcat配置文件

$ vim conf/server.xml #切換到tomcat家目錄后

在配置文件下半部分有關(guān)于項(xiàng)目部署的容器配置

愿如初 回答

substring方法會(huì)創(chuàng)建一個(gè)新的String對(duì)象,這里判斷下標(biāo)是為了盡量減少對(duì)象的創(chuàng)建,避免浪費(fèi)內(nèi)存。

敢試 回答
db.<coll>.update({條件}, {$set: {字段}, $setOnInsert: {date: new Date()}}, {upsert: true});

加上$setOnInsert表示只有在插入的時(shí)候才帶這個(gè)字段。跟關(guān)系數(shù)據(jù)庫(kù)不同的是,這個(gè)時(shí)間來(lái)自你的應(yīng)用,而不是數(shù)據(jù)庫(kù)加上去的默認(rèn)值。