Java
文章平均质量分 55
江无羡
Life is full of surprises !
展开
-
List 下子类排序涉及的一些问题
Java List是继承了Collection接口同时扩展定义为有序集合的接口, 这里我们分析下它的排序实现定论List是否有序排序方法排序是否稳定ArrayList(Vector)是归并排序是LinkedList是归并排序是TreeSet是是List 如何实现排序?...原创 2020-03-31 21:07:17 · 285 阅读 · 0 评论 -
Java Agent的初步认识和开发
Java Agent的初步认识、开发和使用初步认识新的改变Java Agent的执行原理开发一个自己的Java Agent初步认识你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Java Agent的执行原理开发一个自己的Java Agent...原创 2019-10-31 19:28:01 · 519 阅读 · 0 评论 -
二叉树的广度与深度遍历
二叉树在图论中的定义为, 二叉树是一个连通的无环图,并且每一个顶点的度不大于3。有根二叉树还要满足根结点的度不大于2。有了根结点之后,每个顶点定义了唯一的父结点,和最多2个子结点。然而,左右节点的定义是逻辑上。如果不考虑连通性,允许图中有多个连通分量,这样的结构叫做森林。原创 2017-05-30 23:27:18 · 783 阅读 · 0 评论 -
GraphicsMagick 实现图片的裁剪, 旋转, 移动
GraphicsMagick gm4java im4java最近对使用Java对操作这方面问题进行了下调研, 随即写了个图片操作工具类, 包括图片的裁剪, 缩放, 移动, 旋转, 加水印等功能原创 2017-08-16 11:33:28 · 3025 阅读 · 0 评论 -
Java Collectors的一些方法使用
在 java8 中的 Collectors 结合Function接口实现了很多配合stream对集合进行分组, 统计, 求最大, 最小值等简单方便的方法, 因此这里做一些记录, 方便后续的参考一.原创 2017-12-12 20:36:18 · 4387 阅读 · 1 评论 -
常见的数据签名及加密处理方式
跨服务请求中的数据加密与签名处理数据隐私与安全是我们所有开发人员在业务需求开发过程中都避免不掉的问题, 比如数据防篡改, 隐秘信息加密, 用户登录ticket生成等场景, 然后这里我们就可以根据不同的具体业务场景选择合适的签名或者加密算法以达到我们的目的!常用签名与加密算法介绍业务场景分析算法具体实现代码其他常用签名与加密算法介绍消息摘要算法MD5: 消...原创 2018-03-02 18:48:42 · 4689 阅读 · 0 评论 -
关于JVM中运行的应用程序何时被关闭退出呢
最近在调研一个分布式分片的任务调度框架的事情, 接触到了 Xxl-job, 在运行这个项目的服务案例时, 作者提供了一个spring-web形式的案例工程, clone到本地编译运行确实没有问题, 同时也部署了中心化管理服务Xxl-job-admin, 还用手动即时触发的方式调度了执行器服务中的任务逻辑; 然后在查阅项目文档时, 作者说明了执行器服务内部是启动了Jetty服务器与调度中心进行通...原创 2018-06-30 15:46:17 · 2218 阅读 · 0 评论 -
Java 中的序列化与反序列化
在Java中, 序列化是一种把java对象状态转化成字节码流形式的机制, 这种机制被应用在RPC, Hibernate, RMI, JPA, EJB 和 JMS等场景中; 序列化的逆向操作是反序列化, 顾名思义, 就是把java对象的字节码流还原到jvm中的运行时对象;常见的序列化方式Standard Java Serialization API(java平台标志API)Json...原创 2018-07-06 17:39:22 · 7036 阅读 · 0 评论 -
Java 线程池的简单介绍和常用方法分析
线程池顾名思义是为线程的池子; 在Java的世界里, 我们都知道所有应用程序都是运行在JVM运行实例之上, 每个JVM实例对应到操作系统中就是一个个独立的系统进程; 但是往往我们的应用中需要有异步, 并发, 并行执行程序的需求, 操作系统为此提供支持, 在操作系统调度层面的最小调度单元刚好是线程; 但是因为线程的创建和销毁都是比较耗费资源的, 因此在程序中我们需要线程池这样的协调者帮我们做线程对象...原创 2018-09-18 00:23:30 · 363 阅读 · 0 评论 -
Okhttp 通过拦截器实现对Response编码的设置
Okhttp 一个被广泛用于Android and Java applications中作为http请求的基础类库, 具有简单和方便的API接口, 支持同步和异步, 在http2协议下可以允许多个请求共享一个socket, 连接池降低延迟等特性;问题抛出今天做一个新项目, 应团队规范, 采用okhttp替换HttpComponents, 然后在做http请求时, 返回的内容中文乱码, 第一次使...原创 2018-10-30 20:59:50 · 7340 阅读 · 4 评论 -
使用fastjson进行序列化时进行数据脱敏
fastjson 是阿里巴巴开源的一款优秀的java生态下序列化/反序列化产品,我们可以在不同的服务之间进行数据交互时使用它,同样可以输出日志时使用fasnjson把对象转化为String, 然后再进行采集,比调用对象的toString方法靠谱,比如如果对象内部没有实现toString方法就不能正确输出想要的信息, 另一方面json格式的日志数据,后续可观性也会好一些;问题使用fastjso...原创 2018-12-21 18:28:54 · 6006 阅读 · 0 评论 -
关于RocketMQ的一些基础知识点及使用建议
之前一段时间团队中引入了RocketMQ以作为RabbitMQ的替代品, 一者是让使用它的较高吞吐量,其次想在其上做一些扩展开发,消息事务也是我们想用它的原因之一;引入的过程很简单,接下来为了在核心服务中进行切换,所以就需要对RocketMQ进行一系列深入了解,才有信心在切换的过程中实现稳步切换,以及后期游刃有余的功能扩展。MQ相关介绍RocketMQ整体架构设计RocketMQMQ概...原创 2019-05-15 07:59:56 · 1449 阅读 · 0 评论 -
二叉堆(最小堆, 最大堆)介绍与实现
二叉堆是一种特殊的二叉树, 它总是保证一棵树的最小元素(最小堆)或者最大元素(最大堆)处于树根上, 常见的应用场景就是用于构建优先队列, 在jdk中Doug Lea所实现的ScheduledThreadPoolExecutor中就是用到了最小堆;二叉堆介绍二叉堆的编程实现应用场景二叉堆介绍什么是树?计算机中树是一种数据结构(有向无环图), 因为它看起来像一颗倒挂的树, 所以被称为树...原创 2019-06-13 11:53:16 · 10671 阅读 · 2 评论 -
JDK-Proxy示例
JDK 从1.3开始提供的 Proxy 工具类, 以提供用代理的方式去执行某个接口的某些方法, 在Spring AOP的实现中就有应用;原创 2016-12-06 16:56:27 · 1749 阅读 · 0 评论 -
CGLib proxy dynamic
CGlib 是一个强大的, 高性能和高质量代码生成工具, 通常可以用它在运行期, 扩展已有Java代码类的功能或者实现某些接口; 并不能代理静态方法;JDK: 1.8 CGLib代码示例1 . 需要被代理的类package com.test.reflect;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.tim原创 2016-12-07 17:27:30 · 649 阅读 · 0 评论 -
Spring 核心之 AOP设计
AOP是Aspect-Oriented Programming (面向切面编程) 的简称, Aspect 是一种新的模块化机制, 它与面向对象(OOP)相补, OOP描述了对象自身的属性与行为, 再结合对象继承就能从纵向建立对象间的相互依赖与行为调用, 而AOP则从横向解决分散在不同业务对象中相同逻辑处理, 以获得业务过程中各部分间的低耦合性的隔离效果;原创 2016-12-14 16:38:03 · 739 阅读 · 0 评论 -
Java 下实现对mysql数据库的备份和恢复
在Java里面实现对mysql数据库的备份和恢复. 我们知道在mysql的安装目录下有一些实用的工具(like- mysqldump,mysql,etc).经过本人一系列查找后,并没有找到相关的mysql提供的使用什么内置sql命令实现备份(在sqlserver里面有相关备份的命令),所以我们可以通过在java里面使用 Java.lang.Runtime原创 2015-04-29 19:36:37 · 1984 阅读 · 1 评论 -
SpringMVC AOP 里面在invoke方法里面获取request参数
SpringMVC AOP 里面在invoke方法里面获取request参数一个需要被代理的方法,然后在代理业务代码里面为了得到request对象:实现的步骤1 创建一个代理生成对象:package com.mofang.web.proxy;import org.springframework.aop.TargetSource;import org.springframework.aop.fram原创 2015-06-17 19:02:52 · 7096 阅读 · 0 评论 -
Eclipse 部署JavaWeb项目中遇到的问题处理
Eclipse 部署JavaWeb项目中遇到的问题处理本文讲述在使用eclipse(Eclipse Java EE IDE for Web Developers)结合Tomcat部署一个Javaweb项目时遇到的问题:Eclipse中,Java项目转化为Javaweb项目Eclipse配置本地tomcat并配置部署参数刚刚把项目导入eclipse中时,发现项目是普通Java project类型的原创 2015-05-27 16:28:57 · 3049 阅读 · 0 评论 -
JSTL 的forEach标签循环迭代集合并逆序输出
巧用forEach标签对集合进行逆序输出!forEach标签介绍 标签的作用就是迭代输出标签内部的内容。它既可以进行固定次数的迭代输出,也可以依据集合中对象的个数来决定迭代的次数。 标签的语法定义如下所示。 <c:set var="goods" value="${order.goods}"/><c:set var="goodsize" value="${fn:length原创 2015-06-25 17:32:19 · 6187 阅读 · 0 评论 -
JAVA8函数式编程
使用JAVA8函数式编程生成字母序列问题的描述是这样的:我正在寻找一种生成下列字母序列的方式:A,B,C,...Z,AA,AB,AC,...ZZ问题的解答:首先,我们用函数的方式分解这个算法。我们所需要的组件有:一个(可重复)的字母表一个上界,例如想生成多少个字母。如要求生成序列ZZ,那上界就是2。一种将字母表中的字母与先前生成的字母联合成一个笛卡尔积的方法让我们看看代码:我们可以这样写入原创 2015-09-30 14:49:51 · 962 阅读 · 0 评论 -
自定义事件分发,执行耗时操作服务
关于SpringMVC里面,进行自定义事件,分发处理耗时操作服务的示例解析事件处理在spring的应用程序上下文(ApplicationContext )里面,是通过ApplicationEvent和ApplicationListener 实现的,spring本身的一些事件有ContextRefreshedEvent,ContextStartedEvent,ContextStoppedEvent,原创 2015-11-26 14:59:49 · 1697 阅读 · 0 评论 -
IDEA里面添加lombok插件,编写简略风格Java代码
在 java平台上,lombok 提供了简单的注解的形式来帮助我们消除一些必须有但看起来很臃肿的代码, 比如属性的get/set,及对象的toString等方法,特别是相对于 POJO; 关于lombok的相关信息,lombok下面开始在IDEA里面为我们的项目配置lombok编写支持咯,1 . 首先在IDEA里面安装使用lombok编写简略风格代码的插件,打开IDEA的Settings面板,并选原创 2016-01-06 13:28:35 · 38289 阅读 · 6 评论 -
Java 学习系列: IO相关的BIO,NIO与AIO
介绍: 操作系统的IO指其内部与外界的交互(Input/Output),网络IO通常是使用某种网络协议(TCP/IP,UDP/IP,etc)监听计算机的端口,进而实现数据交互。 进行IO操作,通常包括1)发起IO请求(应用程序层面,检查IO设备的就绪状态) 2)执行IO操作原创 2016-05-24 17:41:40 · 788 阅读 · 0 评论 -
Java 学习系列:ByteBuffer
ByteBuffer是Java系统提供的用于字节缓冲区之用的一个基于堆外内存实现的数据结构。在NIO中,无论是读取数据还是写入数据都需要经过ByteBuffer缓冲区做一次中转原创 2016-06-01 18:39:02 · 1201 阅读 · 0 评论 -
Map集合到Class类实例的映射转换
通常在不同的服务层面或者与外界系统对接时, 数据对象转换传输会是一件麻烦的事情, 对于某些标准格式, 当然已经有了通用的处理工具, 比如针对json格式数据就有专门的 Jackson ;原创 2016-06-27 17:18:12 · 3536 阅读 · 0 评论 -
红黑树结构算法原理与代码解析
红黑树(Red Black Tree【平衡二叉B树】) 是一种自平衡二叉查找树, 是在计算机科学中用到的一种数据结构, 典型的用途是实现关联数组。典型的普通顺序数组结构的增、删、查效率都是O(n), 但是红黑树进行读写操作时的效率可以稳定在O(log n)之内。1 . 概念介绍 1) 二叉树: 每个节点最多有两个子树的树结构, 而它在图论中的定义为, 一个连通的无环图,并且每一个顶点的度不大于3原创 2016-07-08 17:03:22 · 1610 阅读 · 0 评论 -
依据HTTPS中TLS/SSL加密原理衍生的数据加密实现
安全是互联网服务特别重要的一个方面, 这里主要解决B2C模式下, 客户端浏览器访问服务器时, 避免通讯期间的数据传输时被网络监听者劫持窃取修改等问题。 HTTPS本身已经实现了在客户端(浏览器)与服务端(网站)之间的数据传输加密, 中间涉及到了对称加密算法(加密业务数据)和非对称加密算法(加密对称加密算法的密钥);原创 2016-06-26 10:54:14 · 2281 阅读 · 0 评论 -
Netty 基于事件驱动模型实现的异步IO
Netty是一个用于快速开发可维护的高性能协议服务器和客户端的异步的事件驱动网络应用框架.其他资料: Java IO 介绍1 . 相关概念 1) 事件: 事件代表过去发生的事件,事件既是技术架构概念,也是业务概念。一个事件代表某个已经发生的事情,在计算机系统中,事件是由一个对象表达,其包含有关事件的数据,比如发生的时间,地点等等。这个事件对象可以存在在一个消息或数据库记录或原创 2016-06-17 18:13:59 · 5441 阅读 · 0 评论 -
使用quartz进行自定义作业调度
关于作业调度框架quartz的入门使用quartz的工作原理,涉及到三个对象,Scheduler,JobDetail,Trigger;Scheduler: 管理需要被调度任务的容器,它里面可以加入多个需要被调度的JobDetail。JobDetail: 具体的执行用户自定义的任务实体。Trigger: 对于任务调度的控制器,可以控制具体一个JobDetail原创 2015-04-29 19:55:20 · 1987 阅读 · 0 评论