![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 64
浮煌
公司员工
展开
-
Eureka拓展
Eureka的基础使用: https://blog.csdn.net/qq_36110736/article/details/1090272221.三种角色 图一 注册中心的三种角色Eureka Server:通过Register、Renew、Cancel等接口提供服务的注册与发现 Service Provider:服务提供方,把自身的服务实例注册到 Eureka Server 上...原创 2021-08-04 23:43:07 · 217 阅读 · 0 评论 -
JVM之程序计数器
作用:用于存储下一条指令的地址。特点:1.线程私有 2.执行java方法时,程序计数器是有值的,且记录的是正在执行的字节码指令的地址(参考上一小节的描述)。 3.执行native本地方法时,程序计数器的值为空(Undefined)。...原创 2021-06-20 22:39:12 · 661 阅读 · 0 评论 -
JVM之类加载子系统
1.类的加载过程类加载器只负责Class文件加载,至于是否可以运行则由 执行引擎(Execution Engine)决定。加载的类信息防御一块称为 方法区(Method Area)的内存空间,除了类信息外方法区还会存放 运行时常量池(Runtime Constant Pool)。...原创 2021-05-17 22:56:49 · 108 阅读 · 2 评论 -
Eureka使用
单节点搭建注意:在使用Eureka之前应将本机防火墙关闭。可在 控制面板\系统和安全\Windows 防火墙 中关闭。在spring cloud中Eureka也是一个微服务,搭建过程和普通微服务开发过程相比更加简洁。pom依赖<!--Eureka服务端端依赖--><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spri原创 2020-10-12 16:24:47 · 214 阅读 · 0 评论 -
Linux 安装 Maven
安装步骤:下载安装包——》解压——》创建仓库目录——》修改setting.xml——》修改环境变量——》刷新环境变量——》测试1.下载安装包下载地址: https://maven.apache.org/download.cgi注意安装Maven需要安装JDK,关于JDK的安装ke'yi'can'kao...原创 2021-01-05 23:51:12 · 104 阅读 · 0 评论 -
Linux 安装 JDK
方法一:命令行安装:yum install -y java-1.8.0-openjdk.x86_64方法二:手动安装:步骤 下载安装包——》解压——》修改profile文件——》刷新环境变量——》测试是否成功安装下载地址·:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 现在下载需要Oracle账户比较繁琐这里分享一下自己用的链接:https://pan.baidu.co...原创 2021-01-05 23:07:31 · 93 阅读 · 0 评论 -
JAVA 注解
Annotation的作用 标记,用于告诉编译器一些信息 编译时动态处理,如动态生成代码 运行时动态处理,如得到注解信息Annotation作用范围 可以附加在Package、Class、methord、field等上面,相当于给他们添加额外的辅助信息。内置注解@Deprecated 已过期,表示方法是不被建议使用的(可用于修饰属性、方法、类) @Override 重写,标识覆盖它的父类的方法(只能修饰方法) @SuppressWarnings 压制警告,抑...原创 2020-12-27 23:01:26 · 74 阅读 · 0 评论 -
JAVA反射
什么是反射? 在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性),这种动态获取的信息以及动态调用对象的方法的功能就称为java语言的反射机制。通俗点讲,通过反射,该类对我们来说是完全透明的,想要获取任何东西都可以。想要使用反射机制,就必须要先获取到该类的字节码文件对象(.class) ,获取字节码的方式有如下三种:通过该类对象的 .getClass()方法 ——对象阶段 隐含的成员变量 ....原创 2020-12-18 00:43:46 · 120 阅读 · 0 评论 -
Maven打包依赖将依赖的Jar包也打进去
可以在pom.xml中添加如下依赖注意:一定要写明主类的类全名。<plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest>原创 2020-12-06 21:44:12 · 6113 阅读 · 1 评论 -
idea中SpringBoot项目添加热部署工具
1.添加devtools依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>原创 2020-09-21 22:51:34 · 148 阅读 · 0 评论 -
JAVA多线程之线程池
目录1、new Thread的弊端2、Java 线程池(1)newCachedThreadPool:(2)newFixedThreadPool:(3)newScheduledThreadPool:(4)newSingleThreadExecutor:线程池的作用:为什么要用线程池:1.newSingleThreadExecutor2.newFixedThreadPool3.newCachedThreadPool4.newScheduledThreadPool转载 2020-09-15 23:31:13 · 145 阅读 · 0 评论 -
JAVA多线程之Lock
接口关系 (1)Lock和ReadWriteLock是两大锁的根接口,Lock代表实现类是ReentrantLock(可重入锁),ReadWriteLock(读写锁)的代表实现类是ReentrantReadWriteLock。 Lock 接口支持那些语义不同(重入、公平等)的锁规则,可以在非阻塞式结构的上下文(包括 hand-over-hand 和锁重排算法)中使用这些规则。主要的实现是 ReentrantLock。ReadWriteLock 接口以类似方式定义了一些读取者可以共享而写入原创 2020-09-13 19:46:43 · 254 阅读 · 0 评论 -
JAVA多线程之ThreadLocal
ThreadLocal提供线程局部变量,即为使用相同变量的每一个线程维护一个该变量的副本。当某些数据是以线程为作用域并且不同线程具有不同数据副本的时候就可以采用ThreadLocal。常用方法:initialValue() set() get()示例代码:模拟多线程情况下转账操作package threadcontrol;public class ThreadLocalDemo { private static class Bank{ private Th原创 2020-09-13 16:32:50 · 130 阅读 · 0 评论 -
JAVA多线程之原子类
什么是原子性?如果把一个事务可看作是一个程序,它要么完整的被执行,要么完全不执行。这种特性就叫原子性原子问题演示在java中i++这种操作不具有原子性,以此作为演示,在多线程情况下对++操作的影响。i++操作实现过程:a = i a = a+1 i=a代码如下:package threadcontrol;public class ThreadAtomicDemo { private static int num = 0; public static v原创 2020-09-13 16:16:20 · 393 阅读 · 0 评论 -
JAVA多线程之线程通讯
目录为什么要线程通讯常用方法休眠唤醒方式:ObjectConditionCountDownLatchCyclicBarrierSemaphore为什么要线程通讯多个线程并发执行时,在默认情况下CPU是随机切换线程的,有事我们希望CPU按照我们的规律去执行线程,此时就需要线程之间的协调通讯。常用方法休眠唤醒方式:Objectwait() notify() notifyAll()示例代码:public class OddEven {原创 2020-09-12 17:05:34 · 128 阅读 · 0 评论 -
JAVA多线程之线程死锁
什么是死锁?所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。代码演示:public class DeadThreadDemo implements Runnable { private int flag; private static Object object1 = new Object(); private static Object object2 = new Object(); public De原创 2020-09-06 21:55:24 · 270 阅读 · 0 评论 -
JAVA多线程之线程安全问题
目录1.线程安全1.1 问题演示:1.2 问题分析2.线程同步2.1 借助 synchronized2.1.1 同步代码块2.1.2 同步方法2.2 借助Lock参考1.线程安全如果有多个线程同时运行同一个实现了Runnable接口的类,程序每次运行结果和单线程运行的结果是一样的,而其他的变量值也和预期值是一样的,就是线程安全的,反之就是线程不安全的。1.1 问题演示:以售票员卖票为例:public class Ticket implements R原创 2020-09-06 19:17:47 · 192 阅读 · 0 评论 -
JAVA多线程之线程的生命周期
新建new关键字创建一个线程后,该线程就处于新建状态。JVM为线程分配内存,初始化成员变量。就绪当线程对象调用了start()方法之后,该线程就处于就绪状态。JVM为线程创建方法栈和程序计数器,等待线程调度器调用。运行就绪状态的线程获得CPU资源后,开始运行run()方法,该线程进入运行状态。阻塞线程调用了sleep()方法,主动放弃所占用的处理器资源 线程调用了一个阻塞IO方法,在该方法返回前,线程被阻塞 线程试图获得一个同步锁(同步监视器)但该同步锁整备其他线..原创 2020-08-30 21:55:31 · 112 阅读 · 0 评论 -
JAVA多线程之线程的创建
目录进程与线程什么是进程?什么是线程?创建线程的方式1.继承Thread类2.实现Runnable接口3.实现Callable接口4.线程池补充实现接口和继承Thread类比较Runnable接口和Callable接口的比较测试类进程与线程什么是进程?进程是正在运行的程序的实例,进程是线程的容器,即一个进程中可以开启多个线程。什么是线程?线程是进程内部的一个独立执行单元,一个进程可以同时并发运行多个线程。创建线程的方式Java中创建原创 2020-08-30 20:31:37 · 126 阅读 · 0 评论 -
Lambda表达式
简介什么是Lambda表达式Lambda是Java8添加的一个新特性,简单来说Lambda是一个匿名函数。为什么要用Lambda表达式使用Lambda可以对一个接口进行非常简洁的实现。对接口的要求不是所有接口都可以通过Lambda表达式实现,要求接口中定义的必须要实现的抽象方法只能是一个。补充:@FunctionalInterface 修饰函数式接口的,接口中的抽象方法只能是一个。函数的构成一般来说在Java中一个函数会包含4部分:返回值类型 方法.原创 2020-08-30 00:04:47 · 232 阅读 · 0 评论 -
设计模式之单例模式(5种实现方式)
1.什么是单例模式单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例。实现步骤:私有化构造方法 静态化实例对象 提供一个静态对象返回方法1.1 饿汉模式优点:没有加锁,执行效率会提高。 缺点:类加载时就初始化,浪费内存。public class Singleton1 { private Singleton1(){} private static Singleton1 singleton1 = new Si原创 2020-07-26 00:45:16 · 452 阅读 · 0 评论 -
JAVA面试题---线程篇(一)线程
1.并行与并发的区别?并行:多个处理器或多核处理器同时处理多个任务 并发:多个任务在同一个CPU核上,按细分的时间片轮流执行,从逻辑上来看这些任务是同时执行的。2.线程和进程的区别一个程序下至少有一个进程,一个进程下至少有一个线程。一个进程下也可以有多个线程来增加程序的执行速度。3.守护线程是什么?守护线程是运行在后台的一种特殊进程,它独立于控制终端并且周期性的执行...原创 2019-07-18 16:42:48 · 103 阅读 · 0 评论 -
剑指Offer_编程题_二进制中1的个数
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思路一:将10进制数转化为二进制数再转化为字符数组,通过循环计算出‘1’的个数。JAVA进制转换: https://blog.csdn.net/qq_29519041/article/details/81209095代码如下:public class Solution { public int N...原创 2019-08-08 21:18:19 · 138 阅读 · 0 评论 -
剑指Offer_编程题_斐波那契数列_跳台阶_变态跳台阶_矩形覆盖
这几道题目的解题思路类似所以放在一起递归:程序调用自身的编程技巧称为递归( recursion)题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39补充说明:斐波那契数列(Fibonacci sequence):又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁...原创 2019-08-08 20:40:28 · 325 阅读 · 0 评论 -
剑指Offer_编程题_旋转数组中的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路1:简单粗暴直接查找代码如下:import java.util.ArrayList;publ...原创 2019-08-08 20:31:45 · 152 阅读 · 0 评论 -
剑指Offer_编程题_用两个栈实现一个队列
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入删除操作的一端称为栈顶,另一端称为栈底。不含任何元素的栈称为空栈。栈最大的特点就是:先进后出,后进先出。 队列:一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入...原创 2019-08-08 19:05:16 · 174 阅读 · 0 评论 -
剑指Offer_编程题_重建二叉树
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。二叉树:在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right sub...原创 2019-08-08 15:25:25 · 117 阅读 · 0 评论 -
JAVA面试题 --- Kafka篇
1.Kafka 可以脱离 Zookeeper 单独使用吗?为什么?Kafka 不能脱离 Zookeeper 单独使用,因为Kafka 使用 Zookeeper 管理和协调 Kafka 的节点服务器。2.Kafka 有几种数据保存的策略?按照过期时间保留 按照存储的消息大小保留3.什么情况会导致 Kafka 运行变慢CPU 性能瓶颈 磁盘读写瓶颈 网络瓶颈4.使用 Kafk...原创 2019-07-28 21:49:32 · 1415 阅读 · 0 评论 -
JAVA面试题 --- Zookeeper篇
1.Zookeeper 是什么?Zookeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 google chubby 的开源实现,是 hadoop 和 hbase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务。2.Zookeeper 都有哪些功能?集群管理:监控节点存活状态、运行请求等。 主节点选取...原创 2019-07-28 21:31:28 · 485 阅读 · 0 评论 -
剑指Offer_编程题_数值的整数次方
题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。思路一:首先判断指数如果指数=0,则判断底数是否等于零,不等于零则返回1,否则返回零或打印不合法。 如果指数>0,则通过循环连续相乘,返回结果。 如果底数<0,则取相反数,再通过循环连续相乘,返回结果的倒数。public class Solution...原创 2019-08-08 21:51:53 · 157 阅读 · 0 评论 -
剑指Offer_编程题_从上往下打印二叉树
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路:二叉树层序遍历,使用队列实现。在将元素压入队列的同时,判断左右子节点是否为空,不为空则将左右结点也加如队列中。代码:import java.util.*;/**public class TreeNode { int val = 0; TreeNode left = null; Tre...原创 2019-08-13 18:57:33 · 165 阅读 · 0 评论 -
剑指Offer_编程题_二叉搜索树的后序遍历序列
题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。补充:二叉查找树(Binary Search Tree)又:二叉搜索树,二叉排序树,它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于...原创 2019-08-13 19:22:11 · 109 阅读 · 0 评论 -
剑指Offer_编程题_调整数组顺序使奇数位于偶数前面
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路一:首先克隆一个数组,然后统计数组中奇数的个数,之后以奇数的个数为分界线分别将奇偶数添进去代码如下:public class Solution { public void reOrderArra...原创 2019-08-09 21:30:36 · 182 阅读 · 0 评论 -
剑指Offer_编程题_链表中倒数第K个结点_反转链表_合并两个排序的链表
题目描述输入一个链表,输出该链表中倒数第k个结点。思路:首先统计链表中结点的个数 为N,如果小于K则返回NULL,否则输出第N-K个节点,即倒数第K个节点代码如下:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val =...原创 2019-08-09 22:05:58 · 105 阅读 · 0 评论 -
剑指Offer_编程题_树的子结构
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路:将B与A,A的左子树,A的右子树分别进行判断,如果元素不相等返回 false ,运用递归直到A子树为空此时返回 false/**public class TreeNode { int val = 0; TreeNode left = null; TreeN...原创 2019-08-12 20:06:59 · 99 阅读 · 0 评论 -
剑指Offer_编程题_二叉树的镜像
题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5...原创 2019-08-12 20:14:33 · 104 阅读 · 0 评论 -
剑指Offer_编程题_顺时针打印矩阵
题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.思路:主要集中在数组下标的边界import java.util.ArrayList;public clas...原创 2019-08-12 20:27:20 · 148 阅读 · 0 评论 -
剑指Offer_编程题_包含min函数的栈
题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。思路:定义两个栈,以及最小值 min 一个栈作为数据栈,另一个栈作为最小值栈,当进行入栈操作时数据放入数据栈中,然后进行判断,无论大小都将当前最小值放入最小值栈中,进行出栈操作时两个栈同时出栈。代码如下:import java.util.Stack;public cl...原创 2019-08-12 20:36:40 · 90 阅读 · 0 评论 -
RabbitMQ 学习笔记(二)RabbitMQ核心概念
AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。Erlang中的实现有 RabbitMQ等。AMQP核心概念Server :又称Broker,接受客户端的连...原创 2019-08-12 23:31:34 · 143 阅读 · 0 评论 -
剑指Offer_编程题_替换空格
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。方法1:使用replaceAll方法public class Solution { public String replaceSpace(StringBuffer str) { String s=str...原创 2019-08-01 21:02:38 · 96 阅读 · 0 评论