自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 力扣股神之路动态规划

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4] 输出:5 解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 =6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1

2021-11-03 14:50:08 124

原创 力扣1014.观光组合

给你一个正整数数组 values,其中 values[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的 距离 为 j - i。一对景点(i < j)组成的观光组合的得分为 values[i] + values[j] + i - j ,也就是景点的评分之和 减去 它们两者之间的距离。返回一对观光景点能取得的最高分。示例 1:输入:values = [8,1,5,2,6] 输出:11 解释:i = 0, j = 2, values[i] + values[j] +i - j

2021-11-03 11:19:22 124

原创 152. 乘积最大子数组

给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1] 输出: 0 解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。通过次数190,778 提交次数452,585思路本题与最大自序和类似,若都是正数,则可直接得到状态转移方程dp[i] = max(dp[i - 1] * d

2021-10-28 16:22:04 149

原创 力扣918. 环形子数组的最大和

给定一个由整数数组 A 表示的环形数组 C,求 C 的非空子数组的最大可能和。在此处,环形数组意味着数组的末端将会与开头相连呈环状。(形式上,当0 <= i < A.length 时 C[i] = A[i],且当 i >= 0 时 C[i+A.length] = C[i])此外,子数组最多只能包含固定缓冲区 A 中的每个元素一次。(形式上,对于子数组 C[i], C[i+1], …, C[j],不存在 i <= k1, k2 <= j 其中 k1 % A.length =

2021-10-23 19:04:56 110

原创 双检索单例模式和反射破坏单例模式解析

/** * 双重检查方式 */public class Singleton { //私有构造方法 private Singleton() {} private static volatile Singleton instance; //对外提供静态方法获取该对象 public static Singleton getInstance() { //第一次判断,如果instance不为null,不进入抢锁阶段,直接返回实例,无需再进入并等待获取锁,节约大量时

2021-10-22 13:41:43 472 1

原创 力扣55.45, 跳跃游戏1,2

跳跃游戏 II给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。示例 1:输入:nums = [2,3,1,1,4] 输出:true 解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3步到达最后一个下标。示例 2:输入:nums = [3,2,1,0,4] 输出:false 解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 ,所以永远不可

2021-10-22 10:42:45 77

原创 力扣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 = [0] 输出:0示例 4:输入:nums = [-1] 输出:-1示例 5:输入:nums = [-100000] 输出:-100000提示:

2021-10-22 10:23:32 56

原创 力扣740. 删除并获得点数

删除并获得点数给你一个整数数组 nums ,你可以对它进行一些操作。每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除 所有 等于 nums[i] - 1 和 nums[i] + 1 的元素。开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。示例 1:输入:nums = [3,4,2] 输出:6 解释: 删除 4 获得 4 个点数,因此 3 也被删除。 之后,删除 2 获得 2个点数。总共获得 6 个点数。示例 2:输入:num

2021-10-21 21:01:48 100

原创 力扣打家劫舍1,2,3

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1] 输出:4 解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。示例 2:输入:[2,7,9

2021-10-20 20:33:47 79

原创 记一道面试题,力扣2038

总共有 n 个颜色片段排成一列,每个颜色片段要么是 ‘A’ 要么是 ‘B’ 。给你一个长度为 n 的字符串 colors ,其中 colors[i] 表示第 i 个颜色片段的颜色。Alice 和 Bob 在玩一个游戏,他们 轮流 从这个字符串中删除颜色。Alice 先手 。如果一个颜色片段为 'A' 且 相邻两个颜色 都是颜色 'A' ,那么 Alice 可以删除该颜色片段。Alice 不可以 删除任何颜色 'B' 片段。如果一个颜色片段为 'B' 且 相邻两个颜色 都是颜色 'B' ,那么 Bob

2021-10-19 23:07:49 87

原创 mysql锁

从对数据操作的粒度分 :1) 表锁:操作时,会锁定整个表。2) 行锁:操作时,会锁定当前操作行。从对数据操作的类型分:1) 读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响。2) 写锁(排它锁):当前操作没有完成之前,它会阻断其他写锁和读锁。MyISAM 表锁MyISAM 存储引擎只支持表锁,这也是MySQL开始几个版本中唯一支持的锁类型。加读锁 : lock table table_name read;加写锁 : lock table table_name write

2021-10-18 00:12:18 708

原创 sql优化方式

插入数据优化1) 主键顺序插入:将主键按顺序插入数据2) 关闭唯一性校验:在导入数据前执行 SET UNIQUE_CHECKS=0,关闭唯一性校验,在导入结束后执行SET UNIQUE_CHECKS=1,恢复唯一性校验,可以提高导入的效率。每次判断数据必须唯一的列的数据是否唯一比较耗时。3) 手动提交事务:如果应用使用自动提交的方式,建议在导入前执行 SET AUTOCOMMIT=0,关闭自动提交,导入结束后再执行 SET AUTOCOMMIT=1,打开自动提交,也可以提高导入的效率。优化ins

2021-10-17 23:19:52 81

原创 mysql事务

mysql在关闭手动提交事务后,会在该位置作为一个事务的起点,等待手动提交例如:SET AUTOCOMMIT=0;update emp set salary = salary - 300 where id = 1;update emp set salary = salary + 300 where id = 2;-- 执行结束两行数据不发生变化-- 在执行了commit之后才会提交事务,两行数据发生改变...

2021-10-17 00:20:15 50

原创 mysql8.0降序索引

在mysql8。0中引入了降序索引create index idx_emp_age_salary on emp(age,salary);EXPLAIN select age,salary from emp order by age desc,salary asc;-- extra中的值 Backward index scan; Using index8.0以前extra中的值则为using filesort,效率较低并且mysql8.0中对group by取消了隐式排序...

2021-10-16 14:28:56 112

原创 mysql索引使用

准备环境create index idx_seller_name_sta_addr on tb_seller(name,status,address);1).全值匹配效率最高explain select * from tb_seller where name='小米科技' and status='1' and address='北京市'2). 最左前缀法则如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始,并且不跳过索引中的列。示例explain select * from

2021-10-14 17:00:20 102

原创 mysql sql优化学习笔记

MySQL数据库的sql优化优化sql步骤查询sql执行频率show status like 'Com_______'; -- 查看全部的show status like 'Innodb_rows_%'; -- 查看innodb的定位低效sql慢查询日志 : 通过慢查询日志定位那些执行效率较低的 SQL 语句,用–log-slow-queries[=file_name]选项启动时,mysqld 写一个包含所有执行时间超过 long_query_time 秒的 SQL 语句的日志文件。具体可

2021-10-14 00:51:11 66

原创 mysql存储引擎innodb和myisam区别

innodb存储引擎支持事务支持行锁支持外键(mysql唯一支持外键的存储引擎)文件存储方式:.fim存储表结构,.ibd存放索引和表数据myisam存储引擎不支持事务支持表锁不支持外键文件存储方式:.frm 存储表结构;.MYD存储数据;.MYI存储索引;...

2021-10-13 15:09:25 63

原创 mysql高级学习笔记

索引帮助mysql高效获取数据的数据结构缺点:降低了更新表的效率,增加了磁盘开销。B树和B+树m叉的B数每个节点最多包含m-1个key,而B+数最多m个keyB+树的叶子节点保存了所有的key信息,数据全部存在叶子结点,所有非叶子节点都是key的索引部分mysql的btree索引对b+树做了优化,对每个叶子节点都增加了到下一个叶子节点的指针,是双向链表的结构,便于范围搜索索引设计原则对查询次数高,数据量较大的表建索引选取查询条件中的字段建索引尽量使用唯一索引,区分度越高,效率越好索引

2021-10-13 14:05:14 91

原创 图的深度优先遍历实现两点间所有路径

邻接矩阵实现的图的深度优先遍历图的深度优先遍历Graph类测试类Test项目实际应用Graph类Controller每次新增一条通道都将其插入到邻接矩阵表中图的深度优先遍历公司有业务要实现管线的自动排布,输入起止点,返回其之间所有路径及其长度。将其抽象成了一张带权图,使用深度优先遍历完成Graph类public class Graph { private ArrayList<String> vertexList; //顶点列表 private int[][] edge

2021-09-24 15:31:17 722

原创 几种排序算法python实现

归并排序python实现def hebing(arr,l,mid,r): n1 = mid - l + 1 n2 = r - mid left = [0] * n1 right = [0] * n2 for i in range(0,n1): left[i] = arr[i + l] for j in range(0,n2): right[j] = arr[mid + j + 1] i = 0 j = 0

2021-09-12 19:10:14 50

原创 操作系统内存管理

内存扩充:覆盖与交换技术动态重定位:物理地址=逻辑地址+重定位寄存器中存放的模块起始位置内存连续分配单一连续分配:无外部碎片有内部碎片固定分区分配:无外部碎片有内部碎片动态分区分配 无内部碎片有内部碎片空闲内存管理:连续分区表,连续分区链内存非连续分配管理1分页连续存储管理:把内存空间分为大小相等的分区,每个分区是一个页框,把用户进程分为和页框大小相等的部分,每个部分称为页或页面,页面之间可不连续,采用动态重定位实现逻辑地址到物理地址之间的转换页表用于记录每个页面在内存中存放位置由页号和块

2021-01-06 15:39:03 92 1

原创 集合在并发下不安全的解决方案

ArrayList:1,new verctor()2,new Collections.synchronizedList(new ArrayList)3,new CopyOnWriteArrayList();set:1,new Collections.synchronizedList(new HashSet)2,new CopyOnWriteArraySet();map:1,new ConcurrentHashMap()2,new Collections.synchronizedHashMa

2021-01-03 14:21:25 56

原创 CAS

CAS比较再交换,一条CPU原语缺点:1,自旋时间长,CPU开销大。2,只能保证一个共享变量的原子操作,而synchronized能保证一段代码同步3,ABA问题

2020-12-30 15:19:24 65

原创 JMMJava内存模型

JVM运行程序的实体是线程,每个线程创建时JVM都会为为其创建一个工作内存,工作内存是每个线程的私有数据区域,Java内存模型规定所有变量都存在主内存,主内存是共享内存区域,所有线程都可以访问,线程对变量的操作必须在自己的工作内存中完成,先在主内存中拷贝到工作内存,操作完成后再写回主内存。...

2020-12-30 14:58:39 76

原创 框架注解

@Param@Param用在mapper中方法的参数前,多个参数不加@Param注解会报错

2020-12-23 15:28:26 64

原创 线程等待唤醒的三种方式

线程等待唤醒的三种方式:Object下的wait和notify,Condition接口下的await和singalLockSupport的park和unpark前两种必须先获取并持有锁,并且必须先等待再唤醒LockSupport都不需要,通知可以在阻塞之前执行每个使用Support的线程都有一个许可证(pemit)默认是0,调用一次park会减一为0阻塞直到为一,调用一次unpark会加一变为一(封顶为一)...

2020-12-21 22:39:58 364

原创 Synchronized底层实现

每一个锁对象有一个锁计数器和一个持有该锁线程的指针当执行monitorenterz时,如果锁计数器为0说明没用被持有,java虚拟机会将锁对象指向当前线程并将计数器加1.若目标锁对象的计数器不为零如果锁对象的持有线程为当前线程,将锁计数器减一,否则等待直到有线程释放锁执行monitorexit时,锁计数器减一,为零表示以释放...

2020-12-21 20:43:37 55

原创 处理机调度算法

处理机调度算法:1.先来先服务:先到的先服务,不会导致饥饿2.短作业优先:运行时间短的优先,会导致饥饿(当队列一直有短作业时)3.高响应比优先:(等待时间+运行时间)/ 运行时间综合了前两种算法不会导致饥饿时间片轮转:一个进程在一个时间片没用执行完会放到就绪队列队尾,没用完一个时间片会提前释放cpu资源,不会导致饥饿,时间片太大会退化为先来先服务,太小会导致切换频繁开销大,响应时间长优先级调度算法:抢占式和非抢占式,优先级高的先执行,会导致饥饿多级反馈队列:会导致饥饿,抢占式.

2020-12-21 16:23:53 1259

原创 进程,系统调用,原语

操作系统用户态切换到内核态:中断是唯一途径内核态到和心态只许一个特权指令系统调用:由操作系统实现提供的所有系统调用所构成的集合即程序接口或应用编程接口(Application Programming Interface,API)。是应用程序同系统之间的接口系统调用分为:1,设备管理2,文件管理3,进程控制4,进程通信5,内存管理进程由进程控制块(PCB是进程存在的唯一标志),程序段和数据段组成,是一个动态的执行过程,进程实体是静态的数据进程状态:创建,就绪,运行,阻塞,终止原语:

2020-12-21 14:29:51 2636

原创 JVM内存模型和GC算法

方法区:静态变量、常量、类信息、运行时的常量池static ,final,Class,常量池程序计数器:一个指针(线程私有)栈:基本数据值、对对象的引用和方法的位置(引用)new 一个对象就是在栈中添加一个引用,再再堆里面实例一个对象,然后让引用指向那个对象本地方法栈堆:实例变量,类,方法,常量新生代:伊甸园区,幸存区0区,幸存区1区老年代:养老区永久区:常驻内存,存放JDK自身携带的class对象。interface元数据,java运行时的环境或类信息,这个区域不存在垃圾回收,关

2020-10-31 10:19:32 119

原创 操作系统

1、 若干个等待访问磁盘者依次要访问的磁道为 20 , 44 , 40 , 4 , 80 , 12 , 76 ,当前磁头位于 40 号柱面,若用最短寻道时间优先磁盘调度算法,则访问序列为:( )。40,44,20,12,4,76,80解释 :以此和40相减绝对值小的优先2 、一进程刚获得三个主存块的使用权,若该进程访问页面的次序是{1321215123},采用LRU算法时,缺页数是___5___次。解释:1 第一次(缺1)3 1 第二次(缺3)2 3 1 第三次(缺2)1 2 3(刚使用的放

2020-10-21 15:42:45 629

原创 我的第一次面试,字节跳动后端开发一面

字节跳动一面先是两道算法题第一道给定一个无序的整数数组,找到其中最长上升子序列的长度。例如[10,9,2,5,3,4]最长的上升子序列是[2,3,4],它的长度是3第二道给定一个数组,列出该数组中所有满足a+b+c=0条件的三个数的组合,要求不能有重复(例如-1,-1,2和2,-1,-1重复)写出sql语句使用了聚合函数表名:exam_stu_score表结构: id| exam_id | user_id(学员id)| score1.找出在exam_id=1、2、3三场考试中总

2020-08-02 14:18:54 277

原创 mysql数据库常用sql语句

mysql数据库常用sql语句DDL操作表 BIRTHDAY DATE, INSERT_TIME TIMESTAMP );R(Retrieve)查询某个数据库中所有的表SHOW TABLES;查询表结构DESC 表名;U(update)1,修改表名ALTER TABLE 表名 RENAME TO 新表名2,修改表字符集,查看字符集SHOW CREATE TABLE 表名;ALTER TABLE 表名 CHARACTER SET UTF83,添加一列ALTER

2020-07-25 10:31:30 1399

原创 Linux系统

Linux常用命令ls 查看文件和文件夹ls -a 查看隐藏文件ls -l/ll 查看文件详细信息cd 切换目录cd … 退回一级目录cd ~ 退到rootcd -返回上一次返回的目录pwd 查看当前所咋目录touch+文件名 创建空文件clear/ctrl+l 清屏mkdir 创建目录rmdir 删除目录(空的)mkdir --help 提示信息cat 查看文件所有内容more 先显示一屏,回车再看一行,空格再看一屏,上下切换屏,q/ctrl+c退出查看less 和more

2020-07-25 10:26:12 162

原创 常用几种集合的数据结构

常用几种集合的数据结构ArrayList底层是数组结构,查询快,增删慢LinkedList底层是双向链表,查询慢,增删快

2020-07-25 10:23:51 679

空空如也

空空如也

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

TA关注的人

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