安心技术
文章平均质量分 57
孜梓不倦
胡搅蛮缠地坚持
展开
-
创建骨架工程
生成骨架工程:https://blog.csdn.net/jeikerxiao/article/details/60324029 1. MartianDemo项目骨架生成1.1. 导入项目骨架生成模块:com.jd.martian martian-demo-archetype 1.0.0-SNAPSHOT1.2. 创建骨架工程:输入项目名称, 分组id, 包名称等信息, 下一步...原创 2021-03-30 22:47:52 · 391 阅读 · 0 评论 -
2020-12-23
随机瓜分百万红包年关将近,各类促销活动即将上线,类似支付宝集五福的那种,用户凑齐卡片之后,可以瓜分百万红包。因为这种瓜分活动集齐的人数肯定是很多的,直接随机之后再扣减,感觉不是很合适。大致思路如下:因为是集卡截止后再进行红包瓜分的,集齐的用户可能几十万上百万,所以就先根据集齐卡片的用户数,先将红包随机瓜分好,存放起来,等到瓜分的时候,直接领取就行了。假设5个人集齐,等长度生成一个随机数数组[2,5,9,8,6]。根据这个随机数数组里面的值所占整个数组元素和(30)的比例来计算每个红包的.转载 2020-12-23 19:35:39 · 390 阅读 · 0 评论 -
81.安心技术梳理 - 开发中,路由切量最快捷工具 - 干货
1.设定路由的目标字段,如:userId2.设置需要切量的值,如:range,1 - 10代表 10% - 100%int hashCode = Math.abs(userId.hashCode()) % 10;if (hashCode < range) { 执行任务}3.完成原创 2020-07-31 16:15:05 · 434 阅读 · 0 评论 -
80.安心技术梳理 - 开发对敏感数据加密和解密操作工具,干货
对重要敏感数据进行统一加密和解密操作1.实践类import com.security.*;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class DecEncUtils { private static final Logger logger = LoggerFactory.getLogger(DecEncUtils.class); //加密 public static String bui...原创 2020-06-02 16:12:34 · 401 阅读 · 0 评论 -
79.安心技术梳理 - 团队合作开发常见影响代码性能的注意点,干货
影响代码性能的点,仅供参考1.防止N+1查询,循环里面套查询和外部查询接口(提供批量服务解决)2.数据库查询频繁的固定内容,增加缓存逻辑,防止并发下大量查询数据库操作3.涉及到数据库更新操作,避免在查询时候有更新操作事例:1.N+1影响性能,单个循环查询消耗时间会翻倍,影响性能public List<ActInfo> getActInfo(List<Long> actIds){ if(CollectionUtils.isEmpty(actIds...原创 2020-06-02 14:45:20 · 211 阅读 · 0 评论 -
78.安心技术梳理 - 开发中常用统一工具(时间/常量/缓存),干货
团队开发中工具的统一是必要的,方便管理和维护,常用的几种,仅供参考1.时间工具类import java.util.concurrent.TimeUnit;public class CacheTime { public static final Long ONE_SECONDS = TimeUnit.SECONDS.toSeconds(1L); public static final Long ONE_MINUTES = TimeUnit.MINUTES.toSeconds(1L);...原创 2020-06-02 14:26:15 · 211 阅读 · 0 评论 -
77.安心技术梳理 - 开发中 - 异常- 类和方法的创建和使用,干货
开发中异常的输出是必要的,我们需要统一的数据标准,做个统一工具,仅供参考1.实际应用的方式(1)创建常量返回异常结果import com.Result;Result.failResult(CocoonErrorCode.PURCHASECARD_ACT_EXCEPTION, "付费卡活动异常")(2)创建异常类返回throw BusinessException.of(CocoonErrorCode.PAIDCOUPON_NOEXIT).tips("查询列表为空");2.实现的工具类原创 2020-06-02 14:15:38 · 305 阅读 · 0 评论 -
76.安心技术梳理 - java开发中枚举类的创建使用,干货
开发中枚举类的使用是狠广泛的,下面是常见的创建类型,仅供参考1.普通枚举public enum OrderStatusEnum { WAIT_STATUS, OVER_STATUS;}2.键值对枚举(含二进制表示方式)import org.apache.commons.lang3.StringUtils;import java.util.ArrayList;import java.util.List;public enum UserClassifyEnum { ...原创 2020-06-02 14:02:24 · 245 阅读 · 0 评论 -
75.安心技术梳理 - java8流式编程,stream使用的几种场景,干货
1.遍历封装 (List - List)List<CouponDataInfo> couponDataInfos = dataInfos.stream().map(a -> { CouponDataInfo couponDataInfo = new CouponDataInfo(); couponDataInfo.setCouponId(a.getCouponId); couponDataInfo.setCouponKey(a.getCouponKey); ..原创 2020-06-01 17:55:25 · 483 阅读 · 0 评论 -
74.安心技术梳理 - 结果对象映射输入对象,做数据封装,重写equals和hashCode,干货
对象之间数据映射操作,将结果对象的数据映射到输入对象,复用equals和hashCode实现,仅供参考:1.处理主流程:import javax.annotation.Resource;import java.util.List;import java.util.Map;import java.util.stream.Collectors;public class HandleData { @Resource private CouponService couponServ原创 2020-06-01 17:47:42 · 250 阅读 · 0 评论 -
73.安心技术梳理 - 创建本地缓存类实现,干货
本地缓存工具实现,仅供参考import com.google.common.cache.CacheBuilder;import com.google.common.cache.CacheLoader;import com.google.common.cache.LoadingCache;import java.util.concurrent.TimeUnit;public class LoadingCacheUtils { private LoadingCache<String,原创 2020-06-01 15:23:47 · 198 阅读 · 0 评论 -
72.安心技术梳理 - 前置校验,拦截器,切面编程思想2,干货
拦截器实现切面编程,实现仅供参考1、拦截器管理类:import com.RiskInterceptor;import com.UserInterceptor;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.I原创 2020-06-01 15:06:54 · 301 阅读 · 0 评论 -
71.安心技术梳理 - 链式开发,切面编程思想1,干货
链式开发,增加代码可读性,切面思想较少代码冗余,仅供参考学习。一、实用类链式主流程1:import com.HandlerChain;import com.RequestData;import com.ResponData;import com.Filter1ControlHandler;import com.Filter2ControlHandler;import com.result.Result;public class MenthHandlerChain extends H原创 2020-06-01 14:43:59 · 316 阅读 · 0 评论 -
70.安心技术梳理 - 高效率【并发】请求多个接口工具实现2,干货
采用并发类中锁的特性完成int num = 5;//并发执行的数量ConcurrentLinkedQueue<Future<DataVo>> linkedQueue = new ConcurrentLinkedQueue<>();CountDownLatch cancelDownLatch = new CountDownLatch(num);//线程池-创建ThreadFactory threadFactory = new ThreadFactoryBuil原创 2020-05-31 21:03:13 · 245 阅读 · 0 评论 -
69.安心技术梳理 - Redis实现【分布式锁】工具,含超时时间/等待时间干货
1.创建引入一个Redis工具方法类2.实现工具 -redisClient为工具String lockKey = "key"; 1000L后获取锁,20000L维持锁存在总时长DistributedLocker.instance(redisClient) .lock(lockKey, 1000L, 20000L, () -> this.method(提交方法));实现工具类:import com.RedisClient;im.原创 2020-05-19 21:08:18 · 893 阅读 · 0 评论 -
68.安心技术梳理 - 拦截【请求IP】工具,干货
以下为加载请求的IP工具,供参考:import javax.servlet.http.HttpServletRequest;public class IpUtils { private static final Logger LOGGER = LoggerFactory.getLogger(IpUtils.class); private static final String UNKNOWN = "unknown"; private static final Strin原创 2020-05-19 20:50:50 · 210 阅读 · 0 评论 -
67.安心技术梳理 - 开发失败【重试请求次数】方法的工具,干货
以下为重试的工具,供参考学习:import com.github.rholder.retry.Retryer;import com.github.rholder.retry.RetryerBuilder;import com.github.rholder.retry.StopStrategies;import com.github.rholder.retry.WaitStrategies;import com.google.common.base.Predicates;import org.原创 2020-05-19 20:48:36 · 260 阅读 · 0 评论 -
66.安心技术梳理 - 高效率【并发】请求多个接口工具实现,干货
以下为实现并发请求的实现方式思路,供参考:DataInfo dataInfo = new DataInfo(); //设置并发请求3个接口 ExecutorService executorService = Executors.newFixedThreadPool(3); List<Future<Boolean>> futures = new ArrayList<>(); //接口1 Fu...原创 2020-05-19 20:27:57 · 265 阅读 · 0 评论 -
65.安心技术梳理 - 字符串中各种操作方法
基础:牢记字符串操作的各种方法: String s = "aaaljlfeakdsflkjsadjaefdsafhaasdasd"; // 出现次数 int num = 0; // 循环遍历每个字符,判断是否是字符 a ,如果是,累加次数 for ( /...原创 2020-05-02 17:34:46 · 130 阅读 · 0 评论 -
64.安心技术梳理 - Mysql数据类型对应java数据类型 - 全集
下面我给出MYSQL类型与JAVA类型对应表,希望能够帮到您:类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) VARCHAR L+N VARCHAR java.lang.String 12 CHAR N CHAR java.lang.String 1 BLOB L+N BL...原创 2020-05-01 13:05:49 · 252 阅读 · 0 评论 -
63.安心技术梳理 - 系统架构review内容
系统架构图本系统和其他系统的关系(业务流、数据流,下同)、交互方式(RPC、MQ、数据集市,下同) 本系统内部各模块的作用、模块之间的关系、交互方式各模块的被依赖方(外部)梳理 调用方 部门 场景 级别 SLA(最大调用量、时延,下同) 交互方式 性...原创 2020-04-22 10:17:15 · 461 阅读 · 0 评论 -
62.安心技术梳理 - 系统线上服务监控/报警内容
一、机器监控所有资源类型的机器(物理机、容器)都加入MDC:物理机/容器,nginx/应用/数据库/redis/zk/etc。 报警指标类型(TODO,用表格的形式,做一个建议的报警配置) 必须:连通性、cpu利用率、内存利用率、磁盘利用率、网络重传 建议:tcp连接数、网络流入/流出速率、磁盘繁忙、swap使用率 资源缩容/扩容后,及时同步ip列表到mdc并检查监控是否设置。j...原创 2020-04-22 10:08:52 · 361 阅读 · 0 评论 -
61.安心技术梳理 - SpringContextHolder 获取不到applicationContext
web.xml<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name&g...转载 2020-04-21 00:05:13 · 972 阅读 · 0 评论 -
60.安心技术梳理 - 配置文件Mock数据解析至对象集合联调工具类-干货
1.工具类private String getFileContent(String fileName) { String path = this.getClass().getClassLoader().getResource("").getPath().toString(); String filePath = path.substring(1) + fileN...原创 2020-03-24 11:21:36 · 297 阅读 · 0 评论 -
59.安心技术梳理 - 规则引擎Drools动态加载规则,直接上干货
背景最近,因工作需要做了规则引擎的调研,对比了多个规则引擎后,最终选择开源规则引擎Drools。Drools的优点很多,而我决定使用Drools的原因主要是:非常活跃的社区支持(JBoss支持); 快速的执行速度; 完善的功能; 国外金融领域使用比较多;当然,Drools也有很多缺点:复杂(功能越多也意味着越复杂); 文档欠缺(官方文档混乱、缺少中文文档); 学习成本高...转载 2020-01-11 17:31:46 · 1441 阅读 · 1 评论 -
58.安心技术梳理 - 乐观锁注解@Version两个包区别(javax.persistence.Version)和(tk.mybatis.mapper.annotation.Version)
一、javax.persistence.Version在数据库并发操作时,为了保证数据的正确性,经常要对数据加锁,加锁有两种方式:悲观锁、乐观锁悲观锁:把所需要的数据全部加锁,不允许其他事务对数据做修改update xxx where xxxx for update乐观锁:对数据进行版本校验,如果版本不一致,则操作数据失败update xxx,version+1 where x...转载 2020-01-10 15:05:17 · 3111 阅读 · 1 评论 -
57.安心技术梳理 - java8和java9新特性及使用
java8新特性:https://www.runoob.com/java/java8-new-features.htmljava9新特性:https://www.runoob.com/java/java9-new-features.html原创 2020-01-08 11:24:56 · 169 阅读 · 0 评论 -
56.安心技术梳理 - linux下文件夹的创建、复制、剪切、重命名、清空和删除命令
在home目录下有wwwroot目录,wwwroot下有sinozzz目录,即/home/wwwroot/sinozzz一、目录创建在/home/wwwroot目录下新建一个sinozzz123的文件夹mkdir /home/wwwroot/sinozzz123二、目录复制1.把/home/wwwroot/sinozzz里面的文件和文件夹等复制到home/wwwroot/sin...转载 2020-01-07 10:16:59 · 142 阅读 · 0 评论 -
55.安心技术梳理 - linux在线安装JDK环境及Tomcat
一.Java环境的安装1.在线下载jdk1.8wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2...转载 2020-01-07 09:52:57 · 121 阅读 · 0 评论 -
54.安心技术梳理 - 使用工具类(线程池/集合/线程/队列) - J.U.C
一、ConcurrentLinkedQueue(线程安全的队列)适用于并发编程中。A.实现线程安全的队列有两种实现方式:一种是使用阻塞算法队列,另一种是使用非阻塞算法队列阻塞算法队列:可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现非阻塞算法队列:可以使用循环CAS的方式来实现实例:非阻塞算法队列实现,如:ConcurrentLinkedQueue...原创 2019-12-31 15:52:21 · 181 阅读 · 0 评论 -
53.安心技术梳理 - 线程池中shutdown()和shutdownNow()方法的区别
一般情况下,当我们频繁的使用线程的时候,为了节约资源快速响应需求,我们都会考虑使用线程池,线程池使用完毕都会想着关闭,关闭的时候一般情况下会用到shutdown和shutdownNow,这两个函数都能够用来关闭线程池,那么他们俩之间的区别是什么呢?下面我就用一句话来说明白shutdown和shutdownNow的区别。一、一句话说明白shutdown和shutdownNow的区别shutd...转载 2019-12-31 10:53:31 · 214 阅读 · 0 评论 -
52.安心技术梳理 - com.alibaba.fastjson中json解析/序列化/反序列化
1.使用引入jar包:<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.23</version></dependency>2.序列化:把JavaBea...原创 2019-12-30 17:19:52 · 736 阅读 · 0 评论 -
51.安心技术梳理 - 自定义拦截器实现(登录/风控/用户身份)等功能实现
介绍:在Web开发中,我们除了使用 Filter 来过滤请web求外,还可以使用Spring提供的HandlerInterceptor(拦截器),HandlerInterceptor 的功能跟过滤器类似,但是提供更精细的的控制能力:在request被响应之前、request被响应之后、视图渲染之前以及request全部结束之后。我们不能通过拦截器修改request内容,但是可以通过抛出异常(或者返...转载 2019-12-12 18:03:32 · 294 阅读 · 0 评论 -
50.安心技术梳理 - 线程池ExecutorService中【返回值】submit和【无返回值】execute的区别
一、创建任务任务就是一个实现了Runnable接口的类。创建的时候实run方法即可。二、执行任务通过java.util.concurrent.ExecutorService接口对象来执行任务,该接口对象通过工具类java.util.concurrent.Executors的静态方法来创建。Executors此包中所定义的 Executor、ExecutorService、Sch...转载 2019-12-10 15:03:39 · 1245 阅读 · 0 评论 -
49.安心技术梳理 - Guava计时器Stopwatch和apache.commons.lang3包下任务执行时间监视器类Stopwatch
1、一般我们检测某段代码执行的时间,都是以如下方式来进行的:public static void main(String[] args) { long startTime=System.currentTimeMillis(); //获取开始时间 //函数主体代码 long endTime=System.currentTimeMill...原创 2019-12-10 10:18:25 · 1098 阅读 · 0 评论 -
48.安心技术梳理 - 快速创建集合HashSet/ArrayList
1.快速创建Set方法:一、HashSet<String> set = new HashSet<String>() {{ add("a"); add("b"); add("c");}};二、import com.google.common.collect.Sets;HashSet<Integer> set = Sets.newHas...原创 2019-12-06 10:31:20 · 2421 阅读 · 0 评论 -
47.安心技术梳理 - Google guava工具类(com.google.common.base)
涉及的工具类有:String-related utilities (字符串处理)Ascii CaseFormat(大小写格式) CharMatcher(字符匹配器) Charsets(字符集) Joiner(连接器) Splitter(拆分器) StringsFunction typesFunction,Functions Predicate,Predic...原创 2019-12-05 15:03:22 · 925 阅读 · 0 评论 -
使用mongoTemplate进行Aggregation聚合查询
Aggregation聚合查询金山竹影几千秋,云索高飞水自流,万里长江飘玉带,一轮银月滚金球,远自湖北三千里,近到江南十六州,美景一时观不透,天缘有分画中游!需求:在订单表中,根据buyerNick分组,统计每个buyerNick的电话、地址、支付总金额以及总商品数,返回结果是CustomerDetail。/* * project:列出所有本次查询的字段,包括查询条件的字...转载 2019-06-14 17:16:25 · 17258 阅读 · 7 评论 -
46.安心技术梳理 - Java多线程系列全集 和 join()
1.Java多线程系列目录(共43篇):https://www.cnblogs.com/skywang12345/p/java_threads_category.html1. join()介绍join() 定义在Thread.java中。join() 的作用:让“主线程”等待“子线程”结束之后才能继续运行。这句话可能有点晦涩,我们还是通过例子去理解:// 主线程public ...转载 2019-12-05 14:09:58 · 89 阅读 · 0 评论 -
45.安心技术梳理 - Okhttp3,java.net.SocketTimeoutException: timeout
问题点:随着OkHttp,应用程序面临以下SocketTimeoutException问题。如果请求大小较小,则说明工作正常(小于1MB)。我会在10秒内收到此异常,即使我的套接字timeout(readTimeout)值也更高。持续失败的请求(大小为1.8MB)。当我执行请求时,HttpUrlConnection它工作正常。失败的可能原因是什么?解决方法:如果请求大小大于1MB...原创 2019-12-04 16:26:48 · 4128 阅读 · 0 评论