自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(159)
  • 问答 (2)
  • 收藏
  • 关注

原创 深入理解Java虚拟机1~内存区域与内存溢出

1、对象的创建vm遇到一条new指令时,首先将会检查这个指令的参数是否能在常亮池中定位到一个类的符号引用,并检查这个符号引用代表的类是否已经被加载、解析和初始化。2、reference引用Java程序需要通过栈上的reference数据来操作堆上的具体对象。3、java内存管理4、垃圾收集器与内存分配策略5、垃圾收集算法to be con

2017-01-03 22:09:13 639

原创 jvm内存溢出分析

包括:1.    栈溢出(StackOverflowError)2.    堆溢出(OutOfMemoryError:java heap space)3.    永久代溢出(OutOfMemoryError: PermGen space)4.    OutOfMemoryError:unable to create native threadJava虚拟机规范规定JVM的内存分

2016-12-28 18:37:03 832

转载 MySQL优化

当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化:单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量:字段

2016-12-26 11:31:57 390

转载 基于Redis实现分布式锁

分布式锁的基本功能:1.同一时刻只能存在一个锁2.需要解决意外死锁问题,也就是锁能超时自动释放3.支持主动释放锁分布式锁解决什么问题:多进程并发执行任务时,需要保证任务的有序性或者唯一性准备:redis版本>=2.6redis是主从+sentinel模式(为了高可用)原理:redis2.6之后,SET命令支持超时和key存在检查,这是一个原子操作

2016-12-12 11:11:10 851

转载 Java常见性能优化总结

常见性能优化策略的总结2016-12-11 晓明Java北京本文要感谢我职级评定过程中的一位评委,他建议把之前所做的各种性能优化的案例和方案加以提炼、总结,以文档的形式沉淀下来,并在内部进行分享。力求达到如下效果:1. 形成可实践、可借鉴、可参考的各种性能优化的方案以及选型考虑点,同时配合具体的真实案例,其他人遇到相似问题时,不用从零开始。2. 有助于开阔视野,

2016-12-12 10:15:50 7637 2

转载 动态代理proxy与CGLib的区别

静态代理与动态代理代理分为静态代理和动态代理   按照代理创建的时期,可以分为动态代理和静态代理: 静态代理:由程序员或者自动生成工具生成代理类,然后进行代理类的编译和运行。在代理类、委托类运行之前,代理类已经以.class的格式存在。 动态代理:在程序运行时,由反射机制动态创建而成。 静态代理实例    静态代理实例:    首先需要一个接口:      ...

2016-12-09 11:01:32 3508

原创 Java 动态代理作用是什么 ==AOP?

关于动态代理设计模式很可能题主就在不知不觉中使用了,例如Spring中的AOP,Struts2中的拦截器等。先来看静态代理模式代码:package test;public interface Subject { public void doSomething(); }package test;public class RealSubj

2016-12-08 14:38:36 2896 1

转载 前端安全之XSS攻击

XSS(cross-site scripting跨域脚本攻击)攻击是最常见的Web攻击,其重点是“跨域”和“客户端执行”。有人将XSS攻击分为三种,分别是:1. Reflected XSS(基于反射的XSS攻击)2. Stored XSS(基于存储的XSS攻击)3. DOM-based or local XSS(基于DOM或本地的XSS攻击)Reflected XS

2016-12-07 12:13:40 418

转载 浅谈 CSRF 攻击&&防御

一.CSRF是什么?  CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。二.CSRF可以做什么?  你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取

2016-12-07 10:57:56 748

转载 异常、堆内存溢出、OOM的几种情况

1、堆内存溢出【情况一】:   Java.lang.OutOfMemoryError: Java heap space:这种是java堆内存不够,一个原因是真不够,另一个原因是程序中有死循环;   如果是java堆内存不够的话,可以通过调整JVM下面的配置来解决:   -Xms3062m    -Xmx3062m     【情况二】   java.lang.Ou

2016-12-06 15:58:42 2279

原创 你真的理解了Collection和Map集合吗?

我们在学习java的集合时,都知道接口Collection下有2个子接口:    List   是有序的集合    Set   是无顺序的集合问题一:怎么有序了?那么List所谓的有序是什么意思呢?初学者可能会有这个误解,就是我每次add进List的元素,它会自动排好序。这其实是不对的。我们看一个例子:package CollectionTest;import java.u

2016-12-06 15:15:23 6013

原创 RSA ~ 非对称加密算法

RSA: 非对称加密,加密与解密使用的密钥不是同一密钥,对中一个对外公开,称为公钥,另一个只有所有者知道,称为私钥。 用公钥加密的信息只有私钥才能解开,反之,用私钥加密的信息只有公钥才能解开(签名验签)。 代表:RSA算法。速度慢,适合少量数据加密。对称加密算法不能实现签名,因此签名只能非对称算法。RSA算法非常简单,概述如下:

2016-12-06 10:10:50 23307 1

原创 DES ~ 对称加密算法

DES属于对称加密算法对称加密指加密和解密使用的密钥是同一个密钥,代表:DES算法,RC算法。速度快,适合大量数据加密。上面的两个密钥是同一把。java代码实现:package security;/** * * @author zhengchao */import java.security.SecureRand

2016-12-05 18:25:52 1716

原创 MD5~单向散列加密

MD5算法具有以下特点:1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。2、容易计算:从原数据计算出MD5值很容易。3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。MD5属于单向散列加密     单向散列加密是通过对不同输入长

2016-12-05 17:52:53 2558

原创 java算法10~判断是否为平衡二叉树

概念:平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它                                  的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。(百度百科)算法目的:判断一个二叉树是否是平衡二叉树。算法要求:时间复杂度O(N),N为节点数目。算法思路:解法

2016-12-01 15:01:14 1394

原创 java算法9~二叉树前序、中序、后序遍历

1、定义:前序、中序、后序的概念前序遍历:     1.访问根节点     2.前序遍历左子树     3.前序遍历右子树 中序遍历:     1.中序遍历左子树     2.访问根节点     3.中序遍历右子树 后序遍历:     1.后序遍历左子树     2.后序遍历右子树     3.访问根节点2、算法实现稍后更

2016-11-30 18:57:04 2050

原创 java ~ 堆排序

最近看了很多算法,发现堆排序居然是解体的基础,虽然看堆排序的图解我能看懂,但是让我自己去实现,发现写不出来,顾在此总结前辈的经验,供自己学习之用。堆排序是一种树形选择排序方法,它的特点是:在排序的过程中,将array[0,...,n-1]看成是一颗完全二叉树的顺序存储结构,利用完全二叉树中双亲节点和孩子结点之间的内在关系,在当前无序区中选择关键字最大(最小)的元素。1.

2016-11-29 18:10:59 454

转载 Spring 之AOP AspectJ切入点语法详解(最全面、最详细。)

6.5 AspectJ切入点语法详解6.5.1 Spring AOP支持的AspectJ切入点指示符 切入点指示符用来指示切入点表达式目的,,在Spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指示符如下: execution:用于匹配方法执行的连接点; within:用于匹...

2016-11-29 12:14:23 92054 6

原创 java算法8~从5随机 到 7随机

算法目的:给定一个等概率随机产生1~5的随机数的函数randTo5(),要求产生1~7的随机数函数randTo7算法要求:不能使用除randTo5()之外的随机机制。算法实现如下:package algorithm_database;public class Random { public static int randTo5(){ return

2016-11-28 19:01:02 1108

原创 java算法7~求子数组的最大累加和问题

算法目的:求子数组的最大累加和问题算法要求:时间复杂度o(n),空间o(1),n为数组长度;算法原理:从左到右遍历数组arr,用遍历cur记录每一步的累加和,当cur                  那么累加的这一部分肯定不能作为产生最大累加和的子数组的左边部分,此时令cur=0,表示重新从下一个数开始累加,                  当cur>0时,每一次累加都可能是最

2016-11-28 17:09:03 604

原创 java算法6~在其他数都出现偶数次的数组中找到出现奇数次的数

算法目的:在其他数都出现偶数次的数组中找到出现奇数次的数算法要求:时间复杂度O(n),空间复杂度O(1)算法思路:对于一个整数n:0^n=n      n^n=0,根据这两条规则,我们知道在这个数组中出现偶数次数的n^n=0。实现:/* * To change this license header, choose License Headers in Project P

2016-11-28 15:49:49 1524

原创 java算法5~整数的二进制表达中有多少个1

算法目的:统计整数的二进制表达中有多少个1算法实现原理:使用位运算,正负号处理问题。实现:/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * a

2016-11-28 14:28:53 749

原创 java算法4~交换两个整数,不能使用任何额外的变量

算法目的:交换两个整数;算法要求:不使用任何额外的变量;算法思路:使用位运算,异或操作。实现如下:/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Template

2016-11-28 13:20:17 614

原创 java算法3~翻转字符串

要求:     1、"you       are  a      dog" 变为  great   are  you     2、时间复杂度O(N)思路:       1、先将String转换成char[],       2、将char[]整体逆序,得到        god      a  era       uoy       3、将char[]中每一个单词再逆

2016-11-25 10:43:55 430

原创 java算法2~求字符串中的数字字串的求和

要求:1、时间复杂度O(N)2、空间复杂度O(1)3、若有负号‘-’也要算,两个负号算正,小数点不算。难度不大,我就不考虑正负了,考虑正负就是判断连续遇到的负号个数,奇数为负,偶数为正package algorithm_database;public class String_SumInt { public static void main

2016-11-24 17:57:45 6399

原创 java算法1~两个字符串是否互为变形词

变形词:    给定两个字符串str1和str2,如果str1和str2中出现的字符种类一样且每种字符出现的次数也一样,那么str1和str2互为变形词。我自己的愚蠢实现:package algorithm_database;public class IsBianxingci { public static void main(String[] args)

2016-11-24 17:15:27 1382 1

转载 学习Spring必学的Java基础知识----反射

引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓“登高必自卑,涉远必自迩”。以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系列分别介绍这些Java基础知识,希望对大家有所帮助。): [1] Java反射知识-->Spring IoC :http://www.iteye.com/topic/1123081 [2] Java动态代理-

2016-11-24 14:35:32 2172 1

转载 为什么要学习Spring

1,什么是spring框架spring是J2EE应用程序框架,是轻量级的IoC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器,可以单独使用,也可以和Struts框架,ibatis框架等组合使用。  2,架构概述    1)IoC(Inversion of Control)控制反转,对象创建责任的反转,在sprin

2016-11-24 10:48:22 1628

转载 Spring AOP详解

Spring实现AOP的4种方式   先了解AOP的相关术语:1.通知(Advice):通知定义了切面是什么以及何时使用。描述了切面要完成的工作和何时需要执行这个工作。2.连接点(Joinpoint):程序能够应用通知的一个“时机”,这些“时机”就是连接点,例如方法被调用时、异常被抛出时等等。3.切入点(Pointcut)通知定义了切面要发生的“故事”和时间

2016-11-23 15:15:02 357

原创 Redis学习总结

Book1:Redis 入门指南(100/100)1、Redis 虽然是作为数据库开发的,但由于其提供了丰富的功能,越来越多的人将其用作:缓存、队列系统等。        缓存:Redis可以为每个键设置生存时间(Time To Live, TTL),生存时间到期后键会自动被删除。                 Redis还可以限定数据占用的最大内存空间,在数据达到空间限制后

2016-11-22 13:52:05 1035

转载 从0到1起步-跟我进入堆外内存的奇妙世界

堆外内存一直是Java业务开发人员难以企及的隐藏领域,究竟他是干什么的,以及如何更好的使用呢?那就请跟着我进入这个世界吧。一、什么是堆外内存1、堆内内存(on-heap memory)回顾 堆外内存和堆内内存是相对的二个概念,其中堆内内存是我们平常工作中接触比较多的,我们在jvm参数中只要使用-Xms,-Xmx等参数就可以设置堆的大小和最大值,理解jvm的堆还需要知道下

2016-11-17 15:58:33 757

转载 Java调优经验谈

原文:http://www.rowkey.me/blog/2016/11/02/java-profile/目录调优准备性能分析性能调优其他优化建议JVM参数进阶对于调优这个事情来说,一般就是三个过程:性能监控:问题没有发生,你并不知道你需要调优什么?此时需要一些系统、应用的监控工具来发现问题。性能分析:问题已经发生,但是你并不知道问题到底出在哪里。此时就需要使用工具

2016-11-16 17:09:11 3218

转载 JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解

摘要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。    现实企业级Java开发中,有时候我们会碰到下面这些问题:OutOfMemoryError,内存不足

2016-11-16 14:18:40 557

转载 java~快速排序

快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快速排序

2016-11-15 15:31:24 566

原创 Fork/Join框架介绍 顺便测试jvm的内存溢出问题

1. 什么是Fork/Join框架Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。比如计算1+

2016-11-15 11:37:58 3990

原创 虚拟机字节码执行引擎

基于栈的解释器执行过程下面例子给出四则运算加减乘除法:public class Demo { public static void foo() { int a = 1; int b = 2; int c = (a + b) * 5; }}直接使用命令javap查看它的字节码指令如下:pub

2016-11-14 16:31:15 471

原创 神的回复,让一道jvm的题目瞬间简单,在中国,评论永远是最精彩的

今天看了一个博客写的一个题目如下:两个######之间的都是原文博客#################################################################################################################################class SingleTon { private st

2016-11-14 15:22:25 1195 1

转载 java Class文件内部结构解析

java语言是跨平台的,所谓一次编写,到处运行。之所以是跨平台的,就是java定义了一套与操作系统,硬件无关的字节码格式,这个字节码就是用java class文件来表示的,java class文件内部定义了虚拟机可以识别的字节码格式,这个格式是平台无关性的,在linux系统或者在windows系统上都是一致的。这个就好比html文件,我们定义好规范,这个系统只要去按照规范显示出来里面的内容就好了。

2016-11-14 11:37:53 835

转载 深入浅出UML类图

在UML 2.0的13种图形中,类图是使用频率最高的UML图之一。Martin Fowler在其著作《UML Distilled: A Brief Guide to the Standard Object Modeling Language, Third Edition》(《UML精粹:标准对象建模语言简明指南(第3版)》)中有这么一段:“If someone were to come up to

2016-11-11 12:37:11 671

转载 UML类图几种关系的总结

在UML类图中,常见的有以下几种关系:泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1.泛化(Generalization)【泛化关系】:是一种继承关系,它指定了子类如何特化父类的所有特征和行为例如:老虎是动物的一种.【箭头指向】

2016-11-11 12:19:48 318

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除