现有的存储系统经过长期发展,种类及其繁多,架构也各不相同,按照从底层到上层的思路,大致可以分为:物理层、协议层、架构层、连接层四个层次。接下来我们由下往上详细分析。物理层:顾名思义,就是用来存储数据的各种设备。企业级存储中的存储介质包括机械磁盘(HDD)、固态硬盘(SSD)、磁带(TAPE)、光盘(OpticalDisk)等,其中最常见的是以HDD和SSD为介质的存储系统。从存储介质的维度进行分类,存储系统可分为磁盘存储、全闪存储、混闪存储、磁带库、光盘库等。协议层:在各种物理介质内,数据统一抽象成0和1的字符串,但面对各种具体的数据使用场景和不同的数据接受者,我们需要用不同的形式来传输、呈现
现有的存储系统经过长期发展,种类及其繁多,架构也各不相同,按照从底层到上层的思路,大致可以分为:物理层、协议层、架构层、连接层四个层次。接下来我们由下往上详细分析。物理层:顾名思义,就是用来存储数据的各种设备。企业级存储中的存储介质包括机械磁盘(HDD)、固态硬盘(SSD)、磁带(TAPE)、光盘(OpticalDisk)等,其中最常见的是以HDD和SSD为介质的存储系统。从存储介质的维度进行分类,存储系统可分为磁盘存储、全闪存储、混闪存储、磁带库、光盘库等。协议层:在各种物理介质内,数据统一抽象成0和1的字符串,但面对各种具体的数据使用场景和不同的数据接受者,我们需要用不同的形式来传输、呈现
“如何解决TCC中的悬挂问题”!一个工作了4年的Java程序员,去京东面试,被问到这个问题。大家好,我是Mic,一个工作了14年的Java程序员这个问题面试官想考察什么方面的知识?我们又该怎么回答呢?问题解析TCC是分布式事务问题里面的解决方案,一般在应聘互联网公司的时候问的比较多。实际上,在TCC这个事务解决方案里面,除了悬挂问题以外,还有空回滚、幂等性需要考虑。但是我们在应用的时候都是采用一些成熟的框架,比如Seata,这些框架本身就帮我们解决了。导致大部分人不知道这个问题的意思。所谓TCC,其实就是(Try-Confirm-Cancel),也就是把一个事务拆分成两个阶段,类似于传统的XA
“如何解决TCC中的悬挂问题”!一个工作了4年的Java程序员,去京东面试,被问到这个问题。大家好,我是Mic,一个工作了14年的Java程序员这个问题面试官想考察什么方面的知识?我们又该怎么回答呢?问题解析TCC是分布式事务问题里面的解决方案,一般在应聘互联网公司的时候问的比较多。实际上,在TCC这个事务解决方案里面,除了悬挂问题以外,还有空回滚、幂等性需要考虑。但是我们在应用的时候都是采用一些成熟的框架,比如Seata,这些框架本身就帮我们解决了。导致大部分人不知道这个问题的意思。所谓TCC,其实就是(Try-Confirm-Cancel),也就是把一个事务拆分成两个阶段,类似于传统的XA
“什么是Java虚拟机,为什么要使用”。最近一个1年Java开发经验的同学去面试阿里,遇到这个问题向我求助。大家好,我是Mic,一个工作14年的Java程序员。那么,这个问题,面试官希望考察什么呢?问题解析Java虚拟机,是Java应用程序运行的平台。很多初学者,第一步基本上都是学习怎么写代码,并没有关注Java代码所运行的平台。因此,虽然写了几年代码,但是对Java本身的理解不够深刻,程序一旦出现问题,很难排查和解决。面试官考察这个问题的出发点,我认为有三个了解求职者对于Java语言的理解深度,这个方面有助于提升代码编写的质量了解求职者对于JVM基础的掌握程度,良好的基础有助于快速解决GC问
“什么是Java虚拟机,为什么要使用”。最近一个1年Java开发经验的同学去面试阿里,遇到这个问题向我求助。大家好,我是Mic,一个工作14年的Java程序员。那么,这个问题,面试官希望考察什么呢?问题解析Java虚拟机,是Java应用程序运行的平台。很多初学者,第一步基本上都是学习怎么写代码,并没有关注Java代码所运行的平台。因此,虽然写了几年代码,但是对Java本身的理解不够深刻,程序一旦出现问题,很难排查和解决。面试官考察这个问题的出发点,我认为有三个了解求职者对于Java语言的理解深度,这个方面有助于提升代码编写的质量了解求职者对于JVM基础的掌握程度,良好的基础有助于快速解决GC问
不堆概念、换个角度聊多线程并发编程大家好,又见面了。在上一篇文档《JAVA基于CompletableFuture的流水线并行处理深度实践,满满干货》中,我们一起探讨了JAVA中并行编码的相关内容,在文中也一起比较了并行与并发的区别。作为姊妹篇,这里我们就再展开聊一聊关于并发相关的内容。俗话说,双拳难敌四手。俗话还说,人多力量大。在现实生活中,我们通过团队化的方式来获得比单兵作战更高的单位时间内整体产出速度。同样,在编码世界中,为了提升处理效率,并发一直以来都是软件开发设计场景中无法绕过的话题。不管是微观层面的单个进程内多线程处理模式,还是宏观层面整个系统集群化多节点部署策略,为了提升系统的整体
不堆概念、换个角度聊多线程并发编程大家好,又见面了。在上一篇文档《JAVA基于CompletableFuture的流水线并行处理深度实践,满满干货》中,我们一起探讨了JAVA中并行编码的相关内容,在文中也一起比较了并行与并发的区别。作为姊妹篇,这里我们就再展开聊一聊关于并发相关的内容。俗话说,双拳难敌四手。俗话还说,人多力量大。在现实生活中,我们通过团队化的方式来获得比单兵作战更高的单位时间内整体产出速度。同样,在编码世界中,为了提升处理效率,并发一直以来都是软件开发设计场景中无法绕过的话题。不管是微观层面的单个进程内多线程处理模式,还是宏观层面整个系统集群化多节点部署策略,为了提升系统的整体
代码1**sum.cpp**intgdata=10;intsum(inta,intb){returna+b;}**main.cpp**externintgdata;intsum(int,int);intdata=20;intmain(){inta=gdata;intb=data;intret=sum(a,b);return0;}1:编译需要关注的几个点1:.o文件的格式组成是什么样子?2:.exe文件的组成格式是什么样子?3:"所有.o文件段的合并符号表合并后,进行符号解析"4:"符号的重定位(重定向)"5:"符号表的输出"=>"符号"6:符号什么时候分配虚拟地址?预编译以#开头的命令除#pr
代码1**sum.cpp**intgdata=10;intsum(inta,intb){returna+b;}**main.cpp**externintgdata;intsum(int,int);intdata=20;intmain(){inta=gdata;intb=data;intret=sum(a,b);return0;}1:编译需要关注的几个点1:.o文件的格式组成是什么样子?2:.exe文件的组成格式是什么样子?3:"所有.o文件段的合并符号表合并后,进行符号解析"4:"符号的重定位(重定向)"5:"符号表的输出"=>"符号"6:符号什么时候分配虚拟地址?预编译以#开头的命令除#pr