03 获得Class类的几种方式

1. Class

对象照镜子后可以得到的信息:某个类的属性、方法和构造器、某个类到底实现了哪些接口。对于每个类而言,JRE都为其保留一个不变的Class类型的对象。

一个Class对象包含了特定某个结构(class/interface/enum/annotation/primitive type/void/)的有关信息。

Class本身也是一个类

Class对象只能由系统建立对象 一个加载的类在JVM中只会有一个Class实例

一个Class对象对应的是一个加载到JVM中的一个.class文件

每个类的实例都会记得自己是由哪个Class实

通过Class可以完整地得到一个类中的所有被加载的结构

Class类是Reflection的根源,针对任何你想动态加载、运行的类,唯有先获得相应的Class对象

在Object类中定义了以下方法,此方法被所有子类继承

public final Class getClass()

以上方法的返回值的类型是一个Class类,这个类是Java反射的源头

通过对象反射求出类的名称

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<?php namespace JasonGrimes; class Paginator {     const NUM_PLACEHOLDER = '(:num)';     protected $totalItems;     protected $numPages;     protected $itemsPerPage;     protected $currentPage;     protected $urlPattern;     protected $maxPagesToShow = 10;     protected $previousText = 'Previous';     protected $nextText = 'Next';     /**      * @param int $totalItems The total number of items.      * @param int $itemsPerPage The number of items per page.      * @param int $currentPage The current page number.      * @param string $urlPattern A URL for each page, with (:num) as a placeholder for the page number. Ex. '/foo/page/(:num)'      */     public function __construct($totalItems, $itemsPerPage, $currentPage, $urlPattern = '')     {         $this->totalItems = $totalItems;         $this->itemsPerPage = $itemsPerPage;         $this->currentPage = $currentPage;         $this->urlPattern = $urlPattern;         $this->updateNumPages();     }分页 (pagination),即将一个页面分成两个或两个以上的页面。有一种自动分页机制,可以将移动 Web窗体中的内容分割成一组组较小的页进行呈现,以适合于特定的设备。该机制还呈现可用于浏览到其他页的用户界面元素。无论你的NT服务器的内存有多大,它总是显得不够充足。当物理RAM从低端开始运行时,Windows NT使用了分页文件Pagefile.sys。为了运行不同的进程和应用程序,Pagefile.sys给物理内存分配了一些空间。在这些空间内允许交换数据页。 显然,系统在文件系统缓存中查找数据而不是在驱动器上搜索数据会提高系统的性能。太多的搜索操作会使处理器停顿下来。这就是短语“买更多的内存”成为计算机时代的陈词滥调的原因之一:RAM是你的朋友。管理内存可使你的“朋友”更高效。Windows NT下的Windows Task Manager ([Ctrl][Alt][Delete] | Task Manager)是一个可以为访问内存使用情况提供快捷重要信息的察看工具。考虑物理内存的大小并计算MEM Usage计数器的,Memory Usage History提供了内存活动的即时情况。把CPU Usage计数器和CPU Usage History与MEM Usage计数器一作比较,就可以简单地得到性能的总的评价。如果你必须决定是否要立刻启动 Diskperf以进一步调查分页过多问题那就非常便利了。 Windows NT的分页文件可以通过Control Panel |System | Performance 标签| Virtual Memory进行管理。在这里,你可以控制分页文件的几个设置(包括大小和区域)。显然,你可以允许系统对它进行处理,但是为了获得最佳配置还是使用Vitual Memory Manager (VMM)为好。Windows NT分页文件的基本原则 Windows NT最初通过在物理RAM的数量上加上12MB以设定开始的分页文件大小。这12MB考虑到在系统故障时分页文件内容可被倾倒到一个日志中以防万一。如果看见了“停止”框和接着出现蓝屏死机,你就在操作中遇上了这个问题。如果开始的分页文件的大小小于这个数(物理RAM的数量上加上12MB),就会开始收到Running Out Of Memory消息。 Windows NT操作系统和其应用程序使用了大约10MB的RAM。所以,应该从物理RAM的数量上减去这个。这会给你充分的回旋余地决定你的服务器的内存要求。 Windows NT要求分页文件的最小为2MB。如果分页文件太小或者根本不存在,启动时就会出现警告消息。应该总是遵循RAM的最小 12的规则。在任何情况下,分页文件都不能比服务器中的RAM的大小小。如果系统有32 MB的物理RAM,加上12MB后分页文件总的大小就是44MB。显然,分页文件越大越好。意思是增加对物理RAM的投资,而不是简单地增加分页文件的大小。如果没有足够的RAM,驱动器就会花太多的时间对分页文件进行读写。这只会降低服务器的速度,如果不得不重启服务器来清除I/O请求,甚至会导致服务器不能工作。而如果因为这个原因需要重启机器,那么可能就会有第二次。 默认的12MB RAM足以在必要时把分页文件的内容清除。小的分页文件限制了可以存储的内容并且可能耗完为应用程序保留的虚拟内存。如果RAM不足,就会有更多的分页,这反过来为驱动器增加了额外的负担,从而降低了系统的响应速度。在这样的情况下,Windows NT要求分页文件的最小等于除了系统启动时1MB虚拟内存之外的物理RAM的大小,以便能够把调试信息写到一个文件上。 如前所述,分页文件的最大和最小在Virtual Memory对话框中指定。根据应用程序,分页文件会增大和缩小。当系统运行着时,不能压缩或维护分页文件。但是,使用各种第三方软件包如Diskeeper可对分页文件进行维护。
⼤数据中数据采集的⼏种⽅式 ⼀、采集⼤数据的⽅法 1.1通过系统⽇志采集⼤数据 ⽤于系统⽇志采集的⼯具,⽬前使⽤最⼴泛的有:Hadoop 的Chukwa、ApacheFlumeAFacebook的Scribe和LinkedIn的Kafka等。这 ⾥主要学习Flume。 Flume是⼀个⾼可靠的分布式采集、聚合和传输系统,Flume⽀持在⽇志系统中定制各数据发送⽅,⽤于收集数据,同时对数据进⾏简单 处理,并写到诸如⽂本、HDFS这些接受⽅中。 Flume的核⼼其实就是把数据从数据源收集过来,再将收集到的数据送到指定的⽬的地…… 1.2通过⽹络采集⼤数据 ⽹络采集是指通过⽹络爬⾍或⽹站公开API等⽅式,从⽹站上获取⼤数据信息,该⽅法可以将⾮结构化数据从⽹页中抽取出来,将其存储为 统⼀的本地数据⽂件,并以结构化的⽅式存储。它⽀持图⽚、⾳频、视频等⽂件或附件的采集。 ⼀般来说,⽹络爬⾍⼯具基本可以分3:分布式⽹络爬⾍⼯具(Nutch)、Java⽹络爬⾍⼯具(Crawler4j、WebMagic、 WebCollector)、⾮Java⽹络爬⾍⼯具( Scrapy)。 1.2.1⽹络爬⾍原理 所谓的⽹络爬⾍,其实是⼀种按照⼀定规则,⾃动地抓取web信息的程序或脚本。 ⽹络爬⾍可以⾃动采集所有其能够访问到的页⾯内容,为搜索引擎和⼤数据分析提供数据来源,⼀般有数据采集、数据处理和数据存储三部 分功能。 ⽹络爬⾍是如何爬数据的? 这是因为⽹页中除了供⽤户浏览的⽂字信息外,还包含⼀些超链接信息,通过获取这些超链接URL,再辅以⼀ 定的算法,爬⾍就能得到数据了。 1.2.2爬⾍⼯作流程 基本情况下,爬⾍会⾸先获取⼀部分种⼦URL,将这些URL放⼊待抓取URL队列,从队列中取出待抓取URL,解析DNS得到主机IP,并将 URL对应⽹页下载储存。最后将这些URL放⼊已抓取队列中,如此循环。 1.2.3爬⾍抓取策略 互联⽹上的⽹页数量以亿级为单位,该以什么样的策略爬这些⽹页的数据成为了⼀个问题,⼤致分为⼏个型。 通⽤⽹络爬⾍,⼜称为全⽹爬⾍,主要为门户站点搜索引擎和⼤型web服务提供商采集数据,⼜分为深度优先策略和⼴度优先策略。 聚焦⽹络爬⾍,⼜称为主题⽹络爬⾍,是指选择性地爬⾏那些与预先定义好的主题相关的页⾯的⽹络爬⾍。也就是有⼀个明显的主题, ⽐如⽂本、⽐如图⽚……聚焦⽹络爬⾍⼜分为⼏种:1.基于内容、2.基于链接结构、3.基于增强学习(?)、4.基于语境(?) 增量式⽹络爬⾍,是指获取的⽬标⽹页尽量为新⽹页。 深层⽹络爬⾍,如果将那些传统搜索引擎可以索引的页⾯归属于表层⽹页,那么深层⽹络爬⾍获取的页⾯就是之外的"深层⽹页"。 1.3具体的爬⾍⼯具 1.3.1Scrapy Scrapy 是⼀个为了爬取⽹站数据、提取结构性数据⽽编写的应⽤框架,可以应⽤在包括数据挖掘、信息处理或存储历史数据等⼀系列的程 序中。 虽然Scrpay⾮常强⼤,不过它是适⽤于Python的,⽽本⼈正好⼜没有接触过Python,所以这⼀部分暂且只做了解…… 1.3.2Crawler4j、WebMagic、WebCollector 这三者都是JAVA的单机爬⾍开源框架,区别可能是在于算法和调度之的地⽅?这点搜索了⼀下,都没有能查到,就姑且这样认为吧。 这⾥我就⽤WebMagic做⼀个Demo试⼀试吧! 1.4跑⼀下WebMagic 百度后我找到了WebMagic的 照着⾥⾯的例⼦测试⼀下: ⾸先新建⼀个maven项⽬,是不是web项⽬都可以,只要是maven就⾏了。嗯,当然不要maven也可以⼿动导⼊jar包,不过为了⽅便 还是使⽤maven吧。 官⽹有⼀个官⽅的简单例⼦ public class GithubRepoPageProcessor implements PageProcessor { // 部分⼀:抓取⽹站的相关配置,包括编码、抓取间隔、重试次数等 private Site site = Site.me().setRetryTimes(3).setSleepTime(1000); @Override // process是定制爬⾍逻辑的核⼼接⼝,在这⾥编写抽取逻辑 public void process(Page page) { // 部分⼆:定义如何抽取页⾯信息,并保存下来 page.putField("author", page.getUrl().regex("https://github\\.com/(\\w+)/.*").toString()); page.putField("name", page.getHtml().xpath("//h1[@class='entry-title public']/strong/a/text()").toStri

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值