自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Shell脚本基础知识

shell是一个命令的解释器!shell是一门功能强大的脚本语言,易编写,易调试,灵活性强。需要注意的是shell是一门解释执行的脚本语言,并且可以使用shell调用Linux命令。Shell的分类,主要分为两个家族,这两个家族的语法互不兼容:Bourne Shell:从1979年开始Unix使用Bourne Shell,Bourne Shell的主文件名为sh。主要包括sh,zsh,psh,ksh,BashC Shell:主要运用在BSD版本的Unix中,其语法与C语言类似所以叫做C。

2022-12-12 17:35:43 528 1

原创 【无标题】

H264分为VCL(Video Coding Layer视频数据编码层)层和NAL(Network Abstraction Layer视频数据网咯抽象层)层,前者负责对视频的原始数据进行压缩,后者负责对视频数据的网络传输,由于以太网的数据包是1500字节,在网络传输的过程当中需要进行需要在网络传输的过程当中进行拆包和组包的操作这些操作都是再NAL层完成的。在H264还通过不同大小的预测块进行了高精度的亚像元运动矢量补偿算法,还使用了多帧参考计算最佳的匹配图像,在预测环路使用了去除块效应的滤波器。

2022-11-22 23:52:08 323

原创 kafka基本知识

本文介绍了消息队列基本概念,kafka的基本架构和实现以及kafka中的基本概念和机制,以及kafka使用中的一些问题。

2022-09-13 11:05:54 1718

原创 JVM知识总结

JVM知识点总结什么是jvmjvm就是java虚拟机,本质上是一个程序虚拟机。所以我们首先得搞懂什么是虚拟机,虚拟机是在操作系统上层的一款软件,分为程序虚拟机和系统虚拟机,程序虚拟机就是用于执行程序的,系统虚拟机可以用于模拟一台物理设备。jvm是一台程序虚拟机用于执行字节码文件。jvm怎么工作的程序首先经过词法分析,分析出关键字,变量和常量,接着进行语法分析分析出程序执行的语法树。接着生成字节码文件。字节码文件就是java程序和虚拟机之间沟通的桥梁。jvm的主要构成部分分为三层分别为类加载层,运行时

2022-04-19 12:40:22 1129

原创 Redis学习总结

Redis6NoSQL技术为什么引入NoSQL网站开发技术分为功能型技术(java,mysql),扩展型技术(包括Spring和Mybatis等开发框架能够提升整个系统的可扩展性)和性能型技术(ElstackSearch,NoSQL,RocketMQ)。也就是说Redis属于性能型技术,主要用于解决分布式信息存储。什么是NoSQLNoSQL指的是Not Only SQL(不仅仅是关系型的数据库),也就是非关系型的数据库可以是像Redis一样的key - value键值对的方式存储数据信息。列举

2022-04-06 16:30:30 1190 1

原创 mysql事务重点知识总结(需要完整脑图的可以联系我)

MYSQL事务事务是一组操作单元,它将数据从一种状态转变到另外一种转台。特性(ACID)原子性(Atomicity)原子性描述的事务中的操作时一组不可分割的单元,要么全部成功要么全部失败。保证原子性的日志undo log事务在执行过程当中可能会出现语句错误,服务器错误,甚至服务器断电等错误。或者程序执行过程中回滚。这样在事务中执行的操作都应该撤销是的数据回归到事务没开始执行到状态,这个歌过程叫做回滚,undo日志时一个用于回滚的逻辑日志,比如说我们执行插入数据的操作鴤会记录当前插入的主键,当需.

2022-03-13 11:27:32 673

原创 MySQL索引重点问题总结(需要完整脑图的联系我)

MySQL索引MySQL逻辑架构连接层MySQL连接层主要包括连接池,mysql属于C/S架构,每次客户端和服务端连接时,底层都会创建一个TCP连接,连阶层主要负责管理这些连接,验证用户名密码和权限认证服务层mysql的服务层主要负责sql语句的解析优化。它有基础服务组件,SQL借口,解析器,优化器,查询缓存(MySQL8.0之后去除了这个鸡肋的设计)等组成。整个语句的执行过程是这样的先查看查询缓存中是否存在当前执行的语句,如果不存在则先由解析器解析,优化器指定执行计划,调用sql接口由存储引擎.

2022-03-13 11:25:56 1293

原创 jvm运行时数据区

JVM运行时数据区前言:java编程与C++编程在内存管理和垃圾回收上的区别就是进行C++编程时程序员需要去关心我们所创建的每一个对象的创建使用和销毁,比如c++中有构造函数和析构函数用于对象的管理;而java提供了java虚拟机帮助我们对内存分配和垃圾回收的管理,这样编程起来更加方便,无需在实现代码逻辑的同时还要去关心底层对象的状态。但是也带来了一些十分要命的缺点,就是我们大部分代码不会出现内存溢出和内存泄漏的毛病;但是一旦它出现了我们很难调试,这就是我们学习jvm内存布局的原因。运行时数据区的划分

2022-01-16 16:58:31 551

原创 验证二叉搜索树java实现

方法一:二叉树的中序遍历/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNod

2021-12-29 21:41:34 440

原创 最长连续子序列java实现

class Solution { public int longestConsecutive(int[] nums) { //这一题我们可以使用图的并查集算法来解决,首先要使用图的算法,先得抽象出图的节点和图的边,在这一题中图的节点是每一个数字,图的边是每一个大小相邻的节点 //首先的根据nums构建出一个并查集的根节点集,本根节点包含的节点数量,以及需要创建一个set来以O(1)的时间查找每一个元素 Map<Integer,Integer&gt

2021-12-05 19:41:43 1014

原创 多余的边java实现

class Solution { public int[] findRedundantConnection(int[][] edges) { //首先这是一个关于图的问题,我们可以使用这样一种思路来解题,先将图给分为由n个节点(每个节点看作一个子图)构成的一个图,接着我们遍历每一条边逐个添加一条边,如果添加的一条边将两个子图联合成一个图那么它一定就不会形成有环图,如果一条边添加到了同一个子图中那么这个子图就一定会产生一个环 //首先遍历所有节点找到所存储的数最大的节点

2021-12-05 19:02:54 538

原创 相似的字符串java实现

class Solution { public int numSimilarGroups(String[] strs) { //我们可以使用并查集的思想解决这个问题,将相同根的字符串分为一组,想要使用并查集的知识解决问题首先需要找出图的节点和边,我们把每一个字符串当作一个节点,把字符串相似的关系看作是一条边 int length = strs.length; //首先使用一个int数组使用数组下标的方式来记录每一个字符串的根,初始时字符串的根都是自己

2021-12-05 18:21:57 412 1

原创 省份数量java实现

class Solution { public int findCircleNum(int[][] isConnected) { //首先我们这一题采用并查集的知识进行解题,并查集是图中不相交集合,它与图中的一个个子图相对应,通常用来求解一个图中有多少个子图或者一个图中的子图最大有多少个元素等等问题 //要运用图的只是解题的前提是确定图中的节点和边,我们将每一个城市当作是一个节点,把城市和城市之间的直接相连的关系当作是一条边 //并查集的定义就是定义一

2021-12-05 17:02:14 238

原创 重组序列java实现

class Solution { public boolean sequenceReconstruction(int[] org, List<List<Integer>> seqs) { //这一题判断org是不是seqs的唯一公共超序列,我们想办法找出它的公共超序列,由于公共超序列中的顺序必须和子序列中的顺序相同所以我们很容易想到使用图的拓扑排序算法来解决这个问题,如果拓扑排序序列是唯一的并且它等于org直接返回true,如果拓扑排序序列不唯一则返回fals

2021-12-05 13:40:54 485

原创 外星文字典java实现

class Solution { public String alienOrder(String[] words) { //这一题给我们的信息是外星文的一系列单词,要求我们找出一个符合条件的外星文字典序列,我们可以运用图的拓扑排序算法找到这样一个序列,想要运用图的相关算法,必须先找出图的节点和边,我们把每个字母当做是图的节点,对于每个字母的先后顺序当做是图的一条边, //创建图和图的入度 Map<Character,Set<Characte

2021-12-05 11:54:57 184

原创 课程排序java实现

class Solution { public int[] findOrder(int numCourses, int[][] prerequisites) { //这一题输出先修课程在后修课程之前的特点其实和拓扑排序的特点不谋而合 //第一步是根据prerequisites构建一张图 Map<Integer,List<Integer>> graph = new HashMap<>(); for(in

2021-12-04 23:11:13 460

原创 最长递增路径java实现

class Solution { public int longestIncreasingPath(int[][] matrix) { //这一题需要我们寻找最长的递增路径,也就是说递减的路径就无用,所以它是一个有向图,由于大的数不会再回头指向小的所以它是一个无环图。我们这一次更关心的是路劲所以我们选用的是深度优先搜索算法,由于矩阵中的每一个节点都可能是起始节点所以我们必须要遍历所有的节点才能找到那个最大的路劲。为了避免重复计算我们使用一个二维数组来缓存已经计算过的节点。

2021-12-04 22:04:38 267

原创 计算除法java实现

class Solution { public double[] calcEquation(List<List<String>> equations, double[] values, List<List<String>> queries) { //这一题可以将我们的除法计算过程抽象成一个图来做运算,每一个除数与被除数抽象成图的一个节点,而除数和被除数的关系抽象成图的边,至于商则是除数上的一个属性,我们运用宇哥Map<String

2021-12-04 19:30:55 1750

原创 所有路径java实现

class Solution { public List<List<Integer>> allPathsSourceTarget(int[][] graph) { //这一题需要我们列举出所有从0到n-1的所有路劲,解决这个问题需要多步,每一步有多个选择,又要列举出所有的情况,很明显这该使用回溯法 //至于回溯的参数,我们需要知道每一步遍历的是哪一个节点,和该节点的相邻节点有哪些,并且需要动态记录,所以至少需要有本节点,领接矩阵,动态数组,结果

2021-12-04 17:14:02 407

原创 开密码锁java实现

class Solution { public int openLock(String[] deadends, String target) { //对于这道题的分析我们可以通过图的算法来解决,首先如果要运用图的算法就先要抽象出图的节点和边,我们将密码的状态当做一个节点,将密码状态的一个转换当做一条边,找到最少的变换次数开锁也就是说我们需要在这样一个无权图中寻找一个最短路径,使用广度优先搜索再合适不过了,因为广度优先搜索的特点在于先寻找本节点距离为1的节点在接着递增步长寻找节点。这样

2021-12-04 16:18:11 613

原创 单词演变java实现

方法一:两个队列遍历class Solution { public int ladderLength(String beginWord, String endWord, List<String> wordList) { //创建两个队列,用于交替遍历当前单词变化一个字母之后可以得到的单词 Queue<String> queue1 = new LinkedList<>(); Queue<String> q

2021-12-03 22:09:51 219

原创 矩阵中的最短距离java实现

class Solution { public int[][] updateMatrix(int[][] mat) { //首先创建一个和mat大小一样的矩阵dist,初始化dist的值,mat的值如果是0直接为0mat的值如果为1那就设置成无穷大 int length1 = mat.length; int length2 = mat[0].length; int[][] dists = new int[length1][length2

2021-12-03 20:23:39 447

原创 二分图java实现

class Solution { public boolean isBipartite(int[][] graph) { //我们通过给每个节点标色的方式来区分这个图是不是二分图,每取出一个节点先对这个节点标色,然后对它相邻的每一个节点标上相反的颜色,当遇到一个节点已经标色的时候我们判断它是否符合本节点和相邻节点的颜色不同 //首先创建一个一维数组用于保存每个节点现在的颜色状态 int colors[] = new int[graph.length];

2021-12-03 19:29:38 605

原创 岛屿的最大数目java实现

class Solution { public int maxAreaOfIsland(int[][] grid) { //首先需要确定一个于grid大小相等的矩阵用于标识节点是否被访问了 int length1 = grid.length; int length2 = grid[0].length; boolean[][] visited = new boolean[length1][length2]; //需要装备一

2021-12-02 14:08:07 267

原创 排列的数目java实现

class Solution { public int combinationSum4(int[] nums, int target) { //首先使用一维数组缓存已经计算的排列的数目 int[] dp = new int[target + 1]; dp[0] = 1; //对于每个数i可以尝试在i - num[j]加入本数字 for(int i = 1;i <= target;i++){

2021-12-01 16:16:00 102

原创 最少硬币数目java实现

class Solution { public int coinChange(int[] coins, int amount) { //首先使用一个一维数组来缓存状态 int[] dp = new int[amount + 1]; //起始时默认使用前i中硬币凑不出,使用target + 1表示 Arrays.fill(dp,amount + 1); //初始时的dp[0]表示的是使用0种硬币凑出amount为0,只有一

2021-12-01 15:41:10 661

原创 分割等和子集java实现

class Solution { public boolean canPartition(int[] nums) { //首先累加所有元素的和,如果其是一个奇数就不可能找到一个某几个个元素的和等于它的一般 int sum = 0; for(int num : nums){ sum += num; } if(sum % 2 != 0){ return false;

2021-12-01 13:58:48 209

原创 三角形最短路径和java实现

class Solution { public int minimumTotal(List<List<Integer>> triangle) { //首先创建一个用于缓存结果的一维数组,它的大小应该是三角形底边的长度 int[] dp = new int[triangle.size()]; //动态规划需要分三种情况来讨论,第一种指的是每一行的第一个元素,它只能从正上方一条路劲可以到达,第二种是每一行的最后一个元素它只能从左上方

2021-12-01 12:23:25 329

原创 最短路径和java实现

class Solution { public int minPathSum(int[][] grid) { //创建一维数组用于缓存动态规划的状态 int[] dp = new int[grid[0].length]; //给一维数组赋初值 dp[0] = grid[0][0]; for(int i = 1;i < grid[0].length;i++){ dp[i] = dp[i - 1

2021-12-01 11:33:05 275

原创 路径的数目java实现(多种代码方案实现)

标题方法一:递归求解class Solution { public int uniquePaths(int m, int n) { //为了减少不必要的重复计算创建一个二维数组来保存计算结果 int[][] dp = new int[m][n]; //使用递归求解 return getPath(m - 1,n - 1,dp); } public int getPath(int m,int n,int[][]

2021-11-29 16:11:58 472

原创 子序列数目java实现

class Solution { public int numDistinct(String s, String t) { int[] dp = new int[t.length() + 1]; if(s.length() > 0){ dp[0] = 1; } for(int i = 0;i < s.length();i++){ for(int j = Math.min(i,t

2021-11-29 15:23:10 314

原创 字符串交织java实现

class Solution { public boolean isInterleave(String s1, String s2, String s3) { //首先通过字符串长度粗略判断是否符合条件 int len1 = s1.length(); int len2 = s2.length(); if(len1 + len2 != s3.length()){ return false; }

2021-11-28 22:18:14 98

原创 最少回文切割java实现

class Solution { public int minCut(String s) { //首先为了快速判断s[i,j]是不是一个回文串,构建一个二维boolean数组来存储是不是回文的情况 boolean isVal[][] = new boolean[s.length()][s.length()]; for(int i = 0;i <s.length();i++){ for(int j = 0;j <= i

2021-11-28 15:07:46 207

原创 最长斐波那契数列java实现

class Solution { public int lenLongestFibSubseq(int[] arr) { //建立一个二维数组来存储每一个以i为结尾元素,j为倒数第二个元素的斐波那契数列的最长长度 int[][] dp = new int[arr.length][arr.length]; //使用一个map来存储整个数组中对应元素的值的下标,key代表的是元素的值,value代表的是元素的下标,这是为了我们在接下来的检索中以O(1)的时

2021-11-28 14:09:29 148

原创 翻转字符java实现

class Solution { public int minFlipsMonoIncr(String s) { //如果才长度为0无法赋初值,直接返回 if(s.length() == 0){ return 0; } //用数组表示两个初始状态 int res[][] = new int[2][2]; //赋初值 res[0][0] = s.charAt(0) =

2021-11-28 01:16:24 219

原创 粉刷房子java实现

class Solution { public int minCost(int[][] costs) { //如果costs的长度为0就没有再计算的必要了 if(costs.length == 0){ return 0; } //首先准备一个数组用于记录所有动态规划的状态,为了减小时间复杂度只需要为每一个动态方程准备一个长度为2的数组 int[][] res = new int[3][2];

2021-11-27 14:08:20 338

原创 环形房屋偷到java实现

class Solution { public int rob(int[] nums) { //如果长度为0或者1直接返回 if(nums.length == 0){ return 0; } if(nums.length == 1){ return nums[0]; } //避免同时偷盗0和nums.length - 1 //求出小偷从编号为

2021-11-26 16:21:41 101

原创 爬楼梯的最少成本java实现

class Solution { public int minCostClimbingStairs(int[] cost) { //两个辅助变量用于做滑动窗口,初始值为第0个台阶和第一个台阶的成本 int i = cost[0]; int j = cost[1]; //当index为双数时复制给i,表示i是下一个台阶的成本,当index为单数数是赋值给j代表j是下一个双数锁需要的成本 for(int index = 2;

2021-11-26 14:33:41 195

原创 复原ip地址java实现

class Solution { public List<String> restoreIpAddresses(String s) { //准备结果集合 List<String> result = new LinkedList<>(); //递归求解 backcheck(s,0,"",0,"",result); //返回结果 return result; }

2021-11-26 01:07:39 258

原创 分割回文字字符串java实现

class Solution { public String[][] partition(String s) { //准备结果集和 List<List<String>> result = new LinkedList<>(); //递归分割字符串 backcheck(s,0,new LinkedList<String>(),result); //返回结果 S

2021-11-26 00:13:36 163

空空如也

空空如也

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

TA关注的人

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