
JAVA
clypm
松弛的琴弦,永远奏不出时代的强音
展开
-
利用Canal完成Mysql数据同步Redis
流程Canal的原理是模拟Slave向Master发送请求,Canal解析binlog,但不将解析结果持久化,而是保存在内存中,每次有客户端读取一次消息,就删除该消息。这里所说的客户端,就需要我们写一个连接Canal的程序,持续从Canal获取数据。步骤一、配置Canal参考https://github.com/alibaba/canal【mysql配置】1,配置参数[html] view pla...转载 2018-06-06 19:31:20 · 3815 阅读 · 1 评论 -
java ip地址转换成int
数据库存放,提高数据库性能我们将字符串IP转换成int类型保存!代码如下:// 将127.0.0.1形式的IP地址转换成十进制整数,这里没有进行任何错误处理 public static long ipToLong(String strIp) { long[] ip = new long[4]; // 先找到IP地址字符串中.的位置原创 2015-04-02 14:47:18 · 4917 阅读 · 0 评论 -
Exception.printStackTrace()转换为String输出
package com.test1; import java.io.PrintWriter; import java.io.StringWriter; public class T010 { /** * @param args */ public static void main(String[] args) {原创 2016-08-16 11:59:45 · 680 阅读 · 0 评论 -
org.apache.log4j.Logger 详解
org.apache.log4j.Logger 详解1. 概述1.1. 背景 在应用程序中添加日志记录总的来说基于三个目的 :监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依据;担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。 最普通的做法就是在代码中嵌入许多的打印语句,这些打印语句原创 2016-07-19 11:05:14 · 3860 阅读 · 0 评论 -
lombok 介绍及基本使用方法
Lomboz是一个基于LGPL的开源J2EE综合开发环境的Eclipse插件,对编码,发布,测试,以及debug等各个软件开发的生命周期提供支持,支持JSP,EJB等。Lomboz是Eclipse的一个J2EE的插件,它将很多Java应用服务器、J2EE组件和Web应用开发集成到Eclipse中,可以帮助Java开发者使用Eclipse建立、测试、部署J2EE应用。 在htt转载 2016-06-30 09:02:53 · 428 阅读 · 0 评论 -
java验证码组件Jcaptcha
Jcaptcha验证码生成组件用法1.创建项目JcaptchaDemo2.引入相关.jar文件jcaptcha-1.0-all.jar;commons-logging-1.0.4.jar;commons-collections-2.1.1.jar3.创建GMailEngine,仿照JCaptcha2.0编写GMail验证码样式的图片引擎.,具体的代码转载 2016-05-09 15:55:45 · 1276 阅读 · 0 评论 -
深入理解Java类加载器(1):Java类加载原理解析
1 基本信息 每个开发人员对Java.lang.ClassNotFoundExcetpion这个异常肯定都不陌生,这背后就涉及到了java技术体系中的类加载。Java的类加载机制是技术体系中比较核心的部分,虽然和大部分开发人员直接打交道不多,但是对其背后的机理有一定理解有助于排查程序中出现的类加载失败等技术问题,对理解java虚拟机的连接模型和java语言的动态性都有很大帮助转载 2016-05-19 09:38:54 · 715 阅读 · 0 评论 -
深入理解Java类加载器(2):线程上下文类加载器
1 线程上下文类加载器 线程上下文类加载器(context class loader)是从 JDK 1.2 开始引入的。类 Java.lang.Thread中的方法 getContextClassLoader()和 setContextClassLoader(ClassLoader cl)用来获取和设置线程的上下文类加载器。如果没有通过 setContextClassLo转载 2016-05-19 09:39:53 · 464 阅读 · 0 评论 -
HashMap实现原理分析
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难转载 2016-05-12 15:49:42 · 344 阅读 · 0 评论 -
LogBack在项目中的应用
前言前段时间,将团队框架中的Struts2切换到SpringMVC,做一个系统系统,同时将一些共用组件抽取、独立,团队成员提议使用LogBack记录日志,因之前做的基础组件使用的Log4j,对LogBack不太熟悉,所以自己学习了一下LogBack,学习过程中,发现心仪的中文资料比较少,结合自己开的项目,分享一下LogBack在项目中的应用及自己所遇到的问题。回过头思考使用LogBack的过程转载 2014-12-03 15:32:45 · 631 阅读 · 0 评论 -
Java数据类型和MySql数据类型对应表
java mysql 数据类型对照类型名称显示长度数据库类型JAVA类型JDBC类型索引(int)描述 VARCHARL+NVARCHARjava.lang.String12 CHARN原创 2015-04-02 14:26:08 · 282 阅读 · 0 评论 -
JMS规范及相关实现
JMS规范及相关实现JMS是一种应用于异步消息传递的标准API,作为Java平台的一部分,JMS可以允许不同应用、不同模块之间实现可靠、异步数据通信。一些概念JMS provider An implementation of the JMS interface for a Message Oriented Middleware (MOM). Providers原创 2014-11-06 13:28:46 · 687 阅读 · 0 评论 -
java解析 mysql binlog
在进入正题之前,我们需要知道binlog的event的类型,先来看看自己binlog文件有哪些?其中红色部分为event_type。binlog event 的类型有很多,具体可以参见mysql官方文档:http://dev.mysql.com/doc/internals/en/event-meanings.html(一)Open Replicator中相关的Event类与接口Open Repli...转载 2018-06-06 19:30:12 · 10620 阅读 · 0 评论 -
ConcurrentHashMap原理分析
一、背景:线程不安全的HashMap 因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。 效率低下的HashTable容器 HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下HashTable的效率非常低下。因为当一个线程转载 2017-10-17 10:14:43 · 263 阅读 · 0 评论 -
JAVA中循环删除list中元素(移除list两时间范围外的元素)
印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个误区。下面就来讲一讲。。伸手党可直接跳至文末。看总结。。 JAVA中循环遍历list有三种方式for循环、增强for循环(也就是常说的foreach循环)、iterator遍历。 1、for循环遍历listfo原创 2017-09-02 15:34:34 · 556 阅读 · 0 评论 -
List集合中的对象根据属性排序
集合类List存放的数据,默认是按照放入时的顺序存放的,比如依次放入A、B、C,则取得时候,则也是A、B、C的顺序,实际场景中,有时我们需要根据自定义的规则对List中的元素进行排序,该如何实现呢?看下面小例子:[html] view plain copypackage test.tool.gui.dbtool.util; im原创 2017-07-01 11:39:54 · 311 阅读 · 0 评论 -
java 服务端解决ajax跨域问题
//过滤器方式 可以更改为拦截器方式public class SimpleCORSFilter implements Filter { public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {原创 2017-05-15 14:13:29 · 432 阅读 · 0 评论 -
HashMap、TreeMap、Hashtable、HashSet和ConcurrentHashMap区别
import java.util.HashMap;import java.util.Iterator;import java.util.Map;public class MapTest { public static void main(String args[]) { Map map = new HashMap(); for (int i = 0; i < 2000; i原创 2014-04-16 14:02:33 · 690 阅读 · 0 评论 -
log4j 产生的日志位置设置catalina.home、catalina.base
这两个属性仅在你需要安装多个Tomcat实例而不想安装多个软件备份的时候使用,这样能节省磁盘空间。 以Tomcat6.0为例,其Tomcat目 录结构如下:bin (运行脚本) conf (配置文件) lib (核心库文件) logs (日志目录) temp (临时目录)webapps (自动装载的应用程序的目录) work (JVM临时文件目录[Java.io.t转载 2017-04-01 14:57:24 · 3221 阅读 · 0 评论 -
Java Map遍历方式的选择
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难转载 2016-03-29 10:09:15 · 337 阅读 · 0 评论 -
微信公众平台java开发详解(工程代码+解析)
说明:本次的教程主要是对微信公众平台开发者模式的讲解,网络上很多类似文章,但很多都让初学微信开发的人一头雾水,所以总结自己的微信开发经验,将微信开发的整个过程系统的列出,并对主要代码进行讲解分析,让初学者尽快上手。在阅读本文之前,应对微信公众平台的官方开发文档有所了解,知道接收和发送的都是xml格式的数据。另外,在做内容回复时用到了图灵机器人的api接口,这是一个自然语言解析的开放平台转载 2016-12-05 10:46:02 · 458 阅读 · 0 评论 -
java数据库等——乱码问题解决办法
中文乱码解决方案:数据库乱码:UTF-8对中文用3个字节来表示String s =”飞翔”;byte[] utf8 = s.getBytes(“utf-8”);//获得utf-8编码的字节值System….(new String(utf8,”gbk”);//用GBK编码格式对UTF-8编码格式的字节数组进行解码,将产生乱码。 查看数据库的字符集原创 2014-08-22 16:37:59 · 1227 阅读 · 0 评论 -
javamail发送邮件的简单实例
今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题。为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用以下三段代码是我的全部代码,朋友们如果想用,直接复制即可。原创 2014-07-24 16:14:00 · 434 阅读 · 0 评论 -
BigDecimal的加减乘除
BigDecimal类BigDecimal的加减乘除import java.math.BigDecimal; public class Arith { /** * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 * 确的浮点数运算,包括加减乘除和四舍五入。 */ //默认除法运算精度 private static final int DE原创 2014-12-31 14:33:55 · 859 阅读 · 0 评论 -
java反射方法method.setAccessible(true)
java代码中,常常将一个类的成员变量置为private 在类的外面获取此类的私有成员变量的value时,需要注意: 测试类:public class AccessibleTest { private int id; private String name; public Accessible转载 2015-01-15 10:09:57 · 11107 阅读 · 0 评论 -
Java自定义注解和运行时靠反射获取注解
java自定义注解Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。包含在 java.lang.annotation 包中。1、元注解元注解是指注解的注解。包括 @Retention @Target @Document @Inherited四种。原创 2014-09-24 10:24:08 · 748 阅读 · 0 评论 -
java枚举类型
public class TestEnum { /*最普通的枚举*/ public enum ColorSelect { red, green, yellow, blue; } /* 枚举也可以象一般的类一样添加方法和属性,你可以为它添加静态和非静态的属性或方法,这一切都象你在一般的类中做的那样. */ publi原创 2014-08-28 14:52:21 · 416 阅读 · 0 评论 -
Java内存泄露的理解与解决
Java内存管理机制在C++ 语言中,如果需要动态分配一块内存,程序员需要负责这块内存的整个生命周期。从申请分配、到使用、再到最后的释放。这样的过程非常灵活,但是却十分繁琐,程序员很容易由于疏忽而忘记释放内存,从而导致内存的泄露。 Java 语言对内存管理做了自己的优化,这就是垃圾回收机制。 Java 的几乎所有内存对象都是在堆内存上分配(基本数据类型除外),然后由 GC ( ga转载 2014-09-09 10:30:05 · 357 阅读 · 0 评论 -
StringUtils的isBlank与isEmply
StringUtils的isBlank与isEmply1. public static boolean isEmpty(String str) 判断某字符串是否为空,为空的标准是 str==null 或 str.length()==0 下面是 StringUtils 判断是否为空的示例: StringUtils.isEmpty(null) = true St原创 2014-07-31 10:38:55 · 349 阅读 · 0 评论 -
JDBC获取新插入记录id的三种方法
在一对多的关联操作中,通常在一方插入记录后,需要获取到当前记录的id,以方便进行多方的插入操作。要解决这一问题,在JDBC中至少有三种不同的实现方法:1.在插入语句后添加一条查询,利用resultset来得到id号psmt = con.prepareStatement ("insert into orders (receiver,address,telephone原创 2014-07-23 14:18:07 · 1580 阅读 · 0 评论 -
JAVA Date 时间与时间相差计算
Date date = new Date("2014/1/10 18:20"); Date date2 = new Date("2014/1/11 3:5"); long temp = date2.getTime() - date.getTime(); //相差毫秒数 long hours = temp / 1000 / 3600;原创 2014-05-07 11:11:26 · 784 阅读 · 0 评论 -
Java代码执行顺序(初始化块-成员变量(static、fianl)-构造)
一、java代码执行顺序(理解形式):1、父类静态代码块->子类静态代码块(只执行一次); 2、父类成员变量的初始化或普通代码块->父类构造函数; 3、子类成员变量的初始化或普通代码块->子类原创 2014-03-20 11:23:17 · 655 阅读 · 0 评论 -
java枚举使用
Java 中的枚举类型采用关键字enum 来定义,从jdk1.5才有的新类型,所有的枚举类型都是继承自Enum 类型。要了解枚举类型,建议大家先打开jdk 中的Enum 类简单读一下,这个类里面定义了很多protected 方法,比如构造函数,如果要使用这些方法我们可以把枚举类型定义到当前类中。每个枚举类型,都有自己的名字和顺序,当我们输出一个枚举类型的时候,会输入枚举类型的name ,具体可以参原创 2015-03-04 10:11:30 · 350 阅读 · 0 评论 -
Java NIO原理 图文分析及代码实现
Java NIO原理图文分析及代码实现 前言: 最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。可以参考:http://baike.baidu.com/view/32726.htm )机制时,发现hadoop的RPC机制的实现主要用到了两个技术:转载 2015-04-18 21:07:41 · 396 阅读 · 0 评论 -
Java中hashCode的作用
以下是关于HashCode的官方文档定义:[plain] view plain copyhashcode方法返回该对象的哈希码值。支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表。 hashCode 的常规协定是: 在 Java 应用程序执行期间,在同一对象上多次调用 has转载 2016-03-29 10:13:17 · 284 阅读 · 0 评论 -
Java8 Lambda表达式教程
转自:http://blog.youkuaiyun.com/ioriogami/article/details/127821411. 什么是λ表达式 λ表达式本质上是一个匿名方法。让我们来看下面这个例子: public int add(int x, int y) { return x + y; }转成λ表达式后是这个样子:转载 2015-12-29 13:42:24 · 2487 阅读 · 0 评论 -
理解Java的static import静态引入机制
J2SE 1.5里引入了“Static Import”机制,借助这一机制,可以用略掉所在的类或接口名的方式,来使用静态成员。本文介绍这一机制的使用方法,以及使用过程中的注意事项。 在Java程序中,是不允许定义独立的函数和常量(当然,准确的说,只是被final修饰、只能赋值一次的变量)的。即使从它们本身的功能来看,完全不需要依附于什么东西,也要找个类或接口作为挂靠单位才行(在类里可以转载 2016-03-28 10:22:24 · 563 阅读 · 0 评论 -
java forEach实现原理
java.util.List实现了java.lang.Iterable接口.jdk api文档中是这样描述Iterable接口的:实现这个接口允许对象成为 "foreach" 语句的目标。不过咋一看Iterable接口并没啥特别之处,只是定义了一个迭代器而已。[java] view plain copypublic interface原创 2016-03-28 10:19:23 · 413 阅读 · 0 评论 -
java获取工作日
import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.List;public class Test { /** * 获取某年某月内工作日 * * @param year * @param month * @return原创 2016-01-27 16:14:39 · 2813 阅读 · 0 评论 -
StringUtils方法全集
org.apache.commons.lang.StringUtils中方法的操作对象是java.lang.String类型的对象,是JDK提供的String类型操作方法的补充,并且是null安全的(即如果输入参数String为null则不会抛出NullPointerException,而是做了相应处理,例如,如果输入为null则返回也是null等,具体可以查看源代码)。 除了构造器,St转载 2015-06-08 13:56:09 · 471 阅读 · 0 评论