赞了文章2023-04-20
在Go中,切片的本质是一个结构体,包含一个指向底层数组的指针(prt),长度(len),容量(cap)。所以,切片本身包含一个指针,将切片按值传递给函数,在函数内对其修改,影响将会传递到函数外。因为底层的数组被修改了。但当对切片进行append()操作,若是元素数量超...
赞了文章2021-08-04
「Java8系列」神秘的Lambda「Java8系列」神奇的函数式接口继上两篇之后,本文已经java8系列的第三篇了。本篇文章比较长,但我希望大家都能认真读完。读不完可以先收藏,在找时间读。没看过前两篇的可以点上边的链接看看,前两篇文章算是对是用Stream铺垫的一点基础吧...
赞了文章2021-07-23
在之前的文章中,笔者简要介绍了一下 HTTPS 的工作原理,在扩展阅读中,笔者提到了中间人攻击(Man In The Middle Attack,简称 MITM)而在本文中,笔者将进一步解释什么是中间人攻击。
赞了文章2020-07-28
本文以淘宝作为例子,介绍从一百个到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。
赞了回答2020-07-22
TCP四元组:源IP、目的IP、源端口、目的端口,这个东西确定一个TCP连接,客户端连接到服务器的时候,会选没被使用的端口作为源端口。 真正的数据传输的连接是在socket.accept()步骤之后新开的一个临时通信端口。 不是新开临时端口,是客户端先选了源端口,然后发起连...
赞了文章2020-07-01
最近在进行前端面试方面的一些准备,看了网上许多相关的文章,发现有一个问题始终绕不开: 在浏览器中输入URL到整个页面显示在用户面前时这个过程中到底发生了什么。仔细思考这个问题,发现确实很深,这个过程涉及到的东西很多。这个问题的回答真的能够很好的考验一个...
赞了文章2020-06-19
JDK1.8时,java.util.concurrent.atomic包中提供了一个新的原子类:LongAdder。根据Oracle官方文档的介绍,LongAdder在高并发的场景下会比它的前辈————AtomicLong 具有更好的性能,代价是消耗更多的内存空间:
发布了文章2020-06-17
并查集是一种非常有用且高效的数据结构,千万不要被这个极具专业性的名字吓到了,它的算法思想和代码实现都非常简单,不需要花太大力气就可以轻松掌握。下面就通过画图等方式为大家介绍一下这种神奇的数据结构。
发布了文章2020-04-17
在介绍三次握手和四次挥手之前,先来简单认识一下 TCP 报文段的结构TCP 首部包含以下内容,请留意其中的控制位,在三次握手和四次挥手过程中会频繁出现:
发布了文章2020-03-25
TCP(Transmission Control Protocol,传输控制协议) 是计算机网络的的重要组成部分,也是网络编程的重要内容,还有我们平时接触最多的 HTTP 也是基于 TCP 实现的。TCP 可以说是最重要的传输层协议,既然如此,作为开发人员,就有必要把 TCP 的核心概念和原理搞清楚...
赞了文章2020-03-08
volatile的概念 或者说,volatile解决什么问题? 我自己的总结:volatile解决多线程下变量访问的内存可见性问题,用于线程间通信。 通信怎能理解呢,线程A写一个volatile变量,随后线程B读这个volatile变量,这个过程实质上是线程A通过主内存向线程B发送消息。 java...
回答了问题2020-02-29
我们最常用的 Bean 的作用域(Scope)是以下两种(可以通过 XML 文件中 bean 标签的 scope 属性或 @Scope 注解进行设置):
发布了文章2020-02-28
我们之所以要手动创建线程池,是因为 JDK 自带的工具类所创建的线程池存在一定的弊端,那究竟存在怎么样的弊端呢?首先来回顾一下 JDK 中线程池框架的继承关系:
赞了回答2020-02-27
jvm栈中的内存在类结构确定时就知道了,随着方法结束或者线程消亡,内存自然而然被回收了
回答了问题2020-02-27
如果你在确保 MongoDB 安装没有问题的情况下,那可能是环境变量配置的问题,由于你的终端是zsh而不是bash,所以应该用.zshrc这个配置文件你试一下在用户目录新建.zshrc文件,然后在这个文件里配置环境变量,再执行source ~/.zshrc,然后再试试命令能不能用。
回答了问题2020-02-22
目前除了仍处于实验状态的 ZGC 和 Shenandoah(这两款收集器可以把停顿时间控制在10毫秒以内),G1 和 CMS 在低停顿这一点上做得是最好的
回答了问题2020-02-21
这里确实不能用快捷键生成,因为类里定义的变量需要指定访问权限,也就是 private 或 public 或其他,也需要指定是否为 static 或 final,这些都是要手动指定,当然无法自动生成。而你说的在 main 方法里可以使用是因为局部变量不需要指定上述内容。
回答了问题2020-02-20
使用 Java 的 Executors工具类可以直接创建以下种类的线程池: FixedThreadPool:线程数量固定,但可无限添加任务的线程池 SingleThreadExecutor:单线程线程池 CachedThreadPool:可无限添加线程的线程池 ScheduledThreadPool:执行定时任务的线程池 ForkJoinPool:...
发布了文章2020-02-19
上篇文章已经为大家详细介绍了 JVM 的垃圾收集机制,那么这次就一起来看看这些机制究竟是怎样应用到具体的垃圾收集器上的吧。Java 语言和 JVM 在不断迭代发展的同时,垃圾收集器也在不断地进化,从最初的的单线程收集器 Serial,到后来的并行收集器 Parallel 和并发...
赞了文章2020-02-16
红黑树,对很多童鞋来说,是既熟悉又陌生。学校中学过,只了解大概;工作中不怎么使用,但面试又是重点。每次需要查看红黑树内容时都很难以更生动形象的方式来理解其内容。没错,本文内容就是要解决这个问题,用简单的语言,搭配静图和动图(利用大脑图形记忆方式),...