- 博客(41)
- 资源 (11)
- 收藏
- 关注
原创 redis 集群 事务 Watch is currently not supported in cluster mode
笔者使用了redis的key/value方式在redis里面维护了一个批量导入的进度情况,value是一个json,里面维护了当前批量任务的进度,由于需要原子的更新任务进度,需要对value的修改使用到事务。首先想到的使用watch exec的方式。代码实现如下/** * 保存导入详情结果 Description: <br> * * @author bestree<br> * @taskId &.
2020-07-01 09:12:55 3486
原创 JAVA并发编程中CompletableFuture的使用例子
import java.net.HttpURLConnection;import java.net.URLConnection;import java.util.ArrayList;import java.util.Collection;import java.util.List;import java.util.concurrent.CompletableFuture;import java.util.concurrent.ExecutionException;import java.uti
2020-06-29 16:36:33 608
原创 List转Map使用Java 8 Stream方式,解决Duplicate key冲突的问题
import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.function.Function;import java.util.stream.Collectors;public class Test { public static class Stu { /** * 编号 */ private Stri.
2020-06-29 16:01:29 904
原创 SecureRandom生成随机数在个别环境超慢的问题
public static String getVerificationCode(int number) throws NoSuchAlgorithmException { StringBuilder sb = new StringBuilder(); Random rand = SecureRandom.getInstanceStrong(); ...
2019-11-08 09:56:53 845
原创 redis中键值出现 \xac\xed\x00\x05t\x00$ 的原因和解决方法
笔者在使用redis存放有序集合zset时,发现存放的集合中的value多了\xac\xed\x00\x05t\x00$的前缀,笔者往有序集合中存放的是字符串,结果如下图所示,出现非预期的前缀。出现该问题的原因是,同一个应用包中的redis template之前为向redis存放使用java对象序列化的值,序列化方式和string的一般方式不同。解决的办法,兼容原来的功能...
2019-08-27 16:48:36 13442 3
原创 springboot工程接入apollo配置中心
工作中遇到应用配置管理的问题,在实际部署时应用会多节点部署,将配置统一到配置中心后,可以方便配置的管理,做到配置的一处修改即可。避免了登陆到部署的各个节点进行逐个修改。同时配置中心支持多命名空间,可以将公用的redis配置、mysql配置放到单独的命名空间,需要使用的模块引用对应的命名空间即可。为了减少配置的引用,以及同时支持不接入配置中心的情况,笔者使用了稍微高一点的客户端版本。 ...
2019-08-05 18:14:11 1580
原创 管理系统从http切换到https
最近将线上的管理系统从http切换到https时遇到几个问题。一是,我们的管理系统是前后端分离开发的,前端页面单独部署到nginx上,前端访问地址端口和后端访问地址端口不同,我们在切换到https时,希望使用子域名的方式,即page.company.com及backend.company.com的方式。和运维沟通,运维表示这种子域名的方式需要证书的支持,即https证书需要授予为*.compa...
2019-03-21 11:09:41 911
原创 mysql数据交换两列的数据
由于录入数据时有两列的数据混了,需要将个别行的记录中的两列值互换位置修复数据,比如以下对user_id为b856303e2f364558a81bb9575aed1e3c的列进行数据修复update tc_rbac_user a, tc_rbac_user b set a.real_name=b.account_name,a.account_name=b.real_name where a.us...
2019-03-19 11:20:25 422
转载 单元测试覆盖率工具
https://blog.csdn.net/dcchencsdn/article/details/51791438EclEmmaeclipse插件在线安装
2019-01-17 15:20:12 500
原创 SpringBoot 如何实现POJO对象列表的配置和application.properties的配置映射绑定
平时使用springboot来进行快速的web后端开发,有时我们会遇到将配置转换成我们代码中的Java对象(POJO)对象的问题。如果想根据一组配置,实例化成一组对象,如何优雅的根据springboot提供的功能进行实现了。下面给出了例子。db.list[0].type=com.alibaba.druid.pool.DruidDataSourcedb.list[0].url=jdbc:my...
2018-12-29 15:55:35 2706
原创 redis的集合比较命令失效的问题 diffAndStore
最近在使用redis的集合命令做对账比较时,上线前一切正常,上线后差异对比失效,两个完全相同的集合,在做diffAndStore后,差异的结果不为空。本地进行了测试,本地redis使用了集群方式,结果本地复现,复现代码如下 // redis的key的定义 String localBillKey = "pay:reconciliation:local"; ...
2018-12-29 15:23:49 831 1
转载 git协作不同换行符的问题解决方法
在团队编程中,不同的成员往往使用不同的git提交工具,比如git bash或者git eclipse插件提交。如果都在windows下面,仍然会存在换行符不同的问题,比如gitbash提交使用LF换行。经过一番探索和尝试网上的各种解决方法,最终使用了在git仓库代码层直接新增配置.gitattributes来解决一致性问题的方法,详情参考以下链接。https://help.git...
2018-12-24 16:18:32 409
原创 jaxb 根据xsd生成java对象注释乱码
xjc -Dfile.encoding=UTF-8 -p com.minivision.abi.notify.model callClassConf.xsd
2018-04-03 17:47:00 1808
原创 Intellij IDEA 代码格式化与eclipse保持风格一致
在使用Java开发语言团队中,每个人可能人使用不同的IDE工具进行开发,比如eclipse或者intellij IDEA。这就遇到一个现实的问题,如果保证大家的代码格式一样呢?如果风格不一样,大家在合代码时很容易出现冲突,导致合入代码很困难。这个问题在本人工作中有遇到,有的团队成员使用eclipse,有的使用IDEA,大家的习惯代码风格不一致,导致各种合入代码困难和阅读代码困难。如何解决这
2016-08-16 14:32:21 29213 5
原创 Map转json是如何保证顺序以及Gson的单例化
在使用Redis缓存排序好的列表数据时,想在取数据的时候可以取列表中的某一项,于是决定使用Map来存放,并序列化这个Map. 由于Map本身是没有顺序的约束的。于是决定使用LinkedHashMap来确保key/value存放的顺序。 但如何将这个LinkedHashMap实例安装LinedHashMap的类型转成Json呢,笔者使用fastjson时,发现其不支持这种情况。经过各
2016-08-10 14:50:47 12202
原创 Servlet中使用Spring注入Service层
在工作中使用到spring的mvc框架,分为controller/service/dao三个层次。偶尔会用到servlet替换掉controller,这就遇到如何在servlet中使用注入到spring上下文中的service bean。通过查询相关资料,可以在servlet的初始化方法中调用spring的方法进行注入 @Override public void init
2016-08-10 14:14:37 6838 6
原创 Mybatis generator插件编写
generator插件编写可以参考 http://mbg.cndocs.tk/reference/plugins.html下面以修改生成的Mapper文件为以Dao为后缀为例package bestree.mybatis;import org.mybatis.generator.api.IntrospectedTable;import org.mybatis.generato
2016-05-19 09:04:43 570
原创 beyond compare 比较class差异
对于使用Java开发的项目,在提供补丁是,通常需要比较一下补丁中的文件和现网使用的版本的差异,以确保正确地进行了修改。笔者习惯使用beyond compare比较工具进行文件或者文件夹对比。可以从网上下载beyond compare 4.0+版本进行安装。如果需要进行class文件差异比较,还需要安装一个插件插件下载地址 点击打开链接选择运行的系统,搜索class关键词,点击下载。
2016-05-19 08:53:24 12892
原创 spring 根上下文和 spring dispatcherServlet 上下文的关系
目前的工作中使用了spring mvc,这样在web.xml中就多了一个不同的配置DispatcherServletorg.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:spring/dispatcher-servlet.xml1DispatcherServ
2016-05-11 17:14:21 2467 1
原创 Navicat for Oracle 安装使用
之前一直在找连接oracle的客户端工具,之前一直用pl/sql developer,但切换到64位系统后,之前的安装方式一直不能成功。于是在找其他易于安装的工具。对于mysql, 之前接触过Navicat for Mysql,挺简单易用。对于Oracle, 其实还有对应的Navicat for Oracle。可百度搜索Navicat for Oracle,可在百度软件中心获取到。安装
2016-04-11 19:00:06 371
原创 使用kettle将数据从excel存入数据库
以MySQL数据库为例 首先使用Navicat客户端将需要转移数据的表的数据导出到excel中,确保导出的excel表包含标题。也可以其他途径获取的excel。启动Kettle后,选择Excel输入后如下图选择源excel文件点击增加继续选择字段的tab页,如下图点击获取来自头部数据的字段然后可以根据需要修改字段的类型切换到工作表tab
2016-04-07 19:02:22 9333
原创 shiro配置
filterChainDefinitions 中的roles配置表示访问对应url需要的角色的合集,需要同时具备这些角色,例如下面 /manage/** = roles[admin,manager]需要同时拥有admin以及manager角色才可以访问/manage/** 的urlroles为shiro默认提供的角色控制实现,其对应的类为R
2016-03-14 10:14:29 327
转载 Google Protocol Buffers
http://shitouer.cn/2013/04/google-protocol-buffers-overview/http://shitouer.cn/2013/04/google-protocol-buffers-tutorial/http://shitouer.cn/2013/04/protocol-buffers-language-guide/http://shit
2015-04-26 15:16:52 557
转载 nillable=”true” vs minOccurs=”0″
In a WSDL, XML Schema is the section where it define the message format for each operations, which eventually become the real API that users are interested. And it is the most tricky part of the WSD
2015-04-25 23:19:55 1064
原创 zookeeper客户端和服务端交互分析
实例化zookeeper客户端后,客户端会创建ClientCnxn,其表示与服务端的连接交互对象。ClientCnxn将创建两个线程SendThread和EventThread线程。发送线程主要完成请求的发送和从服务端过来的应答的读取,对于读取的应答需要进一步处理的转由事件线程来处理。客户端和服务端之间有session的概念,客户端随机连接到zookeeper server集群中的一台机器后,
2014-02-08 23:21:22 2871
原创 FreeMarker之思考
笔者前几周一直在学习FreeMarker,入门FreeMarker是相当容易的,其官网http://freemarker.org/有详细的中文资料,介绍了FreeMarker的各种特性。Java Object + ftl template==>html是FreeMarker应用较多的场景,其将来自Java对象的数据根据模版生成预期的html文本信息。FreeMarker被广泛应用于web服务端
2014-01-25 20:37:22 663
原创 SAXParser线程变量化提高xml解析性能和吞吐量
xml的解析是Java程序员平常遇到的一个问题。对于解析性能也是我们比较关注的。下面是其中的一个优化点。package bestree.love;import java.io.IOException;import java.io.InputStream;import javax.xml.parsers.ParserConfigurationException;import java
2014-01-22 22:31:54 3637 1
翻译 RESTful Architectural Principles ( REST架构原则)
Roy Fielding的博士论文对REST的阐述确实是对为什么万维网在过去18多年如此流行的解释。随着时间的流逝,程序员们开始意识到他们也可以使用REST的概念构建分布式服务以及对面向服务的体系结构进行建模(SOA)。SOA旨在使应用开发者将系统设计为可重用的、松耦合的、分布式的服务集合。既然这些服务是发布在网络上的,从概念上来说,讲其组合成更复杂更大的系统时简单可行的。SOA的概念已经存在
2013-06-01 20:12:32 958
翻译 第一章 REST入门
对电脑前的我们来说,万维网是我们生活的一个重要部分。早晨起来看报纸,付账单,买卖股票以及在线购买物件或者服务,都是通过浏览器访问万维网做到的。“百度”这个词成为我们生活的一个常用词汇,我们通过百度搜索一部待上映的电影什么时候可以看到,或者上网找多年不联系的老朋友。挨门挨户推销百科全书的推销员已无踪影,因为像维基百科等知识网站已经成为人类知识的重要来源。人们越来越喜欢社交网站,如Facebook和M
2013-06-01 18:56:40 720
翻译 RESTful java with JAX-RS
前言部分REST作为一种架构风格,它定义了一个约束集合,以达到在设计分布式系统时满足松耦合和水平扩展的优点。通过使用web的标准特性诸如URI、HTTP、XML以及JSON同时遵循REST的相关约束,从而构造RESTful风格的web 服务。这些服务成为万维网的组成部分,同时可以使用多年的万维网的经验来满足客户端的需求。JAX-RS是一种Java语言定义的REST方面的接口和约束,目的是更
2013-06-01 09:38:26 718
原创 Restlet关闭access的日志打印。
默认情况下,访问Restlet发布的资源时,会出现如下的访问日志2013-05-31 22:19:28 127.0.0.1 - 127.0.0.1 8183 GET / - 200 111 0 4734 https://localhost:8183 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET4.0C;
2013-05-31 22:44:43 1263
原创 AtomicReference vs volatile
java多线程编程中一个很重要的概念是可见性 和互斥访问,互斥访问往往通过加锁来保证,但加锁往往会导致性能瓶颈。java包中提供了轻量级的原子变量,AtomicLong等,那他们和volatile有什么区别呢。基本没啥区别,volatile修饰的变量,可确保任何一个线程对该变量的修改,其他线程立刻可见。AtomicLong等原子变量类型提供了cas相关实用的方法,其内部实现也是使用了v
2013-05-24 23:15:42 821
原创 Java的Classloader机制。
Java规范中的类加载机制使用了双亲委托机制。用户自定义的ClassLoader可继承java.lang.ClassLoader,重写下面的方法。该种方法是Java1.2后推荐的作法。 /** * Finds the class with the specified binary name. * This method should be overridden
2013-05-19 18:57:29 576
转载 Rest URL编码问题
The URI specification only allows certain characters within a URI string. It also reservescertain characters for its own specific use. In other words, you cannot use these char-acters as part of y
2013-04-13 14:45:35 724
原创 使用datasource的方法建立到MySQL数据的连接。
import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;/** * 使用datasource方法建立mysql数据库连接。 * @author bestree007; * */public class MYSQLConne
2013-04-05 19:05:36 3778
原创 最近在学习mysql数据库,一些记录总结
在window xp上使用mysql-installer-community-5.5.30.1.msi装了相应版本的mysql。可从http://dev.mysql.com/获取相应的安装包。本来想装5.6的版本,发现官网声明5.6版本不支持window xp,就没装。装的过程发现需要.net framework相关东西,直接在360的软件管理中安装了.net framework,安全方便。
2013-04-04 22:40:59 521
原创 Java线程优先级和线程暂停恢复的问题
在Java中,使用一个线程以抢占方式暂停其他的线程是很难的。尽管Java API中提供了Thread的suspend和resume方法,但这些方法又是不建议使用的,因为它们常常会导致死锁。如果一个应用线程在运行到一个同步方法中时被暂停,这常会导致死锁。 标准的JVM支持Java线程根据设定的优先级进行调度,但它不保证这一定生效。使用API设定Java线程的优先级被JVM认为是一种提示,设定是
2013-03-17 17:28:58 679
原创 zookeeper浅析
ZooKeeper为apache开源组织的开发的一款分布式数据同步框架。目前使用ZooKeeper的项目有Hadoop、UltraESB、阿里的Dubbo等等,阿里使用ZooKeeper作为其分布式远程调用框架Dubbo的服务注册中心,UltraESB作为开源SOA企业服务总线使用Zookeeper作为其集群部署场景下配置同步机制的基础。 Zookeeper的数据同步机制可以这么简单的解释:
2013-03-15 21:27:27 1438
原创 java 代理机制
java代理机制,从使用者的角度,可以实现针对接口进行调用。代理将针对接口的调用,传递给构造代理对象时传入的调用处理器InvocationHandler。下面举个例子。1,首先定义一个接口类。 package com.bestree.learn;/** * 接口类。 * @author bestree007 * */public interface He
2013-03-15 20:45:31 500
阿里的dubbo的provider和cosumer的例子
2012-06-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人