1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      如何驗(yàn)證數(shù)據(jù)庫中URL的有效性

      這篇文章將為大家詳細(xì)講解有關(guān)如何驗(yàn)證數(shù)據(jù)庫中URL的有效性,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

      創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)由有經(jīng)驗(yàn)的網(wǎng)站設(shè)計(jì)師、開發(fā)人員和項(xiàng)目經(jīng)理組成的專業(yè)建站團(tuán)隊(duì),負(fù)責(zé)網(wǎng)站視覺設(shè)計(jì)、用戶體驗(yàn)優(yōu)化、交互設(shè)計(jì)和前端開發(fā)等方面的工作,以確保網(wǎng)站外觀精美、成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)易于使用并且具有良好的響應(yīng)性。

      曲庫中一些歌曲的URL雖然存在,但是根據(jù)URL已經(jīng)下載不到音樂了.
      Nginx顯示404錯(cuò)誤.

      驗(yàn)證數(shù)據(jù)庫中歌曲的URL是否能夠下載

      首先,先把數(shù)據(jù)庫中的歌曲URL導(dǎo)出到文件.如下格式(歌曲ID,音樂地址類型,路徑)
      1000;AccompanimentURL ;/00/00/00001000_accompaniment.m4a

      然后使用程序掃描URL

             
                  org.apache.logging.log4j
                  log4j-api
                  2.7

              

              
                  org.apache.logging.log4j
                  log4j-core
                  2.7
              

              
                  io.netty
                  netty-all
                  4.1.0.Final
              


      程序比較渣..以后得學(xué)習(xí)一下對(duì)象封裝


        • import java.io.BufferedReader;  

        • import java.io.FileInputStream;  

        • import java.io.FileWriter;  

        • import java.io.IOException;  

        • import java.io.InputStreamReader;  

        • import java.util.HashMap;  

        • import java.util.HashSet;  

        • import java.util.Map;  

        • import java.util.Set;  

        • import java.util.concurrent.BlockingQueue;  

        • import java.util.concurrent.LinkedBlockingQueue;  

        • import java.util.concurrent.Semaphore;  

        • import java.util.concurrent.atomic.AtomicInteger;  

        •   

        • import io.netty.bootstrap.Bootstrap;  

        • import io.netty.buffer.ByteBuf;  

        • import io.netty.buffer.Unpooled;  

        • import io.netty.channel.Channel;  

        • import io.netty.channel.ChannelHandlerContext;  

        • import io.netty.channel.ChannelInboundHandlerAdapter;  

        • import io.netty.channel.ChannelInitializer;  

        • import io.netty.channel.EventLoopGroup;  

        • import io.netty.channel.nio.NioEventLoopGroup;  

        • import io.netty.channel.socket.nio.NioSocketChannel;  

        • import io.netty.handler.codec.LineBasedFrameDecoder;  

        • import io.netty.handler.codec.string.StringDecoder;  

        •   

        • public class URLChecker {  

        •     public static void main(String[] args) {  

        •         String sourceFile="F:\\normal.txt";  

        •         String resultFile="F:\\result.csv";  

        •         new URLInput(sourceFile, resultFile);  

        •           

        •     }  

        •   

        • }  

        •   

        • class URLConnection extends Thread{  

        •     @Override  

        •     public void run() {  

        •         while(true){  

        •             int start=count.get();  

        •             try {  

        •                 Thread.sleep(1000);  

        •             } catch (InterruptedException e) {  

        •                 // TODO Auto-generated catch block  

        •                 e.printStackTrace();  

        •             }  

        •             int end=count.get();  

        •             System.out.println("每秒檢查:"+(end-start));  

        •         }  

        •     }  

        •   

        •     Semaphore sem = new Semaphore(20);  

        •     String[] hosts = new String[5];  

        •     AtomicInteger count = new AtomicInteger();  

        •   

        •     EventLoopGroup group = new NioEventLoopGroup(3);  

        •     URLInput input;  

        •     URLOutput output;  

        •     URLConnection(URLInput input,URLOutput writer) {  

        •         hosts[0] = "172.16.1.151";  

        •         hosts[1] = "172.16.1.152";  

        •         hosts[2] = "172.16.1.153";  

        •         hosts[3] = "172.16.1.154";  

        •         hosts[4] = "172.16.1.155";  

        •           

        •         this.output=writer;  

        •         this.input=input;  

        •   

        •     }  

        •   

        •     public void connection(final Map map)  

        •             throws InterruptedException {  

        •         sem.acquire();  

        •         int index = count.getAndIncrement();  

        •         Bootstrap boot = new Bootstrap();  

        •   

        •         boot.group(group).channel(NioSocketChannel.class).handler(new ChannelInitializer() {  

        •             @Override  

        •             protected void initChannel(Channel ch) throws Exception {  

        •                 ch.pipeline().addLast(new LineBasedFrameDecoder(409600));  

        •                 ch.pipeline().addLast(new StringDecoder());  

        •                 ch.pipeline().addLast(new HttpClientHandler(map, sem,input,output));  

        •             }  

        •         });  

        •         boot.connect(hosts[index % hosts.length], 80);  

        •   

        •     }  

        •       

        •       

        • }  

        •   

        • class HttpClientHandler extends ChannelInboundHandlerAdapter {  

        •     StringBuffer sb = new StringBuffer(512);  

        •     Map map = new HashMap();  

        •     Semaphore sem;  

        •     URLInput input;  

        •     URLOutput writer;  

        •   

        •   

        •     public HttpClientHandler(Map map, Semaphore sem, URLInput input, URLOutput writer) {  

        •         this.map = map;  

        •         this.sem = sem;  

        •   

        •         this.writer=writer;  

        •         this.input=input;  

        •     }  

        •   

        •     @Override  

        •     public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {  

        •         sem.release();  

        •           

        •         ctx.close();  

        •         writer.addSuccURL(map);  

        •     }  

        •   

        •     @Override  

        •     public void channelActive(ChannelHandlerContext ctx) throws Exception {  

        •   

        •         StringBuilder sb = new StringBuilder();  

        •         sb.append("HEAD " + map.get("url") + " HTTP/1.0\r\n");  

        •         sb.append("HOST:" + 80 + "\r\n");  

        •         sb.append("Accept:*/*\r\n");  

        •         sb.append("\r\n");  

        •         ByteBuf bb = Unpooled.copiedBuffer(sb.toString().getBytes("utf8"));  

        •         ctx.writeAndFlush(bb);  

        •   

        •     }  

        •   

        •     @Override  

        •     public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {  

        •         String content = (String) msg;  

        •         if (content.contains(":")) {  

        •             String[] s = content.split(":");  

        •             map.put(s[0].trim(), s[1].trim());  

        •         } else if (content.startsWith("HTTP/1.1")) {  

        •             map.put("httpcode", content.replaceAll("HTTP/1.1 ", ""));  

        •         }  

        •   

        •     }  

        •   

        •     @Override  

        •     public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {  

        •         cause.printStackTrace();  

        •         ctx.close();  

        •         input.addFailUrl(map);  

        •         sem.release();  

        •     }  

        •   

        • }  

        •   

        • class URLInput {  

        •     URLConnection urlcon;  

        •     URLInput(String sourceFile, String resultFile) {  

        •         URLOutput output=new URLOutput(resultFile);  

        •         urlcon=new URLConnection(this, output);  

        •         output.start();  

        •         urlcon.start();  

        •         try {  

        •             init(resultFile);  

        •             read(sourceFile);  

        •         } catch (IOException e) {  

        •             e.printStackTrace();  

        •         } catch (InterruptedException e) {  

        •             e.printStackTrace();  

        •         }  

        •     }  

        •   

        •     /**  

        •      * 初始化已經(jīng)處理的文件,用于中斷處理后的恢復(fù)運(yùn)行  

        •      *   

        •      * @param resultFile  

        •      * @throws IOException  

        •      */  

        •     private void init(String resultFile) throws IOException {  

        •         BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(resultFile)));  

        •         String row = null;  

        •         while ((row = br.readLine()) != null) {  

        •             String[] data = row.split(",");  

        •             set.add(data[0]);  

        •   

        •         }  

        •         br.close();  

        •     }  

        •   

        •     public void addFailUrl(Map map) {  

        •         failq.add(map);  

        •     }  

        •   

        •     final BlockingQueue> failq = new LinkedBlockingQueue>();  

        •     Set set = new HashSet();  

        •   

        •     private void read(String sourceFile) throws IOException, InterruptedException {  

        •         BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(sourceFile)));  

        •         String row = null;  

        •         while ((row = br.readLine()) != null) {  

        •             while (failq.size() != 0) {  

        •   

        •                 final Map m = failq.take();  

        •                 urlcon.connection(m);  

        •             }  

        •   

        •             String[] data = row.split(";");  

        •             final Map map = new HashMap();  

        •             map.put("songid", data[0]);  

        •             map.put("type", data[1]);  

        •             map.put("url", data[2]);  

        •             if (!set.contains(data[0])) {  

        •                 urlcon.connection(map);  

        •             }  

        •         }  

        •         br.close();  

        •         System.out.println("Finish!!");  

        •     }  

        • }  

        •   

        • class URLOutput extends Thread {  

        •     BlockingQueue> succq = new LinkedBlockingQueue>();  

        •     String resultFile;  

        •   

        •     public void addSuccURL(Map map) {  

        •         succq.add(map);  

        •     }  

        •   

        •     public URLOutput(String resultFile) {  

        •         this.resultFile = resultFile;  

        •     }  

        •   

        •     @Override  

        •     public void run() {  

        •         Map map = null;  

        •         FileWriter fw = null;  

        •         try {  

        •             fw = new FileWriter(resultFile, true);  

        •             while ((map = succq.take()) != null) {  

        •                 fw.write(map.get("songid") + "," + map.get("type") + "," + map.get("url") + "," + map.get("httpcode")  

        •                         + "," + map.get("Content-Length") + "\n");  

        •             }  

        •         } catch (InterruptedException e) {  

        •             e.printStackTrace();  

        •         } catch (IOException e) {  

        •             e.printStackTrace();  

        •         } finally {  

        •             try {  

        •                 fw.close();  

        •             } catch (IOException e) {  

        •                 e.printStackTrace();  

        •             }  

        •         }  

        •     }  

        •   


        關(guān)于如何驗(yàn)證數(shù)據(jù)庫中URL的有效性就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。


        本文名稱:如何驗(yàn)證數(shù)據(jù)庫中URL的有效性
        網(wǎng)頁URL:http://www.ef60e0e.cn/article/gjspip.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        揭西县| 曲松县| 精河县| 南漳县| 仁怀市| 南通市| 旌德县| 离岛区| 鲁山县| 黑山县| 江油市| 邯郸县| 宁陵县| 连平县| 永定县| 三河市| 白河县| 宣威市| 连江县| 玉山县| 荆门市| 曲水县| 衡东县| 新密市| 龙门县| 五峰| 古田县| 南溪县| 石棉县| 溆浦县| 新建县| 巨野县| 黎平县| 时尚| 社旗县| 丰宁| 大丰市| 临清市| 松溪县| 绥阳县| 太原市|