冒泡算法 冒泡排序顾名思义是通过两两比较,将数据当中最大的那个“浮”到数列的顶端,通过这种不断的上“浮”,最终达到有序的排序算法。冒泡排序因其简单稳定而受到大家的欢迎,也是初学者最容易掌握的一种排序算法。 稳定性:冒泡排序就是把大的元素往后调(或者小的元素往前调)。比较的是相邻的两个元素,交换也只发生在这两个元素之间。所以,如果两个元素相等,是不会交换的;即使两个元素相等却没有相邻,那么通过前面的两两交换把他们相邻起来,这时候比较的相等也是不会交换的,因此相同元素的前后顺序不会改变,所以冒泡排序是一种稳定排序算法。…

2021年9月6日 0条评论 21点热度 阅读全文

java实体类重写.toString()方法 1. 前言 笔者在做javaweb项目时候,使用SSM+maven+easyui,然后在写java实体类的时候,发现大家都要写tostring方法,那么为什么java实体类都要写.toString()方法?于是顺便在这里记录一下。 2. 了解 在Java中每个类都默认继承Object类,除非声明继承于某个类。 而toString 方法来自于Object 类,作用是: 返回一个字符串,是该Java对象的内存地址经过哈希算法得出的int类型的值在转换成十六进制。 换句话说,…

2021年8月23日 0条评论 15点热度 阅读全文

Part1.走近java Part2.自动内存管理机制 Chapter2.java内存区域与内存溢出异常 2.1概述 java与c++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”。java程序员把内存控制的权利交给了java虚拟机。 2.2运行时数据区域 图例: 2.2.1程序计数器 程序计数器(prgram counter register)可以看做是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基…

2021年5月1日 0条评论 35点热度 阅读全文

自己絮絮叨叨的一些废话 这本书真是神作,很少读过国内作者写的如此精确易懂的技术书籍。 我感觉,作为一名Java程序员,是一定要知道、了解进而掌握JVM的,毕竟是Java知识体系的核心所在。然而,刚刚接触Java的时候,一听什么Java虚拟机,就感觉离自己好远好深奥好高大上,我等菜鸟应该是这辈子都不能懂这种东西了。所谓难者不会,想必就是这个道理。 入行了一年多,感觉如果整天都只能做那些CURD的东西,估计这辈子都成为不了一名真正的程序员了。所以便买了这本风评很好的书,准备硬着头皮去拜读一番。那曾料到,这本书是如此的通…

2021年5月1日 0条评论 35点热度 阅读全文

JVM和类 当我们调用 Java 命令运行某个 Java 程序时,该命令将会启动一条 Java 虚拟机进程,不管该 Java 程序有多么复杂,该程序启动了多少个线程,它们都处于该 Java 虚拟机进程里。同一个 JVM 的所有线程、所有变量都处于同一个进程里,它们都使用该 JVM 进程的内存区。当系统出现以下几种情况时, JVM 进程将被终止: 程序运行到最后正常接收; 程序运行到使用System.exit()或Runtime.getRuntime().exit()代码结束程序; 程序运行中遇到未捕获的异常或错误结…

2021年4月1日 0条评论 7点热度 阅读全文

一、 Lambda Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中),或者把代码看成数据,同时引入了函数式接口的概念,函数式接口就是一个具有一个方法的普通接口,这样的接口,可以被隐士转换为lambda表达式,在实际使用过程中,函数式接口时容易出错的,如某个人在接口定义中增加了另一个方法,这时这个接口就不再是函数式接口了,并且编译过程会失败,为了克服这种脆弱性并且能够明确声明接口作为函数式接口的意图,Java 8增加了一种特殊的注解@FunctionalInterface(静态方法和默认方法并不影…

2021年1月15日 0条评论 56点热度 阅读全文

[原文链接](http://blog.csdn.net/tjcyjd/article/details/11111401) How to Iterate Over a Map in Java 在java中遍历Map有不少的方法。我们看一下最常用的方法及其优缺点。 既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHashMap, Hashtable, 等等)   方法一 在for-each循环中使用entries来遍历 这是最常见的并…

2021年1月15日 0条评论 45点热度 阅读全文

Java 7在语言语法上主要新增以下语法特性: 1、二进制整数字面量 2、使用下划线来分隔数值字面量 3、在switch语句中可使用字符串对象作为判别表达式 4、泛型实例创建时的类型推导。这里直接在泛型类的构造器前加空的<>即可,里面无需填写实际类型。 5、在一条catch语句中可捕获多个类型的异常 6、在try语句中直接跟可自动关闭的资源。这其实相当于省去了finally步骤将打开的一些资源进行关闭。 由于这些语法特性比较简单,下面我们直接提供代码示例: private static class My…

2021年1月14日 0条评论 62点热度 阅读全文

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 import java.util.Stack; public class Solution { //入 Stack<Integer> stack1 = new Stack<Integer>(); //出 Stack<Integer> stack2 = new Stack<Integer>(); public void push(int node) { while(stack2.siz…

2019年11月29日 0条评论 3点热度 阅读全文

JMM因何产生 由于计算机的存储设备与处理器的运算能力之间有几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存(Cache)来作为内存与处理器之间的缓冲——将运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存之中没这样处理器就无需等待缓慢的内存读写了。 基于高速缓存的存储交互很好地解决了处理器与内存的速度矛盾,但是引入了一个新的问题——缓存一致性(Cache Coherence)。在多处理器系统中,每个处理器都有自己的高速缓存,而他们又共享…

2018年8月26日 0条评论 27点热度 阅读全文