^
匹配輸入字符串的開始位置。如果設(shè)置了RegExp對象的Multiline屬性,^也匹配“\n”或“\r”之后的位置。
(?!pattern)
正向否定預(yù)查,在任何不匹配pattern的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。http服務(wù)不能訪問,而ping命令可以說明網(wǎng)絡(luò)是通的
ping不同說明禁止了這個操作
稍優(yōu)化了一點,按你的算法,有n個元素的數(shù)組,要循環(huán)
n * n * in_array里的次數(shù),in_array內(nèi)部也是循環(huán)
var arr = [1, 2, 5, 6, 7];//如果這個數(shù)組不是有序數(shù)組,哪還要先加排序
var len =arr.length
let result=[]
let count=0
for(let a=0;a<len;a++){
let max = arr.pop()
let newlen = arr.length
for(let i=0;i<newlen-1;i++){
if(arr[i]+arr[i+1]> max){
break;
}
for(let j=i;j<newlen-1;j++){
let plus = arr[i]+arr[j+1]
count++
if(plus>max){
break;
}
if(plus==max){
result.push([max,arr[i],arr[j+1]])
}
}
}
}
console.log(result)//輸出結(jié)果
console.log(count)//輸出總循環(huán)次數(shù),
回復(fù)里說的好,我沒有考慮負數(shù)的情況,如果要考慮負數(shù),哪把最大數(shù)pop出來,就不行了,只能重新維護一條新數(shù)組,用來枚舉所有值,修改如下
var arr = [-8, -1, 1, 2, 5, 6, 7];//如果這個數(shù)組不是有序數(shù)組,哪還要先加排序
var len =arr.length
var arr1 = [...arr] //復(fù)制一條新數(shù)組
let result=[]
let count=0
for(let a=0;a<len;a++){
let max = arr1.pop()// 從新數(shù)組中枚舉各個值。
let newlen = arr.length
for(let i=0;i<newlen-1;i++){
if(arr[i]+arr[i+1]> max){
break;
}
for(let j=i;j<newlen-1;j++){
let plus = arr[i]+arr[j+1]
count++
if(plus>max){
break;
}
if(plus==max){
result.push([max,arr[i],arr[j+1]])
}
}
}
}
console.log(result)//輸出結(jié)果
console.log(count)//輸出總循環(huán)次數(shù),
輸出
[[7, 1, 6], [7, 2, 5], [6, -1, 7], [6, 1, 5], [5, -1, 6], [1, -1, 2], [-1, -8, 7]]上面這位大佬的方法很標(biāo)注,很嚴(yán)禁,但不適合小白理解:
首先要明白委托是什么意思:委托并沒有給子元素綁定事件,點擊子元素的時候根據(jù)事件冒泡的原理,觸發(fā)了body上綁定的事件,這個方法是能獲取到點擊的子元素的事件對象的,這個比較簡單;
難點其實是另一個問題,子元素dom結(jié)構(gòu)通常不止1層,那么如何讓事件對象是我們想要那個,一般要的是子元素最外層的元素,下面一個栗子可以告訴你怎么獲取你想要的父節(jié)點的事件對象:
var a=document.getElementById('content_left');//以百度搜索結(jié)果列表為例
a.onclick = function(ev){//這個ev是你點擊的那個子元素的子元素
var ev = ev || window.event;
var target = ev.target || ev.srcElement;
while(target!=a){//在非父節(jié)點中尋找最外層dom
console.log(target.className)
if(target.className == 'c-abstract'){//c-abstract是我想要的每一項列表的最外層
target.style.background = "#eee";
break;
}
target=target.parentNode;//通過while,逐級尋找父節(jié)點
}
};看了一下,原因有兩點:
O(8^(N*N)),也就是說,8*8的棋盤復(fù)雜度為O(8^64),這是一個天文數(shù)字舉個例子,即使是100 * 100的棋盤,如果恰好每一步都選擇的是正確的跳法,那么也只需要10000步即可算出答案(假設(shè)答案是存在的)。但假如運氣不好,前面的選擇都錯了,導(dǎo)致程序需要不斷重試,那么即使是5*5的棋盤,也需要大約8^25步才能找到答案!
而窮舉法并不會去判斷并選擇最有可能的跳法去嘗試,它只是無腦地按照順序一次次嘗試,所以找到答案所消耗的時間完全是憑運氣。當(dāng)N=5、6、7的時候運氣較好,而N=8的時候運氣卻比較差。
原理部分就分析到這里,下面來談?wù)剝?yōu)化。
雖然窮舉法解出N=8比較困難,但是并不是說你的程序沒有問題。我發(fā)現(xiàn)了幾點問題可以改進dfs方法(可以從5、6、7的計算時間看出改進效果,但N=8的時候仍然無能為力)
// dr和dc放到方法外面定義,這樣每次遞歸的時候不用單獨創(chuàng)建一遍數(shù)組
final int[] dr = {2, 2, -2, -2, 1, 1, -1, -1};
final int[] dc = {1, -1, 1, -1, 2, -2, 2, -2};
// 修改dfs方法的參數(shù),增加count和total,目的是消除check方法。
// count表示當(dāng)前進行到第幾步了,total是總步數(shù),如果count=total,就表示棋盤已經(jīng)遍歷完了
private boolean dfs(int[][] board, int sr, int sc, List<String> res, int count, int total) {
if (/*check(board)*/count == total) {
for (int i = 0; i < board.length; i++) {
res.add(Arrays.toString(board[i]));
}
return true;
}
for (int i = 0; i < 8; i++) {
// 去掉棋盤的copy,只使用原棋盤數(shù)組即可
// int[][] newBoard = deepthCopy(board);
int cr = sr + dr[i];
int cc = sc + dc[i];
if (cr >= 0 && cr < board.length && cc >= 0 && cc < board.length && board[cr][cc] == 0) {
// newBoard[cr][cc] = newBoard[sr][sc] + 1;
// 每次遞歸前給下一步要嘗試的格子賦值,但如果沒找到答案,再把那個格子清空。這樣就可以實現(xiàn)無需借助棋盤拷貝也可以完成遞歸
board[cr][cc] = count + 1;
if (dfs(board, cr, cc, res, count + 1, total)) {
return true;
} else {
board[cr][cc] = 0;
}
}
}
return false;
}
調(diào)用的時候改為:
dfs(board, sr, sc, res, 1, N * N);去掉final修飾符,使用 T newInstance(Object... initargs) 得到對象實例。
使用此 Constructor 對象表示的構(gòu)造方法來創(chuàng)建該構(gòu)造方法的聲明類的新實例,并用指定的初始化參數(shù)初始化該實例。 你需要自己通過下面的命令生成一套密鑰,包括公鑰和私鑰
ssh-keygen -t rsa -C "your email"
然后把公鑰復(fù)制到git 倉庫的SSH KEY 的設(shè)置當(dāng)中。
使用SSH其實是加密通信,省去了每次輸入賬號密碼的麻煩。每次通信時會拿線上的公鑰和本地的私鑰做校驗
項目里還有些線程未關(guān)閉。
至于怎么解決得看報什么錯,我之前遇到的問題是因為ehcache有線程占用了磁盤,將overflowToDisk配置成"false"就Ok了。
這個倒是不影響使用,正式服務(wù)器不要用shutdown.sh,要直接kill掉進程
既然exec,又想要ps -ef, 為何不exec("ps -ef")
public static void main(String[] args) throws Exception {
try {
String line;
Process p = Runtime.getRuntime().exec( "ps -ef" );
BufferedReader in = new BufferedReader(
new InputStreamReader(p.getInputStream()) );
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
}
catch (Exception e) {
// ...
}
}dump是一次內(nèi)存快照,相當(dāng)于一張照片
sampler基于特定時間間隔的多次采樣,相當(dāng)于小視頻
我理解你是想查出菜品所有對應(yīng)的菜品類型
select *
from 菜品 a left join 菜品類型 b on find_in_set(b.dishtypeid, a.dishtype) > 0可以用相對定位套絕對定位
我們是這么做的:因為比較特殊,網(wǎng)站需要針對app用戶和內(nèi)網(wǎng)用戶,內(nèi)網(wǎng)用戶只能通過vpn撥號到內(nèi)網(wǎng)網(wǎng)段才能訪問,而app用戶公網(wǎng)訪問。那么只能保存為第二種相對路徑,然后獲取圖片路徑的時候,根據(jù)用戶ip判斷應(yīng)該使用哪個配置,就是在相對路徑前面加上前綴,app用戶使用域名配置,內(nèi)網(wǎng)用戶使用內(nèi)網(wǎng)配置??傮w上來說,后面一種靈活性和擴展性更高,比較推薦,
建議把獲取openid的方法封裝成一個函數(shù),在這個函數(shù)里,判斷storage里面是否有openid,有的話直接去storage里面的openid,沒有的話,發(fā)起請求,獲得openid,并且存儲到storage里面。目前來來說小程序多頁面通信貌似沒有很靠譜的方法
一直看你在強調(diào)業(yè)務(wù)邏輯,自己怎么方便怎么來才是最重要的,沒必要嚴(yán)格遵守那些規(guī)范.
好像關(guān)閉端口占用,是要關(guān)閉占用端口的系統(tǒng)進程吧
你要先去查是哪個進程占用了該端口,然后在kill進程
其實你第一次運行完了關(guān)閉程序就可以了哇,何必搞的這么麻煩
我是寫 Java 的,那么如果要用不那么 OO 的方式(我們一般喜歡用日志 slf4j 之類的),那么我會用下面兩種思路:
public static void printTimes(Object obj, int times) {
String content = obj.toString();
// 通過新建一個異常來獲取調(diào)用棧信息,不拋出即可。
String where = new Exception().getStackTrace()[1].getClassName();
// 后續(xù)省略
}
public interface Printer {
// 此法需要 Java 8
// 聲明默認方法,想要為某個類加上按次數(shù)打印功能時就 implements Printer
default void printTimes(Object obj, int times) {
String where = this.getClass().getSimpleName();
// 后續(xù)省略
}
}
事實上新建異常來獲取調(diào)用棧信息可以拿到非常完整的執(zhí)行環(huán)境信息:
所處類 | 所處方法 | 所在文件名稱 | 所在文件行數(shù)
歡迎討論。
500 是服務(wù)器的問題,你換個 jq 的 cdn 吧,看起來像是 jq 的服務(wù)器問題
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負責(zé)iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。