自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 资源 (1)
  • 收藏
  • 关注

原创 为什么创建日志对象logger一定要用private static final修饰

当创建日志对象的时候,大家都习惯用private static final修饰:private static final Logger logger= LoggerFactory.getLogger(xxxx.class);为啥呢?说一下自己的理解:getLogger()方法的参数应是当前类的字节码对象,在打印日志信息时,才会显示日志信息是由当前类打印1.private 当前日志对象logger只能在本类中使用,防止被其他类调用。2.static 将日志对象定义成静态,在类被加载时,该日志对象

2021-02-05 16:35:45 1964 1

原创 Java日志工具logback工具的使用

1.简介logback分成三个模块:logback-core,logback- classic,logback-access。logback-core提供了logBack的核心功能,是另外两个组件的基础;logback-classic模块实现了SLF4J API;logback-access模块与Servlet容器集成提供Http来访问日志的功能。2.使用首先,需要在应用的pom.xml中添加依赖:<!--slf4j --><dependency> <g

2020-11-27 16:07:51 221

原创 一篇文章学会Java8新特性-::方法引用符

1.::操作符作用::称为方法引用符,其作用是:引用某类中的现有方法作为函数式接口中抽象方法的重写,是代码更加更加简洁。2.::操作符的用法:: 操作符可以用来引用类的构造方法,对象方法,静态方法。创建一个Something 类class Something { // 构造方法 Something() {} Something(String something) { System.out.println(something); } // 静态方法

2020-11-13 17:10:31 190

原创 一篇文章学会Java8新特性-Lamda表达式

1.Lamda表达式的作用一句话:代替匿名内部类,使代码变的更加简洁,被匿名内部类实现的接口中有且仅有一个抽象方法2.Lamda表达式的基本语法->左边是参数,右边是表达式(parameters) -> expression或(parameters) ->{ statements; }注:参数类型可写可省略,当省略时,编译器自动识别参数类型。当只有一个参数时,参数可不加括号,当没有参数或者多个参数时需要加括号当只有一个表达式时,可不加花括号3.举个例子使用匿名

2020-10-30 17:53:36 179

原创 Apollo配置中心架构原理

Apollo配置中心架构图如下:其github地址:https://github.com/ctripcorp/apolloApollo配置中心分为了三个应用和两个数据库,三个应用分别是PortalService、AdminService、ConfigService;另个数据库分别是PortalDB、ConfigDB1.PortalService是管理端应用,用户可以通过该应用的前端界面管理各个环境集群中的配置信息,该界面中的数据从PortalDB数据库中读取2.AdminService和Confi

2020-10-23 11:19:03 983

原创 Docker容器技术的相关概念及Dockerfile的编写

1.什么是虚拟化技术?虚拟化是一个广义的术语,在计算机方面通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU 并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。2.什么是服务器虚拟化?服务器虚拟化是将服务器物理资源抽象成逻辑资源,让一台服务器变成几台甚至上百台相互隔离的虚拟服务器,其核心目的是为了在一台主机上同时运行多个系统或应用,

2020-10-17 14:35:39 199

原创 Java动态代理的实现

1.为什么要使用动态代理我们先创建一个接口public interface ICalc { int add(int a, int b); int sub(int a, int b);}创建接口的实现类,并在方法里加入一些日志public class ICalcImpl implements ICalc { @Override public int add(int a, int b) { System.out.println("这是一个加法运算");

2020-09-05 17:41:43 153

原创 HashSet实现原理

HashSet和TreeSet都实现了Set接口。他们之间的区别是HashSet不能保证元素的顺序,TreeSet中的元素可以按照某个顺序排列。他们的元素都不能重复。public static void main(String[] args) { Set<String> set = new HashSet<String>(); set.add("张三"); set.add("李四"); set.add("王五"); System.out.println(set);}

2020-08-30 20:25:26 330

原创 Java单例模式的五种写法

单例模式:一个类只能有一个实例,并且提供一个全局可以访问的入口,好处:节省内存,节省计算,如当一个类才初始化的时候做了很多操作(读取数据库数据,而且数据库数据不变),那全局用同一个实例就行,每次都创建一个新的实例属于浪费资源单例模式的适用场景:1、无状态工具类,如日志工具,字符串工具2、全局信息类,如全局计数,环境变量第一种写法饿汉式:在类加载时就创建了实例,而没有使用懒加载的方式,如果自始至终都没有使用这个实例,就造成了内存的浪费public class Singleton {

2020-08-23 21:15:57 652

原创 多线程中的可见性问题

1.缓存导致的可见性问题可见性问题是指一个线程修改了某一个共享变量的值时,其他线程是否能够立即知道这个修改。对于串行程序来说,可见性问题是不存在的,因为你在任何一个操作步骤中修改了某个变量,在后续的步骤中读取这个变量的值时,读取的一定是修改后的新值。在并行程序中,如果一个线程修改了某一个全局变量,那么其他线程未必可以马上知道这个改动。多核时代,每颗 CPU 都有自己的缓存,这时 CPU 缓存与内存的数据一致性就没那么容易解决了,一个CPU缓存中的变量对另外一个CPU是不可见的如上图中,两个线程在

2020-08-16 21:34:38 3779

原创 Eureka注册中心集群unavailable-replicas(不可用分片)问题

在本地搭建Eureka注册中心集群相互注册时,有时会出现eureka节点不可用其中一个EurekaServer的配置文件application.yml如下:server: port: 10001spring: application: name: eureka-servereureka: instance: # hostname: eureka01 prefer-ip-address: true client: service-url: d

2020-08-05 18:23:12 913

原创 如何在IntelliJ IDEA中使用git

0.前言本文主要讲述在IntelliJ IDEA中使用git的方法,git的原理、命令行使用及可视化图形工具的使用请听下回分解。首先安装IntelliJ IDEA2018.2以及git 2.28.01.在IDEA中配置git在File–>Settings–>Version Control中找到Git,或者直接搜索Git,将Path设置为git的安装路径点击测试按钮,出现以下提示,则代表配置成功。2.将工程添加至git新建一个java工程,名为git_demo,在菜单中选择vcs–

2020-08-02 21:43:48 6466

redis4.0.6.tar.gz和redis5.0.4.tar.gz

redis4.0.6.tar.gz和redis5.0.4.tar.gz安装包

2021-01-22

空空如也

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

TA关注的人

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