- 博客(49)
- 收藏
- 关注
原创 java对象内存布局及大小
输出结果如下图,表示当前虚拟机的配置信息。每个人的机器可能配置不太一样,我这个不是绝对的。最后的4个字节就是自动对齐padding的,凑够32字节,正好是8的倍数。classPointer 不开启压缩,oops也不开启压缩。classPointer不开启压缩,oops开启压缩。classPointer开启压缩,oops不开启压缩。总大小32字节,无padding。实际上都没有压缩,总大小48字节。结果同实操三一样,48字节.2.构建几个简单的基础类。
2022-10-12 18:19:50 616 1
原创 jdk1.8安装
Oracle官网下载linux指定版本的jdk压缩包,如1.8版本,前提要有Oracle官网的账号,没有的话,申请创建后即可。xftp上传到虚拟机指定目录下(根据自己喜好定义目录),我放在了/usr/local/java目录下。至此,jdk8安装配置完毕。
2022-09-24 14:27:59 869
原创 深入理解JVM(三)
4、设置最小堆和最大堆:-Xmx和-Xms稳定的堆大小堆垃圾回收是有利的,获得一个稳定的堆大小的方法是设置-Xms和-Xmx的值一样,即最大堆和最小堆一样,如果这样子设置,系统在运行时堆大小理论上是恒定的,稳定的堆空间可以减少GC次数,因此,很多服务端都会将这两个参数设置为一样的数值。3、一般情况下,年轻对象放在eden区,当第一次GC后,如果对象还存活,放到survivor区,此后,每GC一次,年龄增加1,当对象的年龄达到阈值,就被放到tenured老年区。如果想让对象留在年轻代,可以设置比较大的阈值。
2022-09-18 15:37:34 252
原创 Java中的四种引用
相关概念java有4种引用,可分为强引用(NormalReference)、软引用(SoftReference)、弱引用(WeakReference)、虚引用(phantomReference)gc:java的垃圾回收机制首先明白什么是一个引用?Object o = new Object()这就是一个引用了,一个变量指向new出来的对象,这个变量就叫一个引用,引用这个东西,在java里面分4种,普通的引用比如Object o = new Object(),这个就叫强引用,强引用有什么特点呢?我们来看下面
2022-08-21 17:31:36 2119 1
原创 线程的状态及状态切换
线程的六种状态1.NEW 线程刚刚创建,还没有启动2.RUNNABLE 可运行状态,由线程调度器安排执行,包括READY和RUNNING两种状态3,WAITINT 等待被唤醒4,TIMED WAITING 等待一段时间后自动唤醒5,BLOCKED 被阻塞,正在等待锁6, TERMINATED 线程结束线程状态之间的切换...
2022-07-02 17:19:28 111
原创 Spring 注解驱动开发(七)—AOP简单使用
AOP(动态代理):指在程序运行期间,动态的将某段代码切入到指定方法指定位置进行运行的编程方式。1.导入AOP模块,Spring-aspects,如添加对应的maven依赖2.定义个业务逻辑类(Calculator.java),在业务逻辑运行的时候将日志打印(方法运行前、运行后、返回值、抛异常)。3.定义一个切面类(LogAspectj):切面类里面的方法需要动态感知Calculator.div运行到哪里然后执行。通知方法:前置通知(@Before):logStart.在目标方法div运行之前执行
2022-01-13 16:28:19 161 1
原创 Spring注解驱动开发(六)—动态切换环境
@profile以数据源为例,项目开发部署过程中需要切换环境,就需要调整对应的配置,此时@Profile注解就显得越发强大.首先是主配置类package com.my.config;import com.mchange.v2.c3p0.ComboPooledDataSource;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.EmbeddedValueRes
2022-01-12 20:10:14 274
原创 Spring 注解驱动开发(五)—自动装配
自动装配:Spring 利用依赖注入(DI),完成对IOC容器中各个组件的依赖关系赋值相关注解:@Autowired @Resource @Inject例子如下,还有其他的组件可了解这样applicationContext就被注入到Red实例中了...
2022-01-12 18:44:45 149
原创 Spring 注解驱动开发(四)
属性赋值1.@Value 注解2,使用@PropertySource注解指定配置文件路径,配合@Value注解给属性赋值
2022-01-12 17:37:22 126
原创 Spring注解驱动开发(三)—Bean的生命周期
Bean的生命周期 (Bean创建——初始化——销毁 )容器管理bean的生命周期可以自定义初始化和销毁的方法;容器在bean进行到当前生命周期的时候调用我们自定义的初始化和销毁的方法构造(对象创建): 单实例:在容器启动的时候创建对象(调用对象的构造方法) 多实例:容器启动的时候不创建对象,而是在获取的时候先创建对象供使用初始化: 单实例:对象创建完成并且属性赋值完成,调用初始化的方法 多实例:对象不会创建和初始化,获取之..
2022-01-12 17:21:17 203
原创 Spring 注解驱动开发(二)
1.@Conditional 按照条件注册bean主配置类实现了Condition接口的两个判断条件类2.@Import给容器快速导入组件方式一:快速向ioc容器中快速导入组件,组件id默认为全类名(包名+类名),前者直接导入Color组件,格式如@Import(Color.class)方式二:自定义快速导入组件,通过实现ImportSelector接口中的方法以String[]方式返回要导入的组件的全类名,格式如 @import({MyImportSelector.class})
2022-01-12 10:45:29 56
原创 Spring 注解驱动开发(一)
大纲总览一.注解开发,使用 配置类+注解 的方式取代原始的配置文件beans.xml中的一系列配置。配置文件样例配置类取代配置文件@Configuration //告诉spring这是一个配置类,配置类作用相当于原来的配置文件组件注册@Bean(“person1”) //给容器注册一个Bean(即组件),默认是单实例的;类型为返回值的类型;默认用方法名作为该组件id,如果不用默认的方法名作为id,可以在@bean注解上value属性指定组件id,如指定id为person1
2022-01-11 18:40:23 237
原创 Cloud组件 网关Zuul
网关Starter阿里云镜像https://start.aliyun.com/概念服务治理,服务注册发现,服务调用,熔断。已经学完。微服务基本模块已经有了,也可以做微服务了。但完成一个复杂的业务,可能需要多个微服务合作来完成,比如下单,需要用户服务,支付服务,地图服务,订单服务。一般是我们对外服务的窗口,进行服务内外隔离。一般微服务都在内网,不做安全验证,就好像:很多明星,可以独立开演唱会(独立提供服务)。也可以去春晚(微服务群提供服务)。但一台春晚就不能让 观众一个一个调用了。观众要调用,需要
2021-11-12 15:39:59 79
原创 Cloud组件 Hystrix
Hystrixspring cloud 用的是 hystrix,是一个容错组件。Hystrix实现了 超时机制和断路器模式。Hystrix是Netflix开源的一个类库,用于隔离远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性与容错性。主要有以下几点功能:1.为系统提供保护机制。在依赖的服务出现高延迟或失败时,为系统提供保护和控制。2.防止雪崩。3.包裹请求:使用HystrixCommand(或HystrixObservableCommand)包裹对依赖的调用逻辑,每个命令在独立线
2021-11-11 15:45:43 197
原创 Cloud组件 声明式服务调用OpenFeign
OpenFeign*OpenFeign是Netflix 开发的声明式、模板化的HTTP请求客户端。可以更加便捷、优雅地调用http api。*OpenFeign会根据带有注解的函数信息构建出网络请求的模板,在发送网络请求之前,OpenFeign会将函数的参数值设置到这些请求模板中。*feign主要是构建微服务消费端。只要使用OpenFeign提供的注解修饰定义网络请求的接口类,就可以使用该接口的实例发送RESTful的网络请求。还可以集成Ribbon和Hystrix,提供负载均衡和断路器。Feign
2021-11-10 16:51:12 401
原创 Cloud 组件负载均衡Ribbon
ribbon两种负载均衡 当系统面临大量的用户访问,负载过高的时候,通常会增加服务器数量来进行横向扩展(集群),多个服务器的负载需要均衡,以免出现服务器负载不均衡,部分服务器负载较大,部分服务器负载较小的情况。通过负载均衡,使得集群中服务器的负载保持在稳定高效的状态,从而提高整个系统的处理能力。软件负载均衡:nginx,lvs硬件负载均衡:F5我们只关注软件负载均衡,第一层可以用DNS,配置多个A记录,让DNS做第一层分发。第二层用比较流行的是反向代理,核心原理:代理根据一定规则,将h
2021-11-09 17:48:07 232
原创 Cloud 服务间调用RestTemplate
服务间调用 微服务中,很多服务系统都在独立的进程中运行,通过各个服务系统之间的协作来实现一个大项目的所有业务功能。服务系统间 使用多种跨进程的方式进行通信协作,而RESTful风格的网络请求是最为常见的交互方式之一。 思考:如果让我们写服务调用如何写。1.硬编码。不好。ip域名写在代码中。目的:找到服务。2.根据服务名,找相应的ip。目的:这样ip切换或者随便变化,对调用方没有影响。Map<服务名,服务列表> map;3.加上负载均衡。目的:高可用。spring cloud提
2021-11-09 17:00:02 125
原创 Cloud 组件Actuator监控应用
开启监控<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId></dependency>默认端点Spring Boot 2.0 的Actuator只暴露了health和info端点,提供的监控信息无法满足我们的需求在1.x中有n多可供我们监控的节点,官方
2021-11-08 18:33:45 128
原创 Cloud 组件Eureka
Eureka 介绍1.背景:在传统应用中,组件之间的调用,通过有规范的约束的接口来实现,从而实现不同模块间良好的协作。但是被拆分成微服务后,每个微服务实例的网络地址都可能动态变化,数量也会变化,使得原来硬编码的地址失去了作用。需要一个中心化的组件来进行服务的登记和管理。2.概念:实现服务治理,即管理所有的服务信息和状态。3.注册中心好处:不用关心有多少提供方。4.注册中心有哪些:Eureka,Nacos,Consul,Zookeeper等。5.服务注册与发现包括两部分,一个是服务器端,另一个是客户
2021-11-08 18:32:44 528
转载 JWT入门
JSON Web Token 入门JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,本文介绍它的原理和用法。一、跨域认证的问题互联网服务离不开用户认证。一般流程是下面这样。1、用户向服务器发送用户名和密码。2、服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等。3、服务器向用户返回一个 session_id,写入用户的 Cookie。4、用户随后的每一次请求,都会通过 Cookie,将 session_id 传回服务器。
2021-09-27 16:08:06 107
原创 springAOP简单使用
基于配置文件的切面配置,废话不多说,上代码涉及到的配置文件aop.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework..
2021-09-23 15:17:30 111
原创 RocketMQ的编译安装
RocketMQ 01主要内容:编译安装HelloWorld官方网站http://rocketmq.apache.orgGitHubhttps://github.com/apache/rocketmqQuick StartLinux下使用Maven编译源码安装Rocketmq4.6+需要jdk1.8环境编译和运行各版本要求1.从GitHub上下载源码并上传到服务器2.在Linux上安装Maven下载Mavenwget https://mirrors.tuna.tsingh
2021-07-16 16:44:16 1078 1
原创 图解B+树添加和删除数据
一、了解B+树中的一些相关概念1、innodb存储引擎中的最小存储单元(页page,16k),对比磁盘中的扇区(512k)和块(4K)2、根节点(可以是叶子节点也可以是非叶子节点),非叶子节点(索引节点,内部节点,存储key和指针),叶子节点(存数据)3、b+树的高度(3-4层),阶(每个节点最多可以有多少个关键字key)二、直接上图...
2021-06-22 18:23:52 350
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人