自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 shell编程入门+牛客网shelll编程刷题

Shell编程就是对一组Linux命令的逻辑化处理,Shell 是将内核、程序和用户连接了起来1 第一个shell程序#!/bin/bash#第一个shell小程序echo hello world!第一行表示我们选择使用bash shell。shell中#符号表示注释。shell的第一行比较特殊,一般都会以#!开始来指定使用的shell类型。在linux中,除了bash shell以外,还有很多版本的shell, 例如zsh、dash等等…不过bash shell还是我们使用最多...

2021-02-05 09:55:45 760

原创 Linux从入门重要知识点记录(内含VM和Centos安装包)

韩顺平老师的linux课程链接: https://www.bilibili.com/video/BV1Sv411r7vd?p=8&spm_id_from=pageDriverVM和CentOS安装包链接:https://pan.baidu.com/s/1Ay2cerIwS3M0we8qQwV85w提取码:dzgg1 linux简介1.1 主要应用领域linux是一个免费的开源操作系统,具有高效和稳定等特点,在(1)个人桌面领...

2021-02-04 10:13:39 208

原创 Git使用和相关原理记录

在企业开发中Git和SVN这两类版本控制工具必不可少,SVN属于集中式版本控制工具,Git属于分布式版本控制工具,本文主要对Git的使用和相关原理进行记录参考视频(尚硅谷Git&GitHub)https://www.bilibili.com/video/BV1pW411A7a51 版本控制工具简介版本控制工具应具备如下功能:    1)协同修改 :多人并行不悖的修改服务器端的同一个文件。    2)数据备份 :不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态。...

2021-01-26 19:43:50 210

转载 如何批量修改文件夹中图片的后缀名

如何批量修改文件夹中图片的后缀名方法:编写脚本1.在图片所在的文件夹里新建记事本2.写入ren *.jpg *.gif1每个*号前有一个空格。3.修改记事本的后缀名为bat4.点击运行记事本即可注释:ren:重命名.jpg:待修改的后缀名.gif:修改后的后缀名...

2020-10-27 16:56:17 1768

转载 多线程面试题之多线程打印数字

    两个线程交替打印0–1000之间之间的数字(线程1打印偶数,线程2打印奇数),完全可以用synchronized配合wait() notify()的方法实现,但是这样开销比较大。可以采用添加一个flag变量的方法。代码如下:public class CodeTest { volatile static int flag=0;//这个flag要被volatile修饰以保证可见性 volatile static int i=0; public static void main

2020-08-27 11:56:31 395

原创 Java并发编程面试问题之谈谈你对AQS的理解

AQS其实是Java并发包的基础组件,它提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架,ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier等并发类均是基于AQS来实现的。AQS包含了state变量、加锁线程、等待队列等并发问题的核心组件。参考文献穿插在了文中。1、ReentrantLock与AQS的关系    首先回忆一下ReentrantLock在同步问题中的使用,其实主要使用ReentrantLock的lock()和...

2020-08-19 22:30:09 1097

原创 二分法相关问题进阶(极小极大化二分查找)

面试的过程中二分真的一直在被问, “思路很简单,细节是魔鬼”,二分真的很重视细节。而且有问题看似和二分无关,实际上是完全可以用二分进行加速的。这里对二分问题的进阶进行汇总。很重要,面试的过程中被问到了。LeetCode 875. 爱吃香蕉的珂珂    这道题在某大厂的三面中被问到了。class Solution { public int minEatingSpeed(int[] piles, int H) { if(piles==null||piles.lengt...

2020-08-18 15:38:48 368

原创 LeetCode股票买卖系列问题

剑指 Offer 63. 股票的最大利润    假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?    思路:比如第i天卖出,那么我们就要找到第0天到i-1天的最小指min,用第i天的股票价格减去min就是第i天的最大利润,所以暴力求解方式的时间复杂度为O(n^2)。    优化:动态规划辅助优化,建立一个数组dp,dp[i]表示截止到i天的股票价格最低值。优化后时间复杂度O(n),空间复杂度O(n);    再优化:这个优化过程其实就是空间压缩过程,用变

2020-08-15 10:07:06 174

原创 二叉树总结-递归与非递归实现

二叉树相关算法主要考察的是递归、宽度优先搜索和广度优先搜索,很多问题都是前序、中序、后序和层序遍历的变形,遍历的递归与非递归实现都应该熟练掌握遍历通常分为前序遍历、中序遍历、后序遍历、层序遍历四种情况。对于遍历方式只是打印顺序而已,所以四种遍历复杂度均相同。1、二叉树的遍历遍历的时间复杂度与空间复杂度1.非递归遍历(辅助栈)    时间复杂度:O(N)    空间复杂度:O(N)    由于每个节点都要进栈和出栈,所以时间复杂度为O(N),同样空间复杂度也为O(N),N为结点数。...

2020-07-27 13:41:14 522

原创 查找与排序算法总结&及相关应用算法

Byte提前批二面中自己在二分查找的变形题中翻了车,导致现在还不知道面试是否会通过,面试结束后真的感觉无法原谅自己在这么简单的问题上翻车。本以为自己在算法的准备上还算充分,原来是自己好高骛远了,一直在看相对比较难的算法,而没有踏踏实实熟练掌握基础算法。从实习到面试,整个七月里一直被反复教做人 ,踏踏实实学习吧。1 二分查找及其应用二分查找的基本思想(二叉搜索树也应该算是二分查找的范畴)二分查找的基本思想是:(设R[low,high]是当前的查找区间)(1) 首先确定该区间的中点位置:...

2020-07-26 11:18:40 978

原创 LRU算法应用以及LinkedHashMap底层

Redis和页面置换中都遇到了LRU,做项目的时候也吃了没认真看LinkedHashMap的亏,恰巧LRU和LinkedHashMap有着千丝万缕的联系,那就认真整理一下吧1 使用场景    (1)操作系统中的页面置换算法,LRU是比较接近最优页面置换算法的一种算法;    (2)redis中的淘汰策略中会在设置了过期时间或全局范围的key中依据LRU进行淘汰,以保证热key;    (3)项目中的业务场景;     (4) 面试常考。。。2 LRU算法     LRU 缓...

2020-07-21 10:40:19 205

原创 消息中间件-RabbitMQ 实战教程

1 什么是消息中间件1.1消息中间件(MQ)的定义    一般认为,消息中间件属于分布式系统中一个子系统,关注于数据的发送和接收,利用高效可靠的异步消息传递机制对分布式系统中的其余各个子系统进行集成。高效:对于消息的处理处理速度快。可靠:一般消息中间件都会有消息持久化机制和其他的机制确保消息不丢失。异步:指发送完一个请求,不需要等待返回,随时可以再发送下一个请求,既不需要等待。    消息中间件不生产消息,只是消息的搬运工。1.2 消息中间件的组成1) Broker    消息服务器,作为

2020-07-18 21:36:20 782

原创 操作系统重点知识梳理&常见面试题整理

      操作系统一直以来都是自己的硬伤 , 在面试中一直在担心被问到操作系统 ,消除恐惧的最好方式就是直面恐惧,开始吧少年。1 计算机体系结构和分层体系    计算机硬件由CPU、存储器和IO设备构成,由总线连接。    内存层次指CPU访问的指令或者数据所处的位置,CPU能访问CPU芯片内的寄存器和cache,OS无法管理,cache和寄存器速度快,但是容量小,主存容量较大,但掉电后数据或者指令丢失,磁盘容量最大,但速度最慢。2 地址空间和地址生成    物理地址空间 –...

2020-07-15 14:09:47 1091

原创 单机、集群、分布式和微服务等相关概念解析以及Redis实现分布式锁

单机结构我想大家最最最熟悉的就是单机结构,一个系统业务量很小的时候所有的代码都放在一个项目中就好了,然后这个项目部署在一台服务器上就好了。整个项目所有的服务都由这台服务器提供。这就是单机结构。那么,单机结构的缺点是显而易见的,单机的处理能力毕竟是有限的,当你的业务增长到一定程度的时候,单机的硬件资源将无法满足你的业务需求。此时便出现了集群模式,往下接着看。...

2020-07-01 16:17:14 408

原创 MyBatis中重要问题汇总和项目开发过程中遇到的问题记录

    图片来源与B站UP主 up主主页链接文章目录1、Mapper中的参数传递2、ResultMap3、增删改1、Mapper中的参数传递Mapper中参数的传递单个参数传递举例:模糊查询 :使用concat实现字符串拼接多个参数传递:采用@param()以对象的方式进行传递,当传递多个参数的时候,可以将多个参数封装成对象参数传递过程中可以将参数封装进对象,也可以封装进Map中参数传递问题总结2、ResultMap    当pojo中的属性名和对应数据库表中的字段名相同时,元

2020-06-30 17:44:34 442

原创 LeetCode常用算法模式&大厂面试题整理

文章参考自 educative 参考文献链接1、滑动窗口    1 一个左指针,一个右指针。其中左指针用于缩小范围,右指针用于扩大搜索范围。一般求滑动窗口的最小值都是在缩小左指针的时候取得的。    2 右指针扩展的条件时:只要当前还没有满足条件,就暴力增长,直到第一次满足条件为止。    3 左指针收缩的条件:只要当前指针的缩小还没影响窗口的可满足性,就一直暴力向左增长。一但当前指针向前移动的时候影响了窗口的可满足性,就记录下当前的窗口大小,并更新目前为止满足条件的最小窗口记录。之后,再次扩展右指

2020-06-28 22:01:55 1851

原创 LeetCode算法总结-回溯法与深度优先搜索

S

2020-06-26 22:12:51 476

原创 死锁-死锁预防、死锁避免(资源分配图与银行家算法)、死锁检测、死锁解除

文章目录1 死锁2 死锁预防3 死锁避免4 死锁检测5 死锁解除6 参考文献1 死锁什么是死锁    通俗的讲,就是两个或多个进程无限期的阻塞、相互等待的一种状态。比如哲学家进餐问题。死锁产生的四个必要条件    互斥:至少有一个资源必须属于非共享模式,即资源一次只能被一个进程使用;    占有并等待:进程自己有一部分资源,又想得到别人占有的资源;    非抢占:进程不能被抢占,即资源只能被进程在完成任务后自愿释放    循环等待:若干进程之间形成一种头尾相接的环形等待资源关系 ;    

2020-06-24 16:23:57 3260

原创 JVM参数、GC垃圾收集器、引用类型、OOM相关问题

参考文献 1参考文献 2文章目录1 JVM参数1.1 JVM参数类型1.2 参数调优2 强引用、软引用、弱引用和虚引用3 OutOfMemory(OOM)&StackOverFlowError14 GC垃圾收集器4.1 垃圾收集算法4.2 垃圾收集器4.3 垃圾收集器选择4.4 G1垃圾收集器的再讨论1 JVM参数1.1 JVM参数类型    1 标准参数,即在JVM的各个版本中基本不变的,相对比较稳定的参数        -help        -server -client 

2020-06-15 23:30:49 342

原创 Java线程池原理 3个常用方式 7大参数 4种拒绝策略以及线程的实现方式

在讨论线程池的问题之前先说一个面试重点问题synchronized和Lock的区别:    1 synchronized是关键字加在方法和代码块上,Lock是接口,有自己的实现类;    2 synchronized不需要手动释放锁,当代码执行完毕的时候自动会将锁释放掉,而Lock需要有unLock的过程;    3 synchronized是非公平锁,Lock可以是公平锁也可以是非公平锁,默认是非公平的;    4 锁可以通过绑定多个condition,来分组唤醒线程;这里写自定义目录标题

2020-06-13 23:41:20 431

原创 Java并发容器、框架和工具类详解

文章目录1 并发容器1.1 ConcurrentHashMap1.2 阻塞队列1.3 ConcurrentLinkedQueue1.4 Fork/Join框架1.5 CountDownLatch、Semaphore和CyclicBarrier1 并发容器1.1 ConcurrentHashMap为什么要引入ConcurrentHashMap?    HashMap是线程非安全的在多线程的环境下会有安全问题,HashTable虽然是线程安全的但是synchronized关键字是加在方法上的,

2020-06-13 22:31:50 195

原创 Redis知识点整理-从入门到与SpringBoot集成实践(附带目录)

文章目录1 什么是Redis2 Redis 能为我们做什么?3 五种基本数据类型4 Redis事务管理5 Redis实现乐观锁6 SpringBoot集成Redis7 持久化AOF和RDB81 什么是Redis    Redis 是 C 语言开发的一个开源的(高性能键值对(key-value)的内存数据库,可以用作数据库、缓存、消息中间件等。它是一种 NoSQL(not-only sql,泛指非关系型数据库)的数据库。性能优秀,数据在内存中,读写速度非常快。单进程单线程,是线程安全的。丰富的数据类型,支

2020-06-11 18:23:58 378

原创 华为笔试机考-IP地址和子网掩码相关问题

华为108题中涉及到的P地址和子网掩码相关问题及牛客网链接如下:1 识别有效的IP地址和掩码并进行分类统计https://www.nowcoder.com/practice/de538edd6f7e4bc3a5689723a7435682?tpId=37&tqId=21241&tPage=1&rp=&ru=/ta/huawei&qru=/ta/huawei/question-ranking2 整数与IP地址间的转换https://www.nowcoder.co

2020-06-09 07:41:15 858

原创 华为笔试在线训练-DNA序列问题(时间复杂度O(n)目前存在的解题思路中时间复杂度最低)

题目描述    一个DNA序列由A/C/G/T四个字母的排列组合组成。G和C的比例(定义为GC-Ratio)是序列中G和C两个字母的总的出现次数除以总的字母数目(也就是序列长度)。在基因工程中,这个比例非常重要。因为高的GC-Ratio可能是基因的起始点。    给定一个很长的DNA序列,以及要求的最小子序列长度,研究人员经常会需要在其中找出GC-Ratio最高的子序列。牛客网链接    https://www.nowcoder.com/practice/e8480ed7501640709354db

2020-06-09 07:35:26 1002

原创 SpringBoot-MyBatis资源分享网站项目笔记

基于SpringBoot+Mybatis框架和MySql数据库开发了一个资源分享网站。该网站可以用于资源分享,也可以充当百度云盘重要资料整理说明的文档。其主要功能按照权限进行划分可分成三大部分,**游客**:游客可进行注册,阅览资源;**用户**:注册用户可用QQ登录,密码找回,按类别进行资源分享(分享资源或充值可获得积分)和下载(下载需要消耗积分),发布审核,用户评价;**管理员**:管理员可对资源类型进行管理,并需要对发布的资源的评价进行审核。

2020-06-09 07:27:36 2642 1

原创 Spring SpringMVC MyBatis SpringBoot SpringCloud MySQL Redis常见问题总结

    本文只是对框架和数据库常用知识点和面试高频问题进行汇总,以方便学习,参考文献如下,如有侵犯会立刻删除。    Spring参考文献    SpringMVC参考文献未完待续…

2020-06-07 20:40:10 360

原创 树形结构的输入BufferedReader

树形结构的输入BufferedReader输入描述:第一行输入两个整数 n 和 root,n 表示二叉树的总节点个数,root 表示二叉树的根节点。以下 n 行每行三个整数 fa,lch,rch,表示 fa 的左儿子为 lch,右儿子为 rch。(如果 lch 为 0 则表示 fa 没有左儿子,rch同理)输出描述:输出两行整数分别表示按两种标准的边界节点。示例输入16 11 2...

2020-04-30 18:33:41 643

原创 Java算法优化笔记(持续更新)

机器人的运动范围题目描述地上有一个 m 行和 n 列的方格。一个机器人从坐标 (0, 0) 的格子开始移动,每一次只能向左右上下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于 k 的格子。例如,当 k 为 18 时,机器人能够进入方格 (35,37),因为 3+5+3+7=18。但是,它不能进入方格 (35,38),因为 3+5+3+8=19。请问该机器人能够达到多少个格子?解...

2019-11-30 13:33:01 241

原创 Win系统下配置python开发环境

方法一:直接安装python环境+PyCharm Python IDE参考博文如下:Win7系统参考:Windows7(x64) 安装Python3.7.0Win7系统下安装Python环境以及IDE开发环境(PyCharm)Win10系统参考:win10 python安装教程PyCharm的破解过程相对繁琐,如果不是有特殊需求,建议直接采用方法二方法二:anacondaAnac...

2019-11-30 13:23:49 189

原创 JAVA实现链表中的重复结点

题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5非递归代码实现 public ListNode deleteDuplication(ListNode pHead){ if (pHead==nu...

2019-11-28 12:54:38 315

原创 计算机网络之传输层

1传输层协议概述注意:只有主机的协议栈才有运输层,而网络核心部分的路由器在转发分组时都只用下三层(物理层、数据链路层、网络层)的功能。  我们知道,IP协议能够把源主机A发送的分组按照首部中的目的地址发送给目的主机B,那么为什么还需要传输层呢?  从IP层来看,通信的两端是两个主机,但是通信的实质并不是主机之间的通信,而是主机的进程间的通信,,端到端的通信指的就是应用进程间的通信,而传输层真...

2019-10-20 16:14:42 365

原创 计算机网络问题集锦

1 HTTP与HTTPS对比···(1)https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。 (2)http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。 (3)http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。  HTTP协议:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应...

2019-10-20 09:45:16 251

原创 中继器、集线器、网桥、交换机、路由器的对比

1问题引入问题开始介绍之前应该先清楚两个概念:冲突域和广播域  冲突域:在以太网中,如果某个CSMA/CD网络上的两台计算机在同时通信时会发生冲突,那么这个CSMA/CD网络就是一个冲突域。(数据链路层中使用的信道主要有点对点和广播两种信道,在使用广播信道的数据链路层中,就用爱遵循CSMA/CD协议,在使用广播信道的数据链路层中,在同一时间内就只能允许一台计算机发送,当有两个主机同时发送消息时...

2019-10-19 15:25:52 1513

空空如也

空空如也

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

TA关注的人

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