JDK

史上最简单的spark系列教程

三世轮回 提交于 2020-10-02 09:43:54
什么是spark? 网上有关spark的介绍一搜一大堆,这里就简单的说下它的优点: Apache Spark是一种包含流处理能力的下一代批处理框架。与Hadoop的MapReduce引擎基于各种相同原则开发而来的Spark主要侧重于通过完善的内存计算和处理优化机制加快批处理工作负载的运行速度 Spark可作为独立集群部署(需要相应存储层的配合),或可与Hadoop集成并取代MapReduce引擎 与MapReduce不同,Spark的数据处理工作全部在内存中进行,只在一开始将数据读入内存,以及将最终结果持久存储时需要与存储层交互。所有中间态的处理结果均存储在内存中 除了引擎自身的能力外,围绕Spark还建立了包含各种库的生态系统,可为机器学习、交互式查询等任务提供更好的支持。相比MapReduce,Spark任务易于编写 Spark的另一个重要优势在于多样性。该产品可作为独立集群部署,或与现有Hadoop集群集成。该产品可运行批处理和流处理,运行一个集群即可处理不同类型的任务 初级阶段: ----------------------------------------------------------------------------------------------------- 变量lines其实就是一个RDD,是从电脑上的本地文本文件创建出来的 在spark中

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

僤鯓⒐⒋嵵緔 提交于 2020-10-02 08:50:28
几年前没用过jenkins的时候,每次都需要用eclipse打个war包,然后小心翼翼的上传到服务器,给服务器原有的war包改个名字,mv到bak目录中,停止服务,删除原有的webapps的项目,再把新上传的war包放进到tomcat的webapp说的目录下,启动项目。每次改个html的标签的名字都需要重新上传,每次都是这么繁琐的操作。其实小公司还可以容忍,如果是比较大的项目,还持续停留在这个脚本上运维人员都累死了,因为有可能一次部署几十个项目。源码: https://github.com/limingios/netFuture/tree/master/jenkins/ysource/idig8 jenkins 历史 Hudson是在2004年的夏天由Sun公司开发 2005年2月开源并发布了第一个版本。 Hudson发布的时候CruiseControl是CI界的老大哥,但是很快,在大约2007年的时候Hudson已经超越CruiseControl。2008年5月的JavaOne大会上,Hudson获得了开发解决方案类的Duke's Choice奖项。从此,小弟翻身做大哥,Hudson成为CI的代名词。 2010年9月,乌龟壳公司偷偷把Hudson®™变成了注册商标。2010年11月,Hudson社区的核心开发人员发现并angry了,双方进行了不太友好的会谈,不出意料的谈崩了

太刺激了,面试官让我手写跳表,而我用两种实现方式吊打了TA!

隐身守侯 提交于 2020-10-02 07:22:57
前言 本文收录于专辑: http://dwz.win/HjK ,点击解锁更多数据结构与算法的知识。 你好,我是彤哥。 上一节,我们一起学习了关于跳表的理论知识,相信通过上一节的学习,你一定可以给面试官完完整整地讲清楚跳表的来龙去脉,甚至能够边讲边画图。 然而,面试官说,既然你这么精通跳表,不如实现一个呗^^ 我,我,实现就实现,谁怕谁,哼~~ 本节,我将通过两种方式手写跳表,并结合画图,彻底搞定跳表实现的细节。 第一种方式为跳表的通用实现,第二种方式为彤哥自己发明的实现,并运用到HashMap的改写中。 好了,开始今天的学习吧,Let's Go! 文末有跳表和红黑树实现的HashMap的对比,不想看代码的同学也可以直达底部。 通用实现 通用实现主要参考JDK中的ConcurrentSkipListMap,在其基础上,简化,并优化一些东西,学好通用实现也有助于理解JDK中的ConcurrentSkipListMap的源码。 数据结构 首先,我们要定义好实现跳表的数据结构,在通用实现中,将跳表的数据结构分成三种: 普通节点,处于0层的节点,存储数据,典型的单链表结构,包括h0 索引节点,包含着对普通节点的引用,同时增加向右、向下的指针 头索引节点,继承自索引节点,同时,增加所在的层级 类图大概是这样: OK,给出代码如下: /** * 头节点:标记层 * @param <T> */

centos7 如何卸载自带jdk并重装

纵饮孤独 提交于 2020-10-02 06:17:43
点击上方 蓝字 关注我们 装完 centos7 发现自带 openjdk [root@centos ~] # java -version openjdk version "1 .8 .0_242 " OpenJDK Runtime Environment ( build 1 .8 .0_242-b08 ) OpenJDK 64 -Bit Server VM ( build 25 .242-b08 , mixed mode ) 因为自带的 openjdk 可能会出现一些不必要的问题,所以开始下面的操作 1. 卸载自带openjdk 使用`rpm -qa | grep jdk` 或`rpm -qa | grep java`命令查询出自带的 jdk 使用命令`rpm -e --nodeps 系统自带的jdk文件名`删掉黄色框起来的四个,另外三个不要动 2. 安装自己的jdk 。 我这里用的 jdk-8u231-linux-x64.tar.gz 先解压到要安装的目录 [ root@centos ~ ] # tar -xf jdk-8u231-linux-x64.tar.gz -C /opt/lft/ 然后配环境变量:vi /etc/profile export JAVA_HOME=/opt/lft/jdk1.8.0_231/ export PATH= $PATH : $JAVA_HOME

字符串漫游指南

若如初见. 提交于 2020-10-02 04:16:06
古时的风筝原创系列 字符串问题可谓是 Java 中经久不衰的问题,尤其是字符串常量池经常作为面试题出现。可即便是看似简单而又经常被提起的问题,还是有好多同学一知半解,看上去懂了,仔细分析起来却又发现不太明白。 背景说明 本文以 JDK 1.8 为讨论版本,虽然现在都已经 JDK 14了,奈何我们还是钟爱 1.8。 一个提问引起的讨论 为什么说到字符串常量呢,源于群里为数不多的一个程序员小姐姐的提问。 这本来和字符串常量没有关系,后来,一个同学说不只是 int ,换成 String 一样可以。 为什么会有"Java开发_北京"这么奇特的字符串乱入呢,因为提出问题的这位小姐姐的群昵称叫这个,所以群里的同学开玩笑说,以为她是某个房地产大佬,要来开发北京。 以上是开个玩笑,好了,收。 字符串用 == 比较也是 true,这就有意思了。马上有机灵的小伙伴说这和字符串常量池有关系。没错,就是因为字符串常量池的原因。 第一张图其实没什么好说的,在 JDK 1.8 之后已经不允许 Object 和 int 类型用 == 相比较了,编译直接报错。 第二张图中的代码才是重点要说的,我们可以把它简化成下面这段代码,用 == 符号比较字符串,之后的内容都从这几行代码出发。 public static void main(String[] args) { String s1 = "古时的风筝";

Java 类加载器 —— 从底层源码分析它帮我们做了什么?

青春壹個敷衍的年華 提交于 2020-10-02 03:08:28
目录 背景知识补充 加载概述 一、类加载器基本概念 1.1 类加载器加载 Class 大致要经过如下8个步骤 1.2 JVM的类加载机制主要有如下3种 1.3 这里说明一下双亲委派机制 二、启动类加载器 三、扩展类加载器 四、双亲委派 - 源码分析1 五、双亲委派 - 源码分析2 六、线程上下文类加载器 七、自定义类加载器 背景知识补充 从 Java 类的生命周期而言,一个类包括如下几个阶段: 类加载阶段分类: 加载 、 链接 (验证/准备/解析)、 初始化 (<cinit>()V方法 / 发生的时机),如下图所示: 参考链接: Java 类加载 —— 底层是如何实现的? 加载概述 加载指的是将类的 class 文件读入到内存,并为之创建一个 java.lang.Class 对象,也就是说,当程序中使用任何类时,系统都会为之建立一个 java.lang.Class 对象。 类的加载由类加载器完成 ,类加载器通常由JVM提供,这些类加载器也是前面所有程序运行的基础,JVM 提供的这些类加载器通常被称为系统类加载器。除此之外,开发者可以通过继承 ClassLoader 基类来创建自己的自定义类加载器。 一、类加载器基本概念 类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。 顾名思义,类加载器

一文解开java中字符串编码的小秘密

≡放荡痞女 提交于 2020-10-01 18:48:24
简介 在本文中你将了解到Unicode和UTF-8,UTF-16,UTF-32的关系,同时你还会了解变种UTF-8,并且探讨一下UTF-8和变种UTF-8在java中的应用。 一起来看看吧。 Unicode的发展史 在很久很久以前,西方世界出现了一种叫做计算机的高科技产品。 初代计算机只能做些简单的算数运算,还要使用人工打孔的程序才能运行,不过随着时间的推移,计算机的体积越来越小,计算能力越来越强,打孔已经不存在了,变成了人工编写的计算机语言。 一切都在变化,唯有一件事情没有变化。这件事件就是计算机和编程语言只流传在西方。而西方日常交流使用26个字母加有限的标点符号就够了。 最初的计算机存储可以是非常昂贵的,我们用一个字节也就是8bit来存储所有能够用到的字符,除了最开始的1bit不用以外,总共有128中选择,装26个小写+26个大写字母和其他的一些标点符号之类的完全够用了。 这就是最初的ASCII编码,也叫做美国信息交换标准代码(American Standard Code for Information Interchange)。 后面计算机传到了全球,人们才发现好像之前的ASCII编码不够用了,比如中文中常用的汉字就有4千多个,怎么办呢? 没关系,将ASCII编码本地化,叫做ANSI编码。1个字节不够用就用2个字节嘛,路是人走出来的,编码也是为人来服务的

Windows 命令行终端 PowerShell 美化计划

烂漫一生 提交于 2020-10-01 18:41:26
1. 前言 欢迎加入[ 微信圈子 ] 程序员交流圈 交流编程经验。 作为一个程序员,终端工具是必不可少的。但是 「Windows」 的默认终端实在太丑了,作为一个颜控忍不了。所以必须实施终端改造计划。目前我们都会使用 「PowerShell」 ,所以改造计划就先从它开始。先看看我改造的效果: ❝ 本文涉及的所有命令都在 「管理员模式」 的 「PowerShell」 下执行。 ❞ 2. 安装 Chocolatey 「homebrew」 很多使用 「Mac」 的同学都用过,很方便的软件包管理工具。一行命令就可以安装很多我们需要的开发软件,比如 「Maven」 、 「JDK」 等,命令非常简单,比如我们从软件仓库查找一下 「JDK」 : 安装 「Chocolatey」 的命令为: Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iwr https://chocolatey.org/install.ps1 -UseBasicParsing | iex 3. 改造字体 第一步就是改造字体,默认的 「新宋体」

阿里巴巴 Java 开发者手册,也是防坑指南

那年仲夏 提交于 2020-10-01 16:26:49
古时的风筝第 68 篇原创文章 4月22日,阿里巴巴发布了泰山版《Java 开发手册》,以前以为 终极版 就真的是终极版了,没想到还是想的太简单了,继终极版之后又发布了详尽版、华山版,这不,泰山版又来了。想想也对,行业一直在发展,JDK 也一直在更新,怎么可能有终极版。 自从2017年阿里发布终结版发布以来,我就把这个手册当做开发规范使用,放在电脑中最显眼的地方,时不时就翻出来看一看,并且在团队中推广,还顺便安利给了一些朋友。每次有新版本发布都第一时间拿下来再重新读一遍。 本次泰山版发布,对比上一版本有如下几个更新: 发布错误码统一解决方案。 新增 34条新规约,比如,日期时间的闰年、闰月问题,三目运算的自动拆箱,SQL 查询的表别名限定,Collectors 类的 toMap()方法使用注意等。 修改描述 90处,比如,阻塞等待锁、建表的小数类型等。 完善若干处示例,比如,ISNULL 的示例等 。 为什么要经常拿出来读一读呢? 手册涉及从项目设计到编码、部署的各个方面。但是对于开发者个人来说,有些方面其实不常接触,比如并发控制有很多人接触的机会有限。再比如异常定义、MySQL 管理,可能是项目开始的时候被核心开发人员或者架构师统一定制好了,有些同学也就直接拿来主义了,也不关心具体的设计原理和实现细节。 手册也不长,这一版正文只有 57 页,读一遍也花不了多长时间

面试进阶必备:JVM+Redis+设计模式+SpringBoot.pdf文档资料

邮差的信 提交于 2020-10-01 14:28:56
今天给大家分享下我整理的Java架构面试专题及答案,其中大部分都是大企业面试常问的面试题,可以对照这查漏补缺,当然了,这里所列的肯定不可能覆盖全部方式,不过也希望能对即将找工作的朋友起到一些帮助! Java面试的重点: 数据结构与算法,JVM内存结构、垃圾回收器、回收算法、GC、并发编程相关(多线程、线程池等)、NIO/BIO、性能优化、设计模式、Spring框架:分布式相关:Redis缓存、一致Hash算法、分布式存储、负载均衡等,微服务以及Docker容器等。 在这由于文字很多,小编已将金九银十的面试高频考点都整理为了一份PDFJava面经文档,同时还会有对应的书籍pdf资料。 三连之后查看下图中免费获取 Java面经。pdf文档资料 部分面试常问的面试专题 一、JVM与性能优化 描述一下 JVM 加载 Class 文件的原理机制? 什么是类加载器? 类加载器有哪些? 什么是tomcat类加载机制? 类加载器双亲委派模型机制? Java 内存分配? Java 堆的结构是什么样子的? 简述各个版本内存区域的变化? 说说各个区域的作用? Java 中会存在内存泄漏吗,简述一下? Java 类加载过程?什么是GC? 为什么要有 GC? 简述一下Java 垃圾回收机制? 如何判断一个对象是否存活? 垃圾回收的优点和原理,并考虑 2 种回收机制? 基本原理是什么? 深拷贝和浅拷贝?