自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(197)
  • 资源 (1)
  • 收藏
  • 关注

原创 刷题记录总结

链表链表相关题目二叉树二叉树相关算法题动态规划动态规划相关题目

2021-03-06 11:13:12 116

原创 整理知乎下关于编程的优质回答和文章(不断更新中)

编程到底难在哪里? 回答者:DJ Hitori本文以程序员买苹果为范例讲述了编程的难点,很有意思,下面是引用的原文:这篇回答并不是讲述在生活中程序员如何买苹果,而是以买苹果为例说明程序员如何解决问题。程序员需要对问题进行透彻的分析,理清其涉及的所有细节,预测可能发生的所有意外与非意外的情况,列出解决方案的所有步骤,以及对解决方案进行尽量全面的测试。而这些正是我认为编程难的地方。任何一点遗...

2019-09-24 23:25:27 554

原创 《剑指offer》系列

序章对于校招生来说,找到一份技术工作,我们需要经历笔试和面试,而算法又是笔试题目中的重中之重,即使是在面试中算法也占据不小的比重。为了准备这一块,学校里学习的数据结构课程肯定是远远不够的,我们需要进行刷题来练习。而且相较于竞赛的算法难度,为笔试面试准备的题目难度并不算大。《剑指offer》是准备笔试面试算法部分非常有名的一本书,属于工作必看,写这个系列也是为了给自己一个巩固学习的机会(本来去年应...

2019-09-20 15:02:26 350

原创 程序员应该经常上的一些学习资源网站(不断更新中)

我不生产知识,我只是知识的搬运工。互联网上有太多优秀的知识,选择很多,但是这些知识往往被互联网纷乱嘈杂的信息所稀释了,这里总结一些不错的资源分享,质量相对较高,希望能够能够给大家带来一些帮助。Java NIO相关I/O模型是什么Java NIO 系列教程Java并发相关Java并发编程...

2018-10-02 23:25:01 2718 2

原创 按一定规律打印数组

顺时针打印:《剑指offer》系列 顺时针打印矩阵(Java)对角线打印498. 对角线遍历class Solution { public int[] findDiagonalOrder(int[][] mat) { // 检查空数组 if (mat == null || mat.length == 0) { return new int[0]; } int N = mat.length

2022-05-15 17:45:15 140

原创 N数之和系列题目

1. 两数之和思路:利用哈希表class Solution { public int[] twoSum(int[] nums, int target) { HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(); for (int i = 0; i < nums.length; i++) { if (map.containsKey(targ

2022-05-15 17:25:02 158

原创 MySQL 学习

MySQL 存储引擎MySQL 有那些存储引擎,有哪些区别?参考:MySQL中常用存储引擎有哪些?它们相互之间有什么区别?InnoDB 与 MyiSAM 的区别?如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比 较低,也可以使用。如果由大量的增删操作,那么应该选择哪个存储引擎,为什么?InnoDb,支持事务的提交(commit)和回滚(rollback)。MySQL 调优MySQL 调优索引MySQL 索引事务、锁MySQL

2021-04-10 15:34:30 255

原创 Redis 用作缓存

参考:极客时间 Redis核心技术与实战 笔记(实践篇 缓存)缓存数据库的不一致问题缓存雪崩、击穿、穿透替换策略缓存满了时候的数据淘汰机制Redis key 过期策略不采用定时删除而是惰性删除 + 定期删除定期删除:Redis默认每个100ms随机抽取进行检查。缺点:如果只采用定期删除策略,会导致很多 key 到时间没有删除。惰性删除:弥补定期删除的问题,也就是说在你获取某个key的时候,Redis会检查一下,这个key如果设置了过期时间那么是否过期了?如果过期了此时就会删除。这里

2021-04-10 14:59:04 318

原创 操作系统——进程、线程

参考:春/秋招面试必备——操作系统进程和线程的区别?进程(Process)是系统进行资源分配和调度的基本单位,线程(Thread)是CPU调度和分派的基本单位;线程依赖于进程而存在,一个进程至少有一个线程;进程有自己的独立地址空间,线程共享所属进程的地址空间;进程是拥有系统资源的一个独立单位,而线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),和其他线程共享本进程的相关资源如内存、I/O、cpu等;在进程切换时,涉及到整个当前进程CPU环境的保存环

2021-04-08 18:27:23 194

原创 MySQL 调优

建 MySQL 表的时候需要考虑哪些?规范、存储类型、索引你不得不必须掌握的30种SQL语句优化MySQL 慢语句如何调优?写sql语句的时候where会考虑什么?MySQL如何定位并优化慢查询sql根据慢日志定位慢查询sql用explain等工具分析sql修改 sql 让sql走索引数据库的大表查询优化MySQL 对于千万级的大表要怎么优化?MySQL 如何分析一条语句的执行过程MySQL分页优化MySQL优化之超大分页查询limit, order by 利用索引..

2021-04-07 11:29:28 92

原创 TCP 学习

参考:图解 | 你管这破玩意儿叫TCP?两张动图-彻底明白TCP的三次握手与四次挥手TCP 是面向连接的、可靠的、基于字节流的传输层通信协议用于进程与进程之间的通信。三次握手为什么需要第三次握手?主要防止已经失效的连接请求报文突然又传送到了服务器,从而产生错误。如果使用的是两次握手建立连接,假设有这样一种场景,客户端发送了第一个请求连接并且没有丢失,只是因为在网络结点中滞留的时间太长了,由于TCP的客户端迟迟没有收到确认报文,以为服务器没有收到,此时重新向服务器发送这条报文,此后客户端和服务

2021-04-04 14:22:13 122

原创 操作系统学习整理

参考:春/秋招面试必备——操作系统进程和线程的区别?进程(Process)是系统进行资源分配和调度的基本单位,线程(Thread)是CPU调度和分派的基本单位;线程依赖于进程而存在,一个进程至少有一个线程;进程有自己的独立地址空间,线程共享所属进程的地址空间;进程是拥有系统资源的一个独立单位,而线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),和其他线程共享本进程的相关资源如内存、I/O、cpu等;在进程切换时,涉及到整个当前进程CPU环境的保存环

2021-04-03 18:39:43 105

原创 HTTP 学习

基础定义HTTP(超文本传输协议)是应用层上的一种客户端/服务端模型的通信协议,它由请求和响应构成,且是无状态的。协议协议规定了通信双方必须遵循的数据传输格式,这样通信双方按照约定的格式才能准确的通信。无状态无状态是指两次连接通信之间是没有任何关系的,每次都是一个新的连接,服务端不会记录前后的请求信息。客户端/服务端模型URI 和 URL 的区别HTTP 协议中 URI 和 URL 有什么区别?URL又是URI的子集URI 在于I(Identifier)是统一资源标示符,可以唯一

2021-04-03 15:13:36 163

原创 LeetCode 46. 全排列

LeetCode:46. 全排列

2021-03-27 21:46:56 46

原创 LeetCode 42. 接雨水

题目链接:42. 接雨水class Solution { //暴力法 public int trap(int[] height) { int ans = 0; int size = height.length; for (int i = 1; i < size - 1; i++) { int max_left = 0, max_right = 0; for (int j = i; j &g

2021-03-27 20:47:13 64

原创 LeetCode 200. 岛屿数量

题目链接:200. 岛屿数量class Solution { public int numIslands(char[][] grid) { if (grid.length == 0) { return 0; } int nr = grid.length; int nc = grid[0].length; int num_islands = 0; for (int r = 0;

2021-03-27 17:57:38 55

原创 LeetCode 146. LRU 缓存机制

题目链接:146. LRU 缓存机制class LRUCache { class Node { int key; int value; Node prev; Node next; public Node() { } public Node(int key, int value) { this.key = key; this.value

2021-03-27 17:19:56 67

原创 LeetCode 148. 排序链表

题目链接:148. 排序链表class Solution { public ListNode sortList(ListNode head) { return sortList(head, null); } public ListNode sortList(ListNode head, ListNode tail) { if (head == null) { return head; } if

2021-03-27 17:05:20 67

原创 LeetCode 4. 寻找两个正序数组的中位数

题目链接 :4. 寻找两个正序数组的中位数标准版题解:class Solution { public double findMedianSortedArrays(int[] nums1, int[] nums2) { int[] result = merge(nums1, nums2); int len = result.length; if (len % 2 == 0) { return (result[len / 2 -

2021-03-27 16:08:49 91

原创 设计模式应用

Spring 中的设计模式面试官:“谈谈Spring中都用到了那些设计模式?”。Listener观察者模式Filter责任链模式

2021-03-23 18:18:41 84

原创 Redis 集群

集群三种模式:主从哨兵Redis Cluster(分片)想进大厂,面试却挂在了Redis集群上…面试官:Redis有哪几种集群方案?原理和优缺点是什么?极客时间 Redis核心技术与实战 笔记(基础篇 集群)...

2021-03-20 17:26:45 90

原创 Java 反射学习

什么是反射?反射机制的应用场景有哪些?应用场景:我们在使用JDBC连接数据库时使用Class.forName()通过反射加载数据库的驱动程序;Spring框架也用到很多反射机制,最经典的就是xml的配置模式。Spring 通过 XML 配置模式装载 Bean 的过程:1) 将程序内所有 XML 或 Properties 配置文件加载入内存中; 2)Java类里面解析xml或properties里面的内容,得到对应实体类的字节码字符串以及相关的属性信息;使用反射机制,根据这个字符串获得某个类的Cla

2021-03-12 10:27:28 65

原创 买卖股票的最佳时机 系列(Java)

题目链接:121. 买卖股票的最佳时机class Solution { public int maxProfit(int[] prices) { if (prices.length == 0) { return 0; } int min = prices[0]; int dpCur; int dpMax = 0; for (int i = 1; i < prices.len

2021-03-10 23:08:47 176

原创 MySQL 主从

redo log 和 binlogMySQL有哪几种日志?两种日志:redo log 和 binlog区别:redo log 是 InnoDB 引擎特有的;binlog 是 MySQL 的 Server 层实现的,所有引擎都可以使用。redo log 是物理日志,记录的是“在某个数据页上做了什么修改”;binlog 是逻辑日志,记录的是这个语句的原始逻辑,比如“给 ID=2 这一行的 c 字段加 1 ”。redo log 是循环写的,空间固定会用完;binlog 是可以追加写入的。“追加写”是

2021-03-08 14:37:19 101

原创 合并有序数组(Java)

88. 合并两个有序数组面试题 10.01. 合并排序的数组class Solution { public void merge(int[] A, int m, int[] B, int n) { int[] nums1Copy = new int[m]; System.arraycopy(A, 0, nums1Copy, 0, m); int p1 = 0; int p2 = 0; int p = 0;

2021-03-06 23:20:16 831

原创 MySQL 事务

定义数据库的事务是指一组sql语句组成的数据库逻辑处理单元,在这组的sql操作中,要么全部执行成功,要么全部执行失败。事务的四大特性ACID原子性(Atomicity)、一致性(Consistent)、隔离性(Isalotion)、持久性(Durable)参考:我以为我对Mysql事务很熟,直到我遇到了阿里面试官MySQL默认事务隔离级别:可重复读(Repeatable Read)什么时候脏读、幻读?如何实现事务?脏读和幻读是什么?@Transactional注解的参数意义以及注解实现事务

2021-03-05 10:48:53 170 2

原创 数据库学习

结构数据库和非结构数据库区别,你了解的非结构数据库有哪些频繁的增删数据量某个表,数据库最终数据只有几万或者更少,为什么查询会变慢mysql 有那些存储引擎,有哪些区别innodb 与myisam 的区别?常见的数据库优化手段数据库是如何调优的mysql慢语句调优做过吗?说说你是怎么做的?mysql 慢查询怎么解决的,explain怎么使用,重点关注哪里数据库的大表查询优化了解吗?平时建mysql表的时候会考虑一些什么?写sql语句的时候where会考虑什么?MySQL 如何分析一条语句

2021-03-03 10:44:42 216 1

原创 JVM 学习

关于Jvm知识看这一篇就够了Java内存结构Java 类加载GC 算法,垃圾搜集器标记 -清除算法、复制算法标记-压缩算法分代收集算法JVM 调优,GC分析

2021-03-02 22:13:03 96

原创 Java 并发学习

线程池Java线程池锁【基本功】不可不说的Java“锁”事Synchronized与ReentrantLock区别总结(简单粗暴,一目了然)

2021-03-02 21:59:24 98

原创 动态规划相关题目

5. 最长回文子串

2021-02-28 21:57:24 69

原创 数组相关算法题

1. 两数之和class Solution { public int[] twoSum(int[] nums, int target) { HashMap<Integer,Integer> map = new HashMap<Integer,Integer>(); int[] result = new int[2]; for(int i=0; i<nums.length; i++){ if(map.containsKey(target-n

2021-02-28 17:38:12 157

原创 字符串相关算法题

3. 无重复字符的最长子串

2021-02-28 16:45:08 192

原创 排序数组(旋转)查找数字

33. 搜索旋转排序数组class Solution { public int search(int[] nums, int target) { int low = 0; int high = nums.length - 1; while (low <= high) { int mid = low + ((high - low) >> 1); if (nums[mid] == tar

2021-02-28 14:43:48 209

原创 Java Web 学习

Tomcat原理系列之四:tomcat与spring容器的关系

2021-02-28 09:55:39 83

原创 极客时间 消息队列高手课 学习笔记(基础篇)

概览01 | 为什么需要消息队列?哪些问题适合使用消息队列来解决?异步处理流量控制服务解耦作为发布 / 订阅系统实现一个微服务级系统间的观察者模式;连接流计算任务和数据;用于将消息广播给大量接收者。局限性:引入消息队列带来的延迟问题;增加了系统的复杂度;可能产生数据不一致的问题。02 | 该如何选择消息队列?选择中间件的考量维度:可靠性,性能,功能,可运维行,可拓展性,是否开源及社区活跃度RabbitMQ:优点:轻量,迅捷,容易部署和使用,拥有灵活的路由配置缺点

2021-02-27 21:19:08 1342

原创 极客时间 Redis核心技术与实战 笔记(基础篇 集群)

数据同步Redis 具有高可靠性,又是什么意思呢?其实,这里有两层含义:一是数据尽量少丢失,二是服务尽量少中断。AOF 和 RDB 保证了前者,而对于后者,Redis 的做法就是增加副本冗余量,将一份数据同时保存在多个实例上。即使有一个实例出现了故障,需要过一段时间才能恢复,其他实例也可以对外提供服务,不会影响业务使用。Redis 提供了主从库模式,以保证数据副本的一致,主从库之间采用的是读写分离的方式。读操作:主库、从库都可以接收;写操作:首先到主库执行,然后,主库将写操作同步给从库。主从

2021-02-27 16:17:36 1351 1

原创 Redis 学习总结

redis支持哪些数据结构。zset底层实现 跳表复杂度?Redis 的 ZSET 做排行榜时,如果要实现分数相同时按时间顺序排序怎么实现? 说了一个将 score 拆成高 32 位和低 32 位,高 32 位存分数,低 32 位存时间的方法。问还有没有其他方法;string底层实现redis的hash怎么实现的?rehash过程讲一下;扩容机制mq重复消费,丢消息的问题怎么解决?redis的list有哪几种操作?布隆过滤器特点?缓存穿透?redis使用过程中出现过变慢的情况吗?redis k

2021-02-27 16:14:37 184

原创 Java 容器相关

常用的两种有ArrayList 和 LinkedList,底层分别是用数组和链表实现的,也分别具有数组和链表的特性,都是非线程安全的。ArrayList多线程访问出现的问题抛出数组越界异常多个线程可能对同一个位置赋值参考:为什么说ArrayList是线程不安全的?解决方案:Vector(不推荐),synchronizedList() & CopyOnWriteArrayList(适合读多写少的场景)参考:并发容器(二)—线程安全的List扩容:ArrayList扩容机制Link

2021-02-27 15:59:21 66

原创 设计模式学习汇总

责任链模式:设计模式-责任链模式(17  作者:秋夜雨巷

2021-02-26 11:40:14 71

原创 Redis 数据类型和底层数据结构

Redis 五种常见数据类型string底层实现:SDSredis如何存储一个String的。hash底层实现:ziplist和dictlist底层实现:3.2 以前是 ziplist 和 linkedlist,3.2以后是 quicklistset底层实现:intset和dictzset底层实现:ziplist 和 skiplist跳表复杂度? O(logn)Redis 的 ZSET 做排行榜时,如果要实现分数相同时按时间顺序排序怎么实现? 说了一个将 score 拆成高 32

2021-02-24 19:17:05 184

关系型数据库的工作原理(翻译).pdf

我们最早接触的数据库基本都是关系型数据库,像MySQL,SQL Server之类的,但是讲解关系数据库原理的文章不是很多,How does a relational database works 是Christophe 写的一篇文章,算是讲解关系型数据库很全面的一篇文章了,这里是中文翻译

2019-10-13

空空如也

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

TA关注的人

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