![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 52
shenhaiwen
这个作者很懒,什么都没留下…
展开
-
微服务构建:Spring Boot入门学习(1)
简介Spring Cloud是一个基于Spring Boot实现的微服务架构开发工具,它为微服务架构开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),如: Spring Cloud Config: Spring Cloud N原创 2017-09-11 18:04:42 · 209 阅读 · 0 评论 -
解决maven update project 后项目jdk变成1.5的问题
一、问题描述在Eclipse中新建了一个Maven工程, 然后更改JDK版本为1.7, 结果每次使用Maven > Update project的时候JDK版本都恢复成1.5。二、原因分析Maven官方文档有如下描述: 编译器插件用来编译项目的源文件.从3.0版本开始, 用来编译Java源文件的默认编译器是javax.tools.JavaCompiler (如果你是用的是java 1.6) . 如转载 2017-10-18 15:18:07 · 371 阅读 · 0 评论 -
Annotation学习
一.Annotation类型2SE5.0版本在 java.lang.annotation提供了四种元注解,专门注解其他的注解:@Documented –注解是否将包含在JavaDoc中 @Retention –什么时候使用该注解 @Target? –注解用于什么地方 @Inherited – 是否允许子类继承该注解@Documented–一个简单的Annotations标记注解,表示是否将注解原创 2017-08-31 15:42:55 · 398 阅读 · 0 评论 -
Class类中getDeclaredFields() 与getFields()的区别
getDeclaredFields()返回Class中所有的字段,包括私有字段,而getFields()只返回公有字段,即有public修饰的字段。package com.shen.test.dto;import java.lang.reflect.Field;/** * <b>Description</b> 订单领域对象 <BR> * * @author shenhaiwen * * @原创 2017-07-18 15:06:20 · 15957 阅读 · 0 评论 -
Java的Random类详解
Random类 (java.util)Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。这点在生成多个随机数原创 2017-07-14 17:27:26 · 4823 阅读 · 1 评论 -
使用eclipse制作war包方法
1、打开eclipse在左侧右击项目名选择“Export”2.在导出画面点击 “Web”->“WAR file”点击“Next”3、点击“Browse…”选择文件的导出位置4、将生成的war文件放到 tomcat的安装目录/webapps里面5、重启tomcat war包自动解压成文件夹 ,通过浏览器可以直接访问。原创 2017-06-14 10:20:42 · 7100 阅读 · 0 评论 -
Dubbo启动时检查依赖
问题描述Dubbo缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止Spring初始化完成,以便上线时,能及早发现问题,默认check=true。第一次访问调用该依赖服务时,会报如下错误:017-06-21 11:03:14.655 [TI11031465537] INFO [Log4jLogger.java:58] [DUBBO] Register: consumer://192.16原创 2017-06-21 14:26:28 · 10066 阅读 · 0 评论 -
Spring Boot 微服务构建入门学习
maven构建项目1、访问http://start.spring.io/2、选择构建工具Maven Project、Spring Boot版本1.5.4以及一些工程基本信息,点击“Switch to the full version.”java版本选择1.7,可参考下图所示3、点击Generate Project下载项目压缩包4、解压后,使用eclipse,Import -> Existing Ma原创 2017-06-15 16:05:25 · 5450 阅读 · 0 评论 -
dubbo配置timeout超时时间
在dubbo的provider和consumer的配置文件中,如果都配置了timeout的超时时间,dubbo默认以consumer中配置的时间为准。provider.xml的配置:<dubbo:service timeout="4000" retries="0" interface="com.dingding.tms.bms.service.BillingZfbCodOrderService" r原创 2017-06-16 14:33:11 · 15332 阅读 · 0 评论 -
每次New一个BouncyCastleProvider导致的内存泄漏
问题原因生产服务器的内存一直升高,直到宕机。内存分析的结论是:内存泄漏。 下载dump文件,经过解析堆栈日志,如下图所示:The class “javax.crypto.JceSecurity”, loaded by “”, occupies 2,522,379,928 (95.73%) bytes. The memory is accumulated in one instance of “ja原创 2017-10-31 10:27:20 · 7580 阅读 · 1 评论 -
Thread.setDaemon守护线程详解
简介java中线程分为两种类型:用户线程和守护线程。通过Thread.setDaemon(false)设置为用户线程;通过Thread.setDaemon(true)设置为守护线程。 如果不设置,默认为用户线程。用户线程和守护线程的区别: 1. 主线程结束后用户线程还会继续运行,JVM存活;主线程结束后守护线程和JVM的状态又下面第2条确定。 2.如果没有用户线程,都是守护线程,那么JVM结束原创 2017-12-21 18:10:17 · 2278 阅读 · 0 评论 -
Xms Xmx PermSize MaxPermSize 区别
1.参数的含义 -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M -vmargs 说明后面是VM的参数,所以后面的其实都是JVM的参数了 -Xms128m JVM初始分配的堆内存 -Xmx512m JVM最大允许分配的堆内存,按需分配 -XX:PermSize=64M JVM初始分配的非堆内存 -XX:Max...转载 2018-09-13 14:49:30 · 788 阅读 · 1 评论 -
Spring Boot+Mockito+JUnit中的@Mock注入@InjectMocks失效
问题描述测试代码如下:@RunWith(SpringRunner.class)@SpringBootTestpublic class CheckConfirmPayServiceTest { private static final Logger logger = LoggerFactory.getLogger(CheckConfirmPayServiceTest.cla...原创 2018-08-30 15:25:06 · 20231 阅读 · 2 评论 -
Permgen Space导致的内存溢出
问题描述最近同事系统反馈系统出现如下错误: PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。解决过程使用jstat查看 Permsize 占用情况,入戏所示:using thread-local object allocation.Parallel GC with 4 thread(s)Heap Con...原创 2018-07-19 11:05:35 · 1985 阅读 · 0 评论 -
java中三种移位运算符
简介java中有三种移位运算符num 1,相当于num乘以2>> : 右移运算符,num >> 1,相当于num除以2>>> : 无符号右移,忽略符号位,空位都以0补齐示例–正整数/** * Description 移位运算 * java中有三种移位运算符 * * >> : 右移运算符,num >> 1,相当于num除以2原创 2018-01-08 11:17:34 · 1479 阅读 · 0 评论 -
负数与二进制换转方法
1、十进制负数转二进制假设有一个 int 类型的数,值为5,那么,我们知道它在计算机中表示为: (因为java中int 是4个字节,所以高位需要补0,占够32位) 00000000 00000000 00000000 00000101 现在想知道,-5在计算机中如何表示? 在计算机中,负数以原码的补码形式表达。 什么叫补码呢?这得从原码,反码说起。 原码:一个正数,按照绝对转载 2018-01-08 11:32:08 · 45340 阅读 · 2 评论 -
HashMap和Hashtable的区别
HashMap和Hashtable的区别HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。1、HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(v转载 2018-01-16 15:18:49 · 330 阅读 · 0 评论 -
Integer和int的区别
Integer和int的区别1、Integer是int提供的封装类,而int是Java的基本数据类型;2、Integer默认值是null,而int默认值是0;3、声明为Integer的变量需要实例化,而声明为int的变量不需要实例化;4、Integer是对象,用一个引用指向这个对象,而int是基本类型,直接存储数值。转载 2018-01-04 16:02:25 · 287 阅读 · 0 评论 -
JAVA语言为什么能跨平台?
JAVA语言为什么能跨平台?因为Java程序编译之后的代码不是能被硬件系统直接运行的代码,而是一种“中间码”——字节码。然后不同的硬件平台上安装有不同的Java虚拟机(JVM),由JVM来把字节码再“翻译”成所对应的硬件平台能够执行的代码。因此对于Java编程者来说,不需要考虑硬件平台是什么。所以Java可以跨平台。因为它有虚拟机(JVM),JAVA程序不是直接在电脑上运行的,是在虚拟机上进行的,每转载 2018-01-03 10:47:34 · 901 阅读 · 0 评论 -
java.sql.SQLException: ORA-01810: 格式代码出现两次
错误描述### The error occurred while setting parameters### SQL: select ID, USER_ID, CUST_ID, PHONE, CER_ID, BEGIN_TIME, END_TIME, BLACK_LEVEL, BALCK_CHANNEL, REMARK, CREATE_USER, CREATE_TI原创 2017-12-18 16:17:17 · 1192 阅读 · 0 评论 -
Redis SETNX命令实现分布式锁
SETNX命令简介命令格式 SETNX key value将 key 的值设为 value,当且仅当 key 不存在。 若给定的 key 已经存在,则 SETNX 不做任何动作。 SETNX 是SET if Not eXists的简写。返回值设置成功,返回 1 。 设置失败,返回 0 。使用SETNX实现分布式锁/** * 使用Redis实现分布式全局锁 * 算法实现参考:htt原创 2017-04-25 18:27:24 · 4711 阅读 · 0 评论 -
jackson出现错误 Unrecognized field,JsonIgnoreProperties忽略不起作用
错误描述错误堆栈信息如下:org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "test" (Class com.unicompayment.mmp.front.dto.MarketingEventDto), not marked as ignorable at [Source: java.i原创 2017-05-16 16:32:05 · 12708 阅读 · 1 评论 -
maven打包出现错误: Failed to clean project: Failed to delete
maven打包过程中报错:Failed to clean project: Failed to delete [INFO] ———————————————————————— [ERROR] Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clean) on proje原创 2017-05-25 17:24:56 · 18417 阅读 · 3 评论 -
在Eclipse中用Maven创建Web工程(tomcat:run 启动)
一、创建项目1、Eclipse中用Maven创建项目2、继续下一步Next3、选maven-archetype-webapp后,继续Next4、填写相应的信息,Packaged是默认创建一个包,不写也可以5、创建好项目后,目录如下:这时jsp页面报错,查看具体报错信息如下:The superclass “javax.servlet.http.HttpServlet” was not found on原创 2017-03-31 11:27:26 · 23950 阅读 · 1 评论 -
Eclipse使用Maven jetty:run命令启动web项目
Eclipse安装好m2e插件,使用Maven构建项目后,启动web项目就行就非常简单了,如下所示。操作步骤:1、右键你的项目 -> Run As -> Run Configurations… 2、双击左侧的Maven Build,会出现一个New_configuration3、配置Maven Build中的参数,如jetty 4、VM配置信息:-Xms512m -Xmx512m -XX:Max原创 2017-03-30 11:22:17 · 28088 阅读 · 1 评论 -
Maven工程下打War包
1、配置pom.xml文件配置工程目录下的pom.xml文件 <profile> <id>development</id> <properties> <package.environment>resources</package.environment> </properties原创 2017-04-07 14:47:49 · 6182 阅读 · 0 评论 -
JSP页面报javax.servlet.jsp.PageContext cannot be resolved to a type 错误
问题描述在JSP内容如下时,Eclipse会出现JSP Problem如标题所示的javax.servlet.jsp.PageContext cannot be resolved to a type: 测试发现,若是jsp含有如下内容则会报上述错误:<c:set var="path" value="${pageContext.request.contextPath}" scope="request"原创 2017-04-07 11:04:06 · 6226 阅读 · 0 评论 -
导入Excel出现Cannot get a text value from a numeric cell异常
Excel导入操作时偶尔会出现Cannot get a text value from a numeric cell的异常错误。原创 2017-03-21 15:52:07 · 24504 阅读 · 1 评论 -
Redis配置认证密码
查看密码查看requirepass,命令如下:config get requirepass示例示例是Redis没有设置命令认证密码设置密码命令config set requirepass yourPassword上述方式是redis服务器通过命令行设置密码,但这种方式是临时的,当服务器重启了密码必须重设。示例这时再查看密码,会报错:(error) ERR operation not permitte原创 2017-03-17 17:41:23 · 4050 阅读 · 0 评论 -
MemoryAnalyzer-内存泄露分析工具
概述对于大型 JAVA 应用程序来说,再精细的测试也难以堵住所有的漏洞,即便我们在测试阶段进行了大量卓有成效的工作,很多问题还是会在生产环境下暴露出来,并且很难在测试环境中进行重现。JVM 能够记录下问题发生时系统的部分运行状态,并将其存储在堆转储 (Heap Dump) 文件中,从而为我们分析和诊断问题提供了重要的依据。通常内存泄露分析被认为是一件很有难度的工作,一般由团队中的资转载 2017-01-22 18:42:21 · 19150 阅读 · 0 评论 -
WebService报org.apache.cxf.interceptor.Fault: Could not send Message 错误
org.apache.cxf.interceptor.Fault: Could not send Message 错误问题描述:在编程中发现,原来WebService能够正常返回结果,但是后续添加更多查询条件,导致服务端检索时间过长,从而客户端抛出:org.apache.cxf.interceptor.Fault: Could not send Message 错误。 JaxWsProxyFa原创 2017-01-19 14:15:01 · 29848 阅读 · 3 评论 -
八大内部排序算法学习-java
简介排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。1.插入排序—直接插入排序(Straight Insertion Sort)基本思想将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为原创 2017-03-20 18:31:52 · 3167 阅读 · 0 评论 -
日期工具类TimeUnit
简介TimeUnit是Java.util.concurrent包下面的一个类。它提供了两大功能:1)提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep(); 2)提供了便捷方法用于把时间转换成不同单位,如把秒转换成毫秒;代码示例package com.shen.test.other;import java.sql.Date;import java.text.DateFormat原创 2017-04-12 15:30:28 · 13510 阅读 · 0 评论 -
使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件
简介MyBatis属于一种半自动的ORM框架,所以主要的工作就是配置Mapping映射文件,但是由于手写映射文件很容易出错,所以可利用MyBatis生成器自动生成实体类、DAO接口和Mapper映射文件。以下介绍用命令行式创建生成。准备工作关于Mybatis-Generator的下载可以到这个地址:https://github.com/mybatis/generator/releases使用相应的数原创 2017-05-04 15:53:51 · 10185 阅读 · 0 评论 -
本地下载配置dubbo.xsd文件
错误描述dubbo项目xml文件报错,不支持dubbo元素,需要在本地安装dubbo.xsd文件。错误信息如下:Multiple markers at this line- schema_reference.4: Failed to read schema document 'http://code.alibabatech.com/schema/dubbo/dubbo.xsd', because原创 2017-04-05 16:55:33 · 8667 阅读 · 0 评论 -
Drools入门学习
Eclipse安装Drools插件具体步骤参见另外博客:http://blog.csdn.net/shenhaiwen/article/details/70230103Eclipse中添加Drools的运行环境、1下载插件地址:http://www.drools.org/download/download.html2、版本:droolsjbpm-tools-distribution-6.5.0.Fi原创 2017-04-18 17:19:28 · 6106 阅读 · 1 评论 -
Eclipse+Maven工程异常:Plugin execution not covered by lifecycle configuration
错误描述一个错误示例,子项目引用了父项目,子项目parent标签处报错如下:Pom.xml文件异常日志: Multiple markers at this line - Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-compiler-plugin:3.0:com原创 2017-04-14 14:51:06 · 5919 阅读 · 0 评论 -
Hibernate + Oracle实现主键自增长
简介GenerationType.IDENTITY可以在SQL Server 和 MySQL 中实现字段的自增,这个方法不能放到 Oracle 中,Oracle 不支持自增字段,要设定sequence(MySQL 和 SQL Server 中很常用)。等同于JPA中的INDENTITY。 解决方案创建序列通过在Oracle中创建序列来解决。CREATE SEQUENCE BLACK_LIST_SEQ原创 2017-04-13 18:19:07 · 5955 阅读 · 0 评论 -
Kettle乱码解决方案
Kettle是一款国外开源的ETL工具,纯java编写,数据抽取高效稳定的数据迁移工具。乱码解决步骤1.设置数据库连接2.设置数据库连接 字符集[mysql] default-character-set=utf8 character-set-server=utf83.查看数据库 选用字符集4.最后问题解决原创 2017-04-28 14:41:16 · 3644 阅读 · 0 评论 -
JPA学习
简介JPA全称Java Persistence API,即Java 持久层 API 。JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。JPA的总体思想和现有Hibernate、TopLink、JDO等ORM框架大体一致。总的来说,JPA包括以下3方面的技术:ORM映射元数据 JPA支持XML和JDK5.0注解两种元数据的形式,元数据描述对象和表转载 2017-04-13 15:12:48 · 5672 阅读 · 0 评论