2 昨日的桥

尚未进行身份认证

暂无相关简介

等级
TA的排名 11w+

Java中的线程安全与锁优化

如果一个对象可以被多线程同时使用,那他就是线程安全的。01、线程安全的定义当多个线程访问一个对象时,如果不用考虑这些线程在运行环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方法进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的。02、Java语言中的线程安全按照线程安全的安全程度由强至弱来排序,我们可以将Java语言中各种操作共享的数据分为以...

2020-02-13 10:55:13

Java内存模型与线程

并发处理的广泛应用使得Amdahl定律代替摩尔定律成为计算机性能发展源动力的根本原因,也是人类“压榨”计算机运算能力的最有利武器。计算机的运算速度与它的存储和通信子系统速度的差距太大,让计算机同时处理几项任务则是最容易想到、也被证明是非常有效的“压榨”手段。01、硬件的效率与一致性由于计算机的存储设备与处理器的运算速度有几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理...

2020-02-10 14:35:18

Java虚拟机晚期(运行期)优化知识总结

01、为什么使用即时编译器Java程序最初是通过解释器进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”。为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(Just In Time Compiler,简称JIT编译器)。02、解释器与编译器两者各自的优势...

2020-02-02 17:06:50

Java虚拟机早期(编译期)优化

从计算机程序出现的第一天起,对效率的追求就是程序天生的坚定信仰,这个过程犹如一场没有终点、永不停歇的F1方程式竞赛,程序员是车手,技术平台则是在赛道上飞驰的赛车。01、3种编译器Java语言有3类编译过程,分别对应着3种编译器:1、前端编译器:把*.java文件转成*.class文件(字节码文件),比如Javac。2、JIT编译器:把字节码转成机器码。3、AOT编译器:把*.java文件...

2020-01-31 23:28:21

虚拟机类加载机制

代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。01、虚拟机类加载机制是什么?虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销,...

2020-01-30 15:54:53

垃圾收集器与内存分配策略

你知道么?GC的历史比Java还要久远。1960年诞生于麻省理工的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言。目前内存的动态分配与内存回收技术已经相当成熟。但是,当需要排查各种内存溢出、内存泄露问题时,当垃圾收集成为系统达到高并发量的瓶颈时,我们需要对这些内存动态分配和垃圾收集技术进行必要的监控和调节。以下对Java垃圾收集器与内存分配策略进行了归纳总结。01、哪些内存需要回收...

2020-01-17 17:09:35

MySQL中的分区表

对用户来说,分区表是一个独立的逻辑表,但是底层是由多个物理子表组成。实现分区的代码实际上是对一组底层表的句柄对象的封装。对分区表的请求,都会通过句柄对象转化成存储引擎的接口调用。分区表在很多场景中可以起到非常大的作用,但是其本身也存在一些限制。以下对MySQL中的分区表作一个简单的归纳。01 分区表的原理1、MySQL在创建时使用PARTITION BY子句定义每个分区存放的数据。2、分区的...

2020-01-15 22:31:32

MySQL查询性能优化

优化查询、索引优化、库表结构设计三者其实需要齐头并进,一个不能落下。在获得编写MySQL查询经验的同时,也应该学习如何设计为高效的查询设计表和索引。同样的,也可以学习到在优化库表结构时会影响到哪些类型的查询。01、为什么查询速度会慢?1、首先需要清楚一点,对于查询而言,真正重要的是响应时间。如果把查询看作是一个任务,那么它由一些列子任务组成,每个子任务都会消耗一定的时间。如果要优化查询,实际上...

2020-01-15 15:22:06

HotSpot虚拟机在Java堆中对象分配、布局和访问的全过程

三个过程:对象创建、内存布局、访问定位。1、对象的创建(1)虚拟机遇到一条new指令时,首先将取检查这个指令的参数是否能在常量池中定位到一个类的引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。(2)在类加载检查通过后,虚拟机将为新生对象分配内存。假设Java堆中内存时绝对规整的,所有用过的内存都放在一边,空闲的内存放在另一边,中间放着一个指针作为分界点的指示器,那所分配内存...

2020-01-14 15:47:42

MySQL中的索引

索引是一个比较复杂的模块,需要花一定的时间去学习。但是,索引又是MySQL进行查询优化的一个很重要的手段,如果用得好,可以成为数据访问的有力而且灵活的工具,所以还是有必要好好学习和思考这一块内容。下面,对MySQL中索引的内容做了一下归纳总结,有点零散。01、索引基础1、索引是存储引擎用于快速找到记录的一种数据结构。2、索引是对查询性能优化最有效的手段。3、B-树索引能够加快访问数据的速度...

2020-01-13 18:18:10

MySQL之Schema与数据类型优化

抽空整理了一下MySQL中的Schema与数据类型优化相关的知识点,有点零碎。MySQL的数据类型相对来说比Oracle的数据类型要多,所以,MySQL使用起来也会相对更加灵活一些。在数据存储管理方面,MySQL的使用者可以根据自己的需求更容易找到可以满足业务场景同时又最节省磁盘空间的数据类型。另外MySQL还有一点优势在于,MySQL支持主键自增,而Oracle并不支持,在Oracle实现主键自...

2020-01-10 09:50:49

大数据分析与挖掘之关联规则挖掘

关联规则挖掘是大数据分析与挖掘的基础,通过在大量数据中挖掘数据项之间的强关联关系,可以得到很多有趣而且有价值的信息。01、基本概念1、关联规则的挖掘是在大量数据的基础上,通过分析哪些数据项频繁地一起出现,可以得到很多频繁一起出现的数据项集合。2、根据频繁项集的元素个数X,将频繁项集称为频繁k-项集。3、项集X的支持度计数σ(X)=∣ti∣X⊆ti,ti∈T∣\sigma(X) = | t...

2020-01-09 21:05:33

MySQL架构及基础知识归纳

数据库的知识都比较零散,内容也比较多,筛选了一些比较重要且常见的知识点,做了归纳整理,方便后续回顾和学习。01、MySQL服务器逻辑架构图图1 MySQL服务器逻辑架构图第一层:连接/线程处理。大多数基于网络的客户端/服务器的工具或者服务都有类似的架构。比如连接处理、授权认证、安全等。第二层:查询缓存、解析器、优化器。MySQL的核心功能,包括查询解析、分析、优化、缓存以及所有的内...

2020-01-07 23:21:41

LinkedHashMap是什么?

大家都知道,HashMap是一个无序的集合,所有存入HashMap的元素都会根据它的key值对应的hashCode来映射到一个Entity数组上,而不是根据存入的顺序进行排列的。对于一些需要使用排序的情况,HashMap是无能为力的,为了可以应对这种需要HashMap并且需要排序的情况,JDK 便推出了LinkedHashMap。LinkedHashMap继承了HashMap,通过使用一个双向...

2020-01-06 23:44:07

流式处理的设计模式

每一个流式处理系统都不一样,从基本的消费者、处理逻辑和生产者的组合,到使用了Spark Streaming和机器学习软件包的复杂集群,以及其他很多处于中间位置的组件。这里,对一些常见的流式处理的设计模式进行了罗列,具体如下:1、单个事件处理处理单个事件是流式处理最基本的模式。这个模式也叫map或filter模式,因为它经常被用于过滤无用的事件或者用于转换事件(map这个术语是从Map-Redu...

2020-01-06 19:20:26

Kafka中的流式处理及相关概念汇总

Kafka中的流式处理是Kafka的一个中功能,通过流式处理,Kafka可以对实时数据进行实时处理,虽然,数据处理的响应时间并没有“请求-响应”模式的迅速,但是相对于一般的批处理模式还是要快很多的。对于一般的客户服务、物联网系统的状态预测、异常检测等还是非常高效的、实用的方法。所以,还是有必要好好掌握这方面的知识。下面对Kafka中流式处理及相关的概念进行了汇总。01、什么是流式处理数据流(也...

2020-01-06 19:16:51

Kafka中消费者的主要内容归纳

Kafka是一款基于发布与订阅的消息系统。其中消息的订阅以及最终的消费是由Kafka中的消费者来完成。关于Kafka中的消费者,其包含的内容比较多,现在归纳如下:01、消费者和消费者群组Kafka消费者从属于消费者群组。一个群组里的消费者订阅的是同一个主题,每个消费者接受主题一部分分区的消息。往群组里增加消费者是横向伸缩消费能力的主要方式。但是要注意,不要让消费者的数量超过主题分区的数量,多...

2020-01-05 21:01:13

Kafka中的生产者详解

Kafka中的生产者主要是用来向Kafka中写入消息。其包含的主要内容有如下个方面:01、应用程序往Kafka中写入消息的场景记录用户的活动(用于审计好分析)、记录度量指标、保存日志消息、记录智能家电的信息、与其他应用程序进行异步通信、缓冲即将写入到数据库的数据,等等。02、Kafka发送消息的过程1、创建ProducerRecord对象2、使用send()发送ProducerRecor...

2020-01-04 23:21:35

Kafka安装时的参数配置

一、常规配置1、broker.id:broker标识符,默认是0。2、port:端口,如果使用配置样本来启动Kafka,会默认监听9092端口。3、zookeeper.connect:用于保存broker元数据的ZooKeeper地址。该配置参数是用逗号分隔的一组hostname:port/path列表,每一部分含义如下:(1)hostname是ZooKeeper服务器的机器名或IP地址;...

2020-01-04 10:39:22

Kafka中的常见概念归纳

Kakfa中有很多概念,以下对其中常见的概念进行整理,方便学习和后续回顾。01、消息和批次Kafka的数据单元被称为消息,可以把消息看成是数据库里的一个“数据行”或一条“记录”。消息被分批次写入Kafka,批次就是一组消息,这些消息属于同一个主题和分区。02、模式根据应用程序的需求,消息模式有许多可用的选项。Kafka的许多开发者喜欢使用Apache Avro,Avro提供了一种紧凑的序列...

2020-01-03 20:59:15

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。