自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 软件过程模型

1.瀑布模型也叫做鲑鱼模型(Salmon model):向前一阶段回溯上一个阶段结束,下一个阶段才能开始每个阶段均有里程碑和提交物上一阶段的输出是下一阶段的输入每个阶段均需要进行V&V侧重于文档与产出物优点——追求效率简单、易懂、易用、快速为项目提供了按阶段划分的检查点,项目管理比较容易每个阶段必须提供文档,而且要求每个阶段的所有产品必须进行正式、严格的技术审查缺点——过于理想化在开发早期,用户难以清楚地确定所有需求,需求的错误很难在开发后期纠正,因此难以快速响应用户需求变

2020-12-28 23:26:40 12349

原创 docker网络

理解Docker0三个网络:问题: docker是如何处理容器网络访问的?启动一个tomcat容器docker run -d -P --name tomcat01 tomcat查看容器的内部网络地址ip addr,发现容 器启动的时候会得到一个 eth0@if114 ip地址, docker分配的!docker exec -it tomcat01 ip addr思考:liunx能不能ping通容器内部?可见linux可以Ping通容器内部原理:1、我们每启动一个docke

2020-12-28 00:20:58 10766

原创 桥接模式

桥接模式◆桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式, 又称为柄体(Handle and Body)模式或接口(Interfce)模式。传统多继承结构桥接模式//品牌public interface Brand { void info();}//联想品牌public class Lenovo implements Brand{ @Override public void info() { Syste

2020-12-26 10:19:56 10659

原创 适配器模式

适配器模式◆将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作!◆角色分析目标接口:客户所期待的接口,目标可以是具体的或抽象的类,也可以是接口。需要适配的类:需要适配的类或适配者类。适配器:通过包装一个需要适配的对象,把原接口转换成目标对象!//要适配的类 :网线public class Adaptee { public void request(){ System.out.println("连接网

2020-12-26 02:27:08 10803

原创 建造者模式

建造者模式◆建造者模式也属于创建型模式,它提供了一种创建对象的最佳方式。◆定义: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示◆主要作用:在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。◆用户只需要给出指定复杂对象的类型和内容,建造者模式负责按顺序创建复杂对象(把内部的建造过程和细节隐藏起来)◆例子:工厂(建造者模式) :负责制造汽车(组装过>程和细节在工厂内)汽车购买者(用户) :你只需要说出你需要的>型号(对象的类型和内容),然

2020-12-25 23:15:53 10760

原创 工厂模式与抽象工厂模式

工厂模式模式定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟到子类作用:实现了创建者和调用者的分离详细分类: 简单工厂模式 工厂方法模式 抽象工厂模式核心本质: 实例化对象不使用new,用工厂方法代替 将选择实现类,创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。三种模式:◆简单工厂模式 用来生产同一等级结构中的任意产品(对于增加新的产品,需要修改已有代码),不满足开闭原则◆工厂方法模式 用来生产同一等级结构

2020-12-25 21:34:30 13238 1

原创 单例模式

1.单例模式模式定义:保证一个类只有一个实例,并且提供一个全局访问点场景:重量级的对象,不需要多个实例,如线程池,数据库连接池。1.懒汉模式:延迟加载,只有在真正使用的时候, 才开始实例化。线程安全问题double check加锁优化编译器(JIT),CPU 有可能对指令进行重排序,导致使用到尚未初始化的实例,可以通过添加volatile 关键字进行修饰,对于volatile修饰的字段,可以防止指令重排。public class LazySingletonTest {

2020-12-25 17:18:37 10690

原创 java注解与反射学习总结

1.注解1.1什么是注解?◆Annotation是从JDK5.0开始弓|入的新技术. Annotation的作用 : 不是程序本身,可以对程序作出解释.(这一点和注释(comment)没什么区别)可以被其他程序(比如:编译器等)读取. ◆Annotation的格式: 注解是以"@注释名"在代码中存在的,还可以添加一-些参数值,例如:@SuppressWarnings(value=“unchecked”) ◆Annotation在哪里使用? 可以附加在package , cla

2020-12-25 02:05:23 11042 2

原创 java多线程学习总结

1.进程与线程的区别线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段,数据集,堆等)及一些进程级的资源(如打开文件和信号等),某进程内的线程在其他进程不可见;调度和切换:线程上下文切换比进程上下文切换要快得多2.创建线程的三种方法:1.创建线程方式一:继承Thread类,重写run方法,调用start开启线程publ

2020-12-24 12:38:58 10794

原创 JVM堆内存区

Heap ,一个JVM只有一个堆内存,堆内存大小是可以调节的。类加载器读取了这些文件后,一般会把什大学放到堆中?类,方法,常量,变量,保存我是所引用类型的真实对象堆内存中分为三个区域:新生区(伊甸园 Eden space)养老区永久区GC垃圾回收,主要在伊甸园区和养老区假设内存满了,OOM,堆内存不够JKD8以后, 永久存储区改了名字(元空间);新生区:类:诞生和成长的地方,甚至死亡;伊甸园:所有的对象都是在伊甸园区 new出来幸存区(0,1)经过研究,99%

2020-12-23 14:29:29 224

原创 GC常用算法

JVM在进行GC时,并不是对这三个区域统-一回收。 大部分时候,回收都是新生代~●新生代●幸幸区(form, to)●老年区GC两种类:轻GC (普通的GC), 重GC (全局GC)幸存区的from和to是动态变化的,谁空谁是toGC常用算法引用计数器算法:原理:此对象有一个引用,则+1;删除一个引用,则-1。只用收集计数为0的对象。缺点:无法处理循环引用的问题。如:对象A和B分别有字段b、a,令A.b=B和B.a=A,除此之外这2个对象再无任何引用,那实际上这2个对象已经不可能再被.

2020-12-23 14:27:10 183

原创 JVM运行时栈

栈内存:主管程序的运行,声明周期和线程同步程序结束,栈内存也就释放了对于栈来说,不存在垃圾回收问题,一旦线程结束,栈就over栈:8大基本类型 + 对象引用 + 实例的方法1.局部变量表局部变量表是一组变量值存储空间,用于存放方法参数和方法内部定义的局部变量。方法 Code 属性的 max_locals 数据项确定了该方法所需要分配的最大局部变量表的容量。局部变量不存在“准备”阶段,如果一个局部变量定义了但没有赋初始值是没法使用的。赋 null 值的操作在经过虚拟机 JIT 编译器优化之后.

2020-12-23 14:25:32 114

原创 JVM方法区

Method Area 方法区方法区是被所有线程共享,所有字段和方法字节码,以及一些特殊方法,如构造函数,接口代码也在此定义,简单说,所有定义的方法的信息都保存在该区域,该区域属于共享空间;静态变量,常量,类信息(构造方法,接口定义),运行时的常量池存在方法区中,但是实例变量存在堆内存中,和方法区无关。Class对象是存放在堆区的,不是方法区!这点很多人容易犯错。类的元数据(元数据并不是类的Class对象!Class对象是加载的最终产品,类的方法代码,变量名,方法名,访问权限,返回值等等都是在方法区的

2020-12-23 14:24:03 120

原创 java native关键字

凡事带native关键字,说明java 的作用范围达不到了,回去调用C语言底层库会进入本地 方法栈,调用本地方法本地接口 JNIJNI的作用:扩展java 的使用,融合不同的编程语言为java所用, 最初想融合c和c++.它在内存中专门开辟了一块标记区域:Native Method Stack,登记native方法在最终执行的时候加载本地方法库中的方法通过JNI目前该方法使用越来越少了,除非与硬件有关的应用...

2020-12-23 14:22:17 78

原创 JVM类加载器与双亲委派机制

类是模板,对象是具体的,每new处理一个对象,jvm会给新对象分配一个地址空间1.虚拟机自带的加载器2.启动类(根) 加载器3.扩展类加载器4.应用程序加载器类加载器的类别BootstrapClassLoader(启动类加载器)c++编写,加载java核心库 java.*,构造ExtClassLoader和AppClassLoader。由于引导类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所以不允许直接通过引用进行操作ExtClassLoader (标准扩展类加.

2020-12-23 14:21:07 10625

原创 JVM学习总结

1.JVM简略图2.类加载器:类是模板,对象是具体的,每new处理一个对象,jvm会给新对象分配一个地址空间1.虚拟机自带的加载器2.启动类(根) 加载器3.扩展类加载器4.应用程序加载器类加载器的类别BootstrapClassLoader(启动类加载器)c++编写,加载java核心库 java.*,构造ExtClassLoader和AppClassLoader。由于引导类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所以不允许直接通过引用进行操作Ex

2020-12-23 14:06:19 10827

转载 Ubuntu上使用不了yum命令解决方案

1.安装yumapt-get install yum2.配置yum源由于是Ubuntu没有yum源,所以要想使用yum安装软件必须要配置yum安装源。在/etc/yum/repos.d/目录下创建两个文件,fedora-163.repo和fedora-updates-163.repo。分别复制以下配置信息保存即可。推荐使用vim编辑器。在终端使用:vi fedora-163.repo进入第一个文件,然后:在命令模式下按下键盘上的a进入插入模式;粘贴下面两个文件内容;按下ESC键;再输入 :

2020-12-18 20:26:34 8724 5

原创 Nacos配置中心

**一、配置中心介绍**1、Spring Cloud ConfigSpring Cloud Config 为分布式系统的外部配置提供了服务端和客户端的支持方案。在配置的服务端您可以在所有环境中为应用程序管理外部属性的中心位置。客户端和服务端概念上的Spring Environment 和 PropertySource 抽象保持同步, 它们非常适合Spring应用程序,但是可以与任何语言中运行的应用程序一起使用。当应用程序在部署管道中从一个开发到测试直至进入生产时,您可以管理这些环境之间的配置,并确保

2020-12-18 16:55:17 24123 1

原创 SpringBoot中使用@Scheduled注解创建定时任务

使用SpringBoot创建定时任务非常简单,目前主要有以下三种创建方式:一、基于注解(@Scheduled)二、基于接口(SchedulingConfigurer)三、基于注解设定多线程定时任务下面主要说一下最简单的基于注解@Scheduled的实现方式基于注解@Scheduled默认为单线程,开启多个任务时,任务的执行时机会受上一个任务执行时间的影响。1.在启动类上添加注解:@EnableScheduling 意思是开启定时任务。2.创建定时任务类,并在要执行的方法上加上 @Schedu

2020-12-16 14:41:39 11231 1

空空如也

空空如也

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

TA关注的人

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