摘要:
双指针算法是一种比较常用于搜索链表或数组相关的问题,很多算法的基本的解题思路就是使用暴力搜索法。而双指针是对暴力搜索的一种优化,通过双指针可以减少数据的遍历次数。通常双指针是有两个指针,叫做 light 左指针和 right 右指针,或者叫做快指针和慢指针。 作为左右指针的话,一般是在数组的或者链表 阅读全文
摘要:
本文首发公众号:小码A梦 回溯算法是一种常见的算法,常见用于解决排列组合、排列问题、搜索问题等算法,在一个搜索空间中寻找所有的可能的解。通过向分支不断尝试获取所有的解,然后找到合适的解,找完一个分支后再往回搜索。回溯算法通常使用递归的方式实现。 回溯本质是一种暴力搜索法,列出所有可能的解,然后找到合 阅读全文
摘要:
> 本文首发公众号:小码A梦 一般数据主要存储的形式主要有两种,一种是数组,一种是链表。数组是用来存储固定大小的同类型元素,存储在内存中是**一片连续**的空间。而链表就不同于数组。链表中的元素不是存储在内存中**可以是不连续的空间**。 ![](https://files.mdnice.com/u 阅读全文
摘要:
> 本文首发公众号:小码A梦 单例模式是设计模式中最简单一个设计模式,该模式属于创建型模式,它提供了一种创建实例的最佳方式。 单例模式的定义也比较简单:一个类只能允许创建一个对象或者实例,那么这个类就是单例类,这种设计模式就叫做单例模式。 单例模式有哪些好处: * 类的创建,特别是一个大型的类,只创 阅读全文
摘要:
TCP 全称为 Transmission Control Protocol(传输控制协议),是一种面向连接的、**可靠的**、基于字节流的传输层通信协议,其中**可靠性**是相对于其他传输协议的优势点。TCP 为了确保数据传输的可靠性主要做了以下几点: * 发送确认机制 * 丢包重传机制 * 滑动窗 阅读全文
摘要:
>在 Java 开发中,对象的创建是一个常见的场景,如果对象的创建和使用都写在一起,代码的耦合度高,也不利于后期的维护。我们可以使用工厂模式来解决这个问题,**工厂模式是一个创建型模式**,将对象的创建和使用分离开来,降低代码的耦合度,提高程序的可维护性和扩展性。 # 工厂模式应用场景 * 调用方无 阅读全文
摘要:
# 从优惠打折活动说起 电商平台为了增加销量经常搞一些活动,比如 618、双十一,还有一些节假日活动,根据销量的变化又经常更新不同的活动。最开始为了增加销量,全场都六折: ``` // 打六折 public BigDecimal sixDiscount(BigDecimal amount) { Bi 阅读全文
摘要:
>最近在学习 JVM,其中涉及到性能、内存等指标分析需要使用工具分享,Java 提供了几个可视化工具来监控和管理 Java 应用,比如 Jconsole、JVisual、JMC,他们以图形化的界面实时的监控程序各种性能指标以及内存、CPU 的使用情况。 Jconsole、JVisual、JMC 可视 阅读全文
摘要:
HTTP 是一种不保存状态的协议,即无状态协议,HTTP 协议不会保存请求和响应之间的通信状态,协议对于发送过的请求和响应都不会做持久化处理。 ![](https://files.mdnice.com/user/29864/ceffeffc-2dc1-4adf-8cfd-b5b644e597f1.p 阅读全文
摘要:
在上篇 [并发编程Bug起源:可见性、有序性和原子性问题](https://juejin.cn/post/7138056309366079496),介绍了操作系统为了提示运行速度,做了各种优化,同时也带来数据的并发问题, # 定义 在单线程系统中,代码按照顺序`从上往下`顺序执行,执行不会出现问题。 阅读全文