Java
文章平均质量分 88
ZeekerLin
技术 产品 管理
——若要前行,就得离开你现在停留的地方
展开
-
Java集成DataX
Java集成DataXDataX介绍直接看官网代码集成DataX编译打包依赖集成编写测试代码1.新建一个测试job文件,testjob.json2.编写一个main方法3.运行测试参考demo代码下载DataX介绍直接看官网DataX官网代码集成DataX编译打包下载了DataX源代码后,本地编译打包,核心模块是 core、common、transformer必须要达成jar包,另外其他模块都是插件包,根据实际需要进行打包,本用例使用到了streamreader和streamwriter,因此对这原创 2020-07-17 09:40:29 · 4126 阅读 · 5 评论 -
谷歌开源内部代码评审规范
谷歌成立于 1998 年,以搜索起家,到目前为止已经发展了 21 年。在过去的 21 年中,谷歌不断创新,开发了七款产品,拥有超过 10 亿级活跃用户,谷歌的工程师文化一直被认为是优秀且特别的。近日,谷歌开源了其内部一直在使用的代码评审规范,InfoQ 对其进行了翻译和整理,分享给广大开发者,看看谷歌工程师是如何评审代码的。代码评审标准代码评审的主要目的是确保代码库的整体质量随时间推移逐步...转载 2019-10-18 17:28:20 · 377 阅读 · 1 评论 -
java之redis篇(spring-data-redis整合)
redis的知识:官网1,利用spring-data-redis整合项目使用的pom.xml:project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.转载 2016-02-23 17:19:38 · 1146 阅读 · 0 评论 -
Restful形式接口文档生成之Swagger与SpringMVC整合手记
笔者目前正在搭建一套API服务框架,考虑到客户端能够更方便的调用API服务(这里说的更方便是指避免不厌其烦地解说各接口需要的参数和返回结果),于是决心为每个接口生成详细的说明文档。网上搜索了一下,发现了Swagger这个东西,感觉不错,界面也比javadoc生成的页面要美观,而且网上关于Swagger和springmvc整合的文章不少(遗憾的是大多雷同且不完整)。本文详细介绍Swagger和Spr转载 2016-02-24 10:21:10 · 36753 阅读 · 17 评论 -
用javascript与java进行RSA加密与解密
这几天一直做安全登录,网上查了好多资料,不尽如意。具体实现思路如下:1。服务端生成公钥与私钥,保存。2。客户端在请求到登录页面后,随机生成一字符串。3。后此随机字符串作为密钥加密密码,再用从服务端获取到的公钥加密生成的随机字符串。4。将此两段密文传入服务端,服务端用私钥解出随机字符串,再用此私钥解出加密的密文。这其中有一个关键是解决服务端的公钥,传入客户端,客户端用此公钥加转载 2016-02-26 17:41:25 · 9827 阅读 · 2 评论 -
Apache Shiro 快速入门教程,shiro 基础教程
第一部分 什么是Apache Shiro1、什么是 apache shiro :Apache Shiro是一个功能强大且易于使用的Java安全框架,提供了认证,授权,加密,和会话管理如同 Spring security 一样都是是一个权限安全框架,但是与Spring Security相比,在于他使用了和比较简洁易懂的认证和授权方式。2、A转载 2016-04-26 15:47:46 · 653 阅读 · 0 评论 -
利用spring-websocket包搭建websocket服务
折腾了将近一天,终于搭建好websocket服务,中间遇到不少的坑,现在记录一下,也供他们参考少走弯路。开发环境:4.2.5.RELEASE Tomcat8 jdk8 mavenspring搭建websocket有两种方式:1、利用javaee-api以注解的形式搭建,见上一篇博文《spring+tomcat8实现websocket》2、利用sprin原创 2016-04-07 16:02:04 · 47828 阅读 · 5 评论 -
SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
使用SSM(Spring、SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方。之前没有记录SSM整合的过程,这次刚刚好基于自己的一个小项目重新搭建了一次,而且比项目搭建的要更好一些。以前解决问题的过程和方法并没有及时记录,以后在自己的小项目中遇到我再整理分享一下。这次,先说说三大框架整合过程。个人认转载 2016-02-19 15:34:16 · 1519 阅读 · 0 评论 -
Spring中的事务控制
Chapter 1. Spring中的事务控制(Transacion Management with Spring)Table of Contents1.1. 有关事务(Transaction)的楔子1.1.1. 认识事务本身1.1.2. 初识事务家族成员1.2. 群雄逐鹿下的Java事务管理1.2.1. Java平台的局部事务支持1.2.2. Java平台的分布式事务转载 2015-01-19 11:27:45 · 21303 阅读 · 0 评论 -
用spring MVC 生成Excel和PDF
HTML页面并不总是向用户显示数据输出的最好方式,Spring支持从数据动态生成PDF或Excel文件,并使这一过程变得简单。文档本身就是视图,从服务器以流的方式加上内容类型返回文档,客户端PC只要运行电子表格软件或PDF浏览软件就可以浏览。下面是一个简单实现的例子:界面两个button,一个实现excel ,一个pdf.为了使用Excel电子表格,你需要在你的classpath中加入‘原创 2008-11-27 11:57:00 · 22949 阅读 · 1 评论 -
Java 8新特性终极指南
Java 8新特性终极指南 本文由 ImportNew - 刘 家财 翻译自 javacodegeeks。欢迎加入Java小组。转载请参见文章末尾的要求。编者注:Java 8已经公布有一段时间了,种种迹象表明Java 8是一个有重大改变的发行版。在Java Code Geeks上已经有大量的关于Java 8 的教程了,像玩转Java 8——lambda转载 2016-12-13 15:04:10 · 378 阅读 · 0 评论 -
Lombok 安装、入门 - 消除冗长的 java 代码
前言: 逛开源社区的时候无意发现的,用了一段时间,觉得还可以,特此推荐一下。 lombok 提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码。特别是相对于 POJO,光说不做不是我的风格,先来看看吧。lombok 的官方网址:http://projectlombok.org/ lombok 其实到这里我就介绍完了,开个玩笑,其实转载 2016-12-28 11:27:52 · 579 阅读 · 0 评论 -
基于MySQL实现按距离排序、范围查找
简介现在几乎所有的O2O应用中都会存在“按范围搜素、离我最近、显示距离”等等类似的功能,那这样的功能是怎么实现的呢?本文提供了基于MySQL的实现方式,同样适用于其它数据库。本文不分析,只讲怎么实现,有关分析的文章可以看参考链接。实现为了方便下面说明,先给出一个初始表结构:CREATE TABLE `customer` ( `id` INT(11) UNSIGN转载 2016-05-13 20:44:37 · 6505 阅读 · 0 评论 -
并发编程之ThreadLocal、Volatile、synchronized、Atomic关键字扫盲
前言对于ThreadLocal、Volatile、synchronized、Atomic这四个关键字,我想一提及到大家肯定都想到的是解决在多线程并发环境下资源的共享问题,但是要细说每一个的特点、区别、应用场景、内部实现等,却可能模糊不清,说不出个所以然来,所以,本文就对这几个关键字做一些作用、特点、实现上的讲解。1、Atomic作用对于原子操作类,Java的conc转载 2017-05-10 11:43:46 · 520 阅读 · 0 评论 -
利用缓存实现分布式并发锁
本文介绍是用Tair实现,其实其他缓存如Redis道理也是一样的。最近大量使用到了Tair来控制并发,有点心得,总结如下。利用Tair实现全局并发锁现在基本上线上服务器都是集群环境,那么当我们需要对中心化数据(例如:Tair、数据库)的同一内容进行读写时就会碰到并发问题,这是一种非常常见的需求。解决并发问题的方法无非有两种,在并发点控制并发或者在并发源头控制。图转载 2017-06-27 09:23:27 · 752 阅读 · 0 评论 -
Java 中的悲观锁和乐观锁的实现
锁(locking)业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算处理中,我们希望针对某个cut-off时间点的数据进行处理,而不希望在结算进行过程中(可能是几秒种,也可能是几个小时),数据再发生变化。此时,我们就需要通过一些机制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓的“锁”,即给我们选定的目标数据上锁,使其无法转载 2016-02-17 22:54:22 · 22378 阅读 · 3 评论 -
Java NIO原理图文分析及代码实现
前言: 最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。可以参考:http://baike.baidu.com/view/32726.htm )机制时,发现hadoop的RPC机制的实现主要用到了两个技术:动态代理(动态代理可以参考博客:http:/转载 2015-09-18 17:16:35 · 541 阅读 · 0 评论 -
Java简单加解密
无密钥package cn.com.babe;import java.io.IOException;public final class StringUtil{ /** * Encode a string using Base64 encoding. Used when storing passwords as * cookies.转载 2013-10-28 14:16:09 · 1255 阅读 · 0 评论 -
JFreeChart存储为PDF,支持中文显示
下面的代码是从jfreechart的Demo中复制后做了修改,demo中的代码存储pdf时,中文文字不能显示,解决的办法是将 //DefaultFontMapper mapper = new DefaultFontMapper();语句替换为 AsianFontMapper mapper = new AsianFontMapper("STSong-Light","Uni原创 2008-11-27 11:58:00 · 1513 阅读 · 0 评论 -
Java 编程技术中汉字问题的分析及解决
在基于 Java 语言的编程中,我们经常碰到汉字的处理及显示的问题。一大堆看不懂的乱码肯定不是我们愿意看到的显示效果,怎样才能够让那些汉字正确显示呢?Java语言默认的编码方式是UNICODE,而我们中国人通常使用的文件和数据库都是基于GB2312或者BIG5等方式编码的,怎样才能够恰当地选择汉字编码方式并正确地处理汉字的编码呢?本文将从汉字编码的常识入手,结合Java编程实例,分析以上两个转载 2008-11-27 11:49:00 · 664 阅读 · 0 评论 -
eclipse配置反编译插件
Java Decompiler Plugin For Eclipse IDE1. 下载JAD , 1.5.8版本的jad在 http://www.softpedia.com/progDownload/JAD-Download-85911.html 将展开后的jad.exe放到某个目录,例如 c:/jad/jad.exe2. 下载JADClipse插件ht转载 2014-09-12 14:28:24 · 702 阅读 · 0 评论 -
JVM调优总结-调优方法
JVM调优工具Jconsole,jProfile,VisualVMJconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。详细说明参考这里 JProfiler:商业软件,需要付费。功能强大。详细说明参考这里 VisualVM:JDK自带,功能强大,与JProfiler类似。推荐。转载 2014-11-27 16:00:39 · 567 阅读 · 0 评论 -
JVM调优总结 -Xms -Xmx -Xmn -Xss
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java -Xmx3550m -Xms355转载 2014-11-27 16:43:43 · 653 阅读 · 0 评论 -
Java 并发
1 什么是并发问题。多个进程或线程同时(或着说在同一段时间内)访问同一资源会产生并发问题。银行两操作员同时操作同一账户就是典型的例子。比如A、B操作员同时读取一余额为1000元的账户,A操作员为该账户增加100元,B操作员同时为该账户减去 50元,A先提交,B后提交。 最后实际账户余额为1000-50=950元,但本该为 1000+100-50=1050。这就是典型的并发问题。转载 2014-12-25 16:16:02 · 732 阅读 · 0 评论 -
Web系统大规模并发——电商秒杀与抢购
电商的秒杀和抢购,对我们来说,都不是一个陌生的东西。然而,从技术的角度来说,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要。这次我们会关注秒杀和抢购的技术实现和优化,同时,从技术层面揭开,为什么我们总是不容易抢到火车票的原因? 一、大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,转载 2014-12-25 16:34:05 · 5779 阅读 · 5 评论 -
Java代码性能调优
一、类和对象使用技巧1、尽量少用new生成新对象 用new创建类的实例时,构造雨数链中所有构造函数都会被自动调用,操作速度较慢。在某些时候可复用现有对象。比如在进行大量St rillg操作时,可用StringBuffer娄代替String类,以避免生成大量的对象。用 new关键词创建类的实例时,构造函数链中的所有构造函数都会被自动调用。但如果一个对象实现了 Clone转载 2014-12-25 21:21:01 · 9729 阅读 · 1 评论 -
Java POI 导入Excel并解析
项目上碰到需要导入Excel表的数据,主要包括web端上传部分和spring后端代码。 1、Web页面代码 ,注意form里需增加encType="multipart/form-data" 2、spring后台接收 参数接收中增加@RequestParam("excelFile")MultipartFile excelFile原创 2015-04-16 11:42:25 · 16819 阅读 · 0 评论 -
Ehcache配置详解及CacheManager使用
缓存配置 name:缓存名称。 maxElementsInMemory:缓存最大个数。 eternal:对象是否永久有效,一但设置了,timeout将不起作用。 timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲转载 2015-06-04 17:35:30 · 2657 阅读 · 0 评论 -
Jedis几个简单测试例子
package redis.test;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;import java.util.HashMap;import java.util.Iterator;import jav原创 2014-12-08 11:28:07 · 47895 阅读 · 3 评论 -
代码规范工具-Checkstyle使用手册
现在很多开源工具都可以对代码进行规范审核,比较流行的有以下几款,大致给个简单介绍。 PMD:是一款采用BSD协议发布的Java程序代码检查工具,可以做到检查Java代码中是否含有未使用的变量、是否含有空的抓取块、是否含有不必要的对象等。 FindBugs:是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。 Check转载 2015-09-30 11:37:10 · 787 阅读 · 0 评论 -
FindBugs插件的安装与使用
1 什么是FindBugsFindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。不是通过分析类文件的形式或结构来确定程序的意图,而是通常使用 Visitor 模式来鉴别代码是否符合一些固定的规范。2 如何安装FindBugs?作为Eclipse的一个插件,可以将Fi转载 2015-09-30 11:35:39 · 430 阅读 · 0 评论 -
常用 Java 静态代码分析工具的分析与比较
简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能、特性等方面对它们进行分析和比较,希望能够帮助 Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中。引言在 Java 软件开发过程中,开发团队往往要花费大量的时间和精力发现转载 2015-09-30 16:11:33 · 599 阅读 · 1 评论 -
Java中字符和byte数组之间的相互转换
Java与其他语言编写的程序进行tcp/ip socket通讯时,通讯内容一般都转换成byte数组型,java在字符与数组转换也是非常方便的; 1、将字符转换成byte数组 String str = "罗长"; byte[] sb = str.getBytes(); 2、将byte数组转换成字符 byte[] b={(byte)0xB8,(byte原创 2011-06-24 16:35:00 · 33240 阅读 · 3 评论