- 博客(180)
- 问答 (28)
- 收藏
- 关注
原创 【LeetCode】1641. Count Sorted Vowel Strings(动态规划)
【LeetCode】1641. Count Sorted Vowel Strings(动态规划)Given an integer n, return the number of strings of length n that consist only of vowels (a, e, i, o, u) and are lexicographically sorted.A string s is lexicographically sorted if for all valid i, s[i] is t
2021-06-30 18:19:13
274
原创 【工作问题】多叉树的应用:用户代理等级升级策略
前言还是项目的新需求:每天进行一次更新用户等级,具体等级要求如下:很明显的是,高等级用户依赖于低等级用户的业绩和社区等级进行升级。也就是说需要从低等级用户开始升级,层层递进到高等级用户。这个时候选择一个合适的数据结构在开发中能省很多功夫,比如多叉树。多叉树实现其实不管是初始化树还是遍历的思路跟二叉树都是一样的。树的节点:@Data@EqualsAndHashCode(callSuper = false)@Accessors(chain = true)public class UserTr
2021-03-22 14:40:40
228
原创 【LeetCode】739.Even Odd Tree (BFS宽度优先搜索)
【LeetCode】739.Even Odd Tree (BFS宽度优先搜索)A binary tree is named Even-Odd if it meets the following conditions:The root of the binary tree is at level index 0, its children are at level index 1, their children are at level index 2, etc.For every even-index
2021-02-21 18:19:26
188
原创 【Java】MyBatis注解SelectProvider等的使用
@SelectProvider(method=”xxxx”,type=xxxx.class)MyBatis3提供的这个注解可以让程序员用自定义的类构造SQL语句(method属性为类中要执行获取sql语句的方法,type属性为获取sql语句的指定类)
2021-01-10 17:49:39
1343
原创 【Java】除了增删查改你还会什么:反射+注解
场景最近本社会闲散人员去面试了,某公司终面的是个大佬,于是就有了下面的对话:大佬一脸不耐烦地拿着简历:有没有做过支付啊?给我说下支付流程吧我战战兢兢:有的有的,XX项目里接入了%*&(&*%大佬扶了扶眼镜,皱皱眉头:你们项目任务调度用的啥?我:xxl-job大佬看了我一眼:说说他底层怎么实现的?我:…大佬:那有没有做过除了增删查改之外的东西?我苦思冥想:(是在问我有写过框架吗…)没有的,都是在写业务,对数据处理…大佬更加不耐烦:那你这不是码农吗思考恍恍惚惚从公司走
2021-01-09 16:08:34
435
原创 【LeetCode】739. Daily Temperatures 栈的使用
【LeetCode】739. Daily Temperatures 栈的使用Given a list of daily temperatures T, return a list such that, for each day in the input, tells you how many days you would have to wait until a warmer temperature. If there is no future day for which this is possible
2020-12-23 17:37:08
107
原创 【LeetCode】动态规划:第62题. Unique Paths
62. Unique PathsA robot is located at the top-left corner of a m x n grid (marked ‘Start’ in the diagram below).The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid (marked ‘F
2020-11-16 15:23:46
110
原创 【工作问题】MYSQL中字符串Id数组如何全部转换为中文?GROUP_CANCAT()
最近的需求有这么个场景:一张表存了开票主体的数据,其中权限设置包含了能使用这个主体开票的部门Id字符串(例如这样的:23,424,525,122,3232),做某张报表的时候要求把这些部门Id都转为中文显示出来。一开始也是觉得用SQL怎么可能实现呢?我只知道怎么去查一个部门的名字,Like一下就能查出来。但查出来之后还要怎么拼接起来再保存为一列呢?这用代码不就一行的事情,非要搞这么复杂ε=(´ο`*)))唉。GROUP_CANCAT()然后翻了一下Google(面向搜索引擎编程)发现了GROUP
2020-11-16 15:05:40
669
原创 【工作问题】略复杂Sql实现:如何把业务逻辑揉进Sql语句中?
场景最近在做公司的泛微二次开发,遇到了一个算麻烦的问题。有个需求大概是这样:返回实时计算剩余额度的开票公司主体列表。按一般MVC逻辑就很简单,先把公司主体列表全部取出来,再for循环一次遍历按照各种不同的条件计算好额度赋值后,返回给前端。但泛微这边不行(开发过的兄弟应该都懂…),因为前端经过了深度的封装,无法通过调用外部接口和传参进行实现该需求。那剩下的只有一个办法,就是业务逻辑全部通过sql实现,泛微前端通过调用该sql和传参,进行实时计算后返回。拆分需求一开始我觉得这是无法实现的,哪有业务逻辑写
2020-10-05 16:00:28
1080
原创 【LeetCode】424. Longest Repeating Character Replacement滑动窗口算法
【LeetCode】424. Longest Repeating Character Replacement滑动窗口Given a string s that consists of only uppercase English letters, you can perform at most k operations on that string.In one operation, you can choose any character of the string and change it to
2020-09-16 15:15:54
119
原创 【工作问题】SpringAOP+注解实现接口出入口日志
AOP面向切面编程。将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。像平时开发,基本都要求在接口出入口增加Logback日志记录,方便调试排查问题。最简单的方法当然就是手动添加Log.info();但为什么不尝试Aop呢?一个注解就可以解决所有的出入口日志,不仅如此还可以同时记录接口执行时间Spring AOP在Spring中:1、如果目标对象实现了接
2020-09-05 23:44:42
288
原创 【LeetCode】662. Maximum Width of Binary Tree二叉树的最大宽度
662. Maximum Width of Binary Tree二叉树的最大宽度Given a binary tree, write a function to get the maximum width of the given tree. The maximum width of a tree is the maximum width among all levels.The width of one level is defined as the length between the end-n
2020-08-22 22:35:44
99
原创 【Redis】Redis配置多数据源
Redis配置多数据源一般来说单个服务都是只配置一个Redis地址端口指定数据库和一个关系型数据库。但是也偶尔会出现一个服务需要连接不同的两个或以上的Redis地址进行读写数据,比如说最近的公司需求:员工分散在两个相似的单体服务,在新增员工时,要保证在两个数据库内的工号不重复且自增。其实这种情况我觉得还是利用消息队列如RabbitMQ好处理的,但苦于目前的小中台内没有搭建完善的消息队列,所以暂时还是只能从数据源下手,再考虑到暂时以后也不会再新增类似服务,且管理新增员工的同事只有一个人,所以暂时不考虑
2020-08-16 18:56:22
864
原创 【设计模式】合同PDF生成:模板设计模式
场景最近公司在搞新OA系统,有个比较大的需求就是在线生成合同模板的PDF文件。合同流程大概是这样的:而生成合同PDF文件这个需求说来也不复杂,其实就是这样:总的来说就是查询数据,调用接口,保存流,完事。但其中因为事业部不同,需要填充的参数肯定也不同,而且中间可能会有附加操作。也就是说除了这个需求流程绝对不变,其他中间代码可能会不一样。那这时候,模板设计模式就上场了。模板设计模式我理解的模板设计模式其实很简单,就是一个Abstract类包含了公用函数,具体类去实现这个抽象类,override抽象类
2020-08-09 17:40:22
305
原创 【工作问题】Mysql的Group By查询报错问题
Mysql的Group By查询报错问题最近用FineReport弄了几个报表,原先在测试数据库环境下跑的溜溜的,结果一切到正式数据库,报错了:ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test.user.user_id' which is not functionally dependent on columns in
2020-07-30 22:57:06
272
原创 【ElasticSearch】ElasticSearch的基本概念
ElasticSearch基本概念索引 Index类似于传统RMDB的数据库,ElasticSearch的数据存储在一个或多个索引中,可以向索引写入文档或者从索引读取文档,并通过ElasticSearch使用Lucene将数据写入索引或从索引中检索数据。文档 Document主要实体。文档由字段构成,每个字段都有字段名以及一个或多个字段值。从客户端角度看,文档是一个JSON对象。映射存储ElasticSearch提供的各种特性,如排序时所需的字段内容信息、一些决定如何将输入文本分割为词条的参数、
2020-07-28 22:41:40
105
原创 【工作问题】URLConnection中文乱码问题
今天遇到一个很“奇怪”的问题,使用URLConnection发送POST请求调用中台某个接口一直返回500错误。那就开始排查问题吧。确认了请求参数的格式没有错误,标点符号都是对的,并且加了请求头参数connection.setRequestProperty("Accept-Charset", "UTF-8");,再次调用还是返回500错误。看了一眼我的请求参数,突然意识到是不是我传了中文的问题?于是把中文全部换成英文,调用成功。那问题来了,为什么有中文服务器就会返回500呢?我很确定传过去的JSO
2020-06-10 00:02:57
569
原创 【Redis】Redis的淘汰策略
Redis的内存淘汰当Redis的实际使用内存超出Redis配置参数maxmemory后,Redis会根据配置来决定如何腾出新的空间来继续提供读写服务。这和Reids的过期策略不一样,过期策略是设置了过期时间的key的删除策略,而内存淘汰是当内存溢出时发生的事件。几种可选淘汰策略:通过maxmemory-policy进行设置:1、noeviction(默认):写请求不可用,读请求可用(del指令也可用),保证了数据不丢失,但线上业务不可持续进行。2、volatile-lru:尝试淘汰设置了过期时
2020-06-08 00:17:04
253
原创 【Redis】Redis过期策略
Redis的过期策略Redis中所有数据结构都可以设置过期时间,在一个key设置了过期时间后,Redis会将该key放入一个独立的字典中,并定时遍历这个字典来删除到期的key(定时删除)。也可以在客户端访问这个key的时候,对key 的过期时间进行判断,过期了再删除(惰性删除)。定时扫描策略1、先从过期字典随机选出20个key(扫描耗时上限25ms);2、判断并删除已经过期的key;3、如果过期key的比例超过25%,回到步骤1;需要注意的是,从节点不会进行过期扫描,而是主节点key到期时删除
2020-06-07 01:47:11
123
原创 【Redis】Redis集群:Sentinel
Redis Sentinel基本原理Redis提供的一种高可用方案:类似于监控器,当故障发生时可以自动进行主从切换(自动选择一个最优的从节点切换为主节点),一般由3-5个节点组成。客户端连接Redis集群时,会首先连接Redis Sentinel(如果有的话),再通过Sentinel查询主节点的地址进行连接。若主节点因各种原因不可用时,一个从节点会被提升为新的主节点,其他从节点开始和新的主节点建立主从关系。而客户端重新向Sentinel查询最新主节点的地址进行连接。而原先挂掉的主节点恢复后,变成从
2020-06-02 23:49:58
143
原创 【Redis】Redis集群:主从同步
当网络分区发生时,一致性和可用性两难全。Redis的一致性与可用性Redis的主从数据是异步同步的,分布式的Redis并不满足一致性要求。但Redis保证最终一致性,从节点会采用多种策略追赶,尽力保持和主节点一致。客户端在Redis主节点修改了数据后,立即返回,即使在主从网络断开的情况下,主节点依旧可以正常对外提供修改服务,所以Redis满足可用性。增量同步Redis同步的是指令流,主节点会将产生修改性影响的指令记录在本地内存buffer中,然后异步将buffer中的指令同步到从节点。从节点则一.
2020-05-31 22:52:27
415
原创 【Redis】Redis原理:事务
什么是事务?一系列操作要么全部执行,要么全部不执行。也就是保证连续多个操作的原子性。比如前面Redis分布式锁时提到的Setnx和Expire的问题Redis事务基本用法multi:事务的开始exec:事务的执行discard:事务的丢弃,用于丢弃事务缓存队列中的所有指令,在exec之前multi//事务开始SET page 20//指令incr pageexec//事务执行所有指令在exec执行前都不执行,而是缓存在服务器的一个事务队列中。直到收到exec指令,才开始执行整个事务队列
2020-05-31 20:09:54
144
原创 【Redis】Redis原理:持久化
为什么需要持久化?Redis数据都存在内存里,也就是说如果你不小心踢了电源,或者电脑突然宕机,数据就全部OVER了。所以就得有一种机制保证Redis的数据不会因为各种各样的故障丢失。Redis的持久化机制有两种机制,第一种RDB快照,对数据做一次全量备份,本质是内存数据的二进制序列化形式;第二种AOF日志,连续的增量备份,记录的是内存数据修改的指令记录文本。RDB原理Redis是单线程程序,也就意味着这个线程要同时负责多个客户端套接字的并发读写操作和内存数据结构的逻辑读写。而且RDB内存快照要求
2020-05-24 22:27:17
177
原创 【Redis】Redis原理:线程IO模型
Redis为什么快?1.Redis所有数据都在内存中存储,所以所有运算都是内存级别的运算。正因为避免了从磁盘中获取数据,Redis才会如此的快。2.还有一点就是因为Redis是单线程程序,从而避免了上下文切换的消耗。但也因为如此,时间复杂度高(O(n))的指令如keys 可能会导致Redis卡住。多路复用事件轮询也就是多路复用,是用来解决非阻塞IO的线程通知问题——当数据准备好,线程如何得到通知;缓冲区被写满,数据写不进去,剩下的数据该何时被写入,线程又如何得到通知。事件轮询API,操作系统提供的
2020-05-24 01:20:30
291
原创 【Redis】Redis分布式锁
为什么需要分布式锁?因为分布式系统中进行逻辑处理时会遇到并发问题。比如一个操作要修改某个订单的状态,而修改状态就需要先读出订单的状态,在内存里修改完了再存回Redis。如果同时有很多个这样的操作同时要修改同一个订单,并发问题就出现了。因为读取和修改并不是一个原子操作,当发生上下文切换的时候,读取和修改是可以被线程调度机制打断的。Redis分布式锁本质其实就是某个操作在操作前使用Redis的setnx指令占坑,操作完了再用del指令把门开了。而别的操作进来需要判断这个坑有没有被使用,被使用了则需要等待
2020-05-23 13:48:34
201
原创 【工作问题】Mysql数据库隐形空格导致的BUG
【工作问题】Mysql数据库隐形不显示空格导致的BUG今天工作中需批量导入手机号码等数据,写了个判断手机号码String.length()不为11位的写入到错误文件中。过程还算顺利,大部分号码是对的,但是结果中出现两个我"确定"为11位的手机号码"158XXXX8403",无论是Mysql数据库中还是idea,点击复制都是妥妥的"11"位,前后确定没有空格!真是百思不得其解。然后写了个System.out.println("手机号".length()),看看这个号码测出来不是11位是多少位?结果打印出
2020-05-17 01:38:08
642
原创 【工作问题】Idea死活不能引用本地Class类(Import Class)导致报红问题
今天项目的service类玩着玩着就突然报红了,Import Class不行,就是死活找不到类,导致override等各种报错。撤销所有更改,也不行还是爆红无法找到类。但是项目可以运行,接口也能使用,那问题出在哪里呢。。。搜了一会,发现了解决办法记录一下。原因:IDEA中的缓存。项目中的缓存,建立的索引报错了,导致不能正常引用现有的类。解决:清理idea缓存,如图。点击后清理缓存并重...
2020-05-07 16:58:03
4821
1
原创 【Redis】Redis基础(一):数据结构
Redis安装DOCKERdocker pull redisdocker run --name redis -d -p6379:6379 redisdocker exec -it redis redis-cliUbuntuapt-get install redisRedis数据结构String(字符串)内部表示是一个字符数组,是可以修改的字符串,类似于ArrayList,采...
2020-04-26 11:00:03
76
原创 【Java】2020年Java面试题二
最近面了一些公司,总结一下面试题。答案后面再写吧。。1、HashMap和CoucurrentHashMap底层原理2、Oracle和MySQL的区别3、Spring的核心4、IOC5、JUC,锁方面6、MySQL事务7、MySQL索引8、MyBatis原理呃。。。确实不太了解9、针对之前的项目问了挺多东西的自我总结一下:关于Spring底层的一些原理还是没有理清,对各种...
2020-04-21 16:27:33
330
1
原创 【Java】2020年Java面试题一(2020年)
今天Java基础(多线程,JVM等)没怎么考察,但其他方面都有所涉猎,从框架底层到架构方面都有问到。稍微记录一下问到的题吧!!!1、索引不生效的情况:1.有or必全有索引;2.复合索引未用左列字段;3.like以%开头;4.需要类型转换;5.where中索引列有运算;6.where中索引列使用了函数;7.如果mysql觉得全表扫描更快时(数据少);自身总结:这个平时explain...
2020-04-18 22:05:58
200
原创 【工作问题】Java如何主动推送数据到浏览器?
X86客户端的又一个需求。。写惯了接口都不知道该怎么主动推送数据了。。Websocket,一种在单个 TCP 连接上进行全双工通讯的协议。也就是说,它允许服务端主动向客户端推送数据。并且只需要一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。简单说,就是服务器可以主动推送数据到浏览器客户端,客户端也可以请求数据。那就实现一下⑧:首先,依赖包是必须的 <depende...
2020-04-18 16:51:07
899
原创 【Java】单例模式UncaughtExceptionHandler类实现捕获全局未处理异常
UncaughtExceptionHandler类:method invoked when the given thread terminates due to the given uncaught exception.当线程由于未捕获异常终止时调用的处理接口。简单说就是实现该类后,Override该接口的uncaughtException方法,可以捕获到全局未捕获(没有抛出或catch)的异...
2020-04-13 09:43:33
164
原创 【工作问题】SpringContextUtils.getBean和@Autowired的问题
今天写了一个类实现的是UncaughtExceptionHandler接口,用于捕获未处理的异常,然后将报错信息存入数据库。 @Autowired ExceptionMsgService exceptionMsgService;//null ExceptionMsgService exceptionMsgService = SpringContextUtils.getBe...
2020-04-09 12:54:03
4486
1
原创 【JUC多线程】锁的分类
锁的分类不互斥,多个类型可以并存。如ReentrantLock是互斥锁也是可重入锁。1、线程是否需要锁住共享的资源:锁住——悲观锁不锁——乐观锁2、是否可中断:可以——可中断锁不可——非可中断锁3、同一线程能否重复获取同一把锁:可以——可重入锁不可——不可重入锁4、多线程是否可以共享一把锁:可以——共享锁不可——独占锁5、多线程竞争是否排队:排队——...
2020-04-07 21:41:37
147
原创 【JAVA】JavaCV实现简单录屏功能
最近接触的Java桌面程序需要一个录屏功能,然后就翻到了JavaCV,跟着教程大概写了一个,其中用上了之前用来截屏的Robot类JavaCV就是一款开源的视觉处理库,封装了FFmpeg、OpenCV、videoInput和ARToolKitPlus等等计算机视觉的接口。首先需要声明并初始化各种属性 private ScheduledThreadPoolExecutor screenT...
2020-04-03 10:14:40
3155
原创 【工作问题】Double类型不使用e指数打印展示
今天遇到了一个Double类型展示的问题。取出来数据后直接打印出来,会转换为5.212412417E14这样带e指数的格式。如果不需要转为e指数,则需要用到Java中的DecimalFormat格式进行转换。代码: DecimalFormat doubleFormat = new DecimalFormat(); doubleFormat.setMaximumFractionDigit...
2020-03-30 09:49:30
810
原创 【工作问题】阿里巴巴Canal不支持Elasticsearch7.0以上版本问题
用到了Canal来模拟Mysql的slave以通过Binglog来增量构建Elasticsearch的索引。发现Canal 1.1.3版本不支持Elasticsearch7.3版本。解决问题方法如下:通过github.com/alibaba/canal来下载开源代码idea导入canal-master更改elastcisearch包下的pom.xml的版本为7.3找到ESAdapter...
2020-03-19 15:52:19
1110
原创 【Java】Robot类createScreenCapture方法实现截屏功能
Java.Robot类此类用于为测试自动化、自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件。Robot 的主要目的是便于 Java 平台实现自动测试。也就是可以模拟键盘操作, 鼠标操作, 以及截图(应该可以用来实现一些自动脚本,类似消息刷屏这些)实现:在Robot类提供的createScreenCapture方法里传入一个Rectangle类就可以根据Rectangl...
2020-03-13 09:53:22
2770
原创 【Java】单例模式:U盘监听器和简单实现
单例模式:只能有一个实例检测到有U盘插入时,查找设备中的所有文件在U盘插入之前先获取系统开始的盘符数。两个线程分别为生产者和消费者生产者:循环检测系统盘符,若判断出盘符数增多,则该线程等待并唤醒消费者。消费者:一直处于等待状态,直到被生产者唤醒。单例:public class UDiskMonitor { //设为私有 private static final Logger ...
2020-03-11 11:36:17
909
原创 【工作问题】RestTemplate的三种使用方式?
第一种,URL写死:RestTemplate restTemplate = new RestTemplate();String response = restTemplate.getForObject("http://127.0.0.1:8080/log",String.class);第二种,用loadBalancerClient(SpringCloud提供)通过service名来获取ur...
2020-03-04 23:44:42
125
空空如也
房号如何排序,sql或算法
2023-02-06
jdk1.7 HttpsURLConnection 如何能调用https接口?
2022-07-20
企业微信部门人员同步
2022-05-17
企业微信如何同步组织架构?
2022-03-23
如何设计一个包含简易流程的系统?
2022-03-08
SQL语句如何进行优化?
2022-03-04
SQL如何根据某字段包含的数据主键(某主键,某主键)分组求和
2022-02-28
Springboot多字段排序
2022-01-26
微信开发如何获取到mac地址?
2022-01-24
SpringCloud分布式系统选择Feign还是动态切换数据源?
2021-09-20
弹幕怎么用Java实现?
2020-05-27
Postman中的transfer start是什么?
2020-05-16
Java中如何使用Cef浏览器实现动态HTML展示?
2020-03-19
Java.swt桌面程序如何监控播放的素材?
2020-03-17
Java中如何监控并处理所有可能的异常和错误?
2020-03-17
Oracle数据库日期存储为Varchar还是Date?
2020-01-07
SQL如何取同表内的关联数据?
2019-12-26
log4j2定期生成和删除过期日志文件的配置怎么写?
2019-12-23
JAVA的NameValuePair解析问题
2019-12-12
SQL语句同一张表内如何同时取出ID和父ID的数据
2019-11-14
Docker如何使用?容器化又是什么?
2019-11-07
Oracle如何防止插入相同数据?
2019-11-04
批处理覆盖文件和杀进程
2019-08-14
请问批处理BAT文件怎么写?
2019-08-14
SQL语句优化和前端AJAX
2019-08-13
sql语句中Left join的on和where
2019-07-28
idea无报错但显示空白页面是什么原因?
2019-07-26
maven项目mybatis generator运行报错 求帮忙!!
2018-07-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人