自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 问答 (1)
  • 收藏
  • 关注

原创 leedcode-array

窗口中的最大值单调队列窗口中的众数优先队列(排序)使用 map 记录数出现的次数,在窗口移动的时候进行更新,同时加入优先队列,每次取得队列头部,比较其次数是否与map中一致,不一致,移除,一致,即为当前窗口的众数分割,使得子数组的和的最大值最小(leedcode-410)二分...

2021-05-07 16:12:43 96

原创 leedcode-二分查找

一 整体有序leedcode35:搜索插入位置leedcode34:查找元素的第一个位置和最后一个位置小于target最后位置:nums[mid]==target -> right移动 -> return right大于target起始位置:nums[mid]==target -> left移动 -> return left等于target起始位置与终止位置与小于大于一致,仅需改变return即可 // 大于target的起始位置 p

2021-01-26 22:58:57 118

原创 leedcode-高频

1. 字典序的第k小数字(leedcode - 440)分析(p当前位置):指定前缀下的节点个数如果第k个数字在当前前缀下,进一步寻找:pre *= 10, p++如果第k个数字不在当前前缀下:pre ++, p += count

2021-01-09 15:29:57 117

原创 leedcode-对列

1. 单调对列(leedcode - 239)class MonotonicQueue{ public LinkedList<Integer> list = new LinkedList<>(); // 添加元素,将小于num的全部删除 public void add(int num){ while(!list.isEmpty() && list.getLast() < num){ list.re

2020-11-01 11:24:24 154

原创 leedcode-二分查找

1. 搜索旋转排序数组(leedcode-33)数组中不存在重复的元素 public int search(int[] nums, int target) { int left = 0; int right = nums.length - 1; int mid; while(left <= right){ mid = (left + right) / 2; if(num

2020-08-05 14:05:46 89

原创 leedcode-排序

public void buildMaxHeap(int[] nums, int length) { // 从最后一个非叶子节点依次往前进行遍历 for(int i = length/2 - 1; i >= 0; i--) { adjustDown(nums, i, length); } }

2020-07-29 13:40:02 95

原创 leedcode-并查集

并查集实现parent:记录每个节点的父节点size:记录每棵树的重量,目的是 union 后树依然保持平衡性路径压缩:保证任意数的高度为常数public class UF { // 连通分量个数 private int count; // 存储一个树 private int[] parent; // 记录树的重量(将小一些的树接到大一些的树下面) private int[] size; public UF(int n) { this.count = n

2020-06-17 21:09:24 146

原创 红黑树

前言1. 红黑树的来源-23树红黑树的来源讲解2-3树是 B 树的特例(3阶 B 树),通过红黑节点来描述 2-3 树中的不同节点,使得程序更简洁2. 红黑树RBT vs 平衡二叉树AVLAVL 左右子树高度相差不超过 1,RBT 左右子树高度相差不超过一倍(完美的黑色平衡)AVL 树比红黑树更加平衡,但 AVL 树在插入和删除时会存在大量的旋转操作(红黑树可以通过颜色,少做几次旋转)红黑树1. 性质每一个节点都有一个颜色,要么为红,要么为黑树的根节点为黑色父子节点

2020-06-17 13:44:02 100

原创 leedcode-栈

括号的合法性单括号记录左右括号个数,当右括号个数大于左括号个数,返回 false多括号 public boolean isValid(String s) { HashMap<Character, Character> map = new HashMap<>(); map.put('(', ')'); map.put('[', ']'); map.put('{', '}'); Stack<Character>

2020-06-16 01:10:47 108

原创 leedcode-链表

反转链表(leedcode-206)创建一个 newHead,在头节点逐个插入 public ListNode reverseList1(ListNode head) { ListNode newHead = null; ListNode p1 = head, p2 = head; while(p1 != null) { p2 = p1.next; p1.next = newHead; newH

2020-06-15 14:06:03 98

原创 leedcode-贪心算法

区间调度区间调度详解跳跃游戏leedcode-55问题描述:给定一个非负整数数组,最初位于数组的第一个位置,数组中的每个元素代表你在该位置可以跳跃的最长长度,判断是否能够到达最后一个位置思路1从后往前遍历 public boolean canJump(int[] nums) { int last = nums.length-1; for(int i=nums.length-2; i>=0; i--) { if(nums[i]+i >

2020-06-14 21:53:24 233

原创 leedcode-双指针

双指针简介分为两类:快慢指针:主要解决链表中的问题左右指针:主要解决数组 / 字符串中的问题快慢指针判断链表中是否含有环借助哈希表(判断哈希表中是否含有当前节点)使用快慢指针(快指针每次走两步,如果有环,二者会相遇)已知链表中含有环,返回这个环的起始位置思路:先寻找快慢指针相遇的点当二者相遇时,让其中一指针指向头节点,然后以相同的速度前进,再次相遇时所在的节点位置就是环开始的位置证明:第一次相遇,假设 slow 走了 k 步,则 fast 走了

2020-06-14 15:31:59 159

原创 leedcode-LRU

LRU缓存机制(leedcode-146)题目描述:设计和实现一个 LRU(最近最少使用)缓存机制;它应该支持以下操作:获取数据 get 和写入数据 putget(key):如果关键字存在于缓存中,则获取该关键字的值,否则返回 -1put(key, value):如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组。当缓存容量达到上限时,它应该在写入新数据之前删除最久未使用的数据值,从而为新的数据值留出空间时间复杂度:O(1)方法一:自己实现分析:put 和 get

2020-06-12 18:04:15 149

原创 leedcode-区间

最大不重叠子集(leedcode-435)问题描述:求最大不重叠子集采用贪心算法 解法排序:按 end 排序思想:从区间集合中选择一个区间 x,这个 x 是当前所有区间中结束最早的( end 最小)把所有与 x 区间相交的区间从集合中删除重复步骤 1 和 2,直到集合为空区间合并(leedcode-56)问题描述:给出一个区间的集合,请合并所有重叠的区间排序:按 start 排序区间交集(leedcode-986)问题描述:给定两个由一些闭区间组成的列表

2020-06-09 00:31:31 195

原创 leedcode-floodfill

构建框架图的遍历// (x, y) 为坐标位置 void fill(int x, int y) { fill(x - 1, y); // 上 fill(x + 1, y); // 下 fill(x, y - 1); // 左 fill(x, y + 1); // 右}leedcode颜色填充问题描述:实现颜色填充功能,待填充的图像用二维数组 image 表示,元素为初始颜色值。初始坐标点的横坐标为 sr 纵坐标为 sc。需要填充的新颜色为 new

2020-06-08 14:23:49 87

原创 leedcode-小知识

前缀和问题描述:给定一个整数数组(含有负数)和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数preSum[nums.length + 1]:记录 [0…i-1] 的和(必须记录 0)nums[i…j] = preSum[j+1] - preSum[i]优化:借助哈希表,在记录前缀和的同时记录该前缀和出现的次数...

2020-06-07 23:57:52 142

原创 leedcode-滑动窗口

代码框架 public void slidingWindow(String s, String t) { HashMap<Character, Integer> need = new HashMap<>(); HashMap<Character, Integer> window = new HashMap<>(); for(char c : t.toCharArray()) { need.put(

2020-06-06 17:04:30 132

原创 leedcode-回溯

全排列 List<List<Integer>> ans = new ArrayList<>(); public List<List<Integer>> permutation(int[] nums){ List<Integer> track = new ArrayList<>(); backtrack(nums, track); return ans; } public void

2020-06-05 15:54:55 108

原创 leedcode-动态规划

标准套路明确 状态 和 选择明确dp数组的定义根据选择,思考状态转移的逻辑处理边界情况最长回文子串(leedcode-5)问题描述: 给定一个字符串 s,找到 s 中最长的回文子串。dp数组: dp[s.length()][s.length()](记录 i 到 j 之间是否是回文,true/false)dp公式:dp[i][j] = dp[i+1][j-1] && s.charAt(i) == s.charAt(j);边界:dp[i][i] = true; dp.

2020-05-24 15:47:00 673

原创 leedcode-二叉树

基本方法由数组构造二叉树(null 用 0 表示)先序,中序,后序,层次遍历(递归,迭代)深度public class TreeNode{ public int val; public TreeNode left; public TreeNode right; public TreeNode(int x){ val = x; } }构建二叉树 public TreeNode createBinaryTree(int[] array, int in

2020-05-12 17:10:44 306

原创 SNN

LIF模型LIF模型

2020-04-07 08:40:40 260

转载 Java集合

集合架构集合与数组的区别长度内容元素数组固定基本类型或引用类型同一种类型集合可变引用类型可以存储不同类型(一般存储同种类型)Collection集合的方法集合分类...

2020-03-10 19:07:37 192

原创 docker

Docker简介docker核心概念(镜像,容器,仓库)及基本操作docker仓库hub.docker.comc.163.comcentos安装docker

2020-03-06 16:38:07 67

原创 linux固定ip

vi /etc/sysconfig/network-scripts/ifcfg-ens33编辑文件内容BOOTPROTO=“static”               # ip设置为静态:dhcp -> staticONBOOT=“yes”        &n...

2020-03-05 13:52:38 116

原创 springcloud

SpringCloud简介与5大常用组件

2020-02-29 11:44:48 206

原创 Java异常

异常体系从责任角度看Error属于JVM需要负担的责任RuntimeException是程序应该承担的责任Checked Exception可检查异常是Java编译器应该承担的责任Error和Exception的区别Error:程序无法处理的系统的错误,编译器不做检查;程序无法处理的错误Exception:程序可以处理的异常,补货后可能恢复;程序可以处理的错误...

2020-02-04 12:48:00 81

原创 网络

TCP/IPTCP简介OSI(概念型框架)的实现:TCP/IP面向连接的,可靠的,基于字节流的传输层通信协议将应用层的数据流分割成报文段并发送给目标节点的TCP层数据包都有序号,对方收到则发送ACK确认,未收到则重传使用校验和来检验数据在传输中是否有误TCP FlagsURG:紧急指针标志ACK:确认序号标志PSH:push标志RST:重置连接标志SYN...

2020-02-02 23:19:07 209

原创 Redis

一 缓存数据库作用实现了对热点数据的高速缓存,提高应用的响应速度,极大缓解后端数据库的压力主流应用架构图片缓存中间件Memcache : 代码层次类似Hash支持简单数据类型不支持数据持久化存储不支持主从不支持分片Redis数据类型丰富支持数据磁盘持久化存储支持主从支持分片二 RedisRedis为什么能这么快1000...

2020-01-21 00:13:09 172

原创 java多线程与并发-原理

线程安全问题主要诱因存在共享数据(临界资源)存在多条线程共同操作这些共享数据解决-互斥锁解决方案:同一时刻有且仅有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再对共享数据进行操作,引入互斥锁(Java中使用synchronized)互斥锁的特性:互斥性:即同一时间只允许一个线程持有某个对象锁可见性:必须确保在锁被释放之前,对共享变量所做的修改,...

2019-12-23 22:29:38 166

原创 Java多线程与并发

进程和线程进程是资源分配的最小单位,线程是CPU调度的最小单位所有与进程相关的资源,都被记录在PCB中进程是抢占处理机的调度单位;线程属于某个进程,共享其资源线程只由堆栈寄存器,程序计数器和TCB组成线程不能看做独立应用,而进程可看做独立应用进程有独立的地址空间,相互不影响,线程只是进程的不同执行路径线程没有独立的地址空间,多进程的程序比多线程程序健壮进程的切换比线程的...

2019-12-22 23:34:10 89

原创 数据库-语法

Group by满足“select 子句中的列名必须为分组列或列函数”,该条件只针对于同一张表成立列函数对于group by子句定义的每个组各返回一个结果将结果集存入临时表Having通常与group by子句一起使用where过滤行,having过滤组出现在同一sql的顺序:where > group by > having...

2019-12-21 20:51:31 64

原创 数据库-锁

MySQL中的锁机制MyISAM与InnoDB关于锁方面的区别MyISAMMyISAM默认用的是表级锁,不支持行级锁不会出现死锁(MyISAM总是一次获得SQL语句所需要的全部锁。这也正是MyISAM表不会出现死锁(Deadlock Free)的原因)在执行LOCK TABLES后,只能访问显式加锁的这些表,不能访问未加锁的表;同时,如果加的是读锁,那么只能执行查询操作,而不能...

2019-12-20 21:23:02 101

原创 数据库-索引

索引模块索引目的:快速查询数据构成:主键,唯一键以及普通键等索引数据结构:(1) 二叉查找树(每深入一层,进行依次I/O操作)(2)B-/B Tree(相比于二叉数每个节点能存储更多的索引)(3)B+ Tree(非叶子节点不携带数据,每个节点可以存储更多的索引)(4)HashB+树更适合用来做存储索引:B+树的磁盘读写代价更低(每个节点可以存储更多的索引)B+...

2019-12-19 21:51:06 121

原创 GC

垃圾判断对象被判定为垃圾的标准没有被其他对象引用判定对象是否为垃圾的算法引用计数算法概述(1)通过判断对象的引用数量来决定对象是否可以被回收(2)每个对象实例都有一个引用计数器,被引用则+1,完成引用则-1(3)任何引用计数为0的对象实例可以当作垃圾收集优点:执行效率高,程序执行受影响较小缺点:无法检测出循环引用(两个对象相互引用)的情况,导致内存泄漏可...

2019-12-19 00:08:17 196

原创 内存模型

JVM架构图内存模型程序计数器当前线程所执行的字节码行号指示器(逻辑)改变计数器的值来选取下一条需要执行的字节码指令和线程是一对一的关系对Java方法技术,如果是native方法则计数器值为Undefined不会发生内存泄漏虚拟机栈Java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧(存储局部变量表,操作数栈,动态链接,方法出口等),当方法执行...

2019-12-17 18:17:05 148

原创 平台无关性

Compile once, run anywhere为什么要先编译成字节码再解析成机器码java的平台无关性(通过jvm)为什么jvm不直接将源码解析成机器码准备工作:每次执行需要各种检查(各种语法句法的检查)兼容性:也可以将别的语言解析成字节码JVM架构反射java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象...

2019-12-16 18:50:05 151

原创 detail

DataObject对应数据库,建立实体类ProductCategoryProductInfoOrderMasterOrderDetailSellerInfoDao使用 jpa ,对每个实体类建立 dao(repository)List itemServiceController...

2019-12-06 00:30:07 164

原创 注解

常用@SpringBootTest : 测试@Slf4j : 日志Entity@Entity@Data@DynamicUpdate : 动态更新:设置为true,设置为true,表示update对象的时候,生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中,默认false@Id : 主键由数据库自动生成(主要是自动增长型)@Generat...

2019-12-06 00:29:58 75

原创 sell

访问流程nginxsell.com: location / { root /opt/data/wwwroot/sell; index index.html index.htm; }sell.com/sell/..: location /sell/ { proxy_pass htt...

2019-12-06 00:29:50 413

原创 1. 项目设计

一 技术要点 二 功能分析 三 部署架构nginxNginx (engine x) 是一个高性能的HTTP和反向代理web服务器

2019-12-06 00:29:35 127

空空如也

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

TA关注的人

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