- 博客(203)
- 资源 (10)
- 收藏
- 关注

原创 Java学习知识点目录(博客目录)
博客内容大多是个人认为比较重要的基础知识点,目标是记录Java完整学习体系的储备知识。博客多为总结学习内容,博客中若有错误,可指出。持续更新中,不定时更新,目录顺序经常变动。
2020-08-31 08:33:39
3832
原创 maven命令
执行maven命令需要当前目录有pom依赖,可以用cd命令切换目录;在本地 Repository 中安装 jar。当mvn仓库里缺少jar包,同时又从中央仓库自动下载不下来的时候,就需要自己下载jar包然后放仓库里了,但是有时候只是简单的把jar和source放仓库的文件夹下,并不管用,这个时候你可以用命令把jar把打进去。查看依赖树,解决jar包冲突。当项目出现jar包冲突时,用命令mvn dependency:tree 查看依赖情况。
2022-10-31 22:05:13
3228
原创 aws 负载均衡clb/nlb/alb
ELB我们在控制台创建负载均衡器类型时,会发现有三个选项可以选择,分别是应用负载均衡器(ALB),网络负载均衡器(NLB),经典负载均衡器(CLB)。弹性负载均衡器(Elastic Load Balancer)。Amazon 将 ELB 分成三种不同类型1、ALB应用程序负载均衡器(Application Load Balancer)应用程序级别(第 7 层)支持基于内容的路由和在容器中运行的应用程序。2、NLB网络负载均衡器(Network Load Balancer)
2022-10-29 23:02:19
5926
原创 MySQL索引在关联查询中的作用
如果是inner join的话,一边有索引就可以了如果是left join,主表可以不用索引,但另外张就要索引EXPLAIN语句分析出来的第一行的表即是驱动表在以小表驱动大表的情况下,再给大表建立索引会大大提高执行速度left join 原理是 左连接情况下左表全有,因此在右边创建索引,得到比较理想的效果然后inner join是因为mysql自带得优化器能自动识别怎么去”找“更省时间结论:left join:右边创建索引;right join:左表创建索引。
2022-10-19 22:49:00
2358
1
转载 Linux sed 命令
sed:Stream Editor文本流编辑,sed是一个“非交互式的”面向字符流的编辑器。能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上。还可以对原文件改动,但是不会再屏幕上返回结果。sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。
2022-10-16 16:47:46
711
原创 Linux重定向和文件描述符
Linux中的重定向就是将原本要输出到屏幕中的数据信息,重新指向某个特定文件当中,或者定向到黑洞文件(/dev/null)中。
2022-10-11 22:51:07
1086
转载 Linux设备(dev)介绍
按照读写存储数据方式,我们可以把设备分为以下几种:字符型设备,块设备,伪设备。类Unix系统中,/dev/full(常满设备)是一个特殊设备文件,总是在向其写入时返回设备无剩余空间(错误码为ENOSPC),读取时则与 /dev/zero相似,返回无限的空字符(NULL, ASCII NUL, 0x00)。在类UNIX 操作系统中, /dev/zero 是一个特殊的文件,当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00)。块设备是指与系统间用块的方式移动数据的设备。
2022-09-26 23:18:05
2444
原创 logback详解
Logback是由log4j创始人设计的另一个开源日志组件,官方网站:。logback-core:其它两个模块的基础模块。logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。logback-access:访问模块与Servlet容器集成提供通过Http来访问日志的功能。默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台。
2022-09-21 16:17:40
1452
原创 kafka设计原理介绍
消息中间件是在消息的传输过程中保存消息的容器。消息中间件在将消息从消息生产者到消费者时充当中间人的作用。队列的主要目的是提供路由并保证消息的传送;如果发送消息时接收者不可用,消息对列会保留消息,直到可以成功地传递它为止,当然,消息队列保存消息也是有期限的。Kafka是一种消息队列,主要用来处理大量数据状态下的消息队列,一般用来做日志的处理。既然是消息队列,那么Kafka也就拥有消息队列的相应的特性了。Kafka是一种分布式的,基于发布/订阅的消息系统。
2022-08-20 11:54:45
692
原创 MacOs下安装Kong网关
Kong网关介绍准备brew 安装安装基本依赖安装 pcre opensslOpenResty - 安装安装 lua 和 luarocks 安装openresty安装postgresql安装kong bug解决Error: module 'resty.kong.tls' not found:Database needs bootstrapping or is older than Kong 1.0Error: nginx configuration is invalid (exit code 1):官网
2022-08-08 21:43:56
1329
转载 剖析JDK8中Arrays.sort底层原理
数组一进来,会碰到第一个阀值QUICKSORT_THRESHOLD(286),注解上说,小过这个阀值的进入Quicksort (快速排序),其实并不全是,点进去sort(a, left, right, true);方法: // Use Quicksort on small arrays if (right - left < QUICKSORT_THRESHOLD) { sort(a, left, right, true);
2021-07-29 17:53:23
423
转载 几种简单的负载均衡算法及其Java代码实现
目录1 什么是负载均衡2 实现算法轮询(Round Robin)法随机(Random)法源地址哈希(Hash)法加权轮询(Weight Round Robin)法加权随机(Weight Random)法最小连接数(Least Connections)法1 什么是负载均衡负载均衡,英文名称为Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的
2021-07-24 10:28:55
805
转载 深入理解处理器高速缓存的工作机制
目录1 CPU高速缓存简单介绍2 缓存如何判断哪些数据是更常用的3 cpu如何访问数据3.1 数据在存储器层次之间以块为单位进行传递4 高速缓存一致性问题4.1 解决缓存冲突问题4.2 高速缓存与内存的一致性问题4.3 高速缓存一致的存储系统定义4.4 MESI高速缓存一致性协议1 CPU高速缓存简单介绍CPU高速缓存机制的引入,主要是为了解决CPU越来越快的运行速度与相对较慢的主存访问速度的矛盾。CPU中的寄存器数量有限,在执行内存寻址指令时,经常需要从内.
2021-07-21 10:50:48
2393
原创 Java中Lambda表达式的使用
1 简介Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。Lambda表达式还增强了集合库。 Java SE 8添加了2个对集合数据进行批量操作的包:java.util.function包以及java.util.stream包。 流(stream)就如同迭代器(iterator),但附加了许多额外的功能。 总的来...
2021-07-16 16:49:04
3273
转载 最全的select加锁分析(Mysql)
大家在面试中有没遇到面试官问你下面六句Sql的区别呢select * from table where id = ?select * from table where id < ?select * from table where id = ? lock in share modeselect * from table where id < ? lock in share modeselect * from table where id = ? for updateselect
2021-07-05 22:22:41
439
原创 redis缓存与数据库一致性问题解决
1 数据不一致原因先操作缓存,在写数据库成功之前,如果有读请求发生,可能导致旧数据入缓存,引发数据不一致。我是先更新缓存中的数据再更新数据库的数据; 还是修改数据库中的数据再更新缓存中的数据;数据库的数据和缓存中的数据如何达到一致性?首先,可以肯定的是,redis中的数据和数据库中的数据不可能保证事务性达到统一的,这个是毫无疑问的,所以在实际应用中,我们都是基于当前的场景进行权衡降低出现不一致问题的出现概率更新缓存还是让缓存失效更新缓存表示数据不但会写入到数据库,还会同步更新缓存; 而让缓
2021-07-02 11:55:35
3259
原创 Spring中的循环依赖解决详解
目录1 什么是循环依赖?1.1 构造器循环依赖1.2 field属性注入循环依赖1.3 field属性注入循环依赖(prototype)2 循环依赖处理2.1 构造器循环依赖(无法解决)2.2 setter循环依赖(可以解决)2.3 prototype范围的依赖处理(无法解决)3 Spring是如何解决的循环依赖?简单的循环依赖(没有AOP)结合了AOP的循环依赖4 面试答案1 什么是循环依赖?循环依赖就是循环引用,指两个或多个bean互相持有对方,.
2021-07-02 11:23:40
2107
2
转载 NIO示例实践
目录1 NIO和IO如何影响应用程序的设计2 从理论到实践:NIO 中的读和写1 NIO和IO如何影响应用程序的设计无论您选择IO或NIO工具箱,可能会影响您应用程序设计的以下几个方面:1.对NIO或IO类的API调用。2.数据处理。3.用来处理数据的线程数。1、API调用当然,使用NIO的API调用时看起来与使用IO时有所不同,但这并不意外,因为并不是仅从一个InputStream逐字节读取,而是数据必须先读入缓冲区再处理。2、数据处理使用纯粹的NIO设计相较IO设
2021-01-09 11:30:15
611
原创 java IO与 NIO
1 NIO概述I/O 简介I/O ? 或者输入/输出 ? 指的是计算机与外部世界或者一个程序与计算机的其余部分的之间的接口。它对于任何计算机系统都非常关键,因而所有 I/O 的主体实际上是内置在操作系统中的。单独的程序一般是让系统为它们完成大部分的工作。先来看一张普通的IO处理的流程图:在 Java 编程中,直到最近一直使用流的方式完成 I/O。所有 I/O 都被视为单个的字节的移动,通过一个称为 Stream 的对象一次移动一个字节。流 I/O 用于与外部世界接触。它也在内部...
2021-01-09 11:26:27
351
转载 操作系统 I/O 全流程详解
目录I/O 设备设备控制器内存映射 I/O直接内存访问重温中断IO 软件原理I/O 软件目标使用程序控制 I/O使用中断驱动 I/O使用 DMA 的 I/OI/O 层次结构中断处理程序设备驱动程序与设备无关的 I/O 软件用户空间的 I/O 软件盘盘硬件磁盘臂调度算法错误处理稳定存储器时钟时钟硬件时钟软件软定时器不同的人对 I/O 硬件的理解也不同。对于电子工程师而言,I/O 硬件就是芯片、导线、电源和其..
2020-12-27 11:46:08
5026
转载 Nginx详解
目录1 Nginx是什么2 nginx应用3 nginx架构特性3.1 nginx程序架构3.2 nginx功能特性4 nginx并发模型4.1 master进程4.2 worker进程4.3 并发处理4.4 惊群问题5 Nginx的事件处理5.1 Nginx的特点5.2 Nginx的内部(进程)模型5.3 Nginx是如何处理一个请求6 Nginx应用场景6.1 正向代理6.2 反向代理6.3 透明代理6.4 负载均衡1 ..
2020-12-24 16:14:18
650
转载 一致性哈希算法的原理与实现
目录1 概述1.1 传统哈希(硬哈希)1.2 一致性哈希(Consistent Hashing)1.3 哈希指标1.4 资料链接2 算法原理2.1 映射方案2.2 删除节点2.3 增加节点2.4 虚拟节点3 应用分布式系统中对象与节点的映射关系,传统方案是使用对象的哈希值,对节点个数取模,再映射到相应编号的节点,这种方案在节点个数变动时,绝大多数对象的映射关系会失效而需要迁移;而一致性哈希算法中,当节点个数变动时,映射关系失效的对象非常少,迁移成本也非常.
2020-12-23 19:16:37
1188
原创 MySQL主从复制与读写分离原理
目录1 主从复制与读写分离的意义1.1 什么是主从复制1.2 主从数据库的好处和缺点2 主从复制2.1 主从复制的形式2.2 主从复制的原理2.3 主从复制的模式异步模式半同步模式 --5.5开始支持全同步模式3 主从复制读写分离过程3.1 主从数据库实现同步(主从复制)3.2 主从读写分离4 主从复制分析1 主从复制与读写分离的意义企业中的业务通常数据量都比较大,而单台数据库在数据存储、安全性和高并发方面都无法满足实际的需求,所以需要配置多台
2020-12-23 16:54:27
687
2
原创 CSRF攻击与防御
目录1 CSRF介绍1.1、CRSF攻击原理1.2、攻击举例2 攻击实例2.1 CSRF的原理2.2 CSRF的防御1 CSRF介绍 CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解: 攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,...
2020-12-22 19:19:10
3269
原创 DDoS攻击和CC攻击
目录1 DDoS介绍2 DDoS的攻击方式3 攻击防御3.1 DDOS攻击现象判定方法3.2 DDoS攻击防御方法:3.3 DDoS攻击的网络流量清洗4 CC攻击4.1 CC攻击防御方法4.2 WAF介绍4.3 DDoS攻击测试工具1 DDoS介绍DDoS是英文Distributed Denial of Service的缩写,意即“分布式拒绝服务”,那么什么又是拒绝服务(Denial of Service)呢?可以这么理解,凡是能导致合法用户不能够访问正常网络
2020-12-21 19:24:51
1460
转载 XSS跨站脚本攻击
目录1 简介2 原因解析3 XSS攻击分类3.1 反射型xss攻击3.2 存贮型xss攻击3.3 DOMBasedXSS(基于dom的跨站点脚本攻击)4 XSS攻击实例分析5 XSS漏洞修复5.1 html实体5.2 HTML Encode5.3 修复漏洞方针5.4 PHP中的相应函数5.5 数据过滤类6 XSS如何防范?cookie安全策略X-XSS-Protection设置XSS防御HTML编码XSS 防御HTML Attribut
2020-12-21 17:06:53
5061
原创 死锁
目录1 什么是死锁?2 死锁产生的原因?3 死锁的四个必要条件4 避免死锁5 死锁的避免与预防1. 死锁避免2. 死锁预防1 什么是死锁?死锁的本质是一种僵持状态,是多个主体对于资源的争用而导致的。理解死锁首先需要对死锁所涉及的相关观念有一个理解。死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。例如,在某一个计算机系统中只有一台打印机和一台输入 设备,进程P1正占用输入设备,同时又提出使用打印机的请求,但此时打印机正被进
2020-12-17 11:38:16
508
转载 并发编程(IO多路复用)
目录1 基础知识回顾1.1 用户空间和内核空间1.2 进程上下文切换(进程切换)1.3 进程的阻塞1.4 文件描述符1.5 直接I/O和缓存I/O1.6 同步与异步1.7 阻塞与非阻塞2 I/O模式2.1 block I/O模型(阻塞I/O)2.2 non-block(非阻塞I/O模型)2.3 I/O多路复用2.4asynchronous I/O(异步 I/O)2.5 小结3 事件驱动编程模型3.1论事件驱动3.2 看图说话讲事件驱动模..
2020-12-17 11:28:34
1243
原创 Java中断机制
目录1 中断2 中断的原理3 中断的处理3.1 处理时机3.2 处理方式3.3 线程在不同状态下对于中断所产生的反应4 使用 interrupt 方法4.1 使用 interrupt() + InterruptedException来中断线程4.2 使用 interrupt() + isInterrupted()来中断线程 4.3 不能结束的情况1 中断如果程序需要停止正在运行的线程,如果直接stop线程,则有可能导致程序运行不完整,因此Java提供了中断.
2020-12-17 10:16:50
380
原创 Java内存模型(JMM)
目录1 简述2 硬件的效率与一致性3.Java内存模型3.1 主内存与工作内存3.2 内存间交互操作3.4 volatile型变量的特殊规则3.5 原子性、可见性与有序性3.6 重排序3.7 happens-before4 JAVA 内存模型的抽象4.1 重排序4.2 VOLATILE 特性4.3 锁1 简述Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,以实.
2020-12-16 21:07:58
189
原创 图解AQS实现的源码原理
1 aqs概述AQS中 维护了一个volatile int state(代表共享资源)和一个FIFO线程等待队列(多线程争用资源被阻塞时会进入此队列)。这里volatile能够保证多线程下的可见性,当state=1则代表当前对象锁已经被占有,其他线程来加锁时则会失败,加锁失败的线程会被放入一个FIFO的等待队列中,比列会被UNSAFE.park()操作挂起,等待其他获取锁的线程释放锁才能够被唤醒。另外state的操作都是通过CAS来保证其并发修改的安全性。具体原理我们可以用一张图来简单概括:
2020-12-16 15:28:17
595
原创 SQL注入讲解
1 什么是sql注入 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,通过SQL语句,实现无账号登录,甚至篡改数据库。SQL作为字符串通过API传入给数据库,数据库将查询的结果返回,数据库自身是无法分辨传入的SQL是合法的还是不合法的,它完全信任传入的数据,如果传入的SQL语句被恶意用户控制或者篡改,将导致数据库以当前调用者的身份执行预期之外的命令并且返回结果,导致安全问题。当客户端提交的数据未作处理或转义直接带入数据库,就造成了sql注入
2020-12-14 19:24:43
487
原创 Java中的装箱和拆箱深入理解
自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题。本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱、拆箱相关的问题。一.什么是装箱?什么是拆箱?在前面的文章中提到,Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料。在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行:Integer i = new Int
2020-12-12 16:08:59
194
1
原创 MySQL 学习总结 之 缓冲池(Buffer Pool)
目录1 缓冲池(Buffer Pool)的地位2 缓冲池 的内容结构3 缓存过程3.1 Buffer Pool 的初始化3.2 Free 链表记录空闲缓存页3.3 Flush 链表记录脏缓存页3.4 LRU 链表记录缓存页的命中率4 LRU原理5 总结6 常见问题1 缓冲池(Buffer Pool)的地位应用系统分层架构,为了加速数据访问,会把最常访问的数据,放在缓存(cache)里,避免每次都去访问数据库。操作系统,会有缓冲池(buffer pool)机
2020-11-29 11:34:19
1676
原创 ConcurrentHashMap源码分析
目录1 ConcurrentHashMap介绍1.1 结构介绍1.2 原理介绍2 ConcurrentHashMap源码分析3 ConcurrentHashMap的同步机制4 ConcurrentHashMap扩容机制什么情况会触发扩容transfer实现扩容相关的属性transferIndex属性何时扩容1 ConcurrentHashMap介绍1.1 结构介绍ConcurrentHashMap是线程安全的哈希表。HashMap, Hashtab
2020-11-28 17:12:20
379
转载 Java集合 LinkedList 底层详解
1基本介绍LinkedList类是List接口的实现类,它是一个集合,可以根据索引来随机的访问集合中的元素,还实现了Deque接口,它还是一个队列,可以当成双端队列来使用。虽然LinkedList是一个List集合,但是它的实现方式和ArrayList是完全不同的,ArrayList的底层是通过一个动态的Object[]数组实现的,而LinkedList的底层是通过链表来实现的,因此它的随机访问速度是比较差的,但是它的删除,插入操作很快。LinkedList是基于双向循环链表实现的,除了可以当作链表
2020-11-28 10:53:31
703
1
原创 Java集合系列之ArrayList底层实现原理
目录1 ArrayList的数据结构2 ArrayList的线程安全性3 ArrayList的继承关系4 ArrayList的主要成员变量5 ArrayList的构造方法5.1 无参构造方法5.2 int类型参数构造方法5.3 Collection类型构造方法6 ArrayList的扩容机制6.1 add 方法6.2 ensureCapacityInternal() 方法6.3 ensureExplicitCapacity() 方法6.4 grow() .
2020-11-28 10:39:37
1581
原创 java数据结构与算法之堆排序
1 堆排序堆排序(Heap Sort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。时间复杂度无论是最坏还是最好都是 :O(nlgn) ,但是它也是一种不稳定的算法,不适用于较小的数组 ,对于较大的文件比较有效1.1什么是堆 堆是一个树形结构,其实堆的底层是一棵完全二叉树。而完全二叉树是一层一层按照进入的顺序排成的。按照这个特性,我们可以用数组来按照完全二叉树实现堆。...
2020-11-25 18:12:41
293
原创 Flume的安装
下载及安装1.Flume到Flume官网上http://flume.apache.org/download.html下载软件安装包,如图:下载、解压tar -xzf flume-1.5.2-bin.tar.gzcp -r apache-flume-1.5.2-bin /usr/local2.jdk1.8的安装1.到jdk官网http://www.oracle.com/technetwork/java/javase/downloads/index.html下载软件安装包,如图:.
2020-11-25 09:52:51
463
原创 Kafka环境安装及配置_学习记录
Kafka集群搭建1、进入目录:cp -r kafka_2.11-2.1.0 /usr/localcd /usr/localcd kafka_2.11-2.1.0/2、创建kafka日志数据目录:mkdir logs3、进入目录:cd config/4、修改server.properties配置文件:vim server.propertiesbroker.id=0# listeners = PLAINTEXT://your.host.name:..
2020-11-24 16:32:09
238
commons-dbutils.zip
2020-05-19
C3p0 jar包.zip
2020-05-18
mysql8 DBCP连接池jar依赖.zip
2020-05-18
mysql-connector-java-5.1.7-bin.zip
2020-05-17
使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core],
2020-05-07
commons-beanutils.jar、commons-logging.jar两个包
2020-05-05
dom4j-1.6.1.jar-306 KB; jaxen-1.1-beta-6.jar-238 KB两个包
2020-04-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人