![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java-review
文章平均质量分 76
review
zjsheng_2018
这个作者很懒,什么都没留下…
展开
-
12-Kafka
生产者数据传输导致的数据丢失主常见情况是生产者发送消息给 Kafka ,由于网络等原因导致消息 丢失,对于这种情况也是通过在 producer 端设置 ack = all 来处理,这个参数是要求 leader 接收到 消息后,需要等到所有的 follower 都同步到了消息之后,才认为本次写成功了。消费者引起消息丢失的主要原因就是消息还未处理完 Kafka 会自动提交了 offset ,那么只要关闭自 动提交 offset ,消费者在处理完之后手动提交 offset ,就可以保证消息不会丢失。原创 2023-06-24 14:59:10 · 30 阅读 · 1 评论 -
11-SpringCloud
假设服务A调用服务B,服务B调用服务c,某一时间服务C响应时间过长,随着时间的增长,对服务C的调用也越来越多,然后服务C崩溃了,但是链路调用还在,对服务B的调用也在持续增多,然后服务B崩溃,随之A也崩溃,导致雪崩效应。Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,譬如5秒内20次调用失败,就会启动熔断机制。服务降级一般是指在服务器压力剧增的时候,对一些服务和页面有策略的不处理或者用一种简单的方式进行处理,从而释放服务器资源的资源以保证核心业务的正常高效运行。区分那些服务为核心?原创 2023-06-24 14:55:28 · 38 阅读 · 1 评论 -
8-Mybatis
habernate属于全自动ORM映射工具,使用habernate查询关联对象或者关联集合对象时,可以根据对象 关系模型直接获取,所以它是全自动的。#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自动添加单引号。${}使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;相同点:都是对jdbc的封装,都是持久层的框架,都用于dao层的开发。mapper接口方法的参数是实体类类型的参数。a>以@Param注解的值为键,以参数为值。原创 2023-06-23 15:56:24 · 57 阅读 · 0 评论 -
9-rabbitMQ
Producer先连接到Broker,建立连接Connection,开启一个信道(Channel)。如果找到,将消息存入对应的队列,如果没有找到,会根据生产者的配置丢弃或者退回给生产者。Producer发送消息到Broker,其中包含路由键、交换器等信息。Producer通过路由键将交换器和队列绑定起来。Producer声明一个交换器并设置好相关属性。Producer声明一个队列并设置好相关属性。相应的交换器根据接收到的路由键查找匹配的队列。简单模式和工作模式,一条消息只能被消费一次。原创 2023-06-23 15:55:00 · 30 阅读 · 1 评论 -
7-Spring
Spring的核心就是提供了一个IoC容器。容器创建对象,将它们装配在一起,配置并管理它们的整个生命周期。容器使用依赖注入的方式来管理组成应用程序的组件。容器通过读取提供的配置元数据来接收对象进行实例化、配置和组装的命令。该元数据可以通过xml,注解,java代码提供。你不必创建对象,但必须描述他们如何创建。你不是在代码中直接将组件和服务连接在一起,而是描述配置文件中哪些组件需要哪些服务。有IOC容器将他们装配在一起。Spring 框架允许 setter注入和构造函数注入。原创 2023-06-23 15:55:49 · 51 阅读 · 1 评论 -
6-redis
锁在程序中的作用就是同步工具,保证共享资源在同一时刻只能被一个线程访问,java中的锁我们都很 熟悉了,像synchronized、lock都是我们经常使用的,但是java的锁只能保证单机的时候有效,分布式 集群环境就无能为力了,这个时候我们就需要用到分布式锁。分布式锁,顾名思义,就是分布式项目开发中用到的锁,可以用来控制分布式系统之间同步访问共享资源。互斥性高可用性防止锁超时独占性。原创 2023-06-23 15:52:22 · 47 阅读 · 1 评论 -
10-Elasticsearch
首先客户端向集群发出索引文档的请求,它会选择任何一个节点,这个节点当接收到请求后会根据路由算法找到应该放的那个主分片的位置,从而索引数据,之后为了保证数据的完整性,它会将它的副本数据进行同步,同步完成后客户端就可以进行访问了。如果对某个节点的投票数达到一定的值**(可以成为 master 节点数 n/2+1)并且该节点自己也选举自己**,那这个节点就是 master。master 节点的职责主要包括集群、节点和索引的管理,不负责文档级别的管理;传统的检索是通过文章,逐个遍历到关键词的位置。原创 2023-06-23 15:57:39 · 50 阅读 · 1 评论 -
5-Mysql
原子性一致性隔离性持续性。原创 2023-06-23 15:53:01 · 31 阅读 · 1 评论 -
4-java并发
java内存模型在Java虚拟机中,变量的值保存在主内存中,但是,当线程访问变量时,它会先获取一个副本,并保存在自己的工作内存中。如果线程修改了变量的值,虚拟机会在某个时刻把修改后的值回写到主内存,但是,这个时间是不确定的!volatile每次访问变量时,总是获取主内存的最新值;每次修改变量后,立刻回写到主内存。守护线程是指为其他线程服务的线程。在JVM中,所有非守护线程都执行完毕后,无论有没有守护线程,虚拟机都会自动退出。守护线程不能持有需要关闭的资源(如打开文件等)。可重入锁。原创 2023-06-23 15:50:20 · 77 阅读 · 1 评论 -
3-jvm
当一个对象到GC Roots没有任何引用链相连(用图论的话来说,就是从GC Roots到这个对象不可达)时,则说明此对象是没有被使用的(需要被回收)线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(local memory),本地内存中存储了该线程以读/写共享变量的副本。JVM堆分为新生代和老年代,大概比例的1:2,其中新生代又分为1个eden区和2个survivor区,大概比例是8:1:1。3.存活下来的对象进入到survivor区域,年龄+1。原创 2023-06-23 15:51:44 · 31 阅读 · 1 评论 -
2-java集合
如果内存空间很多而又对时间效率要求很高,可以降低负载因子loadfactor的值。相反,如果内存空间紧张而对时间效率要求不高,可以增加负载因子loadfactor的值,这个值可以大于1。原创 2023-06-23 15:50:41 · 34 阅读 · 1 评论 -
1-java基础
不可变对象指对象一旦被创建,状态就不能再改变,任何修改都会创建一个新的对象,如String、Integer及其它包装类,不可变对象最大的好处是线程安全java中常量池的概念主要有3个全局字符串常量池 , class文件常量池 , 运行时常量池定义jvm为了提升性能和减少内存开销,避免字符的重复创建,其维护了一块特殊的内存空间,即字符串池,当需要使用字符串时,先去字符串池中查看该字符串是否已经存在,如果存在,则可以直接使用, 如果不存在,初始化,并将该字符串放入字符串常量池中。原创 2023-06-23 15:50:11 · 39 阅读 · 1 评论