自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

窗边冷月光

追寻清晨的第一缕光。

  • 博客(53)
  • 资源 (10)
  • 问答 (1)
  • 收藏
  • 关注

原创 Spring 重试机制 @Retryable

2、在启动类或者方法所在的类上添加注解@EnableRetry3、在需要重试的方法上添加注解@Retryable,示例如下:@Retryable注解中的参数说明:maxAttempts :最大重试次数,默认为3,如果要设置的重试次数为3,可以不写;value:抛出指定异常才会重试include:和value一样,默认为空,当exclude也为空时,默认所以异常exclude:指定不处理的异常backoff:重试等待策略,默认使用@Backoff的value默认为1000L@Backo

2022-06-01 16:49:16 5442 1

原创 Java编程珠玑(202205)

stream groupBy 分组List<Score> list = Lists.newArrayList(new Score().setNo("001").setNum(1), new Score().setNo("001").setNum(1), new Score().setNo("002").setNum(1));// 按照key分组,value为集合Map<String, List<Score>> map = list.stream()

2022-05-13 17:23:38 439

原创 Redis分布式锁的正确实现 --集群版

为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件:1、互斥性。在任意时刻,只有一个客户端能持有锁。2、不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。3、具有容错性。只要大部分的Redis节点正常运行,客户端就可以加锁和解锁。4、解铃还须系铃人。加锁和解锁必须是同一个客户端,客户端自己不能把别人加的锁给解了。package...

2020-04-26 19:58:18 707

原创 Redis分布式锁的正确实现

为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件:1、互斥性。在任意时刻,只有一个客户端能持有锁。2、不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。3、具有容错性。只要大部分的Redis节点正常运行,客户端就可以加锁和解锁。4、解铃还须系铃人。加锁和解锁必须是同一个客户端,客户端自己不能把别人加的锁给解了。package...

2019-11-15 12:13:00 285

原创 深复制和浅复制

对象的复制java除了用new来创建对象,还可以通过clone来复制对象。那么这两种方式有什么相同和不同呢?newnew操作符的本意是分配内存。程序执行到new操作符时,首先去看new操作符后面的类型,因为知道了类型,才能知道要分配多大的内存空间。分配完内存之后,再调用构造函数,填充对象的各个域,这一步叫做对象的初始化,构造方法返回后,一个对象创建完毕,可以把他的引用(地址)发布到外...

2019-10-05 11:39:22 206

原创 关于zip压缩包日志查询、统计、导出

1.由于没有权限创建文件,也就无法导出输出日志文件,需要找运维帮忙导出2.举个栗子:查询ZIP日志文件中此提示的日志:【创建人】保存出现异常2.1查找Zip压缩包中的字符,先把中文转成Unicode编码,’‘需转义为’\’,忽略大小写查’邮寄’ -->转成Unicode编码 ‘\u90ae\u5bc4’ -->加转义符 ‘\\u90ae\\u5bc4’ -->加忽略...

2019-09-29 19:02:18 3218

原创 Java 集合或数组转变为逗号分隔的字符串的几种方式

首先,创建一个集合List<String> list = Lists.newArrayList(null, "bob", "jack");1、自己编码实现 public static <T> String join(List<T> list, String splitStr) { if (CollectionUtils.isEmp...

2019-07-17 15:08:01 9325 1

原创 Java工具类 - 根据左上角坐标和右下角坐标裁剪图片

package cut;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;import javax.imageio.ImageIO;import java.awt.image.BufferedImage;import java.io.*;import java.util.Arrays;/** * 根据左上角...

2019-04-19 12:30:29 11686 1

原创 分批执行工具类

适合于分批获取数据,分批执行。比如一些接口比较耗时,可以将参数列表分成几次调用。package com.tgb.hz.utils;import org.apache.commons.collections.CollectionUtils;import org.apache.commons.lang3.ArrayUtils;import java.util.ArrayList;im...

2019-03-14 20:46:18 380

原创 Java编程珠玑(201903)

1、初始化一个对象的简便方式Student stu = new Student(){{ setName("张三");}};2、重新组合后去重List&lt;String&gt; names = list.stream().map(Student::getName).distinct().collect(Collectors.toList());3、根据某一属性对集合去重list ...

2019-03-14 20:38:39 700

原创 Java程序员2019面试问题汇总

第一部分1、分布式网关限流、分流;限流算法有哪些?延伸:(在开发高并发系统时,有三把利器用来保护系统:缓存、降级和限流。)2、redis存储结构,为什么快3、数据库索引存储结构,索引怎么建?4、Java类加载过程5、Dubbo有什么协议?6、序列化有什么方式7、分布式怎么保证一致性8、CurrentHashMap通过什么保证了线程安全9、HashMap存储结构,通过什么去找到这个...

2019-03-14 18:59:45 1460 2

原创 IDEA启动不了如何解决

报错:解决方案:找到 项目文件夹/.idea/workspace.xml搜索这句话 &lt;component name="PropertiesComponent"&gt;在里面加入下面一行代码,表示动态回去Java编译路径 &lt;property name="dynamic.classpath" value="true" /&gt;...

2019-02-22 17:23:50 5589

原创 stream 和 parallelStream

parallelStream是一个并行执行的流.它通过默认的ForkJoinPool,可能提高你的多线程任务的速度.parallelStream的作用Stream具有平行处理能力,处理的过程会分而治之,也就是将一个大任务切分成多个小任务,这表示每个任务都是一个操作。效率对比// 初始化2千万个元素List&lt;Integer&gt; list = new ArrayList&lt;...

2018-12-06 18:00:05 4048

原创 linux之 grep "xxx" * | wc -l 命令

查找某文件夹下所有文件中某个字符的个数grep 'xxx' * | wc -l查看某文件夹下文件的个数ls -l |grep &amp;amp;quot;^-&amp;amp;quot;|wc -l或find ./company -type f | wc -l查看某文件夹下文件的个数,包括子文件夹里的。ls -lR|grep &amp;amp;quot;^-&amp;amp;quot;|wc -l查看某文件夹下文件夹的个数,包括子文件夹里的。

2018-12-01 06:44:54 23260

原创 BigDecimal add方法比较坑的问题:调用add后,求和结果没变

// 这篇随笔是为了提醒自己避免重复错误// 原先的代码是这样的,想着输出会是9.00,可是结果却是0.00BigDecimal day_fee = new BigDecimal("0.00");day_fee.add( new BigDecimal("9.00"));System.out.print("day_fee:" + day_fee);// 正确的代码应该是这样的,输出的是9...

2018-10-19 11:32:46 8351 3

原创 关于 BigDecimal构造函数说明, 防踩坑

对于精确值计算应该使用 BigDecimalJDK7中 BigDecimal(double val) 构造方法的结果有一定的不可预知性,例如:new BigDecimal(0.1)表示的不是 0.1 而 0.1000000000000000055511151231257827021181583404541015625这是因为0.1无法准确的表示为double。因此应该使用 new Big...

2018-09-27 11:21:09 839

原创 包装类之equals

/* * 【强制】所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较 说明:对于 Integer var = ? 在-128 至 127 范围内的赋值, Integer 对象是在IntegerCache . cache 产生,会复用已有对象,这个区间内的 Integer 值可以直接使用==进行判断,但是这个区间之外的所有...

2018-09-08 19:29:59 2825

原创 Mybatis 常用语法

likesubject_name LIKE CONCAT(CONCAT('%', #{subjectName,jdbcType=VARCHAR}), '%')in&amp;amp;amp;amp;amp;lt;if test=&amp;amp;amp;amp;quot;status != null&amp;amp;amp;amp;quot;&amp;amp;amp;amp;amp;gt; and status in

2018-09-06 17:40:36 2095

原创 去大公司还是去小公司工作?

去大公司还是小公司工作?这个问题问大多数 IT 人都会选择前者。如果换一个问法,去大公司还是去初创公司(Startup)工作?或许有极小一部分人能改变一下决定。对于 IT 人来说,选择到大公司工作的理由可能有:觉得「钱多人傻,干嘛不去?」;有人认为 「机会多,有发展」; 也有人被小公司的眉毛胡子一把抓吓怕了,认为大公司「正规一些」。或是觉得「有挑战,起码几千万用户,数千台机器,数亿 PageV...

2018-08-10 18:11:00 742

原创 Java stream filter过滤 之 Long类型 失败

有这样一个问题public class Student { private Long stuId; private String name; private Integer age; // 省略getter、setter}public class StudentDaoImpl implements StudentDao { privat...

2018-08-10 16:32:19 2341

转载 maven之scope属性

在POM中,&lt;dependency&gt;中还引入了&lt;scope&gt;,它主要管理依赖的部署。目前&lt;scope&gt;可以使用5个值: compile,缺省值,适用于所有阶段,会随着项目一起发布。 provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。 runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段...

2018-08-07 10:28:36 116

原创 MySQL替换回车符\n

SELECT REPLACE(name, '\\n', '') FROM table_name;

2018-07-09 17:55:16 7260

原创 FastJSON.toJSONString() 转换对象,Long类型数据发生改变

在使用FastJSON转换对象时,遇到一个问题: 接口返回的Id是:81043452862799872,但是经过控制器然后传到页面变成了81043452862799870, 导致后续调用失败。 找了很久才发现是因为这个原因。解决方案:在获取接口数据的时候把Long类型转换为String类型,这样子就OK了。...

2018-07-06 11:50:34 10305

原创 MybatisGenerator的Maven插件配置

pom.xml 配置&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.or...

2018-06-12 14:59:55 445

原创 谈谈我对服务化的理解

就目前来说,大部份开发者把一个Dubbo接口,或者一个RPC的调用当做服务化来理解,就我个人来说,这是非常不对的一个理解,Dubbo,RPC充其量只能算是一个接口调用,离服务化还差着十万八千里。那么我理解的服务化是什么呢?我理解的有如下几点:服务化无关远程,本地,没有Dubbo,RPC,也一样要有服务化。业务边界清晰高内聚,低耦合服务可复用 就拿很多老代码来说,就跟记流水账...

2018-04-18 11:15:18 8313

原创 Java程序员需要充电的技术清单

Spring Spring Boot Spring Boot Test分布式 集群 微服务 dubbo zookeeper Spring cloud disconf(分布式配置中心)消息队列 kafka rabbitMQ activeMQ缓存 Redis Mongo DB memcached搜索 Lucene Elasticsearch...

2018-04-18 11:04:29 868 1

原创 Python爬取网易云音乐歌单歌曲

注意点 网易云音乐对请求参数做了加密# 从网易云音乐下载歌单歌曲# 参考了这些网址# https://blog.csdn.net/Ciiiiiing/article/details/62434438# https://github.com/kunkun1230/Python-/tree/master/%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%...

2018-04-17 16:14:25 2134

原创 IDEA Maven Web项目的install和run

首先,进入 Run -&gt; Edit Configurations -&gt; Add New Configuration 添加两个Maven,分别取名为instal、runinstallParamsters: Working directory:项目的路径,如果是多模块项目,那就是最外层的项目路径。 Command line:clean installRunne...

2018-04-17 15:11:32 2526

原创 根据查询条件开始时间、结束时间查询数据库,并且数据库中也包含开始时间、结束时间字段

需求: 根据开始时间和结束时间查询数据库一段时间内的数据,并且数据库也有两个字段,一个开始时间和一个结束时间。要根据数据库的时间字段来查询。例如: 数据库字段:start_time,end_time 查询条件:startTime、endTime有三种情况只输入开始时间end_time &gt;= startTime只输入结束时间end_tim...

2018-03-27 15:44:13 13787 1

原创 家庭网络环境下基于OSGI的灵活授权

摘要:在家庭网络环境下,OSGi平台在控制不同用户进行访问时,授权就显得非常重要。OSGi平台虽然支持基于角色的访问控制(RBAC),但并不支持RBAC模型中的所有功能。本文针对OSGi平台动态部署不足的问题,通过增加了相对角色的概念并使用委托模型激活了其访问控制,提出了一个多样化的访问控制机制,扩展了OSGi平台现有的授权机制。 关键词:授权;OSGi;RBAC;委托模型;访问控制

2017-11-24 15:56:20 270

原创 Java类的执行顺序、final的用法

———-java类的初始化顺序———– 1、静态变量 2、静态代码块 3、main方法 4、类的属性 5、代码块 6、构造方法——如果有父类则是:——— 1、父类–静态变量 2、父类–静态代码块 3、子类–静态变量 4、子类–静态代码块 5、父类–属性 6、父类–代码块 7、父类–构造方法 8、子类–属性 9、子类–代码块 10、子类–构造方法注意: 1、如果Tes

2017-08-21 09:56:41 574

原创 2年Java面试提问总结

简历提了一些Ajax和struts的问题数据库主键的增长策略Struts的type?为什么用Struts;session和cookie的区别,简介ajax 1.jsp有哪些内置对象?2.jsp的四个作用域3."".equals a 和a.equals("")有什么区别?4.form表单提交的get和post有什么区别?

2017-08-18 20:44:24 305

原创 交换数据表两个字段值 | SQL

UPDATE temp_ent_lyew t1,temp_ent_lyew t2 SET t1.latitude=t1.longitude,t2.longitude=t2.latitudewhere t1.latitude is not null and t1.longitude is not null and t2.latitude is not null and t2.longitude i

2017-08-18 20:42:34 796

原创 根据经纬度算距离 | SQL

--计算地球上两个坐标点(经度,纬度)之间距离sql函数CREATE FUNCTION [dbo].[fnGetDistance](@LatBegin REAL, @LngBegin REAL, @LatEnd REAL, @LngEnd REAL) RETURNS FLOAT ASBEGIN --距离(千米) DECLARE @Distance REAL DECLARE @E

2017-08-18 20:41:52 485

原创 根据经纬度查询附近企业 | SQL

--第一种SELECT ent_id, ent_name, longitude, latitude, ROUND( 6378.138 * 2 * ASIN( SQRT( POW( SIN(

2017-08-18 20:41:11 1054

原创 深入理解OSGI的模块化

定义OSGI(Open Service Gateway Initiative)技术是面向Java的动态模型系统。OSGI框架实现了一个优雅、完整和动态地组件模型。应用程序(bundle)无需重新引导可以被远程安装、启动、升级和卸载。OSGi技术提供允许应用程序使用精炼、可重用和可协作的组件构建的标准化原语。 这些组件能够组装进一个应用和部署中。OSGi服务平台提供在多种网络设备上无

2017-08-18 20:39:00 871

原创 线程池的探索

一、线程池并发的基础是java.lang.Threads类。 Thread执行类型为java.lang.Runnable的对象。直接使用Thread类有以下缺点:Ø  创建新线程会导致一些性能开销。Ø  太多的线程可能导致性能下降,因为CPU需要在这些线程之间切换。Ø  不能轻易地控制线程数,因此线程过多会导致内存不足错误。与直接使用Threads相比,java.util.

2017-08-18 20:37:07 258

原创 Java 工具类 - Zip压缩解压

注意:此类中用到的压缩类ZipEntry等都来自于org.apache.tools包而非java.util包 依赖:ant-1.7.1.jarpackage com.tgb.hz.file;import com.tgb.hz.common.ArrayUtil;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import jav

2017-08-18 15:12:24 5238

原创 Java 工具类 - JDBC通用操作基类 BaseDao

封装了增删改查功能 适用于MySQL、Oracle、SQLServer、DB2、Sybase、JTDS、PostgreSql、SQLite、Derby、H2、HSQLDB、ODBC 等等数据库,有需要的还可以自己增加。package com.tgb.hz.jdbc;import java.io.IOException;import java.sql.Connection;import j

2017-08-18 15:11:31 553

原创 使用JavaMail实现发送模板邮件以及保存到发件箱

需要用到的jar包 1.freemarker-2.3.19.jar 2.javax.mail.jar 3.javax.activation.jar 本次测试邮箱是腾讯企业邮箱,其他未经测试。 做这个功能是因为我女朋友每个月都需要手动去发几十个人的考勤、考核邮件,实在是太过重复的做一件很乏味的事情,所以才有了这个程序,不过,界面是使用的控制台,简单一点。核心代码展示

2017-08-18 15:10:30 9201

spring 实践学习案例

#### 项目介绍 spring 实践学习案例,与其它组件结合如 mybatis、jpa、dubbo、redis、mongodb、memcached、kafka、rabbitmq、activemq、shiro等 #### 软件架构 基于Java 1.8 #### Spring 版本 - 5.0.8.RELEASE #### 模块说明 - spring-data - Spring 数据库操作,包括SpringJDBC、JPA、Mybatis、MongoDB - spring-caches - Spring 缓存,包括redis、ehcache、spring-cache、memcached、使用redis实现session共享 等。 - spring-docs - Spring 文档生成工具,包括 Swagger - spring-bussiness - Spring 业务应用,包括 AOP、过滤器、定时任务、上传文件、国际化 等。 - spring-dubbo - Spring 集成 Dubbo - spring-mq - Spring 集成 消息队列,包括 kafka、rabbitmq、activemq、rocketmq、redismq - spring-auth - Spring 权限认证,包括 Apache Shiro

2018-09-18

spring boot 实践学习案例,与其它组件整合

spring boot 实践学习案例,与其它组件结合如 mybatis、jpa、dubbo、redis、mongodb、memcached、kafka、rabbitmq、activemq、elasticsearch、security、shiro等 #### Spring Boot 版本 - 2.0.3.RELEASE #### 模块说明 - springboot-basic - Spring Boot 基础知识,包括SpringBoot起步、配置详解、aop、filter、拦截器、监听、启动器、全局异常处理、外部Tomcat启动、HTTPS、监控 等。 - springboot-data - Spring Boot 数据库操作,包括SpringJDBC、JPA、Mybatis注解版 &amp; XML版、MongoDB。其中,每个版本都有其对应的多数据源解决方案。 - springboot-caches - Spring Boot 缓存,包括redis、ehcache、spring-cache、memcached、使用redis实现session共享 等。 - springboot-templates - Spring Boot 模板,包括thymeleaf、freemarker、jsp、表单校验 等。 - springboot-docs - Spring Boot 文档生成工具,包括 Swagger、Spring RestDocs - springboot-bussiness - Spring Boot 业务应用,包括 定时任务、上传文件、发送邮件、Doc文档操作 等。 - springboot-ajax - Spring Boot AJAX 跨域,包括 JSONP、Node.js与SpringBoot集成使用反向代理 等。 - springboot-websockets - Spring Boot 使用 Websocket - springboot-webflux - Spring Boot 集成 WebFlux 开发反应式 Web 应用 - springboot-dubbo - Spring Boot 集成 Dubbo 的三种方式 - springboot-search - Spring Boot 集成 搜索引擎,包括 elasticsearch、solr - springboot-mq - Spring Boot 集成 消息队列,包括 kafka、rabbitmq、activemq、rocketmq、redismq - springboot-auth - Spring Boot 权限认证,包括 Apache Shiro、Spring Security - springboot-cloud - Spring Cloud 入门,包括 Eureka(服务注册与发现)、Config(配置中心)、Hystrix(断路器)、Bus(消息总线) 等

2018-09-18

用Java实现23种设计模式

用Java实现23种设计模式 1. 创建型模式 工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern) 2. 结构型模式 适配器模式(Adapter Pattern) 桥接模式(Bridge Pattern) 过滤器模式(Filter、Criteria Pattern) 组合模式(Composite Pattern) 装饰器模式(Decorator Pattern) 外观模式(Facade Pattern) 享元模式(Flyweight Pattern) 代理模式(Proxy Pattern) 3. 行为型模式 责任链模式(Chain of Responsibility Pattern) 命令模式(Command Pattern) 解释器模式(Interpreter Pattern) 迭代器模式(Iterator Pattern) 中介者模式(Mediator Pattern) 备忘录模式(Memento Pattern) 观察者模式(Observer Pattern) 状态模式(State Pattern) 空对象模式(Null Object Pattern) 策略模式(Strategy Pattern) 模板模式(Template Pattern) 访问者模式(Visitor Pattern) 4. J2EE 模式 MVC 模式(MVC Pattern) 业务代表模式(Business Delegate Pattern) 数据访问对象模式(Dao Pattern) 前端控制器模式(Front Controller Pattern) 拦截过滤器模式(Intercepting Filter Pattern) 服务定位器模式(Service Locator Pattern) 传输对象模式(Transfer Object Pattern) 生产者消费者模式(Producer Consumer Pattern)

2018-09-18

Java代码示例,新特性、经典题目、工具类

# java_example #### 项目介绍 关于Java的一些示例代码,一些新特性,以及一些工具包的使用 #### 模块 - Java 5、6、7、8的新特性 - Guava - 一些经典题目的实现 - 一些测试、示例代码

2018-09-18

fileUpload(兼容IE的Ajax上传图片)

fileUpload(兼容IE的Ajax上传图片),可兼容IE8,解决了ajaxfileupload.js无效的问题

2018-09-18

ajaxfileupload.js,支持多文件上传

jQuery.extend({ createUploadIframe: function (id, uri) { //create frame var frameId = 'jUploadFrame' + id; var iframeHtml = '&lt;iframe id="' + frameId + '" name="' + frameId + '" top:-9999px; left:-9999px"'; if (window.ActiveXObject) { if (typeof uri == 'boolean') { iframeHtml += ' src="' + '[removed]false' + '"'; } else if (typeof uri == 'string') { iframeHtml += ' src="' + uri + '"'; } } iframeHtml += ' /&gt;'; jQuery(iframeHtml).appendTo(document.body); return jQuery('#' + frameId).get(0); },

2018-09-18

设计原则与设计模式

面向对象设计原则:面向对象设计原则、开闭原则、里氏替换原则、里氏替换原则、里氏替换原则

2018-09-18

Java生成验证码

Java生成验证码,适用于jsp登录、注册等页面

2015-08-15

MyBatis 3.2.3 中文开发手册

MyBatis帮助文档,中文版,适合新手

2015-08-15

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除