摘要:
1. Standard Prompts Standard prompts can be combined with other techniques like role prompting and seed-word prompting to enhance the output of ChatGP 阅读全文
摘要:
1. 构建工具简介 1.1 模块化 最初我们都使用script标签来引入js,但当一个页面引入的js文件越来越多时,就产生了几个难以避免的问题: 全局变量污染。 变量重名。 js之间的依赖关系复杂,无法保证顺序。 而模块化规范就是为解决以上问题,模块内部的变量实现了在其他模块内共享。而且可以指定哪些 阅读全文
摘要:
1. 用户信息错乱-ThreadLocal 问题:有时获取到的用户信息是别人的。 因为Tomcat 的工作线程是基于线程池的, 所以使用类似 ThreadLocal 工具来存放一些数据时,需要特别注意在代码运行完后,显式地去清空设置的数据,不然就有可能因为线程池复用工作线程,ThreadLocal 阅读全文
摘要:
加入CountDownLatch后死锁了 描述:打开某个界面后,就会A类的start方法,show方法中调用了B类的get方法,并用synchronized包裹,而在B类方法中使用了线程池来调用A类的showData方法,而调用的方式是通过A类提供的一个匿名内部类来调用。其中showData方法使用 阅读全文
摘要:
1. RabbitMQ简介 1.1 什么是消息中间件 消息队列中间件(Message Queue Middleware,简称为 MQ)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。 阅读全文
摘要:
AQS 技术 1. AQS 概述 1.1 管程 管程是由局部于自己的若干公共变量及其说明和所有访问这些公共变量的过程所组成的软件模块。 1.2 Java 中管程的实现 Java通过管程的方式自行解决线程互斥和同步的问题,Object Monitor模式就是一种管程的实现。Java中另一种管程的实现是 阅读全文
摘要:
MVCC原理 1. 版本链 对于使用 InnoDB 存储引擎的表来说,它的聚簇索引记录中有3个隐藏列,其中一个就是roll_pointer,每次对某条聚簇索引记录进行改动时,都会把旧的版本写入到 undo 日志中,然后这个隐藏列就相当于一个指针,可以通过它来找到该记录修改前的信息。 对该记录每次更新 阅读全文
摘要:
Redis 1. Redis概述 Redis是一种基于键值对(key-value)的NoSQL数据库,是由C语言编写。 1.1 Redis特性 速度快 所有数据都是存放在内存中的。 Redis是用C语言实现的,执行速度相对会更快。 Redis使用了单线程架构,预防了多线程可能产生的竞争问题。 基于键 阅读全文
摘要:
带权树形结构的过滤 1. 带权树 1.1. 树的概念 树是一种数据结构,它是由n(n≥0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树也就是说它是根朝上,而叶朝下的。它具有以下的特点: 每个节点有零个或多个子节点。 没有父节点的节点称为根节点。 每一个非根节点有且 阅读全文
摘要:
锁升级 整体对象头 Mark Word 结构如下: 1. 自旋锁与自适应自旋 1.1 自旋锁 如果物理机器有一个以上的处理器或者处理器核心,能让两个或以上的线程同时并行执行,我们就可以让后面请求锁的那个线程“稍等一会”,但不放弃处理器的执行时间,看看持有锁的线程是否很快就会释放锁。为了让线程等待,我 阅读全文