java
架构师成长营
这个作者很懒,什么都没留下…
展开
-
java核心技术 (卷I)[集合|并发] 精华版
java 核心 编程 (卷I)[集合|并发] 精化版原创 2020-06-13 08:46:06 · 330 阅读 · 0 评论 -
java核心技术(卷I)[接口|lambda|内部类|异常|泛型] 精华版
java 核心 编程(卷I)[接口|lambda|内部类|异常|泛型] 精华版原创 2020-06-13 08:43:41 · 223 阅读 · 0 评论 -
SpringMVC集成Swagger插件以及Swagger注解的简单使用
一、简介Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新 。接口的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单。我们的RESTful API就有可能要面对多个开发人员或多个开发团队:IOS开发...转载 2020-04-14 17:47:49 · 407 阅读 · 0 评论 -
Swagger Annotation 详解
在软件开发行业,管理文档是件头疼的事。不是文档难于撰写,而是文档难于维护,因为需求与代码会经常变动,尤其在采用敏捷软件开发模式的系统中。好的工具能够提高团队沟通效率,保证系统质量以及缩短项目的交付周期。反之,差的管理工具,会严重影响沟通效率,增加系统bug数量,并且延误产品的上线日期。所以选用合理与合适的软件开发文档管理工具十分重要,真正让开发者做到“高高兴兴地把活干完,早点回家吃饭打游戏”。...转载 2020-04-14 16:47:52 · 1547 阅读 · 0 评论 -
基于 Spring 的纯 Java 报表引擎 UReport
UReport2 是一款高性能的架构在 Spring 之上纯 Java 报表引擎,通过迭代单元格可以实现任意复杂的中国式报表。在 UReport2 中,提供了全新的基于网页的报表设计器,可以在 Chrome、Firefox、Edge 等各种主流浏览器运行(IE浏览器除外),打开浏览器即可完成各种复杂报表的设计制作。UReport2 是第一款基于 Apache-2.0 协议开源的中式报表引擎...转载 2020-04-14 16:07:24 · 2337 阅读 · 1 评论 -
Spring Scheduled定时任务动态修改cron参数
使用spring@scheduled注解可以方便的设定定时任务,但是对于定时参数需要变化的情况就会很不方便,如果要实现更改定时参数,就要停止服务,更改参数,重新部署。对于这种需求, 可以利用TaskScheduler借口来实现,实现方法有两种启动定时,关闭定时,使用新参数启动定时 使用自定义的Trigger启动定时,更改参数范例代码如下 1 2 3 4...转载 2020-04-13 12:04:28 · 2149 阅读 · 0 评论 -
字节码及ASM使用
字节码及ASM使用什么是字节码?机器码 机器码(machine code)是CPU可直接解读的指令。机器码与硬件等有关,不同的CPU架构支持的硬件码也不相同。 字节码 字节码(bytecode)是一种包含执行程序、由一序列 op 代码/数据对 组成的二进制文件。字节码是一种中间码,它比机器码更抽象,需要直译器转译后才能成为机器码的中间代码。通常情况下它是已经经过编译,但与特定机器码无...转载 2020-04-10 23:42:55 · 1053 阅读 · 0 评论 -
spring动态配置cron表达式,不需要停服
spring做定时任务调度时有常用的两种方式,分别是基于配置文件的quartz和基于注解的@Scheduler。quartz需要较多的配置文件,个人感觉比较麻烦,@Scheduler注解只需要简单的配置即可,但是这两种发方法不能动态加载cron表达式,每次更改调度规则都需要重启服务。本文介绍一种不需要重启服务的动态加载cron表达式的方法。使用SchedulingConfigurer 接口来实现...转载 2020-04-10 21:33:12 · 1844 阅读 · 0 评论 -
在Java中调用Groovy脚本返回抽象类实例
在Java中调用Groovy方法的又一种方法:使用接口1、定义Java接口包含在Java中需要调用的Groovy方法public abstract class AbstractFunction { public abstract String generateExpress(String... strArray); public abstract Object[] par...原创 2020-04-10 19:09:13 · 797 阅读 · 0 评论 -
mvel2.0语法指南
虽然mvel吸收了大量的java语法,但作为一个表达式语言,还是有着很多重要的不同之处,以达到更高的效率,比如:mvel像正则表达式一样,有直接支持集合、数组和字符串匹配的操作符。除了表达式语言外,mvel还提供了用来配置和构造字符串的模板语言。mvel2.x表达式包含以下部分的内容:属性表达式,布尔表达式,方法调用,变量赋值,函数定义。一、基本语法MVEL 是一种基于java语...转载 2020-04-10 17:45:45 · 2092 阅读 · 0 评论 -
一种表达式语言的解析引擎JEXL简单使用
Jexl 是一个ExpressionLanguage的解析引擎,是为了方便嵌入你的系统或者程序框架的开发中,他算是实现了JSTL中EL的延伸版本.不过也采用了一些Velocity的概念. 下面是一个使用Jexl的例子,有详细注释,import java.util.HashMap;import java.util.List;import java.util....转载 2020-04-10 17:42:18 · 771 阅读 · 0 评论 -
一页技术:activiti流程引擎知识大全
._ 介绍. ._ BPMN. . ._ 流对象. . . ._ 事件. . . ._ 活动. . . ._ 网关. . ._ 数据. . . ._ 数据对象. . . ._ 数据输入. . . ._ 数据输出. . . ._ 数据存储. . ._ 连接对象. . . ._ 顺序流. . . ._ 消息流. . . ._ 关联. . . ._ 数据关联. . ._ 泳道. . . ._ 池. . . ._ 道. . ._ 制品. . . ._ 组. . . ._ .原创 2020-04-10 11:11:56 · 318 阅读 · 0 评论 -
什么是 JWT -- JSON WEB TOKEN
什么是JWTJson web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直...转载 2020-04-09 10:12:13 · 131 阅读 · 0 评论 -
JAVA嵌入运行Groovy脚本
最近设计一个数据统计系统,系统中上百种数据统计维度,而且这些数据统计的指标可能随时会调整.如果基于java编码的方式逐个实现数据统计的API设计,工作量大而且维护起来成本较高;最终确定为将"数据统计"的计算部分单独分离成脚本文件(javascript,或者Groovy),非常便捷了实现了"数据统计Task" 与 "数据统计规则(计算)"解耦,且可以动态的加载和运行的能力.顺便对JAVA嵌入运行Gr...转载 2020-03-19 09:31:59 · 237 阅读 · 0 评论 -
SpringBoot+MyBatis+PostgreSQL配置
Docker启动一个Postgres实例:docker run --name postgresdb -p 5432:5432 -e POSTGRES_PASSWORD=aq1sw2de -d postgres1.前置依赖配置首先我们需要引入maven的依赖包<dependency> <groupId>org.postgresql&l...转载 2020-03-14 23:38:25 · 2259 阅读 · 2 评论 -
Java ClassLoader 详解
Class Loader也叫类加载器,是负责加载类的对象,jdk中的ClassLoader类是一个抽象类,只要提供一个类的二进制名称,类加载器会试图定位并生成类的数据对象,典型的加载策略是,转换类名为一个文件名称,然后从文件系统中读取类文件并加载该类。每一个类对象都有一个getClassLoader()方法,该方法返回定义该类的classLoader。数组对象不是由类加载器来创建,而是由j...原创 2019-11-01 22:32:32 · 219 阅读 · 0 评论 -
Spring中的事件驱动模型
事件驱动模型简介事件驱动模型通常也被理解成观察者或者发布/订阅模型。是一种对象间的一对多的关系; 当目标发送改变(发布),观察者(订阅者)就可以接收到改变; 观察者如何处理,目标无需干涉,它们之间的关系是松耦合的。事件驱动模型的例子很多,如生活中的红绿灯,以及我们在微服务中用到的配置中心,当有配置提交时出发具体的应用实例更新Spring上下文环境。Spring的事件机制基...转载 2019-10-14 17:39:08 · 274 阅读 · 0 评论 -
quartz官方示例在本地运行的方法总结
1. 从github上clone quartz源码git clonehttps://github.com/quartz-scheduler/quartz.git在编译前,确保本地安装了jdk,此处略。quartz的官方示例在distribution子工程下,在本地编译子工程distribution时,报错:在本地搜索checkstyle.xml文件,并没有该文件。修改,q...原创 2019-10-12 15:26:15 · 745 阅读 · 0 评论 -
最近5年133个Java面试问题列表
Java 面试随着时间的改变而改变。在过去的日子里,当你知道 String 和 StringBuilder 的区别就能让你直接进入第二轮面试,但是现在问题变得越来越高级,面试官问的问题也更深入。 在我初入职场的时候,类似于 Vector 与 Array 的区别、HashMap 与 Hashtable 的区别是最流行的问题,只需要记住它们,就能在面试中获得更好的机会,但这种情形已经不复存在。如今,你...转载 2019-01-06 18:58:27 · 379 阅读 · 0 评论 -
Mapper 接口大全
Mapper3接口有两种形式,一种是提供了一个方法的接口。还有一种是不提供方法,但是继承了多个单方法的接口,一般是某类方法的集合。例如SelectMapper<T>是一个单方法的接口,BaseSelectMapper<T>是一个继承了4个基础查询方法的接口。基础接口Select接口:SelectMapper<T>方法:List<T>...转载 2019-05-14 16:34:30 · 736 阅读 · 0 评论 -
谈谈高并发系统的限流
开涛大神在博客中说过:在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。本文结合作者的一些经验介绍限流的相关概念、算法和常规的实现方式。缓存缓存比较好理解,在大型高并发系统中,如果没有缓存数据库将分分钟被爆,系统也会瞬间瘫痪。使用缓存不单单能够提升系统访问速度、提高并发访问量,也是保护数据库、保护系统的有效方式。大型网站一般主要是“读”,缓存的使用很容易被想到。在大型“写”系统中...转载 2019-04-22 18:48:45 · 155 阅读 · 0 评论 -
分布式调度框架大集合
分布式任务调度框架1、什么是分布式任务调度?2、常见的分布式任务调度框架有哪些?3、分布式任务调度框架的技术选型?4、分布式任务调度框架的安装与使用?大对比表格:https://pan.baidu.com/s/1CZAjTFqIhinzlVLnrrMUKQ分布式任务调度,三个关键词:分布式、任务调度、配置中心。分布式:平台是分布式部署的,各个节点之间可以无状态和无限的水...转载 2019-04-15 09:50:41 · 1749 阅读 · 0 评论 -
三款主流静态源代码安全检测工具比较
静态源代码安全检测工具比较1. 概述随着网络的飞速发展,各种网络应用不断成熟,各种开发技术层出不穷,上网已经成为人们日常生活中的一个重要组成部分。在享受互联网带来的各种方便之处的同时,安全问题也变得越来越重要。黑客、病毒、木马等不断攻击着各种网站,如何保证网站的安全成为一个非常热门的话题。根据IT研究与顾问咨询公司Gartner统计数据显示,75%的黑客攻击发生在应用层。而由NIST的...转载 2019-02-19 18:13:37 · 3532 阅读 · 0 评论 -
常用 Java 静态代码分析工具的分析与比较
简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能、特性等方面对它们进行分析和比较,希望能够帮助 Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中。 引言在 Java 软件开发过程中,开发团队往往要花费大量的时间和精力发...转载 2019-02-19 18:10:29 · 178 阅读 · 0 评论 -
知名公司的Java面试题
查看不同公司新鲜真实的Java面试题,摘自Glassdoor.com巴克莱投资:假设有一个 getNextparson() 方法返回 Person 对象,Person 类实现了 comparable 接口,现在从文件中读取记录并排序,然后给出前 1000 条记录,纸上作答 答案见Glassdoor 写一个函数,传入 2 个有序的整数数组,返回一个有序的整数数组。 答案见Glassdo...转载 2019-01-09 21:16:29 · 163 阅读 · 0 评论 -
Java 面试题:百度前200页都在这里了
基本概念操作系统中 heap 和 stack 的区别 什么是基于注解的切面实现 什么是 对象/关系 映射集成模块 什么是 Java 的反射机制 什么是 ACID BS与CS的联系与区别 Cookie 和 Session的区别 fail-fast 与 fail-safe 机制有什么区别 get 和 post请求的区别 Interface 与 abstract 类的区别 IOC...转载 2019-01-06 18:52:56 · 335 阅读 · 1 评论 -
测试驱动开发之初窥门径
什么是测试驱动开发测试驱动开发是指在编写实现代码之前先写测试代码的开发方式。JUnit的作者Kent Beck说过:编写测试驱动代码的重要原因是消除开发中的恐惧和不确定性,因为编写代码时的恐惧会让你小心试探,让你回避沟通,让你羞于得到反馈,让你变得焦躁不安,而TDD是消除恐惧、让Java开发者更加自信更加乐于沟通的重要手段。TDD会带来的好处可能不会马上呈现,但是你在某个时候一定会发现,这些好处...转载 2019-01-08 21:58:23 · 166 阅读 · 0 评论 -
贫血领域模型是如何导致糟糕的软件产生
使用贫血领域模型通常被认为是一种反模式,因为它鼓励程序员无意义地重复编写代码。下面我将简短(而琐碎)地用一个例子来阐述这个是如何产生的。我们可以通过细致的规划以及严格的编码规范来避免其发生,但是同样可以获得较好的封装。防止陷入贫血领域模型深坑的难度随项目人数呈指数级增长。我相信所有人对面向对象都有所认识,但我却有趣地发现一些看似毫无意义的小举措却导致了最终一场大灾难。zetaplusa...转载 2019-01-07 22:46:18 · 162 阅读 · 0 评论 -
关于Java并发编程的总结和思考
编写优质的并发代码是一件难度极高的事情。Java语言从第一版本开始内置了对多线程的支持,这一点在当年是非常了不起的,但是当我们对并发编程有了更深刻的认识和更多的实践后,实现并发编程就有了更多的方案和更好的选择。本文是对并发编程的一点总结和思考,同时也分享了Java 5以后的版本中如何编写并发代码的一点点经验。为什么需要并发并发其实是一种解耦合的策略,它帮助我们把做什么(目标)和什么时候做(...转载 2019-01-06 18:59:53 · 121 阅读 · 0 评论 -
pf4j整理
简介A plugin is a way for a third party to extend the functionality of an application. A plugin implements extension points declared by application or other plugins. Also a plugin can define extension...转载 2019-05-19 23:28:42 · 1370 阅读 · 0 评论 -
java远程调用方法总结
前言:项目中使用到RMI、webService等远程调用方法,各方法demo输出,予以小结。Java RMI (Remote Method Invocation) WebService,如jax-ws axis xfire cfx Httpinvoker Hessian Burlap EJB远程接口调用1、Java RMI (Remote Method Invocation)...转载 2019-05-15 09:05:43 · 2073 阅读 · 0 评论 -
这可能是最好的RxJava 2.x 入门教程(一)
这可能是最好的 RxJava 2.x 入门教程系列专栏文章链接:这可能是最好的 RxJava 2.x 入门教程(完结版)【重磅推出】这可能是最好的RxJava 2.x 入门教程(一)这可能是最好的RxJava 2.x 入门教程(二)这可能是最好的RxJava 2.x 入门教程(三)这可能是最好的RxJava 2.x 入门教程(四)这可能是最好的RxJava 2.x 入门教程(五)作者:nanc...转载 2019-05-24 21:20:22 · 137 阅读 · 0 评论 -
Java中创建对象的5种不同方法
作为Java开发者,我们每天都会创建大量的对象,但是,我们总是使用管理依赖系统(如Spring框架)来创建这些对象。其实还有其他方法可以创建对象,在接下来的文章中我会进行详细介绍。1.使用new关键字这是最常见的创建对象的方法,并且也非常简单。通过使用这种方法我们可以调用任何我们需要调用的构造函数。 1 Employee emp1 = new Employe...转载 2018-12-15 08:57:12 · 431 阅读 · 0 评论 -
13个最热开源微服务 Java 框架
经过长期发展,Java 最终在服务器领域找到一席之地,不同芯片架构和操作系统对“一次编写,到处运行”的承诺很感兴趣。与此同时,JavaScript 一直在挑战 Java 的地位,前者因为高吞吐量和速度快接管了大批网络流量。Node.js 不仅提高了速度和资源效率,还简化了客户端和服务器运行代码的复杂度。尽管竞争激烈,许多负责微服务架构开发的团队依旧在继续使用 Java,这可能有多方面原因,比如...转载 2019-09-18 19:22:15 · 205 阅读 · 0 评论 -
mybatis一级缓存二级缓存
一级缓存 Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存,一级缓存只是相对于同一个SqlSession而言。所以在参数和SQL完全一样的情况下,我们使用同一个SqlSession对象调用一个Mapper方法,往往只执行一次SQL,因为使用SelSession第一次查询后,MyBatis会将其放在缓存中,以后再查询的时候,如果没有声明需要刷新,并且缓存没有超时的情况...转载 2019-08-26 19:30:09 · 106 阅读 · 0 评论 -
JVM错误日志详解
一、日志文件:## A fatal error has been detected by the Java Runtime Environment:## SIGSEGV (0xb) at pc=0x00007ff64cea7bdd, pid=8645, tid=140693552637696## JRE version: Java(TM) SE Runtime Environm...转载 2019-08-02 18:04:22 · 9150 阅读 · 0 评论 -
mina框架详解
Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(当然,也可以提供JAVA 对象的序列化服务、虚拟机管道通信服务等),Mina 可以帮助我们快速开发高性能、高扩展性的网络通信应用,Mina 提供了事件驱动、异步(Mina 的异步IO 默认使用的是JAVA NIO 作为底层支持)操作的编程模型。Mina 主要有1.x 和...转载 2019-07-11 18:49:45 · 280 阅读 · 0 评论 -
Goolge-Guava Concurrent中的Service
最近在学习了下Google的Guava包,发现这真是一个好东西啊。。由于平时也会写一些基于多线程的东西,所以特意了解了下这个Service框架。这里Guava包里的Service接口用于封装一个服务对象的运行状态、包括start和stop等方法。例如web服务器,RPC服务器、计时器等可以实现这个接口。对此类服务的状态管理并不轻松、需要对服务的开启/关闭进行妥善管理、特别是在多线程环境下尤为复杂。...转载 2019-05-24 11:13:57 · 383 阅读 · 1 评论 -
SpringBoot 整合 Mybatis + Druid + Swagger2
转载出处: https://blog.csdn.net/greedystar/article/details/81020248一、添加依赖二、配置(一)配置文件(二)配置类三、测试(一)Druid监控(二)日志记录(三)在线API文档四、总结本文以Maven构建SpringBoot项目,并整合Mybatis、Druid和Swagger2,实现Druid监控和...转载 2019-05-13 16:09:40 · 188 阅读 · 0 评论 -
消息队列软件产品大比拼
花了一周的时间评估比较了一下各种消息队列产品,非常的有趣。我做这个事的动机是因为一个客户有一个很高性能需求。他们的消息信息突破了1百万个并发。目前他们使用的是SQL server,并不理想,我建议他们使用消息队列服务器。为了对一些相似的候选产品获得一个全面的但是粗浅的性能上的了解,我们它们放在一起做了个测试。我让每个消息产品各发送和接受1百万千条1K的消 息。测试准备的有些仓促,我并没有修改任...转载 2019-05-16 22:45:42 · 502 阅读 · 0 评论