
JAVA
文章平均质量分 58
hfmbook
毕业于西安交通大学,拥有10年的工作经验,拥有两年多的授课经验。先就职于知名互联网公司担任Team Leader
展开
-
Seata 分布式事务
2PC分布式事务参考https://blog.youkuaiyun.com/hfmbook/article/details/120173076Seata 分布式事务和2PC的区别,2PC在最后提交阶段可能失败,失败了 其他服务事务执行成功,可能存在数据不一致情况。Seata在这里做了一个反向补偿。当某个服务提交失败,其他都提交成功情况,seata会提交一个执行新的sql将数据 回滚到原来的样子。AT 模式一阶段 prepare 行为:在本地事务中,一并提交业务数据更新和相应回滚日志记录。二阶段 commi原创 2021-09-08 20:11:53 · 1109 阅读 · 0 评论 -
分布式事务2PC、3PC过程
2PC1PC阶段这里向协调者注册有事务服务,通常是使用MQ,注册成功后 执行本地事务。提交和回滚是2PC阶段2PC阶段。2PC阶段是提交。首先进行预处理(验证SQL语法,值的范围),然后想协调者commit,协调者返回成功,在执行本地事务。这时候大家能够发现一个问题。这里2PC是弱分布式事务,不不能保证两个事务能够同事执行成功,比如 订单服务的 5commit成功, 支付服务的 5commit失败。那么 订单服务的 事务将不会回滚。发生的概率很低。3PC1PC阶段这里与2PC对比,多了一原创 2021-09-08 10:05:11 · 389 阅读 · 0 评论 -
Java使用HotSpotVirtualMachine和JMXServiceURL获取JVM进程的内存信息
package com.jvm;import com.sun.tools.attach.VirtualMachine;import org.apache.commons.io.IOUtils;import org.apache.commons.lang3.StringUtils;import sun.tools.attach.*;import javax.management.MBeanServerConnection;import javax.management.remote.JMXCo原创 2021-07-21 08:25:04 · 557 阅读 · 0 评论 -
java类反射机制
使用java.beans包下的类进行反射javaBean,代码如下:import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.lang.reflect.Method;public class BeanUtil { public static void readBeanProp原创 2012-06-04 09:39:09 · 847 阅读 · 0 评论 -
java1.6 动态编译代码的例子
package demo;import javax.lang.model.element.Modifier;import javax.lang.model.element.NestingKind;import javax.tools.JavaCompiler;import javax.tools.JavaFileObject;import javax.tools.SimpleJavaF原创 2012-06-04 14:07:09 · 2051 阅读 · 0 评论 -
BigDecimal 货币计算(JAVA)
java中的简单浮点数类型float和double不能够进行运算。不光是Java,在其它很多编程语言中也有这样的问题。在执行下面一段程序我们会看到什么:public class Test { public static void main(String args[]) { System.out.println(0.05 + 0.01)原创 2012-06-05 14:28:28 · 1826 阅读 · 0 评论 -
JAVA诡异的代码
List lst = new ArrayList(); lst.add( 1 ); lst.add("Test004"); List ls = lst ; ls.add(2); for (int i = 0; i < ls.size(); i++) { System.err.println(ls.get(i)); } System.err.pr原创 2012-06-07 14:48:34 · 2137 阅读 · 3 评论 -
java数组反射
java数组反射import java.lang.reflect.Array;public class ArrayUtil { public static void main(String[] args) { Object object = new Object[]{ "1" , 2 , "A" }; printObject( object ) ; printOb原创 2012-06-02 21:26:41 · 1093 阅读 · 0 评论 -
java加密class和解密class加载运行
package csdn.util;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;原创 2012-06-11 14:49:18 · 7127 阅读 · 1 评论 -
JAVA设计模式十二--State(状态模式)
状态模式(State Pattern)是设计模式的一种,属于行为模式。 定义(源于Design Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。意图:允许一个对象在其内部状态改变时改变它的行原创 2012-06-21 16:24:03 · 1278 阅读 · 0 评论 -
JAVA Servlet 上传批量上传大文件
新建类 UploadServletpackage org.action;import java.io.File;import java.io.IOException;import java.util.Iterator;import java.util.List;import javax.servlet.ServletException;import javax.serv原创 2012-06-25 10:28:33 · 4508 阅读 · 2 评论 -
java设计模式十六--Memento(备忘录模式)
备忘录模式定义:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。涉及角色:1.Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。Originator可以根据需要决定Memento存储自己的哪些内部状态。2.Memento(备忘录原创 2012-06-26 14:09:59 · 1609 阅读 · 0 评论 -
自定义JSTL函数
一、定义函数类package org.functions;/** * 自定义jstl函数 * 需要注意: * 方法必需是静态的 * */public class Functions { /** * 截取字符串长度,从0开始截取 * */ public static String subString(String value , int index){ if原创 2012-06-27 15:02:04 · 1301 阅读 · 0 评论 -
如何在字符串中寻找${demo}
public static void main(String[] args) { String formula = "XXXX${date}V${demo}VVV"; String reg = "\\$\\{[^}]+\\}"; Pattern p = Pattern.compile(reg); Matcher matcher =原创 2012-09-08 22:23:06 · 950 阅读 · 0 评论 -
ThreadLocal本地线程
介绍线程程序介绍 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 Threadlocal变量 ThreadLocal很容易让人望文生义,想当然地认为是一个“本地线程”。其实,ThreadLocal并不是一个原创 2013-01-08 16:17:34 · 1149 阅读 · 0 评论 -
cglib 动态生产类原理
主要功能,拦截javaBean的方法,首先创建一个拦截类,实现MethodInterceptor接口。/** * */package org.interceptor;import java.lang.reflect.Method;import net.sf.cglib.proxy.Enhancer;import net.sf.cglib.proxy.MethodInt原创 2013-01-15 16:08:32 · 2678 阅读 · 0 评论 -
java生成二维码
二维码生成辅助类package com.dream.qrcodeen;import java.awt.image.BufferedImage;public class TwoDimensionCodeImage{ BufferedImage bufImg; public TwoDimensionCodeImage(BufferedImage bufImg) { thi原创 2012-12-17 15:50:45 · 1313 阅读 · 0 评论 -
java读取大文件
import java.io.File;import java.io.RandomAccessFile;import java.nio.MappedByteBuffer;import java.nio.channels.FileChannel;public class FileUtils { public static void main(String[] args) throws原创 2013-12-02 17:16:03 · 2382 阅读 · 0 评论 -
java读取文件中文乱码问题
不管文件什么编码格式的,读出来都不会再是乱码 , 希望大家认真读取原创 2013-09-07 05:53:40 · 8338 阅读 · 5 评论 -
java 判断中文是否乱码
import java.util.regex.Matcher;import java.util.regex.Pattern;public class MessyCodeCheck { private static boolean isChinese(char c) { Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);原创 2014-08-19 15:29:52 · 11302 阅读 · 4 评论 -
spring Jdbc自动获取主键。
学习了下springjdbc,感觉挺实用的,相对来说springjdbc 扩展性相当好了import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import java.util.List;import org.springframework.beans.fact原创 2014-11-20 09:28:09 · 5778 阅读 · 0 评论 -
java 图片加水印,设置透明度。说明很详细
package com.yidao.common; import java.awt.AlphaComposite;import java.awt.Graphics2D;import java.awt.Image;import java.awt.RenderingHints;import java.awt.image.BufferedImage;import java.io.F原创 2014-12-16 22:46:40 · 35601 阅读 · 3 评论 -
java 方法超过执行时间后抛出异常
在线程中执行某方法,如果超出执行时间后立即抛出异常。停止该方法继续执行。import java.lang.reflect.Method;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService原创 2014-12-02 14:53:44 · 11171 阅读 · 4 评论 -
java更好的解析Json数据
每次使用JsonObject个某个数据时候,总是抛出异常,这样看见会相当的烦躁。我是不太喜欢 这样抛出 异常 每次都去try cahch public Map parseToMap(JSONObject obj){ Map map = new HashMap(); try{ for(Iterator iterator = obj.keys() ;iterator.hasNe原创 2014-12-18 14:45:55 · 1679 阅读 · 0 评论 -
java 爬虫基本代码
1、httpclient4.3.4 读取网页内容 特别说明:StreamUtils 只是做了简单的关闭流操作,这个类可有自己写,或者直接调用流关闭操作 谢谢package com.haokuaisheng.https;import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.util.原创 2016-04-25 12:07:05 · 6114 阅读 · 0 评论 -
ElasticSearch 安装 和java api
java api 查询和聚合搜索package org.es;import java.net.InetAddress;import java.util.Iterator;import java.util.Map;import org.elasticsearch.action.search.SearchRequestBuilder;import org.elasticsearch.action.原创 2016-07-11 16:11:48 · 4870 阅读 · 0 评论 -
java 代码链接SFTP,上传下载
依赖jar包:<dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.53</version></dependency>import java.io.File;import java.io.FileInputStream;import java.io.F原创 2016-07-21 16:41:17 · 3535 阅读 · 0 评论 -
Linux系统架构(高可用 负载均衡) KeepAlived
一、Linux高可用1.1 说明高可用,当A机器内存爆满B机器无法ping通A机器,这时候B机器就会将B机器的对应的服开启。1.2 安装yum install -y heartbeatyum install -y libnet1.3 配置文件拷贝三个文件,HA机器的机器保持配置一致cd /usr/share/doc/heartbeat-3.0.4cp authkeys ha.cf haresou原创 2016-08-29 11:42:41 · 2480 阅读 · 0 评论 -
Mockito 改写DataSource,从List中查询数据
package org.hp.conf;import java.sql.Connection;import java.sql.ResultSet;import java.sql.Statement;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.原创 2017-01-16 22:47:13 · 2440 阅读 · 0 评论 -
logback 日志分离技术
依赖jar包<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </dependency> <dependency> <groupId>ch.qos.logback</groupId原创 2017-02-08 18:06:38 · 1656 阅读 · 0 评论 -
Spring 注解事务替换xml事务拦截类型
/*事务拦截类型*/@Bean("txSource") public TransactionAttributeSource transactionAttributeSource(){ NameMatchTransactionAttributeSource source = new NameMatchTransactionAttributeSource();原创 2017-02-14 14:05:40 · 1589 阅读 · 0 评论 -
面向对象设计五大原则SOLID
一、S 单一责任原则 单一职责原则(Single Responsibility Principle) 每个方法或者类应当只做一件事情,或者只有一项职责。 二、O开放封闭原则 开放封闭原则(Open Closed Principle)是所有面向对象原则的核心。 三、L 里氏替换原则 父类中凡是实现了的方法(相对于抽象方法而言),实际上是在设定一系列原创 2017-04-17 11:27:20 · 475 阅读 · 0 评论 -
Java Benchmark 基准测试
import java.util.Arrays;import java.util.concurrent.TimeUnit;import org.openjdk.jmh.annotations.Benchmark;import org.openjdk.jmh.annotations.BenchmarkMode;import org.openjdk.jmh.annotations.原创 2017-04-17 11:28:13 · 8973 阅读 · 1 评论 -
初探Spring Security
一、简介Spring Security是Spring社区的一个顶级项目,也是 Spring Boot官方推荐使用的Security框架。除了常规的 Authentication和Authorization之外,Spring Security还 提供了诸如ACLs,LDAP,JAAS,CAS等高级特性以满足复杂场景下的安全需求二、理解1、从AAA说起【中文名称】:鉴权、授权和计费原创 2017-04-17 11:28:41 · 1062 阅读 · 0 评论 -
spring boot 采用https启动
1、生成密钥文件,keytool 是java的一个命令 keytool -genkey -alias hpgary -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650 2、放到spring boot项目的 resource源码包下 3、修改配置文件 ap原创 2017-04-17 11:28:47 · 1383 阅读 · 0 评论 -
Spring Boot Mvc 单元测试
1、开发 都是需要保存测试代码的,mvc也不例外,都需要写测试代码,下面写了一个简单的mvc 但愿测试的代码. import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.sprin原创 2017-04-17 11:28:55 · 1470 阅读 · 0 评论 -
Spring security 安全设置
1、CSRF攻击CSRF 又称跨域请求伪造,攻击方通过伪造用户请求访问受信任站点。 举个例子用户通过表单发送请求到银行网站,银行网站获取请求参 数后对用户账户做出更改。在用户没有退出银行网站情况 下,访问了攻击网站,攻击网站中有一段跨域访问的代码, 可能自动触发也可能点击提交按钮,访问的url正是银行网 站接受表单的url。因为都来自于用户的浏览器端,银行将 请求看作是用户发起原创 2017-04-17 11:29:02 · 4422 阅读 · 0 评论 -
Java EhCache
1、配置文件ehcache-setting.xml <!--缓存配置name:缓存名称。 maxElementsInMemory:缓存最大个数。 eternal:对象是否永久有效,一但设置了,timeout将不起作用。 timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属原创 2017-04-17 11:29:24 · 463 阅读 · 0 评论 -
Spring Boot 动态创建Bean
1、通过注解@Import导入方式创建a、新建MyImportBeanDefinitionRegistrar注册中心import org.springframework.beans.factory.support.BeanDefinitionRegistry;import org.springframework.beans.factory.support.GenericBeanDefi原创 2017-04-17 11:29:33 · 7256 阅读 · 0 评论 -
Java 动态加载jar包
最近在研发一款maven插件一键生成增删改查的插件,需要动态加载 数据库驱动包到内存中import java.io.File;import java.io.IOException;import java.lang.reflect.Field;import java.net.URL;import java.net.URLClassLoader;import org.apache.commons原创 2017-05-27 16:17:58 · 3259 阅读 · 0 评论