Java?? ?? ??? ?? ??
May 06, 2023 pm 12:40 PM(一)單線程遞歸方式
package?com.taobao.test;?import?java.io.File;?public?class?TotalFileSizeSequential?{?????public?static?String?fileName?=?"C:\\Documents?and?Settings\\Administrator\\桌面\\monkeytalk";?????//?遞歸方式?計算文件的大小?????private?long?getTotalSizeOfFilesInDir(final?File?file)?{?????????if?(file.isFile())?????????????return?file.length();?????????final?File[]?children?=?file.listFiles();?????????long?total?=?0;?????????if?(children?!=?null)?????????????for?(final?File?child?:?children)?????????????????total?+=?getTotalSizeOfFilesInDir(child);?????????return?total;?????}?????public?static?void?main(final?String[]?args)?{?????????final?long?start?=?System.nanoTime();?????????final?long?total?=?new?TotalFileSizeSequential()?????????????????.getTotalSizeOfFilesInDir(new?File(fileName));?????????final?long?end?=?System.nanoTime();?????????System.out.println("Total?Size:?"?+?total);?????????System.out.println("Time?taken:?"?+?(end?-?start)?/?1.0e9);?????}?}
(二)使用Executors.newFixedThreadPool和callable 多線程實現(xiàn)
package?com.taobao.test;?import?java.io.File;?import?java.util.ArrayList;?import?java.util.Collections;?import?java.util.List;?import?java.util.concurrent.Callable;?import?java.util.concurrent.ExecutionException;?import?java.util.concurrent.ExecutorService;?import?java.util.concurrent.Executors;?import?java.util.concurrent.Future;?import?java.util.concurrent.TimeUnit;?import?java.util.concurrent.TimeoutException;?public?class?ConcurrentTotalFileSize?{?????public?static?final?String?fileName?=?"C:\\Documents?and?Settings\\Administrator\\桌面\\monkeytalk";?????class?SubDirectoriesAndSize?{?????????final?public?long?size;?????????final?public?List<File>?subDirectories;?????????public?SubDirectoriesAndSize(final?long?totalSize,?????????????????final?List<File>?theSubDirs)?{?????????????size?=?totalSize;?????????????subDirectories?=?Collections.unmodifiableList(theSubDirs);?????????}?????}?????private?SubDirectoriesAndSize?getTotalAndSubDirs(final?File?file)?{?????????long?total?=?0;?????????final?List<File>?subDirectories?=?new?ArrayList<File>();?????????if?(file.isDirectory())?{?????????????final?File[]?children?=?file.listFiles();?????????????if?(children?!=?null)?????????????????for?(final?File?child?:?children)?{?????????????????????if?(child.isFile())?????????????????????????total?+=?child.length();?????????????????????else?????????????????????????subDirectories.add(child);?????????????????}?????????}?????????return?new?SubDirectoriesAndSize(total,?subDirectories);?????}?????private?long?getTotalSizeOfFilesInDir(final?File?file)?????????????throws?InterruptedException,?ExecutionException,?TimeoutException?{?????????final?ExecutorService?service?=?Executors.newFixedThreadPool(100);?????????try?{?????????????long?total?=?0;?????????????final?List<File>?directories?=?new?ArrayList<File>();?????????????directories.add(file);?????????????while?(!directories.isEmpty())?{?????????????????final?List<Future<SubDirectoriesAndSize>>?partialResults?=?new?ArrayList<Future<SubDirectoriesAndSize>>();?????????????????for?(final?File?directory?:?directories)?{?????????????????????partialResults.add(service?????????????????????????????.submit(new?Callable<SubDirectoriesAndSize>()?{?????????????????????????????????public?SubDirectoriesAndSize?call()?{?????????????????????????????????????return?getTotalAndSubDirs(directory);?????????????????????????????????}?????????????????????????????}));?????????????????}?????????????????directories.clear();?????????????????for?(final?Future<SubDirectoriesAndSize>?partialResultFuture?:?partialResults)?{?????????????????????final?SubDirectoriesAndSize?subDirectoriesAndSize?=?partialResultFuture?????????????????????????????.get(100,?TimeUnit.SECONDS);?????????????????????directories.addAll(subDirectoriesAndSize.subDirectories);?????????????????????total?+=?subDirectoriesAndSize.size;?????????????????}?????????????}?????????????return?total;?????????}?finally?{?????????????service.shutdown();?????????}?????}?????public?static?void?main(final?String[]?args)?throws?InterruptedException,?????????????ExecutionException,?TimeoutException?{?????????final?long?start?=?System.nanoTime();?????????final?long?total?=?new?ConcurrentTotalFileSize()?????????????????.getTotalSizeOfFilesInDir(new?File(fileName));?????????final?long?end?=?System.nanoTime();?????????System.out.println("Total?Size:?"?+?total);?????????System.out.println("Time?taken:?"?+?(end?-?start)?/?1.0e9);?????}?}
(三)使用Executors.newFixedThreadPool和callable 多線程的另外一種實現(xiàn)
package?com.taobao.test;??import?java.io.File;?import?java.util.ArrayList;?import?java.util.List;?import?java.util.concurrent.Callable;?import?java.util.concurrent.ExecutionException;?import?java.util.concurrent.ExecutorService;?import?java.util.concurrent.Executors;?import?java.util.concurrent.Future;?import?java.util.concurrent.TimeUnit;?import?java.util.concurrent.TimeoutException;?public?class?NaivelyConcurrentTotalFileSize?{?????public?static?String?fileName?=?"C:\\Documents?and?Settings\\Administrator\\桌面\\monkeytalk";?????private?long?getTotalSizeOfFilesInDir(final?ExecutorService?service,?????????????final?File?file)?throws?InterruptedException,?ExecutionException,?????????????TimeoutException?{?????????if?(file.isFile())?????????????return?file.length();?????????long?total?=?0;?????????final?File[]?children?=?file.listFiles();?????????if?(children?!=?null)?{?????????????final?List<Future<Long>>?partialTotalFutures?=?new?ArrayList<Future<Long>>();?????????????for?(final?File?child?:?children)?{?????????????????partialTotalFutures.add(service.submit(new?Callable<Long>()?{?????????????????????public?Long?call()?throws?InterruptedException,?????????????????????????????ExecutionException,?TimeoutException?{?????????????????????????return?getTotalSizeOfFilesInDir(service,?child);?????????????????????}?????????????????}));?????????????}?????????????for?(final?Future<Long>?partialTotalFuture?:?partialTotalFutures)?????????????????total?+=?partialTotalFuture.get(100,?TimeUnit.SECONDS);?????????}?????????return?total;?????}?????private?long?getTotalSizeOfFile(final?String?fileName)?????????????throws?InterruptedException,?ExecutionException,?TimeoutException?{?????????final?ExecutorService?service?=?Executors.newFixedThreadPool(100);?????????try?{?????????????return?getTotalSizeOfFilesInDir(service,?new?File(fileName));?????????}?finally?{?????????????service.shutdown();?????????}?????}?????public?static?void?main(final?String[]?args)?throws?InterruptedException,?????????????ExecutionException,?TimeoutException?{?????????final?long?start?=?System.nanoTime();?????????final?long?total?=?new?NaivelyConcurrentTotalFileSize()?????????????????.getTotalSizeOfFile(fileName);?????????final?long?end?=?System.nanoTime();?????????System.out.println("Total?Size:?"?+?total);?????????System.out.println("Time?taken:?"?+?(end?-?start)?/?1.0e9);?????}?}
(四)使用CountDownLatch和AtomicLong實現(xiàn)多線程下的并發(fā)控制
package?com.taobao.test;?import?java.io.File;?import?java.util.concurrent.CountDownLatch;?import?java.util.concurrent.ExecutorService;?import?java.util.concurrent.Executors;?import?java.util.concurrent.TimeUnit;?import?java.util.concurrent.atomic.AtomicLong;?public?class?ConcurrentTotalFileSizeWLatch?{?????private?ExecutorService?service;?????final?private?AtomicLong?pendingFileVisits?=?new?AtomicLong();?????final?private?AtomicLong?totalSize?=?new?AtomicLong();?????final?private?CountDownLatch?latch?=?new?CountDownLatch(1);?????public?static?String?fileName?=?"C:\\Documents?and?Settings\\Administrator\\桌面\\monkeytalk";?????private?void?updateTotalSizeOfFilesInDir(final?File?file)?{?????????long?fileSize?=?0;?????????if?(file.isFile())?????????????fileSize?=?file.length();?????????else?{?????????????final?File[]?children?=?file.listFiles();?????????????if?(children?!=?null)?{?????????????????for?(final?File?child?:?children)?{?????????????????????if?(child.isFile())?????????????????????????fileSize?+=?child.length();?????????????????????else?{?????????????????????????pendingFileVisits.incrementAndGet();?????????????????????????service.execute(new?Runnable()?{?????????????????????????????public?void?run()?{?????????????????????????????????updateTotalSizeOfFilesInDir(child);?????????????????????????????}?????????????????????????});?????????????????????}?????????????????}?????????????}?????????}?????????totalSize.addAndGet(fileSize);?????????if?(pendingFileVisits.decrementAndGet()?==?0)?????????????latch.countDown();?????}?????private?long?getTotalSizeOfFile(final?String?fileName)?????????????throws?InterruptedException?{?????????service?=?Executors.newFixedThreadPool(100);?????????pendingFileVisits.incrementAndGet();?????????try?{?????????????updateTotalSizeOfFilesInDir(new?File(fileName));?????????????latch.await(100,?TimeUnit.SECONDS);?????????????return?totalSize.longValue();?????????}?finally?{?????????????service.shutdown();?????????}?????}?????public?static?void?main(final?String[]?args)?throws?InterruptedException?{?????????final?long?start?=?System.nanoTime();?????????final?long?total?=?new?ConcurrentTotalFileSizeWLatch()?????????????????.getTotalSizeOfFile(fileName);?????????final?long?end?=?System.nanoTime();?????????System.out.println("Total?Size:?"?+?total);?????????System.out.println("Time?taken:?"?+?(end?-?start)?/?1.0e9);?????}?}
(五)使用BlockingQueue和AtomicLong的實現(xiàn)
package?com.taobao.test;?import?java.io.File;?import?java.util.concurrent.ArrayBlockingQueue;?import?java.util.concurrent.BlockingQueue;?import?java.util.concurrent.ExecutorService;?import?java.util.concurrent.Executors;?import?java.util.concurrent.TimeUnit;?import?java.util.concurrent.atomic.AtomicLong;?public?class?ConcurrentTotalFileSizeWQueue?{?????public?static?String?fileName?=?"C:\\Documents?and?Settings\\Administrator\\桌面\\monkeytalk";??????private?ExecutorService?service;?????final?private?BlockingQueue<Long>?fileSizes?=?new?ArrayBlockingQueue<Long>(?????????????500);?????final?AtomicLong?pendingFileVisits?=?new?AtomicLong();?????private?void?startExploreDir(final?File?file)?{?????????pendingFileVisits.incrementAndGet();?????????service.execute(new?Runnable()?{?????????????public?void?run()?{?????????????????exploreDir(file);?????????????}?????????});?????}?????private?void?exploreDir(final?File?file)?{?????????long?fileSize?=?0;?????????if?(file.isFile())?????????????fileSize?=?file.length();?????????else?{?????????????final?File[]?children?=?file.listFiles();?????????????if?(children?!=?null)?????????????????for?(final?File?child?:?children)?{?????????????????????if?(child.isFile())?????????????????????????fileSize?+=?child.length();?????????????????????else?{?????????????????????????startExploreDir(child);?????????????????????}?????????????????}?????????}?????????try?{?????????????fileSizes.put(fileSize);?????????}?catch?(Exception?ex)?{?????????????throw?new?RuntimeException(ex);?????????}?????????pendingFileVisits.decrementAndGet();?????}?????private?long?getTotalSizeOfFile(final?String?fileName)?????????????throws?InterruptedException?{?????????service?=?Executors.newFixedThreadPool(100);?????????try?{?????????????startExploreDir(new?File(fileName));?????????????long?totalSize?=?0;?????????????while?(pendingFileVisits.get()?>?0?||?fileSizes.size()?>?0)?{?????????????????final?Long?size?=?fileSizes.poll(10,?TimeUnit.SECONDS);?????????????????totalSize?+=?size;?????????????}?????????????return?totalSize;?????????}?finally?{?????????????service.shutdown();?????????}?????}?????public?static?void?main(final?String[]?args)?throws?InterruptedException?{?????????final?long?start?=?System.nanoTime();?????????final?long?total?=?new?ConcurrentTotalFileSizeWQueue()?????????????????.getTotalSizeOfFile(fileName);?????????final?long?end?=?System.nanoTime();?????????System.out.println("Total?Size:?"?+?total);?????????System.out.println("Time?taken:?"?+?(end?-?start)?/?1.0e9);?????}?}
(六)使用jdk7的ForkJoin來實現(xiàn)
package?com.taobao.test;?import?java.io.File;?import?java.util.ArrayList;?import?java.util.List;?import?java.util.concurrent.ForkJoinPool;?import?java.util.concurrent.ForkJoinTask;?import?java.util.concurrent.RecursiveTask;?public?class?FileSize?{?????private?final?static?ForkJoinPool?forkJoinPool?=?new?ForkJoinPool();?????public?static?String?fileName?=?"C:\\Documents?and?Settings\\Administrator\\桌面\\monkeytalk";??????private?static?class?FileSizeFinder?extends?RecursiveTask<Long>?{?????????final?File?file;?????????public?FileSizeFinder(final?File?theFile)?{?????????????file?=?theFile;?????????}?????????@Override?????????public?Long?compute()?{?????????????long?size?=?0;?????????????if?(file.isFile())?{?????????????????size?=?file.length();?????????????}?else?{?????????????????final?File[]?children?=?file.listFiles();?????????????????if?(children?!=?null)?{?????????????????????List<ForkJoinTask<Long>>?tasks?=?new?ArrayList<ForkJoinTask<Long>>();?????????????????????for?(final?File?child?:?children)?{?????????????????????????if?(child.isFile())?{?????????????????????????????size?+=?child.length();?????????????????????????}?else?{?????????????????????????????tasks.add(new?FileSizeFinder(child));?????????????????????????}?????????????????????}?????????????????????for?(final?ForkJoinTask<Long>?task?:?invokeAll(tasks))?{?????????????????????????size?+=?task.join();?????????????????????}?????????????????}?????????????}?????????????return?size;?????????}?????}?????public?static?void?main(final?String[]?args)?{?????????final?long?start?=?System.nanoTime();?????????final?long?total?=?forkJoinPool.invoke(new?FileSizeFinder(new?File("/home")));?????????final?long?end?=?System.nanoTime();?????????System.out.println("Total?Size:?"?+?total);?????????System.out.println("Time?taken:?"?+?(end?-?start)?/?1.0e9);?????}?}
? ??? Java?? ?? ??? ?? ??? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

JDBC ????? ???? ????? ?? ?? ?? ??? ?? ?? ??? ?? ? ?? ??? ?? ?? ?? ??? ???????. 1. ????? ????? Conn.SetAutoCommit (False)?? ??????. 2. ??? ? ????? ?? ?? SQL ??? ?????. 3. ?? ??? ??? ?? Conn.commit ()?? ???? ??? ???? ???? ?? ??? ???? Conn.Rollback ()?? ??????. ???, ? ??? ???? ????, ??? ???? ????, ?? ??? ??? ?? ??? ??? ???? ? ???????. ?? ?? ?? ???? ????? ??? ???? ?? ?? ???? ???? ??? ????? ?? ??? ??? ? ?? ???? ?? ????.

thejvmenablesjava? "WriteOnce, Runynywhere"??? ?? excodecodethroughfourmaincomponents : 1. theclassloadersubsystemloads, ??, ? intinitializes.classfilesusingbootsprap, extension, andapplicationclassloaders, ensuringsecureandlazyclasloa

?? ?? ? ?? ???? ???? ?? Java.Time ???? ???? ??????. 2. LocalDate, LocalDateTime ? LocalTime? ?? ?? ??? ??? ?????. 3. () ???? ???? ?? ??? ??? ????. 4. ???/???? ??? ???? ??? ????? ??? ??????. 5. ZonedDateTime ? Zoneid? ???? ???? ??????. 6. DateTimeFormatter? ?? ?? ? ?? ?? ?? ???; 7. ??? ?? ?? ?? ??? ????? ?? ??????. ?? Java? ?? ??? ???? ??? ??? ???? Java.Timeapi ??? ?? ??? ???????.

Pre-FormancetArtUptimeMoryUsage, Quarkusandmicronautleadduetocompile-timeprocessingandgraalvsupport, withquarkusoftenperforminglightbetterine serverless sinarios.2.thyvelopecosyste,

NetworkPortSandfirewallsworkTogetToenableCommunication whileensuringsecurity.1.networkportSarevirtualendpointsnumbered0–65535, Withwell-nownports like80 (http), 443 (https), 22 (ssh) ? 25 (smtp) ?? (specservices

Java 's Garbage Collection (GC)? ???? ???? ???? ??????, ?? ? ??? ??? ? ??? ??? ??? ??? ????. 1.GC? ?? ?? (? : ?? ??, ?? ???, ?? ?? ?)?? ??? ???? ????, ?? ? ??? ??? ???? ?????. 2. ?? ???? ????? ????, ?? ?? ??? ??? ???? ?? ??? ??????. 3. ?? ?? ?? ?? : ??? ?? (Eden, S0, S1)? ?? ????? ?????. ??? ??? ?? ? MajorGC? ???? ? ??? ? ????. Metaspace? ??? ?? ???? ?????. 4. JVM? ??? GC ??? ?????. SerialGC? ??? ?? ????? ?????. ParallelGC? ???? ??????. CMS? ?? ???

GradleisBetTerChoiceFormostNewProjectSduetoitssuperiorflexible, Performance, and ModernToolingsupport.1.Gradle'Sgroovy/kotlindslismoreConcisENDEXPRESSIVETHANMAVEN'SVOSEXML.2.GradleOutsMaveninbuildweedweedweedweedweedweedweedweedweedweedweedweedweedweede

DEFER? ??? ???? ?? ??? ??? ???? ? ?????. ?? ??? ?? ? ? ?? ????, ??? ??? ? ?? ?? (LIFO)? ??? ?????. 1. ?? ??? ??? ? ??? ?????. 2. ?? ??? ?? ??? ??? ????? ?????. 3. ?? ? ?? ?? ??? ? ????. 4. ??? ?????? ??? ??? ???? ?????. 5. ?? ??? ???? ?? ??? ?? ??? ?????. ??? ??? ?? ?? ? ???? ???? ? ????.
