
JAVA
//Nevada
你只管努力,剩下的交给天意,早点毁灭吧。累了
展开
-
系统的TPS不达标,此时如何优化
对系统进行压测,比如每秒压个几百请求到几千请求,甚至上万请求,此时发现死活压不上去,压来压去,你的系统最多每秒就处理几百个请求,根本到不了几千个请求,此时就发现系统的TPS不达标。这个时候,如果发现TPS不达标,通常是说明你系统肯定是每个请求处理时间太长了,所以就导致你单位时间内,在有限的线程数量下,能处理的TPS就少了,这个时候往往要先优化性能,再提TPS。假设你一共有200个线程,结果你每个请求要耗费500ms,每个线程每秒就只能处理2个请求,200个线程每秒只能处理400个请求,比期望的单机处理5原创 2021-05-10 21:14:22 · 1834 阅读 · 0 评论 -
NIO笔记(1)
NIO(同步非阻塞)基本架构Selector、Channel、Buffer每一个Channel对应一个Buffer,Channel是双向的程序切换到Channel是由事件决定的,Event是一个重要的概念Selector对应一个线程,一个线程对应多个ChannelSelector根据不同的事件,在各个通道上进行切换Buffer就是一个内存块,是双向的,底层是有一个数组数据的读写是通过Buffer理解非阻塞的概念(关注的是程序在等待调用结果(消息,返回值)时的状态)从上图理解非阻塞原创 2021-04-13 17:37:46 · 305 阅读 · 3 评论 -
postman 中 form-data、x-www-form-urlencoded 的区别
form-data就是 http 请求中的 multipart/form-data, 它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有 Content-Type 来说明文件类型;content-disposition,用来说明字段的一些信息;由于有 boundary 隔离,所以 multipart/form-data 既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件。x-www-form-url..原创 2021-04-13 09:42:52 · 382 阅读 · 0 评论 -
SpringBoot结合Netty实现WebSocket推送功能
文章目录Http协议WebSocket代码演示总结:Http协议无状态,使得HTTP服务轻量级-HTTP消息冗长:HTTP消息包含消息头,消息体,换行符等。且大多采用文本传输。所以HTTP消息会有很多冗余消息并且消息占用字节数大,消耗过多的带宽半双工通信:同一时刻,数据只能往同一方向传输。比如向服务器发送消息时,服务器此时不可以向客户端发送消息。(不过目前HTTP2已经支持了全双工通信)1、WebSocket可以由tomcat和netty进行实现,这里选择用netty进行实现WebSocke原创 2021-04-01 17:06:37 · 3101 阅读 · 0 评论 -
记录下自己搜索日志
这是在打开陈浩网站跳出来的一个方框,再次看陈浩老师的文字被他深深的震撼了大家好,我是陈皓,网名左耳朵耗子(很多人问我为什么要叫这个“一只耳”的名字,你们猜),对了,我真的不是高手,我也不是牛人,离他们的距离还很大。我从2003年开始在网上记录一些自己的技术知识和想法,今天我还在努力学习希望能成长一个高手,因为,面对生活在今天这样技术日新月异的时代,我们每个人都是一个新人。我很幸运出生在这个时代——第三次工业革命的时代,也很幸运选对了专业,所以,可以算是一只“风口上的猪”了,就是运气好,赶上了这...原创 2021-02-18 16:07:49 · 244 阅读 · 0 评论 -
idea开启远程调试
在线上的环境和本地开发的环境不一样,当线上出现问题时idea开启远程调试这个技能在工作中还是很实用的,首先需要在服务器上按这行命令启动java -jar -Xms512m -Xmx512m -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 jar --server.port=9030然后再idea以debug方式启动就行了...原创 2021-02-03 10:58:59 · 168 阅读 · 0 评论 -
Spring 操作Mongo 进行增删改查
首先先贴上一个我在查阅资料时参考的一个链接,https://www.jianshu.com/p/a576499769ae,这篇文章大概讲解了如何利用Spring 操作Mongo进行增删改查。但是笔者在实际的开发过程中,遇到了多对多的模型设计,当然笔者第一时间也在互联网搜索了相关的资料,最终采用的设计,是存一个List集合。 "_id" : ObjectId("5ea132115cbf0e0d3a5d5578"), "Self" : { "PersonId" : "1", .原创 2020-12-27 12:12:24 · 278 阅读 · 0 评论 -
spring操作mongo进行增删改查
https://www.jianshu.com/p/a576499769ae转载 2020-12-25 17:29:57 · 162 阅读 · 0 评论 -
JVM调优
https://blog.youkuaiyun.com/qq_40368860/article/details/84494124转载 2020-12-25 17:26:20 · 119 阅读 · 0 评论 -
实现分布式id
如何实现分布式id,搜索相关的资料,一般会给出这几种方案:使用数据库自增Id 使用reids的incr命令 使用UUID Twitter的snowflake算法 利用zookeeper生成唯一ID MongoDB的ObjectId原创 2020-12-25 17:24:44 · 138 阅读 · 0 评论 -
类加载机制
**类是在运行期间第一次使用时动态加载的,而不是编译时期一次性加载。因为如果在编译时期 一次性加载,那么会占用很多的内存。**类加载包括以下 7 个阶段:加载(Loading)验证(Verification)准备(Preparation)解析(Resolution)初始化(Initialization)加载加载是类加载的一个阶段,注意不要混淆。加载过程完成以下三件事:...翻译 2019-12-14 20:57:33 · 212 阅读 · 0 评论 -
原子操作
原子操作(atomic operation)意为“不可被中断的一个或一系列操作”。处理器中的原子操作使用基于对缓存加锁或总线加锁的方式来实现多处理器之间的原子操作。首先处理器会自动保证基本的内存操作的原子性。处理器保证从系统内存中读取或者写入一个字节是原子的,意思是当一个处理器读取一个字节时,其他处理器不能访问这个字节的内存地址。使用总线锁保证原子性如果多个处理器同时对共享变量进行读改写...原创 2019-11-15 19:06:03 · 622 阅读 · 0 评论 -
JVM内存分配与回收策略
Minor GC 和 Full GCMinor GC:发生在新生代上,因为新生代对象存活时间很短,因此 Minor GC 会频繁执行,执行的速度一般也会比较快。Full GC:发生在老年代上,老年代对象其存活时间长,因此 Full GC 很少执行,执行速度会比 Minor GC 慢很多。内存分配策略对象优先在 Eden 分配大多数情况下,对象在新生代 Eden 区分配,当 Eden...原创 2019-11-14 19:39:21 · 164 阅读 · 0 评论 -
聊聊你对AQS的了解
AQS是一个并发包的基础组件,用来实现各种锁,各种同步组件的。包含了state变量、加锁线程、等待队列等并发中的核心组件。AQS全称是队列同步器AbstractQueuedSynchronizer,是用来构建锁或者其他同步组件的基础框架。它使用了一个int成员变量表示同步状态,默认情况下是0/**The synchronization state.*/private volatil...原创 2019-11-11 20:56:50 · 288 阅读 · 0 评论 -
synchronized
在多线程并发编程中synchronized一直是元老级角色,很多人都会称呼它为重量级锁。但是,随着Java SE 1.6对synchronized进行了各种优化之后,有些情况下它就并不那么重了。本文详细介绍Java SE 1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁,以及锁的存储结构和升级过程。先来看下利用synchronized实现同步的基础:Java中的每一个对...原创 2019-11-07 11:38:00 · 170 阅读 · 0 评论 -
什么是线程池——第一篇
什么是线程池?Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。主要处理流程:第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池...原创 2019-11-05 20:09:25 · 275 阅读 · 0 评论 -
hashmap-大厂必备
HashMap分析Hashmap在大厂面试中属于必考的内容,今天花了一个下午看了它的源码,不得不说,真的很经典。就看源码这个问题来说吧,我和我的好基友又产生了隔阂。我认为看hashmap的源码是有必要的,它的底层有很多的优秀的数据结构的应用,比如说红黑树、哈希、数组+链表。虽然以前我就从很多网上经典的面经,了解它的一些内容,但总归只是流于表面,认为自己看的懂就行了,其实这也是学习上一个很大的误区...原创 2019-11-02 22:02:02 · 196 阅读 · 0 评论