自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 sass-loader和node-sass报错问题解决

错误:Module build failed (from ./node_modules/sass-loader/lib/loader.js):Error: Node Sass does not yet support your current environment: Windows 64-bit with Unsupported runtime (72)For more information on which environments are supported please see:https

2020-09-10 17:37:06 1988

原创 Redis知识点

Redis知识点总结Redis概念Redis特性redis和memcached(分布式的高速缓存系统)MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据Redis 常见性能问题和解决方案Redis事务Redis线程模型Redis使用场景缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题Redis概念redis是一个基于key-value的内...

2019-12-01 22:40:25 230

原创 Git中ssh和http提交方式

一、SSH提交方式进入C盘用户目录,删除.ssh目录运行命令生成.ssh 密钥目录:ssh-keygen -t rsa -C 邮箱进入.ssh 目录查看文件列表,查看id_rsa.pub文件内容登录GitHub,点击用户头像→Settings→SSH and GPGkeysNew SSH Key输入复制的密钥信息回到Git bash 创建远程地址别名git remote add origin_ssh git@github.com:atguigu2018ybuq/huashan.git通

2020-09-19 23:24:26 660

原创 13、机器人的运动范围

13、机器人的运动范围题目:地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?解法一:深度优先遍历(DFS)public class Solution { int res=0; boolean v

2020-09-13 17:29:50 112

原创 12、矩阵中的路径

12、矩阵中的路径题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。解法:回溯法public class Solution { boolean

2020-09-13 16:43:32 92

原创 11、旋转数组的最小数字

11、旋转数组的最小数字题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组[3,4,5,1,2]为[1,2,3,4,5]的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解法一:暴力循环class Solution { public int minArray(int[] numbers) { if(numbers.length<1) r

2020-09-13 15:57:26 71

原创 10、变态跳台阶

10、变态跳台阶题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解法一:暴力公式:f(N)=f(1)+f(2)+…+f(n-1)+1; (n>2)public class Solution { public int JumpFloorII(int target) { if(target<3) return target; int dp[]=new int[target];

2020-08-30 15:00:13 77

原创 09、跳台阶

09、跳台阶题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。解法:等同于斐波那契递推公式:F(N)=F(N-1)+F(N-2) (N>2)public class Solution { public int JumpFloor(int target) { if(target<3) return target; return JumpFloor(target-1)+JumpF

2020-08-30 10:58:07 59

原创 08、斐波那契数列

08、斐波那契数列题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<=39解法一:循环保存中间项public class Solution { public int Fibonacci(int n) { if(n<2) return n; int fib0=0; int fib1=1; int fibN=0; for(int i=

2020-08-30 10:45:36 78

原创 07、用两个栈实现队列

07、用两个栈实现队列题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。解法栈:先入后出;队列:先入先出;进栈时把数据放入栈1;出栈时,先判断两栈是否为空,不为空,判断栈2是否为空,如果不为空,则栈2出栈即是结果。如果为空,则要把栈1的内容在放入到栈2进行出栈操作。import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<In

2020-08-30 10:25:08 69

原创 06、二叉树的下一个节点

二叉树的下一个节点题目:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。解法中序遍历序列:{d,b,h,e,i,a,f,c,g}该节点右子树存在的情况下,则下一个结点就在右子树的最左结点上;(如节点b)该节点没有右子树的情况下,如果它是父节点的左子节点,则下一个结点是父节点。(如节点h)如果它是父节点的右子节点,则应沿着指向父节点的指针一直向上遍历,直到找到一个是它父节点的左子节点的节点,如果存在则是下一

2020-08-09 10:11:31 80

原创 05、重建二叉树

05、重建二叉树题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解法:递归在二叉树的前序遍历中,第一个数字总是树的根节点的值,在中序遍历中根节点的值在序列的中间,左子树的结点的值位于根节点的左边,而右子树的结点的值位于根节点的值的右边。先根据前序遍历序列的第一个数字创建根节点,接下来在中序遍历序列中找到根节

2020-08-02 18:47:08 107

原创 04、从尾到头打印链表

04、从尾到头打印链表题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList。解法一:递归思想:递归遍历,先插入最后一个元素,然后逐步插入之前的元素import java.util.ArrayList;public class Solution { ArrayList<Integer> res=new ArrayList<Integer>(); public ArrayList<Integer> printListFromTail

2020-08-02 17:47:12 83

原创 03、替换空格

3、替换空格题目:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解法一:StringBuilder存储思想:依次遍历Str的各个字符,存储到StringBuilder中,碰到空格插入“%20”。 public String replaceSpace(StringBuffer str) { StringBuilder res=new StringBuilder();

2020-08-01 20:25:46 85

原创 02、二维数组中的查找

02、二维数组中的查找题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解法思想:选取右上角或者左下角作为起始点,以右上角为例:如果目标元素大于该元素,那么目标元素必定在该元素所在行的下面;如果目标元素小于该元素,那么目标元素必定在该元素所在列的左边。查找数字7如下图所示: public boolean Find(int target, int []

2020-08-01 18:03:28 100

原创 01、找出数组中重复的数字

1、找出数组中重复的数字题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。解法一:Map集合思想:遍历数组,查看对应的元素是否存在于map集合中,存在则返回,不存在则加入到map集合中。public boolean duplicate(int numbers[],int leng

2020-08-01 16:39:35 963

原创 Centos7开机配置

1、配置静态IP地址修改网卡配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens32 (最后一个为网卡名称)bootproto=staticonboot=yes#在最后加上几行,IP地址、子网掩码、网关、dns服务器IPADDR=192.168.18.137NETMASK=255.255.255.0GATEWAY=192.168.18.2DNS1=192.168.18.2systemctl restart network #重启网络

2020-07-27 15:05:26 124

原创 Nginx各种配置

Nginx配置文件1、配置模块nginx的配置(conf/nginx.conf)主要有:全局参数、events、http这三大块组成。系统配置:server,可以配置多个server转发规则:location路径、root目录、index欢迎页面反向代理规则:location拦截路径、proxy_pass转向地址、index2、Nginx常用优化user root; #对应系统哪个用户,最好专为nginx创建用户和组,并单独设置权限,这样安全。如:user nginx nginx。

2020-07-22 16:52:52 963

原创 Nginx面试题总结大全

Nginx 的整体架构1、什么是Nginx?Nginx 是一个高性能HTTP和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。Nginx 其特点是占有内存少,并发能力强,能够支持50000个并发连接响应(多路复用:epoll and kqueue).它处理请求时异步非阻塞,在高并发下保持低资源低消耗高性能。2、请列举Nginx的一些特性响应请求快,配置简单高扩展性,跨平台:它完全是由多个不同功能、不同层次、不同类型且耦合度极低的模块组成。因此,当对某一个模块修复Bu

2020-07-22 16:50:04 537

原创 SpringCloud各个组件最强总结

一、概念1.1 什么是Spring Cloud?Spring Cloud就是微服务系统架构的一站式解决方案,在平时我们构建微服务的过程中需要做如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等操作,而Spring Cloud为我们提供了一套简易的编程模型,使我们能在Spring Boot的基础上轻松实现微服务项目的构建。1.2 为什么考虑 Spring Cloud?原因SpringCloud来源于Spring,质量、稳定性、持续性都可以得到保证。SpringCloud天然

2020-07-21 18:59:47 247

原创 Java主流必备工具/学习网站

Java实用工具画图工具ProcessOn:支持流程图、思维导图、原型图、UML、网络拓扑图、组织结构图等,其中我的算法题解和源码分析作图都是在ProcessOn上进行的网址导航:https://www.processon.com思维导图工具XMind:多风格的结构图,比如思维导图、鱼骨图、逻辑结构图、组织结构图等等,其中我的读书笔记思维导图都用XMind记载学术资源以及PDF下载虫部落:资源搜索以及各类电子书籍的下载与查找,我个人在里面查找PDF比较多网址导航:https://

2020-07-06 11:00:25 509

原创 volatile关键字

总述volatile是java虚拟机提供的轻量级的同步机制,它保证可见性,不保证原子性,禁止指令重排。基本上遵守了jmm的规范(可见性,原子性,有序性)long和double的读写时原子的吗?如果使用Volatile修饰之后呢?lock 前缀的指令在多核处理器下读写会引发两件事情。一是将当前处理器缓存行的数据写回到系统内存。二是写回内存的操作会使在其他 CPU 里缓存了该内存地址的额数据无效...

2020-04-22 18:13:05 73

原创 上下文切换

概念CPU寄存器,是CPU内置的容量小、但速度极快的内存。程序计数器,则是用来存储CPU正在执行的指令的位置,或者即将执行的下一条指令的位置。他们都是CPU在运行任何任务前,必须依赖的环境,因此也被叫做CPU上下文。当前任务在执行完 CPU 时间片切换到另一个任务之前会先保存自己的状态,以便下次再切换到这个任务时,可以再加载这个任务的状态。任务从保存到再加载的过程就是一次上下文切换。线程...

2020-04-21 16:43:44 140 1

原创 HashMap源码分析

HashMapHashMap类图jdk1.7二级目录三级目录HashMap类图 DEFAULT_INITIAL_CAPACITY: 默认Map容量大小,1<<4 = 16; MAXIMUM_CAPACITY:Map容量上限,1<<30; DEFAULT_LOAD_FACTOR:默认(扩容)加载因子,0.75f; Entry<K,V>[] table:...

2020-04-19 18:27:03 107

原创 偏向锁、轻量级锁、重量级锁

无锁状态:为了保证获得锁和释放锁的效率,锁可以升级但不能降级。举例: 开门;偏向锁:当第一个线程开门,对该门贴个标签(自己专用),下次进出方便。(标签是线程id)轻量级锁:当另一个线程也要开门时,首先撕掉标签,两个线程竞争,在自己的栈帧中创建一个lockrecord,查看门上贴的是哪一个标签,如果不是自己,采用自旋的方式,如果在贴自己标签时,门上的标签原始值一样,则让门上的标签指向自己的...

2020-04-05 19:43:28 286

原创 迪杰斯特拉算法

求解最短路径(一个顶点到任意顶点的最短距离)基本思路(1)选取一个结点index,从index结点出发更新它到其余各点的距离(dis[i]=Min(dis[index]+matrix[index][i],dis[i]))(2)进行更新时,要判断该点是否已经被访问过,如果访问换取下一个节点。(3)更新完index结点的周围结点后,在dis数组中找出一个距离最短且没有被访问的结点,在重复(1)...

2020-03-23 11:18:00 91

原创 弗洛伊德算法

求解最短路径(任意两个节点之间的最短距离)核心思想:dis[i][j] = min{dis[i][k] + dis[k][j],dis[i][j]}从头开始遍历结点,以这些结点作为中间结点,比较距离,直到遍历结束。dis数组中存放的就是任意两个结点之间的最短距离。java代码实现:public class Floyd { public static void main(Stri...

2020-03-23 09:57:00 73

原创 普里姆算法

求解最小生成树(适用于边稠密的网络)如最小生成树为:vertex[]={0,1,2,3,4,5,6}<1,5> 距离7<5,4> 距离2<4,3> 距离4 < 3,2> 距离3<4,6> 距离8<1,0> 距离12 ##搜索是已访问过的结点为起点,找出最小的边 访问过的结点 :1 ...

2020-03-20 10:06:31 91

原创 ArrayList和LinkledList

ArratList 是基于动态数组(Array)的数据结构,而LinkedList是基于链表(双向链表)的数据结构。对于随机访问的get和set,ArrayList要优于LinkedList,因为LinkedList要移动指针。对于新增和删除操作时, LinkedList比较占优势,因为ArrayList要移动数据。Arraylist类继承了AbstractList类,而LinkedLis...

2019-12-24 22:30:57 160

原创 String类是否可以被继承?

不可以被继承,因为该类被定义成final.用final定义的原因:效率和安全1)效率:String类被定义成final,防止该类的方法被重写,字符串的常量节省内存,缓存Hash类以字符串做key数据结构的hashCode,从而提高访问性能等.2)安全:线程安全,String作为网络连接的参数,它的不可变性提供了安全性。String类为什么是不可变的对象?如果一个对象,在它创建完成之后,不...

2019-12-13 23:10:30 1229

原创 Cookie 和 Session

概念cookie:服务器发送到用户浏览器并保存在本地的一小块数据,是客户端保存用户信息的一种机制,用来记录用户的一些信息,它会在浏览器下次在向同一服务器发起请求被携带并发送到服务器上。session:代表着客户端与服务器进行会话的一次过程,是服务端记录用户状态时用于标识具体用户的机制。当用户在应用程序的web页面之间跳转时,存储在session对象中的变量将不会丢失。区别作用范围不...

2019-12-12 22:42:24 106

原创 Java中static作用及用法详解

概述static是静态修饰符,用来修饰类、代码块、变量和成员方法,也可以形成static代码块(类进行加载时就会执行该代码块)。静态:在程序编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间。用static修饰的成员可以直接通过**类名加“.”**进行直接访问。static变量static变量也称为类变量,在内存中只有一个拷贝,可以被该类的所有实例对象共享;对静态变量...

2019-12-11 22:42:00 409

原创 Java中final、finally和finalize

final修饰类时,意味着该类不能被继承,一个类不能既被final修饰又被abstract修饰。修饰变量时,意味着该变量的值在赋值后不能被修改。修饰局部变量时必须在声明时就被赋值;修饰实例变量时,可以在构造器,非静态初始化块中指定初始值;修饰类变量时,可以在静态初始化块中指定初始值。变量叙述成员变量作用范围是整个类,相当于c++中的全局变量,定义在方法体和语句块...

2019-12-10 22:34:47 97

原创 JVM内存模型

JVM内存结构程序计数寄存器(Program Counter Register)每个线程在创建后,都会产生自己的程序计数器和栈帧,程序计数器用来存放执行指令的偏移量和字节码行号指示器等,线程执行或恢复都要依赖程序计数器。程序计数器在各个线程之间互不影响,此区域也不会发生内存溢出异常。在多线程中,就会存在线程上下文切换执行,为了线程切换后能恢复正确的执行位置,所以需要从程序计数器中获取该线...

2019-12-09 17:03:24 197

转载 从字节码的角度分析i++和++i的本质区别

jvm的内存结构中有一种结构称为栈,也叫作堆栈。当线程启动的时候,会分配一块内存当做该线程的栈,每个栈由一系列的栈帧组成。栈帧中包含了方法的局部变量表、操作数栈、返回地址、动态连接等信息。1)前置++是将自身加1的值赋值给新变量,同时自身也加12)后置++是将自身的值赋给新变量,然后才自身加1int j=0; for(int i=0;i<100;i++){ j=j++; } Syst...

2019-12-09 14:18:47 131

原创 equals和“==”

“==”作用于基本数据类型变量时,比较的是数据的值。作用于引用数据类型时,比较的引用指向的对象的地址。equals比较的是引用指向的对象的地址,但在String,Data等类对equals方法进行了重写,比较的是对象所指向的内容。所有类从Object类中继承equals方法,而equals比较的是对象的地址(不进行基本数据类型的比较),equals 本质上就是 “==”。...

2019-12-07 19:12:04 47

原创 java常见数据类型和自动装箱拆箱

Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。类型位数范围默认值包装类型byte8bit-128(-2^7)-- 127(2^7-1)0Byteshort16bit-32768(-2^15)-- 32767(2^15 - 1)0Shortint32bit-2,147,483,64...

2019-12-07 19:00:01 107

原创 位、字符、字节

位、字符、字节位(bit):计算机内部数据存储的最小单位,1000是一个4位的二进制数。字节(byte):计算机中数据处理的基本单位,习惯上用大写B来表示,1B=8bit(一个字节是8位)。字符:是指计算机中使用的字母、数字、字和符号。ASCIIS码 (如:ESC键 VK_ESCAPE (27)):1个英文字母(不分大小写)1个中文汉字1个ASCII码1个字节的...

2019-12-07 13:49:09 371

原创 23种设计模式

设计模式创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。单例模式工厂模式抽象工厂模式建造者模式原型模式结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。适配器模式装饰器模式代理模式外观模式桥接模式组合模式享元模式行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式...

2019-12-01 23:19:59 159

原创 NatApp内网穿透

NatApp内网穿透打开Ubuntu或者Centos,利用xshell或者其他工具远程连接。在Ubuntu先检查是否安装了ssh: ps -e|grep ssh安装ssh服务:sudo apt-get install openssh-server启动ssh服务:sudo service ssh start注册NatApp账号,购买隧道。Web隧道协议主要是访问内网...

2019-12-01 23:15:36 488

空空如也

空空如也

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

TA关注的人

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