![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
文章平均质量分 62
唐僧洗澡不秃头
秃头不洗澡,洗澡不秃头
展开
-
spring解决循环依赖问题
一、简介:循环依赖就是循环引用,就是两个或多个bean互相之间持有对方。比如beanA引用beanB,beanB引用beanA,当我们实例化beanA的时候发现beanB作为beanA的成员对象出现了,那么我们就可能在实例化beanA的中间需要先实例化beanB,然后完成beanB的实例化之后,才能完成beanA的实例化;可惜的是beanB中也引用了beanA,在实例化beanB过程中又需要实例化beanA,而beanA正在进行实例化,但完成beanA的实例化的条件是beanB实例化完成,完成beanB实转载 2021-09-01 22:24:12 · 624 阅读 · 1 评论 -
从Arrays.asList到Collection.toArray()
Arrays.asList()简介Arrays.asList()在平时开发中还是比较常见的,我们可以使用它将一个数组转换为一个List集合。String[] myArray = {"Apple", "Banana", "Orange"};List<String> myList = Arrays.asList(myArray);//上面两个语句等价于下面一条语句List<String> myList = Arrays.asList("Apple","Banana", "Or原创 2021-08-29 21:46:34 · 561 阅读 · 0 评论 -
Java基础面试题-第一集
1. 面向对象与面向过程面向对象和面向过程是两种不同的处理问题的角度面向过程更注重事情的每一个步骤以及顺序,面向对象更注重事务有哪些(对象)、以及各自需要做什么比如:洗衣机洗衣服面向过程会将任务拆解成一些列的步骤(函数),1.打开洗衣机 2.放衣服 3.放洗衣粉 4.清洗 5.烘干面向对象会拆出人和洗衣机两个对象:人:打开洗衣机 放衣服 放洗衣粉洗衣机:清洗 烘干可以看出,面向过程比较直接高效,而面向对象更易于复用、拓展和维护2.类的三大特性1.封装:属性私有化,公开访问方原创 2021-08-23 23:55:33 · 345 阅读 · 0 评论 -
Object类各个方法的详解
getClassfinal native getClass 获取当前运行时对象的 Class 对象hashCodenative hashCode 返回对象的 hash 码clonenative clone 拷贝当前对象浅拷贝:仅进行值拷贝深拷贝:进行值拷贝和引用类型拷贝,新建对象equalsequals 通过内存地址比较两个对象是否相等底层用的 this == objString 类重写了这个方法使用值来比较是否相等,通过比较字符数组的每个元素toString原创 2021-08-07 22:25:03 · 125 阅读 · 0 评论 -
Redis缓存
Redis缓存对于Redis缓存,首先我们先来说说为什么Redis适用于缓存以及Redis缓存的工作机制吧。缓存的特征要想弄明白 Redis 为什么适合用作缓存,我们得清楚缓存都有什么特征。 首先,你要知道,一个系统中的不同层之间的访问速度不一样,所以我们才需要缓存,这样就可以把一些需要频繁访问的数据放在缓存中,以加快它们的访问速度。 以计算机系统为例,来解释一下。下图是计算机系统中的三层存储结构,以及它们各自的常用容量和访问性能。最上面是处理器,中间是内存,最下面是磁盘。 从图上可以看原创 2021-07-19 12:36:42 · 1012 阅读 · 2 评论 -
hadoop不同版本下载地址链接
hadoop不同版本下载地址链接https://archive.apache.org/dist/hadoop/common/原创 2021-05-24 19:38:06 · 113 阅读 · 0 评论 -
centos7下压缩包手动安装mysql以及设置开机自启动
1、说明在Centos7连接Xshell,Xftp 安装mysql-5.5.47我百度网盘里有网盘地址:https://pan.baidu.com/s/1W3iU06mGhyhCTd7NxdEwsw提取码:ni1u2、安装Mysql-5.5.471.首先下载mysql的压缩文件,然后通过xftp上传到centos的/usr/local目录下2.然后通过tar命令解压压缩包,得到文件夹mysql-5.5.47-linux2.6-x86_64,删除压缩包,然后重命名解压后的文件夹名cd /u原创 2021-05-18 12:16:38 · 554 阅读 · 0 评论 -
Linux的常用测试比较操作符
Linux的常用的测试操作符1、常用文件测试操作符-d 测试是否目录-e 测试目录或文件是否存在-f 测试是否文件-r 测试是否有读权限-w 测试是否有写权限-x 测试是否有执行权限-L 测试是否为符号连接文件2、常用的整数值比较操作符-eq: 等于-ne: 不等于-gt:大于-lt:小于-le:小于或等于-ge:大于或等于3、字符串比较操作符字符串比较格式[字符串1 = 字符串2][字符串1 != 字符串2][-z 字符串]=:字符串内容相同!=:字符串内原创 2021-05-18 11:01:25 · 434 阅读 · 0 评论 -
centos7下安装mongodb以及通过rc.local设置自启动
1、MongoDB下载安装MongoDB 源码下载地址:https://www.mongodb.com/download-center#community1.首先下载MongoDB 的压缩文件,然后通过xftp上传到centos的/usr/local目录下2.然后通过tar命令解压压缩包,得到文件夹jdk1.8.0_291,删除压缩包,然后重命名解压后的文件夹名cd /usr/localtar zxvf mongodb-linux-x86_64-ubuntu1604-4.4.6.tgz rm原创 2021-05-16 17:54:43 · 792 阅读 · 5 评论 -
centos7下安装jdk和tomcat以及通过rc.local设置开机自启动
1、说明在Centos7连接Xshell,Xftp 安装jdk1.8以及tomcat9其中jdk1.8和tomcat9的压缩文件我百度网盘里有网盘地址:https://pan.baidu.com/s/1EVfBCfG_yvYJNPHeGbidpg提取码:qjkk2、安装jdk1.81.首先下载jdk1.8的压缩文件,然后通过xftp上传到centos的/usr/local目录下2.然后通过tar命令解压压缩包,得到文件夹jdk1.8.0_291,删除压缩包,然后重命名解压后的文件夹名cd原创 2021-05-15 21:24:51 · 686 阅读 · 0 评论 -
网络配置-NAT方式进行IP配置
网络配置-NAT方式进行IP配置1、DHCP 服务验证在已经装好了centos情况下,以NAT方式进行组网,那么我们怎么样如何快速实现虚拟机系统访问外网呢?能不能直接上网呢,来我们试一下ping baidu.com2:提示未知的名字或服务,来咱们查看下ip,用ip addr 试下ip addr3: ens32是我们的网卡,我们发现没有分配ip地址,那当然上不了网啦,那么我们可以用dhcp服务给网卡快速分配一个ip,然后看能否上网,我们输入.4: 我们发现折现网络通了,我们ifoc原创 2021-05-09 11:23:46 · 1850 阅读 · 0 评论 -
a+=b和a=a+b是一样的吗?
a+=b和a=a+b是一样的吗?我们来先看一张图a+=b 是先进行 a+b 的加法 ,然后将结果赋值给a ,举一个例子public static void main(String[] args) { int a = 100; a = a + 1; System.out.println(a); int c = 100; c += 1; System.out.println(c);原创 2021-04-24 10:07:49 · 981 阅读 · 2 评论 -
数据结构与算法学习之排序算法
文章目录1、排序算法的介绍1.1、排序的分类2、算法的时间复杂度2.1、度量一个程序(算法)执行时间的两种方法2.2、时间频度2.2.1、基本介绍2.2.2、举例说明-基本案例2.2.3、举例说明-忽略常数项结论:2.2.4、举例说明-忽略低次项结论:2.2.5、举例说明-忽略系数结论:2.3、时间复杂度2.4、常见的时间复杂度说明:2.4.1、常数阶O(1)2.4.2、对数阶O(log2n)2.4.3、线性阶O(n)2.4.4、线性对数阶O(nlogN)2.4.5、平方阶O(n²)2.4.6、立方阶O(n原创 2021-04-17 20:33:26 · 370 阅读 · 0 评论 -
Kotlin学习之枚举类
Kotlin 枚举类枚举类最基本的用法是实现一个类型安全的枚举。enum关键字在类头中的class关键字前面enum class Color{ ...}枚举常量枚举常量使用逗号分隔,每个枚举常量都是一个对象。enum class Color { RED, GREEN, BLUE}访问枚举常量枚举相关属性:val name: String //获取枚举名称val ordinal: Int //获取枚举值在所有枚举数组中定义的顺序使用方式为:枚举原创 2021-04-17 16:25:31 · 211 阅读 · 0 评论 -
leetcode-179-最大数
179. 最大数给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。**注意:**输出结果可能非常大,所以你需要返回一个字符串而不是整数。示例 1:输入:nums = [10,2]输出:"210"示例 2:输入:nums = [3,30,34,5,9]输出:"9534330"示例 3:输入:nums = [1]输出:"1"示例 4:输入:nums = [10]输出:"10"提示:1 <= nums.length <=原创 2021-04-13 18:02:55 · 136 阅读 · 0 评论 -
Kotlin学习之类与对象、继承与构造函数
2.5.1 类与对象首先创建一个Person类。右击包→New→Kotlin File/Class,在弹出的对话框中输入“Person”。对话框在默认情况下自动选中的是创建一个File,File通常是用于编写Kotlin顶层函数和扩展函数的,我们可以点击展开下拉列表进行切换,如图所示。这里选中Class表示创建一个类,点击“OK”完成创建,会生成如下所示的代码:class Person {}这是一个空的类实现,可以看到,Kotlin中也是使用class关键字来声明一个类的,这一点和Java一致原创 2021-04-09 21:19:03 · 296 阅读 · 3 评论 -
kotlin学习之类的修饰符与抽象类,嵌套类,内部类,匿名内部类
类的修饰符与抽象类,嵌套类,内部类,匿名内部类类的修饰符类的修饰符包括 classModifier 和**accessModifier**:classModifier: 类属性修饰符,标示类本身特性。abstract // 抽象类 final // 类不可继承,默认属性enum // 枚举类open // 类可继承,类默认是final的annotation // 注解类accessModifier: 访问权限修饰符private原创 2021-04-09 20:09:06 · 114 阅读 · 0 评论 -
Kotlin学习之Kotlin 类和属性
Kotlin 类和属性类定义Kotlin 类可以包含:构造函数和初始化代码块、函数、属性、内部类、对象声明。Kotlin 中使用关键字 class 声明类,后面紧跟类名:class Runoob { // 类名为 Runoob // 大括号内是类体构成}我们也可以定义一个空类:class Empty可以在类中定义成员函数:class Runoob() { fun foo() { print("Foo") } // 成员函数}类的属性属性定义类的属性可以用关原创 2021-04-09 19:48:17 · 167 阅读 · 0 评论 -
kotlin学习之标签与break、continue、return
Kotlin 标签@使用标签定义在 Kotlin 中任何表达式都可以用标签(label)来标记。 标签的格式为标识符后跟 @ 符号,例如:abc@、fooBar@都是有效的标签。 要为一个表达式加标签,我们只要在其前加标签即可。Break 和 Continue 标签为for循环贴上标签loop@ for (i in 1..100) { // ……}现在,我们可以用标签限制 break 或者continue:loop@ for (i in 1..100) { for (j i原创 2021-04-07 20:31:16 · 433 阅读 · 0 评论 -
Kotlin学习之基本数据类型
Kotlin 基本数据类型Kotlin 的基本数值类型包括 Byte、Short、Int、Long、Float、Double 等。不同于 Java 的是,字符不属于数值类型,是一个独立的数据类型。类型位宽度Double64Float32Long64Int32Short16Byte8字面常量下面是所有类型的字面常量:十进制:123长整型以大写的 L 结尾:123L16 进制以 0x 开头:0x0F2 进制以 0b 开头:0b原创 2021-04-07 19:47:40 · 216 阅读 · 0 评论 -
数据结构与算法学习之递归和迷宫+八皇后问题
1、递归应用场景各种数学问题如: 8皇后问题 , 汉诺塔, 阶乘问题, 迷宫问题, 球和篮子的问题(google编程大赛)各种算法中也会使用到递归,比如快排,归并排序,二分查找,分治算法等.将用栈解决的问题–>递归代码比较简洁看个实际应用场景,迷宫问题(回溯), 递归(Recursion)2、递归的概念简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量。递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。3、递归调用机制这里列举两个小案例,来帮助大家理解递归打印问原创 2021-04-01 20:49:45 · 102 阅读 · 0 评论 -
数据结构与算法学习之栈和逆波兰计算器
逆波兰计算器逆波兰计算器我们完成一个逆波兰计算器,要求完成如下任务:输入一个逆波兰表达式(后缀表达式),使用栈(Stack), 计算其结果支持小括号和多位数整数,因为这里我们主要讲的是数据结构,因此计算器进行简化,只支持对整数的计算。思路分析例如: (3+4)×5-6 对应的后缀表达式就是 3 4 + 5 × 6 - , 针对后缀表达式求值步骤如下:1. 从左至右扫描,将3和4压入堆栈;2. 遇到+运算符,因此弹出4和3(4为栈顶元素,3为次顶元素),计算出3+4的值,得7,再将7入栈原创 2021-03-30 22:29:57 · 88 阅读 · 0 评论 -
leetcode-190-颠倒二进制位
190. 颠倒二进制位颠倒给定的 32 位无符号整数的二进制位。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的 示例 2 中,输入表示有符号整数 -3,输出表示有符号整数 -1073741825。进阶:如果多次调用这个函数,你将如何优化你的算法?示例 1:原创 2021-03-29 18:56:16 · 104 阅读 · 0 评论 -
数据结构与算法学习之栈
数据结构和算法 - 栈栈的一个实际需求请输入一个表达式计算式:[722-5+1-5+3-3] 点击计算【如下图】[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PFfYyZau-1616935348448)(%E6%A0%88/1.png)]请问: 计算机底层是如何运算得到结果的?注意不是简单的把算式列出运算,因为我们看这个算式 7 * 2 * 2 - 5, 但是计算机怎么理解这个算式的(对计算机而言,它接收到的就是一个字符串),我们讨论的是这个问题。-> 栈原创 2021-03-28 20:43:08 · 70 阅读 · 0 评论 -
leetcode-173-二叉搜索树迭代器
173. 二叉搜索树迭代器实现一个二叉搜索树迭代器类BSTIterator ,表示一个按中序遍历二叉搜索树(BST)的迭代器:BSTIterator(TreeNode root) 初始化 BSTIterator 类的一个对象。BST 的根节点 root 会作为构造函数的一部分给出。指针应初始化为一个不存在于 BST 中的数字,且该数字小于 BST 中的任何元素。boolean hasNext() 如果向指针右侧遍历存在数字,则返回 true ;否则返回 false 。int next()将指针向右原创 2021-03-28 10:00:10 · 97 阅读 · 0 评论 -
数据结构与算法学习之单向环形链表和Josephu(约瑟夫问题)
单向环形链表和Josephu(约瑟夫问题)单向环形链表应用场景Josephu(约瑟夫、约瑟夫环) 问题Josephu 问题为:设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。提示:用一个不带头结点的循环链表来处理Josephu 问题:先构成一个有n个结点的单循环链表,然后由k结点起从1开始计数,计到m时,对应结点从链表原创 2021-03-27 19:54:56 · 155 阅读 · 0 评论 -
Spring IOC 实现原理 - XML
Spring IOC 实现原理IOC: Inversion of Control ,即 “控制反转” , 不是什么技术,而是一种思想。原先需要自行实例化的对象, 交给IOC容器去实现。那么控制反转,谁被控制? 谁被反转 ?在传统的JavaSE程序中,直接在类的内部通过new关键字来创建对象的实例,是程序主动去创建依赖对象,而IOC有一个专门的容器,来创建这些对象,由IOC容器来控制对象的创建,依赖对象也是容器帮忙查找创建并进行注入,对象只是被动的接受,依赖对象的获取被反转了。它还有一个更加形象的名字叫转载 2021-03-27 11:15:57 · 108 阅读 · 0 评论 -
数据结构与算法学习之链表
链表链表(Linked List)介绍链表是有序的列表,但是它在内存中是存储如下小结上图:链表是以节点的方式来存储,是链式存储每个节点包含 data 域, next 域:指向下一个节点.如图:发现链表的各个节点不一定是连续存储.链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定单链表介绍单链表(带头结点) 逻辑结构示意图如下单链表的应用实例使用带head头的单向链表实现 –水浒英雄排行榜管理,完成对英雄人物的增删改查操作第一种方法在添加英雄时,直接添加到链表的尾部原创 2021-03-24 21:21:58 · 69 阅读 · 0 评论 -
数据结构与算法学习之队列
队列1、队列的一个使用场景银行排队的案例:2、队列介绍队列是一个有序列表,可以用数组或是链表来实现。遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出示意图:(使用数组模拟队列示意图)3、数组模拟队列队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图, 其中 maxSize 是该队列的最大容量。因为队列的输出、输入是分别从前后端来处理,因此需要两个变量 front及 rear分别记录队列前后端的下标,front 会随着数据输出而改原创 2021-03-22 22:22:13 · 75 阅读 · 0 评论 -
数据结构与算法学习之稀疏数组
稀疏数组1、先看一个实际的需求编写的五子棋程序中,有存盘退出和续上盘的功能对于这样的一个五子棋程序,我们可以用一个二维数组来存储棋子的位置,来实现对棋盘的复原分析问题因为该二维数组的很多值是默认值0, 因此记录了很多没有意义的数据.->稀疏数组。(达到压缩的效果)2、基本介绍当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:在第一行记录数组一共有几行几列,有多少个不同的值然后把具有不同值的元素的行列及值记录在一个原创 2021-03-20 22:44:18 · 114 阅读 · 0 评论 -
阿里巴巴2017秋招研发工程师笔试题
1、有个特殊的餐厅,对客人的要求是如果要离开餐厅一定要看下餐厅内有没有比你迟进来的人,一定要所有比你迟进来的人离开后你才能离开,有一天甲,乙,丙,丁四个客人先后进入了这家餐厅,那么他们离开的顺序不可能是:正确答案: EA、丙,乙,甲,丁B、甲,乙,丙,丁C、乙,甲,丙,丁D、乙,丙,甲,丁E、丁,丙,甲,乙F、丁,丙,乙,甲这个题目考查的就是元素入栈出栈的顺序问题。只要小心一个思维误区:并不是要等到甲、乙、丙、丁全部按序进入餐厅后才开始有人离开。否则离开顺序只能是丁、丙、乙、甲,其他都原创 2021-03-08 22:26:22 · 1137 阅读 · 0 评论 -
leetcode-64-最小路径和
64. 最小路径和给定一个包含非负整数的 *m* x *n* 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。**说明:**每次只能向下或者向右移动一步。示例 1:输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径 1→3→1→1→1 的总和最小。示例 2:输入:grid = [[1,2,3],[4,5,6]]输出:12提示:m == grid.lengthn == grid[i].length1 &原创 2021-03-08 19:53:29 · 182 阅读 · 0 评论 -
初步了解学习Java-JUC
Java JUC1、 Java JUC简介 在 Java 5.0 提供了 java.util.concurrent (简称 JUC )包,在此包中增加了在并发编程中很常用 的实用工具类,用于定义类似于线程的自定义子 系统,包括线程池、异步 IO 和轻量级任务框架。 提供可调的、灵活的线程池。还提供了设计用于多线程上下文中的 Collection 实现等。2、 volatile 关键字-内存可见性2.1 、内存可见性 内存可见性(Memory Visibility)是指当某个线程正在使用对象状原创 2021-02-06 10:08:53 · 195 阅读 · 0 评论 -
Spring Boot整合 ElasticSearch出现 Connection refused: no further information 异常
错误呈现测试代码如下@Test public void indexData() throws IOException { IndexRequest request = new IndexRequest("users"); request.id("1"); //request.source("user", "kimchy","postDate", new Date(),"message", "trying out Elasticsearch");原创 2021-01-29 10:52:37 · 8333 阅读 · 4 评论 -
kotlin学习之Java与Kotlin代码之间的转换
java转kotlin右键点击你想要转换的.java文件,选择Convert Java File to Kotlin也可以点击工具栏的codekotlin转javaTools->Kotlin->Show Kotlin Bytecode->Decompile点击之后就会在侧边栏看到kotlin bytecode按钮,先打开你想转换的kotlin文件,在选择decompile按钮就会生成一个.java文件,就是我们需要的特别注意,一般情况不论是kotlin转java还是ja原创 2021-01-29 10:06:29 · 185 阅读 · 0 评论 -
elasticsearch自定义扩展词库,安装nginx
安装nginx1.直接执行以下命令会自动下载nginx目的只是为了得到nginx中的配置文件docker run -p 80:80 --name nginx -d nginx:1.10`2.将容器内的配置文件拷贝到当前目录docker container cp nginx:/etc/nginx .注意 nginx后面有一个空格和点3.停止并删除nginx容器docker stop nginxdocker rm nginx4.更改目录cd /optmv nginx confm原创 2021-01-28 15:12:20 · 117 阅读 · 0 评论 -
Linux下安装elasticsearch
安装ElasticSearch[root@play ~]``# docker pull elasticsearch:7.4.27.4.2: Pulling from library``/elasticsearchd8d02d457314: Pull completef26fec8fc1eb: Pull complete8177ad1fe56d: Pull completed8fdf75b73c1: Pull complete47ac89c1da81: Pull completefc8e09b原创 2021-01-28 15:11:12 · 81 阅读 · 0 评论 -
kotlin学习之使用DSL 构建专有的语法结构
DSL 的全称是领域特定语言(Domain Specific Language),它是编程语言赋予开发者的一种特殊能力,通过它我们可以编写出一些看似脱离其原始语法结果的代码,从而构建出一种专有的语法结构。不管你有没有察觉到,其实长久以来你一直都在使用DSL 。 比如我们想要在项目中添加一些依赖库,需要在app/build.gradle 文件中编写如下内容:dependencies { implementation 'com.squareup.retrofit2:retrofit:2.6.1'原创 2021-01-28 09:43:31 · 306 阅读 · 0 评论 -
Linux下安装elasticsearch
安装ElasticSearch[root@play ~]# docker pull elasticsearch:7.4.27.4.2: Pulling from library``/elasticsearchd8d02d457314: Pull completef26fec8fc1eb: Pull complete8177ad1fe56d: Pull completed8fdf75b73c1: Pull complete47ac89c1da81: Pull completefc8e09b48原创 2021-01-24 13:27:15 · 97 阅读 · 0 评论 -
Kotlin学习之编写好用的工具方法
1、 来N个数的最大最小值两个数比大小这个功能,相信每一位开发者都遇到过。如果我想要获取两个数中较大的那个数,除了使用最基本的if 语句之外,还可以借助Kotlin 内置的max() 函数,如下所示: val a = 10 val b = 15 val larger = max(a,b)这种代码看上去很简单直观,也很容易理解,因此好像并没有什么优化的必要。可是现在如果我们想要在3个数中获取最大的那个数,应该怎么写呢?由于max() 函数只能接收两个参数,因此需要先比较前面两个原创 2021-01-24 10:21:14 · 253 阅读 · 0 评论