java
文章平均质量分 63
不一样的程序员
纸上得来终觉浅,绝知此事要躬行
展开
-
68道Spring面试题和答案
Spring 概述 1. 什么是spring? Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。 2. 使用Spring框架的好处是什么? 轻量:Spring 是轻量的,基本的版本大约2MB。 控制反原创 2017-10-31 11:43:01 · 282 阅读 · 0 评论 -
微信拼手气红包背后的算法逻辑
业务介绍相信大家都用过微信发红包功能,如下图所示: 两个输入元素:1、总金额 单位(元) 2、红包个数假设输入总金额: 10,红包个数 6 ,大家可以试着发一个这样的红包看看,我相信每个人发出去的红包,分配的结果都会不一样,以A,B,C三人的分配结果做一个示范A的分配结果是: 1 ,1, 1, 1, 1, 5B的分配结果是: 2,1, 1, ...原创 2018-03-01 22:36:24 · 32060 阅读 · 22 评论 -
jdk1.8版本切换至1.6遇到的问题&分析
背景由于工作原因,我的电脑上目前安装了jdk1.6和jdk1.8 两个版本,并且都是安装版本。 之前因为一些原因(苏宁对接sdk,阿里开发规约)本地默认安装的是jdk.18版本, 但是公司的大部分项目都是用jdk1.6编译,所以后来我本地的默认版本采用了1.6,切换至1.6后,发现阿里Java编码插件无效,经查阅文档得知,阿里Java规划的jdk版本至少是1.8。参考:http://...原创 2018-02-23 12:15:07 · 19452 阅读 · 1 评论 -
jdk1.6,jdk1.7,jdk1.8安装共存问题
一次心血来潮,决心研究一下,电脑上面安装3个版本的JDK,于是开始了测试,其实也不能说是安装3个版本的,1.6版本的是公司给的压缩包形式的,1.7和1.8版本的是我自己在电脑上面安装的,首先遇到的问题就是,当1.7安装好以后,(1.7的安装的环境变量配置自行百度吧)我是用cmd查看...转载 2018-02-23 14:37:21 · 12929 阅读 · 0 评论 -
jvmwi3260sr7-20091125_47905 (IBM Corporation)
问题描述在整理公司工具jar包时,无意间发现其中有一个jar包的manifest.mf 配置文件中的配置信息Created-By: jvmwi3260sr7-20091125_47905 (IBM Corporation)而其他的jar中的Created-By配置基本上是类似这种格式Created-By: 1.6.0_43-b01 (Sun Microsystems Inc....原创 2018-03-02 10:14:31 · 245 阅读 · 0 评论 -
Eclipse Decompiler在线安装方法
Eclipse Class Decompiler是一款Eclipse插件,整合了多种反编译器,和Eclipse Class Viewer无缝集成,能够很方便的使用插件查看类库源码,进行Debug调试。同时还提供了在线自动查找源代码,查看Class二进制字节码的功能。 Eclipse Class Decompiler对JDK的最低要求为JDK1.6, 能反编译和debug各版本的...转载 2018-03-02 22:27:08 · 737 阅读 · 0 评论 -
Java 线程线程状态流程图
新建(new):新创建了一个线程对象。可运行(runnable):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。运行(running):可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代码。阻塞(block):阻塞状态是指线程因为某种...原创 2018-02-24 17:19:49 · 5575 阅读 · 0 评论 -
Eclipse中演示Git冲突的解决
1 在user1中的readme.txt文件中先修改,并且commitand push 选中user1,右击team—>Commit-à 2 在未pull的情况下,修改user2中的readme.txt文件,然后也执行commitand push(过程如上) 这时候发现上面有一个红色的图标,这时候点击OK,选中则个项目...转载 2018-02-25 19:46:38 · 239 阅读 · 0 评论 -
理解线程池的原理
读完本文你将了解:什么是线程池线程池的处理流程保存待执行任务的阻塞队列创建自己的线程池JDK 提供的线程池及使用场景1.newFixedThreadPool2.newSingleThreadExecutor3.newCachedThreadPool4.newScheduledThreadP...转载 2018-03-06 11:33:56 · 3209 阅读 · 2 评论 -
Java编程思想思维导图
之前看过《Think in Java 》 这边书籍,为了便于自己的理解和记忆,我把一些通用的概念整理出了一份思维导图,转换的图片效果如下图由于图片看起来并不直观,所以我把导图上传到CSDN服务器,大家有需要的话可以下载https://download.csdn.net/download/xiongyouqiang/10317263...原创 2018-03-30 10:24:39 · 1148 阅读 · 3 评论 -
使用java开源项目Jsoup抓取远程图片
package com.open;import java.io.*;import java.net.URL;import java.util.logging.Level;import java.util.logging.Logger;import java.io.*;import java.util.logging.Level;import java.util.logging.Lo...原创 2018-05-03 15:49:04 · 380 阅读 · 0 评论 -
Java随机生成姓名、邮箱、手机号码
不多废话,直接贴上源码package com.shangde.recruit.helper.util;/**** * * Project Name:recruit-helper-util* <p>随机数生成工具类,主要包括<br> * 中文姓名,性别,Email,手机号,住址 * @ClassName: RandomValueUtil* @date...原创 2018-05-23 14:20:07 · 43522 阅读 · 0 评论 -
spring+mybatis 实现多数据源切换
背景相信大家在开发工作中肯定遇到过一个应用可能需要连接两个或以上的数据源进行数据操作,又或者数据库单表数据量过大,导致查询很慢时,一般都会考虑分库分表,这时候也会涉及到多库数据源操作。下面讲解利用spring+mybatis 实现多数据源切换,话不多说直接上代码。jdbc和log4j的配置log4j.properties#定义输出格式ConversionPattern=%d ...原创 2018-05-28 20:11:17 · 5673 阅读 · 6 评论 -
GC 技术解析
介绍 G1 GC,全称Garbage-First Garbage Collector,通过-XX:+UseG1GC参数来启用。G1收集器是工作在堆内不同分区上的收集器,分区既可以是年轻代也可以是老年代,同一个代的分区不需要连续。并且每个代分区的数量是可...转载 2018-06-20 10:39:45 · 2068 阅读 · 0 评论 -
Jenkins自动化构建项目配置
Jenkins简介jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"编译、打包、分发部署的工具。Jenkins的安装流程这里就不多做介绍,网上有很多这方面的博客详细介绍安装的过程,这里推荐一篇写的比较不错的中文博客: https://www.cnblogs.com/linJie1930906722/p/5965230.html我这里主要讲解...原创 2018-12-03 14:34:38 · 4969 阅读 · 2 评论 -
常用JVM命令参数详解
这里汇总平时用到的、看到的一些虚拟机参数。现在看不懂没关系,反正之后都会用到的:(1)-Xms20M表示设置JVM启动内存的最小值为20M,必须以M为单位(2)-Xmx20M表示设置JVM启动内存的最大值为20M,必须以M为单位。将-Xmx和-Xms设置为一样可以避免JVM内存自动扩展。大的项目-Xmx和-Xms一般都要设置到10G、20G甚至还要高(3)-verbose:gc表示输出...原创 2019-05-20 14:01:42 · 2116 阅读 · 0 评论 -
JVM调优总结
背景网络所关于此篇博客的转载格式实在是太难看了,鉴于此在博客原文格式的基础色 进行格式的调整、优化堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统 下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存...转载 2018-02-05 17:00:37 · 173 阅读 · 0 评论 -
Oscache缓存总结
基本概述OSCache标记库由OpenSymphony设计,它是一种开创性的JSP定制标记应用,提供了在现有JSP页面之内实现快速内存缓冲的功能。OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。OSCache的特点:缓存任意对象:可以不受限制的缓存JSP的一部分或是Http请求,任何的Java对象都可以被缓存。...转载 2018-03-09 11:23:42 · 571 阅读 · 0 评论 -
ZipUtil 压缩包工具类
项目中会用到下载文件功能,有的文件过大,这时需要将文件进行压缩成,然后进行下载操作,这样做的好处 1. 降低文件大小,加快下载速度 2. 安全性更高下面的ZipUtil类,主要包括两个方法 1. zip 压缩 2. unZip 解压代码经过项目实测,有需要的可以直接copy稍作修改即可使用。 package tools.util;import java.io.BufferedInputS原创 2017-11-03 11:09:00 · 1063 阅读 · 0 评论 -
更好的框架设计
本文章由@唐乾 出品,转载请注明出处。 文章链接: http://blog.csdn.net/tang9140/article/details/52526977引言本文将与大家一起来吐槽下公司的开发框架,站在开发者的角度详述糟糕设计下导致的各种问题和使用痛点,并给出改进意见,最后附赠一个完整版后台开发框架(Spring+Spring MVC+Apache Shiro+MyBatis+Boot转载 2018-01-24 16:04:58 · 231 阅读 · 0 评论 -
Exception in thread "Thread-0" java.lang.OutOfMemoryError: GC overhead limit exceeded 解决方法
背景最近在深入研究jvm底层机制,写了一个测试类一直加载class,模拟加载类过多导致Perm永久代报:java.lang.OutOfMemoryError:PermGen space 内存溢出。测试代码package com.xyq.maventest.visualvm;import java.io.File;import java.lang.reflect.Method;原创 2018-02-01 14:08:57 · 38836 阅读 · 2 评论 -
Java内存不足之PermGen space错误探究
Java介绍 Java 程序的运行机制与普通程序,如C或C++ 程序的运行机制有很大的区别。 普通程序运行之前必须首先编译成可执行的二进制码或机器码。机器码是与底层的硬件结构相关的,即使书写源代码的时候没有利用平台特定的扩展语言,如特定的文件访问或图形用户界面,生成的机器码仍然被绑定到一个特定的硬件平台,从而只能运行在那个体系结构上,也就是说,为Sun工作站编译的机器码不能运行在原创 2018-02-01 14:20:37 · 554 阅读 · 0 评论 -
解决PermGen space异常问题
开发中遇到Eclipse报错:java.lang.OutOfMemoryError: PermGen space。PermGen space百度翻译为:永久区域内存不足。 1. 先来一张jvm结构图:内存不足问题一般都是发生在’堆‘上,GC作用区域也是在’堆‘上。 2. 这个’堆‘又划分成了好几块区域,包括: 新生代:包括伊甸园区和存活区。 老年代:转载 2018-02-01 14:36:43 · 71677 阅读 · 9 评论 -
详解java类的生命周期
引言 最近有位细心的朋友在阅读笔者的文章时,对java类的生命周期问题有一些疑惑,笔者打开百度搜了一下相关的问题,看到网上的资料很少有把这个问题讲明白的,主要是因为目前国内java方面的教材大多只是告诉你“怎样做”,但至于“为什么这样做”却不多说,所以造成大家在基础和原理方面的知识比较匮乏,所以笔者今天就斗胆来讲一下这个问题,权当抛砖引玉,希望对在这个问题上有疑惑的朋友有所帮助,文转载 2018-01-26 10:59:55 · 231 阅读 · 0 评论 -
同时安装不同版本jdk引起的冲突解决方法
现象由于工作原因, 之前用的jdk1.8版本,因为线上生产环境都是jdk1.6,记得上一次就是因为不清楚线上环境的jdk版本问题,把自己编译的1.8版本给发布到线上环境,导致启动报java.lang unsupported classversion经过这次线上问题后,我本地需要再安装jdk1.6版本,但是在安装配置环境变量中会出现一些问题, 比如: 下面结合自己的经验,给大家讲讲如原创 2018-02-02 16:20:28 · 19106 阅读 · 4 评论 -
Java 9 新特性简介
摘要1.目录结构 2.repl工具 jShell命令 3.模块化 4.多版本兼容jar包 5.接口方法的改进(在接口中 jdk7 只能声明全名常量和抽象方法 jdk8 添加了静态方法和默认方法 jdk9添加了私有方法) 6.钻石操作符升级 可以有{} 7.异常处理try升级 8.下划线标识符命名的限制 _ 不允许了 9.String底层存储结构的变更(char数组...原创 2018-02-26 15:58:17 · 412 阅读 · 0 评论 -
spring+maven集成log4j 详解
log4j.properties 的使用详解1.输出级别的种类ERROR、WARN、INFO、DEBUG ERROR 为严重错误 主要是程序的错误 WARN 为一般警告,比如session丢失 INFO 为一般要显示的信息,比如登录登出 DEBUG 为程序的调试信息2.配置日志信息输出目的地log4j.appender.appe原创 2018-02-06 15:51:15 · 7685 阅读 · 0 评论 -
log4j.properties 日志文件的详细配置说明
出现警告在一个web 项目中,使用tomcat 启动通常会在控制台输出出现一个警告信息:通常为未添加 log4j.properties文件的原因。下面以一个普通的maven项目为例说明一下1 在maven项目的配置文件pom.xml中已经有日志文件的配置选项,如果需要使用,记得配置进去。 dependency> gro转载 2018-02-06 16:05:30 · 684 阅读 · 0 评论 -
Java爬虫实战代码
业务背景大家在平时的生活或工作种多少都会遇到类似下面的情况吧非技术人员:我身边有同学在一家装修设计公司上班,她每天的工作就是去其他各大装修平台,去“借鉴”别人家设计师的创意,找到合适的图片,就会一张张点击图片另存到自己电脑中。其实这些工作都是重复性且毫无技术含量,完全可以用工具自动化实现。技术人员:比如我喜欢看一些技术帖子(微信公总号,技术博客等),有时候会觉得文章中的一些...原创 2018-02-26 17:57:32 · 14925 阅读 · 13 评论 -
Jvsiualvm 排查 OOM 具体步骤详解
背景介绍最近在学习关于oom内存溢出的解决方法,结合了自己看的博客和一些自己的尝试,给大家分享自己的思路。主要分两种情况分析 1. 基于main方法启动的程序 2. 基于tomcat的web项目下面分别介绍两种方式基于main方法启动的程序1.编写测试代码:package com.xyq.maventest.visualvm;public class Java原创 2018-02-06 18:00:44 · 966 阅读 · 0 评论 -
使用jstack精确找到异常代码实例详解
java代码如下package t5;public class TestThread { public static void main(String[] args) { Thread thread = new Thread(new Worker()); thread.start(); } static class Worker i转载 2018-02-07 18:02:58 · 1357 阅读 · 0 评论 -
Tomcat 调优及 JVM 参数优化
Tomcat 的缺省配置是不能稳定长期运行的,也就是不适合生产环境,它会死机,让你不断重新启动,甚至在午夜时分唤醒你。对于操作系统优化来说,是尽可能的增大可使用的内存容量、提高CPU 的频率,保证文件系统的读写速率等。经过压力测试验证,在并发连接很多的情况下,CPU 的处理能力越强,系统运行速度越快。Tomcat 的优化不像其它软件那样,简简单单的修改几个参数就可以了,它的优化主要有三方面转载 2018-02-07 21:22:00 · 290 阅读 · 0 评论 -
Java垃圾回收机制
说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来。在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理。顾名思义,垃圾回收就是释放垃圾占用的空间,那么在Java中,什么样的对象会被认定为"垃圾"?那么当一些对象被确定为垃圾之后,采用什么样的策略来进行回收(释放空间)?在目前的商业虚拟机中,有哪些典型的垃圾收集...原创 2018-01-23 11:24:32 · 172 阅读 · 0 评论 -
JPS-Java进程状态工具
列出PID和Java主类名jps2017 Bootstrap2576 Jps列出pid和java完整主类名jps -l2017 org.apache.catalina.startup.Bootstrap2612 sun.tools.jps.Jps列出pid、主类全称和应用程序参数jps -lm2017 org.apache.catalina.startup.Boots...原创 2019-05-24 18:14:39 · 793 阅读 · 0 评论