自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 华为云原生2.0调研

云原生1.0和2.0区别云原生2.0概念是华为云于2020年提出的云原生1.0(为了原生而原生)企业在拥抱云原生的过程中,主要面临两方面的挑战:一是传统云原生解决方案在架构、生态等方面不完备,阻碍企业云平台的现代化进程;二是云原生开源技术的复杂性与不成熟性给云原生的自主研发带来多种风险。早期的云原生解决方案存在三点挑战:首先是缺乏对完整云原生应用生态的支持。相比对云原生应用的生态构建,早期的云原生解决方案多聚焦在无状态应用的容器部署、编排以及治理,进而提升应用交付效率。其次是缺乏多云、云边协同

2021-03-09 21:00:10 998 5

原创 云原生调研

参考什么是云计算迁移到云原生应用架构容器和虚拟机区别概述Pivotal 是云原生应用的提出者

2021-02-05 22:33:04 450 2

原创 vim 入门使用

打开文件vim [文件名]进入编辑按 i 进入编辑退出编辑按 esc 键退出编辑退出在非编辑模式下:q 退出:w 保存:wq 保存退出:q! 不保存强制退出

2021-01-05 10:30:16 168

原创 春招java基础

java面向对象(一大堆知识点)多线程实现的几种方式(Thread、Runnable、Callable、线程池)及各自的特点java线程的状态及相互转换线程同步的几种方式和线程间通信生产者消费者模式volatile关键字J.U.C包的JDK源码(CAS、AQS、ConcurrentHashMap、ThreadLocal、CyclicBarrier、CountDownLatch、Atom、阻塞队列等等)String、StringBuffer、StringBuilder异常处理机制集合框架底.

2020-05-24 22:00:50 202

原创 IO 多路复用 select poll epoll

该文章参考总结B站up主IO多路复用单个线程,通过记录跟踪每个I/O流的状态,来同时管理多个I/O流实现select原理虚线上为文件描述符号集合fds(即网络连接集合)和记录最大文件描述符准备阶段遍历fds,准备对应的rset,rset为一个bitmap ,大小为1024比如:fds为1、2、5、7、9,则对应的bitmap为011001010100…select(max+1,...

2020-04-19 11:10:48 176

原创 java实现二叉树树的非递归遍历

二叉树递归参考:java使用递归,非递归方式实现二叉树的三种常见遍历方式代码实现Node类public class Node { int data; Node leftChild = null; Node rightChild = null; public Node(int data) { this.data = data; }...

2020-04-16 13:07:38 708

原创 java实现空间复杂度为O(1)的英文句子反转

问题实现" t Jack is name my hello" 反转为"hello my name is Jack t"空间复杂度为O(1)实现package arithmetic;/** * 实现英文句子反转,单词不反转,空间复杂度为O(1) */public class SentRever { public static void reverse(int...

2020-04-15 00:22:04 732

原创 java实现多个线程同步(固定顺序/交替运行)

简介在实际多线程运用时,我们可能需要多个线程之间同步运行,如线程1线运行完,线程2再运行线程固定顺序运行两个线程保证:2线程先打印b1线程再打印await/notify实现设置一个Boolean变量,如果为假,让其中一个线程自旋阻塞/** * 两个线程保证: * 2线程先打印b * 1线程再打印a * * wait/notify实现 */public class ...

2020-04-14 00:05:02 1353

原创 堆排序实现-java

堆堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。下面的算法以小顶堆为例堆的储存及其表示可以用一维数组表示一个堆可表示为{50,45,40,20,25,35,30,10,15}所以可得出parent节点和左右节点的公式:当前节点为index,parent: (index-1)/2l...

2020-04-11 17:09:41 92

原创 春招面试问题总结

腾讯二面因为都是问项目,所以只记一下比较不错的几个项目题怎么保证可以系统同时登陆移动端和pc端,除了维护两个session(通过判断来源)答:1、我们需要判断Http请求是来自手机端还是电脑端,关键是取得User-Agent的信息,进行筛选判断即可。JAVA-判断请求来自PC端还是手机端2、多终端登录,只保留一个移动端+PC端同时在线1 怎么保证用户登陆安全,截取了加密后的密码登陆呢?...

2020-04-02 17:15:28 468

原创 常量池、运行时常量池、stringTable

三者关系1、常量池:俗称静态常量池,存在于*.class文件中,就是一张表,虚拟机指令根据这张表找到要执行的类名、类方法、参数类型、字面量等信息常量池:虚拟机指令:2、运行时常量池:类被加载时,其常量池信息会被放入运行时常量池,并把里面的符号地址变为真实地址。3、StringTable 串池:运行时常量池的 一部分,储存字符串常量StringTable特性1、stringTab...

2020-03-31 21:57:39 1326 3

原创 后台面试常问问题博客总结

java基础1、jdk1.8新特性2、Hashmap jdk1.7和jdk1.8的区别计算机网络1、gitCS-Notes2、[Network] 计算机网络基础知识总结java 框架1、SpringIOC和AOP原理 设计模式 简书2、吐血整理 20 道 Spring Boot 面试题,我经常拿来面试别人!简书3、springboot自动装配原理思维导图如下:排序算法...

2020-03-27 14:53:52 1106

原创 剑指offer-64-数据流中的中位数

题目如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。思路题目难点在与数据流是动态的,可以设置一个全局变量count时刻记录数据流中的数据个数,使用java中的...

2020-03-23 11:43:28 78

原创 剑指offer-66-机器人的运动范围

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

2020-03-23 09:49:28 85

原创 剑指offer-65-矩阵中的路径

题目思路利用回溯法回溯算法概念:在许多递归问题当中,我们采取的方法都是穷尽所有的可能,从而找出合法的解。但是在某些情况下,当递归到某一层的时候,根据设置的判断条件,可以 judge 此解是不合法的。在这种情况下,我们就没必要再进行深层次的递归,从而可以提高算法效率。这一类算法我们称为“回溯法”,设置的判断条件称为“剪枝函数”用一个状态数组保存之前访问过的字符,然后再分别按上,下,左,右递...

2020-03-22 16:57:05 92

原创 剑指offer-67-剪绳子

题目给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],…,k[m]。请问k[0]xk[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。思路动态规划:将这个长度分为两半 当前长度乘积最大就等于两半分别的乘积最大 => ...

2020-03-22 00:22:34 101

原创 剑指offer-64-滑动窗口的最大值

题目给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1...

2020-03-21 16:41:01 95

原创 剑指offer-62-二叉搜索树的第k个结点

题目给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。思路二叉搜索树的中序遍历是递增序列,利用栈(先入后出)中序遍历,当count==k返回即可代码/*public class TreeNode { int val = 0; TreeNode left = null; TreeN...

2020-03-21 13:28:44 79

原创 剑指offer-61-序列化二叉树

题目请实现两个函数,分别用来序列化和反序列化二叉树二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。二叉树的反序列化是指:根据某种遍历顺序得到的序...

2020-03-21 11:48:40 79

原创 剑指offer-59-按之字形顺序打印二叉树

题目请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。思路用一个布尔量控制从左到右还是从右到左的顺序;如果为真则他的左右孩子按照从左到右的顺序放入list中,否则按照从右到左的顺序,当本行结束之后,再把list中的数据放入一个result中。其中用一个null值作为层次的分隔符。此处利用LinkL...

2020-03-20 16:02:05 93

原创 jdk动态代理

简介动态代理是对静态代理的一种优化,静态代理当需要代理的接口增加时,代理类需要实现多个接口,导致代码冗余不符合开闭原则,jdk中,使用1、Proxy:提供静态方法newProxyInstance()创建动态代理的class和实例(只管生成对象)2、InvocationHandler:invoke()方法增强服务(只管对象需要做的事)实现动态代理代码实现接口类:1、AFactory/...

2020-03-10 11:40:59 98

原创 Redis 分布式锁

应用场景为了解决分布式架构系统中的高并发问题,如分布式系统中的商品秒杀,如图:注:java线程锁(如synchronize)无法解决分布式系统的高并发问题,因为java中的线程锁是jvm进程级别的锁,上图中A、B两个tomcat对应着两个进程,所以可以同时获得synchronize解决思路使用redis 实现分布式锁在redis中 :SET key value [NX|XX] ...

2020-03-02 15:23:10 99

原创 剑指offer-链表中环的入口结点

题目给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。实现参考牛客用户却顾所来径解答思路:设置快慢指针,都从链表头出发,快指针每次走两步,慢指针一次走一步,假如有环,一定相遇于环中某点(结论1)。接着让两个指针分别从相遇点和链表头出发,两者都改为每次走一步,最终相遇于环入口(结论2)。以下是两个结论证明:两个结论:1、设置快慢指针,假如有环,他们最后一定相遇。...

2020-02-26 22:52:39 96

原创 剑指offer-正则表达式匹配

题目请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配实现用递归实现:当模式中的第二个字符不是“*”时:1、如果字符串第一个字符和模式中的第一个字符相匹...

2020-02-24 00:02:04 69

原创 剑指offer-构建乘积数组

题目给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];)实现思路:题目要求B的i个元素等于A中除了i个元素所以元素乘积...

2020-02-23 16:59:55 83

原创 剑指offer-数组中重复的数字

题目在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。实现1、使用HashSet代码import java.util.HashSet;public class Soluti...

2020-02-23 16:08:47 74

原创 剑指offer-把字符串转换成整数

题目将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0输入+21474836471a33输出21474836470思路<1>、1、获取第一个char,判断他是否为+、-或者数字,否则退出2、遍历string,从1到(length-1),对应i位子上的数字值为((c-‘0’)*10^(length-1-i)...

2020-02-23 00:08:46 90

原创 剑指offer-不用加减乘除做加法

题目写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路首先看十进制是如何做的: 5+7=12,三步走第一步:相加各位的值,不算进位,得到2。第二步:计算进位值,得到10. 如果这一步的进位值为0,那么第一步得到的值就是最终结果。第三步:重复上述两步,只是相加的值变成上述两步的得到的结果2和10,得到12。同样我们可以用三步走的方式计算二进制值相加: 5...

2020-02-22 13:40:58 68

原创 剑指offer-求1+2+3+...+n

题目求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路1、不能用循环和乘除,所以想到用递归2、不能用if又要使递归停止,所以可以用&&的短路原则,前一个条件满足后一个才执行(||的话时前一个满足后,后一个不执行)实现/**1、不能用循环和乘除,所以想到用递归2、不能用if又要...

2020-02-22 13:10:15 130

原创 剑指offer-孩子们的游戏(圆圈中最后剩下的数)

题目每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一个小...

2020-02-22 12:04:28 119

原创 剑指offer-扑克牌顺子

题目LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的5张牌就...

2020-02-22 00:03:28 84

原创 剑指offer-41-和为S的两个数字

题目输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。思路定义两个指针plow、phight,一个指向数组第一个数,一个指向数组最后一个,从数组首末两端夹进,如两个数和为s。则返回,因为数组为递增数组,所以找到第一组数乘积最小,若和小于s,则plow++,大于则phight–【相关双指针解决连续正数序列和为s,p...

2020-02-21 00:40:49 68

原创 剑指offer-41-和为S的连续正数序列

题目小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正数序列。序列内...

2020-02-20 11:02:45 116

原创 剑指offer-40-数组中只出现一次的数字

题目一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路1、可以用HashMap2、首先:位运算中异或的性质:两个相同数字异或=0,一个数和0异或还是它本身。当只有一个数出现一次时,我们把数组中所有的数,依次异或运算,最后剩下的就是落单的数,因为成对儿出现的都抵消了。依照这个思路,我们来看两个数(我们假设是AB)出现一次的数组。我们首先还...

2020-02-20 09:49:25 73

原创 剑指offer [38] 统计一个数字在排序数组中出现的次数。

题目统计一个数字在排序数组中出现的次数。思路因为题目提到有序,所以使用二分查找效率会更高,通过二分找出最开始的一个位置和最后一个位置,再求差实现public class Solution { //有序,用二分查找,找出最开始一个和最后一个然后求差值 public int GetNumberOfK(int [] array , int k) { if(arra...

2020-02-19 09:36:39 96

原创 剑指offer-36-两个链表的第一个公共结点

题目输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)思路这里的公告结点的意思是相同的点,不仅值相同,next也相同,那么同理公共结点后面的点也是不仅值相同,而且next也相同,这样的话,就可以把两条链条看成Y字型了,某一个结点后面的点全部一样。举例,1->2->3->4->6和2-...

2020-02-18 22:45:33 77

原创 剑指offer 算法(数组中的逆序对)

题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007思路核心:归并(升序)排序打个比方:我们要求解[A,B]这样的数组的逆序对,其中[A]是一个已经排序的子数组,其中的逆序对为AA,[B]是另外一个已经排序的子数组,其中的逆序对为BB...

2020-02-18 00:26:10 108

原创 SpringBoot+druid+mybatis+shiro小demo

shiro简介shiro介绍实现原理理解:也就是说对于我们而言,最简单的一个 Shiro 应用:应用代码通过 Subject 来进行认证和授权,而 Subject 又委托给 SecurityManager; 我们需要给 Shiro 的 SecurityManager 注入 Realm,从而让 SecurityManager 能得到合法的用户及其权限进行判断。环境搭建1、pom文件&...

2020-02-14 23:29:42 193

原创 带哨兵java实现插入排序和希尔排序

参考:插入排序——基本插入排序与希尔排序(不带哨兵)含义:插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。插入排序(升序)①先将第2个元素看作是有序区间,第二个元素开始后的元素看作未排序列,第一个作为哨兵;②从第3个元素开始直至最后,先让待排数据与前面的有序区间的最后一个数据进行比较, 直到其插入到有序区间的合适位置(即,插入后有序区间保持有序...

2019-11-07 01:16:44 438 1

原创 Hashmap在jdk1.7和jdk1.8的区别

底层结构实现搞清楚HashMap,首先需要知道HashMap是什么,即它的存储结构-字段;其次弄明白它能干什么,即它的功能实现-方法。下面我们针对这两个方面详细展开讲解。储存结构-字段从结构实现来讲,HashMap是数组+链表+红黑树(JDK1.8增加了红黑树部分)实现的,如下如所示。问题来了:数据底层具体存储的是什么?这样的存储方式有什么优点呢?(1) 从源码可知,HashMap类中...

2019-10-17 18:25:31 594

空空如也

空空如也

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

TA关注的人

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