java
文章平均质量分 65
首席撩妹指导官
大数据码农,欢迎小伙伴们一起研究探索。
展开
-
JVM之内存泄漏问题
否则,对象修改后的哈希值与最初存储进HashSet集合中时的哈希值就不同了,在这种情况下,即使在contains方法使用该对象的当前引用作为的参数去HashSet集合中检索对象,也将返回找不到对象的结果,这也会导致无法从HashSet集合中单独删除当前对象,造成内存泄漏。单例模式,和静态集合导致内存泄露的原因类似,因为单例的静态特性,它的生命周期和JVM的生命周期一样长,所以如果单例对象如果持有外部对象的引用,那么这个外部对象也不会被回收,那么就会造成内存泄漏。隐式泄漏:一直占着内存不释放,直到执行结束;原创 2023-02-11 10:50:01 · 630 阅读 · 0 评论 -
JVM之GC日志分析与对象内存分配回收策略
对象分配的规则并不是固定的,《Java虚拟机规范》并未规定新对象的创建和存储细节,这取决于虚拟机当前使用的是哪一种垃圾收集器,以及虚拟机中与内存相关的参数的设定。原因如下: 一个比较大的对象无法放入新生代,那它自然会往老年代去放,如果老年代也放不下,那会先进行一次新生代的垃圾收集,之后尝试往新生代放,如果还是放不下,才会进行老年代的垃圾收集,之后在往老年代去放,这是一个过程,为什么需要往老年代放,但是放不下而进行新生代垃圾收集的原因,这是因为新生代垃圾收集比老年代垃圾收集更加简单,这样做可以节省性能。原创 2023-02-11 10:47:56 · 306 阅读 · 0 评论 -
JVM指令手册
是则压入 1,否则压入 0。dup2_x1 复制栈顶部两个字长的内容,然后将复制内容及原来弹出的三个字长的内容压入栈。dup2_x2 复制栈顶部两个字长的内容,然后将复制内容及原来弹出的四个字长的内容压入栈。dup_x1 复制栈顶部一个字长的内容,然后将复制内容及原来弹出的两个字长的内容压入栈。dup_x2 复制栈顶部一个字长的内容,然后将复制内容及原来弹出的三个字长的内容压入栈。if_icmpge 如果一个int类型值大于或者等于另外一个int类型值,则跳转。原创 2023-02-11 10:35:58 · 159 阅读 · 0 评论 -
写给大数据开发初学者的话
导读:第一章:初识Hadoop第二章:更高效的WordCount第三章:把别处的数据搞到Hadoop上第四章:把Hadoop上的数据搞到别处去第五章:快一点吧,我的SQL第六章:一夫多妻制第七章:越来越多的分析任务第八章:我的数据要实时第九章:我的数据要对外第十章:牛逼高大上的机器学习经常有初学者在博客和QQ问我,自己想往大数据方向发展,该学转载 2017-07-28 16:46:36 · 263 阅读 · 0 评论 -
九大排序
排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序(使用内存),而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 我们这里说说九大排序就是内部排序。 内部排序有可以分为以下几类: (1)、插入排序:直接插入排序、希尔排序、二分法插入排序。 (2)、选择排序:简单选择排序、堆排序。 (3)、交换排序:冒泡排序、快速排序原创 2017-07-28 09:36:18 · 650 阅读 · 1 评论 -
洗牌算法Fisher–Yates shuffle
在有个函数int rand(int n)返回1-n之间的随机数。如何把数组A[N]打乱?最初的Fisher–Yates算法是在另外开辟一个数组B[N],把打算后的A[N]放到B[N]中,步骤如下设i=01、生成1-A.length长度之间的随机数k2、把A[k]放到B[i],去除数组A中的A[k],i++。3、如果A.length>0,转到第1步。这转载 2017-07-31 17:11:39 · 397 阅读 · 0 评论 -
Java抽象类不可创建对象,但可以调用静态方法将建一个对象
Java抽象类不可创建对象,但可以调用静态方法将建一个对象,利用多态创建子类对象上转成父类类型。附代码:public abstract class Dog {private int age;private String sex;private String name;public int getAge() {return age;}public原创 2017-08-16 16:49:12 · 4645 阅读 · 0 评论 -
Java接口新特性
1、在接口中,可以直接添加静态方法。该静态方法作为接口的类方法,可以直接使用。不需要依托某个实现类。2、在接口中,可以直接添加非抽象的实例方法。在实例方法的申明中,需要增加default关键字修饰,因此这种方法也称为默认方法。他是接口自带的方法。接口被实现后,实例可以直接使用这些默认方法,同时如果对默认方法需要重写时,可以直接重写即可。这两点新特性相对于java8之原创 2017-08-16 17:00:13 · 286 阅读 · 0 评论 -
经典笔试
1. 下面哪些是Thread类的方法()A start() B run() C exit() D getPriority()答案:ABD解析:看Java API docs吧:http://docs.oracle.com/javase/7/docs/api/,exit()是System类的方法,如System.exit(0)。转载 2017-08-16 21:03:36 · 218 阅读 · 0 评论 -
Java关键字final、static使用
一、final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。 final类不能被继承,没有子类,final类中的方法默认是final的。 final方法不能被子类的方法覆盖,但可以被继承。 fi原创 2017-08-10 17:58:12 · 144 阅读 · 0 评论 -
Java异常
异常:编译或运行时发生的异常事件:不同的错误对应不同的异常类型 * Java中程序运行时出错的地方会创建异常对象,会去寻找处理该对象的代码,找到则将异常对象交给相应的代码处理,找不到则退出程序 * Java中对异常分为两种:1.错误(Error);2.Exception Error:系统的严重错误(jvm崩溃,内存错误),Java代码不处理 * Exceptio原创 2017-08-17 17:58:45 · 176 阅读 · 0 评论 -
Javacollection
泛型:jdk5添加的特性 * 类型参数化中的T只是一个占位符,在创建对象时传递的是哪个类*名就是哪个类型 * 一种编译时检测机制,实际类型并没有增加,定义类时使用表示*泛型 * 泛型边界限制往往用在定义变量和参数时使用,目的是对赋的值一个类型*约束。*使用泛型时没有类型上转情况*?是泛型通配符,表示任意类型,有时候在使用通配符时会做边界限*制,extends是上边界限制原创 2017-08-17 19:24:26 · 329 阅读 · 0 评论 -
斐波那契数列
题目要求:编写程序在控制台输出斐波那契数列前20项,每输出5个数换行//其一方法:[java] view plain copypublic class Demo2 { // 定义三个变量方法 public static void main(String[] args) { in原创 2017-08-17 19:37:40 · 599 阅读 · 0 评论 -
经典java题
1.输入一个正数n,输出所有和为n的连续正数序列。 import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);//创建键盘输入scanner对象int n = scanner.nextIn原创 2017-08-16 20:34:57 · 545 阅读 · 1 评论 -
javaBST
1.二叉查找树简介二叉查找树又名二叉搜索树和二叉排序树。性质如下: 在二叉查找树中:(01) 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;(02) 任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;(03) 任意节点的左、右子树也分别为二叉查找树。(04) 没有键值相等的节点(no duplicate nodes)。转载 2017-08-17 20:27:51 · 519 阅读 · 0 评论 -
java静态代码块 构造代码块 构造方法的执行顺序及注意问题
今天我总结了一下java中静态代码块 构造代码块 构造方法的执行顺序及其注意问题首先要知道静态代码块是随着类的加载而加载,而构造代码块和构造方法都是随着对象的创建而加载当时做了这么一个小案例(想必这个大多数学java的都做过,不知道是否都理解了)class Fu{ static { System.out.println("Fu static co原创 2017-08-03 20:45:44 · 1061 阅读 · 0 评论 -
java TreeMap
TreeMap的实现是红黑树算法的实现,所以要了解TreeMap就必须对红黑树有一定的了解,其实这篇博文的名字叫做:根据红黑树的算法来分析TreeMap的实现,但是为了与Java提高篇系列博文保持一致还是叫做TreeMap比较好。通过这篇博文你可以获得如下知识点:1、红黑树的基本概念。2、红黑树增加节点、删除节点的实现过程。3、红黑树左旋转、右旋转的复杂过程。4、J转载 2017-08-18 08:45:49 · 365 阅读 · 0 评论 -
Java ArrayList
一、ArrayList概述 ArrayList是实现List接口的动态数组,所谓动态就是它的大小是可变的。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。 每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。默认初始容量为10。随着Arra转载 2017-08-18 08:47:42 · 257 阅读 · 0 评论 -
Java LinkedList
一、概述 LinkedList与ArrayList一样实现List接口,只是ArrayList是List接口的大小可变数组的实现,LinkedList是List接口链表的实现。基于链表实现的方式使得LinkedList在插入和删除时更优于ArrayList,而随机访问则比ArrayList逊色些。 LinkedList实现所有可选的列表操作,并允许所有的元素包括转载 2017-08-18 08:48:53 · 188 阅读 · 0 评论 -
java Hashmap
HashMap 的存储实现当程序试图将多个 key-value 放入 HashMap 中时,以如下代码片段为例:[java] view plain copyHashMap map = new HashMap(); map.put("语文" , 80.0); map.put("数学" , 89.0); map原创 2017-08-18 08:40:09 · 238 阅读 · 0 评论 -
Java HashSet
一、定义public class HashSetE> extends AbstractSetE> implements SetE>, Cloneable, java.io.Serializable HashSet继承AbstractSet类,实现Set、Cloneable、Serializable接口。其中AbstractSet提供 Set 接口的骨干实现转载 2017-08-18 08:53:50 · 189 阅读 · 0 评论 -
数据结构之贪心算法(背包问题的思考)
package com.lip.datastructure; /** *贪心算法:装箱问题的思考 * @author Lip *装箱问题可以是时间调问题的延伸,当一个箱子没有容积限制,那么就是时间调度问题 *在时间调度问题中:存在两个可以讨论的问题。1.平均最短时间 2.总的最短时间 *这两个问题都和装箱问题中问题如此类似。 */ /* * 上转载 2017-07-27 11:09:51 · 751 阅读 · 0 评论 -
Java中获取键盘输入值的三种方法
程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像C语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代表遇到这种情况我们就束手无策,请你看以下三种解决方法吧: 以下将列出几种方法:方法一:从控制台接收一个字符,然后将其打印出来public static void main(String [转载 2017-07-27 11:13:06 · 376 阅读 · 0 评论 -
摇号中签生成随机号
在现在很多类似于股票市场的交易中,很多项目发行都需要进行申购,等到申购结束,进行摇号,根据中签尾号确定每个用户的中签数量。如果用户U1购买了10个产品,那么他申购的产品尾号就是10000001到10000010,用户U2再购买5个,那么U2的产品尾号10000011到10000015。现在假如发行项目A,发行量为12345,申购量为675893。随机生成中签尾号:[ja转载 2017-07-27 11:14:57 · 1531 阅读 · 1 评论 -
已知二叉树的前序和中序遍历,构建该二叉树
先说说原理吧:前序遍历的第一个节点必然是树的根节点通过第1个节点将中序遍历分割为两部分,左边的就是树的左子树的节点,右边就是树的右子树的节点重复1,2步,直至构建一颗完整的二叉树 Java代码: [java] view plain copy// 前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,原创 2017-07-27 11:16:09 · 337 阅读 · 0 评论 -
数据结构之排序算法
排序算法可以分为稳定排序和不稳定排序。在简单形式化一下,如果A[i] = A[j],A[i]原来在位置前,排序后A[i]还是要在A[j]位置前,这才能叫稳定排序。排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。基数排序就是这样,先按低位排序,逐次按高位排序,低位相同的元素其顺序再高位也相同时是不会改变的。另外,如果排序算法稳定,对基于比较原创 2017-07-27 11:18:33 · 428 阅读 · 0 评论 -
360笔试题目-HashMap实现
自定义一个HashMap,实现map_put,map_delete,map_get方法,要求: 1.查找时间复杂度O(1) 2.. 3.. 因为Java中自带HashMap,平时直接用,也没有考虑,前一段时间只是实现了ArrayList,Vetor,Quene,并没有考虑HashMap。笔试的时候由于时间紧,我只是在HashMap中定义两个ArrayLi原创 2017-07-27 11:20:05 · 354 阅读 · 0 评论 -
360笔试题目
题目: 大意是:给定一个字符串S:“BLFBFSYDLEAKLFBYM”,和一个关键字T:“LBY”,求出在S中包含T的最小字符串?那么应该求出最小字符串:“LFBY” 思路一:遍历T,再遍历S。(咋一看是这样,但是操作起来比较麻烦,我也没实现) 思路二:分别求出关键字T中第一个字符和最后一个字符在S中的位置P1,P2,那么我们要求的答案就在P1和原创 2017-07-27 11:20:59 · 276 阅读 · 0 评论 -
Java socket 访问网页
原来学过socket编程,因为最近我也在做自己的服务器,但是没有加任何安全机制,我就想到了这个服务器可以承受的最大并发量是多少,当然这是和服务器的内存有关的。 如:www.lipyi.com这个网址,同一时间有千万的用户访问(也可能是同一用户),那么服务器是不是要崩掉了?这时候我考虑到很多网址后面都有时间戳,原来就是避免这个问题的。另外也看到有网友说的可以过滤掉同一IP,这也是一个不错的办转载 2017-07-27 11:23:55 · 509 阅读 · 1 评论 -
数据结构之哈夫曼树
所谓哈夫曼树就是要求最小加权路径长度,这是什么意思呢?简而言之,就是要所有的节点对应的路径长度(高度-1)乘以该节点的权值,然后保证这些结果之和最小。 哈夫曼树最常用的应用就是解决编码问题。一般我们用的ASCII是固定长度的编码,对于那些常用的字符,使用很长的长度就显得略为浪费空间了。 下面以一个实例来构建一颗哈夫曼编码树。 设字符集S={A,B,C,D,E,F},字符出现的原创 2017-07-27 11:25:00 · 809 阅读 · 1 评论 -
数据结构之二叉堆(构建堆,堆排序)
public class Heap { public static void main(String[] args) { // TODO Auto-generated method stub //System.out.println((int)-1.原创 2017-07-27 11:22:59 · 571 阅读 · 0 评论 -
Java TreeSet
一、TreeSet定义我们知道TreeMap是一个有序的二叉树,那么同理TreeSet同样也是一个有序的,它的作用是提供有序的Set集合。通过源码我们知道TreeSet基础AbstractSet,实现NavigableSet、Cloneable、Serializable接口。其中AbstractSet提供 Set 接口的骨干实现,从而最大限度地减少了实现此接口所需的工作。Navigable转载 2017-08-18 08:54:36 · 225 阅读 · 0 评论 -
JAVA的Collections类中shuffle的用法
import java.util.*; public class ShuffleTest { public static void main(String[] args) { List list = new ArrayList(); for (int i = 0; i 10; i++) list.原创 2017-08-18 21:12:05 · 664 阅读 · 0 评论 -
成员变量、类变量(静态变量)、局部变量的区别
变量名首写字母使用小写,如果由多个单词组成,从第2个单词开始的其他单词的首写字母使用大写。如果局部变量的名字和成员变量的名字相同, 要想在该方法中使用成员变量,必须使用关键字this[java] view plain copyclass People { String name = "类体重定义的name";原创 2017-08-03 20:31:04 · 11611 阅读 · 5 评论 -
Java二叉搜索树(Binary Search Tree)实现
树集合了数组(查找速度快)和链表(插入、删除速度快)的优点二叉树是一种特殊的树,即:树中的每个节点最多只能有两个子节点二叉搜索树是一种特殊的二叉树,即:节点的左子节点的值都小于这个节点的值,节点的右子节点的值都大于等于这个节点的值节点类:[java] view plain copypublic class Node { pu原创 2017-07-27 20:23:29 · 592 阅读 · 1 评论 -
java中静态初始化块,实例初始化块,构造函数区别
public class People { public static int num=0;//静态变量 String name; static//静态初始化块 { System.out.println(num+":静态初始化块"); } {//实例初始化块 Sys原创 2017-07-27 14:02:37 · 263 阅读 · 1 评论 -
Java中遍历HashMap
//最常规的一种遍历方法,最常规就是最常用的,虽然不复杂,但很重要,这是我们最熟悉的,就不多说了!! public static void work(Map map) { Collection c = map.values(); Iterator it = c.iterator(); for (; it.hasNext();) {原创 2017-07-27 14:01:20 · 200 阅读 · 0 评论 -
Java中遍历HashMap
//最常规的一种遍历方法,最常规就是最常用的,虽然不复杂,但很重要,这是我们最熟悉的,就不多说了!! public static void work(Map map) { Collection c = map.values(); Iterator it = c.iterator(); for (; it.hasNext();) {原创 2017-07-27 11:26:57 · 187 阅读 · 0 评论 -
动态规划法求解硬币找零(Java)
算法描述:动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。基本思想也是将待求解问题分解成若干个子问题,先求解子问题,并将子问题的结果保存下来,然后从这些子问题的解得到原问题的解。动态规划实质上是一种以空间换时间的技术,它在实现的过程中,不得不存储产生过程中的各种状态,所以它的空间复杂度要大于其它的算法。问转载 2017-07-28 09:13:00 · 660 阅读 · 1 评论 -
Java数据结构----图--最短路径解法Dijkstra算法和Floyd算法
最短路径—Dijkstra算法和Floyd算法1、Dijkstra算法1.1、定义概览Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。注意该算法要求图转载 2017-07-28 09:15:04 · 488 阅读 · 1 评论