自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【刷题】3-way-partition

概述partition应该都很熟悉,是快排的核心,下面是是模板代码public int partition(int[] arr, int left, int right) { int oldLeft = left; // 记录左边界 int pivot = arr[left++]; while(left <= right) { if(arr[left] <= pivot) { ++left

2022-04-04 21:18:37 472

原创 【刷题】0-1背包/完全背包

概述0-1背包和完全背包区别在于元素是否可以重复被选取,常用来解决给定target在目标数组中求解某些组合或者排列使其权值和为target的问题,或者判断是否存在这样的组合,类似将物品放入固定容量背包中,恰好装满背包所得到的最大物品价值这样的经典题型。1. 0-1 背包思路:f[i][j]表示从前i件物品中,选择若干件物品,恰好放入容量为j的背包中,可以得到的最大价值(当然依据题意也可以是多少种组合数)这个恰好其实是状态设计的一个核心点,这就表示并不是所有的dp[i][j]都是有效的,确实有可能

2022-03-27 18:32:53 443

原创 【刷题】回溯的思考

概述回溯就是基于深度优先搜索进行遍历所有可能的组合,达到递归的边界或者其它限制条件就返回的搜索方式。自己刷了一些leetcode题将回溯总结为以下两种基本思路:DFS()代表实现回溯的递归深搜函数,int[ ] nums为目标数组每次调用DFS(int index)都是要确认是否选择nums[index]每次调用DFS( )都是在往某一条递归路径形成的集合中加入第n个数,n代表DFS( )调用栈的深度每种思路对递归出口的设置也会不同,直接说比较抽象,下面通过例题来解释例题例题1剑指 O

2022-03-24 17:21:23 493 2

原创 【JavaSE】HashMap源码分析(jdk8)

概述HashMap本质是一个hash表,采用拉链法解决冲突,并且在某个位置的链表过长时将其转化为一棵二叉搜索树降低插入的开销;按照以下顺序去阅读HashMap的源码是不错的选择构造函数put( )方法remove( )方法get( )方法一、主要成员1.1 成员属性public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Seriali

2022-02-18 21:41:38 517

原创 【操作系统】基础

一、进程管理1.1 进程与线程1.1.1 概述进程进程就是正在执行的程序的实例状态:就绪态,阻塞态,运行态Linux内核中进程状态由task_struct的state属性描述,主要是以下几种状态TASK_RUNNING(运行)TASK_INTERRUPTIBLE(可中断),相当于阻塞态TASK_UNINTERRUPTIBLE(就绪态)资源:用于存放程序正文、运行时数据的磁盘和内存地址空间,以及在运行时所需要的I/O设备,已打开的文件,信号量等实现:操作系统

2022-02-18 19:02:30 273

原创 【计算机网络】

(5条消息) 校招面试之计算机网络高频面试题_MiracleWK的博客-优快云博客_计算机网络校招题/四层五层/七层协议OSI参考模型(七层模型)五层模型(重要)其中各层负责的工作如下:应用层:负责实现一切与应用程序相关的功能传输层:提供端到端可靠的传输服务,拥塞控制和流量控制,保证进程之间的通信网络层:数据的路由与转发(整个数据转发路径的选择,下一个站点该到哪),通信子网的拥塞控制,保证主机到主机的通信数据链路层:负责相邻结点(网卡之间)之间的数据传输,提供差错控制,数据校

2022-02-18 18:59:58 857

原创 【JUC】Java并发编程学习笔记

一、概述1.为什么jdk中有那么多关于并发的类并发可以理解为多线程同时工作,一般情况下是要比单线程处理速度更快,但是并发也不是在任何情况下都更优,使用多线程并发技术编写的代码在运行时可能会发生线程上下文切换上下文切换指的是内核在CPU上对进程或者线程进行切换,切换过程中需要保存操作数和程序断点等信息,极为耗费时间死锁多个线程相互等待对方释放自己需要的资源,陷入的一种无外力作用,所有线程一直阻塞下去的状态这些问题都会导致并发过程处理速度变慢,jdk的众多并发工具类和框架就是为了

2022-02-18 18:52:18 366

原创 【MySQL】MySQL高级

一、概述1.1 逻辑架构1.1.1 MySQL体系结构框图1.1.2 体系结构组成连接层该层引入连接池技术管理连接,权限验证服务层:SQL接口(SQL Interface):接受用户的SQL命令,并返回查询结果解析器(Parser):类似编译过程中的词法,语法解析器,对SQL语句进行分析得到这个语句"想做什么",并验证其是否合法优化器(Optimizer):查询优化缓存器:查询结果的缓存,若命中缓存则无需去磁盘中查找所有跨存储引擎的功能都在这里实现引擎层:向上层

2022-01-15 17:15:30 490

原创 【刷题】leetcode53. 最大子数组和

题目leetcode 53. 最大子数组和给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [5,4,-1,7,8]输出:23思路使用分治的思想解决官方题解:

2021-12-16 21:30:54 340

原创 【刷题】双指针---优化枚举

前言双指针常用于数组类型的题目需要枚举时进行的一种优化操作,类似于回溯过程中的"减枝"算法思路可以使用双指针的题目会有以下的特点:需要枚举数组间元素间的组合(常为两个元素)例题...

2021-11-29 14:51:58 630

原创 【JUC】自定义线程池

概述线程池是基于生产者-消费者模型实现的一种对线程的管理工具,其中维护了"消费者"队列和作为"缓冲区"的任务队列生产者:产生任务的线程,比如客户端的请求消费者:线程池里维护的线程,负责执行任务缓冲区:线程池里维护的任务队列线程池的基本工作过程就是生产者不停的往任务队列中加入任务,消费者队列中的线程不停的从任务队列中取出任务去完成之所以诞生这样一个设计,原因是线程池可以:降低上下文切换开销:任务到来不需要新建线程去执行,而是直接从消费者队列取出一个线程去执行任务,任务结束也不需要销毁线程提

2021-11-13 16:20:09 410

原创 【JUC】AQS 队列同步器

一、概述AbstractQueuedSynchronizer(AQS)队列同步器,是用来构建其它同步组件的基础框架,同步组件也是构建各种Lock工具(例如:ReentrantLock)的必备组件例如:下面的自定义锁MyLock的伪代码public class MyLock implements Lock { // 自定义的同步组件 private static class MySync extends AbstractQueuedSynchronizer { //

2021-11-11 15:30:18 726

原创 【JUC】synchronized原理

一、概述synchronized是Java中实现线程同步的一种方式,其在JavaSE 1.6之前被称为"重量级锁",之后对其进行了优化在原有重量级锁的基础上诞生了轻量级锁和偏向锁synchronized是借助对象头中的Mark Word与锁相关联完成同步机制,这个锁就是Monitor下面介绍下这些基本概念1.1 Java对象内存布局—Mark WordJava创建对象时会在堆区中开辟一定的空间用来存放对象,一个对象主要包含了以下信息自身运行时的数据:如HashCode、GC分代年龄,锁状态标志

2021-11-10 18:08:20 331

原创 【JUC】volatile的原理与应用

一、概述volatile用来修饰变量,可以理解为轻量化的synchronized,其作用是保证变量的可见性顺序一致性但其无法保证原子性二、Java内存模型(JMM)和可见性2.1 JMM在Java虚拟机(JVM)中定义了内存模型(JMM),屏蔽了不同CPU架构和操作系统之间对内存的访问的差异,简单的以下图的方式定义了Java线程和主内存之间的关系从抽象的角度看,JMM确定了线程和主内存之间的通信方式,线程之间的共享变量(比如:static修饰的变量)存储在主内存,每个线程都有独属于自己

2021-11-09 19:35:53 235

原创 【JUC】ThreadLocal

ThreadLocal解决线程隔离问题ThreadLocal类可以高效解决线程间数据隔离的问题先看效果:未使用ThreadLocal所有线程在对同一个对象的同一个属性进行读写操作,产生数据冲突public class ThreadLocalDemo { private String var; public String getVar() { return var; } public void setVar(String var) {

2021-10-30 16:33:52 140

原创 enum和enum class的区别

enum使用时的问题:其成员的可见范围被提升至该枚举类型所在的命名空间内这就表示在同一个命名空间中比如std,某个枚举成员只可以定义一次,"污染"了命名空间如下的定义是错误的namespace huxiang {enum Student { man, women};enum Teacher { // error man, women};}防止命名空间被污染的方法是使用enum classenum class Student { man, women};enum cla

2021-09-06 14:37:29 753

原创 unique_ptr使用

一、unique_ptr基本使用class ClassTest {public: string name; ClassTest() {} ClassTest (const ClassTest& c) { name = c.name; cout <<"class copy construct" << endl; }};unique_ptr<ClassTest> ptr_1(new ClassTest());unique_ptr<Cla

2021-09-06 14:25:00 941

原创 Git变基操作

头文件:cangjie/include/cangjie/Chir/CodeGen/LLVMDemangle.hDemangle接口定义: std::unique_ptr<DemangleInfo> Demangle(const std::string& mangledName, size_t& currentIndex);DemangleInfo定义:struct DemangleInfo {public: std::vector<std::uniq

2021-09-06 10:16:29 694

原创 Git跟踪远程分支

一、跟踪远程分支如果用git push指令时,当前分支没有跟踪远程分支(没有和远程分支建立联系),那么就会git就会报错There is no tracking information for the current branch.Please specify which branch you want to merge with.因为当前分支没有追踪远程指定的分支的话,当前分支指定的版本快照不知道要作为服务器哪一个分支的版本快照的子节点。简单来说就是:不知道要推送给哪一个分支。下面演示如何建立

2021-09-03 11:01:38 2707

原创 【刷题】leetcode98.验证二叉搜索树

分别使用前序,中序,后序的方法解决本问题方法1:前序遍历思路:判断本结点root.val是否满足要求判断左子树是否是BST判断右子树是否是BSTroot.val应该满足的要求是介于上界(upper)和下界(lower)之间,lower和upper可以从之前遍历过的结点之中获取相关信息,当root.val确认满足要求后递归到左右子树往左子树递归下界不变,上界变为root.val,因为BST对左子树所有结点(node)的要求就是node.val < root.val往右子树递归

2021-08-11 08:54:21 142

原创 Linux文件系统(硬连接和软连接)

一、文件系统特性1.概述每种操作系统(Windows, Linux),或者同一个操作系统的不同版本之间支持的文件文件系统并不相同比如windows 98 以前的微软操作系统主要利用的文件系统是 FAT (或 FAT16),windows 2000 以后的 版本有所谓的 NTFS 文件系统文件系统可以理解为管理整个系统的文件的管理形式通常所说的格式化本质是将管理磁盘文件的文件系统变成对应的操作系统可以使用的文件系统格式(这个过程中顺便删除了数据)2.Linux下文件系统2.1 Linux文

2021-08-09 14:56:03 285

原创 主机磁盘分区和启动

标题

2021-07-09 16:29:21 514

空空如也

空空如也

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

TA关注的人

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