☀Java
文章平均质量分 63
KimZing
Programming as a Way of Thinking
展开
-
Java注解入门到精通,这一篇就够了
一、为什么要学注解? 在日常开发中,基本都是在使用别人定义或是各种框架的注解,比如Spring框架中常用的一些注解:@Controller、@Service、@RequestMapping,以此来实现某些功能,但是却不知道如何实现的,所以如果想学习这些框架的实现原理,那么注解就是我们必知必会的一个点。其次,可以利用注解来自定义一些实现,比如在某个方法上加一个自定义注解,就可以实现方...原创 2020-04-06 00:25:06 · 12920 阅读 · 5 评论 -
Java反射学习总结
一、简述Class Class和class是不同的两个点,Class本身也是一个类型,和String、List本身没有什么差异, 而class只是一个关键字。Class可以理解为某个类型的元信息,包含其对应的构造函数(Constructor)、方法(Method)、属性(Field)以及其他相关信息(比如注解等信息)。 通过反射,也就是操作Class具体的对象,...原创 2020-03-31 19:56:14 · 1132 阅读 · 0 评论 -
Java泛型全方位介绍与示例
一、没有泛型的问题public class GenericDemo { public static void main(String[] args) { List stringList = getExpectStringList(); stringList.stream() // 强转为String类型,因为期望的就是只放...原创 2020-03-27 19:17:55 · 491 阅读 · 0 评论 -
八、Spring Cloud系列:启动慢Initializing ExecutorService 'taskScheduler'
在单体服务启动时,发现了一个问题,在控制台输出到如下信息时启动超级慢,需要等待三分钟左右。 INFO | restartedMain | org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler | Initializing ExecutorService 'taskScheduler'猜了以下原因,这是一个ThreadP原创 2017-09-20 09:19:56 · 23328 阅读 · 5 评论 -
六、入侵Activiti-SpringBoot使用代码动态编辑流程文件
需求总是变来变去,产品希望可以实现动态改变工作流程,从而提高系统的灵活性。这就让我有点懵逼了。查了一些资料,有两种实现方式:前端页面生成bpmn文件,传送给后台,但是对前端的要求比较高。使用Java代码动态更改流程文件,达到修改流程的目的。这里使用代码的方式来实现,接下来使用一个Demo做一个简单的示例。一、使用Activiti Modeler画一个流程图 该流程图会保存到数据库的ACT原创 2017-09-03 12:21:35 · 3770 阅读 · 0 评论 -
五、Activiti问题解决:不是 'NCName' 的有效值的问题
先上个异常截图(引用别人的,我的忘记截图了) 我是用代码画BPMN文件时,将用户任务的ID设置为了数字”1”,在部署时,就提示了这个错误。其实是因为xml中或类xml的文件中有些关键属性的值不符合NCName命名规范。NCName 要以字母或下划线 () 字符开头,后接 XML 规范中允许的任意字母、数字、重音字符、变音符号、句点 (.)、连字符 (-)原创 2017-08-31 21:15:35 · 6459 阅读 · 0 评论 -
减少你的重复代码-lombok使用教程-idea集成插件
简介 大部分项目中都必不可少的包含数据库实体(Entity)、数据载体(dto,dataObject),而这两部分都包含着大量的没有业务逻辑的setter、getter、空参构造,同时我们一般要复写类的toString(),equals(),hashCode()方法(贫血模型)。这些工作都是重复性的工作,作为程序员,懒是必备素质之一,这些工作肯定已经有大牛封装好了处理方法,这就是lombok。原创 2017-04-14 20:39:17 · 4888 阅读 · 0 评论 -
三、解决Springboot集成ActivitiModel提示输入密码的问题
一、原因分析先要知道两点 - SpringBoot会根据引入的Jar包而自动配置相应的功能。 - ActivitiModeler中引用了Spring Security的Jar。(是一个安全或者说权限的框架)知道这两点就知道原因了: springboot发现项目的Lib包中含有spring security的Jar包,启动时自动将安全认证配置到了项目上。那么访问项目时,就需要输入用户名和密码才原创 2017-08-30 09:32:52 · 5341 阅读 · 0 评论 -
二、Activiti概括性记录
一、Activiti的整个流程大致如下:定义流程文件(*.bpmn或者打包的zip文件,区别只是前者activiti生成图片,后者会使用我们自己的图片作为资源文件)部署流程,这里候就会生成相应的流程定义信息(表ACT_RE_PROCDEF与表ACT_RE_DEPLOYMENT)启动流程,就会产生一个流程实例(ACT_RUN_EXECUTION)剩下就是执行任务了二、七大接口简介 接口类原创 2017-08-28 16:40:33 · 483 阅读 · 0 评论 -
使用idea搭建自己的SpringBoot initializer构建服务器(20190813)
一、简单说明使用Spring Initializer构建Springboot项目是十分快速的,但是公司的网络总是连接不上https://start.spring.io,所以想要搭建一个和https://start.spring.io一样的构建服务器,网上找了半天没有比较简单的教程,只好自己试验下,记录下过程。二、搭建过程1.下载项目源码 github上下载spring initializer的开原创 2017-08-18 17:01:41 · 12947 阅读 · 12 评论 -
如何简单的理解JavaWeb中的mvc?
从刚开始编程,就接触到MVC这个概念。最直观的理解就是Model(模型数据)、View(视图)、Controller(控制器),但是mvc究竟是什么?1. 简介MVC最早提出是在客户端软件之中,以电脑附带的计算器为例: 1. 计算器的界面就是View 2. 用户点击 “1 + 2 =”的时候,调用了Controller进行逻辑运算。 3. controller算出了数据结果,也就是Model原创 2017-07-18 13:27:41 · 947 阅读 · 0 评论 -
Java获取字符串(16bit,32bit)和文件MD5工具
自己搜集整理的MD5的Java工具类,支持16位32位64位的字符串大小写MD5,使用Apache的库实现文件的MD5 还有很多整理的工具类,项目地址:https://github.com/KingBoyWorld/aurora.git,下载后切换到utils_feature分支,Common模块中有相应的工具包。package com.kingboy.common.utils.md5;原创 2017-07-22 14:03:43 · 2160 阅读 · 0 评论 -
java动态代理与cglib代理的简单使用
AOP的拦截功能是由java中的动态代理来实现的。说白了,就是在目标类的基础上增加切面逻辑,生成增强的目标类(该切面逻辑或者在目标类函数执行之前,或者目标类函数执行之后,或者在目标类函数抛出异常时候执行。不同的切入时机对应不同的Interceptor的种类,如BeforeAdviseInterceptor,AfterAdviseInterceptor以及ThrowsAdviseInterceptor原创 2017-06-14 21:12:50 · 523 阅读 · 0 评论 -
class.getResource与class.getClassLoader().getResource使用
记录缘由 java项目中的文件路径读取一直都分不太清楚,虽然现在框架可以搞定一切,但做纯的java项目中终究是个小坑,那么就解决他。 首先分清两个重要的概念:(只针对当前环境的定义) 1. 根路径:相对于当前项目的根目录(如下结构中的”projectName”) 2. 相对路径:针对当前类class文件的路径 注意点所有的操作都是针对class路径来操作的//编原创 2017-05-16 19:09:21 · 1636 阅读 · 0 评论 -
在普通项目中配置Log4J
一、引入Jar包gralde项目 compile 'log4j:log4j:1.2.17'compile 'commons-logging:commons-logging:1.2'maven项目<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</versi原创 2017-10-16 16:30:21 · 1509 阅读 · 0 评论 -
Lambda与函数接口
文章目录一、Lambda表达式一、什么是lambda ?1.1 传统写法1.2 Lambda写法二、Lambda基础语法2.1 格式规范2.2 示例三、函数式接⼝3.1 Runnable3.2 自定义一个函数式接⼝, 并完整使用一下3.3 jdk中默认提供的函数接口3.3.1 Consumer3.3.2 Function3.3.3 Supply3.3.4 Predicate四、方法引用与构造引用4...原创 2018-12-07 17:39:11 · 951 阅读 · 0 评论 -
Java8新特性-LocalDateTime
当我们开始使⽤Java操作⽇期和时间的时候,会有⼀些棘⼿。你也许会通过 System.currentTimeMillis() 来返回1970年1⽉1⽇到今天的毫秒数。或者使⽤ Date类来操作⽇期;当遇到加减⽉份、天数的时候 你⼜需要⽤到Calendar类; 当需要格式化⽇期的时候需要使⽤java.text.DateFormat类。 总⽽⾔之在Java中 操作⽇期不是很⽅便,以⾄于很多开发者不得不...原创 2018-12-07 17:35:30 · 9810 阅读 · 0 评论 -
如何在Linux上安装Maven私服Nexus 3
这篇文章将教会你在Linux上以一种安全的方式安装Nexus。 这篇文章是在Redhat7上测试过的,在CentOS7上也应该是通用的Step 1: 登录你的Linux服务器并更新以下yum update -y Step 2: 安装OpenJDK1.8(官方推荐的是Oracle JDK)yum install java-1.8.0-openjdk.x86_原创 2017-08-17 12:53:56 · 1179 阅读 · 0 评论 -
Java8中的LocalDateTime工具类
网上搜索了半天都没有找到Java8的LocalDateTime的工具类,只好自己写了一个,常用功能基本都有。还在用Date的Java同道该换换了。 个人项目地址:https://github.com/KingBoyWorld/common.git,Common模块中有很多实用的工具包,都是优化过的。工具类package com.kingboy.common.utils.date原创 2017-07-22 22:57:14 · 42666 阅读 · 9 评论 -
logback配置示例-包含生成json日志,与ELK整合
一、依赖 由于配置中使用了json格式的日志输出,所以需要引入如下依赖"net.logstash.logback:logstash-logback-encoder:4.11",二、配置说明1.日志的输出路径<property name="LOG_PATH" value="phantom-log" />2.读取spring容器中的属性,这里是获取项目名称和运行的服务器IP<springPrope原创 2017-12-28 01:58:45 · 7599 阅读 · 0 评论 -
剪不断理还乱的Java日志体系
一、困扰的疑惑目前的日志框架有 jdk 自带的logging,log4j1、log4j2、logback ,这些框架都自己定制了日志 API ,并且有相应的实现;目前用于实现日志统一的框架 Apache commons-logging(jcl)、slf4j ,遵循「面向接口编程」的原则,这两大框架可以让用户在程序运行期间去选择具体的日志实现系统(log4j1\log4j2\logback等)来记转载 2017-12-27 15:12:44 · 348 阅读 · 0 评论 -
SpringBoot使用Mybatis注解开发教程-分页-动态sql
代码示例可以参考个人GitHub项目kingboy-springboot-data一、环境配置1.引入mybatis依赖 compile( //SpringMVC 'org.springframework.boot:spring-boot-starter-web', "com.fasterxml.jack原创 2018-01-02 00:02:47 · 14280 阅读 · 3 评论 -
毕业一年的菜鸟某东面试总结
本人16年毕业,因为对IT感兴趣,所以从大学就开始自学编程(工商专业),野路子出身。毕业之后找了一份工作,直到现在。鸟大了什么林子都有,所以也想出去闯闯,就抱着试试看的态度面了某东,本想着见见世面,别太丢人就好,结果却是意料之外,情理之中。过程中也意识到了自己的不足的地方,还是学习到了很多东西,分享一下。笔试题 笔试题中大部分都是一些基础性的知识技能,其中类似于jvm的知识其实是扩展的知识,用来原创 2017-11-12 19:10:47 · 1037 阅读 · 0 评论 -
使用JDK自带工具将类转换为xml
一、使用情景某些时候,我们需要将类转换为xml字符串或者文件进行发送或操作,jdk本身便提供了这样的工具。JAXBContext。二、使用代码中注释的很清楚了,就不解释了。主要有两个类:PersonBO是要转换的载体类。Main是测试类。PersonBOpackage com.kingboy.xml;import javax.xml.bind.annotation.*;import java.ut原创 2017-11-12 15:50:55 · 1137 阅读 · 0 评论 -
trywithresource使用方式
一、基本使用 trywithresource是Java7中新增的功能,可以自动关闭实现了AutoCloseable的资源语法:try(需要关闭的资源){ //TODO }以前我们关闭一个资源需要这样做:static String readFirstLineFromFileWithFinallyBlock(String path)throws IOException { Buff原创 2017-10-16 23:33:29 · 1519 阅读 · 0 评论 -
Gradle打包src中的资源文件的配置方法(mapper.xml等)
一、环境描述创建了一个Gradle项目,目录结构如下:|--src |--main |--java | |--com | | |--kingboy | | |--resource | | |--ResourceContentUtil.java原创 2017-10-16 16:47:44 · 12957 阅读 · 0 评论 -
servlet.filter.listener.interceptor区别与联系-写的很好很全
一、概念:servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。最早支持 Servlet 技术的是 JavaSoft 的 Java Web Server。此后,一些其它的基于 Java 的 Web Server 开始支持标准的 Servlet API。Servlet 的主要功能在于交互式转载 2017-06-27 00:07:57 · 315 阅读 · 0 评论 -
JavaOSC协议使用教程-以及遇到的坑(UTF-16BE中文乱码)
一、导入Jar包 百度搜索maven仓库,进入搜索JavaOSC,有个javaosc core就是我们要下载的包了,提供了各种构建工具的导入方式。gradle导入dependencies { compile("com.illposed.osc:javaosc-core:0.4")}maven导入<!-- https://mvnrepository.com/artifact/c原创 2017-06-13 22:23:23 · 3315 阅读 · 4 评论 -
gradle的离线功能应用-让springboot不再自动更新jar包
前因后果 最近在项目中应用了springboot框架,用起来提高了很高的效率。但是有一点觉得很无奈,每隔一段时间就会自动更新jar包,不知道是不是我的gradle文件没配置好的原因(我用的环境:idea+gradle+springboot)。 很无奈的情况下,只能另寻他法,突然想到gradle有个离线工作的模式设置,就是不联网,只用本地仓库的jar包,那么就不会再自动更新jar包了,当原创 2017-06-13 21:29:49 · 2346 阅读 · 0 评论 -
5.2DateTime示例
import java.time.*;import java.time.chrono.ChronoLocalDateTime;import java.time.chrono.HijrahChronology;import java.time.format.DateTimeFormatter;import java.time.temporal.IsoFields;import java.ut转载 2017-04-11 16:27:59 · 477 阅读 · 0 评论 -
6.如何正确使用Optional-java8新特性
我们知道 JAVA 8 增加了一些很有用的 API,其中一个就是 Optional。如果对它不加以思索,只是轻描淡写的认为它优雅的解决了 NullPointException 的问题,于是就开始这样编写代码:Optional<User> user = ....if(user.isPresent()){ return user.getOrders();} else { return Co转载 2017-04-11 16:28:35 · 2228 阅读 · 1 评论 -
java文件操作之Path,Paths,Files
Java7中文件IO发生了很大的变化,专门引入了很多新的类: import java.nio.file.DirectoryStream;import java.nio.file.FileSystem;import java.nio.file.FileSystems;import java.nio.file.Files;import java.nio.file.Path;import j原创 2017-04-13 12:38:42 · 4949 阅读 · 1 评论 -
OkHttp简易使用教程
介绍简介 OkHttp 库的设计和实现的首要目标是高效。这也是选择 OkHttp 的重要理由之一。OkHttp 提供了对最新的 HTTP 协议版本 HTTP/2 和 SPDY 的支持,这使得对同一个主机发出的所有请求都可以共享相同的套接字连接。如果 HTTP/2 和 SPDY 不可用,OkHttp 会使用连接池来复用连接以提高效率。OkHttp 提供了对 GZIP 的默认支持来降低传输内容的大小原创 2017-04-14 11:35:25 · 491 阅读 · 0 评论 -
3、实现泛型特性构件
面向对象的一个重要目标是对代码重用的支持。支持这个目标的一个重要的机制就是泛型机制(generic mechanism):例如:可以编写一个方法,将由一些对象组成的数组排序,方法的逻辑关系与被排序的对象的类型无关,此时可以使用泛型方法。1. 使用Object模拟表示泛型 public static void main(String[] args) { Integer[] i原创 2017-04-17 19:26:27 · 370 阅读 · 0 评论 -
1.简单工厂—我的大话设计模式
小金作为KingWorld的国家领导,经常需要到不同的国家进行访问,而每个国家的语言都是不一样的,所以到不同的国家总是要带不同的翻译。以前小金总是亲力亲为,自己去挑选某个国家的美女翻译,然后带走。(目前只和这三个国家有来往)大概的办事流程是这样的:if(去美国){ 带个美国翻译美女;}if(去德国){ 带个德国翻译美女;}if(去日本){ 带个日本翻译美女;}随着国原创 2017-04-19 16:50:30 · 399 阅读 · 0 评论 -
java中的卫语句
一句话:把嵌套写的ifelse判断,改为串行的条件判断原判断public void function() { if(IsWorkDay()) { //boolean Sysetm.out.println("Error,is work day"); } else { if(IsWorkTime()) { //boolean原创 2017-05-16 20:21:27 · 2057 阅读 · 0 评论 -
java中的FileChannel基本使用
一.获取实例 Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。 我们无法直接打开一个FileChannel,需要通过使用一个InputStream、OutputStream或RandomAccessFile来获取一个FileChannel实例。 //获取方式一 /*-----------------------原创 2017-05-17 17:43:50 · 4356 阅读 · 0 评论 -
Java 并发编程 : volatile 关键字解析
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们转载 2017-05-17 19:51:18 · 360 阅读 · 0 评论 -
扒一扒 ReentrantLock 以及 AQS 实现原理
提到JAVA加锁,我们通常会想到synchronized关键字或者是Java Concurrent Util(后面简称JCU)包下面的Lock,今天就来扒一扒Lock是如何实现的,比如我们可以先提出一些问题:当我们通实例化一个ReentrantLock并且调用它的lock或unlock的时候,这其中发生了什么?如果多个线程同时对同一个锁实例进行lock或unlcok操作,这其中又发生了什么?转载 2017-05-17 19:54:31 · 808 阅读 · 0 评论 -
Java中PO,VO,BO,DTO,POJO,以及之间的区别
PO持久对象persistent objectVO值对象Value ObjectView ObjectBO业务对象层的缩写Business ObjectDTO数据传输对象Data Transfer ObjectPOJO无规则简单java对象plain ordinary java objectVO与DTO的区别区别应用DTO与DO的区别区别DTO与DO的应用DO与PO的区别区别原创 2017-06-05 16:13:22 · 5005 阅读 · 2 评论