java
文章平均质量分 55
云中漫步87
小学:大连
中学:大连
大学:大连
展开
-
aliyun短信及短信模板操作
短信模板管理管理接口申请短信模板:AddSmsTemplate删除短信模板:DeleteSmsTemplate修改未通过审核的短信模板:ModifySmsTemplate查询短信模板的审核状态:QuerySmsTemplatesdk引用<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <原创 2021-09-01 16:29:55 · 2180 阅读 · 0 评论 -
java操作excel,docx,实现一键模板生成文档
概述报销、申请格式统一的。可以制作模板,根据不同的信息自动生成。demo设计休假申请模板,大括号代表的是变量:休假申请统计表工程搭建对于maven工程来说,只需要一个pom.xml就实现了工程的搭建,如下。<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema原创 2021-06-15 19:44:37 · 1668 阅读 · 1 评论 -
spring boot 支持websocket
通信流程pom依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency>websocket 配置@Configurationpublic class WebsocketConfig {原创 2020-12-29 12:04:35 · 122 阅读 · 0 评论 -
java线程池统一管理模型
线程统一管理按照业务,建立多个线程池,每个线程池的线程独立。这样避免了多个业务之间的影响。如果多个业务共用一个线程池,会因为一个业务阻塞导致整个服务雪崩。默认线程池,为边缘业务提供统一线程管理。不需要每个业务都建立独立的线程池,一些边缘的小型业务可以使用系统默认的线程池。整体线程状态查询。可以查询整个系统的线程状态,分析哪些业务产生了阻塞。自定义线程工厂每个线程池都需要配一个threadFactory.有两个地方需要注意:一个是线程的名字必须有明确的区分,一个是AtomicInteger的超界处原创 2020-12-16 14:33:35 · 778 阅读 · 0 评论 -
spring boot 配置mybatis,mybatis-generator
mybatis依赖配置 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot&原创 2020-12-15 12:15:51 · 61 阅读 · 0 评论 -
Jdk8 Local时间处理接口demo
Local时间与Date转换/** * @author yunzhong * */public class DateConvertUtil { /** * 忽略时间,只有日期 * * @param localDate * @return */ public static Date asDate(LocalDate localDate) { return Date.from(localDate.atStartOfD原创 2020-12-07 08:59:53 · 183 阅读 · 0 评论 -
JDK8新的时间处理接口概述
JDK1.8 之前支持的时间操作:System.currentTimeMillis() :表示自1970年1月1日起的当前日期和时间(以毫秒为单位)。java.util.Date :表示特定时间点,以毫秒为单位。java.util.Calendar :一个抽象类,提供用于在实例之间进行转换并以不同的方式处理日历字段的方法。java.text.SimpleDateFormat :来格式化和解析日期。java.util.TimeZone :代表时区偏移量,还可以计算出夏令时。问题一个Date原创 2020-12-07 08:33:54 · 140 阅读 · 0 评论 -
Java NIO文件操作
文件系统文件操作代码:github CommonTest文件路径拼接URI, URLURI:格式:{scheme}: //{user}@{host}:{port}{path}?{query}#{fragment}demo:http://[email protected]:8080/yunzhong/eat?when=afternoon#meat输出:Authority = [email protected]:8080Fragment = meatHost = yunzho原创 2020-10-29 08:20:08 · 259 阅读 · 0 评论 -
Java Null判断的替代方法
为了解决空指针的判断问题,Java引入了Optional、Objects等工具。但平时比较费事的是对象以及对象属性的多级判断。前几天看了一篇博文,作者通过借鉴Optional实现了多级null判断,这里自己也实现一下,且通过Junit5编写了测试用例。github源码工程Optional代码:package org.yunzhong.CommonTest.util;import java.util.Objects;import java.util.function.Consumer;imp原创 2020-10-21 15:57:52 · 922 阅读 · 0 评论 -
docx4j 操作word中的chart
操作流程加载word文档替换文档正文中的变量替换chart显示的数据内容。同步chart数据的excel数据。保存更改后的文件注意必须在两个地方更改数据。如果chart中的数据没有设置,那么打开生成的word后,chart显示的数据不正确。之后编辑chart数据之后才会显示正确数据。如果没有更新excel中的数据,打开word后chart数据显示正确。但此时编辑chart数据,chart的数据会被老数据覆盖。源码Demo WordprocessingMLPackage templ原创 2020-09-18 08:23:45 · 952 阅读 · 0 评论 -
java中到底该不该用@author标识作者?
今天查看activiti的README,突然发现一段很有意思的FAQ。Why do you not accept @author lines in your source code? Because the author tags in the java files are a maintenance nightmare A large percentage is wrong, incomplete or inaccurate. Most of the time,原创 2020-05-27 16:05:27 · 3559 阅读 · 0 评论 -
怎样为JDBC查询设置超时(How to Timeout JDBC Queries)翻译
原文地址:https://www.codelooru.com/2017/02/how-to-timeout-jdbc-queries.html怎样为JDBC查询设置超时JDBC查询默认情况下是没有超时的,这就意味着如果一个查询被阻塞,那么这个线程将会被一直阻塞。当这些查询花费的时间超过一定时间段,那么以timeout方式终止则是一种最佳实践。单个查询的超时设置JDBC的statement可以设置超时,单位为秒。当超时被设置,驱动将会等待设置的时间。如果在设置的时间内没有返回,怎会抛出SQLTimeo翻译 2020-05-18 17:27:52 · 5580 阅读 · 0 评论 -
greenplum提供的jdbc驱动下载
greenplum很尿性,很难找到jdbc的驱动。有些人说可以直接用postgresql的驱动,我理解还是不如用greenplum的原厂驱动。驱动版本:5.1.4驱动支持的greenplum版本:6.*greenplum 的jdbc驱动下载地址:https://t00y.com/file/27004439-443100749...原创 2020-05-13 16:53:10 · 3164 阅读 · 0 评论 -
Spring缓存组装数据实现
问题描述数据库的表中存放着code,而页面需要展现这些code对应的中文或英文名称。如果通过数据库实现,则sql需要类似的写法:select main_table.* , dict.name, dict2.namefrom main_tableleft join dict on main_table.property = dict.id left join dict2 on main_table.property2 = dict2.id...java端则不需要做任何事情,直接将数据转发给原创 2020-05-12 17:45:01 · 219 阅读 · 0 评论 -
redisson sentinel配置说明
redisson sentinel配置说明摘自官网:sentinelServersConfig: #如果当前连接池里的连接数量超过了最小空闲连接数,而同时有连接空闲时间超过了该数值,那么这些连接将会自动被关闭,并从连接池里去掉。时间单位是毫秒。 idleConnectionTimeout: 10000 pingTimeout: 1000 #同任何节点建立连接时的等待超时。时间...转载 2020-02-27 09:21:33 · 7055 阅读 · 0 评论 -
Shiro基本概念及与Spring集成
apache shiro 基本架构Subject:当前登录人的一个安全视图。代码可以从对象中获取登录信息。SecurityManager:架构的核心,组织管理所有的Subject。Realms:用户自定义,提供获取用户信息,认证信息。下面是更加详细的架构图:apache shiro 与Spring boot集成spring boot starter <depe...原创 2020-02-26 17:02:40 · 211 阅读 · 0 评论 -
mybatis generator 使用摘要
mybatis generator 概述新版的mybatis generator已经不完全依赖于xml,可以生成基于注解的mapper。mybatis generator生成对象:table的主键类table的非主键,非blob类型的属性类blob类型的属性类动态select,update,insert当配置生成xml文件,则其内容可能包括:insertupdate by p...原创 2020-01-08 13:42:52 · 230 阅读 · 0 评论 -
Spring Boot Websocket部署异常处理:Multiple Endpoints may not be deployed to the same path
spring boot websocket 配置开启websocket@Confiturationpublic class MyConfig { @Bean public ServerEndpointExporter serverEndpointExporter() { return new ServerEndpointExporter(); }}...原创 2019-11-18 14:51:41 · 3489 阅读 · 0 评论 -
Log4j2的核心概念及应用
本文从官网摘出log4j2核心应用以及概念,帮助理解log4j2。Log4j2 配置Log4j2 配置方式四种配置方式:1) 通过配置文件。支持的文件格式:XML, JSON, YAML, or properties2)编程方式。创建ConfigurationFactory 以及Configuration3)编程方式。通过调用Configuration 提供的api接口,创建组件4)...原创 2019-10-29 10:31:40 · 704 阅读 · 0 评论 -
junit引发的多线程思考
public class VCenterPerformanceTest { private static final Log log = LogFactory .getLog(VCenterPerformanceTest.class); private static long counter = 0; private static lon原创 2013-04-12 07:55:21 · 2827 阅读 · 0 评论 -
说好的数据去哪里了(java-HashSet-HashMap)
HashSet的数据不见了!原创 2014-10-10 13:30:43 · 908 阅读 · 0 评论 -
dubbo annocation scan启动过程解析
Dubbo通过spring的加载而启动,本文分析了通过注解方式加载的过程.1. Schema扩展通过注解加载dubbo,需要在spring的配置文件中添加:dubbo:annotation是dubbo基于spring的schema扩展。(Schema扩展的介绍可以参考:http://blog.csdn.net/cutesource/article/details/5864原创 2014-12-19 17:13:54 · 18052 阅读 · 0 评论 -
H2Database 数据结构分析-索引使用过程
1 H2 协议创建链接后,H2会为链接启用单独的Thread。Thread内部管理session,处理请求。下图是查询操作的处理过程,可以分为两个步骤:prepare sql执行query在prepare阶段,Server需要解析sql,定义查询索引的使用。为了提高效率,Server本身会缓存sql的解析结果,采用sql原文作为主键。解析后的结果封装在Command对象中,并缓存在本...原创 2018-10-15 18:48:37 · 3909 阅读 · 2 评论 -
tablesaw 内存模型分析
tablesaw 内存模型分析1 UML图如下图。用户的操作接口为Table,Row。其他的模型主要用于内部功能实现和数据存储。2 Table数据组织方式Table的数据是以列的维度进行组织。Table包含一个columnList属性,每个列都是这个列表的一个值。每个Column单独维护自己的数据,但是长度都是相同的。所以取表长度的方式,就是columnList列表中获得一列的长度。t...原创 2018-10-10 16:26:10 · 2435 阅读 · 0 评论 -
Guava TreeMultiSet实现原理分析
1 存储模型TreeMultiset本身实现了一棵平衡树,并通过用户定义的比对方式进行排序。用户可以通过两种方式定义比较器:数据类型实现Comparable,或者为Set注册Comparator。和普通的Set相比,TreeMultiset允许多个数据在比较器比较结果是相等的。如果相等,则放在此节点下的一个列表中。TreeMultiset定义了两种查找方式:head和tail。和他们的名字相对...原创 2018-10-23 16:42:39 · 2310 阅读 · 0 评论 -
Guava TreeMultiSet实现原理分析(2)
5 count,sizeAvlNode为数据统计提供了多个便利参数,不需要遍历所有的子节点就可以获得相关的个数信息。AvlNode的统计属性:elemCount:统计key相同的元素个数。distinctElements:统计子树中所有节点的个数,即key不同的元素个数。totalCount:子树中所有元素的个数。count:count的实际操作,是在AvlNode中完成。TreeMu...原创 2018-10-24 19:17:09 · 325 阅读 · 0 评论 -
JAVA Hash性能优化
1 问题描述在JAVA代码中有这样一段:功能就是多个字符串拼接后,作为map的key,put到map中。 public void hashCode(List<String> values) { long start2 = System.currentTimeMillis(); for (int i = 0; i + 1 < values...原创 2018-11-13 17:17:26 · 518 阅读 · 0 评论 -
基于guava的数据组织模型
1 概述树结构是目前索引的常用实现结构,可以大大缩减比对操作的次数。同时,如果节点间记录了前后遍历的节点,那么按此顺序查询的结果是有序的。树的高度决定了插入和查询的效率。为了保证树的高度,数据结构在二叉树的基础上提出了平衡二叉树,B-+树。它们都希望能够降低树的高度,减少比对次数,提升查找效率。本文采用guava的TreeMultiset作为基础数据结构,实现了内存索引。2 构建索引索引的...原创 2018-11-13 19:05:04 · 762 阅读 · 0 评论 -
mavibot btree实现原理
Mavibot 是个Java 的多版本并发控制 BTree,是 JDBM(当前 Apache Directory 服务器的后端)的替代品, 但是有着更强的功能,能适应任意需要实现 Java MVCC BTree 的项目。Btree是在红黑树的基础上提出的。红黑树的高度,限制了其性能。而Btree则通过扩展节点的存储功能,降低了树的高度。1 红黑树(平衡二叉树)内存索引的文章中已经对平衡二叉树进...原创 2018-11-26 10:20:09 · 405 阅读 · 0 评论 -
java继承-函数
public class base{ public print(String str){ System.out.println(str); printEnd(); } public printEnd(){ System.out.println("Welcom to print. By base."); }}原创 2012-05-23 23:28:21 · 758 阅读 · 0 评论