- 博客(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
5759
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
524
原创 Redis分布式锁的正确实现 --集群版
为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件:1、互斥性。在任意时刻,只有一个客户端能持有锁。2、不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。3、具有容错性。只要大部分的Redis节点正常运行,客户端就可以加锁和解锁。4、解铃还须系铃人。加锁和解锁必须是同一个客户端,客户端自己不能把别人加的锁给解了。package...
2020-04-26 19:58:18
808
原创 Redis分布式锁的正确实现
为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件:1、互斥性。在任意时刻,只有一个客户端能持有锁。2、不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。3、具有容错性。只要大部分的Redis节点正常运行,客户端就可以加锁和解锁。4、解铃还须系铃人。加锁和解锁必须是同一个客户端,客户端自己不能把别人加的锁给解了。package...
2019-11-15 12:13:00
370
原创 深复制和浅复制
对象的复制java除了用new来创建对象,还可以通过clone来复制对象。那么这两种方式有什么相同和不同呢?newnew操作符的本意是分配内存。程序执行到new操作符时,首先去看new操作符后面的类型,因为知道了类型,才能知道要分配多大的内存空间。分配完内存之后,再调用构造函数,填充对象的各个域,这一步叫做对象的初始化,构造方法返回后,一个对象创建完毕,可以把他的引用(地址)发布到外...
2019-10-05 11:39:22
261
原创 关于zip压缩包日志查询、统计、导出
1.由于没有权限创建文件,也就无法导出输出日志文件,需要找运维帮忙导出2.举个栗子:查询ZIP日志文件中此提示的日志:【创建人】保存出现异常2.1查找Zip压缩包中的字符,先把中文转成Unicode编码,’‘需转义为’\’,忽略大小写查’邮寄’ -->转成Unicode编码 ‘\u90ae\u5bc4’ -->加转义符 ‘\\u90ae\\u5bc4’ -->加忽略...
2019-09-29 19:02:18
3574
原创 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
10660
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
19673
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
416
原创 Java编程珠玑(201903)
1、初始化一个对象的简便方式Student stu = new Student(){{ setName("张三");}};2、重新组合后去重List<String> names = list.stream().map(Student::getName).distinct().collect(Collectors.toList());3、根据某一属性对集合去重list ...
2019-03-14 20:38:39
929
原创 Java程序员2019面试问题汇总
第一部分1、分布式网关限流、分流;限流算法有哪些?延伸:(在开发高并发系统时,有三把利器用来保护系统:缓存、降级和限流。)2、redis存储结构,为什么快3、数据库索引存储结构,索引怎么建?4、Java类加载过程5、Dubbo有什么协议?6、序列化有什么方式7、分布式怎么保证一致性8、CurrentHashMap通过什么保证了线程安全9、HashMap存储结构,通过什么去找到这个...
2019-03-14 18:59:45
1515
2
原创 IDEA启动不了如何解决
报错:解决方案:找到 项目文件夹/.idea/workspace.xml搜索这句话 <component name="PropertiesComponent">在里面加入下面一行代码,表示动态回去Java编译路径 <property name="dynamic.classpath" value="true" />...
2019-02-22 17:23:50
5658
原创 stream 和 parallelStream
parallelStream是一个并行执行的流.它通过默认的ForkJoinPool,可能提高你的多线程任务的速度.parallelStream的作用Stream具有平行处理能力,处理的过程会分而治之,也就是将一个大任务切分成多个小任务,这表示每个任务都是一个操作。效率对比// 初始化2千万个元素List<Integer> list = new ArrayList<...
2018-12-06 18:00:05
4111
原创 linux之 grep "xxx" * | wc -l 命令
查找某文件夹下所有文件中某个字符的个数grep 'xxx' * | wc -l查看某文件夹下文件的个数ls -l |grep &amp;quot;^-&amp;quot;|wc -l或find ./company -type f | wc -l查看某文件夹下文件的个数,包括子文件夹里的。ls -lR|grep &amp;quot;^-&amp;quot;|wc -l查看某文件夹下文件夹的个数,包括子文件夹里的。
2018-12-01 06:44:54
23579
原创 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
8567
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
949
原创 包装类之equals
/* * 【强制】所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较 说明:对于 Integer var = ? 在-128 至 127 范围内的赋值, Integer 对象是在IntegerCache . cache 产生,会复用已有对象,这个区间内的 Integer 值可以直接使用==进行判断,但是这个区间之外的所有...
2018-09-08 19:29:59
2888
原创 Mybatis 常用语法
likesubject_name LIKE CONCAT(CONCAT('%', #{subjectName,jdbcType=VARCHAR}), '%')in&amp;amp;amp;amp;lt;if test=&amp;amp;amp;quot;status != null&amp;amp;amp;quot;&amp;amp;amp;amp;gt; and status in
2018-09-06 17:40:36
2151
原创 去大公司还是去小公司工作?
去大公司还是小公司工作?这个问题问大多数 IT 人都会选择前者。如果换一个问法,去大公司还是去初创公司(Startup)工作?或许有极小一部分人能改变一下决定。对于 IT 人来说,选择到大公司工作的理由可能有:觉得「钱多人傻,干嘛不去?」;有人认为 「机会多,有发展」; 也有人被小公司的眉毛胡子一把抓吓怕了,认为大公司「正规一些」。或是觉得「有挑战,起码几千万用户,数千台机器,数亿 PageV...
2018-08-10 18:11:00
801
原创 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
2536
转载 maven之scope属性
在POM中,<dependency>中还引入了<scope>,它主要管理依赖的部署。目前<scope>可以使用5个值: compile,缺省值,适用于所有阶段,会随着项目一起发布。 provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。 runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段...
2018-08-07 10:28:36
140
原创 FastJSON.toJSONString() 转换对象,Long类型数据发生改变
在使用FastJSON转换对象时,遇到一个问题: 接口返回的Id是:81043452862799872,但是经过控制器然后传到页面变成了81043452862799870, 导致后续调用失败。 找了很久才发现是因为这个原因。解决方案:在获取接口数据的时候把Long类型转换为String类型,这样子就OK了。...
2018-07-06 11:50:34
10423
原创 MybatisGenerator的Maven插件配置
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.apache.org/POM/4.0.0 http://maven.apache.or...
2018-06-12 14:59:55
479
原创 谈谈我对服务化的理解
就目前来说,大部份开发者把一个Dubbo接口,或者一个RPC的调用当做服务化来理解,就我个人来说,这是非常不对的一个理解,Dubbo,RPC充其量只能算是一个接口调用,离服务化还差着十万八千里。那么我理解的服务化是什么呢?我理解的有如下几点:服务化无关远程,本地,没有Dubbo,RPC,也一样要有服务化。业务边界清晰高内聚,低耦合服务可复用 就拿很多老代码来说,就跟记流水账...
2018-04-18 11:15:18
8668
原创 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
979
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
2205
原创 IDEA Maven Web项目的install和run
首先,进入 Run -> Edit Configurations -> Add New Configuration 添加两个Maven,分别取名为instal、runinstallParamsters: Working directory:项目的路径,如果是多模块项目,那就是最外层的项目路径。 Command line:clean installRunne...
2018-04-17 15:11:32
2605
原创 根据查询条件开始时间、结束时间查询数据库,并且数据库中也包含开始时间、结束时间字段
需求: 根据开始时间和结束时间查询数据库一段时间内的数据,并且数据库也有两个字段,一个开始时间和一个结束时间。要根据数据库的时间字段来查询。例如: 数据库字段:start_time,end_time 查询条件:startTime、endTime有三种情况只输入开始时间end_time >= startTime只输入结束时间end_tim...
2018-03-27 15:44:13
14096
1
原创 家庭网络环境下基于OSGI的灵活授权
摘要:在家庭网络环境下,OSGi平台在控制不同用户进行访问时,授权就显得非常重要。OSGi平台虽然支持基于角色的访问控制(RBAC),但并不支持RBAC模型中的所有功能。本文针对OSGi平台动态部署不足的问题,通过增加了相对角色的概念并使用委托模型激活了其访问控制,提出了一个多样化的访问控制机制,扩展了OSGi平台现有的授权机制。 关键词:授权;OSGi;RBAC;委托模型;访问控制
2017-11-24 15:56:20
316
原创 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
637
原创 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
330
原创 交换数据表两个字段值 | 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
858
原创 根据经纬度算距离 | 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
580
原创 根据经纬度查询附近企业 | SQL
--第一种SELECT ent_id, ent_name, longitude, latitude, ROUND( 6378.138 * 2 * ASIN( SQRT( POW( SIN(
2017-08-18 20:41:11
1162
原创 深入理解OSGI的模块化
定义OSGI(Open Service Gateway Initiative)技术是面向Java的动态模型系统。OSGI框架实现了一个优雅、完整和动态地组件模型。应用程序(bundle)无需重新引导可以被远程安装、启动、升级和卸载。OSGi技术提供允许应用程序使用精炼、可重用和可协作的组件构建的标准化原语。 这些组件能够组装进一个应用和部署中。OSGi服务平台提供在多种网络设备上无
2017-08-18 20:39:00
1014
原创 线程池的探索
一、线程池并发的基础是java.lang.Threads类。 Thread执行类型为java.lang.Runnable的对象。直接使用Thread类有以下缺点:Ø 创建新线程会导致一些性能开销。Ø 太多的线程可能导致性能下降,因为CPU需要在这些线程之间切换。Ø 不能轻易地控制线程数,因此线程过多会导致内存不足错误。与直接使用Threads相比,java.util.
2017-08-18 20:37:07
300
原创 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
5278
原创 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
592
原创 使用JavaMail实现发送模板邮件以及保存到发件箱
需要用到的jar包 1.freemarker-2.3.19.jar 2.javax.mail.jar 3.javax.activation.jar 本次测试邮箱是腾讯企业邮箱,其他未经测试。 做这个功能是因为我女朋友每个月都需要手动去发几十个人的考勤、考核邮件,实在是太过重复的做一件很乏味的事情,所以才有了这个程序,不过,界面是使用的控制台,简单一点。核心代码展示
2017-08-18 15:10:30
9390
spring 实践学习案例
2018-09-18
spring boot 实践学习案例,与其它组件整合
2018-09-18
用Java实现23种设计模式
2018-09-18
Java代码示例,新特性、经典题目、工具类
2018-09-18
ajaxfileupload.js,支持多文件上传
2018-09-18
CAS单点登录系统如何在没有登录的情况下不自动跳转到登录页
2016-12-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人