- 博客(11)
- 资源 (1)
- 问答 (4)
- 收藏
- 关注
原创 Linux服务器查看内存使用情况
前言在日常开发或者生产环境,我们经常需要查看linux服务的内存使用情况,所以能熟练敲出命令能便于我们快速定位问题,这里来和大家一起学习linux的常用查看内存命令。free命令free命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。很清晰明白的显示出了总内存多少,已使用多少,还剩下多少。这里可以看到Swap的used已使用了811Mb,服务器上跑了一个下载音频的进程,物理内存已经不够用了,所以从磁盘中虚拟出一部分的内存。当然我们可以使用free.
2020-09-28 22:50:55 1158
转载 理清 WebSocket 和 HTTP 的关系
前言基本上但凡提到WebSocket和HTTP的关系都会有以下两条WebSocket和HTTP都是基于TCP协议的两个不同的协议 WebSocket依赖于HTTP连接作为结论性的总结,直接了当,但是我需要更多的实现细节来解释上述结论。因为都是基于TCP的两个独立的协议,WebSocket按理说可以和HTTP没有关系,所以这里面包含两个问题:WebSocket依赖于HTTP连接,那么它如何从连接的HTTP协议转化为WebSocket协议? WebSocket为什么要依赖于HTTP协议的连接?
2020-09-28 10:36:35 351
原创 Java异常处理的正确打开方式
前言我们在日常开发中,对于异常的处理也是很有讲究的,并不是逮到异常,一段try、catch、finally。实际异常也有自己的处理最佳原则,这里列举下异常处理的最佳实践。线上代码 No printStackTrace()写完代码后请一定要检查下,代码中千万不要有printStackTrace()。因为printStackTrace()只会在控制台上输出错误的堆栈信息,他只适合于用来代码调试。真正需要记录异常,请使用日志记录。目前成熟的日志框架有很多,logback、log4j、slf4j-sim
2020-09-27 22:53:24 228
原创 FutureTask源码介绍
前言日常开发中,我们经常需要用到多线程异步任务执行,异步任务执行之后,我们需要获取到任务执行的结果,是执行成功了,还是失败了,对于这个场景Runnable肯定是不能满足的,有的小伙伴可能会说Callable可以获取到任务执行的结果。是的没毛病,这里来和大家一起学习Runnable和Callable的合体-FutureTask。简单小demopublic class FeatureTest { public static void main(String args[]) {
2020-09-24 22:51:56 185
原创 Linux日常操作之du和df
前言日常在使用linux服务器的时候,我们少不了需要使用一些简单的命令去查看linux服务的使用情况,比如经常常见的top命令,free命令等等,这里简单记录下linux操作中的du和df。高频操作之du -hLinux du (英文全拼:disk usage)命令用于显示目录或文件的大小。du 会显示指定的目录或文件所占用的磁盘空间。比如查看当前目录下的各个文件和目录的占用空间du -h --max-depth=1查看结果如下高频操作之df -hLinux df(英文全拼
2020-09-17 22:15:17 597
原创 git命令创建/切换分支
前言我们在使用git进行开发的时候经常会遇到需要切换远程分支并且提交到远程指定分支的情况,现在简单记录下操作步骤。当然现在的IDEA已经集成git,我们完全可以在IDEA上创建,切换分支。不过对于git命令操作,我们还是有必要能熟练操作的。查看远程所有分支$ git branch -agit branch不带参数,列出本地已经存在的分支,并且在当前分支的前面用*标记,加上-a参数可以查看所有分支列表,包括本地和远程,远程分支一般会用红色字体标记出来。$ git branch -a*
2020-09-16 23:10:18 1314
原创 RabbitMq之延时队列
前言前面在RabbitMq之消息限流与延时队列(上)中,我们介绍了rabbitmq如何设置限流,这里再和大家一起看下rabbitmq如何实现延迟队列。TTL 消息/队列TTL 是 Time To Live 的缩写,也就是生存时间的意思,RabbitMQ 支持消息的过期时间,在消息发送时可以进行指定,也支持队列的过期时间,从消息入队列开始计算,只要超过了队列的超时时间配置,那么消息会自动的清除。设置队列的话就是整个队列的消息到时都会过期,设置消息的话就是单条消息到时自动过期。// TTL队列
2020-09-15 22:54:11 527 1
转载 RabbitMq之消息限流与延时队列(上)
前言消息队列限流是指在服务器面临巨额流量时,为了进行自保,进行的一种救急措施。因为巨大的流量代表着非常多的消息,这些消息如果多到服务器处理不过来就会造成服务器瘫痪,影响用户体验,造成不良影响。所以要进行一次降级操作,把处理不了的流量隔绝在系统之外,避免它们打垮系统。基本上任何一个消息队列都有限流的功能,今天我们就来看看在 RabbitMQ 之中进行限流具体应该怎么做?RabbitMQ如何限流RabbitMQ 提供了一种 QOS(服务质量保证)功能,即在非自动确认消息的前提下,如果一定数目的消息还
2020-09-15 22:46:02 331
转载 RabbitMq如何保证消息可靠性
前言前面在深入浅出RabbitMQ中,我们大致介绍了下RabbitMq的一些基础概念,包括4中交换机模型。在实际企业应用中,我们往往需要需要考虑消息的可靠性。如果单纯的为了异步削峰,不考虑消息投递的可靠性,最终导致数据不一致,这肯定不是我们想要的。消息可能丢失的四个环节首先,我来看下消息在被生产到发送到MQ,再被路由到队列,紧接着被消费。其中大致流程如下图所示从图上我们大概可以看出来一个消息会经历四个节点,只有保证这四个节点的可靠性才能保证整个系统的可靠性。生产者发出后保证到达了MQ
2020-09-09 22:27:27 408
原创 Dubbo框架中SPI机制分析
前言前面我们在策略模式配置化之-SPI源码解析中学习了SPI机制,和大家一起看了下ServiceLoader类中如何通过配置实例化接口的实现类,这里再和大家一起看下Dubbo中的是如何通过SPI来拓展配置的。dubbo 的 spi 思想虽然Java 提供了对SPI机制的默认实现支持,但是并不表示所有的框架都会默认使用这种Java自带的逻辑,SPI机制更多的是一种实现思想,而具体的实现逻辑,则是可以自己定义的。例如我们说Dubbo框架中大量使用了SPI技术,但是Dubbo并没有使用JDK原生的Se
2020-09-04 22:22:17 217
原创 策略模式配置化之-SPI源码解析
前言前面在深入策略模式系列中,我们简单介绍了策略模式的原理,以及策略模式在jdk线程池中的应用,这里来和大家学习下策略模式在jdk SPI的应用,这里结合SPI的源码来一起学习下。SPI简介SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。常见的 SPI 有 JDBC、日志门面接口、Spring、SpringBoot相关starter组件、Dubbo、JNDI等。 实际上Java SPI是"基于
2020-09-03 23:08:27 544
Java+内存分析工具+MAT
2023-08-19
websocket实现聊天小demo
2023-05-12
aspose导出pdf乱码,配置字体库
2023-02-25
windows 2008 R2解决socket连接不释放补丁包
2019-01-17
aspose操作word文档,目录问题
2022-09-05
苹果退款接收latest_receipt_info数组里面的对象问题
2021-11-18
苹果商品内购,服务端提供接口订阅通知消息
2021-09-13
java.io.IOException: Premature EOF异常怎么解决
2020-09-17
jdk中的jre/lib/security目录下为啥要导入证书
2019-12-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人