Wangxiong's Notes

始于技术,岂止于技术。


  • 主页

  • 归档

  • 关于

  • 标签

  • 分类

  • 首页

【MySQL】范式设计和反范式设计

发表于 2019-09-19 | 分类于 技术


摘要:所谓的范式,是指关系型数据库设计中所需要满足的规范格式(Normal Format),大多数情况下我们需要遵循相应的规则和指导方法,以便我们设计出高效率和优雅的数据库。对应的,任何事物都有两面性,遵循范式设计的数据库在更新操作带来高效率(尤其是在密集的写场景下)和保持数据一致性有一定的优势,但却在查询操作的时候降低了效率。这个时候,适当的反范式设计反而能提高查询效率,(尤其是在读密集的查询场景下)。普遍认为,范式设计中基本满足第一范式(1NF)、第二范式(2NF)、第三范式(3NF)便足够能很好的对数据关系进行约束。第一范式,是指字段具有不可拆分的原子性;第二范式在满足第一范式的基础上,消除部分依赖,要求必须有主键并且非主键字段完全依赖主键(不能存在部分依赖);第三范式在第二范式的基础上,消除传递依赖,要求非主键字段不能相互依赖。关于范式设计和反范式设计的选择,需要根据实际业务场景进行选择,完全的范式化和反范式化设计都是实验室里才会出现的。简单来讲,符合实际业务场景的设计便是好设计。

范式设计和反范式设计

阅读全文 »

【Java基础】多线程(二)

发表于 2019-09-11 | 分类于 技术


摘要:本篇文章以电影院卖票为案例需求,主要阐述了多线程安全的问题是如何产生的,为了解决电影院售卖相同票的问题,引入Java中关键字synchronized同步代码块和同步方法的方式来解决数据安全问题,其中需要注意的是在同步方法中的静态同步方法的锁对象是当前函数所属类的字节码文件类名.class,非静态同步方法的锁对象是this,最后也简单介绍了JDK5以后提供的一个新的锁Lock机制来解决线程安全问题。线程同步的好处虽然帮我们更好的解决了多线程安全的问题,但当线程非常多时,为了同步上的锁也会大大降低程序的运行效率,我们应该根据实际业务场景进行权衡。

阅读全文 »

【Java基础】多线程(一)

发表于 2019-09-04 | 分类于 技术


摘要:本篇文章主要阐述了关于多线程的基础知识。首先,通过类比介绍了关于进程和线程的基本概念,进程是资源分配的最小单位,线程是资源调度的最小单位。之后介绍了Java中两种实现多线程的方式,一种是继承Thread类,一种是实现Runnable接口,实现Runnable接口更好的解决了Java单继承的局限性。再次,通过案例介绍了设置线程和获取线程的方法、线程控制的基本方法,其中主要包括sleep、join和setDaemon。紧接着,阐述了线程调度分为分时调度模型和抢占式调度模型两种方式,而Java使用的是抢占式调度模型,Java中的线程具有1-10的优先级,优先级越高,不一定就能抢到执行权,只是代表该线程抢占CPU时间片的几率更大。最后,主要分析了线程完整生命周期的六种状态,NEW新建、RUNNABLE运行、BLOCKED阻塞、WAITING无时限等待、TIMED_WAITING有时限等待、TERMINATED终止。

阅读全文 »

【Java基础】Map集合

发表于 2019-08-24 | 分类于 技术


摘要:本篇文章主要介绍了Map集合相关的内容,其中包括Map集合的概述和特点、Map集合的七种基本功能和四种获取方式、Map集合遍历的两种方式(键找值、键值对对象找键和值)、最后通过Map集合的五个应用案例,详细说明Map集合的实际使用场景。案例一创建了一个键是学号(String),值是学生对象(Student)的HashMap集合。案例二创建了一个键是学生对象(Student),值是居住地 (String)的HashMap集合。案例三创建了一个元素为HashMap,每一个HashMap的键和值都是String的ArrayList集合。案例四创建了一个键值对元素的键是String,值是ArrayList,每一个ArrayList的元素是String的HashMap集合。案例五通过键盘录入一个字符串,统计字符串中每个字符串出现的次数。

阅读全文 »

【Java基础】Set集合

发表于 2019-08-15 | 分类于 技术


摘要:本篇文章主要介绍了Set集合相关的基础知识。其中包括Set集合的概述和特点(元素存取无序、没有索引、只能通过迭代器或增强for循环遍历、不能存储重复元素);介绍了哈希值的相关知识;HashSet集合概述和特点;介绍了哈希表的数据结构;HashSet集合存储学生对象并遍历的应用案例分析;LinkedHashSet集合概述和特点;TreeSet集合概述和特点;通过案例分析了两种排序(自然排序和比较器排序)的应用;用TreeSet集合进行成绩排序的案例应用;使用Set集合完成不重复的随机数案例。

阅读全文 »
123…16
Wang Xiong

Wang Xiong

知行合一,格物致知。

80 日志
9 分类
24 标签
Jekyll Navbar GitHub E-Mail
© 2016-2020 Wang Xiong
Powered by Hexo
Theme by NexT.Pisces
京ICP备 16010164号-1