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

鍍金池/ 問答/ Java問答
礙你眼 回答

看了一下深入了解JAVA虛擬機。這個時候會執(zhí)行空間分配擔(dān)保策略。他的原話是這么說的:把survivor無法容納的對象直接進入老年代。所以應(yīng)該是存滿survivor2.然后把剩下的1M存入老年代。

括號內(nèi)是擴展,你可以跳過(順便多說幾句。在minorgc時。jvm都會檢查老年代剩余空間是否大于本次gc存活的對象大小。例如上面剩下的1M對象。老年代空間不足一兆。那么檢查虛擬機是否允許承擔(dān)風(fēng)險(HandlePromotionFailure參數(shù))。如果允許。還會檢查過去幾次晉升到老年代的平均大小是否小于目前老年代最大連續(xù)可用空間。如果小于。將嘗試minorgc 。否則直接進行fullgc。)

還有你說的第二種情況。會執(zhí)行jvm的大對象直接進入老年代策略(前提是-xx:PretenureSizeThreashold參數(shù)的值是大于5M的)。如果老年代無法容納這兩個對象。就會進行fullgc。如果fullgc后還不行。再進行fullgc

孤星 回答

======================作者的解答=================================
在步驟installation的時候先執(zhí)行exector.
然后再product configuration 就不會爆上訴錯誤提示了

蝶戀花 回答

MapperScannerConfigurer.basePackage 是包路徑,不是全路徑。spring運行時會自動包裝成classpath*:/basePackage/**/*.class

所以配置文件改成如下,應(yīng)該就可以了。

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
   <property name="basePackage" value="dao"></property>
</bean>
枕邊人 回答

參考官方文檔

public static ExecutorService newFixedThreadPool(int nThreads)
創(chuàng)建一個線程池, 在重用共享無界隊列中運行的固定線程數(shù)。在任何時候, nThreads 個線程都將是活動的處理任務(wù)。如果在所有線程都處于活動狀態(tài)時提交了其他任務(wù), 則它們將在隊列中等待, 直到線程可用為止。如果由于在關(guān)閉前執(zhí)行過程中出現(xiàn)故障而終止了任何線程, 則如果需要執(zhí)行后續(xù)任務(wù), 則新項將取代它。池中的線程將存在, 直到顯式關(guān)閉為止。

可以用下面的程序測試

import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService;

public class ThreadPoolTest1 {
    
    static class MyTask implements Runnable {
        private String name;
        
        public MyTask(String name){
            this.name = name;
        }

        
        @Override
        public void run() {
            for (int i = 0; i < 2; i++) {
                // 做點事情
                try {
                    Thread.sleep(100);
                    if(System.currentTimeMillis() % 3 == 0 ){
                         System.out.println("stop!");
                         throw  new RuntimeException("break!"); //(1)注釋掉這一行將只有兩個Thread!
                    }
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(name + " said:" + i+" Thread="+Thread.currentThread().getName());
            }
        }
    }

    
    public static void main(String[] args) {
        // 創(chuàng)建線程池
//        ExecutorService threadPool = Executors.newSingleThreadExecutor();
        ExecutorService threadPool = Executors.newFixedThreadPool(2);
//        ExecutorService threadPool = Executors.newCachedThreadPool();

        
        // 向線程池里面扔任務(wù)
        for (int i = 0; i < 10; i++) {
            threadPool.execute(new MyTask("Task" + i));
        }

        
        // 關(guān)閉線程池
        threadPool.shutdown();
    }
}

注釋掉(1)處的異常會得到正常結(jié)果

Task0 said:0 Thread=pool-1-thread-1
Task1 said:0 Thread=pool-1-thread-2
Task0 said:1 Thread=pool-1-thread-1
Task1 said:1 Thread=pool-1-thread-2
Task2 said:0 Thread=pool-1-thread-1
Task3 said:0 Thread=pool-1-thread-2
Task2 said:1 Thread=pool-1-thread-1
Task3 said:1 Thread=pool-1-thread-2
......

任務(wù)將在thread 1和2之間切換
拋出異常RuntimeException會看到如下的情況:

.......
java.lang.RuntimeException: break!
    at ThreadPoolTest1$MyTask.run(ThreadPoolTest1.java:22)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Task4 said:0 Thread=pool-1-thread-5
Task5 said:0 Thread=pool-1-thread-6
......

能看到線程池在不斷創(chuàng)建新的線程.

感謝幫助!
找到原因了.

ThreadPoolExecutor poolExecutor = new ThreadPoolExecutor(5, 10, 5, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
        ExecutorCompletionService<Object> csRef = new ExecutorCompletionService<>(poolExecutor);
        for (int i = 0; i < 5; i++) {
            Future future = csRef.submit(callables.get(i));//這個地方,提交線程使用csRef,而不是之前的線程池
        }
失魂人 回答

我的理解是每個用戶想填的數(shù)據(jù)是不一樣的,但是每個人要填的數(shù)據(jù)的校驗規(guī)則肯定是固定的,無非就是每個測試人員想用自己的數(shù)據(jù)來測試,但是又不想從頭到尾的輸入,那么也不需要用正則,每個用戶都保存一份自己想用的數(shù)據(jù),每次都自動填充到表單里就好了,這樣的話實現(xiàn)方案有幾種:
1.你說的用chrome插件,只不過把根據(jù)正則自動生成改成每個人員自己寫死存到chrome插件里,就相當(dāng)于這個插件提供一個配置界面,用戶可以手動更改需要自動填充到表單里的數(shù)據(jù)
2.把這些數(shù)據(jù)存到localStorage或者cookie里去,頁面進來的時候在測試環(huán)境可以默認(rèn)先從cookie或者localstorage里取。取不到就為空,但是這樣的話會需要改動代碼的邏輯。加了一些不是處理業(yè)務(wù)需求的代碼

個人理解

鹿惑 回答

腳本用到的環(huán)境變量我不建議單獨存放。直接放到腳本中自給自足即可。這樣最大限度保證腳本的可遷移性。

如果是用戶自己用到的環(huán)境變量,要在交互式模式下運行的。比如各種rvm, sdkman之類的配置,則放在~/.bashrc(bash環(huán)境下)或~/.zshrc(zsh環(huán)境下)等等

兔寶寶 回答

因為JDBC沒有這種類型,所以你必須自己去實現(xiàn)Hibernate的UserType接口,自己實現(xiàn)這個映射綁定。

Grails的postgresql插件了解一下?它的源碼可以做參考,實現(xiàn)了postgresql的jsonb類型和array類型。

這個插件基本支持了postgresql的各種數(shù)據(jù)類型,是通過自己定義UserType搞定的,源碼在這個包下面: https://github.com/kaleidos/g...

呆萌傻 回答

hybrid應(yīng)用的話就是 weex框架
如果你是想在app中直接打開一個vue的網(wǎng)頁直接webview就行了

話寡 回答
import re

s = 'American(United States of)'

r = re.search('(\(.*?\))', s)
if r:
    print(r.group())
別傷我 回答

JRE System Library,java運行的系統(tǒng)庫,沒有編譯功能;
jdk vm,就是啟動dos那個黑白窗口的,沒有編譯功能.你寫的java代碼必須編譯為.class文件才能被vm識別/讀取/運行;
javaSE,這個是java開發(fā)者基本庫,javaEE是從這個基本庫擴展出來的.javaSE就是JDK,擁有編譯.java文件/打包出jar文件/自帶一個JRE System Library跑你編譯出的class文件

懶洋洋 回答

你的標(biāo)準(zhǔn)中,不合法的單詞是什么樣子的?就是你判斷的標(biāo)準(zhǔn)是啥

哚蕾咪 回答

<dependency>

        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <scope>test</scope> <!-- 把這行去掉-->
</dependency>
尤禮 回答

你好,回復(fù)邀請答題。
首先看看它給的鏈接有沒有參考價值
MavenHelp1
1、第一行Error中顯示無法解析com.mobilepay.example:MobilePay:war:1.0-SNAPSHOT,
且無法找到支付寶,https://repo.maven.apache.org...
com.alipay:alipay-sdk-java:jar:1.0.0被緩存到本地存儲庫中,resolution找不到更新
你可以試著將本地的jar清除掉,重新install一次。
2、打開-e 或 -x 重新執(zhí)行maven 跟蹤運行日志

病癮 回答

有已經(jīng)刪除的文檔吧,es被刪除的文檔不會被立即刪除,會被記錄,然后在合并段的時候刪除掉被標(biāo)記 _del的文檔

練命 回答

我也遇到了,對java.lang包下的 static 塊就是無法執(zhí)行,不知道為什么

懷中人 回答

增加一個head,來定義。如
{
head:{id:xxx}, //這個id是唯一值,可以用自增的整數(shù)就可以
data:{} //你的數(shù)據(jù)
}

局外人 回答

json轉(zhuǎn)換不能識別換行,要替換成/n或/r

拼未來 回答

找到了原因:
shutdown 可以選擇關(guān)閉某個方向或者同時關(guān)閉兩個方向,shutdown how = 0 or how = 1 or how = 2 (SHUT_RD or SHUT_WR or SHUT_RDWR),后兩者可以保證對等方接收到一個EOF字符(即發(fā)送了一個FIN段),而不管其他進程是否已經(jīng)打開了這個套接字。而close不能保證,只有當(dāng)某個sockfd的引用計數(shù)為0,close 才會發(fā)送FIN段,否則只是將引用計數(shù)減1而已。也就是說只有當(dāng)所有進程(可能fork多個子進程都打開了這個套接字)都關(guān)閉了這個套接字,close 才會發(fā)送FIN 段。

因為我的client_data_socket是在父進程產(chǎn)生的,子進程關(guān)閉了并沒有發(fā)送FIN段,所以我需要用shutdown來發(fā)送FIN

淚染裳 回答

坑人代碼還原如下

use Event\Event;
use Event\Select;

$pid_list = [];
$parent_pid = posix_getpid();

for ($i = 0; $i < 4; ++$i)
{
    $pair = stream_socket_pair(STREAM_PF_UNIX , STREAM_SOCK_STREAM , STREAM_IPPROTO_IP);
    
    $pid = pcntl_fork();
    
    if ($pid < 0) {
        throw new Exception("創(chuàng)建子進程失敗");
    } else if ($pid > 0) {
        // 父進程
        fclose($pair[0]);
        
        $child = $pair[1];
        
        fwrite($child , "父進程問候 " . posix_getpid());
        
        Select::addIo($child , Event::READ , function($ctrl , $socket , $child) use($parent_pid){
            $msg = fread($socket , 65535);
            
            echo "父進程領(lǐng)域!父進程 {$parent_pid} 當(dāng)前執(zhí)行進程 " . posix_getpid() . " 消息:{$msg}" . PHP_EOL;
        } , $child);
    } else {
        // 子進程
        fclose($pair[1]);
        $parent = $pair[0];
        fwrite($parent , "子進程問候 " . posix_getpid());
        
        Select::addIo($parent , Event::READ , function($ctrl , $socket , $parent) use($parent_pid){
            $msg = fread($socket , 65535);
            
            echo "子進程領(lǐng)域!子進程 " . posix_getpid() . " 當(dāng)前執(zhí)行進程 " . posix_getpid() . " 消息:{$msg}\n";
        } , $parent);
    }
}

產(chǎn)生的進程信息:

父進程:32140
子進程:32141 32142 32143 32144

坑人的結(jié)果:

父進程代碼領(lǐng)域下(子進程亂入到父進程領(lǐng)域!)

父進程領(lǐng)域!父進程 32140 當(dāng)前執(zhí)行進程 32142 消息 子進程問候 32141
父進程領(lǐng)域!父進程 32140 當(dāng)前執(zhí)行進程 32143 消息 子進程問候 32142
父進程領(lǐng)域!父進程 32140 當(dāng)前執(zhí)行進程 32144 消息 子進程問候 32143
父進程領(lǐng)域!父進程 32140 當(dāng)前執(zhí)行進程 32140 消息 子進程問候 32144

子進程代碼領(lǐng)域(正確)

子進程領(lǐng)域!子進程 32141 當(dāng)前執(zhí)行進程 32141 消息 父進程問候 32140
子進程領(lǐng)域!子進程 32142 當(dāng)前執(zhí)行進程 32142 消息 父進程問候 32140
子進程領(lǐng)域!子進程 32143 當(dāng)前執(zhí)行進程 32143 消息 父進程問候 32140
子進程領(lǐng)域!子進程 32144 當(dāng)前執(zhí)行進程 32144 消息 父進程問候 32140

分析:為什么子進程會調(diào)用在父進程定義的事件呢??

這得仔細(xì)分析 for 循環(huán)!

  • 第一次循環(huán),父進程向 Event::$events 添加子進程監(jiān)聽事件,子進程平行執(zhí)行。對產(chǎn)生的第一個子進程來說, Event::$events 為空,所以沒有拷貝到父進程的事件。
  • 第二次循環(huán),父進程向 Event::$events 再次添加監(jiān)聽子進程事件,此時,對產(chǎn)生的第二個子進程來說,Event::$events 存在一個事件!從父進程拷貝了一個事件。
  • 第三次循環(huán),父進程再次向 Event::$events 再次添加監(jiān)聽子進程事件,此時,對產(chǎn)生的三個子進程來說, Event::$events 存在兩個事件!從父進程拷貝了兩個事件。
  • 第四次循環(huán),父進程再次向 Event::$evnets 添加事件,此時,相對產(chǎn)生的第四個子進程來說,Event::$events 存在三個事件,從父進程拷貝了三個事件。

由上可知,子進程實際也在監(jiān)聽從父進程拷貝的事件,如果事件觸發(fā),那么監(jiān)聽該事件的父子進程實際上都會觸發(fā)。從而出現(xiàn)了令人郁悶的:子進程亂入到了父進程的領(lǐng)域。

解決方法

在子進程中,把從父進程拷貝的事件銷毀即可。

for ($i = 0; $i < 4; ++$i)
{
    $pid = pcntl_fork();
    
    if ($pid < 0) {
        throw new Exception("創(chuàng)建子進程失敗");
    } else if ($pid > 0) {
        // 父進程
        Select::addIo( .... );
        // ...添加相關(guān)事件
    } else {
        // 子進程
        // 銷毀從父進程拷貝的事件
        Select::clear();
        
        // ....做些什么
    }
}