![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 59
binke_mxb
互联网金融实践者;个人网站:http://www.moxianbin.com/
展开
-
记录一下xshell-linux唤起可视化工具过程
yum install xhost xorg-x11-xauth xorg-x11-fonts-* xorg-x11-font-utils xorg-x11-fonts-Type1 xclock libXp libXt libXtstexport DISPLAY=192.168.118.80:0.0xhost +xclock执行以上指令将唤起对应的时钟可视化工具,然后jconsole将可...原创 2019-11-28 15:24:34 · 619 阅读 · 0 评论 -
【JVM】Java类加载机制
一、概述虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。二、Java类加载时机(1)遇到new、getstatic、putstatic或invokestatic这4条字节码指令时,如果当前类没有进行过初始化,则需要先触发其初始化。生成这4条指令的最常见的Java代码场景是:使用new关键字实例化原创 2017-09-10 18:08:44 · 4884 阅读 · 4 评论 -
【JVM】Intellij IDEA-Main方法 JVM参数设置
最近在研究深入理解JVM虚拟机这本书,有一章是实战OutOfMemoryError,其中就需要在主程序启动时就设置好VM参数,Intellij IDEA设置主程序的VM参数如下图,【Run】-【Edit Configuration】即会出现下图,然后设置VM options即可原创 2017-08-27 11:27:00 · 10557 阅读 · 0 评论 -
【IO/NIO】Java IO/NIO
在Java程序中,对于数据的输入/输出以”流”(Stream)方式进行 java.io 包定义了多个流类型: 1) 按数据流方向分为 – 输入流和输出流 2) 按数据单位分为 – 字节流和字符流 3) 按功能分为 – 节点流和处理流所有流类型均位于java.io包内,分别继承以下四种抽象流类型: 字节流 字符流 输入流 InputStre原创 2017-07-30 21:50:27 · 3089 阅读 · 1 评论 -
google protobuf序列化原理
一、Java数据序列化大致有3种实现方式,1、JSON,2、Object Serialize,3、protobuf,今天重点解析第三种使用google protobuf的序列化原理。Protobuf的简单介绍、使用和分析一、protobuf是什么? protobuf(Google Protocol Buffers)是Google提供一个具有高效的协议数据交换格式工具库(类似Json原创 2017-06-25 21:52:01 · 10901 阅读 · 2 评论 -
【JVM】Java内存区域
Java中的运行时内存区域如下图所示一、Java虚拟机栈(在HotSpot虚拟机中 本地方法栈与虚拟机栈合并)Java虚拟机栈是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的内存模型:每个方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈,动态链接,方法出口等,总之简单理解就是线程的执行代码内存区域,一个线程一个栈。在Java虚拟机规范中面对这个区域规定了两种异常状况原创 2017-09-03 22:00:22 · 4918 阅读 · 0 评论 -
斐波那契数列递归与非递归实现(JAVA语言描述)
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci[1] )以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)在原创 2016-03-25 14:49:59 · 16349 阅读 · 0 评论 -
springMVC框架整合--(Spring+SpringMVC+hibernate)
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如hibernate,MyBatis等。注解: 扫描指定的原创 2016-03-27 11:51:26 · 5194 阅读 · 0 评论 -
【Java并发-深入理解ThreadPoolExecutor】
前言:首先,我想说java的线程池真的是很绕,以前一直都感觉新建几个线程一直不退出到底是怎么实现的,后来学习了ThreadPoolExecutor源码。学习源码的过程中,最恶心的其实就是几种状态的转换了,这也是ThreadPoolExecutor的核心。花了将近小一周才大致的弄明白ThreadPoolExecutor的机制,遂记录下来。一、线程有多重要 线程是一个程序员一定会涉及到的一个概念,但是原创 2017-11-12 17:21:33 · 325 阅读 · 0 评论 -
【Java-集合】ArrayList的自动扩容
直接上源码,JDK1.8中的ArrayList;//往ArrayList中新增一个元素var1public boolean add(E var1) { this.ensureCapacityInternal(this.size + 1); this.elementData[this.size++] = var1; return true;}//新增元素前确保集合容量足够检原创 2017-10-22 21:10:08 · 841 阅读 · 0 评论 -
【Java-集合】HashMap-Hash冲突解决
我们常用HashMap作为我们Java开发时的K-V数据存储结构(如id-person,这个ID对应这个人)。我们知道他们的数据结构么,它的Hash值是什么意义。Hash冲突是怎么解决的。我们带着这2个问题将HashMap做个整体剖析。(其实还有一个问题是,它怎么进行动态扩容的)原创 2017-10-22 20:49:58 · 10110 阅读 · 2 评论 -
【IO/NIO】Java NIO浅析
NIO(Non-blocking I/O,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、I/O处理问题的有效方式。那么NIO的本质是什么样的呢?它是怎样与事件模型结合来解放线程、提高系统吞吐的呢?本文会从传统的阻塞I/O和线程池模型面临的问题讲起,然后对比几种常见I/O模型,一步步分析N原创 2017-08-06 21:47:48 · 7784 阅读 · 0 评论 -
Java IO 概述
Java IO 概述输入和输出 – 数据源和目标媒介术语“输入”和“输出”有时候会有一点让人疑惑。一个应用程序的输入往往是另外一个应用程序的输出。那么OutputStream流到底是一个输出到目的地的流呢,还是一个产生输出的流?InputStream流到底会不会输出它的数据给读取数据的程序呢?就我个人而言,在第一天学习Java IO的时候我就感觉到了一丝疑惑。(校对注:输入流可以理解为向内存输入,输翻译 2017-07-16 19:57:47 · 7418 阅读 · 0 评论 -
【JVM】Tomcat的类加载器架构
一、概述主流的java web服务器,如Tomcat、Jetty、webLogic等服务器,都实现了自己定义的类加载器(一般不止一个)。因为一个功能健全的web服务器,就都要解决以下几个问题(1)部署在同一台服务器上的2个web应用程序所使用的java类库可以实现相互隔离,这个是最基本的需求。(2)部署在同一台服务器上的2个web应用程序所使用的java类库可以相互共享,这个需求很常见,如有10个使原创 2017-09-17 22:01:47 · 4868 阅读 · 0 评论 -
【JVM】Java-JVM-OutOfMemoryError实战
一、主程序代码清单:package sample.mybatis;import java.util.ArrayList;import java.util.List;/** * VM Args : -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError * Created by moxianbin on 17/8/27. */public class原创 2017-08-27 11:49:17 · 3043 阅读 · 0 评论 -
【JVM】JVM性能监控与故障处理工具
一、概述 给一个系统定位问题的时候,知识、经验是关键基础,数据是依据,工具是运用知识处理数据的手段。这里说的数据包括:运行日志、异常堆栈、GC日志、线程快照(threadDump/javacore文件)、堆转储快照(heapDump/hprof文件)等。介绍JVM性能监控与故障处理工具旨在帮助大家了解如何使用sun公司给我们Java开发者提供的JVM监控工具。 名称 主要作用 jps原创 2017-08-20 21:49:16 · 5214 阅读 · 0 评论 -
快速排序(JAVA描述)
设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。 一趟快速排序的算法是: 1)设置两个变量i、j,排序开始的时候:i=0,j=N-1; 2)以第一个原创 2016-03-30 14:33:21 · 301 阅读 · 0 评论 -
希尔排序(Java语言描述)
希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序使用一个序列h1,h2….ht,叫做增量序列,当ht=1时,其实就是插入排序了,但在插入排序进行前,就已经进行跨多元素间的(插入排序),而插入排序只能以1的元素间隔进行比较排序。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越原创 2016-03-27 18:18:53 · 976 阅读 · 0 评论 -
插入排序(JAVA语言描述)
插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法/** * 插入排序 * @author moxianbin */public class Zjinser原创 2016-03-27 17:01:12 · 966 阅读 · 0 评论 -
冒泡排序(JAVA实现)
排序基本思路: 循环数组,当前元素如果比下个元素大,则交换位置。结果:int数组或string数组,将从小到大正序排列/** * 冒泡排序 * @author moxianbin */public class BubbleSort { public static void show(Comparable [] a){ for(int i=0;i<a.length;i+原创 2016-03-25 16:37:03 · 3163 阅读 · 0 评论 -
堆排序(Java语言描述)
堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的非降序排序中,需要使用的就是大根堆,因为根据大根堆的要求可知,最大的值一定在堆顶。时间复杂度:O(nlogn)现象:可比较我原创 2016-03-27 23:48:33 · 996 阅读 · 0 评论 -
eclipse最有用快捷键整理
编辑 Ctrl+1 快速修复(最经典的快捷键,就不用多说了,可以解决很多问题,比如import类、try catch包围等) Ctrl+Shift+F 格式化当前代码 Ctrl+Shift+M 添加类的import导入 Ctrl+Shift+O 组织类的import导入(既有Ctrl+Shift+M的作用,又可以帮你去除没用的导入,很有用) Ctrl+Y 重做(与撤销Ctrl+Z相反)原创 2016-07-05 17:12:19 · 2954 阅读 · 0 评论 -
动态代理与AOP
动态代理与AOP的实现方式原创 2017-05-21 19:21:28 · 3023 阅读 · 0 评论 -
Java中的数组与容器的概念与彼此转换
1、数组与容器的基本概念数组是Java提供的线性队列实现方式,能存储基础数据类型与对象;容器是封装的更高级集合实现,底层可能是数组也可能是链表,但容器只能存对象,不能存基础类型。容器间的关系图: 2,List、Set、Map 转换成数组(高级实现转换成基础承载对象的数组)import java.util.*;public class TestCollection{ public st原创 2017-06-28 22:41:58 · 5127 阅读 · 0 评论 -
java8-stream
1、Stream初体验 我们先来看看Java里面是怎么定义Stream的:A sequence of elements supporting sequential and parallel aggregate operations.我们来解读一下上面的那句话:Stream是元素的集合,这点让Stream看起来用些类似Iterator; 可以支持顺序和并行的对原Stream进行汇聚的操作; 大家原创 2017-06-11 10:44:20 · 3082 阅读 · 0 评论 -
Java中常见数据结构:Java容器 Collection与map -底层如何实现
1:集合 2 Collection(单列集合) 3 List(有序,可重复) 4 ArrayList 5 底层数据结构是数组,查询快,增删慢 6 线程不安全,效率高 7 Vector 8 底层数据结构是数组原创 2017-07-09 16:53:22 · 5368 阅读 · 0 评论 -
Java IO: 管道
Java IO中的管道为运行在同一个JVM中的两个线程提供了通信的能力。所以管道也可以作为数据源以及目标媒介。你不能利用管道与不同的JVM中的线程通信(不同的进程)。在概念上,Java的管道不同于Unix/Linux系统中的管道。在Unix/Linux中,运行在不同地址空间的两个进程可以通过管道通信。在Java中,通信的双方应该是运行在同一进程中的不同线程。通过Java IO创建管道可以通过Java原创 2017-07-23 21:45:15 · 2893 阅读 · 0 评论 -
JAVA基础问题集锦
Java虚拟机一、类加载器 (类加载后存储于方法区(类区)) (1)类加载器有哪些 1、根类加载器(Bootstrap) –C++写的 ,看不到源码 2、扩展类加载器(Extension) –加载位置 :jre\lib\ext中 3、系统(应用)类加载器(System\App) –加载位置 :classpath中 4、自定义加载器(必须继承ClassLoader)1、2是JDK相关类加载原创 2017-08-13 17:01:20 · 3082 阅读 · 0 评论 -
【JVM】OSGi 灵活的类加载结构
一、OSGi是什么OSGi(Open Service Gateway Initiative),是面向Java的动态模型系统,是Java动态化模块化系统的一系列规范。OSGi服务平台提供在多种网络设备上无需重启的动态改变构造的功能。为了最小化耦合度和促使这些耦合度可管理,OSGi技术提供一种面向服务的架构,它能使这些组件动态地发现对方。二、OSGi的结构是怎样的既然OSGi是动态模型系统,那么它的结构原创 2017-09-24 23:30:30 · 4130 阅读 · 0 评论 -
归并排序(Java描述)
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。现象:可比较我的其他博客算法的现象 组建数组元素个数:10000000(千万) 组件随机数组运行时间:162 排序运行时间:1472imp原创 2016-03-30 10:56:16 · 924 阅读 · 0 评论