Java使用Jsoup写爬虫

2023-11-19

安装Jsoup.jar

1.首先我们打开Jsoup官网
2.按照图片这里下载在这里插入图片描述
3.打开IDEA去新建一个空白项目
在这里插入图片描述
4.安装.jar包最重要的是把jar放到项目里面使用,所以我们要在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

简单了解Jsoup

  1. jsoup提供了一套非常省力的API,可以通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据
  2. 从一个URL,文件或者字符串中解析HTML
  3. 使用DOM或CSS选择器来查找,取出数据
  4. 可以操作HTML元素,属性和文本
  5. 是基于MIT协议发布的,可放心适用于商业项目!

Jsoup框架中的常用方法

1. connet (String url): 创建一个新的Connection连接对象
2. get(): 取得要解析的一个HTML文件,如果从该URL获取HTML时发生错误,则会抛出IOException异常.
3.  parse(String html,String vaseUri): 将输入的HTML解析为一个新的文档(Document),参数baseUri用来相对一个URL转成绝对URL.并指定从哪个网站获取文档.只要解析的不是空字符串,就能返回一个结构合理的文档,其中包含(至少)一个head和一个body的元素
4. parseBodyFragment(): 创建一个空壳的文档,并插入解析过得HTML到Body元素中,如果使用正常的Jsoup.parse(String html)方法,通常也可以得到相同的结果.
5. Document.body(): 能够取得文档body元素的所有子元素,具体功能与doc.getElementsByTag("body")相同
6. Node.atter(String key): 获取一个属性的值
7. Element.text(): 获取一个元素中的文本
8. Element.html()Node.outerHtml(): 获取元素或属性中的HTML内容

动手实践

经过我们简单初步的了解了一下Jsoup.jar的使用我们可以发现Jsoup相比对元素筛选是非常简单的!直接了当,简简单单so~ easy~
在这里插入图片描述
大概初步就是这个样子的
在这里插入图片描述
接着我们需要连接上这个网址
在这里插入图片描述
在这里插入图片描述
这下子就算是连接上了,我们可以输出看看

System.out.printl(element.html());
//添加到后面可以输出测试一下是否连接成功

在这里插入图片描述
我们发现可以输出html文档,这就成功了,接下来我们开始找我们需要的内容在这里插入图片描述
在这里插入图片描述
我们找到我们需要内容的标签了在这里插入图片描述
在这里插入图片描述
这样子一个简单的爬虫就写好了

import org.jsoup.Jsoup;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;
import java.net.URL;

public class test {
    public static void main(String[] args) throws IOException {
        //因为要抛异常我们要在这里使用throws IOException方法
        String URL = "https://pds14.com/xxjj";
        //这里以我初中学校的网站做示范
        Element element = Jsoup.parse(new URL(URL), 3000);
        //延迟三秒开始爬虫
        Elements div = element.getElementsByClass("editableContent");
        String span = div.text();
        System.out.println(span);
    }
}

进阶写法

都说了进阶写法肯定要装个13啊,为了学习爬虫自己可以找一些练手的网站,例如我初中的这个网站,就是一个很好的练手道具,当然下面的进阶写法也是围绕着这个网站写的,大家可以看着 试着理解一下

import org.jsoup.Jsoup;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;
import java.net.URL;
import java.util.Scanner;


public class pds14 {
    //主代码
    public static void Version() throws IOException {
        //检测最新版本
        String URL = "http://www.sharking.cc/Version.html";
        Element element = Jsoup.parse(new URL(URL), 3000);
        String Version = element.getElementsByTag("p").text();
        if (Version.equals("0.1")){
            System.out.println("版本:" + Version);
        }else{
            System.out.println("版本已过时,请更新最新版本!");
            Scanner in = new Scanner(System.in);//生成一个输入流对象
            System.exit(0);
        }
    }

    //爬虫
    public static void xygk_xxjj() throws IOException{
        //校园概况-学校简介
        String URL = "https://pds14.com/xxjj";
        Element element = Jsoup.parse(new URL(URL), 3000);
        Elements div = element.getElementsByClass("editableContent");
        for (Element span : div){
            String xxjj = span.getElementsByTag("span").text();
            System.out.println(xxjj);
        }
    }

    public static void xygk_ldbz() throws IOException{
        //校园概括-领导班子
        String URL = "https://pds14.com/ldbz";
        Element element = Jsoup.parse(new URL(URL), 3000);
        Elements li = element.getElementsByClass("w-list-item");
        for (Element a : li){
            String title = a.getElementsByClass("w-list-title").text();
            String info = a.getElementsByClass("w-list-info").text();
            String img = a.getElementsByTag("img").attr("src");

            System.out.println("*******************主题*******************");
            System.out.println(title);
            System.out.println("图片地址:" + img);
            System.out.println("-----------------文章内容-----------------");
            System.out.println(info);
            System.out.println("******************************************\n\n");
        }
    }

    public static void xygk_xyly() throws IOException{
        //校园概括-校园掠影
        String URL = "https://pds14.com/xyly";
        Element element = Jsoup.parse(new URL(URL), 3000);
        Elements div = element.getElementsByClass("smAreaC");
        for (Element img : div){
            String pic = img.getElementsByTag("img").attr("src");
            System.out.println("图片地址:" + pic);
        }
    }

    public static void xwzx_xyxw() throws IOException{
        //新闻中心-校园新闻
        String URL = "https://pds14.com/xyxw";
        Element element = Jsoup.parse(new URL(URL), 3000);
        Elements li = element.getElementsByClass("w-list-item");
        for (Element a : li){
            String title = a.getElementsByTag("a").text();
            String url = a.getElementsByTag("a").attr("href");
            System.out.println("-------------------最新新闻--------------------");
            System.out.println("文章:" + title);
            System.out.println("地址:https://pds14.com" + url);
            System.out.println("-----------------------------------------------\n");
        }

    }

    public static void xwzx_tzgg() throws IOException{
        //新闻中心-通知公告
        String URL = "https://pds14.com/tzgg";
        Element element = Jsoup.parse(new URL(URL), 3000);
        Elements li = element.getElementsByClass("w-list-link");
        for (Element a : li){
            String title = a.getElementsByTag("a").text();
            String href = a.getElementsByTag("a").attr("href");
            System.out.println("---------------最新通知公告---------------");
            System.out.println("文章:" + title);
            System.out.println("地址:https://pds14.com" + href +"\n");
        }
    }

    public static void djyd_jgzz() throws IOException{
        //党建园地-组织机构
        String URL = "https://pds14.com/zzjg";
        Element element = Jsoup.parse(new URL(URL), 3000);
        Elements li = element.getElementsByClass("w-list-item");
        for (Element a : li){
            String title = a.getElementsByTag("a").text();
            String href = a.getElementsByTag("a").attr("href");

            System.out.println("----------------最新文章----------------");
            System.out.println("标题:" + title);
            System.out.println("地址:https://pds14.com" + href + "\n");
        }
    }

    public static  void djyd_djdt() throws IOException{
        //党建园地-党建动态
        String URL = "https://pds14.com/djdt";
        Element element = Jsoup.parse(new URL(URL), 3000);
        Elements li = element.getElementsByClass("w-list-item");
        for (Element a : li){
            String title = a.getElementsByTag("a").text();
            String href = a.getElementsByTag("a").attr("href");

            System.out.println("----------------最新文章----------------");
            System.out.println("标题:" + title);
            System.out.println("地址:https://pds14.com" + href + "\n");
        }
    }

    public static void jxjy_jxdt() throws IOException {
        //教学教研-教学动态
        String URL = "https://pds14.com/jxdt";
        Element element = Jsoup.parse(new URL(URL), 3000);
        Elements li = element.getElementsByClass("w-list-item");
        for (Element a : li){
            String title = a.getElementsByTag("a").text();
            String href = a.getElementsByTag("a").attr("href");

            System.out.println("----------------最新文章----------------");
            System.out.println("标题:" + title);
            System.out.println("地址:https://pds14.com" + href + "\n");
        }
    }

    public static void jxjy_jxyj() throws IOException{
        //教学教研-教学研究
        String URL = "https://pds14.com/jxyj";
        Element element = Jsoup.parse(new URL(URL), 3000);
        Elements li = element.getElementsByClass("w-list-item");
        for (Element a : li){
            String title = a.getElementsByTag("a").text();
            String href = a.getElementsByTag("a").attr("href");

            System.out.println("----------------最新文章----------------");
            System.out.println("标题:" + title);
            System.out.println("地址:https://pds14.com" + href + "\n");
        }
    }

    public static void dytd_dyhd() throws IOException{
        //德育天地-德育活动
        String URL = "https://pds14.com/dyhd";
        Element element = Jsoup.parse(new URL(URL), 3000);
        Elements li = element.getElementsByClass("w-list-item");
        for (Element a : li){
            String title = a.getElementsByTag("a").text();
            String href = a.getElementsByTag("a").attr("href");

            System.out.println("----------------最新文章----------------");
            System.out.println("标题:" + title);
            System.out.println("地址:https://pds14.com" + href + "\n");
        }
    }

    public static void dytd_xlzx() throws IOException{
        //德育天地-心理咨询
        String URL = "https://pds14.com/xlzx";
        Element element = Jsoup.parse(new URL(URL), 3000);
        Elements li = element.getElementsByClass("w-list-item");
        for (Element a : li){
            String title = a.getElementsByTag("a").text();
            String href = a.getElementsByTag("a").attr("href");

            System.out.println("----------------最新文章----------------");
            System.out.println("标题:" + title);
            System.out.println("地址:https://pds14.com" + href + "\n");
        }
    }

    public static void dytd_gzzd() throws IOException{
        //德育天地-规章制度
        String URL = "https://pds14.com/gzzd";
        Element element = Jsoup.parse(new URL(URL), 3000);
        Elements li = element.getElementsByClass("w-list-item");
        for (Element a : li){
            String title = a.getElementsByTag("a").text();
            String href = a.getElementsByTag("a").attr("href");

            System.out.println("----------------最新文章----------------");
            System.out.println("标题:" + title);
            System.out.println("地址:https://pds14.com" + href + "\n");
        }
    }

    public static void jsfc_jsdw() throws IOException{
        //教师风采-教师队伍
        String URL = "https://pds14.com/jsdw";
        Element element = Jsoup.parse(new URL(URL), 3000);
        //Element div = element.getElementById("smv_con_12_37");
        Elements li = element.getElementsByClass("w-list-item");
        for (Element el : li){
            String title = el.getElementsByClass("w-list-link").text();
            String a = el.getElementsByTag("a").attr("href");
            //打印
            System.out.println("---------------------------------------------------");
            System.out.println(title);
            System.out.println("https://pds14.com" + a);
        }
    }
    public static void main(String[] args) throws IOException{
        while (true){
            Version();//检测是否为最新版本
            System.out.println("******************************");
            System.out.println("|输入\"1\"回车 爬'校园概况'信息|");
            System.out.println("|输入\"2\"回车 爬'新闻中心'信息|");
            System.out.println("|输入\"3\"回车 爬'党建园地'信息|");
            System.out.println("|输入\"4\"回车 爬'教学教研'信息|");
            System.out.println("|输入\"5\"回车 爬'德育天地'信息|");
            System.out.println("|输入\"6\"回车 爬'教师风采'信息|");
            System.out.println("|输入\"7\"回车 爬'招生专栏'信息|");
            System.out.println("    |输入\"8\"回车 退出程序|   ");
            System.out.println("*****************************");
            Scanner inputNum = new Scanner(System.in);
            int Option = inputNum.nextInt();//记录选项变量
            String Option8 = inputNum.nextLine();//记录输入值

            //若是输入8就退出程序
            if (Option8.equals("8")){
                System.exit(0);
            }

            switch (Option) {
                case 1:
                    System.out.println("输入1 查看'学校简介'");
                    System.out.println("输入2 查看'领导班子'");
                    System.out.println("输入3 查看'学校荣誉'");
                    System.out.println("输入4 查看'机构设置'");
                    System.out.println("输入5 查看'校园掠影'");
                    Scanner inuptNum1 = new Scanner(System.in);
                    int Option1 = inuptNum1.nextInt();//记录选项变量
                    switch (Option1){
                        case 1:
                            xygk_xxjj();//校园概况-学校简介
                            break;
                        case 2:
                            xygk_ldbz();//校园概括-领导班子
                            break;
                        case 3:
                            System.out.println("'学校荣誉'页面未建设好!");
                            break;
                        case 4:
                            System.out.println("'机构设置'页面未建设好!");
                            break;
                        case 5:
                            xygk_xyly();//校园概括-校园掠影
                            break;
                    }
                    break;
                case 2:
                    System.out.println("输入1 查看'校园新闻'");
                    System.out.println("输入2 查看'通知公告'");
                    Scanner inputNum2 = new Scanner(System.in);
                    int Option2 = inputNum2.nextInt();//记录选项变量
                    switch (Option2){
                        case 1:
                            xwzx_xyxw();//新闻中心-校园新闻
                            break;
                        case 2:
                            xwzx_tzgg();//新闻中心-通知公告
                            break;
                    }
                    break;
                case 3:
                    System.out.println("输入1 查看'组织机构'");
                    System.out.println("输入2 查看'党建动态'");
                    Scanner inputNum3 = new Scanner(System.in);
                    int Option3 = inputNum3.nextInt();//记录选项变量
                    switch (Option3){
                        case 1:
                            djyd_jgzz();//党建园地-组织机构
                            break;
                        case 2:
                            djyd_djdt();//党建园地-党建动态
                            break;
                    }
                    break;
                case 4:
                    System.out.println("输入1 查看'教学动态'");
                    System.out.println("输入2 查看'教学研究'");
                    Scanner inputNum4 = new Scanner(System.in);
                    int Option4 = inputNum4.nextInt();//记录选项变量
                    switch (Option4){
                        case 1:
                            jxjy_jxdt();//教学教研-教学动态
                            break;
                        case 2:
                            jxjy_jxyj();//教学教研-教学研究
                            break;
                    }
                    break;
                case 5:
                    System.out.println("输入1 查看'教育活动'");
                    System.out.println("输入2 查看'心里咨询'");
                    System.out.println("输入3 查看'规章制度'");
                    Scanner inputNum5 = new Scanner(System.in);
                    int Option5 = inputNum5.nextInt();//记录选项变量
                    switch (Option5){
                        case 1:
                            dytd_dyhd();//德育天地-德育活动
                            break;
                        case 2:
                            dytd_xlzx();//德育天地-心里咨询
                            break;
                        case 3:
                            dytd_gzzd();//德育天地-规章制度
                            break;
                    }
                case 6:
                    System.out.println("输入1 查看'教师队伍'");
                    System.out.println("输入2 查看'名师简介'");
                    Scanner inputNum6 = new Scanner(System.in);
                    int Option6 = inputNum6.nextInt();//记录选项变量
                    switch (Option6){
                        case 1:
                            jsfc_jsdw();//教学教研-教学动态
                            break;
                        case 2:
                            System.out.println("'名师简介'页面未建设好!");//教学教研-教学研究
                            break;
                    }
                case 7:
                    System.out.println("'招生专栏'页面未建设好!");
                    break;
                case 8:
                    System.exit(0);
            }
        }

    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java使用Jsoup写爬虫 的相关文章

  • 如何在Netbeans中插入main方法(快捷方式)

    有时您想运行单个文件来快速测试某些代码 正在输入public static void main String args 每次都很乏味 怎样才能做得更快呢 由于 Netbeans 中预定义的代码模板 这很简单 只需输入psvm并按 Tab 键
  • 我在socket上设置了超时,发现这个值不能大于21

    我在socket上设置了超时 该值小于21秒才有效 21秒后发现超时还是21秒 public static void main String args SimpleDateFormat sdf new SimpleDateFormat yy
  • Hashmap并发问题

    我有一个哈希图 出于速度原因 我希望不需要锁定 假设我不介意过时的数据 同时更新它和访问它会导致任何问题吗 我的访问是获取 而不是迭代 删除是更新的一部分 是的 这会导致重大问题 一个例子是向散列映射添加值时可能发生的情况 这可能会导致表重
  • JavaFX 图像未在舞台中显示

    我尝试了很多次 尝试了很多方法 但都无法让自己的形象在舞台上如我所愿 我认为这可能与java寻找资源的路径有关 但我不确定 因为我刚刚开始使用视觉库 在本例中为JavaFX 这是我的目录结构 MyProject assets img myI
  • 防止 Spring Boot 注册 Spring Security 过滤器之一

    我想禁用安全链中的 Spring Security 过滤器之一 我已经看到了防止 Spring Boot 注册 servlet 过滤器 https stackoverflow com questions 28421966 prevent s
  • 哪个 Swing 布局管理器可以获得我想要的布局?

    我正在尝试按照这个模型制作一个基本的登录菜单 我决定将整个菜单放入 JPanel 中 以便在连接成功后我可以切换到另一个面板 所以我决定使用 Borderlayout 将标题放在北区 将连接按钮放在南区 我将边框布局的中心本身设置为面板 我
  • Spring3/Hibernate3/TestNG:有些测试给出 LazyInitializationException,有些则没有

    前言 我在单元测试中遇到了 LazyInitializationException 的问题 而且我很难理解它 正如你从我的问题中看到的那样Spring 中的数据库会话 https stackoverflow com questions 13
  • Java 正则表达式 - 字母数字,最多一个连字符,句点或下划线,七个字符长

    我是 Java 正则表达式工具的新手 尽管它们潜力巨大 但我很难完成这项任务 我想编写一个正则表达式来验证遵循以下语法的输入字符串 小写字母和数字的任意组合 仅一个下划线 一个破折号或一个句号 无其他特殊字符 最小长度为 5 我想出了以下解
  • 请参阅 Java EE eclipse 调试中的 POST 参数

    我在调试 Java EE 方面没有经验 我更像是一个 javascript 人 我需要查看哪些 HTTP POST 参数到达服务器端 我在表单将其操作指向的 jsp 文件中放置了一个断点 现在我在调试变量窗口中找不到 POST 内容 他们在
  • java.lang.LinkageError:尝试重复的类定义

    为什么会发生错误以及如何修复它 02 13 02 pool 4 thread 2 WARN Exception in thread pool 4 thread 2 02 13 02 pool 4 thread 2 WARN java lan
  • 定期更新 SWT 会导致 GUI 冻结

    Problem 当 GUI 字段定期更新时 SWT 会冻结 我想要一个基于 SWT 的 GUI 其中文本字段的值会定期递增 最初我从单独的线程访问 textField 导致抛出异常 线程 Thread 0 org eclipse swt S
  • 有多少种方法可以将位图转换为字符串,反之亦然?

    在我的应用程序中 我想以字符串的形式将位图图像发送到服务器 我想知道有多少种方法可以将位图转换为字符串 现在我使用 Base64 格式进行编码和解码 它需要更多的内存 是否有其他可能性以不同的方式做同样的事情 从而消耗更少的内存 现在我正在
  • JFace ColumnWeigthData 导致父级增长

    我有一个 Eclipse RCP 应用程序 并且想要在TableViewer using ColumnWeigthData as ColumnLayoutData 问题是父表单 ScrolledForm在示例代码中 每当我布局表格时都会增加
  • 异步迭代器

    我有以下代码 while slowIterator hasNext performLengthTask slowIterator next 由于迭代器和任务都很慢 因此将它们放入单独的线程中是有意义的 这是对迭代器包装器的快速而肮脏的尝试
  • 我想在java中使用XQuery进行Xml处理

    我想用XQuery用于从 java 中的 Xml 获取数据 但我没有得到需要为此添加哪个 Jar 我在谷歌上搜索了很多 但没有得到任何有用的例子 例如我得到以下链接 https docs oracle com database 121 AD
  • 如何初始化静态地图?

    你会如何初始化静态Map在Java中 方法一 静态初始化方法二 实例初始化 匿名子类 或者 还有其他方法吗 各自的优点和缺点是什么 这是说明这两种方法的示例 import java util HashMap import java util
  • 对于当前月份和日期但年份不同的日期,经过的月份计算未给出正确的结果

    我正在尝试计算自特定日期以来经过的月份 该函数工作正常 尽管如果我将今天的日期与过去的不同年份放在一起 它会给我一个月的差异 不到一个月 假设对于所有日期 该函数都运行良好 除了 如果今天是 2014 03 06 YYYY MM DD 并且
  • 无法使用 wget 在 CentOS 机器上安装 oracle jdk

    我想在CentOS上安装oracle java jdk 8 我无法安装 java jdk 因为当我尝试使用命令安装 java jdk 时 root ADARSH PROD1 wget no cookies no check certific
  • Java:使用 Graph API 在线更新 Sharepoint 上的 docx 文件

    我在使用 Java 在线更新 Sharepoint 上的 docx 文件时遇到问题 首先 我检查了构建 PUT 请求的 URL 此处 并使用此请求 PUT drives drive id items item id content 我首先使
  • 为什么应该首选 Java 类的接口?

    PMD https pmd github io 将举报以下违规行为 ArrayList list new ArrayList 违规行为是 避免使用 ArrayList 等实现类型 而是使用接口 以下行将纠正违规行为 List list ne

随机推荐

  • golang ---JSON-ITERATOR 使用

    jsoniter json iterator 是一款快且灵活的 JSON 解析器 Jsoniter 是最快的 JSON 解析器 它最多能比普通的解析器快 10 倍之多 独特的 iterator api 能够直接遍历 JSON 极致性能 0
  • 《图像分割Unet网络分析及其Pytorch版本代码实现》

    最近两个月在做学习图像分割方面的学习 踩了无数的坑 也学到了很多的东西 想了想还是趁着国庆节有时间来做个总结 以后有这方面需要可以来看看 神经网络被大规模的应用到计算机视觉中的分类任务中 说到神经网络的分类任务这里不得不提到CNN 卷积神经
  • 低代码,虽然有点毒瘤,但管用就好

    最近看到不少低门槛开发软件应用的新闻 30 分钟搭一款核酸检测登记应用 2 小时紧急上线抗疫求助应用 00 后低代码开发者毕业月薪过万 等等 近期 广西防城港市出现疫情 全市展开一轮大规模核酸检测 柳钢工人彭期文在钉钉上仅用 30 分钟就通
  • Sqli-labs靶场详细攻略Less 29-33

    Less 29 33 Less 29 GET Error based IMPIDENCE MISMATCH Having a WAF infront of web application 这一关在web应用前有一个waf 在关卡列表界面直接
  • Linux系统服务之inetd

    inetd进程介绍 inetd程序是一个Linux守护进程 您可能已经知道守护进程是一些特殊的程序 它们在被启动之后 自愿放弃对调用自己终端的控制权 守护进程与系统其余部分的接口只有依靠进程间通信 Interprocess Communic
  • sourcegraph下载安装介绍

    https chrome google com webstore detail sourcegraph dgjhfomjieaadpoljlnidmbgkdffpack related 1 打开chrome 打开以上网页 翻墙 页面右上角点
  • 解决问题:error: ‘QStringLiteral’ was not declared in this scope

    QT编译出现如下问题 error QStringLiteral was not declared in this scope resmodel gt setHorizontalHeaderLabels QStringList lt
  • CUDA 程序运行时 CPU 100%的一个解决方法

    CUDA 程序运行时CPU 100 的问题有点让人头痛 在实验过程中调用了kernel函数后 再调用cudaMemcpyAsync 但发现在还有会到block在这个所谓的async api strace 跟了一下 发现99 999 都是 c
  • Python中的None

    一 None None是python中的一个特殊的常量 表示一个空的对象 数据为空并不代表是空对象 例如空列表 等都不是None None有自己的数据类型NontType 你可以将None赋值给任意对象 但是不能创建一个NoneType对象
  • 在微信小程序上使用 mqtt

    大家知道 微信小程序的websocket API他们自己定制了 这样一些运行在浏览器里的库默认是运行不了的 比如mqttjs这个库 https github com mqttjs MQTT js 由于搜狗公司兄弟团队的一个微信小程序要跑mq
  • 强化学习实践三 :编写通用的格子世界环境类

    gym里内置了许多好玩经典的环境用于训练一个更加智能的个体 不过这些环境类绝大多数不能用来实践前五讲的视频内容 主要是由于这些环境类的观测空间的某个维度是连续变量而不是离散变量 这是前五讲内容还未涉及到的知识 为了配合解释David Sil
  • CDH6 开启kerberos Hive的Sentry 用户权限分配

    Apache Sentry是Cloudera公司发布的一个Hadoop开源组件 截止目前还是Apache的孵化项目 它提供了细粒度级 基于角色的授权以及多租户的管理模式 Sentry当前可以和Hive Hcatalog Apache Sol
  • linux的/proc /sys目录的区别

    内核中有三个常用的伪文件系统 procfs debugfs和sysfs procfs The proc filesystem is a pseudo filesystem which provides an interface to ker
  • 碰撞检测之OBB-OBB检测

    碰撞检测之OBB OBB检测 2016年03月07日 02 20 14 阅读数 3732 2D情况 首先回顾一下SAP 两个凸包多边形 当且仅当存在一条线 这两个多边形在这条线上的投影不相交 则这两个多边形也不相交 这条线称为Separat
  • 编译器报:lambda表达式中使用的变量应为final或有效final 解决方案

    目录 问题描述 原因分析 解决方案 1 声明为final 2 使用有效final 4 使用数组或集合 错误问题的最终解决示例 总结 问题描述 今天在写代码的过程中想要在stream map 方法内部对外部变量进行赋值 结果发现编译器报错 提
  • 一个快速实现彩屏应用的跨平台快速原型开发工具平台,最重要的是还免费!8ms.xyz平台原以为是单片机版墨刀,今天上去玩了才知道平台厉害的很,基于WEB端免搭建开发环境,跑的还是C代码编译出来的程序!

    哈哈哈哈 最近发现一个好用的在线编译 下载 烧录的跨平台快速原型开发工具平台 名字好记 8ms 单看名字是真的不知道干嘛的 不知道为啥叫这个 不多想了 好用就得分享给大家 独乐乐不如众乐乐呀 好用的地方到底在哪里呢 一 免开发环境搭建 省时
  • linux supervisor 配置及管理进程(包含docker容器内进程)

    按上篇文章 安装好supervisor之后 一 首先找到supervisord conf目录 一般在 etc supervisord conf 如果找不到 可以使用命令 sudo find etc name supervisord conf
  • 关于手机-电脑-手环使用的记录

    1 手机的设备管理器在哪 设置 安全 更多安全设置 设备管理器 2 手机24小时蓝牙 NFC开启会更加耗电吗 24小时全天开启蓝牙 NFC 结果发现 蓝牙的耗电量还不到0 01 NFC也只有0 02 完全可以忽略不计 3 honor20 p
  • 从数据类型 nvarchar 转换为 numeric 时出错

    请排查是不是你把数字类型的数据往字符类型数据库列中写 比如说 SELECT count 0 FROM sys user u LEFT JOIN sys dept d ON u dept id d dept id WHERE u del fl
  • Java使用Jsoup写爬虫

    Java使用Jsoup写爬虫 安装Jsoup jar 简单了解Jsoup Jsoup框架中的常用方法 动手实践 进阶写法 安装Jsoup jar 1 首先我们打开Jsoup官网 2 按照图片这里下载 3 打开IDEA去新建一个空白项目 4