日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

爬虫实战:CentOS安装JDK,部署Java程序,利用screen使其保持在前台运行

發布時間:2024/2/28 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 爬虫实战:CentOS安装JDK,部署Java程序,利用screen使其保持在前台运行 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、CentOS 7 yum 安裝與配置 JDK

參考:https://blog.csdn.net/github_38336924/article/details/82221258

1、檢查是否已安裝JDK及卸載

yum list installed | grep [java][jdk]


執行命令出現如上圖所示,需要卸載,反之即不用。

卸載JAVA環境:

yum -y remove java-1.6.0-openjdk* //表時卸載所有openjdk相關文件輸入 yum -y remove tzdata-java.noarch //卸載tzdata-java

2、安裝JDK

查看JDK軟件包列表

yum search java | grep -i --color jdk

選擇版本安裝

yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel # 或者如下命令,安裝jdk1.8.0的所有文件 yum install -y java-1.8.0-openjdk*

查看JDK是否安裝成功

java -version

3、配置環境變量

  • JDK默認安裝路徑/usr/lib/jvm
  • 在/etc/profile文件添加如下命令
# set java environment JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64 PATH=$PATH:$JAVA_HOME/bin CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME CLASSPATH PATH

保存關閉profile文件,執行如下命令生效

source /etc/profile

使用如下命令,查看JDK變量

echo $JAVA_HOME echo $PATH echo $CLASSPATH

部署Java程序

爬蟲示例:(This program can increase csdn blog Page View)

import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.*; import java.util.concurrent.*; import java.util.regex.Matcher; import java.util.regex.Pattern;/** 如果設置了自定義域名,將博客域名前綴填寫入19行的變量userId中,點擊運行* 本程序訪問該博主名下所有博客鏈接*/ public class UrlCrawer {static int maxPages = 20; // 填寫你的博客查找頁數static String userId = "hanquan";// 這里填入主頁名稱:例如主頁為 https://hanquan.blog.csdn.net/ 則填入 hanquan 即可static final String homeUrl = "https://" + userId + ".blog.csdn.net/article/list/";static Set<String> urlSet = new HashSet<>();public static void getUrls() throws IOException, InterruptedException {InputStream is;String pageStr;StringBuilder curUrl = null;for (int i = 1; i < maxPages; i++) {Thread.sleep(300);System.out.println("正在查找第 " + i + " 頁中的博客地址");curUrl = new StringBuilder(homeUrl);curUrl.append(i);System.out.println(curUrl);is = doGet(curUrl.toString());pageStr = inputStreamToString(is, "UTF-8");// 一整頁的html源碼List<String> list = getMatherSubstrs(pageStr, "(?<=href=\")https://hanquan.blog.csdn.net/article/details/[0-9]{8,9}(?=\")");urlSet.addAll(list);System.out.println("加入 " + list.size() + " 個url");}}public static void main(String urlstr[]) throws IOException, InterruptedException {// ----------------------------------------------遍歷每一頁 獲取文章鏈接----------------------------------------------getUrls();// ---------------------------------------------------打印每個鏈接---------------------------------------------------System.out.println("打印每個鏈接");for (String s : urlSet) {System.out.println(s);}System.out.println("打印每個鏈接完畢");// ---------------------------------------------------多線程訪問每個鏈接---------------------------------------------------ExecutorService executor = Executors.newCachedThreadPool();int threadCount = 5; // 并發線程數量for (int i = 0; i < threadCount; i++) {executor.execute(new MyThread(urlSet));}executor.shutdown();}public static InputStream doGet(String urlstr) throws IOException {URL url = new URL(urlstr);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36");InputStream inputStream = conn.getInputStream();return inputStream;}public static String inputStreamToString(InputStream is, String charset) throws IOException {byte[] bytes = new byte[1024];int byteLength = 0;StringBuffer sb = new StringBuffer();while ((byteLength = is.read(bytes)) != -1) {sb.append(new String(bytes, 0, byteLength, charset));}return sb.toString();}// 正則匹配public static List<String> getMatherSubstrs(String str, String regex) {List<String> list = new ArrayList<String>();Pattern p = Pattern.compile(regex);Matcher m = p.matcher(str);while (m.find()) {list.add(m.group());}return list;} }class MyThread implements Runnable {public List<String> urlList;public MyThread(Set<String> urls) {List list = new ArrayList(urls);Collections.shuffle(list);this.urlList = list;}@Overridepublic void run() {int i = 0;while(true){for (String s : urlList) {try {Thread.sleep((int) (Math.random() * 3000));doGet(s);System.out.println(Thread.currentThread().getName() + "成功訪問第" + (++i) + "個鏈接,共" + urlList.size() + "個:" + s);} catch (Exception e) {e.printStackTrace();}}}}public static InputStream doGet(String urlstr) throws IOException {URL url = new URL(urlstr);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36");InputStream inputStream = conn.getInputStream();return inputStream;} }

編譯并運行

javac UrlCrawer.java java UrlCrawer

利用 screen 使其保持在前臺運行

如果想保持其運行,最簡單的方式,就是不關掉窗口。screen 就能起到這個效果。

使用場景:當你使用SSH登錄VPS下載大的文件,比如下載10G的文件,你總不能坐在電腦旁或者開機讓它下載吧。當你編譯源文件的時候,網絡突然斷開了,那是很糟的一件事情,因為有可能你重新編譯的時候會失敗,于是你只有重裝系統的選擇了。但Linux的screen命令能避免這些災難。

screen為多重視窗管理程序。此處所謂的視窗,是指一個全屏幕的文字模式畫面。通常只有在使用telnet登入主機或是使用老式的終端機時,才有可能用到screen程序。screen能在一個終端程序執行多個任務,離線執行任務等。

安裝 screen
yum install screen

鍵入以下命令啟動 screen,之后會生成一個會話窗口。

screen

現在你處于新的會話窗口中,你可以執行任何命令。

管理會話的語法是:ctrl a 指令

比如

  • ctrl a c 表示創建新的會話窗口
  • ctrl a d 表示退出但不關閉當前窗口
  • 更多的命令可以鍵入 ctrl a ? 查看
  • screen -ls 表示查看所有會話列表

這樣就可以在新窗口中跑程序,并且在ctrl a d退出窗口后,保持其仍然在前臺運行了,下次再進來的時候,仍然可以看到控制臺持續輸出。

總結

以上是生活随笔為你收集整理的爬虫实战:CentOS安装JDK,部署Java程序,利用screen使其保持在前台运行的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。