自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(198)
  • 收藏
  • 关注

原创 Java 并发

一、使用线程实现 Runnable 接口实现 Callable 接口继承 Thread 类实现接口 VS 继承 Thread二、基础线程机制ExecutorDaemonsleep()yield()三、中断InterruptedExceptioninterrupted()Executor 的中断操作四、互斥同步synchronizedReent...

2020-11-19 17:43:00 185

原创 设计模式 - 备忘录

备忘录(Memento)Intent在不违反封装的情况下获得对象的内部状态,从而在需要时可以将对象恢复到最初状态。Class DiagramOriginator:原始对象Caretaker:负责保存好备忘录Memento:备忘录,存储原始对象的的状态。备忘录实际上有两个接口,一个是提供给 Caretaker 的窄接口:它只能将备忘录传递给其它对象;一个是提供给 Originator ...

2020-11-18 20:24:58 161

原创 Linux

前言一、常用操作以及概念快捷键求助关机PATHsudo包管理工具发行版VIM 三个模式GNU开源协议二、磁盘磁盘接口磁盘的文件名三、分区分区表开机检测程序四、文件系统分区与文件系统组成文件读取磁盘碎片blockinode目录日志挂载目录配置五、文件文件属性文件与目录的基本操作修改权限默认权限目录的权限...

2020-11-18 20:22:37 123

原创 Java 基础

一、数据类型基本类型包装类型缓存池二、String概览不可变的好处String, StringBuffer and StringBuilderString Poolnew String("abc")三、运算参数传递float 与 double隐式类型转换switch四、关键字finalstatic五、Object 通用...

2020-11-18 20:22:37 3028

原创 HTTP

一 、基础概念URI请求和响应报文二、HTTP 方法GETHEADPOSTPUTPATCHDELETEOPTIONSCONNECTTRACE三、HTTP 状态码1XX 信息2XX 成功3XX 重定向4XX 客户端错误5XX 服务器错误四、HTTP 首部通用首部字段请求首部字段响应首部字段实体首部字段五、具体应用连接管理...

2020-11-18 17:49:38 263

原创 Java 容器

一、概览CollectionMap二、容器中的设计模式迭代器模式适配器模式三、源码分析ArrayListVectorCopyOnWriteArrayListLinkedListHashMapConcurrentHashMapLinkedHashMapWeakHashMap参考资料一、概览容器主要包括 Collection 和 Map 两种...

2020-11-18 17:40:33 159

原创 攻击技术

一、跨站脚本攻击二、跨站请求伪造三、SQL 注入攻击四、拒绝服务攻击参考资料一、跨站脚本攻击概念跨站脚本攻击(Cross-Site Scripting, XSS),可以将代码注入到用户浏览的网页上,这种代码包括 HTML 和 JavaScript。攻击原理例如有一个论坛网站,攻击者可以在上面发布以下内容:<script>location.href="...

2020-11-18 17:40:33 165

原创 数据库系统原理

一、事务概念ACIDAUTOCOMMIT二、并发一致性问题丢失修改读脏数据不可重复读幻影读三、封锁封锁粒度封锁类型封锁协议MySQL 隐式与显示锁定四、隔离级别未提交读(READ UNCOMMITTED)提交读(READ COMMITTED)可重复读(REPEATABLE READ)可串行化(SERIALIZABLE)五、多版本并发...

2020-11-17 19:00:45 136

原创 43. 从 1 到 n 整数中 1 出现的次数

43. 从 1 到 n 整数中 1 出现的次数NowCoder解题思路public int NumberOf1Between1AndN_Solution(int n) { int cnt = 0; for (int m = 1; m <= n; m *= 10) { int a = n / m, b = n % m; cnt += (a ...

2020-11-17 19:00:45 45

原创 计算机操作系统 - 设备管理

磁盘结构磁盘调度算法1. 先来先服务2. 最短寻道时间优先3. 电梯算法磁盘结构盘面(Platter):一个磁盘有多个盘面;磁道(Track):盘面上的圆形带状区域,一个盘面可以有多个磁道;扇区(Track Sector):磁道上的一个弧段,一个磁道可以有多个扇区,它是最小的物理储存单位,目前主要有 512 bytes 与 4 K 两种大小;磁头(Head):与盘...

2020-11-17 19:00:45 165

原创 计算机操作系统 - 内存管理

虚拟内存分页系统地址映射页面置换算法1. 最佳2. 最近最久未使用3. 最近未使用4. 先进先出5. 第二次机会算法6. 时钟分段段页式分页与分段的比较虚拟内存虚拟内存的目的是为了让物理内存扩充成更大的逻辑内存,从而让程序获得更多的可用内存。为了更好的管理内存,操作系统将内存抽象成地址空间。每个程序拥有自己的地址空间,这个地址空间被分割成多个块,每一块称为...

2020-11-17 19:00:45 97

原创 SQL

一、基础二、创建表三、修改表四、插入五、更新六、删除七、查询八、排序九、过滤十、通配符十一、计算字段十二、函数十三、分组十四、子查询十五、连接十六、组合查询十七、视图十八、存储过程十九、游标二十、触发器二十一、事务管理二十二、字符集二十三、权限管理参考资料一、基础模式定义了数据如何存储、存储什么样的数据以及数据如何分解等信息,数据库和表都有...

2020-11-17 19:00:45 892

原创 MySQL

一、索引B+ Tree 原理MySQL 索引索引优化索引的优点索引的使用条件二、查询性能优化使用 Explain 进行分析优化数据访问重构查询方式三、存储引擎InnoDBMyISAM比较四、数据类型整型浮点数字符串时间和日期五、切分水平切分垂直切分Sharding 策略Sharding 存在的问题六、复制主从复制...

2020-11-17 19:00:45 41

原创 Redis

一、概述二、数据类型STRINGLISTSETHASHZSET三、数据结构字典跳跃表四、使用场景计数器缓存查找表消息队列会话缓存分布式锁实现其它五、Redis 与 Memcached数据类型数据持久化分布式内存管理机制六、键的过期时间七、数据淘汰策略八、持久化RDB 持久化AOF 持久化九、事务十、事件...

2020-11-17 19:00:45 52

原创 Socket

一、I/O 模型阻塞式 I/O非阻塞式 I/OI/O 复用信号驱动 I/O异步 I/O五大 I/O 模型比较二、I/O 复用selectpoll比较epoll工作模式应用场景参考资料一、I/O 模型一个输入操作通常包括两个阶段:等待数据准备好从内核向进程复制数据对于一个套接字上的输入操作,第一步通常涉及等待数据从网络中到达。当所等待数据...

2020-11-17 19:00:45 41

原创 Docker

一、解决的问题二、与虚拟机的比较三、优势四、使用场景五、镜像与容器参考资料一、解决的问题由于不同的机器有不同的操作系统,以及不同的库和组件,在将一个应用部署到多台机器上需要进行大量的环境配置操作。Docker 主要解决环境配置问题,它是一种虚拟化技术,对进程进行隔离,被隔离的进程独立于宿主操作系统和其它隔离的进程。使用 Docker 可以不修改应用程序代码,不需要开发人员学...

2020-11-17 19:00:45 46

原创 Java IO

一、概览二、磁盘操作三、字节操作实现文件复制装饰者模式四、字符操作编码与解码String 的编码方式Reader 与 Writer实现逐行输出文本文件的内容五、对象操作序列化Serializabletransient六、网络操作InetAddressURLSocketsDatagram七、NIO流与块通道与缓冲区缓冲区状态变...

2020-11-17 19:00:45 42

原创 缓存

一、缓存特征二、缓存位置三、CDN四、缓存问题五、数据分布六、一致性哈希七、LRU参考资料一、缓存特征命中率当某个请求能够通过访问缓存而得到响应时,称为缓存命中。缓存命中率越高,缓存的利用率也就越高。最大空间缓存通常位于内存中,内存的空间通常比磁盘空间小的多,因此缓存的最大空间不可能非常大。当缓存存放的数据量超过最大空间时,就需要淘汰部分数据来存放新到达的数据。...

2020-11-17 19:00:45 55

原创 集群

一、负载均衡负载均衡算法转发实现二、集群下的 Session 管理Sticky SessionSession ReplicationSession Server一、负载均衡集群中的应用服务器(节点)通常被设计成无状态,用户可以请求任何一个节点。负载均衡器会根据集群中每个节点的负载情况,将用户请求转发到合适的节点上。负载均衡器可以用来实现高可用以及伸缩性:...

2020-11-17 19:00:45 51

原创 分布式

一、分布式锁数据库的唯一索引Redis 的 SETNX 指令Redis 的 RedLock 算法Zookeeper 的有序节点二、分布式事务2PC本地消息表三、CAP一致性可用性分区容忍性权衡四、BASE基本可用软状态最终一致性五、Paxos执行过程约束条件六、Raft单个 Candidate 的竞选多个 Candid...

2020-11-17 19:00:45 126

原创 构建工具

一、构建工具的作用二、Java 主流构建工具三、Maven参考资料一、构建工具的作用构建一个项目通常包含了依赖管理、测试、编译、打包、发布等流程,构建工具可以自动化进行这些操作,从而为我们减少这些繁琐的工作。其中构建工具提供的依赖管理能够可以自动处理依赖关系。例如一个项目需要用到依赖 A,A 又依赖于 B,那么构建工具就能帮我们导入 B,而不需要我们手动去寻找并导入。在 Ja...

2020-11-17 19:00:45 1505

原创 消息队列

一、消息模型点对点发布/订阅二、使用场景异步处理流量削锋应用解耦三、可靠性发送端的可靠性接收端的可靠性参考资料一、消息模型点对点消息生产者向消息队列中发送了一个消息之后,只能被一个消费者消费一次。 发布/订阅消息生产者向频道发送一个消息之后,多个消费者可以从该频道订阅到这条消息并消费。 发布与订阅模式和观察者模式有以下不同:观察...

2020-11-17 19:00:45 139

原创 Java 虚拟机

一、运行时数据区域程序计数器Java 虚拟机栈本地方法栈堆方法区运行时常量池直接内存二、垃圾收集判断一个对象是否可被回收引用类型垃圾收集算法垃圾收集器三、内存分配与回收策略Minor GC 和 Full GC内存分配策略Full GC 的触发条件四、类加载机制类的生命周期类加载过程类初始化时机类与类加载器类加载器分类双亲委派模型...

2020-11-17 19:00:45 44

原创 设计模式

一、概述二、创建型1. 单例(Singleton)2. 简单工厂(Simple Factory)3. 工厂方法(Factory Method)4. 抽象工厂(Abstract Factory)5. 生成器(Builder)6. 原型模式(Prototype)三、行为型1. 责任链(Chain Of Responsibility)2. 命令(Command)3. 解...

2020-11-17 19:00:45 63

原创 正则表达式

一、概述二、匹配单个字符三、匹配一组字符四、使用元字符五、重复匹配六、位置匹配七、使用子表达式八、回溯引用九、前后查找十、嵌入条件参考资料一、概述正则表达式用于文本内容的查找和替换。正则表达式内置于其它语言或者软件产品中,它本身不是一种语言或者软件。正则表达式在线工具二、匹配单个字符. 可以用来匹配任何的单个字符,但是在绝大多数实现里面,不能匹配换行符;...

2020-11-17 19:00:45 178

原创 SQL 练习

595. Big Countries627. Swap Salary620. Not Boring Movies596. Classes More Than 5 Students182. Duplicate Emails196. Delete Duplicate Emails175. Combine Two Tables181. Employees Earning More Th...

2020-11-17 19:00:45 76

原创 58.2 左旋转字符串

58.2 左旋转字符串NowCoder题目描述Input:S="abcXYZdef"K=3Output:"XYZdefabc"解题思路先将 "abc" 和 "XYZdef" 分别翻转,得到 "cbafedZYX",然后再把整个字符串翻转得到 "XYZdefabc"。public S...

2020-11-17 16:32:26 39

原创 58.1 翻转单词顺序列

58.1 翻转单词顺序列NowCoder题目描述Input:"I am a student."Output:"student. a am I"解题思路题目应该有一个隐含条件,就是不能用额外的空间。虽然 Java 的题目输入参数为 String 类型,需要先创建一个字符数组使得空间复杂度为 O(N),但是正确的参数类型应该和原书一样,为字符数组,并且...

2020-11-17 16:32:26 88

原创 剑指 Offer 题解 - 目录

前言题目来自《何海涛. 剑指 Offer[M]. 电子工业出版社, 2012.》,刷题网站推荐:牛客网Leetcode目录3. 数组中重复的数字4. 二维数组中的查找5. 替换空格6. 从尾到头打印链表7. 重建二叉树8. 二叉树的下一个结点9. 用两个栈实现队列10.1 斐波那契数列10.2 矩形覆盖10.3 跳台阶10.4 变态跳台阶11. 旋转数组的最小...

2020-11-16 18:08:00 119

原创 设计模式 - 适配器

1. 适配器(Adapter)Intent把一个类接口转换成另一个用户需要的接口。 Class Diagram Implementation鸭子(Duck)和火鸡(Turkey)拥有不同的叫声,Duck 的叫声调用 quack() 方法,而 Turkey 调用 gobble() 方法。要求将 Turkey 的 gobble() 方法适配成 Duck 的 quack() 方法,从...

2020-11-16 18:03:36 53

原创 38. 字符串的排列

38. 字符串的排列NowCoder题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串 abc,则打印出由字符 a, b, c 所能排列出来的所有字符串 abc, acb, bac, bca, cab 和 cba。解题思路private ArrayList<String> ret = new ArrayList<>();public...

2020-11-16 16:32:18 42

原创 27. 二叉树的镜像

27. 二叉树的镜像NowCoder题目描述 解题思路public void Mirror(TreeNode root) { if (root == null) return; swap(root); Mirror(root.left); Mirror(root.right);}private void swap(TreeNode ...

2020-11-16 16:32:18 42

原创 28. 对称的二叉树

28. 对称的二叉树NowCoder题目描述 解题思路boolean isSymmetrical(TreeNode pRoot) { if (pRoot == null) return true; return isSymmetrical(pRoot.left, pRoot.right);}boolean isSymmetrical(TreeNod...

2020-11-16 16:32:18 38

原创 12. 矩阵中的路径

12. 矩阵中的路径NowCoder题目描述判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向上下左右移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。例如下面的矩阵包含了一条 bfce 路径。 解题思路使用回溯法(backtracking)进行求解,它是一种暴力搜索方法,通过搜索所有可能的结...

2020-11-16 16:32:18 150 1

原创 37. 序列化二叉树

37. 序列化二叉树NowCoder题目描述请实现两个函数,分别用来序列化和反序列化二叉树。解题思路private String deserializeStr;public String Serialize(TreeNode root) { if (root == null) return "#"; return root.val + ...

2020-11-16 16:32:18 41

原创 算法 - 算法分析

数学模型1. 近似2. 增长数量级3. 内循环4. 成本模型注意事项1. 大常数2. 缓存3. 对最坏情况下的性能的保证4. 随机化算法5. 均摊分析ThreeSum1. ThreeSumSlow2. ThreeSumBinarySearch3. ThreeSumTwoPointer倍率实验数学模型1. 近似N3/6-N2/2+N/3 ...

2020-11-16 16:32:18 378 1

原创 算法 - 栈和队列

栈1. 数组实现2. 链表实现队列栈public interface MyStack<Item> extends Iterable<Item> { MyStack<Item> push(Item item); Item pop() throws Exception; boolean isEmpty(); ...

2020-11-16 16:32:18 45

原创 设计模式 - 享元

享元(Flyweight)Intent利用共享的方式来支持大量细粒度的对象,这些对象一部分内部状态是相同的。Class DiagramFlyweight:享元对象IntrinsicState:内部状态,享元对象共享内部状态ExtrinsicState:外部状态,每个享元对象的外部状态不同 Implementationpublic interface Flyweight {...

2020-11-16 16:32:18 85

原创 设计模式 - 代理

代理(Proxy)Intent控制对其它对象的访问。Class Diagram代理有以下四类:远程代理(Remote Proxy):控制对远程对象(不同地址空间)的访问,它负责将请求及其参数进行编码,并向不同地址空间中的对象发送已经编码的请求。虚拟代理(Virtual Proxy):根据需要创建开销很大的对象,它可以缓存实体的附加信息,以便延迟对它的访问,例如在网站加载一个很大图片时...

2020-11-16 16:32:18 160

原创 40. 最小的 K 个数

40. 最小的 K 个数NowCoder解题思路快速选择复杂度:O(N) + O(1)只有当允许修改数组元素时才可以使用快速排序的 partition() 方法,会返回一个整数 j 使得 a[l..j-1] 小于等于 a[j],且 a[j+1..h] 大于等于 a[j],此时 a[j] 就是数组的第 j 大元素。可以利用这个特性找出数组的第 K 个元素,这种找第 K 个元素的算法称...

2020-11-16 16:32:18 42

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除