0%

Maximum Likelihood Estimation(MLE) 极大似然估计,又被称作最大似然估计。其可在给定概率分布模型的条件下用于模型参数的估计,即所谓的参数估计

阅读全文 »

对于synchronized锁机制而言,准确来说其应该属于JVM的范畴。这里基于行文的连贯性、完整性考虑,故将该部分内容在JMM系列中一并进行介绍

阅读全文 »

多线程并发的核心问题在于如何控制同步,幸运的是Java语言原生地提供了一个同步手段——synchronized关键字。本文这里就来简单谈一谈synchronized关键字

阅读全文 »

很多编程语言中都有 volatile 关键字,但是不同语言下其语义并不完全相同。本文将就其在Java中的语义作具体说明、解释

阅读全文 »

在并发编程中,线程之间的通信是一个很关键的问题,而该问题解决方案主要可分为两大类:消息传递、共享内存。前者有以Erlang语言为代表的Actor模型,而后者中典型的则是Java语言。对于消息传递机制而言,线程之间必须通过发送消息以进行显式地通信。而同步过程则是隐式地,因为消息的发送必须在消息的接收之前;而对于共享内存机制来说,线程之间可以通过读、写内存中的公共状态来实现隐式地通信,但同步操作则需通过开发者显式地进行指定。可以看到由于Java的并发采用是共享内存机制,所以在谈多线程并发编程之前,需要对JMM(Java Memory Model)Java内存模型有一定的了解

阅读全文 »

大多数情况下,通过诸如javap等反编译工具来查看源码的字节码已经能够满足我们的日常需求,但是不排除在有些特定场景下,我们需要通过反汇编来查看相应的汇编指令。本文我们就来介绍两个很好用的工具——HSDIS、JITWatch

阅读全文 »

在并发编程中,我们大多数情况下都是显式地通过加锁来保证线程安全。这里我们来介绍一种在无锁条件下多线程变量同步的方法——CAS(Compare And Swap,比较与交换)算法

阅读全文 »

在Java开发中,多线程并发是一个永恒不变的话题与热点。这里我们开始讨论如何在开发中使用多线程实现并发

阅读全文 »

本文对线程的生命周期及转化过程进行介绍,具体介绍Java多线程中的notify-wait机制并据此实现一个典型的生产者-消费者模型,并就实现线程停止的中断机制做简要说明

阅读全文 »

通过OpenJDK官方提供的JOL(Java Object Layout)工具,我们即可很方便分析、了解一个Java对象在内存当中的具体布局情况。这里将在64位的HotSpot Java虚拟机环境下进行分析、测试

阅读全文 »

Java的HashSet、HashMap集合应用及底层原理,相信大家都已经很熟悉了,这里就不再赘述了。这里主要来介绍下如何Java中的LinkedHashMap集合,同时也介绍下基于LinkedHashMap的LinkedHashSet集合、LRU算法实现

阅读全文 »

在Web应用中安全问题同样不可忽视,所以Spring Framework体系中也为此提供了解决方案——Spring Security。但是由于其较为复杂,新人上手较为困难。所以这里我们来介绍另外一个简单易用的开源安全框架——Apache Shiro,并说明如何在SpringBoot中实现身份认证、权限授权

阅读全文 »

Spring AOP可以在不侵入原有代码的情况下实现行为的拓展、增强,其内部就是通过动态代理来实现。本文我们将展示两大类、三种具体的代理方法

阅读全文 »

最小二乘法作为一种常见的数学优化方法,其核心思想是通过对残差平方和的最小化来进行估计。这里我们将对线性条件下的最小二乘做相关说明与介绍,即 Ordinary Least Square(OLS) 普通最小二乘

阅读全文 »

Java 8开始支持Stream流,Stream不同于IO流,它是对数据集合的一种高级抽象,配合Lambda通过函数式编程可以高效方便地对集合元素进行操作。这里通过具体的实例来讲解如何使用Java Stream

阅读全文 »

Radix Sort 基数排序是对计数排序的改进,该算法可以支持针对浮点、字符串等类型元素进行排序。其主要思想是将排序元素按数位分割依次排序,从而实现整体有序。其同样可以具有线性时间的性能

阅读全文 »

虽然像FileOutputStream、OutputStreamWriter这些输出流可以输出信息,但是其会要求把数据先处理为字符串或字节数组,使用不便。为此在Java IO体系专门提供了两个打印流——PrintStream 字节打印流 、PrintWriter 字符打印流。二者均重载了print、printf 等函数,方便开发者直接输出打印其它类型的数据

阅读全文 »

MyBatis,作为目前流行的ORM框架,大大方便了日常开发。而对于分页查询,虽然可以通过SQL的limit语句实现,但是比较繁琐。而MyBatis PageHelper的出现,则解决了这一痛点。这里将介绍如何在Spring Boot、MyBatis的环境中通过MyBatis PageHelper高效方便的实现分页查询

阅读全文 »

本篇文章将会着重介绍Java泛型的协变性及通配符,以使得我们更好的更方便的来使用它

阅读全文 »

Couting Sort 计数排序虽然快,但其只能对整数进行排序有一点的局限性。而 Bucket Sort 桶排序则没有这个限制。这里我们就来详细介绍该算法,其一般在排序元素的值基本处于均匀分布的场景下应用

阅读全文 »