java编程学习
文章平均质量分 95
hrbeuwhw
这个作者很懒,什么都没留下…
展开
-
springboot中配置tomcat的access log
在tomcat的access中打印出请求的情况可以帮助我们分析问题,通常比较关注的有访问IP、线程号、访问url、返回状态码、访问时间、持续时间。在Spring boot中使用了内嵌的tomcat,可以通过server.tomcat.accesslog配置tomcat 的access日志,这里就以Spring boot 1.5.3为例。server.tomcat.accesslog....转载 2018-08-15 15:11:39 · 1963 阅读 · 0 评论 -
JVM调优总结(3):垃圾回收面临的问题
如何区分垃圾上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断。垃圾回收程序收集计数为0的对象即可。但是这种方法无法解决循环引用。所以,后来实现的垃圾判断算法中,都是从程序运行的根节点出发,遍历整个对象引用,查找存活的对象。那么在这种方式的实现中,垃圾回收从哪儿开始的呢?即,从哪儿开始查找哪些对象是正在被当前系统使用的。上面分析的堆和栈的区别,其中栈是真正进行程序执行地方,所...转载 2018-03-04 13:28:38 · 118 阅读 · 0 评论 -
JVM调优总结(4):分代垃圾回收
为什么要分代分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象、线程、Socket连接,这类对象跟业务直接挂钩,因此生命周期比较长。但是还有一些对象,主要是程序运行过程中生成的临时变量,这些对象生命...转载 2018-03-04 13:21:13 · 99 阅读 · 0 评论 -
JVM调优总结(5):典型配置
以下配置主要针对分代垃圾回收算法而言。堆大小设置年轻代的设置很关键JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java...转载 2018-03-04 13:13:27 · 101 阅读 · 0 评论 -
java集合继承关系图
*面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。*数组虽然也可以存储对象,但长度是固定的;集合长度是可变的,数组中可以存储基本数据类型,集合只能存储对象。*集合类的特点:集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。 集合框架图1、Collection (集合的最大接口)继承关系 ——List 可以...转载 2018-03-04 12:59:08 · 5267 阅读 · 1 评论 -
ConcurrentHashMap总结
并发编程实践中,ConcurrentHashMap是一个经常被使用的数据结构,相比于Hashtable以及Collections.synchronizedMap(),ConcurrentHashMap在线程安全的基础上提供了更好的写并发能力,但同时降低了对读一致性的要求(这点好像CAP理论啊 O(∩_∩)O)。ConcurrentHashMap的设计与实现非常精巧,大量的利用了volatile,f...转载 2018-03-04 12:42:05 · 160 阅读 · 0 评论 -
JDK7与JDK8中HashMap的实现
JDK7中的HashMapHashMap底层维护一个数组,数组中的每一项都是一个Entrytransient Entry<K,V>[] table;我们向 HashMap 中所放置的对象实际上是存储在该数组当中; 而Map中的key,value则以Entry的形式存放在数组中static class Entry<K,V> implements Map.Entry<K,...转载 2018-03-04 12:40:41 · 120 阅读 · 0 评论 -
java-----instanceof与getClass的区别
在比较一个类是否和另一个类属于同一个类实例的时候,我们通常可以采用instanceof和getClass两种方法通过两者是否相等来判断,但是两者在判断上面是有差别的,下面从代码中看看区别:[java] view plain copypublic class Test { public static void testInstanceof(Object x) { ...转载 2018-03-04 12:37:52 · 159 阅读 · 0 评论 -
Java泛型详解
引言泛型是Java中一个非常重要的知识点,在Java集合类框架中泛型被广泛应用。本文我们将从零开始来看一下Java泛型的设计,将会涉及到通配符处理,以及让人苦恼的类型擦除。泛型基础泛型类我们首先定义一个简单的Box类:12345public class Box { private String object; public void set(String object) { this....转载 2018-03-04 12:24:08 · 121 阅读 · 0 评论 -
MySQL索引类型
一、简介MySQL目前主要有以下几种索引类型:1.普通索引2.唯一索引3.主键索引4.组合索引5.全文索引二、语句CREATE TABLE table_name[col_name data type][unique|fulltext][index|key][index_name](col_name[length])[asc|desc]1.unique|fulltext为可选参数,分别表示唯一索引...转载 2018-03-04 15:31:51 · 141 阅读 · 0 评论 -
常用排序算法总结(一)
目录冒泡排序 鸡尾酒排序 选择排序插入排序二分插入排序 希尔排序 归并排序堆排序快速排序 我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。 排序算法大体可分为两种: 一种是比较排序,时间复杂度O(nlogn) ~ O(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。 另一种是非比较排序,时间复杂度可以达到O(n)...转载 2018-03-03 16:45:16 · 123 阅读 · 0 评论 -
调优总结--调优方法
JVM调优工具Jconsole,jProfile,VisualVMJconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。详细说明参考这里 JProfiler:商业软件,需要付费。功能强大。详细说明参考这里 VisualVM:JDK自带,功能强大,与JProfiler类似。推荐。 如何调优观察内存释放情况、集合类检查、对象树上面这些调优工具都...转载 2018-03-04 13:32:17 · 285 阅读 · 0 评论 -
一次诡异的调优
近碰到的一个Java应用,费了半天劲还是没定位到是哪儿的问。发上来给大家看看,给点建议。 环境DB Server:32core HPUX DB2App Server * 2:8core HPUX WAS6.1 每个节点2个app初次测试现象WAS,DB2CPU均上不去,CPU、内存、磁盘、网络等都正常。从loadrunner报告来看,有两个用例很奇怪,在16/24/50用户下,呈线性增长。根据经验...转载 2018-03-04 13:33:27 · 134 阅读 · 0 评论 -
Java:一步步带你深入了解神秘的Java反射机制
前言在 Java中,反射机制(Reflection)非常重要,但对于很多开发者来说,这并不容易理解,甚至觉得有点神秘 今天,我将献上一份 Java反射机制的介绍 & 实战攻略,希望你们会喜欢。 目录1. 简介 定义:Java语言中 一种 动态(运行时)访问、检测 & 修改它本身的能力 作用:动态(运行时)获取类的完整结构信息 & 调用对象...原创 2018-07-29 19:58:24 · 661 阅读 · 0 评论 -
Java的三种代理模式
1.代理模式代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法举个例子来说明代理的作用:假设我们想邀请一位明星,那么并不是直接连接明星,而是联系明...转载 2018-07-18 19:57:58 · 227 阅读 · 0 评论 -
Hadoop之HDFS文件读写过程
一、HDFS读过程 1.1 HDFS API 读文件 [java] view plain copyConfiguration conf = new Configuration(); FileSystem fs = FileSystem.get(conf); Path file = new Path("demo.txt"); FSDataInputStream inStream = ...转载 2018-03-18 21:36:04 · 559 阅读 · 0 评论 -
超级详细的二叉树的3种遍历方法的递归和非递归的实现
二叉树是一种非常重要的数据结构,很多的数据结构都是基于二叉树的基础演变过来的。二叉树的前,中, 后3种遍历方式,因为树的定义本身就是递归定义的,所以采用递归的方法来实现是很简单的。递归开销会很大,如果使用非递归的方式需要用到栈来进行模拟,递归本身也是建立在栈的基础上的。下面将详细介绍这3种方式的递归实现和非递归实现。(非递归遍历是面试笔试的重点!!!比较的详细(啰嗦。。。。))一:先序遍历(递归)...转载 2018-03-04 22:24:11 · 272 阅读 · 0 评论 -
归并排序的实现
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。[cpp] view plain copy//将有序数组a[]和b[]合并到...转载 2018-03-04 21:58:39 · 156 阅读 · 0 评论 -
快速排序算法原理及实现(单轴快速排序、三向切分快速排序、双轴快速排序)
欢迎探讨,如有错误敬请指正如需转载,请注明出处http://www.cnblogs.com/nullzx/1. 单轴快速排序的基本原理快速排序的基本思想就是从一个数组中任意挑选一个元素(通常来说会选择最左边的元素)作为中轴元素,将剩下的元素以中轴元素作为比较的标准,将小于等于中轴元素的放到中轴元素的左边,将大于中轴元素的放到中轴元素的右边,然后以当前中轴元素的位置为界,将左半部分子数组和右半部分子...转载 2018-03-04 21:23:52 · 206 阅读 · 0 评论 -
图解堆排序
摘要: 作为选择排序的改进版,堆排序可以把每一趟元素的比较结果保存下来,以便我们在选择最小/大元素时对已经比较过的元素做出相应的调整。 堆排序是一种树形选择排序,在排序过程中可以把元素看成是一颗完全二叉树,每个节点都大(小)于它的两个子节点,当每个节点都大于等于它的两个子节点时,就称为大顶堆,也叫堆有序; 当每个节点都小于等于它的两个子节点时,就称为小顶堆。 ...转载 2018-03-04 21:05:29 · 351 阅读 · 0 评论 -
关于高可用系统的一些技术方案
系统设计关于高可用系统的一些技术方案高可用方法论扩展隔离解耦限流分类漏桶算法令牌桶算法滑动窗口计数法动态限流降级熔断发布相关模块级自动化测试灰度发布 回滚其他总结参考资料系统设计:关于高可用系统的一些技术方案可靠的系统是业务稳定、快速发展的基石。那么,如何做到系统高可靠、高可用呢?下面首先讲一下高可用需要面临的常见问题,再从技术方面介绍几种提高系统可靠性、可用性的方法。高可用方法论下面的表格里,列...转载 2018-03-11 21:14:58 · 7880 阅读 · 0 评论 -
MySQL优化
一、SQL语句优化(1)使用limit对查询结果的记录进行限定(2)避免select *,将需要查找的字段列出来(3)使用连接(join)来代替子查询(4)拆分大的delete或insert语句二、选择合适的数据类型(1)使用可存下数据的最小的数据类型,整型 < date,time < char,varchar < blob(2)使用简单的数据类型,整型比字符处理开销更小,因为字...转载 2018-03-04 15:12:22 · 185 阅读 · 0 评论 -
从实际案例聊聊Java应用的GC优化
当Java程序性能达不到既定目标,且其他优化手段都已经穷尽时,通常需要调整垃圾回收器来进一步提高性能,称为GC优化。但GC算法复杂,影响GC性能的参数众多,且参数调整又依赖于应用各自的特点,这些因素很大程度上增加了GC优化的难度。即便如此,GC调优也不是无章可循,仍然有一些通用的思考方法。本篇会介绍这些通用的GC优化策略和相关实践案例,主要包括如下内容:优化前准备: 简单回顾JVM相关知识、介绍G...转载 2018-03-10 22:32:26 · 281 阅读 · 0 评论 -
mina、netty的线程模型
netty从twitter发布的这篇《Netty 4 at Twitter: Reduced GC Overhead》文章让国内Java界为之一振,也小火了一把,同时netty的社区发展也不错,版本迭代非常快,半年不关注大、小版本就发了好几轮了。但是mina就有点淡了,github上面它最后大多数代码最后的修改日期均在2013年,不过我从个人情感上还是挺喜欢mina3的代码,没有太多的用不上的功能...转载 2018-03-03 11:22:28 · 315 阅读 · 0 评论 -
JVM初探:内存分配、GC原理与垃圾收集器
JVM内存的分配与回收大致可分为如下4个步骤: 何时分配 -> 怎样分配 -> 何时回收 -> 怎样回收.除了在概念上可简单认为new时分配外, 我们着重介绍后面的3个步骤:I. 怎样分配- JVM内存分配策略对象内存主要分配在新生代Eden区, 如果启用了本地线程分配缓冲, 则优先在TLAB上分配, 少数情况能会直接分配在老年代, 或被拆分成标量类型在栈上分配(JIT优化). ...转载 2018-03-06 21:56:22 · 362 阅读 · 0 评论 -
Kryo:快速、高效的序列化框架
Kryo是一个快速高效的Java序列化框架,旨在提供快速、高效和易用的API。无论文件、数据库或网络数据Kryo都可以随时完成序列化。Kryo还可以执行自动深拷贝(克隆)、浅拷贝(克隆)。这是对象到对象的直接拷贝,非对象->字节->对象的拷贝。安装Kryo JAR可以在发布页面和Maven中央仓库下载。Kryo最新镜像可以在Sonatype仓库找到,包括对master分支的转载 2018-01-09 11:03:05 · 1547 阅读 · 0 评论 -
java日志,需要知道的几件事(commons-logging,log4j,slf4j,logback)
java日志,需要知道的几件事如果对于commons-loging 、log4j 、slf4j 、LogBack 等都已经非常清楚了,可以忽略本文。几次解决日志冲突问题时对这几个概念的简单总结,希望对这块基础没有理解透的同学能有所帮助,当然如果对这块有更深刻理解的同学,也贡献出自己的知识和见解。一、 概念Commons-logging : apache最早提供的日志的门面接口。转载 2018-01-09 10:59:50 · 175 阅读 · 0 评论 -
剖析Disruptor:为什么会这么快?(一)锁的缺点
原文:http://ifeve.com/disruptor-locks-are-bad/作者:Trisha’s 译者:张文灼,潘曦 整理和校对:方腾飞,丁一Martin Fowler写了一篇非常好的文章,里面不仅提到了Disruptor,而且还解释了Disruptor 如何应用在LMAX的架构里。里面有提及了一些目前没有涉及的概念,但最经常问到的问题是 “Disruptor转载 2018-01-09 10:58:22 · 189 阅读 · 0 评论 -
Disruptor 极速体验
已经不记得最早接触到 Disruptor 是什么时候了,只记得发现它的时候它是以具有闪电般的速度被介绍的。于是在脑子里, Disruptor 和“闪电”一词关联了起来,然而却一直没有时间去探究一下。 最近正在进行一项对性能有很高要求的产品项目的研究,自然想起了闪电般的 Disruptor ,这必有它的用武之地,于是进行了一番探查,将成果和体会记录在案。一、什么是 Disr转载 2018-01-09 10:50:34 · 135 阅读 · 0 评论 -
java总的重载(overload)、重写或覆盖(override)和隐藏分析;
class Super{ public static void smethod(){ System.out.println("super smethod!"); } public static void stest(){ System.out.println("super test!"); } public void test(){ System.out.prin原创 2017-05-02 14:01:27 · 434 阅读 · 0 评论 -
java反射代理学习
import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.InvocationHandler;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;im原创 2017-04-04 14:58:20 · 219 阅读 · 0 评论 -
java DateUtil
import java.sql.Time;import java.sql.Timestamp;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import org.apache.http.原创 2016-04-15 11:19:03 · 627 阅读 · 0 评论 -
Java类加载器ClassLoader总结
JAVA类装载方式,有两种:1.隐式装载, 程序在运行过程中当碰到通过new 等方式生成对象时,隐式调用类装载器加载对应的类到jvm中。 2.显式装载, 通过class.forname()等方法,显式加载需要的类类加载的动态性体现:一个应用程序总是由n多个类组成,Java程序启动时,并不是一次把所有的类全部加载后再运行,它总是先把保证程序运行的基础类一次性加载到jvm中,其它类等到jvm用到的时候...转载 2018-03-06 21:59:36 · 146 阅读 · 0 评论 -
java类中serialversionuid 作用 是什么?举个例子说明
serialVersionUID适用于Java的序列化机制。简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是InvalidCastEx...转载 2018-03-06 22:02:29 · 144 阅读 · 0 评论 -
三个实例演示 Java Thread Dump 日志分析
jstack Dump 日志文件中的线程状态dump 文件里,值得关注的线程状态有:死锁,Deadlock(重点关注) 执行中,Runnable 等待资源,Waiting on condition(重点关注) 等待获取监视器,Waiting on monitor entry(重点关注)暂停,Suspended对象等待中,Object.wait() 或 TIMED_WAITING阻塞,Block...转载 2018-03-03 08:59:11 · 333 阅读 · 0 评论 -
第二篇:使用Spark对MovieLens的特征进行提取
阅读目录前言类别特征提取派生特征提取文本特征提取归一化特征回到顶部前言 在对数据进行了初步探索后,想必读者对MovieLens数据集有了感性认识。而在数据挖掘/推荐引擎运行前,往往需要对数据预处理。预处理的重要性不言而喻,甚至比数据挖掘/推荐系统本身还重要。 然而完整的数据预处理工作会涉及到:缺失值,异常值,口径统一,去重,特征提取等等等等,可以单写一本书了,本文无法一一介...转载 2018-03-10 18:58:10 · 1444 阅读 · 0 评论 -
三篇:一个Spark推荐系统引擎的实现
阅读目录前言第一步:提取有效特征第二步:训练推荐模型第三步:使用ALS推荐模型第四步:物品推荐第五步:推荐效果评估小结回到顶部前言 经过2节对MovieLens数据集的学习,想必读者对MovieLens数据集认识的不错了;同时也顺带回顾了些Spark编程技巧,Python数据分析技巧。 本节将是让人兴奋的一节,它将实现一个基于Spark的推荐系统引擎。 PS1:...转载 2018-03-10 18:57:34 · 1639 阅读 · 0 评论 -
VisualVM 分析full GC问题记录
背景:JAVA APP,主要功能是处理日志并存入db现象:运行一段时间就出现OOM问题,查看GC log发现运行没多久就一直Full GC,并且抛出OOM的异常。[Full GC (Ergonomics) [PSYoungGen: 529920K->525999K(614912K)] [ParOldGen: 1398052K->1397869K(1398272K)] 1927972K-...转载 2018-03-07 21:32:31 · 3783 阅读 · 0 评论 -
Spring IOC -bean对象的生命周期详解
生命周期执行的过程如下:1)spring对bean进行实例化,默认bean是单例2)spring对bean进行依赖注入3)如果bean实现了BeanNameAware接口,spring将bean的id传给setBeanName()方法4)如果bean实现了BeanFactoryAware接口,spring将调用setBeanFactory方法,将BeanFactory实例传进来5)如果bean实现...转载 2018-03-07 21:27:03 · 380 阅读 · 0 评论 -
Spring面试题整理
Spring 概述1. 什么是spring?spring 是个Java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。2. 使用Spring框架的好处是什么?轻量:Spring 是轻量的,基本的版本大约2MB。控制反转:Spring通...转载 2018-03-07 21:11:46 · 75123 阅读 · 5 评论