![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JavaSe
壹只小菜
这个作者很懒,什么都没留下…
展开
-
电商系统之策略模式的使用
策略模式定义:策略模式是对算法的包装,把使用算法的责任和算法本身分隔开,委派给不同的对象管理。简单来说就是就定义一个策略接口,子类策略去实现该接口去定义不同的策略。然后定义一个环境(Context,也就是需要用到策略的对象)类,以策略接口作为成员变量,根据环境来使用具体的策略。优点:1、算法可以自由切换。2、避免使用多重条件判断。3、扩展性良好。缺点:1、策略类会增多。2、所有策略类都需要对外暴露。使用场景 多个类只有算法或行为上稍有不同的场景 算法需要自由切换.原创 2021-02-19 14:04:53 · 314 阅读 · 0 评论 -
Feign发送请求时参数的传递和返回值
1.SpringCloud中微服务之间的调用,传递参数时需要加相应的注解。用到的主要是三个注解@RequestBody,@RequestParam(),@PathVariable()2.get和post请求中对于传递单个引用类型的参数,比如String,Integer....用@RequestParam(),括号中一定要有值(参数的别名)。调用方需要加注解,被调用方不需要加。当然加上也不会出错。被调用方的参数名和调用方的别名保持一致即可。3.post请求中对于javaBean,map,list类型的原创 2020-12-12 17:30:31 · 2646 阅读 · 0 评论 -
nacos集群启动出现的问题(nacos启动失败或者启动个数不满足预期)
原创:https://blog.csdn.net/qq_41989047/article/details/105295098问题概述:在尝试虚拟机上启动三个nacos做集群的时候,实际上启动成功的只有2个,查看集群中启动的个数命令如下: ps -ef|grep nacos|grep -v grep|wc -l1解决方案一:笨方法,调整分配给虚拟机的内存大小(我这里提到4G)。而后使用free命令查看内存情况,结果如下:解决方案二(修改前先备份)修改bin/startup.sh,转载 2020-11-02 14:32:01 · 3155 阅读 · 1 评论 -
SpringBoot的配置文件bootstrap与application的作用以及区别
原创:https://blog.csdn.net/snow_7/article/details/88391192SpringBoot中有以下两种配置文件bootstrap (.yml 或者 .properties),application (.yml 或者 .properties)1.加载顺序上的区别bootstrap.yml(bootstrap.properties)先加载application.yml(application.properties)后加载bootstrap.yml 用于应用程序转载 2020-10-30 21:20:21 · 683 阅读 · 0 评论 -
Synchronized原理解析(字节码文件)
Java中每一个对象都可以作为锁,这是synchronized实现同步的基础:普通同步方法,锁是当前实例对象 静态同步方法,锁是当前类的class对象 同步方法块,锁是括号里面的对象Moniter为了解决线程安全的问题,Java提供了同步机制、互斥锁机制,这个机制保证了在同一时刻只有一个线程能访问共享资源。这个机制的保障来源于监视锁Monitor。每一个Object对象中内置了一个Monitor对象。(对象头的MarkWord中的LockWord指向monitor的起始地址)p.原创 2020-07-09 22:32:15 · 244 阅读 · 0 评论 -
Java对象头
Java对象保存在内存中时,由以下三部分组成:1,对象头2,实例数据3,对齐填充字节对象头java的对象头由以下三部分组成:1,Mark WordMark Word记录了对象和锁有关的信息,当这个对象被synchronized关键字当成同步锁时,围绕这个锁的一系列操作都和Mark Word有关。Mark Word在32位JVM中的长度是32bit,在64位JVM中长度是64bit。Mark Word在不同的锁状态下存储的内容不同,在32位JVM中是这么存的:.原创 2020-07-09 22:16:27 · 245 阅读 · 0 评论 -
Java注解底层原理---实现一个简单的注解
import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;public class Test01{ //定义注解生命周期 @Retention(RetentionPolicy.RUNTIME) static @interface wyf{ String name() default "一帆"; String sex() default "男.原创 2020-06-27 19:44:15 · 791 阅读 · 1 评论 -
AQS-抽象同步队列
一、AQS-锁的底层支持原创 2020-06-08 13:28:50 · 273 阅读 · 0 评论 -
ArrayList的线程不安全性之CopyOnWriteArrayList
ArrayList:当进行add操作时出现线程不安全ArrayList的add()源码 public boolean add(E e) { ensureCapacityInternal(size + 1); elementData[size++] = e; return true; }ArrayList 的不安全主要体现在两个方面。1. elementData[size++] = e;2.elementData[si...原创 2020-06-03 22:33:39 · 257 阅读 · 0 评论 -
JDK1.8新增的原子操作类 LongAdder
AtomicLong的弊端:对于AtomicLong,在高并发下大量线程会同时去竞争更新同一个原子变量,但是由于同时只有一个线程的CAS操作会成功,这就造成了大量线程竞争失败后,会通过无线循环不断进行自旋尝试CAS的操作,而这会白白浪费CPU资源。LongAdder的思想:把一个变量分解为多个变量,让同样多的线程去竞争多个资源使用LongAdder时,则是在内部维护多个Cell变量,每个Cell里面有一个初始值为0的long型变量,这样,在同等并发量的情况下,争夺单个变量更新操作的线程量会减少,原创 2020-06-02 14:23:17 · 328 阅读 · 0 评论 -
ClassLoader源码分析和实例解析
Java的动态类加载功能是由类加载器子系统处理。当它在运行时(不是编译时)首次引用一个类时,它加载、链接并初始化该类文件。1.1 加载:类由此组件加载。启动类加载器 (BootStrap class Loader)、扩展类加载器(Extension class Loader)和应用程序类加载器(Application class Loader) 这三种类加载器帮助完成类的加载。1. 启动类加载器 – 负责从启动类路径中加载类,无非就是rt.jar。这个加载器会被赋予最高优先级。2. 扩展类加载器...原创 2020-05-16 14:41:46 · 209 阅读 · 0 评论 -
Java的泛型和通配符
泛型:1.泛型类 class A<T>{ }2.在创建实例时,需要为其类型变量赋值3.泛型方法 class A<T>{ public T fun1(){} public void fun2(T t){} //以上两个都不是泛型方法,他们是泛型类里面的一个方法 //发现方法要求需要在...原创 2020-03-03 21:29:44 · 80 阅读 · 0 评论 -
JavaSE - 注解(Annotation)
Annotation 中文译过来就是注解、标释的意思,在 Java 中注解是一个很重要的知识点,但经常还是有点让新手不容易理解。比较糟糕的技术文档主要特征之一就是:用专业名词来介绍专业名词。比如:Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注...转载 2019-01-18 15:33:45 · 125 阅读 · 0 评论