- 博客(24)
- 收藏
- 关注
原创 Java解析XML文件的方式
在项目里,我们往往会把一些配置信息放到xml文件里,或者各部门间会通过xml文件来交换业务数据,所以有时候我们会遇到“解析xml文件”的需求。一般来讲,有基于DOM树和SAX的两种解析xml文件的方式,在这部分里,将分别给大家演示通过这两种方式解析xml文件的一般步骤。1 XML的文件格式XML是可扩展标记语言(Extensible Markup Language)的缩写,在其中,...
2020-02-01 20:12:02
72
转载 Java之浅析线程同步问题(synchronized的使用)
为什么要使用synchronized?主要针对并发编程的安全问题:共享数据或多线程共同操作共享数据时保证同一时刻只有一个线程可以使用共享资源。问题发现:定义一个售票类,继承Thread,重写run方法,初试ticket值为100。运行结果:省略前面部分,只截取出错展示问题分析:在程序中我们定义了如果票数小于等于0时则立即停止循环,但是现在出现了第0张票和第-1张票。出错原因:我...
2020-02-01 19:51:22
100
转载 spark中job,stage,task之间的关系
1. 什么是jobJob简单讲就是提交给spark的任务。2. 什么是stageStage是每一个job处理过程要分为的几个阶段。3什么是taskTask是每一个job处理过程要分几为几次任务。Task是任务运行的最小单位。最终是要以task为单位运行在executor中。3. Job和stage和task之间有什么关系Job----> 一个或多个stage--->...
2019-01-14 15:15:28
463
转载 spark分区数,task数目,core数,worker节点个数,excutor数量梳理
输入可能以多个文件的形式存储在HDFS上,每个File都包含了很多块,称为Block。当Spark读取这些文件作为输入时,会根据具体数据格式对应的InputFormat进行解析,一般是将若干个Block合并成一个输入分片,称为InputSplit,注意InputSplit不能跨越文件。随后将为这些输入分片生成具体的Task。InputSplit与Task是一一对应的关系。随后这些具体的...
2019-01-14 12:19:53
144
转载 99%的人可能都理解错了HTTP中GET与POST的区别
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。当你在面试中被问到这个问题,你的内心充满了自信和喜悦。你轻轻松松的给出了一个...
2018-09-30 15:18:51
174
转载 JVM(JAVA虚拟机)调优及原理
堆内存设置原理JVM堆内存分为2块:Permanent Space 和 Heap Space。Permanent 即 持久代(Permanent Generation),主要存放的是Java类定义信息,与垃圾收集器要收集的Java对象关系不大。Heap = { Old + NEW = {Eden, from, to} },Old 即 年老代(Old Generation),New 即 年轻代(Yo...
2018-06-13 13:46:56
212
转载 分布式系统一致性原理与解决方案(ACID、CAP、BASE)
1 背景一致性是一个抽象的、具有多重含义的计算机术语,在不同应用场景下,有不同的定义和含义。在传统的IT时代,一致性通常指强一致性,强一致性通常体现在你中有我、我中有你、浑然一体;而在互联网时代,一致性的含义远远超出了它原有的含义,在我们讨论互联网时代的一致性之前,我们先了解一下互联网时代的特点,互联网时代信息量巨大、需要计算能力巨大,不但对用户响应速度要求快,而且吞吐量指标也要向外扩展(既:水平...
2018-05-21 17:56:18
632
转载 JAVA架构师面试题,如何成为架构师
经常面试一些候选人,整理了下我面试使用的题目,陆陆续续整理出来的题目很多,所以每次会抽一部分来问。答案会在后面的文章中逐渐发布出来。基础题目Java线程的状态进程和线程的区别,进程间如何通讯,线程间如何通讯HashMap的数据结构是什么?如何实现的。和HashTable,ConcurrentHashMap的区别Cookie和Session的区别索引有什么用?如何建索引?ArrayList是如何实现...
2018-05-21 17:35:04
669
转载 面对海量请求,缓存设计还应该考虑哪些问题?
从第一个缓存框架 Memcached 诞生以来,缓存就广泛地存在于互联网应用中。如果你的应用流量很小,那么使用缓存可能并不需要做多余的考虑。但如果你的应用流量达到了成百上千万,那么你就不得不考虑深层次的缓存问题:缓存穿透、缓存击穿与缓存雪崩。缓存穿透缓存穿透是指查询一个一定不存在的数据,因为这个数据不存在,所以永远不会被缓存,所以每次请求都会去请求数据库。例如我们请求一个 UserID 为 -1 ...
2018-05-21 17:27:07
169
转载 初探jvm虚拟机之内存管理(一)
本篇记录一些概念性的东西,后续结合实例分析虚拟机的内存机制。java虚拟机在程序运行时将内存划分为以下几个区域,每个区域作用,生命周期各不相同程序计数器 虚拟机栈 本地方法栈 方法区 堆程序计数器 线程执行的字节码行号指示器。 多线程是通过时间片轮转法获取cpu时间,执行线程,因此当线程再次获得cpu时须确保定位到上次执行到哪里,由此可见程序计数器是线程私有的 虚拟机栈 虚拟机栈体现方法执行时的内...
2018-05-21 10:39:54
200
转载 JVM初探 -JVM内存模型
JVM是每个Java开发每天都会接触到的东西, 其相关知识也应该是每个人都要深入了解的. 但接触了很多人发现: 或了解片面或知识体系陈旧. 因此最近抽时间研读了几本评价较高的JVM入门书籍, 算是总结于此. 本系列博客的主体来自 深入理解Java虚拟机(第二版)和 实战Java虚拟机 两部书, 部分内容参考 HotSpot实战 和 深入理解计算机系统 以及网上大量的文章. 若文内有引文未注明出处的...
2018-05-21 09:57:39
91
转载 HashMap深度解析(一)
HashMap可以说是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构,我们总会在不经意间用到它,很大程度上方便了我们日常开发。在很多Java的笔试题中也会被问到,最常见的,“HashMap和HashTable有什么区别?”,这也不是三言两语能说清楚的,这种笔试题就是考察你来笔试之前有没有复习功课,随便来个快餐式的复习就能给出简单的答案。 HashMap计划写两篇文...
2018-05-21 09:52:56
294
转载 Java 面试题 :百度前 200 页都在这里了
基本概念操作系统中 heap 和 stack 的区别什么是基于注解的切面实现什么是 对象/关系 映射集成模块什么是 Java 的反射机制什么是 ACIDBS与CS的联系与区别Cookie 和 Session的区别fail-fast 与 fail-safe 机制有什么区别get 和 post请求的区别Interface 与 abstract 类的区别IOC的优点是什么IO 和 NIO的区别,NIO优...
2018-05-21 01:49:43
9837
1
转载 类加载器深入理解
虚拟机设计团队把类加载阶段中“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的模块称为“类加载器”。类加载器在类层次划分、OSGI、热部署、代码加密等领域大放异彩,成为了Java技术体系中一块重要的基石。类与类加载器类的唯一性对于任意一个类,都需要由加载它的类加载器和类的全限定名一同确定其在Java虚...
2018-05-21 00:45:24
143
转载 类加载器的工作原理
Java类加载器的作用就是在运行时加载类。Java类加载器基于三个机制:委托、可见性和单一性。委托机制是指将加载一个类的请求交给父类加载器,如果这个父类加载器不能够找到或者加载这个类,那么再加载它。可见性的原理是子类的加载器可以看见所有的父类加载器加载的类,而父类加载器看不到子类加载器加载的类。单一性原理是指仅加载一个类一次,这是由委托机制确保子类加载器不会再次加载父类加载器加载过的类。正确理解类...
2018-05-21 00:14:38
286
转载 Java 虚拟机类加载机制
看到这个题目,很多人会觉得我写我的java代码,至于类,JVM爱怎么加载就怎么加载,博主有很长一段时间也是这么认为的。随着编程经验的日积月累,越来越感觉到了解虚拟机相关要领的重要性。闲话不多说,老规矩,先来一段代码吊吊胃口。public class SSClass{ static { System.out.println("SSClass"); }} publ...
2018-05-20 22:53:16
77
转载 Java集合源码剖析——ArrayList源码剖析
ArrayList简介ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的CopyOnWriteArra...
2018-05-20 18:52:20
101
转载 JVM初探- 内存分配、GC原理与垃圾收集器
JVM初探- 内存分配、GC原理与垃圾收集器标签 : JVMJVM内存的分配与回收大致可分为如下4个步骤: 何时分配 -> 怎样分配 -> 何时回收 -> 怎样回收. 除了在概念上可简单认为new时分配外, 我们着重介绍后面的3个步骤:I. 怎样分配- JVM内存分配策略对象内存主要分配在新生代Eden区, 如果启用了本地线程分配缓冲, 则优先在TLAB上分配, 少数情况能会直接...
2018-05-20 18:47:26
115
转载 Java并发编程:线程池的使用
Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 在Java中可以...
2018-05-20 17:40:57
118
转载 僧多肉少的阿里实习,我面了5次才拿到offer!
作为互联网三大巨头之一阿里的实习机会也是僧多肉少毕竟拿到了阿里的实习证明基本中等偏上的互联网offer可以拿到手软但相应的 阿里的实习面试也是卧虎藏龙怎么样拿到实习offer呢这里为大家准备了一篇阿里技术实习岗的面经希望对大家有所帮助~本人一共经历了5次面试,其中4轮技术面,1轮HR面试,才拿到阿里实习offer,真的是一把辛酸泪。所以分享一下自己的面试经验和学习总结,希望能够帮助更多的小伙伴。我...
2018-05-20 14:18:27
321
转载 Spring Boot 入门之基础篇(一)
原文地址:Spring Boot 入门之基础篇(一)博客地址:http://www.extlight.com一、前言Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。本系列以快速入门为主,可当作工具小手册阅读二、环境搭建创建一个 maven 工...
2018-05-20 14:06:16
114
转载 Docker入门与实战讲解
简述Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。Docker是什么? Docker是基于Go语言实现的...
2018-05-20 13:48:14
128
转载 BIO,NIO,AIO的理解
在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解。具体如下: 序号问题1什么是同步?2什么是异步?3什么是阻塞?4什么是非阻塞?5什么是同步阻塞?6什么是同步非阻塞?7什么是异步阻塞?8什么是异步非阻塞?散仙不才,在查了一部分资料后,愿试着以通俗易懂的方式解释下这几个名词。如有不足之处,还望告知。 在弄清楚上面的几个问题之前,我们首先得明白什么是同步,异步,阻塞,非阻塞,只有这几个...
2018-05-20 13:43:10
110
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人