- 博客(670)
- 资源 (22)
- 问答 (1)
- 收藏
- 关注
转载 ⽤redis做榜单,分数相同时根据时间先后排序
项⽬⾥⾯有⼤量的榜单需求,很多场景下都是⽤zset来实现的。需求⾥⾯⽆⼀例外的都提到⼀个要求:分数相同的情况下,先到该分数的排前⾯。由于zset是分数优先,分数相同的时候⽤zset的member的字典序排列,并不满⾜先来后到这种需求。以前的做法基本都是分数拼凑⼀个时间量的做法:将zset的score值分成两部分:⾼位存分数,低位存时间差时间差⼀般是定⼀个截⽌时间x,x-now作为时间差⽤户a在x1时间达到了分数N,⽤户b在时间x2达到了分数N,x1<x2,那么x-x...
2022-05-30 15:07:09
1366
转载 Java-ForkJoinPool详解
今天和大家分享JDK1.7中出现的ForkJoinPool类。我们将从三个维度介绍ForkJoinPool。首先介绍ForkJoinPool出现的背景与思想,其次介绍ForkJoinPool使用方法以及性能比较,最后通过手写一个ForkJoinPool来展示其原理。
2022-05-30 00:13:02
11523
1
转载 自定义spring-boot-starter自动配置模块操作
一)spring-boot-starter命名规则自动配置模块命名规则:xxx-spring-boot,如:aspectlog-spring-boot启动器命名规则:xxx-spring-boot-starter,如:aspectlog-spring-boot-starter如两者只有一个模块:建议以xxx-spring-boot-starter方式命名。springboot建议以xxx前缀的方式对自己的自动配置命名的。二)spring-boot-starter条件注解 注解
2022-05-23 17:06:25
542
转载 栈的入栈和出栈的顺序规律
栈的入栈和出栈的顺序规律是先进后出,所以出栈的可能数目跟入栈的可能排列数目是一致的。a的出入有2中可能,b的出入有2种可能,c的出入有2种可能,d只需要关系入,只有一种可能。所以出栈方式数为2*2*2*1=8种。1.出栈的每一个元素的后面,其中比该元素先入栈的一定按照入栈逆顺序排列。举例说明:已知入栈顺序:1 2 3 4 5判断出栈顺序:4 3 5 1 2,结果:不合理,原因是出栈元素3之后有 5 1 2 这三个元素,其中1 2 是比3先入栈的,根据规律,这两个出栈的顺序必须和入栈顺序相反,也就是 2
2022-04-13 16:48:04
42115
11
转载 Mysql MVCC机制原理详解
目录什么是MVCCMysql的锁和事务隔离级别Mysql的undo logMVCC的实现原理什么是MVCCMVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。我们知道,一般情况下我们使用mysql数据库的时候使用的是Innodb存储引擎,Innodb存储引擎是支持事务的,那么当多线程同时执行事务的时候,可能会
2022-04-11 14:49:44
388
转载 Redis-过期Key删除/淘汰Kry策略
首先要区分master主节点和slave从节点。为什么呢?因为slave过期key的删除策略和master过期key的删除策略是不同的。一,redis主节点过期key的删除策略1,定时删除:在设置键的过期时间的同时,创建一个timer,让定时器在键的过期时间到达时,立即执行对键的删除操作。(主动删除)优缺点:对内存友好,但是对cpu时间不友好,有较多过期键的而情况下,删除过期键会占用相当一部分cpu时间。2,定期删除:每隔一段时间就对数据库进行一次检查,删除里面的过期键。(主动删除
2022-03-31 21:52:48
413
转载 Git 中 merge和rebase的区别
前言我从用git就一直用rebase,但是新的公司需要用merge命令,我不是很明白,所以查了一些资料,总结了下面的内容,如果有什么不妥的地方,还望指正,我一定虚心学习。merge和rebase标题上的两个命令:merge和rebase都是用来合并分支的。这里不解释rebase命令,以及两个命令的原理,详细解释参考这里。下面的内容主要说的是两者在实际操作中的区别。什么是分支分支就是便于多人在同一项目中的协作开发。比方说:每个人开发不同的功能,在各自的分支开发过程中互不影响,完成后
2022-03-31 11:08:06
1604
转载 JavaScript 字节单位换算函数解析
前言:我们在日常开发中,经常会遇到字节单位换算的场景。一般用简单的除法来计算时,都会遇到计算精度的问题。下面,我们着重要将的是一种精确字节单位换算的详解:1. 先看代码const byteConvert = function(bytes) { if (isNaN(bytes)) { return ''; } let symbols = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; .
2021-11-04 18:56:27
546
转载 Java8 LocalDateTime和Date相互转换
很想要用Java的时间api,但有时候还是需要转换为Date. 二者的相互转换并不是一步到位那么简单,所以,还是需要记录一下转换的apiDate to LocalDateTimeDate todayDate = new Date();LocalDateTime ldt = Instant.ofEpochMilli( todayDate.getTime() ) .atZone( ZoneId.systemDefault() ) .toLocalDateTime()
2021-06-08 15:19:14
362
转载 mongo查询常用小干货(指定返回列、排序、为空、以开头等等)
mongo查询常用小干货**1、查询 base中的snsId字段等于"wby"的文档:db.getCollection('account').find({"base.snsId":"wby"})2、查询 base中的snsId字段包含"wby"的文档:db.getCollection('account').find({"base.snsId":/wby/})3、查询 base中的snsId字段以"wby"开头的文档:db.getCollection('account').find({"ba
2021-05-27 14:52:26
983
转载 JS常用的循环遍历你会几种
前言数组和对象作为一个最基础数据结构,在各种编程语言中都充当着至关重要的角色,你很难想象没有数组和对象的编程语言会是什么模样,特别是 JS ,弱类型语言,非常灵活。本文带你了解常用数组遍历、对象遍历的使用对比以及注意事项。数组遍历随着 JS 的不断发展,截至 ES7 规范已经有十多种遍历方法。下面按照功能类似的方法为一组,来介绍数组的常用遍历方法。for、forEach、for ...ofconst list = [1, 2, 3, 4, 5, 6, 7, 8,, 10, 11];
2021-05-26 17:06:15
286
转载 script标签的type为text/template模板的使用
在js里面,经常需要使用js往页面中插入html内容。比如这样: var number = 123; $('#d').append('<div class="t">'+number+'</div>');12如果html很短还好说,但是遇到描述里面的这么大段,直接用字符串存储会很困难,因为不光要处理单引号,还需要很多「+」号把字符串一个个连接起来,十分的不方便。给<script>设置type="text/template",标签里面的内容不会被执...
2021-05-13 16:53:06
2207
1
转载 java处理IOS无法播放视频流(Accept-Ranges)
最近在做一个在线播放视频流的程序,安卓和电脑上都可以正常的播放。可以唯独ios上无法正常播放。开始在网上找了很多资料觉得不是很到位,所以在这里记录一下。刚开始时代码返回的视频流是在一个请求里全部返回的,而苹果的浏览器会先发一次探测请求来获取文件大小,之后再发送多次请求来分段取数据流的数据,其实这里就是一个分段上传的思想(Accept-Ranges)。有两个很重要的点就是, 第一:需要根据请求内容的不同做出不同的响应,第一次探测请求需要返回200,后面的请求需要返回206和具体数据 第二:
2021-04-16 11:02:48
1351
1
转载 详解HTTP Header里的Range和Content-Range参数
这个话题是从实现一个http资源的静态访问引发的。http协议从1.1开始支持获取文件的部分内容,这为并行下载以及断点续传提供了技术支持。它通过在Header里两个参数实现的,客户端发请求时对应的是Range,服务器端响应时对应的是Content-Range;通过tomcat看一下这两个参数。在应用的根目录下放了一张图片”chain.jpg”,图片的大小是4932字节,用curl模拟分段请求,请求时把respons的header给dump到一个文件里:$ curl -D "resp-header1
2021-04-16 11:00:04
2253
转载 15 个 Linux 实用技巧
熟悉 Linux 系统的同学都知道,它高效主要体现在命令行。通过命令行,可以将很多简单的命令,通过自由的组合,得到非常强大的功能。命令行也就意味着可以自动化,自动化会使你的工作更高效,释放很多手工操作,让你有更多的时间去做更有意义的事情。这篇文章,会分享一些非常实用小技巧,希望能够帮助你提高工作效率,学完就能够用得上!1. 快速清空文件的方法快速清空一个文件,有 N 种方法,我比较喜欢下边这种,因为它最短$>access.log不过瘾?好吧,我也顺便总结下,其它几种..
2021-04-08 10:35:37
696
转载 Jvm 参数xms和xmx是否必须设置相等
最近申请了几台机器专门用来运行Kafka Streams应用,发现经常发生OOM导致应用挂掉,原因是启动的时候指定了-Xms2G -Xmx2G,所以16G内存的机器没启几个应用内存就被占满了,尽管这些程序只是空跑。查了一下一般都建议-Xms和-Xmx设置为相等,那么能不能设置为不一样呢?先了解一下-Xms和-Xmx的含义-Xms初始堆的大小,也是堆大小的最小值,默认值是总共的物理内存/64(且小于1G),默认情况下,当堆中可用内存小于40%(这个值可以用-XX: MinHeapFreeRat
2021-04-06 16:28:34
1956
转载 Spring 集成JMX示例
在Spring中,可以方便地集成JMX。那么第一个问题来了:什么是JMX?JMX是Java Management Extensions,它是一个Java平台的管理和监控接口。为什么要搞JMX呢?因为在所有的应用程序中,对运行中的程序进行监控都是非常重要的,Java应用程序也不例外。我们肯定希望知道Java应用程序当前的状态,例如,占用了多少内存,分配了多少内存,当前有多少活动线程,有多少休眠线程等等。如何获取这些信息呢?为了标准化管理和监控,Java平台使用JMX作为管理和监控的标准接口,任何程
2021-03-18 10:07:47
1053
转载 java 锁升级机制
锁的使用很难避免,如何尽量提高锁的性能就显得比较重要了锁偏向所谓的偏向锁是指在对象实例的Mark Word(说白了就是对象内存中的开头几个字节保留的信息,如果把一个对象序列化后明显可以看见开头的这些信息),为了在线程竞争不激烈的情况下,减少加锁及解锁的性能损耗(轻量级锁涉及多次CAS操作)在Mark Word中有保存这上次使用这个对象锁的线程ID信息,如果这个线程再次请求这个对象锁,那么只需要读取该对象上的Mark Word的偏向锁信息(也就是线程id)跟线程本身的id进行对比,如果是同一个id就直
2021-03-15 10:24:28
458
转载 ThreadLocal父子线程传递实现方案
介绍InheritableThreadLocal之前,假设对 ThreadLocal 已经有了一定的理解,比如基本概念,原理,如果没有,可以参考:ThreadLocal源码分析解密.在讲解之前我们先列举有关ThreadLocal的几个关键点每一个Thread线程都有属于自己的ThreadLocalMap,里面有一个弱引用的Entry(ThreadLocal,Object),如下Entry(ThreadLocal k, Object v) { super(k); .
2021-03-15 10:10:52
454
转载 mathjs - 解决小数点计算准确问题
<script src="https://cdn.bootcdn.net/ajax/libs/mathjs/7.2.0/math.min.js"></script><script> console.log(1.3+1.1); // 2.4000000000000004 console.log(1.3-1.1); // 0.19999999999999996 console.log(1.3*1.1); // 1.4300000000000002 conso.
2021-03-11 16:30:03
1155
转载 如何下载视频网站中video标签中的视频资源以blob:http开头的地址的资源
一、问题场景想下载知乎视频资源,却发现视频链接是这个样子的blob:https://v.vzuu.com/b6146956-6e52-406d-8909-f3f1b81ae461当时一脸懵比啊~难道blob:https是什么牛逼的新协议?于是进行了一番探索二、探寻结论结论就是blob:https并不是一种协议,而是html5中blob对象在赋给video标签后生成的一串标记,blob对象对象包含的数据,浏览器内部会解析;在web容器中的页面代码浏览器访问...
2021-03-04 23:55:31
13509
3
转载 LockSupport详解
LockSupport是一个编程工具类,主要是为了阻塞和唤醒线程用的。使用它我们可以实现很多功能,今天主要就是对这个工具类的讲解,希望对你有帮助:一、LockSupport简介1、LockSupport是什么刚刚开头提到过,LockSupport是一个线程工具类,所有的方法都是静态方法,可以让线程在任意位置阻塞,也可以在任意位置唤醒。它的内部其实两类主要的方法:park(停车阻塞线程)和unpark(启动唤醒线程)。注意上面的123方法,都有一个blocker,这个blocke.
2021-02-24 14:31:25
1227
转载 IaaS,PaaS,SaaS 的区别
越来越多的软件,开始采用云服务。云服务只是一个统称,可以分成三大类。IaaS:基础设施服务,Infrastructure-as-a-service PaaS:平台服务,Platform-as-a-service SaaS:软件服务,Software-as-a-service它们有什么区别呢?IBM 的软件架构师 Albert Barron 曾经使用披萨作为比喻,解释这个问题。David Ng 进一步引申,让它变得更准确易懂。请设想你是一个餐饮业者,打算做披萨生意。你可
2021-02-24 10:33:11
318
转载 理解Linux shell中2>&1
A.首先了解下1和2在Linux中代表什么在Linux系统中0 1 2是一个文件描述符名称 代码 操作符 Java中表示 Linux 下文件描述符(Debian 为例) 标准输入(stdin) 0 < 或 << System.in /dev/stdin -> /proc/self/fd/0 -> /dev/pts/0 标准输出(stdout) 1 >, >>, 1> 或 1>
2021-02-23 15:41:06
191
转载 Java分布式锁详解
原文出自:https://blog.csdn.net/seesun2012什么是锁?在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量。 而同步的本质是通过锁来实现的。为了实现多个线程在一个时刻同一个代码块只能有一个线程可执行,那么需要在某个地方做个标记,这个标记必须每个线程都能看到,当标记不存在时可以设置该标记,其余后续线程发现已经有标记了则等待拥有标记的线程结束同步代码块取消标记后再去尝试设置标记
2021-02-19 11:12:06
425
原创 Java视频编码转换示例
/** * 视频压缩 * movToMp4("C:/mysoftware/video/test188.avi","C:/mysoftware/video/test188temp.mp4"); * @param sourcePath 视频来源 * @param targetPath 压缩后的视频地址 */ private static void convertToMp4(String sourcePath, String targetPa...
2021-02-04 11:04:01
909
转载 使用Xshell登录Vagrant的方法
Xshell登录Vagrant方式我上一篇文章 介绍了vagrant 如何创建虚拟机集群,在上篇文章的基础上,用xshell 登录 虚拟机发现 默认是无法使用账号密码登录root账号,只能使用vagrant账号,密码vagrant,vagrant账号登录在虚拟机 vagrantfile 的目录位置 打开控制台,输入vagrant ssh-config$ vagrant ssh-configHost k8s-m1 HostName 127.0.0.1 User vagrant
2021-01-31 22:41:44
569
转载 HttpClient4.3.X 禁止自动重定向
//HttpClient4.3中默认允许自动重定向,导致程序中不能跟踪跳转情况,其实只需要在RequestConfig中setRedirectsEnabled(false)即可(默认是true)://另外如发生重定向,response的状态码为302,不是200。HttpStatus.SC_MOVED_TEMPORARILYpublic class CustomerGateway implements Gateway, InitializingBean, DisposableBean {.
2021-01-21 23:21:20
752
原创 SpringMVC下载大文件时内存溢出的处理方法
利用SpringMVC下载大文件时内存溢出的处理文件的上传和下载是Web系统中的一个很普通的功能,实现的方式也有很多种,如利用java.io下面的各种IO类自己实现,或者利用Commons IO1包中的FileUtils、IOUtils类中封装好的方法直接调用。由于目前我所开发的系统采用了SpringMVC1来作为项目的MVC实现,所以很自然的采用SpringMVC1内置的API进行文件的下载,但在实际使用过程中发现其对大文件的下载支持不太好,现把解决方案记录如下:@...
2021-01-21 23:07:13
2083
1
转载 使用js修改url地址参数并修改url地址
注: 微信小程序和公众号内屏蔽了 eval() 函数,需要用其他方法解决修改浏览器地址参数:function changeURLArg(url,arg,arg_val){ var pattern=arg+'=([^&]*)'; var replaceText=arg+'='+arg_val; if(url.match(pattern)){ var tmp='/('+ arg+'=)([^&]*)/gi'; tmp=url..
2021-01-19 11:12:07
6490
1
转载 解决DIV层被OBJECT、SELECT控件遮盖问题
浮动层或便捷菜单给用户操作极大的便利。使用IE6、7时,SELECT控件不能被DIV遮盖。OBJECT控件也不能被DIV遮盖。究其原因,大多表单控件或HTML控件是使用浏览器本身渲染绘制,因此层次可以由浏览器自身控制。而SELECT控件是Windows窗口控件,同样可见型ActiveX容器也是使用面向Windows技术开发。它们表现实质仍是相同,都是Windows窗口包含句柄。因此,浏览器不能对其调整层次,浏览器本身与他们都是平级的。尽管IE8中解决了SELECT控件的问题,但OBJECT控件依然没办法改变
2021-01-18 18:36:52
403
转载 ssh转发代理:ssh-agent用法详解
使用ssh-agent之前使用ssh公钥认证的方式可以免去ssh客户端(如ssh命令、xshell等)连接远端主机sshd时需要输入对方用户密码的问题。但如果执行ssh命令所在的主机上保存了多套秘钥且将各公钥分发给了不同的远端主机,这时即使使用了公钥认证,也依然需要输入密码,因为ssh客户端不知道要读取哪个私钥去和该远端主机上的公钥配对。看下面这张图描述的情况:上面描述的情形是这样的:ssh客户端要管理web server群,还要管理mysql server群,ssh客户端要为这两.
2021-01-06 11:17:51
1639
转载 Java中getResourceAsStream的用法
首先,Java中的getResourceAsStream有以下几种:1. Class.getResourceAsStream(String path) : path 不以’/'开头时默认是从此类所在的包下取资源,以’/'开头则是从ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。2. Class.getClassLoader.getResourceAsStream(String path) :默认则是从ClassPath根下获取,path不能以..
2020-12-14 11:01:30
216
转载 vue如何实现路由权限控制
前言在实际的开发过程中,我们通常会涉及到权限的问题,不同的用户进来只能看到他对应的菜单权限,页面上的菜单渲染是比较好实现的,这里就不多提,唯一比较难的就是路由的权限控制。解决思路目前大概有两种思路可以实现路由的权限控制:1.通过router.beforeEach() 路由拦截的方式实现。2.通过vue-router 官方提供的addRoutes()来进行动态路由注入,注意该方法只有vue-router的版本>= 2.2才有效。我们可以来看这两种方式是如何实现的:解决方案..
2020-12-09 16:01:23
4790
6
转载 前端路由模式详解
一、路由模式解析 要讲vue-router的路由模式,首先要了解的一点就是路由是由多个URL组成的,使用不同的URL可以相应的导航到不同的位置。 如果有进行过服务器开发或者对http协议有所了解就会知道,浏览器中对页面的访问是无状态的,所以我们在切换不同的页面时都会重新进行请求。而实际使用vue和vue-router开发就会明白,在切换页面时是没有重新进行请求的,使用起来就好像页面是有状态的,这是什么原因呢。 这其实是借助了浏览器的History API来实现的,这样可以使得页面跳转而不刷
2020-12-09 15:45:21
2035
springboot 与 javaFX 集成 自定义starter
2018-05-20
最新Xsell6个人/家庭 免费版
2019-01-02
IDEA 日志输出样式插件grep console
2018-06-12
音视频直播点播解决方案.zip
2020-06-18
xps viewer 1.1.0
2018-06-12
springsource-tool-suite 适应eclipse 4.7的spring插件
2018-05-20
VirtualBox-5.2.12-122591-Win.exe 官方资源32与64都可用
2018-05-20
官方ffmpeg-4.2.1.tar.gz安装包
2020-01-16
Java开发手册泰山版.pdf,发布时间2020-04-22
2020-04-22
EditPlus 文本编辑器 已破解
2018-05-20
DateConvertUtil.java
2020-04-03
ffmpeg调用工具包.zip
2020-06-19
vagrant_2.2.6_x86_64.rpm
2020-01-16
exe4j 64位 含注册码
2018-06-12
Java 后台reponse 返回视频的流, 前台使用ckplayer 怎么播放视频?
2019-06-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅