学习笔记

LVM(逻辑卷管理)

一、LVM概念 LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。 LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。比如说我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上层服务的是以逻辑卷的方式。 ...

Null is your firend, not a mistake

原文作者: Roman Elizarov 原文地址: Null is your firend, not a mistake 译者:秉心说 Kotlin Island from Wikimedia by Pavlikhin, CC BY-SA 4.0 我使用 Java 语言编程已经很久很久了,掌握了通过 Java 编写和维护大型软件(百万行代码)应该注意些什么,并亲眼目睹了全行业都在竭力避免空指针异常 NullPointerException(NPE),它困扰着大大小小的 Java 类库。在 2009 年其发明者 Tony Hoare 承认空引用是他造成的一个 “十亿美元的错误”之前,人人已经意识到它的危险性。 ...

线程操作之锁的使用

一、线程锁 1.多个线程抢占资源的情况: 锁通常被用来实现对共享资源的同步访问。为每一个共享资源创建一个Lock对象,当你需要访问该资源时,调用acquire方法来获取锁对象(如果其它线程已经获得了该锁,则当前线程需等待其被释放),待资源访问完后,再调用release方法释放锁: 案例一: from threading import Thread,Lock import time K = Lock() def func(): global n K.acquire() # 加锁 ...

实时计算数据架构的演变

 传统数据基础架构传统单体数据架构最大的特点便是集中式数据存储,大多数分为计算层和存储层。...

Dagger2 探索记1——四大基本组件(一)

和很多自主学习的人不一样,我接触Dagger 2 框架的原因是刚进公司的时候导师给安排的学习任务,学习方式是组内培训。 听到这个消息的我,以为是部门的人轮流给我讲课。 后来导师跟我说,组内培训的意思是,我先自己好好学这个框架,然后给组内的所有人搞个培训。 没办法,在网上看了很多相关博客,浪费了不少时间,终于还是学有所得,也记录一下我最近的学习进展。 就不多讲什么历史了,你能看到我这篇博客,想来历史什么的科普你都已经被塞到吐了,还是撸代码学得快。 ...

BMP 图像信息隐藏及检测

 针对文件结构的信息隐藏方法需详细掌握文件的格式,利用文件结构块之间的关系或根据块数据和块大小之间的关系来隐藏信息。...

重学Java(一):与《Java编程思想》的不解之缘

说起来非常惭愧,我在 2008 年的时候就接触了 Java,但一直到现在(2018 年 10 月 10 日),基础知识依然非常薄弱。用一句话自嘲就是:十年 IT 老兵,Java 菜鸡一枚。 于是,我想,不如静下心来,重新读一遍那些经典的 Java 技术书,并且没读完一章就输出一篇原创技术文章。从哪一本开始呢?想了一想,还是从《Java 编程思想》开始吧!毕竟这本书赢得了全球程序员的广泛赞誉,从 Java 的基础语法到最高级特性,都能指导我们 Java 程序员轻松掌握。 记得刚上大学那会,就买了一本影印版的《Java 编程思想》,但由于初学 Java,对编程极度缺乏信心,导致看这本书有一种看天书的感觉。后来,去苏州参加工作的时候把它作为最宝贵的纪念品带了过去。 ...

Dubbo 与 Spring Cloud 完美结合

1. 概述 可能说起来Dubbo,很多人都不陌生,这毕竟是一款从2012年就开始开源的Java RPC框架,中间由于各种各样的原因停止更新4年半的时间,中间只发过一个小版本修了一个小bug,甚至大家都以为这个项目已经死掉了,竟然又在2017年9月份恢复了更新,不可谓不神奇。 网络上很多人都拿Dubbo和Spring Cloud做对比,可能在大家的心目中,这两个框架是可以画上等号的吧,后来在网络上有一个非常流行的表格,比较详细的对比了 Spring Cloud 和 Dubbo ,表格如下: Dubbo SpringCloud ...

网关高可用之keepavlived全流程(安装/配置/验证/解析)

1.场景描述 因为要做网关的高可用,用到了keepalived+nginx,来保证nginx的高可用。(微服务时代之网关及注册中心高可用架构设计),如下图: 安装了keepavlived,走了一些弯路,记录下吧,nginx的安装就不多说了,自己博客已经介绍了好几篇了。 2. 解决方案 2.1 安装keepalived 2.1.1 安装相关依赖包 [root@t-ruanjianlaowang ~]# yum install -y libnl* [root@t-ruanjianlaowang ~]# yum install -y libnfnetlink-devel zlib zlib-devel gcc gcc-c++ openssl openssl-devel openssh ...

Spring Boot2 系列教程(六)自定义 Spring Boot 中的 starter

 我们使用 Spring Boot,基本上都是沉醉在它 Stater 的方便之中。Starter 为我们带来了众多的自动化配置,有了这些自动化配置,我们可以不费吹灰之力就能搭建一个生产级开发环境,有的小伙伴会觉得这个 Starter 好神奇呀!其实 Starter 也都是 Spring + SpringMVC 中的基础知识点实现的,今天松哥就来带大家自己来撸一个 Starter ,慢慢揭开 Starter 的神秘面纱!...

Java面试-容器的遍历

当我们用增强for循环遍历非并发容器(HashMap、ArrayList等),如果修改其结构,会抛出异常ConcurrentModificationException,因此在阿里巴巴的Java规范中有说到:不要在foreach循环里进行元素的remove/add操作,remove元素请使用Iterator方式。,但是不是真的就不可以在增强for循环中修改结构吗?其原理又是什么呢? ConcurrentModificationException的含义 ConcurrentModificationException可以将其通俗的翻译为并发修改异常,那么关注点就在并发和修改了。也许有些人会说,我只是在单线程中修改了,并没有并发操作,但系统也抛了这样的这样的错误,这是为什么呢?别急,我们看看它的源码解释: ...
青岛软件培训

可能你正在寻找一家靠谱的IT培训机构,学习一些专业的软件开发技术,找一份得体的工作。恰巧我们就是一家踏踏实实做教育的IT人才培养机构,我们咨询电话是 0532-85025005,如果你确实对IT感兴趣,我们不妨交流一下。

申请免费试听课程