
Java入门
NobiGo
这个作者很懒,什么都没留下…
展开
-
JMX 连接 Docker 内 java 应用注意事项
由于近期可能需要观察程序运行的内存以及线程等指标,需要监控在Docker中java应用,在尝试与之前的方式添加后,并不能生效,因此在这里记录,和大家分享。需要添加JMX配置如下-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local原创 2021-06-18 15:08:11 · 409 阅读 · 0 评论 -
java程序CPU飙高导致Linux服务器反应缓慢的问题
问题出现使用服务器时发现服务器响应迟钝,因此使用Top命令查看服务器上运行的程序:发现第一个程序57695占用CPU占比为%1102。因此想找到这个问题由什么问题导致的。使用top命令查看具体的线程信息top -p 57695 -H由上图发现就一个应用本身的线程,其余都是与GC相关的线程,并且CPU占用率都比较高。jstack 47 >> 47.stack打印堆栈到具体的文件里面,然后使用linux命令:printf '%x' 459即可打印出CPU超高线程在具体执行原创 2021-06-03 14:31:40 · 468 阅读 · 0 评论 -
浅谈——Java反射机制
定义反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。功能在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。相关API通过对象获得原创 2017-05-31 16:40:20 · 425 阅读 · 0 评论 -
Java 多线程之synchronized关键字详解
作用多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作,同步用以解决多个线程同时访问时可能出现的问题。实现同步机制可以使用synchronized关键字实现。当synchronized关键字修饰一个方法的时候,该方法叫做同步方法。当synchronized方法执行完或发生异常时,会自动释放锁。案例下面通过一个例子来对synchronized关键字的用法进行解析。是否使用syn原创 2017-06-02 00:10:07 · 407 阅读 · 0 评论 -
使用QJM实现HDFS高可用
背景Hadoop2.0.0之前,NameNode存在单点故障问题,每个集群中只有一个NameNode,一旦机器损坏或者进程出了问题,在问题被修复(重启进程或者机器)之前整个集群都处于不可用的状态。HDFS集群的可用性主要是指在遇到以下两种情况的时候仍然可以对外不间断的提供服务: 1. 不可预测的硬件故障! 2. 有计划的软件升级或维护!HDFS的HA特性通过在同一个集群中同时运行一个Active翻译 2017-06-06 16:43:24 · 1615 阅读 · 0 评论 -
图解集合 2 :LinkedList
初识LinkedList四个关注点在LinkedList上的答案添加元素查看元素删除元素插入元素LinkedList和ArrayList的对比初识LinkedList上一篇中讲解了ArrayList,本篇文章讲解一下LinkedList的实现。LinkedList是基于链表实现的,所以先讲解一下什么是链表。链表原先是C/C++的概念,是一种线性的存储结构,意思是将要存储的数据存在一个存储原创 2017-06-19 11:00:53 · 397 阅读 · 0 评论 -
图解集合 1 :ArrayList
前言这个分类中,将会写写Java中的集合。集合是Java中非常重要而且基础的内容,因为任何数据必不可少的就是该数据是如何存储的,集合的作用就是以一定的方式组织、存储数据。这里写的集合,一部分是比较常见的、一部分是不常用但是我个人平时见到过的,一些比较相似的集合(比如HashMap和Hashtable)就只讲一个,突出它们之间的区别即可。最后,要指出一点,对于集合,我认为关注的点主要有四点:是否允许原创 2017-06-16 11:30:04 · 769 阅读 · 0 评论 -
图解集合 3 : CopyOnWriteArrayList
初识CopyOnWriteArrayList第一次见到CopyOnWriteArrayList,是在研究JDBC的时候,每一个数据库的Driver都是维护在一个CopyOnWriteArrayList中的,为了证明这一点,贴两段代码,第一段在com.mysql.jdbc.Driver下,也就是我们写Class.forName(“…”)中的内容:public class Driver extends原创 2017-06-19 20:16:51 · 415 阅读 · 0 评论 -
图解集合 4 :HashMap
初识HashMap四个关注点在HashMap上的答案添加数据删除数据修改数据插入数据再谈HashCode的重要性HashMap的table为什么是transient的HashMap和Hashtable的区别初识HashMap之前的List,讲了ArrayList、LinkedList,最后讲到CopyOnWriteArrayList,就前两者而言,反映的是两种思想: 1. Arra原创 2017-06-19 22:12:05 · 1010 阅读 · 0 评论 -
图解集合 5 : LinkedHashMap
初识LinkedHashMap四个关注点在LinkedHashMap上的答案LinkedHashMap基本数据结构初始化LinkedHashMapLinkedHashMap添加元素利用LinkedHashMap实现LRU算法缓存代码演示LinkedHashMap按照访问顺序排序的效果初识LinkedHashMap上篇文章讲了HashMap,说明了,HashMap是一种非常常见、非常有用的原创 2017-06-21 08:52:31 · 1111 阅读 · 1 评论 -
图解集合 7 : 红黑树概念、红黑树的插入及旋转操作详细解读
初识TreeMap之前的文章讲解了两种Map,分别是HashMap与LinkedHashMap,它们保证了以O(1)的时间复杂度进行增、删、改、查,从存储角度考虑,这两种数据结构是非常优秀的。另外,LinkedHashMap还额外地保证了Map的遍历顺序可以与put顺序一致,解决了HashMap本身无序的问题,当对AccessOrder设置为true时,还回使用LRU(Least Recently原创 2017-06-22 15:41:42 · 413 阅读 · 0 评论 -
图解集合:ConcurrentHashMap
ConcurrentHashMap为什么高效?与Hashtable不同的是,ConcurrentHashMap使用的是分段锁技术,将ConcurrentHashMap容器的数据分段存储,每一段数据分配一个Segment,当线程占用一个Segment时,其他线程可以访问其他段的数据.概念Segment : 可重入锁,继承ReentrantLockHashEntry : 主要存储键值对,可以叫节点原创 2017-09-12 09:49:36 · 2551 阅读 · 1 评论 -
IDEA搭建MyBatis项目之异常:java.io.IOException: Could not find resource mapping/******.xml
错误原因IDEA的Maven是不会编译src的java目录的xml文件,所以在Mybatis的配置文件中找不到xml文件!解决方案将下列代码添加到Maven文件中:<build> <resources> <resource> <directory>src/main/java</directory> <includes>原创 2017-12-21 18:57:07 · 1400 阅读 · 0 评论 -
Cloudera Manager 安装提示: jdk x86_64 2000:1.6.0_31-fcs 没有安装源
手动安装对应版本的jdk1.6即可! 下载jdk1.6地址: 下载地址原创 2018-09-09 00:39:37 · 755 阅读 · 0 评论 -
初见-Java的反射机制
概念反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。文章脉络本篇将从以下几个方面讲述反射的知识: - class的使用 - 方法的反射 - 构造函数的反射 - 成员变量的反射什么是class类在面向对象的世界里,万物皆对象。类原创 2017-05-31 16:39:57 · 275 阅读 · 0 评论 -
Java初遇线程池
这篇文章的目的是为了解释线程模型——什么是线程池、以及怎样正确地配置线程池。单线程模型让我们从一些基础的线程模型开始,然后再随着线程模型的演变进行更深一步的学习。你使用的任何应用服务器或框架,如Tomcat、Dropwizard、Jetty等,它们的基本原理其实是相同的。Web服务器的最底层实际上是一个socket。这个socket监听并接受到达的TCP连接。一旦一个连接被建立,就可以通过这个新建立原创 2017-05-29 18:27:51 · 309 阅读 · 0 评论 -
java入门-类、对象的引用
构造方法:1.构造方法没有返回值2.构造方法的名称要与类名相同。 注意:如果在类中定义的构造方法都不是无参的构造方法,则编译器不会为类设置一个默认的无参构造方法,当试图调用无参构造方法实例化一个对象时,编译器会报错。所以只有在类中没有定义任何的构造方法,编译器才会在该类中自动创建一个不带参数的构造方法。静态变量,常量,方法有时需要在同一个内存区域共享一个数据。例如:在圆类对象和球类对象中都会原创 2016-09-25 22:52:00 · 354 阅读 · 0 评论 -
java中String、StringBuffer、StringBuilder的区别
java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题。现在总结一下,看看他们的不同与相同。1. 可变与不可变 String类中使用字符数组保存字符串,如下就是,因为有“final”修饰符,所以可以知道string对象是不可变的。private final char value[]; StringBuil原创 2016-09-26 09:16:55 · 256 阅读 · 0 评论 -
Java设计模式之策略模式
1. 设计模式入门设计模式不是代码的具体实现,它是解决某一类问题的通用设计方案。 设计模式的本质目的是:使软件工程在维护性、扩展性、变化性、复杂度方面成0(N) OO设计是原则,设计模式是具体方法、工具。 例如: 在Java里IO流的类设计,为什么把BufferedReader设计成:new BufferedReader(new FileReader(“F:\test.java”));//原创 2016-10-29 21:35:39 · 332 阅读 · 0 评论 -
JAVA jar文件打包详解
jar文件简介JAR就是Java ARchive。它能让你把一组类文件包装起来,所以交付时只需要一个Jar文件。创建可执行的(简单程序)JAR(HelloWord)1. 确定要打包为jar的所有类文件在相同目录下。2. 创建manifest.txt来描述哪个类滴啊有main方法。Mian-Cliss:(这里要有空格)类名(注意没有加.class后缀)Mian-Cliss: HelloWord3.原创 2016-11-10 22:03:48 · 889 阅读 · 0 评论 -
Java中==与equals方法的区别
区别==:比较的是对象的地址,也就是比较是否是同一个对象equals: 比较的是对象的值原理Java中equals和==的区别 java中的数据类型,可分为两类: 基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean他们之间的比较,应用双等号(==),比较的是他们的值。 public void method1(){原创 2017-03-11 10:05:29 · 386 阅读 · 0 评论 -
浅谈——Java中的Clone()方法
简介clone在Java语言中,clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象和源对象相同。需求有一辆新车,在出厂时新车中已经包含了一些高级配置,此时,顾客感觉这车性价比比较高,想要买两辆相同配置的车,也就是说虽然说另一辆车跟这个车的配置相同,但是并不是同一辆车,(两辆车具有不同的轮胎,既然引出了深克隆与浅克隆的问题:浅克原创 2017-03-22 16:15:39 · 406 阅读 · 0 评论 -
Intellij IDEA如何生成JavaDoc
由于业务上的需要,需要在IntelliJ中生成程序相应的帮助文档。Intellij IDEA作为Java流行的编辑器, 其生成一些Javadoc会对中文乱码, 使用UTF-8编码即可. 这个常见的问题, 则需要生成时设置参数即可.在 “Tools->Gerenate JavaDoc” 面版的 “Other command line arguments:” 栏里输入 “-encoding utf-8转载 2017-03-26 10:17:22 · 494 阅读 · 0 评论 -
Java集合学习:HashMap实现原理
HashMap概述在JDK1.6中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。JDK1.8中,HashMap采用位桶+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间。HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别原创 2017-03-16 21:51:02 · 242 阅读 · 0 评论 -
Java中堆与栈的关系
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存。栈内存:一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。(当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。)堆内存:用于存放new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中原创 2017-03-16 21:53:07 · 235 阅读 · 0 评论 -
Java基本类型和引用类型(参数传递)
JAVA 值传递还是引用传递不管你传的是什么,传过去的都只是一个副本而已,这个副本作为方法的局部变量保存在栈中。如果传的是基本数据类型,修改这个值并不会影响作为参数传进来的那个变量,因为你修改的是方法的局部变量,是一个副本。如果传的是一个对象的引用,也是一样的,也是一个副本,但是这个副本和作为参数传进来的那个引用指向的是内存中的同一个对象,所以你通过这个副本也可以操作那个对象。但是如果你修改这个引用原创 2017-03-16 21:54:50 · 1303 阅读 · 0 评论 -
浅谈——Java中接口类与抽象类
Java接口定义一个Java接口是一些方法特征的集合,这些方法来自于具体方法。一个接口只有方法的特征,而没有方法的实现,因此这些方法在不同的地方实现时,可以具有完全不同的行为。结构属性:public static final(用private修饰会报编译错误)方法:public abstract特性接口不是类,不能使用new运算符实例一个接口。不能构造接口的对象,却能声明接口的变量。接原创 2017-04-04 14:11:49 · 537 阅读 · 0 评论 -
为什么Java中1000==1000为false而100==100为true?
这是一个挺有意思的讨论话题。但是却引出一个常见的面试题。问题引出如果你运行下面的代码:Integer a = 1000, b = 1000;System.out.println(a == b);//1Integer c = 100, d = 100;System.out.println(c == d);//2你会得到:falsetrue基本知识我们知道,如果两个引用指向同一个对象,用\==表原创 2017-04-06 00:28:10 · 523 阅读 · 0 评论 -
Java 堆内存
前提日常喜欢看一些微信分享的好文,总结下来,可以作为过滤器吧(节约更多人的时间!),在这里引用的是别人的文章!对原文的作者表示感谢!确实写的很好!前言Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From S原创 2017-05-24 10:24:27 · 406 阅读 · 0 评论 -
从为什么 String=String 谈到 StringBuilder 和 StringBuffer
前言public class TestMain{ public static void main(String[] args) { String str0 = "123"; String str1 = "123"; System.out.println(str0 == str1); }}运行结果是什么?答案当然是true。对原创 2017-05-28 10:13:35 · 383 阅读 · 0 评论 -
java入门-标识符、关键字、基本数据类型、变量与常量、运算符
标识符理解:标识符可以简单的理解为一个名字,用来标识类名、变量名、方法名、数组名、文件名的有效字符序列。命名规则:Java语言的标示符由字母、数字、下划线和美元符号组成,第一个字符不能为数字。java语言中严重区分大小写Java关键字Java基本数据类型1. 整数类型 注:在对long型变量赋值时结尾必须加上“L”或者“l”,最好加“L”。2. 浮点类型 在对float进行赋值时在结尾必须原创 2016-09-09 00:01:10 · 897 阅读 · 0 评论