自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wuqingdeqing的博客

文章洋洋千行,但有一点放在读者心上,足矣

  • 博客(19)
  • 收藏
  • 关注

原创 Java并发读书学习笔记(三)——对象的组合

3.1 设计线程安全的类在线程安全的程序中,虽然可以将程序的所有状态都保存在公有的静态域中,但与那些将状态封装起来的程序相比,这些程序的安全性更难以得到验证,并且在修改时也更难以确保其线程安全性。通过使用封装技术,可以在不对整个程序进行分析的情况下判断一个类是否是线程安全的。同步策略定义了如何在不违背对象不变条件或后验条件的情况下对其状态的访问操作进行协同。同步策略规定了如何将不可变性、线程封闭与...

2018-02-25 22:37:53 182

原创 Java并发读书学习笔记(二)——对象的共享

一种常见的误解是,认为关键字synchronized只能用于实现原子性或确定“临界区”。同步还有另一个重要的方面:内存可见性。我们不仅希望防止某个线程正在使用对象状态而另一个线程同时修改该状态,而且希望当一个线程修改了对象状态后,其他线程能够看到发生的状态变化。如果没有同步,这种情况就无法实现。你可以通过显示的同步或者类库中内置的同步来保证对象被安全的发布。2.1 可见性可见性是一种复杂的属性,因...

2018-02-25 11:25:20 127

原创 Java并发读书学习笔记(一)——线程安全

要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对共享(Shared)和可变(Mutable)状态的访问。从非正式意义上来说,对象的状态是指存储在状态变量中的数据。对象的状态可能包括其他依赖对象的域。共享意味着变量可以由多个线程同时访问,而可变则意味着变量的值在其生命周期内可以变化。一个对象是否线程安全,取决于它是否被多个线程访问。这指的是在程序中访问对象的方式,而不是对象要实现的...

2018-02-24 20:05:11 180

原创 MySQL读书学习笔记(十)——高可用性

10.1 概念它通常以百分比表示:表明它不是绝对的,只有相对更高的可用性。100%的可用性是不可能达到的。可用性的“9”规则是表示可用性目标最普遍的方法。“5个9”表示99.999%的正常可用时间。换句话说,每年只允许5min的宕机时间。10.2 宕机原因最运行环境中,最普遍的原因是磁盘空间耗尽。在性能问题中,最普遍的原因是运行了糟糕的SQL,但也不一定全是如此,有可能是服务器bug或错误的行为。...

2018-02-24 17:15:34 195

原创 MySQL读书学习笔记(九)——可扩展

9.1 概述简要地说,可扩展性表明了当需要增加资源以执行更多工作时系统能够获得划算的等同提升的能力。缺乏扩展能力的系统在达到收益递减的转折点后,将无法进一步增长。9.1.1 定义数学上,可扩展性是增加资源以处理负载和增加容量时系统能够获得的投资产出率。9.2 扩展MySQL如果将应用所有数据简单地放到单个MySQL服务器实例上,则无法很好地扩展,迟早遇到性能瓶颈。对于许多类型的应用,传统的解决方法...

2018-02-22 13:54:36 262

原创 MySQL读书学习笔记(八)——复制

MySQL内建的复制功能是构建基于MySQL的大规模、高性能应用的基础,这类应用使用所谓的“水平扩展”的架构。我们可以通过为服务器配置一个或多个备库的方式来进行数据同步。复制功能不仅有利于构建高性能的应用,同时也是搞可用性、高扩展性、灾难恢复、备份以及数据仓库等工作的的基础。8.1 概述复制解决的基本问题是让一台服务器的数据与其他服务器保持同步。一台主库的数据可以同步到多台备库上,备库本身也可以被...

2018-02-22 09:51:58 275

原创 MySQL读书学习笔记(七)——操作系统与硬件优化

7.1 瓶颈许多不同的硬件都可以影响MySQL的性能,但我们认为最常见的两个瓶颈是CPU和I/O。当数据可以放在内存中或者可以从磁盘中以足够快的速度读取时,CPU可能出现瓶颈。把大量数据集放到大容量内存中,以现在的硬件条件完全是可行的。I/O瓶颈,一般发生在工作所需的数据远远超过有效内存容量的时候。如果应用程序是分布在网络上的,或者如果有大量查询或低延迟要求,瓶颈可能转移到网络上,而不再是磁盘I/...

2018-02-21 19:56:35 307

原创 MySQL读书学习笔记(六)——优化服务器设置

6.1 配置的工作原理获取MySQL配置信息:命令行参数和配置文件。在类Unix系统中,配置文件一般在/etc/my.cnf或者/etc/mysql/my.cnf。如果使用操作系统的启动脚本,这通常是唯一指定配置设置的地方。如果手动启动MySQL,例如在测试安装时,也可以在命令行指定设置。实际上,服务器会读取配置文件的内容,删除所有注释和换行,然后和命令行选项一起处理。6.1.1 语法、作用域和动...

2018-02-21 09:36:47 274

原创 MySQL读书学习笔记(五)——高级特性

5.1 分区表对用户来说,分区表示一个独立的逻辑表,但是底层由多个物理子表组成。实现分区表的代码实际上是对一组底层表的句柄对象(Handler Object)的封装。对分区表的请求,都会通过句柄对象转化成对存储引擎的接口调用。所以分区对于SQL来说是一个完全封装底层实现的黑盒,对应用是透明的,但是从底层的文件系统来看就很容易发现,没一个分区表都有一个使用#分隔命名的表文件。5.1.1 分区表的原理...

2018-02-20 19:15:57 445

原创 MySQL读书学习笔记(四)——查询性能优化

4.1 为什么慢了解查询的生命周期,清楚查询的时间消耗情况对于优化查询有很大意义。4.2 慢查询基础:优化数据访问查询性能低下最基本的原因是访问数据太多。某些查询可能不可避免地需要筛选大量数据,但这并不常见。大部分性能低下的查询都可以通过减少访问的数据量的方式进行优化。对于低效的查询,可以用下面的两个步骤来分析:1.确认应用程序是否检索大量超过需要的数据。2.确认MySQL服务器层是否在分析大量超...

2018-02-19 20:43:39 416

原创 MySQL读书学习笔记(三)——高性能索引

索引(MySQL也叫key)是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能非常关键,尤其当表的数据量越来越大时。3.1 索引基础3.1.1 索引类型B-Tree索引默认的索引类型。大多数MySQL引擎都支持这种索引。B-Tree意味着所有值都是按顺序存储的,并且每一个叶子页到跟的距离相同。B-Tree索引能够加快访问数据的速度,因为存储引擎不再需要进行全表扫描来获取需要的数据,而是从...

2018-02-18 22:44:02 201

原创 MySQL读书学习笔记(二)——schema与数据类型优化

2.1 选择优化的数据类型更小应尽量使用可以存储数据的最小数据类型。更小的数据通常更快,因为它们占更少的磁盘、内存和CPU缓存,并且处理时需要的CPU周期也更少。但要确保没有低估需要存储的值的范围,因为在schema中的多个地方增加数据类型的范围是一个非常耗时和痛苦的操作。简单简单数据类型的操作通常需要更少的CPU周期。避免NULL很多表都包含可为null的列,即使应用程序不需要保存null时也是...

2018-02-17 17:37:40 298

原创 MySQL读书学习笔记(一)——架构

MySQL最与众不同的特性是他的存储引擎架构,这种架构的设计将查询处理(Query Processing)及其他系统任务和数据存储、提取相分离。这种处理和存储分离的设计可以在使用时根据性能、特性,以及其他需求来选择数据存储的方式。1.1 MySQL逻辑架构1.1.1 连接管理和安全性每个客户端连接都会在服务器进程中拥有一个线程,这个连接的查询只会在这个单独的线程中执行,该线程只能在某个CPU核心或...

2018-02-15 16:01:31 347

原创 Java接口中方法和域的访问限定

在做项目的过程中,突然有一个疑问,就是很多时候接口中的方法并没有任何访问限制。若依过往经验推断,说明此方法与类的默认访问属性相同,即包访问可见。但心里总觉得此种解释不甚合理,经过查阅资料明白,在接口声明中,所有方法自动都是public。并且,在实现接口的方法时,必须把方法声明为public,否则编译器会将此方法认为是包访问可见,就会给出试图提供更弱的访问权限的警告。有些程序员出于习惯或提高清晰度的...

2018-02-11 10:39:11 2766

原创 Java编程中HashMap中putAll方法的异常

最近使用HashMap时踩了不少坑,故每次都看看源码,加深对出现异常原因的理解。比如最近遇到项目中的putAll方法抛NullPointerException,查看源码得知,这竟是putAll方法的唯一一个异常。如下:public void putAll(Map<? extends K,? extends V> m)调用此方法将获得参数m中的所有映射,如果存在key相同的,则被m中的v...

2018-02-09 11:37:17 6085 2

原创 java项目中的日志框架使用

看过一些项目后发现其中使用的日志框架多有不同,经过一些调研与询问,觉得阿里Java开发手册中所说较为合理。日志中不要直接使用日志系统(Lg4j, Logback)的API,而应依赖使用日志框架SLF4J中的API,使用门面模式的日志框架,有利于维护和各个类的处理方式统一。import org.slf4j.Logger;import org.slf4j.LoggerFactory;private...

2018-02-09 10:44:10 740

原创 较完美的重写equals方法

equals在Object中用于判断两个对象是否具有相同的引用。但在许多应用的情况下,这种判断并无意义,常用来检查两个状态的相等性,此时就需要重写equals方法。特别注意的是,重写equals方法必须同时重写hashCode方法,否则不能生效。接下来介绍一些重写equals方法的建议。假定传入参数为otherObject。1.首先检查this与otherObject是否引用同一个对象。

2018-02-06 22:06:43 536

原创 统一建模语言UML之图(二)——类图

类图是一种静态图,它一组类、接口、协作及它们的关系。类图展现了系统中类的静态结构,即类与类之间的相互联系。可以把若干个相关的类包装在一起作为一个单元,相当于一个子系统。一个系统可以有多张类图,一个类也可以出现在几张类图中。类与类之间的关系有:关联、依赖、聚合、组合、泛化。关联关系以一条实线来表示。对于两个相对独立的系统,当一个系统的实例与另一个系统的一些特定实例存在一些固定的对应关系时

2018-02-05 21:47:20 368

原创 统一建模语言UML之图(一)——用例图

UML语言定义了9种不同的图,把他们有机结合起来就可以描述系统的所有视图。本文主要讲用例图。用例图是一组用例、参与者以及他们的关系的组合,是一种静态图。用例图展示各类外部执行者与系统所提供的用例之间的连接,一个用例是系统所提供的一个功能的描述,执行者是指使用这些用例的人或外部系统。用例图由参与者(Actor),用例(Use Case),系统边界和箭头组成。如下所示是其一部分。用

2018-02-04 22:44:56 905

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除