java
文章平均质量分 52
ZK_小姜
这个作者很懒,什么都没留下…
展开
-
深入理解JVM(3)——7种垃圾收集器
文章转载来源:深入理解JVM(3)——7种垃圾收集器如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商、版本的虚拟机所提供的垃圾收集器都可能会有很大差别,并且一般都会提供参数供用户根据自己的应用特点和要求组合出各个年代所使用的收集器。接下来讨论的收集器基于JDK1.7 Update 14 之后的Ho...转载 2018-11-27 14:58:39 · 441 阅读 · 0 评论 -
Spring事务管理题纲式小结
1、Spring事务管理分类:a、编程式事务管理:通过编程的方式来提交事务、回滚事务,这种方式比较灵活,可以更细的管理事务,缺点是在业务逻辑的代码中会参杂事务管理的代码,感觉会比较乱;b、申明式事务管理:在aop的基础上面通过配置文件中配置事务管理规则的方式来进行事务管理,这种方式就不需要在业务逻辑代码中参杂事务管理的代码,代码逻辑会比较清晰。2、Spring事务的ACID属性原创 2016-04-20 15:16:09 · 444 阅读 · 0 评论 -
Eclipse中使用javap命令打出字节码虚指令
1、Eclipse中Run->External Tools->External Tools Configurations,打开看到如下界面:2、右键点击Program->new,然后出现界面:3、然后配置Location、Working Directory、Arguments:Location:C:\Program Files\Java\jdk1.7.0_80\原创 2016-05-25 15:09:19 · 1804 阅读 · 1 评论 -
ie中显示$未定义
今天在用jQuery实现web上面的一个删除功能的时候,发现通过chrome删除完全正常,但是在eclipse的内置浏览器中却不能删除,感觉有些莫名其妙,找了半天原因。 后面发现: 1、eclipse中的内置浏览器实际上调用的是系统中的ie,然后我在ie中测试了一下,果然如此,和eclipse内置浏览器中显示的一样,不能删除; 2、我的ie浏览器是ie8,然而我用的jQuery确实2.0版本的原创 2016-04-15 11:22:17 · 4132 阅读 · 0 评论 -
Java单例模式的实现
1、懒汉式,线程安全public class Singleton { private static Singleton instance; public Singleton() { // TODO Auto-generated constructor stub } public static synchronized Singleton getInstance(){ if (原创 2016-04-27 17:59:08 · 382 阅读 · 0 评论 -
如何正确地写出单例模式
单例模式算是设计模式中最容易理解,也是最容易手写代码的模式了吧。但是其中的坑却不少,所以也常作为面试题来考。本文主要对几种单例写法的整理,并分析其优缺点。很多都是一些老生常谈的问题,但如果你不知道如何创建一个线程安全的单例,不知道什么是双检锁,那这篇文章可能会帮助到你。懒汉式,线程不安全当被问到要实现一个单例模式时,很多人的第一反应是写出如下的代码,包括教科书上也是这样教我们的。转载 2016-04-27 17:22:54 · 358 阅读 · 0 评论 -
构建maven web项目常见问题解决
1. The superclass “javax.servlet.http.HttpServlet” was not found on the Java Build Path 解决方法: 1)、首先右键出现错误的文件夹,然后Build Path->Configure Build Path->Add Library->Server Runtime->Apache Tomcat v8.0,然后点击f原创 2016-04-11 16:53:09 · 692 阅读 · 0 评论 -
JVM调优总结 -Xms -Xmx -Xmn -Xss
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java -Xmx3550m -Xms355转载 2016-03-23 10:50:41 · 639 阅读 · 0 评论 -
mysql使用循环生成测试数据
1、新建存储过程(如果存储过程已经存在,先删除后重新新建):delimiter //create procedure getData()BEGINDECLARE i INT;SET i=1;WHILE i<200000 DOINSERT INTO trade VALUES ("172.20.0.41","2016-03-31_09-19-23.404","trade","sendMess原创 2016-03-31 15:38:22 · 1692 阅读 · 2 评论 -
Java String.Split(String regex)方法之设置多个分隔符
我们知道String变量有一个spilt方法,这个方法用于分割String字符串,返回值为一个String型的数组。 例如:String str = "hello,boy,what's your name?";此时我们需要以逗号(,)为分隔符,将这句话切割开,则使用:String[] array = str.split(",");但是,有的时候遇到这种情况呢:String str = "1+2-3原创 2015-12-16 15:01:31 · 29815 阅读 · 1 评论 -
详细解析Java中抽象类和接口的区别
在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进 行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两转载 2016-01-15 16:49:41 · 399 阅读 · 0 评论 -
Java异常处理:错误信息trace方式显示
Java中,当我们需要进行异常处理的时候,一般都是使用try catch来捕捉异常,然后进行处理,当出现异常时,我们一般使用日志的方式打印异常信息。可是,我们一般打印的异常信息,都只是一个异常名,却不知道具体是哪个类的哪一行代码报的错误,这个时候我们就需要将异常信息通过trace方式来显示到日志中,就像在控制台看到的异常信息一样。java具体实现:import java.io.Prin原创 2016-07-14 19:38:54 · 4103 阅读 · 0 评论 -
java wait()/notify() 实现生产者消费者模式
java中的多线程会涉及到线程间通信,常见的线程通信方式,例如共享变量、管道流等,这里我们要实现生产者消费者模式,也需要涉及到线程通信,不过这里我们用到了java中的wait()、notify()方法:wait():进入临界区的线程在运行到一部分后,发现进行后面的任务所需的资源还没有准备充分,所以调用wait()方法,让线程阻塞,等待资源,同时释放临界区的锁,此时线程的状态也从RUNNABLE原创 2016-08-18 17:54:39 · 6305 阅读 · 0 评论 -
Java如何查看死锁?
ava中当我们的开发涉及到多线程的时候,这个时候就很容易遇到死锁问题,刚开始遇到死锁问题的时候,我们很容易觉得莫名其妙,而且定位问题也很困难。因为涉及到java多线程的时候,有的问题会特别复杂,而且就算我们知道问题出现是因为死锁了,我们也很难弄清楚为什么发生死锁,那么当我们遇到了死锁问题,我们应该如何来检测和查看死锁呢?Java中jdk 给我们提供了很便利的工具,帮助我们定位和分析死锁问题原创 2016-08-29 12:47:03 · 23769 阅读 · 3 评论 -
JAVA后端如何保证业务操作的幂等性
##JAVA后端如何保证业务操作的幂等性说到幂等性,应该很多人都知道这个词,顾名思义,就是无论操作多少次,产生的结果都是相等的。尤其是交易中,在开发过程中,时时刻刻要考虑交易的幂等性,例如,客户端因为网络原因,发起了多次相同的交易请求,这个时候,无论发起了多少次,对于后台来说,产生的结果肯定要保证是相同的。那么如何保证操作的幂等性呢?###查询的幂等性查询操作天然是幂等的,同样的数据,无论你...原创 2018-09-26 11:13:04 · 7617 阅读 · 1 评论 -
逆波兰式实现四则运算(加减乘除)
最近做一个项目需要做表达式的解析,初想不难,仔细研究之后,发现做细点可能会涉及到编译原理的词法解析和语法解析。但是如果只做简单的表达式计算,可以使用逆波兰式。 何为逆波兰式,可以看这个链接:https://baike.baidu.com/item/%E9%80%86%E6%B3%A2%E5%85%B0%E5%BC%8F/128437?fr=aladdin 简单研究了一下,下面是实现的简单四则运...原创 2018-09-05 15:37:48 · 2352 阅读 · 0 评论 -
蚂蚁金服笔试题
题目一: 提供一个懒汉模式的单实例类实现。 要求: 1.考虑线程安全。 2.提供测试代码,测试线程安全性。public class Singleton { public Singleton() {} /** * 内部静态类实现单例 */ private static class SingletonHolder{ pri...原创 2018-09-04 17:30:05 · 10381 阅读 · 5 评论 -
Java设计模式之代理模式
分类从分类上来说,代理模式分为静态代理和动态代理两种: 静态代理模式:需要人工编写代理类,也就是在运行时已经存在代理类的class文件了,依赖目标类,代理类和目标类都实现同一接口类,调用时直接访问代理类,通过代理类将请求转化为访问目标类; 动态代理模式:顾名思义,在运行时动态生成代理类,Spring的aop中就是使用的动态代理,当然动态代理又分为两种,一种是jdk实现的动态代理,这种方式只...原创 2018-03-16 17:15:24 · 301 阅读 · 0 评论 -
Java Double运算精度问题解决
Double精度丢失原因先明白计算机在内部进行算术运算的一个流程:计算机会先把要计算的数转化成二进制,然后通过二进制进行运算,运算好了之后,再转化为相应的进制输出。然而,Double类型小数在转化成计算机的二进制的时候,二进制不能完全表示某些小数,就好像10进制中也会出现无限小数一样,因而就造成了精度的丢失,所以运算完成后结果是错误的。解决办法import java.math.Bi原创 2018-02-07 15:55:58 · 4013 阅读 · 0 评论 -
JAVA设计模式之单例模式
最近发生的事 三月底,我辞去了大学毕业后在深圳的第一份工作,回到我的老家——中国最贫穷的直辖市,回来前,差不多犹豫了半年,一方面害怕回来工作不好找,同时加上在那边的一些朋友,最后还是一咬牙一跺脚,回来了。 回来后,花了几天时间去面试,基本上都给offer了,然后选了一家公司算是稳定下来了,四月初正式入职。 事实证明,路是自己走出来的,逃离深圳也没有之前想象中那么难。 到现在,在原创 2017-08-29 15:59:13 · 623 阅读 · 2 评论 -
一道经典的Java多线程编程题
问题描述 启动3个线程打印递增的数字, 线程1先打印1,2,3,4,5, 然后是线程2打印6,7,8,9,10, 然后是线程3打印11,12,13,14,15. 接着再由线程1打印16,17,18,19,20....以此类推, 直到打印到75. 程序的输出结果应该为: 线程1: 1线程1: 2线程1: 3线程1: 4线程1: 5 线程2: 6线程2: 7...原创 2015-09-21 11:10:34 · 9235 阅读 · 12 评论 -
JAVA内存模型
1. 概述 多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请求数,而TPS值与程序的并发能力有着非常密切的关系。在讨论Java内存模型和线程之前,先简单介绍一下硬件的效率与一致性。2.硬件的效率与一致性转载 2017-03-01 11:08:41 · 472 阅读 · 0 评论 -
java jdk1.7常量池移到哪去了?
今天模拟了一下常量池的oom,突然发现设置的参数-XX:PermSize=10M -XX:MaxPermSize=10M不管用了,同时发现内存一直在上升,当上升到一个极值就会趋于平稳,然后再过一段时间会报: Exception in thread “main” java.lang.OutOfMemoryError: GC overhead limit exceeded 这个异常是当GC的时间超过原创 2015-12-22 09:38:45 · 15349 阅读 · 6 评论 -
Java并发编程:线程池的使用
Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?转载 2016-09-06 11:44:09 · 988 阅读 · 0 评论 -
java.util.ConcurrentModificationException问题解决
今天在删除Map中的key值得时候,使用了Iterator,在迭代的时候删除某个key值,发现报了一个异常: Exception in thread “main” java.util.ConcurrentModificationException at java.util.HashMapHashIterator.nextEntry(HashMap.java:922)atjava.util原创 2015-12-11 11:15:32 · 2196 阅读 · 0 评论 -
Java中hashCode的作用
以下是关于HashCode的官方文档定义:[plain] view plaincopyhashcode方法返回该对象的哈希码值。支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表。 hashCode 的常规协定是: 在 Java 应用程序执行期间,在同一对象上多次调用 hash转载 2015-10-15 14:11:15 · 387 阅读 · 0 评论 -
一个死锁的例子
当两个线程同时拥有一定的资源,但是都缺少对方手上的资源才能进行下一步动作,而去竞争对方的资源,从而都陷入等待的一种场景,这种场景被称为死锁。例如:A、B线程在运行开始时分别持有a、b对象,A拥有a,对象a被A上锁了,B拥有b,对象b被B上锁了,此时,线程A在要往后运行需要对象b,而线程B要往后运行需要对象a,此时A、B线程都希望获得对方的资源,但是手上的资源都不愿拿出来,这个时候就形成了“僵局”,原创 2015-09-29 16:47:58 · 1563 阅读 · 0 评论 -
JAVA对文件的读操作总结
1.以字节的方式读取文件(单次读取1字节,单次读取多个字节)2.以字符的方式读取文件(单次读取1字符,单次读取多个字符)3.以行的方式读取文件4.随机的方式读取文件5.在文件尾部添加数据(RandomAccessFile,FileWriter)6.大文件的读取package com.javaIo.readFile;import java.io.BufferedReade原创 2015-09-28 20:18:23 · 845 阅读 · 0 评论 -
String和Date的相互转化
一、String转Datepublic static Date String2date(String time){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss.SSS"); Date date = null; try { date = sdf.parse(time); } catch原创 2015-09-07 11:01:50 · 1368 阅读 · 0 评论 -
String、StringBuffer与StringBuilder之间区别
之前一直不明白String、Strn转载 2014-10-12 22:05:39 · 406 阅读 · 0 评论 -
一次性输入带空格或者逗号的数组,转化为整型数组,然后逆序输出
以前想要得到一个整型数组,d原创 2014-10-03 23:15:34 · 2819 阅读 · 0 评论 -
java实现二分插入排序
今天是二分插入排序算法,二分插入排序算法是直接插入排序算法de原创 2014-10-11 20:32:48 · 3951 阅读 · 3 评论 -
java实现直接插入排序
上一篇搞定了直接选择排序,现在来看原创 2014-10-06 22:44:31 · 894 阅读 · 0 评论 -
java实现冒泡排序算法
在数据结构中,冒泡排序原创 2014-10-06 09:54:35 · 753 阅读 · 0 评论 -
java实现直接选择排序
数据结构中,有很多排序算法,xue原创 2014-10-06 10:46:25 · 1799 阅读 · 0 评论 -
java基本数据类型和包装数据类型
在java语言中,一共有八种基本数据类型原创 2014-09-20 08:26:04 · 729 阅读 · 0 评论 -
通过云片网实现短信以及验证码的发送
最近做的这个项目是一个类似于众筹的网站,总所周知,现在主流的网站都会涉及到注册原创 2014-07-18 20:16:33 · 8727 阅读 · 0 评论 -
Java的内存机制
1.Java的内存机制 Java 把内存划分成两种:一种是栈内存,另一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后(比如,在函数A中调用函数B,在函数B中定义变量a,变量a的作用域只是函数B,在函数B运行完以后,变量a会自动被销毁。分配给它的内存会被回收转载 2015-09-29 13:58:44 · 407 阅读 · 0 评论 -
二进制、八进制、十六进制与十进制的相互转化
十进制->二进制、八进制、十六进制:除进制数取余倒序法二进制、八进制、十六进制->十进制:按位乘进制数上幂法1.十进制二进制import java.util.LinkedList;public class DecimalAndBinary { /** * @param num * 十进制->二进制 */ public static String Decimal2B原创 2015-10-02 11:46:19 · 777 阅读 · 0 评论 -
对String字符串进行MD5加密
/** * @param inputStr * @return 32位的MD5数 */ public static String transformMD5(String inputStr) { MessageDigest md5=null; try { md5 = MessageDigest.getInstance("MD5原创 2015-11-03 11:09:19 · 5812 阅读 · 0 评论