utils
文章平均质量分 61
Leonarde_WP
这个作者很懒,什么都没留下…
展开
-
没有身份证如何坐高铁
12306 -》 温馨服务 -〉乘坐旅客列车临时身份证明-》申请-〉扫描入站原创 2022-07-05 15:23:12 · 255 阅读 · 0 评论 -
上海疫情 - 离沪方案(2022.06版)
现状:上海闵行区小区内隔离两个月,现已回到镇江离沪事项:1、房屋退租(物品可交由朋友暂存,或者邮寄回家)2、抢车票(如果是中转,需要走完中转地的防疫流程才会放行,南京是两小时以内)3、电话联系家乡居委,告知回乡时间、路程、足够充分的理由4、离开前一天,在居委 / 门卫处出示车票,可以去就近检测点免费检验核酸,上午检测最佳,结果一般12小时左右可查询5、离开当天,在居委 / 门卫处办理通行证,便可以出发去车站了(提前规划好路线)!!!建议每一步都留有足够的时间buffer原创 2022-05-29 19:05:13 · 306 阅读 · 0 评论 -
个人对中台的认识
1、公司大了后,基础能力、业务能力需要沉淀;通用能力可以剥离出来,解决共性问题;好处:降成本,提升效率坏处:中台成熟后改动较少,后期新的业务会为了接中台而瘦身,反而阻碍了一些业务的发展2、业务满意度调研、文档建设(文档框架-逐个审核)、Oncall服务、SDK封装的能力、中台主页+找人地图3、中台分类基础中台:基础通用的能力业务中台:业务的某一个动作,这个动作很多业务都做,比较通用,在基础中台之上再次封装...原创 2022-04-22 11:09:41 · 335 阅读 · 0 评论 -
gradle中api、implementation和compile的区别
我们在gradle中引用第三方maven库时,一般通过下面的语句去引用:compile 'com.android.support:appcompat-v7:26.1.0'然后sync project,就能成功引用对应的包到项目之中了,十分方便。除了使用compile关键字,使用implementation和api也能将包引用到项目中:implementation 'com.android.support:appcompat-v7:26.1.0'api 'com.android..转载 2021-06-08 17:23:42 · 1453 阅读 · 0 评论 -
发现一款好用到爆的数据库工具 - DataGrip(就是耗内存)
作者:Atzuge cnblogs.com/zuge/p/7397255.html最近看到一款数据库客户端工具,DataGrip,是大名鼎鼎的JetBrains公司出品的,就是那个出品Intellij IDEA的公司。DataGrip是一款数据库管理客户端工具,方便连接到数据库服务器,执行sql、创建表、创建索引以及导出数据等。之前试用的客户端工具是dbvisualizer,但是在试用了DataGrip以后,我就决定抛弃dbvisualizer。我相信,当你第一眼看到DataGrip以...转载 2021-05-30 16:51:12 · 4723 阅读 · 0 评论 -
数据库中间件的思考
一、一代数据库一代本质还是使用mysql 上面加一层代理 只是代理是proxy和zebra的问题二、二代数据库原创 2021-05-30 11:58:42 · 121 阅读 · 0 评论 -
Redis 实战篇:巧用 Bitmap 实现亿级海量数据统计 - 几十M就能统计亿级数据
在移动应用的业务场景中,我们需要保存这样的信息:一个 key 关联了一个数据集合。常见的场景如下: 给一个 userId ,判断用户登陆状态; 显示用户某个月的签到次数和首次签到时间; 两亿用户最近 7 天的签到情况,统计 7 天内连续签到的用户总数; 通常情况下,我们面临的用户数量以及访问量都是巨大的,比如百万、千万级别的用户数量,或者千万级别、甚至亿级别的访问信息。所以,我们必须要选择能够非常高效地统计大量数据(例如亿级)的集合类型。如何选择合适的数据集合,我们转载 2021-05-28 15:21:59 · 1179 阅读 · 0 评论 -
最近最少使用策略LRU原理
原理:双向链表实现1、当一个位置被命中之后,将该位置调整到链表头2、新加入的节点直接加到链表头当需要删除内容时候,链表的最后位置就是最少被命中的位置,我们只需要淘汰链表最后的部分即可。今天和简单聊一下大厂面试经常被问到的一个知识点,LRU 的原理。三种最常见的链表结构循环链表的概念如上图所示:单链表的尾结点指针指向空地址,表示这就是最后的结点了。而循环链表的尾结点指针是指向链表的头结点。因此循环链表是一种特殊的单链表。*它跟单链表唯一的区别就在于尾结点。它像一个环一.转载 2021-05-24 15:31:50 · 746 阅读 · 0 评论 -
零拷贝
作者:艾小仙链接:https://zhuanlan.zhihu.com/p/357820303来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。平时在面试中你肯定会经常碰见的问题就是:RocketMQ为什么快?Kafka为什么快?什么是mmap?这一类的问题都逃不过的一个点就是零拷贝,虽然还有一些其他的原因,但是今天我们的话题主要就是零拷贝。传统IO在开始谈零拷贝之前,首先要对传统的IO方式有一个概念。基于传统的IO方式,底层实际上通过调用read(.转载 2021-05-16 17:58:57 · 150 阅读 · 0 评论 -
Redis
Redis作为一个内存数据库。1、性能优秀,数据在内存中,读写速度非常快,支持并发10W QPS;2、单进程单线程,是线程安全的,采用IO多路复用机制;3、丰富的数据类型,支持字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等;4、支持数据持久化。可以将内存中数据保存在磁盘中,重启时加载;5、主从复制,哨兵,高可用;6、可以用作分布式锁;7、可以作为消息中间件使用,支持发布订阅1、string是redis最基本的类型,可以理解成与m转载 2021-05-13 12:46:16 · 133 阅读 · 0 评论 -
加密
大多数加密都分为:对称加密、非对称加密、单向加密在如今复杂的网络环境中单凭通过一个加密方式来确保数据安全是不科学的,一般都是混合加密。在算力逐渐增强的情况下,没有什么加密算法是不能暴力破解的,只是时间问题,所以以后的加密算法会越来越复杂,密文会越来越长对称加密:加密和解密采用同一密钥(大部分时候用同一个。也可以是两个,但可以互相推导出,没啥意义)。它要求发送方与接收方在安全通信前,商定一个密钥。对称算法的安全性依赖于密钥,泄露密钥就意味着任何人都可以对他们发送或接收的消息解密。优点..原创 2021-02-23 20:41:43 · 364 阅读 · 0 评论 -
SpringMVC项目中获取所有URL到Controller Method的映射
import com.google.common.collect.Lists;import org.springframework.beans.BeansException;import org.springframework.beans.factory.BeanFactoryUtils;import org.springframework.beans.factory.InitializingBean;import org.springframework.context.ApplicationC..转载 2021-05-07 15:07:49 · 341 阅读 · 0 评论 -
Java线程池之---ForkJoinPool线程池的使用以及原理
Java 7 引入了一种新的并发框架—— Fork/Join Framework。同时引入了一种新的线程池:ForkJoinPool(ForkJoinPool.coomonPool)@sun.misc.Contendedpublic class ForkJoinPool extends AbstractExecutorService {}本文的主要目的是介绍 ForkJoinPool 的适用场景,实现原理,以及示例代码。说在前面可以说是说明,也可以说下面是结论:ForkJoinP转载 2021-04-30 17:46:21 · 1711 阅读 · 2 评论 -
http调用框架 - Forest
背景因为业务关系,要和许多不同第三方公司进行对接。这些服务商都提供基于http的api。但是每家公司提供api具体细节差别很大。有的基于RESTFUL规范,有的基于传统的http规范;有的需要在header里放置签名,有的需要SSL的双向认证,有的只需要SSL的单向认证;有的以JSON方式进行序列化,有的以XML方式进行序列化。类似于这样细节的差别太多了。不同的公司API规范不一样,这很正常。但是对于我来说,我如果想要代码变得优雅。我就必须解决一个痛点:不同服务商API那么多的差异点,如何才能.转载 2021-04-20 11:32:46 · 661 阅读 · 0 评论 -
时间轮
从定时任务说起 自然界中定时任务无处不在,太阳每天东升西落,候鸟的迁徙,树木的年轮,人们每天按时上班,每个月按时发工资、交房租,四季轮换,潮涨潮落,等等,从某种意义上说,都可以认为是定时任务。 大概很少有人想过,这些“定时”是怎样做到的。当然,计算机领域的同学们可能对此比较熟悉,毕竟工作中的定时任务也是无处不在的:每天凌晨更新一波数据库,每天9点发一波邮件,每隔10秒钟抢一次火车票。。。 至于怎么实现的?很简单啊,操作系统的crontab,spring框架的quartz,实在不行Java自带的Sche..转载 2021-04-02 19:31:19 · 138 阅读 · 0 评论 -
如何用LinkedHashMap实现LRU缓存算法
阿里巴巴笔试考到了LRU,一激动忘了怎么回事了。。准备不充分啊。。缓存这个东西就是为了提高运行速度的,由于缓存是在寸土寸金的内存里面,不是在硬盘里面,所以容量是很有限的。LRU这个算法就是把最近一次使用时间离现在时间最远的数据删除掉。先说说List:每次访问一个元素后把这个元素放在 List一端,这样一来最远使用的元素自然就被放到List的另一端。缓存满了t的时候就把那最远使用的元素remove掉。但更实用的是HashMap。因为List太慢,要删掉的数据总是位于List底层数组的第一个位置,删掉之后,转载 2021-02-25 16:37:21 · 363 阅读 · 0 评论 -
类加载
Java虚拟机启动的时候,并不会一次性加载所有的class文件(内存会爆),而是根据需要去动态加载。启动类加载器:BootstrapClassLoader:属于虚拟机的一部分,它是用C++写的,看不到源码;其他类加载器是用Java写的。加载的是jre和jre/lib目录下的核心库 扩展类加载器:ExtentionClassLoader:加载的是jre/lib/ext目录下的扩展包 应用类加载器:AppClassLoader (也叫做“系统类加载器”):父类加载器为ExtClassLo...原创 2020-12-08 15:42:30 · 188 阅读 · 0 评论 -
docker for desktop 安装配置
一、官网下载安装二、镜像配置解决docker镜像下载问题https://www.cnblogs.com/feifei-cyj/p/12678823.htmlhttps://cr.console.aliyun.com/cn-hangzhou/instances/mirrors三、安装一些常用软件https://www.runoob.com/docker/docker-install-ubuntu.html...原创 2020-09-03 14:02:15 · 860 阅读 · 0 评论 -
概率选择utils
import com.google.common.collect.Lists;import com.yiran.arch.bee.util.CollectionUtils;import java.math.BigDecimal;import java.util.List;import java.util.Objects;import java.util.Random;/** * @create 2020-08-24 * @description 概率选择工具 */public cl.原创 2020-08-24 22:16:21 · 285 阅读 · 0 评论 -
让业务不再需要打日志
问题:有的业务开发打得日志并不全面详细,导致线上问题难以定位;或者打的无效日志过多,造成资源浪费实现思路:1、每个请求(http、task、rpc等等)分配一个随机数,所有方法的入参用字节码将这个随机数传进去2、该请求中的所有外部操作(db、rpc、redis等等)的都需要log打印这个随机数+出入参好处:1、一个随机数可以查到所有相关的必要日志2、打印的日志更专业,根据日志出入参+mock单测就可以快速定位到问题。难点:1、需要封装所有的外部组件2...原创 2020-08-19 17:54:38 · 191 阅读 · 1 评论 -
熔断降级策略工具
import com.google.common.collect.Lists;import com.google.common.collect.Maps;import com.google.common.util.concurrent.ThreadFactoryBuilder;import lombok.Data;import lombok.extern.slf4j.Slf4j;import org.apache.commons.lang3.StringUtils;import javax..原创 2020-08-14 11:35:35 · 396 阅读 · 0 评论 -
对象深拷贝的utils
import com.fasterxml.jackson.core.type.TypeReference;import com.fasterxml.jackson.databind.ObjectMapper;import org.apache.commons.lang3.SerializationUtils;import java.io.IOException;import java.io.Serializable;public class DeepCopyUtils { publ.原创 2020-08-12 21:26:16 · 392 阅读 · 0 评论 -
BloomFilter - 布隆过滤器
BloomFiler又叫布隆过滤器,是一种思路,一种数据结构,特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。相比于传统的 List、Set、Map 等数据结构,它更高效、占用空间更少,但是缺点是其返回的结果是概率性的,而不是确切的。使用场景:需要判断某个值是否存在,但存储量较大,存储空间浪费是个问题;且常规的比较查询效率较低。缺点:随着数据...原创 2019-09-16 14:08:46 · 310 阅读 · 0 评论 -
业务代码测试工具类utils
import com.pdd.service.vein.api.ApiContext;import com.pdd.service.vein.service.cache.DefinitionCache;import org.springframework.beans.BeansException;import org.springframework.boot.SpringApplication;import org.springframework.context.ApplicationContex.原创 2020-08-05 16:13:18 · 248 阅读 · 0 评论 -
获取bean,执行bean方法的utils
import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.stereotype.Component;import org.springframework.util.Reflection.原创 2020-08-05 15:54:46 · 647 阅读 · 0 评论 -
高并发-多级缓存实现方案utils
测试类:@RestController@RequestMapping("/test")public class HelloController { @Autowired private AnaRedisUtils anaRedisUtils; @PostConstruct public void init() { MultilevelCacheUtils.createLoadingCache("test1", 10, 100, anaRedisU原创 2020-08-04 16:37:15 · 528 阅读 · 0 评论 -
随机数生成器
import com.google.common.collect.Lists;import org.apache.logging.log4j.util.Strings;import java.util.Arrays;import java.util.List;import java.util.Objects;import java.util.Random;/** * 功能描述:随机key生成器 */public class RandomKeyGenerator { // 大.原创 2020-08-04 09:47:57 · 941 阅读 · 0 评论 -
仿MapReduce的高并发大数据测试工具
import com.google.common.collect.Lists;import com.google.common.util.concurrent.ThreadFactoryBuilder;import org.apache.commons.collections.CollectionUtils;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.Obj.原创 2020-08-03 11:05:49 · 194 阅读 · 0 评论 -
切换接口的方案(新老接口切换utils)
一、不重要可忽略的一刀切二、重要的查询接口,发第一版:新老接口对比校验;充足时间后发第二版:新接口取代老接口三、重要的编辑接口,开关控制、灰度百分比流量控制原创 2020-07-29 14:11:54 · 1207 阅读 · 0 评论 -
RateLimiter单机限流
一般用RateLimiter来限制服务访问其他资源的qps。假设第三方服务接口限流75,我们需要配置预热时间3秒,固定速率增加qps限制(需要足够请求数来使其达到饱和值,否则速率还会下降),3秒后达到最大qps=75;RateLimiter rateLimiter = RateLimiter.create(75, 3, TimeUnit.SECONDS);rateLimiter.acquire();//TODO 调用第三方服务接口这么做是为了使qps较为平稳的达到最大值。如果不是平..原创 2020-07-28 16:54:48 · 643 阅读 · 0 评论 -
JDK8中支持Lambda表达式的函数式接口
Java 8中,Function,Consumer,Predicate,Supplier举例https://blog.csdn.net/wang252949/article/details/79291205?ops_request_misc=&request_id=&biz_id=102&utm_term=Predicate%20Consumer&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sob原创 2020-07-17 14:49:11 · 413 阅读 · 0 评论 -
校验小工具
import cn.hutool.core.util.StrUtil;import java.util.Objects;public class TestUtils { public static void main(String[] args) { checkArgument(1 < 0, "warmupPeriod must not be negative: {}"); } public static void checkArgument(B.原创 2020-07-16 21:35:34 · 228 阅读 · 0 评论