![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 77
东北亚大中华区首席搬砖工具人
要饭,要饭,精通C++
展开
-
SpringCloud
Spring Cloud封装了Netflix 公司开发的Eureka模块来实现服务治理在传统的RPC远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂。所以需要使用服务治理,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。Eureka采用了CS的设计架构,Eureka Sever作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用Eureka的客户端连接到 Eureka Server并维持心跳连接。这样系统的维护人员就可以通过Eu原创 2022-10-24 22:46:34 · 580 阅读 · 1 评论 -
谷粒商城-基础篇(项目简介&项目搭建)
市面上有 5 种常见的电商模式 B2B、B2C、C2B、C2C、O2O;B2B 模式 B2B (Business to Business), 是指商家与商家建立的商业关系。如:阿里巴巴B2C 模式 B2C (Business to Consumer), 就是我们经常看到的供应商直接把商品卖给用户,即“商对客” 模式,也就是通常说的商业零售,直接面向消费者销售产品和服务。如:苏宁易购、京东、 天猫、小米商城C2B 模式 C2B (Customer to Business),即消费者对企业。...原创 2022-08-03 22:52:14 · 611 阅读 · 0 评论 -
快速入门RabbitMq,看这一篇就够了。
RabbitMq3. RabbitMq之Hello World3.1 创建开发环境,添加maven依赖3.2 流程图3.3 生产者代码3.4 消费者代码3.5 测试用例4. 工作队列4.1 什么是工作队列?4.2 用代码实现工作队列4.2.1 抽取连接工程工具类4.2.2 消费者代码4.2.3 生产者代码4.2.4 测试,发送消息3. RabbitMq之Hello World3.1 创建开发环境,添加maven依赖pom.xml <build> <plugin原创 2021-12-26 09:34:59 · 781 阅读 · 0 评论 -
23种设计模式之建造者模式
文章目录1. 盖房子项目需求分析2. 用传统方式实现2.1 用类图描述2.2 上代码2.2.1 抽象父类2.2.2 实现子类2.2.3 测试类2.2.4 运行结果2.2.5 问题分析2.2.6 解决方案3. 建造者模式3.1 什么是建造者模式3.2 建造者模式的四个角色3.4 用类图描述3.5 上代码3.5.1 产品类3.5.2 抽象建造者3.5.3 具体建造者---普通房子3.5.4 具体建造者---高楼3.5.5 指挥者3.5.6 测试类3.5.7 运行结果4. 建造者模式在JDK的应用和源码分析原创 2021-08-06 21:20:36 · 107 阅读 · 0 评论 -
23种设计模式之原型模式
文章目录1.项目需求分析2.用类图描述3.上代码3.1 新建tom羊类3.2 客户端,测试类3.3 运行结果3.4 传统方式优缺点分析3.5 改进思路分析4 原型模式4.1 什么是原型模式?4.2 原型结构类型4.2 上代码4.2.1 改进Tom羊类,实现Cloneable接口,从写Clone方法4.2.2 修改测试类4.2.3 运行结果4.2.4 可扩展性分析5 原型模式在Spring框架中源码分析5.1 创建Monster 类5.2 创建applicationContext.xml文件,并以原型模式配置原创 2021-08-05 20:19:47 · 128 阅读 · 0 评论 -
23种设计模式之观察者模式
文章目录1. 项目需求分析2. 天气预报设计方案1:普通方案2.1 上代码2.1.1 创建气象站类2.1.2 创建天气类2.1.3 创建客户端类,测试类2.1.4 运行结果2.2 问题分析1. 项目需求分析天气预报项目需求,具体要求如下:气象站可以将每天测量到的温度、湿度、气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)。需要设计开放型API,便于其他第三方也能接入气象站获取数据。提供温度、气压和湿度的接口。测量数据更新时,要能实时的通知给第三方。2. 天气预报设计方案1原创 2021-08-01 21:48:24 · 111 阅读 · 0 评论 -
23种设计模式之简单工厂模式,工厂方法模式,抽象工厂模式详解
这里写目录标题1.简单工厂模式1.1 需求分析1.2 使用传统方式实现1.2.1 类图:1.2.2 代码实现1.2.2.1 新建pizza抽象类1.2.2.2 希腊披萨实现类1.2.2.3 奶酪披萨实现类1.2.2.4 订购披萨类1.2.2.5 披萨商店类1.2.2.5 运行结果1.2.3 传统方式优缺点分析1.简单工厂模式1.1 需求分析看一个披萨的项目:要便于披萨种类的扩展,要便于维护。披萨的种类很多,比如GreekPizz,CheesePizz等披萨的制作工序有prepare,bake,c原创 2021-08-01 21:47:44 · 130 阅读 · 0 评论 -
UML类图之六种基本关系详解
文章目录0. 什么是UML?1. 依赖关系(Dependence)1.1 什么是依赖关系?1.2 上代码1.3 用类图描述关系1.4 依赖小结2. 泛化关系(Generalization)2.1 什么是泛化关系?2.2 上代码2.3 用类图描述关系2.4 小结3. 实现关系(Realization)3.1 什么是实现关系?3.2 上代码3.3 用类图描述关系4. 关联关系(Association)4.1 什么是关联关系?4.2 单向一对一4.3 单向一对一:用类图描述关系4.3 双向一对一4.4 双向一对一原创 2021-07-31 21:27:16 · 679 阅读 · 0 评论 -
SpringCloud高频重点面试题,看这一篇就够了。
文章目录Eureka服务注册与发现1 Eureka基础知识1.1 什么是服务治理1.2 什么是服务注册与发现1.3 Eureka包含两个组件:Eureka Server 和 Eureka Client1.4 单机Eureka构建步骤1.4.1 服务端1.4.2 客户端1.4.3 将Eureka Client端中的服务消费端注册进Eureka Server称为Service Consumer1.5 集群Eureka构建步骤1.6 负载均衡1.7 Eureka自我保护(CAP里面的AP分支)1.7.1 产生原因原创 2021-07-28 16:55:24 · 3275 阅读 · 1 评论 -
Java高频重点面试题,看这一篇就够了。
1.==和equals区别?1)对于==,比较的是值是否相等如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;如果作用于引用类型的变量,则比较的是所指向的对象的地址2)对于equals方法,注意:equals方法不能作用于基本数据类型的变量,所有类从Object类中继承equals方法,比较的是是否是同一个对象 如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址; 诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象原创 2021-07-16 20:54:25 · 1308 阅读 · 0 评论 -
Java 8之新特性详解
Java8 新特性1.Java8新特性简介2. Java8新特性好处3. Lambda表达式3.1 Lambda表达式的使用3.1.1 语法格式一,无参,无返回值3.1.2 语法格式二,需要一个参数,但是没有返回值3.1.3 语法格式三:数据类型可以省略,因为可以由编译器推断得出,称为“类型推断”3.1.4 语法格式四:Lambda若只需要一个参数时,参数 的小括号可以省略3.1.5 语法格式五:Lambda需要两个或以上的参数,多条执行语句,并且有返回值3.1.6 语法格式六:当Lambda体只有一条语句原创 2021-07-12 22:59:27 · 980 阅读 · 18 评论 -
Spring面试之bean作用域
1.bean的作用域The Singleton Scope(单例模式)spring默认机制<bean id="accountService" class="com.something.DefaultAccountService"/><!-- the following is equivalent, though redundant (singleton scope is the default) --><bean id="accountService" cla原创 2021-05-28 20:19:38 · 123 阅读 · 0 评论 -
Spring DI依赖注入方式
1.构造器注入2.Set方式注入【重点】依赖注入:Set注入依赖:bean对象的创建依赖于容器注入:bean对象中的所有属性,由容器来注入。【环境搭建】Studentpackage com.lx.pojo;import java.util.*;/** * @author LongXi * @create 2021-05-27 20:49 */public class Student { private String name; private Address转载 2021-05-27 23:15:19 · 52 阅读 · 0 评论 -
Spring配置说明
1.别名 <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans ht原创 2021-05-27 20:42:23 · 61 阅读 · 0 评论 -
Spring Ioc创建对象的方式
官网:https://docs.spring.io/spring-framework/docs/5.2.0.RELEASE/spring-framework-reference/core.html#spring-core1.新建实体类/** * @author LongXi * @create 2021-05-25 20:17 */public class Hello { private String str; public String getStr() {原创 2021-05-27 20:24:14 · 99 阅读 · 1 评论 -
Spring-IOC推导
1.1 简介 2002 首次推出了Spring框架的雏形spring理念:使现有的技术更加容易使用,本身是一个大杂烩,整合了现有框架。 SSH:Struts2,spring,hibernate SSM:Spring,Spring MVC,Mybatis 官网: https://spring.io/projects/spring-framework 官方下载地址: https://repo.spring.io/release/org/springframework/spring原创 2021-05-25 08:59:51 · 137 阅读 · 1 评论 -
Java面试之JVM参数调优
JVM参数调优前言你说你做过JVM调优和参数配置,请问如何盘点查看JVM系统默认值使用jps和jinfo进行查看-Xms:初始堆空间-Xmx:堆最大值-Xss:栈空间-Xms 和 -Xmx最好调整一致,防止JVM频繁进行收集和回收JVM参数类型标配参数(从JDK1.0 - Java12都在,很稳定)-version-helpjava -showversionX参数(了解)-Xint:解释执行-Xcomp:第一次使用就编译成本地代码-Xmixed:混合模式XX原创 2021-04-11 09:34:48 · 166 阅读 · 0 评论 -
Java面试之什么是GCRoots,能做什么?
JVM面试汇总JVM垃圾回收的时候如何确定垃圾?是否知道什么是GC Roots什么是垃圾简单来说就是内存中已经不再被使用的空间就是垃圾如何判断一个对象是否可以被回收引用计数法Java中,引用和对象是有关联的。如果要操作对象则必须用引用进行。因此,很显然一个简单的办法就是通过引用计数来判断一个对象是否可以回收。简单说,给对象中添加一个引用计数器每当有一个地方引用它,计数器值加1每当有一个引用失效,计数器值减1任何时刻计数器值为零的对象就是不可能再被使用的,那么这个对象就是可回收对象。那么原创 2021-04-08 20:50:30 · 448 阅读 · 0 评论 -
Java面试之线程池详细
ああ原创 2021-04-07 20:17:32 · 99 阅读 · 0 评论 -
Java面试之阻塞队列
阻塞队列概念队列队列就可以想成是一个数组,从一头进入,一头出去,排队买饭(FIFO),和栈是一样的FIFO阻塞队列BlockingQueue 阻塞队列,排队拥堵,首先它是一个队列,而一个阻塞队列在数据结构中所起的作用大致如下图所示:线程1往阻塞队列中添加元素,而线程2从阻塞队列中移除元素当阻塞队列是空时,从队列中获取元素的操作将会被阻塞当蛋糕店的柜子空的时候,无法从柜子里面获取蛋糕当阻塞队列是满时,从队列中添加元素的操作将会被阻塞当蛋糕店的柜子满的时候,无法继续向柜子转载 2021-03-30 20:58:26 · 105 阅读 · 0 评论 -
Java面试之synchronized和Lock有什么区别?
1.原始构成synchronized是关键字,属于JVM层面monitorenter,monitorexit(底层是通过monitor对象来完成,其实wait/notify等方法也依赖于monitor对象,只有在同步块或方法中才能调用wait/notify等方法)Lock是具体类(java.util.concurrent.locks.lock)是api层面的锁。java5开始使用。2.使用方法synchronized 不需要用户手动去释放锁,当synchronized代码执行完成后原创 2021-03-28 20:13:41 · 107 阅读 · 0 评论 -
Java面试之Synchronized无法禁止指令重排却能保证有序性
为什么Synchronized无法禁止指令重排,却能保证有序性前言首先我们要分析下这道题,这简单的一个问题,其实里面还是包含了很多信息的,要想回答好这个问题,面试者至少要知道一下概念:Java内存模型并发编程有序性问题指令重排synchronized锁可重入锁排它锁as-if-serial语义单线程&多线程标准解答为了进一步提升计算机各方面能力,在硬件层面做了很多优化,如处理器优化和指令重排等,但是这些技术的引入就会导致有序性问题。先解释什么是有序性问题,也知道是什么原创 2021-03-24 20:25:44 · 357 阅读 · 1 评论 -
Java面试之锁-自旋锁
Java锁之自旋锁自旋锁:spinlock,是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁这样的优点:是减少线程上下文切换的消耗,缺点是循环会消耗CPU原来提到的比较并交换,底层使用的就是自旋,自旋就是多次尝试,多次访问,不会阻塞的状态就是自旋。优缺点优点:循环比较获取直到成功为止,没有类似于wait的阻塞缺点:当不断自旋的线程越来越多的时候,会因为执行while循环不断的消耗CPU资源手写自旋锁通过CAS操作完成自旋锁,A线程先进来调用myLock方法自己持有锁5秒,原创 2021-03-17 21:40:58 · 122 阅读 · 0 评论 -
Java面试之锁-可重入锁和递归锁
可重入锁和递归锁ReentrantLock概念可重入锁就是递归锁指的是同一线程外层函数获得锁之后,内层递归函数仍然能获取到该锁的代码,在同一线程在外层方法获取锁的时候,在进入内层方法会自动获取锁也就是说:线程可以进入任何一个它已经拥有的锁所同步的代码块ReentrantLock / Synchronized 就是一个典型的可重入锁代码可重入锁就是,在一个method1方法中加入一把锁,方法2也加锁了,那么他们拥有的是同一把锁public synchronized void method1()原创 2021-03-15 21:02:33 · 134 阅读 · 0 评论 -
Java面试之锁-公平锁和非公平锁
Java锁之公平锁和非公平锁概念公平锁是指多个线程按照申请锁的顺序来获取锁,类似于排队买饭,先来后到,先来先服务,就是公平的,也就是队列非公平锁是指多个线程获取锁的顺序,并不是按照申请锁的顺序,有可能申请的线程比先申请的线程优先获取锁,在高并发环境下,有可能造成优先级翻转,或者饥饿的线程(也就是某个线程一直得不到锁)如何创建并发包中ReentrantLock的创建可以指定析构函数的boolean类型来得到公平锁或者非公平锁,默认是非公平锁/*** 创建一个可重入锁,true 表示公平锁,f原创 2021-03-15 20:58:14 · 98 阅读 · 0 评论 -
Java面试之锁-读写锁
独占锁(写锁) / 共享锁(读锁) / 互斥锁概念独占锁:指该锁一次只能被一个线程所持有。对ReentrantLock和Synchronized而言都是独占锁共享锁:指该锁可以被多个线程锁持有对ReentrantReadWriteLock其读锁是共享,其写锁是独占写的时候只能一个人写,但是读的时候,可以多个人同时读为什么会有写锁和读锁原来我们使用ReentrantLock创建锁的时候,是独占锁,也就是说一次只能一个线程访问,但是有一个读写分离场景,读的时候想同时进行,因此原来独占锁的并发性就没转载 2021-03-15 20:50:26 · 72 阅读 · 0 评论 -
Java面试之到底值传递和引用传递???
值传递和引用传递举例/** * 值传递和引用传递 */class Person { private Integer id; private String personName; public Person(String personName) { this.personName = personName; }}public class TransferValueDemo { public void changeValue1(int a转载 2021-03-15 20:42:57 · 59 阅读 · 0 评论 -
Java面试之ArrayList为什么线程不安全?
Collection线程不安全的举例前言1、当我们执行下面语句的时候,底层进行了什么操作new ArrayList<Integer>();底层创建了一个空的数组,伴随着初始值为10当执行add方法后,如果超过了10,那么会进行扩容,扩容的大小为原值的一半,也就是5个,使用下列方法扩容Arrays.copyOf(elementData, netCapacity)单线程环境下单线程环境的ArrayList是不会有问题的public class ArrayListNotSafeD转载 2021-03-15 20:34:51 · 233 阅读 · 0 评论 -
Java面试之谈谈对CAS的理解
CAS底层原理概念CAS的全称是Compare-And-Swap,它是CPU并发原语它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的CAS并发原语体现在Java语言中就是sun.misc.Unsafe类的各个方法。调用UnSafe类中的CAS方法,JVM会帮我们实现出CAS汇编指令,这是一种完全依赖于硬件的功能,通过它实现了原子操作,再次强调,由于CAS是一种系统原语,原语属于操作系统用于范畴,是由若干条指令组成,用于完成某个功能的一个过程,并且原语的执行必须是连续原创 2021-03-13 14:25:54 · 231 阅读 · 0 评论 -
Java面试之谈谈对Volatile的理解
谈谈对Volatile的理解Volatile在日常的单线程环境是应用不到的Volatile是Java虚拟机提供的轻量级的同步机制(三大特性)保证可见性不保证原子性禁止指令重排可能这么说,还是不太理解,那么首先我们先了解一下JMMJMM是什么JMM是Java内存模型,也就是Java Memory Model,简称JMM,本身是一种抽象的概念,实际上并不存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式JMM关.转载 2021-03-13 13:48:36 · 146 阅读 · 0 评论 -
Java面试23种设计模式之单例模式的8种实现方式
1.单例模式介绍单例模式:就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象的实例,并且该类之提供一个取得其对象实例的方法(静态方法)。比如Hibernate的SessionFactory,它充当数据存储的代理,并负责创建Session对象。SessionFactory不是轻量级的,一般情况下,一个项目通常只需要一个SessionFactory就够,这时候就会使用到单例模式。2.单例模式的八种方式1.饿汉式(静态常量)2.饿汉式(静态代码块)3.懒汉式(线程不安全)4.懒汉式(原创 2021-02-03 21:39:33 · 132 阅读 · 0 评论 -
Java面试之设计模式七大原则
最近项目不太忙,不怎么加班,正利用晚上时间好好学习学习设计模式,之前可能多多少少都用到过,但是有些还是很模糊,这下正好系统的学一下。好了,话不多说,进入正题。1.什么是设计模式?软件工程中,设计模式是对软件设计中普遍存在的,或者反复出现的各种问题,所提出的解决方案。2.设计模式的目的?设计模式是为了让程序,具有更好的1)代码重用性2)可读性3)可扩展性4)高内聚性5)低耦合性3.设计模式七大原则1)单一职责2)接口隔离3)依赖倒转4)里氏替换5)开闭原则6)迪米特法则7)原创 2021-01-18 22:54:15 · 197 阅读 · 0 评论 -
批量图片处理:如何给多个图片都加上连续的序号?
今天是周六,一大早上起来,阳光明媚,除了冷还是个好天气! 大东北的冬天可不是盖的。 打开电视,开始听音乐,舒缓一下心情,同时准备早饭 正当准备吃饭的时候,一位高中同学给我发来消息:“有没有啥软件能批量处理图片,递增添加序号呢?有1000多张图片,我编辑不了。” 我:“这个我也没弄过啊,但是可以帮你看看” 她: “高手都没整过?出了一个难题~好吧,谢谢啦,我再研究下” 虽然这波伤害性不大,但是侮辱性极强。 于是我:“这有啥难的,看我分分钟搞定。” 于是我想了一下,下面是我大概解.原创 2021-01-16 20:39:09 · 4928 阅读 · 6 评论