Kafka

Java多线程访问Synchronized同步方法的八种使用场景

 ̄綄美尐妖づ 提交于 2020-12-22 01:50:58
简介 本文将介绍7种同步方法的访问场景,我们来看看这七种情况下,多线程访问同步方法是否还是线程安全的。这些场景是多线程编程中经常遇到的,而且也是面试时高频被问到的问题,所以不管是理论还是实践,这些都是多线程场景必须要掌握的场景。 八种使用场景: 接下来,我们来通过代码实现,分别判断以下场景是不是线程安全的,以及原因是什么。 两个线程同时访问同一个对象的同步方法 两个线程同时访问两个对象的同步方法 两个线程同时访问(一个或两个)对象的静态同步方法 两个线程分别同时访问(一个或两个)对象的同步方法和非同步方法 两个线程访问同一个对象中的同步方法,同步方法又调用一个非同步方法 两个线程同时访问同一个对象的不同的同步方法 两个线程分别同时访问静态synchronized和非静态synchronized方法 同步方法抛出异常后,JVM会自动释放锁的情况 场景一:两个线程同时访问同一个对象的同步方法 分析:这种情况是经典的对象锁中的方法锁,两个线程争夺同一个对象锁,所以会相互等待,是线程安全的。 两个线程同时访问同一个对象的同步方法,是线程安全的。 1 我们在前文中已经讲过了。代码和详细讲解在《Java中synchronized实现对象锁的两种方式及原理解析》中的第二部分《方法锁》中,在此就不再重述了。 场景二:两个线程同时访问两个对象的同步方法 这种场景就是对象锁失效的场景

谈谈DDD本质

99封情书 提交于 2020-12-21 20:33:29
这是Bella酱的第 89 期分享 作者 | SnoWalker 来源 | 分布式朝闻道 学习DDD的时候,作为开发,我们更关心它在技术层面的东西,尤其体现在DDD的分包方式、编码技巧等方面。 自然的,我们不禁发问,用了DDD的分包,就是实践落地了DDD了么? 不卖关子,直接说答案,并不是。 用了DDD的分包,只能说满足了DDD的"形",并没有抓住DDD的"神"。DDD的神是什么,归根到底还是 面向对象,领域建模 。所谓的各种分包方式本质上还是为了满足DDD面向对象的本质,方便开发者进行代码编写而提供的一种"战术设计" 工具 。 要深入讨论这个问题,我们需要花一点时间来学习讨论一下DDD中常见的几种分包。 DDD分包概述 基于DDD的分包主要有两大流派:分层架构以及六边形架构。 分层架构以四层架构为主,基于四层架构又诞生出衍生的五层架构、六层架构等等(限于篇幅以及讨论重点,本文中我们只讨论四层架构)。 六边形架构出自 Robert C Martin(没错,就是传说中的鲍勃大叔)提出的整洁架构,后来者不断探索,又衍生出了洋葱架构。 这个过程可谓是百家争鸣。实际开发中,最为我们熟知的当属四层架构与六边形架构了,其余的各种架构都是基于这两种架构方式的变体。 四层分层架构 四层架构的分层如下图: 从上往下依次为: |- userinterface 用户界面层/表示层 |-

总结一下2020年读了几本书

跟風遠走 提交于 2020-12-21 11:39:30
一、专业类书籍(10本) 纸质版 1、高可用可伸缩微服务架构 2、云原生Java 3、SpringCloud微服务架构实战 4、代码整洁之道(未完成) 5、深入理解java虚拟机 电子版 1、kafka技术内幕 2、dubbo手册 3、高性能MySQL 4、redis原理 5、深入理解SpringCloud与微服务构建 二、非专业类书籍(30) 金融理财 1、富爸爸穷爸爸 2、小狗钱钱 3、财富自由之路 4、不可撼动的财务自由 5、理财就是里生活 6、一本书读懂财务报表 心理学 1、人际交往心理学 2、当你的才华还撑不起你的梦想时 3、你的努力,要配得上你的野心 4、超越原生家庭 5、会说话就是情商高 6、亲密关系 7、非暴力沟通 8、控制愤怒 职场励志 1、金字塔原理 2、活法 3、成法 4、定位 5、格局 6、断舍离 7、你要么出众,要么出局 8、哈佛效率课:高效能人士的8个习惯 9、结构思考力 10、像TED一样演讲2:沟通升级 其他 1、三十岁,一切刚刚开始 2、你没有退路,才有出路 3、刻意练习 4、胡雪岩谋略大全 5、曾国藩谋略大全 6、墨菲定律 三、总结 2020年保守估计,总计40本。因为还有一些在书店或图书馆看完后记不起名的其他书籍,从大类来看: 计算机专业类、金融理财类、心理学、人物传记励志类 。2021年计划增加: 商业类、互联网类、销售类、法律类等 。 四

安装kafka 集群 步骤

醉酒当歌 提交于 2020-12-19 12:36:00
1.下载 http://mirror.bit.edu.cn/apache/kafka/2.1.0/kafka_2.11-2.1.0.tgz 2.解压 tar -zxvf kafka_2.11-2.1.0.tgz 3.创建两份配置文件 cd conf cp server.properties server1.properties cp server.properties server2.properties 4.创建两个log目录 cd logs mkdir log1 log2 5.编辑配置文件 编辑 server1.properties,server2.properties 主要修改点 #broker id 在集群中必须唯一 broker.id=1 #监听端口 #listeners=PLAINTEXT://:9001 host.name=192.168.1.1 port=9001 #topic 分区数量 num.partitions=5 # 数据存储目录 log.dirs=/home/kafka/kafka_2.12-2.1.0/logs/log1 # zookpeer 配置 zookeeper.connect=localhost:2181,localhost:2182,localhost:2183 两个文件不同的地方 broker.id,log.dirs ,host.name

安装Kafka的步骤 启动Kadfka 关闭Kafka

心不动则不痛 提交于 2020-12-19 11:24:44
安装Kafka 1 )解压安装包 [ yanxiaodai@master packge ] $ tar -zxvf kafka_2.11-0.11.0.0.tgz -C /home/yanxiaodai/module 2 )修改解压后的文件名称 [ yanxiaodai@master module ] $ mv kafka_2.11-0.11.0.0.tgz kafka 3 )在kafka目录下创建logs文件 [ yanxiaodai@master kafka ] mkdir logs 4 )修改配置文件 [ yanxiaodai@master kafka ] cd config/ [ yanxiaodai@master config ] sudo vi server.properties 修改以下的文件 #broker的全局唯一编号,不能重复 broker . id = 0 #删除topic功能使能 delete . topic . enable = true #kafka运行日志存放的路径 log . dirs = / home / yanxiaodai / module / kafka / logs #配置连接Zookeeper集群地址 zookeeper . connect = master : 2181 , service01 : 2181 , service02 :

从零入门 Serverless | 架构的演进

北慕城南 提交于 2020-12-18 17:33:49
作者 | 许晓斌 阿里云高级技术专家 传统单体应用架构 十多年前主流的应用架构都是单体应用,部署形式就是一台服务器加一个数据库,在这种架构下,运维人员会小心翼翼地维护这台服务器,以保证服务的可用性。 ▲ 单体架构 单体应用架构面临的问题 随着业务的增长,这种最简单的单体应用架构很快就面临两个问题。首先,这里只有一台服务器,如果这台服务器出现故障,例如硬件损坏,那么整个服务就会不可用;其次,业务量变大之后,一台服务器的资源很快会无法承载所有流量。 解决这两个问题最直接的方法就是在流量入口加一个负载均衡器,使单体应用同时部署到多台服务器上,这样服务器的单点问题就解决了,与此同时,这个单体应用也具备了水平伸缩的能力。 ▲ 单体架构(水平伸缩) 微服务架构 1. 微服务架构演进出通用服务 随着业务的进一步增长,更多的研发人员加入到团队中,共同在单体应用上开发特性。由于单体应用内的代码没有明确的物理边界,大家很快就会遇到各种冲突,需要人工协调,以及大量的 conflict merge 操作,研发效率直线下降。 因此大家开始把单体应用拆分成一个个可以独立开发、独立测试、独立部署的微服务应用,服务和服务之间通过 API 通讯,如 HTTP、GRPC 或者 DUBBO。基于领域驱动设计中 Bounded Context 拆分的微服务架构能够大幅提升中大型团队的研发效率。 2.

大数据集群资源预估规划【适用于面试与工作集群规划】

落爺英雄遲暮 提交于 2020-12-18 14:02:10
问题导读 1.如何判断数据增量? 2.QPS如何计算? 3.存储空间需要考虑哪些因素? 4.内存估算和哪些因素有关? 我们在实际工作,或者面试中,经常会遇到这么一个问题,集群该如何规划,一台机器多少磁盘,多少内存,多少core等。 关于公司集群规模,有的几台,有的几百或有的则几千台,那么这几百几千台机器他们的配置是怎么样的? 这里先说下大概,对于大多数公司来说,集群有的10来台,而对于电信行业,一个地方的可能有几百台,对于一线互联网集群规模就比较大一些,上千台是比较常见的。 那么如果我们要搭建大数据平台,集群该如何规划?这是我们初步搭建集群的时候,首次遇到的问题。 对于需要多少台机器,其实这个问题,不能一刀切的回答,具体情况具体分析。虽然一开始我们不知道多少台机器,但是我们可以知道影响的关键因素? 那就是数据的增量是多少? 数据的增量,这里我们来说下数据增量: 其实数据的增量不同的公司,也是不一样的,有的公司数据增量也就是几个G,而有的公司数据增量1T以上,比如物联网大数据。除了数据增量,还有其它影响因素,比如使用的计算组件,使用MapReduce和Spark,Flink在内存的使用上,肯定是有区别的。再比如QPS也影响着系统的资源分配。 除了影响因素,那么我们预估集群包含哪些步骤? 1.判断计算数据增量大小 如何计算数据量得大小,这个其实很多企业已有相关得系统

1+X云计算平台运维与开发认证(中级)样卷B-实操过程

ぃ、小莉子 提交于 2020-12-18 13:12:55
个人博客地址: http://www.mwbdtth.club/ 选择题可能有些题目有点小问题,请酌情参考,主要还是以实操为主 单选题(200分): 1.下面关于软件项目开发过程,叙述错误的是?(10分) A、敏捷开发从需求、计划、开发、测试,直到项目结束,整个周期一直在迭代中 B、敏捷开发中开发、测试、发布又可以单独迭代多次 C、瀑布式模型分为计划、分析、设计、程序开发、测试、修改和整合,一个阶段结束,另一个阶段接着开始 D、瀑布式模型着重迭代式开发,分析、设计、开发、测试和发布(正确答案) 2.敏捷开发从需求、计划、开发、测试,直到项目结束,整个周期一直在迭代中,而其中可以单独迭代多次的不包括哪个过程?(10分) A、开发 B、测试 C、计划(正确答案) D、发布 3.以下关于STP协议的描述中,哪项是正确的? (10分) A、STP运行在交换机和网桥设备上 B、STP协议是一个二层链路管理协议 C、STP在选定根网桥,让一些端口进入阻塞工作模式,这些被阻塞端口没有被激活(正确答案) D、STP的主要功能是在保证网络中没有回路的基础上,允许在第二层链路中提供冗余路径 4.以下哪个状态不是RSTP的工作状态? (10分) A、监听状态(正确答案) B、丢弃状态 C、转发状态 D、学习状态 5.在常用的数据库表单管理命令当中,“use 数据库;”名称的作用是?(10分) A

2020这一年总结出来的Java面试题,常频面试题大汇总~

≡放荡痞女 提交于 2020-12-17 21:33:43
面试就是大家身边总是存在各种各样的可能,而自身又具备这样的能力,就忍不住想试一试,尤其是到了年关,是一个好的蓄势并且认真积累的阶段。当然面试套路众多,但对于技术面试来说,主要是考察一个人的技术能力和沟通能力。不同类型的面试官根据自身的理解问的问题也不尽相同,没有规律可循。 “面试造火箭,工作拧螺丝”首先咱得能拧,才有造火箭的可能啊,这一年整理很多面试的高频问点也做了解析,今天在这分享给大家! 博主已将以下这些面试题整理成了一个Java面试手册,是PDF版的。 需要本资料全部面试题的,可以点击这里!!暗号ky! Java语法基础 1.面向对象和面向过程的区别 面向过程 优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗 资源;比如单片机、嵌入式开发、Linux/Unix 等一般采用面向过程开发,性能是 最重要的因素。 缺点: 没有面向对象易维护、易复用、易扩展 面向对象 优点: 易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特 性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护 缺点: 性能比面向过程低 Java 语言有哪些特点 1. 简单易学; 2. 面向对象(封装,继承,多态); 3. 平台无关性( Java 虚拟机实现平台无关性); 4. 可靠性; 5. 安全性; 6. 支持多线程( C++ 语言没有内置的多线程机制

2020最新,100道电商大厂必问面试题:附完整答案

蹲街弑〆低调 提交于 2020-12-17 15:35:06
2020,可谓是招聘面试最难季。不少大厂,如腾讯、字节的招聘名额明显减少,面试门槛却一再拔高,如果不用心准备,很可能就被面试官怼得哑口无言 。今 天不谈其它,就说说我作为面试官面试的那些事儿。 从某电商项目负责人的算起,再到后来的首席架构师,我前前后后面试了至少 300 多位求职者。 不敢说成功入职的每个同事都发展得特别好,但大部分人来说还是很不错的。 过硬的技术功底是最起码的考核要求。 不少来应聘的朋友底子还是有的,但知识面太窄了。 那么对于互联网大厂,尤其是电商行业来说,都会重点考核哪些呢?最近 我将这些年自己常问的考核知识整理了一下 ,不下 100 道 ,其中涵盖了不少大厂必考点、高频点、加薪点,这些也是作为开发人来说日常项目中经常遇到的踩坑点。 为了方便大家,我把这些点做了一个归类,一共分成了 5 大类,分别是: Dubbo,ElasticSearch,JVM,多线程/高并发,消息中间件 。我把关于这些问题的拆解与思考,整理成一个 pdf,限于篇幅,这里就不一一列出了。 需要的同学可以文末扫码领取,希望能从中有所启发、收获。 这里先罗列出近三年部分技术考核点,具体有: ## 1 Dubbo 1.1 服务调用超时问题怎么解决? 1.2 Dubbo支持哪些序列化方式? 1.3 Dubbo和SpringCloud的关系? 1.4 Dubbo的架构设计?一共划分了哪些层? 1.5