自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

二进制之路

聊技术,聊人生。个人博客:binarylife.icu ,极客教程:996geek.com

  • 博客(106)
  • 资源 (12)
  • 问答 (2)
  • 收藏
  • 关注

原创 布隆过滤器之误识别率FPP公式的推导

在《什么是布隆过滤器(Bloom Filter)?》一文中,多次提到了误识别率(FPP,false positive probabilistic)。那么误识别率到底是多大,应该如何计算呢?假设布隆过滤器大小为m比特,存储了n个元素,使用k次散列函数来计算元素的存储位置。添加1个元素,则任一比特为1的概率为:1/m,任一比特为0的概率:1-1/m;添加1个元素,执行k次散列之后,则任一比特为0的概率:(1-1/m)^k,任一比特为1的概率:1-(1-1/m)^k;如果添加n个元素,那么任一比特为0

2020-10-27 16:13:57 1700 1

原创 什么是布隆过滤器(Bloom Filter)?

在日常工作中,有一个比较常见的需求,就是需要判断一个元素是否在集合中。例如以下场景:给定一个IP黑名单库,检查指定IP是否在黑名单中?在接收邮件的时候,判断一个邮箱地址是否为垃圾邮件?在文字处理软件中,检查一个英文单词是否拼写正确?遇到这种问题,通常直觉会告诉我们,应该使用集合这种数据结构来实现。例如,先将IP黑名单库的所有IP全部存储到一个集合中,然后再拿指定的IP到该集合中检查是否存在,如果存在则说明该IP命中黑名单。通过一段Java代码,来模拟IP黑名单库的存储和检查。public

2020-10-26 09:23:46 778 1

原创 保持好奇心,把时间花在刀刃上

保持好奇心如果你自己或身边有小孩,你会发现,小孩对未曾接触过的东西都会非常好奇,而且时常会问为什么,这是我们认识世界的方式。随着年龄的增长,日常的东西见多了,好奇心也会随之减弱,能激起你好奇心的东西会越来越少。之所以会出现这种情况,一方面是因为已经习以为常,环境的限制使你很少接触到更新鲜的事物;另一方面是由于人的懒惰,凡事容易浮于表面,体会不到深入了解一件事物之美。因为好奇心,有的人阅读了大量小说,不仅作文写得好,还可能成为金庸大侠。因为好奇心,有的人研读了大量源码,解决了各种宇宙难题,最终成为程

2020-10-15 23:12:17 645 1

原创 Java安全发布对象(单例)的几种方式

基础知识类的初始化JVM在类被加载后,并且被线程使用之前,会进行类的初始化。在初始化期间,JVM将会获取一个锁,以同步多个线程对类的初始化。根据Java语言规范,在首次发生下列任意一种情况时,一个类或接口类型T将被立即初始化:T是一个类,而且一个T类型的实例被创建。T是一个类,且T中声明的一个静态方法被调用。T中声明的一个静态字段被赋值。T中声明的一个静态字段被使用,而且这个字段不是一个常量字段。T是一个顶级类(Top Level Class,见Java语言规范的§7.6),而且一个断言

2020-10-14 07:33:57 176

原创 Fastjson基于BeanToArray模式实现JavaBean与JSON数组的映射

(本文是《轻松学习Fastjson》教程的第5篇文章)在默认情况下,Fastjson实现了JavaBean和JSON对象之间的映射。此外,Fastjson还支持一种更精简的映射,可以实现JavaBean与JSON数组之间的映射。优点是序列化之后的JSON字符串更小,缺点是降低了可读性。本篇内容基于Fastjson 1.2.62版本,马上开始学习吧。默认的序列化方式默认情况下,使用JSON.toJSONString序列化对象,转化为JSON对象字符串。public class Animal {

2020-10-10 22:05:09 1175

原创 这个国庆几乎无假期,写了9篇Jackson和4篇Fastjson基础教程

这个国庆八天长假,有人回家有人去旅游。而我,每天买菜做饭洗碗陪小孩玩,在附近园区玩了一趟,看了部姜子牙。剩下的时间就是写文章,每天都写,虽然比较简单,但写9篇Fastjson和4篇Jackson教程也不容易。下面把所有文章整理一下。Jackson教程Jackson是一个基于Java的高性能JSON处理器,其核心功能是实现数据与Java对象之间的序列化/反序列化。Jackson最初只是实现JSON数据的绑定,但是发展至今,它也支持其他格式的数据,只要有对应的解析器和生成器就可以了。Jackson

2020-10-08 20:29:36 137

原创 Jackson全局配置和JsonFormat注解设置日期格式

>>《轻松学习Jackson》教程 在日常开发中,日期是很常见的一种数据类型,特别是在与数据库打交道的场景。为了提升日期的可读性,通常会将日期进行格式化之后再输出,用于前端展示和日志打印等场景。Jackson在对日期进行序列化时,也支持按指定的格式进行序列化。本篇内容基于Jackson 2.11.2版本,马上开始学习吧。默认日期格式创建一个代表产品的类Product,其中发布时间publishDate为Date类型。public class Product { private.

2020-10-07 16:49:49 10244

原创 Jackson使用JsonFilter注解过滤字段

通过《Jackson忽略字段不序列化字段的3种方法》一讲我们知道,JsonIgnore和JsonIgnoreProperties都可以用来忽略掉指定的字段。这两个注解有个共同点,就是都在添加注解后就指明了需要过滤的字段。如果想要在序列化的时候,才指定需要过滤的字段,那么可以使用JsonFilter注解来实现。本篇内容基于Jackson 2.11.2版本,马上开始学习吧。过滤类的字段为需要过滤字段的类添加JsonFilter注解。@JsonFilter("myFilter")public clas

2020-10-06 12:01:22 5676

原创 Jackson忽略字段不序列化字段的3种方法

在上一篇中,我们学习了如何忽略值为null的字段《Jackson忽略null字段的3种方法》。相对于忽略null字段,在实际应用中,忽略某些字段的序列化可能更为常见。Jackson对于如何序列化字段、过滤字段的方法多种多样,非常丰富,这一节先来了解一下3种简单的方法。本篇内容基于Jackson 2.11.2版本,马上开始学习吧。使用JsonIgnore注解忽略单个字段为字段添加@JsonIgnore注解,可以忽略该字段的序列化和反序列化。public class ArticleIgnore {

2020-10-06 11:58:48 16779

原创 Google Guava之RateLimiter核心源码解读(中)

RateLimiter是Google Guava框架的一个限速器,通常用于控制对某个资源的访问速率。限速常见的有两种实现方式,一种是令牌桶,另一种是漏桶。RateLimiter选择了令牌桶作为其底层实现,按照固定速率投放令牌,同时支持突发流量。在上一篇中,我们先简单解读了Ticker和Stopwatch,它们是RateLimiter底层时间计算的基础。传送门:《Google Guava之RateLimiter核心源码解读(上)》这一篇,我们将要解读的是创建RateLimiter实例和获取许可的核心

2020-10-05 00:05:35 486

原创 Jackson修改字段名和自定义命名策略

>>Jackson系列教程 Jackson支持在处理数据的时候,使用不同于对象字段名的JSON名称(Jackson内部使用),来代替原来的字段名进行序列化和反序列化。主要有几种实现方式:使用@JsonProperty指定固定的名称进行名称映射;使用预定义的命名策略PropertyNamingStrategy,设置全局或单个类的命名策略;扩展PropertyNamingStrategy,实现自定义命名策略,读和写支持使用不同的命名策略。本篇内容基于Jackson 2.11.2版本.

2020-10-03 22:23:46 12276

原创 Google Guava之RateLimiter核心源码解读(上)

RateLimiter是Google Guava框架的一个限速器,通常用于控制对某个资源的访问速率。限速常见的有两种实现方式,一种是令牌桶,另一种是漏桶。RateLimiter选择了令牌桶作为其底层实现,按照固定速率投放令牌,同时支持突发流量。本篇先来解读一下Ticker和Stopwatch,它们是RateLimiter底层时间计算的基础。代码基于Guava 23.0版本。TickerTicker的意思钟表,里面只有一个read()方法,用来获取当前时间。核心代码解读:public abst

2020-09-26 00:26:45 885

原创 全面总结Fastjson过滤字段、排除字段的5种方法(含示例)

1.通过注解指定不需要序列化的字段在不需要序列化的字段,添加@JSONField(serialize = false)注解可进行排除。public class DontSerializeAnnotation { @JSONField(serialize = false) private Long id; private String name; public Long getId() { return id; } public void s

2020-09-26 00:20:54 17426

原创 Java JUC工具包之CyclicBarrier与CountDownLatch

假设有5个人约好一起去旅行,那么一般来说有2种组织出行方式,一种是自己组织自由行,另一种是跟团旅行。在Java的JUC工具包中,有两个工具类可以类比这两种旅行方式,分别是CyclicBarrier和CountDownLatch。两种旅行模式1.自由旅行模式(CyclicBarrier)旅行出发当天,5个人(按照约好的时间和地点)相互等待。先到的人,等待未到的人,一旦人齐了,集体成员就同时出发。对应到CyclicBarrier类,就是:有多个工作者线程,其中先准备好的线程,阻塞等待(await()

2020-09-26 00:11:58 140

原创 基于WordPress花4天搭了个独立博客

博客地址:https://binarylife.icu/效果如下:

2020-09-08 00:27:16 108

JVM指令分析实例五(操作数栈)

本篇为《JVM指令分析实例》的第五篇,相关实例均使用Oracle JDK 1.8编译,并使用javap生成字节码指令清单。前几篇传送门:JVM指令分析实例一(常量、局部变量、for循环)JVM指令分析实例二(算术运算、常量池、控制结构)JVM指令分析实例三(方法调用、类实例)JVM指令分析实例四(数组、switch)预备知识局部变量表的变量槽(Variable Sl...

2018-10-14 23:29:05 887

JVM指令分析实例四(数组、switch)

本篇为《JVM指令分析实例》的第四篇,相关实例均使用Oracle JDK 1.8编译,并使用javap生成字节码指令清单。前几篇传送门:JVM指令分析实例一(常量、局部变量、for循环)JVM指令分析实例二(算术运算、常量池、控制结构)JVM指令分析实例三(方法调用、类实例)数组一维原始类型数组void createBuffer() {    int buffe...

2018-10-07 23:33:15 170

JVM指令分析实例二(算术运算、常量池、控制结构)

相关实例均使用Oracle JDK 1.8编译,并使用javap生成字节码指令清单。算术运算Java虚拟机通常基于操作数栈进行算术运算。只有iinc指令例外,它直接对局部变量进行自增操作。实例代码int align2agrain(int i, int grain) {    return ((i + grain - 1) & ~(grain - 1));}字节码指令...

2018-09-23 17:19:34 453

JVM指令分析实例一(常量、局部变量、for循环)

Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的操作码以及跟随其后的零至多个代表此操作所需参数的操作数所构成。虚拟机中许多指令并不包含操作数,只有一个操作码。Java虚拟机限制操作码的长度为1个字节,因此最多只能有256个指令。指令格式以下指令格式,是基于Oracle JDK编译后,通过javap工具生成的指令描述格式。<index> <opco...

2018-09-16 01:02:42 565

原创 Java Class文件结构实例分析(下)

发表文章之后,发现很多图片显示不了,请阅读我的公众号文章,以获得本文最佳体验:Java Class文件结构实例分析(下) 本篇我们继续分析Class文件结构的方法及属性部分内容,上节内容回顾请查看:Java Class文件结构实例分析(上)Class文件格式信息继续上节实例代码package chapter6;public class TestClass { ...

2018-09-07 22:59:16 221

原创 Java Class文件结构实例分析(上)

发表文章之后,发现很多图片显示不了,请阅读我的公众号文章,以获得本文最佳体验:Java Class文件结构实例分析(上) 本文假定读者对Java Class文件格式有一些基本的了解,建议结合相关书籍进行对照阅读。Class文件格式信息实例代码package chapter6;public class TestClass {    private int m;  ...

2018-09-07 22:56:15 253

Java Class文件结构实例分析(下)

发表文章之后,发现很多图片显示不了,请阅读我的公众号文章,以获得本文最佳体验:Java Class文件结构实例分析(下) 本篇我们继续分析Class文件结构的方法及属性部分内容,上节内容回顾请查看:Java Class文件结构实例分析(上)Class文件格式信息继续上节实例代码package chapter6;public class TestClass {  ...

2018-09-07 22:50:47 199

Java Class文件结构实例分析(上)

发表文章之后,发现很多图片显示不了,请阅读我的公众号文章,以获得本文最佳体验:Java Class文件结构实例分析(上) 本文假定读者对Java Class文件格式有一些基本的了解,建议结合相关书籍进行对照阅读。Class文件格式信息实例代码package chapter6;public class TestClass {    private int m;    ...

2018-09-07 22:39:35 169

原创 Javassist实现JDK动态代理

提到JDK动态代理,相信很多人并不陌生。然而,对于动态代理的实现原理,以及如何编码实现动态代理功能,可能知道的人就比较少了。接下一来,我们就一起来看看JDK动态代理的基本原理,以及如何通过Javassist进行模拟实现。JDK动态代理示例以下是一个基于JDK动态代理的hello world示例,在很多地方都可以看到类似的版本。public class DynamicProxyTe...

2018-08-12 19:07:52 3304

原创 Javassist实现JDK动态代理

提到JDK动态代理,相信很多人并不陌生。然而,对于动态代理的实现原理,以及如何编码实现动态代理功能,可能知道的人就比较少了。接下一来,我们就一起来看看JDK动态代理的基本原理,以及如何通过Javassist进行模拟实现。JDK动态代理示例以下是一个基于JDK动态代理的hello world示例,在很多地方都可以看到类似的版本。public class DynamicProxyT...

2018-08-12 19:04:15 279

原创 TCP协议之网络延时

影响TCP 网络时延的因素硬件速度 网络和服务器的负载 请求和响应报文的尺寸 客户端和服务器之间的距离 TCP 协议的技术复杂性TCP协议产生的时延TCP 连接建立握手; TCP 慢启动拥塞控制; 数据聚集的 Nagle 算法; 用于捎带确认的 TCP 延迟确认算法; TIME_WAIT 时延和端口耗尽。TCP连接建立TCP连接的建立,需要经历3个报文的交互过程,沟...

2018-08-05 01:07:23 12065

原创 TCP协议之网络延时

影响TCP 网络时延的因素硬件速度网络和服务器的负载请求和响应报文的尺寸客户端和服务器之间的距离TCP 协议的技术复杂性TCP协议产生的时延TCP 连接建立握手;TCP 慢启动拥塞控制;数据聚集的 Nagle 算法;用于捎带确认的 TCP 延迟确认算法;TIME_WAIT 时延和端口耗尽。TCP连接建立TCP连接的建立,需要经历3个报...

2018-08-05 01:03:36 1609

原创 Leetcode-两个排序数组的中位数

题目描述给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。示例 1:nums1 = [1, 3]nums2 = [2]中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]中位数是 (2 + 3)/2 = 2.5算法实现...

2018-07-22 00:53:01 219

原创 Leetcode-计算两个排序数组的中位数

题目描述给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。示例 1:nums1 = [1, 3]nums2 = [2]中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]中位数是 (2 + 3)/2 = 2.5算...

2018-07-22 00:43:28 494

原创 为什么Java String哈希乘数为31?

发表文章之后,发现很多图片显示不了,请阅读我的公众号文章,以获得本文最佳体验:为什么Java String哈希乘数为31? 前面简单介绍了[ 经典的Times 33 哈希算法 ],这篇我们通过分析Java 1.8 String类的哈希算法,继续聊聊对乘数的选择。String类的hashCode()源码/** Cache the hash code for the strin...

2018-07-15 16:55:41 2406 2

原创 经典的Times 33 哈希算法

一个好的散列函数通常倾向于“为不相等的对象产生不相等的散列码”。理想情况下,散列函数应该把集合中不相等的实例均匀地分布到所有可能的散列值上。要想完全达到这种理想的情形是非常困难的。幸运的是,相对接近这种理想情形则并不太困难。由Daniel J. Bernstein教授多年前在comp.lang.c发表的Times 33算法。 它是有史以来发布的最有效的哈希函数之一。算法介绍首先,引...

2018-07-13 08:15:19 2428

原创 无穷大的数都一样大吗?

发表文章之后,发现很多图片显示不了,请阅读我的公众号文章,以获得本文最佳体验:无穷大的数都一样大吗? 通常来说,每当提到无穷大,我们都会认为是无穷无尽,不可数的。但具体是多大,我们确是没有概念的。那么,对于无穷大的数:有大小之分吗?如果有,可以比较吗?如果可以比较,比较无穷大数有意义吗?我们知道,物理世界最小的单位可以描述为点,或者说用点来表示。一条直线由无...

2018-07-10 00:19:06 3833 2

通过行为参数化传递代码(Java)

行为参数化就是可以帮你处理频繁变更的需求的一种软件开发模式。接下来,让我们来看看如何应对不断变化的需求。 1.初试牛刀:筛选绿苹果一种常见的实现方式可能是这样:public static List<Apple> filterGreenApples(List<Apple> inventory) {    List<Apple> result =...

2018-07-07 18:07:02 268

计算机漫游

今天发一篇曾经的总结,主要涉及几个计算机思想。1. 计算机组成结构1.1 计算机基本构成三大核心部件:中央处理器、存储器、I/O设备中央处理器(CPU)算术/逻辑单元(ALU)寄存器PC(程序计数器)存储器(内存)物理上:由一组动态随机存取存储器(DRAM)芯片组成逻辑上:是一个线性的字节...

2018-07-07 17:58:39 203

原创 Linux下查找文件的一些应用场景

在实际应用中,我们经常会遇到各种查找文件的需求,比如:查找最新的n个文件查找包含某字符串的文件查找昨天修改的文件查找同级目录下,不同文件的最新一个文件(类似于数据库的分组查询场景:按名称分组,查询最新的文件)等等有木有?  下面是一些应用场景:  1、查找最近修改的文件 1)最近24小时内修改的文件[sam@strong shelltes...

2014-04-13 00:54:22 163

大型网站架构模式

《大型网站技术架构》读书笔记: 网站架构模式关于什么是模式,这个来自建筑学的词汇是这样定义的:“每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复工作”。模式的关键在于模式的可重复性,问题与场景的可重复性带来解决方案的可重复使用。   分层分层是企业应用系统中最常见的一种架构模式,将系统在横向...

2014-03-30 21:40:40 92

大型网站架构演化

《大型网站技术架构》读书笔记: 1.1大型网站软件系统的特点与传统企业应用系统相比,大型互联网应用系统有以下特点。高并发,大流量高可用海量数据用户分布广泛,网络情况复杂安全环境恶劣需求快速变更,发布频繁渐进式发展 1.2大型网站架构演化发展历程大型网站的技术挑战主要来自于庞大的用户,高并发的访问和海量的数据,任何简单的业务一旦需要处理数以P计...

2014-03-30 17:30:55 129

原创 有n个人,按顺序围成一圈,从第1个开始报数,第m个出列,直至所有人都出列...

问题:有n个人,按顺序围成一圈,从第1个开始报数,第m个出列,直至所有人都出列。 1、设计思路1)使用集合存放n个值;循环n次 {  每次获取第m个,并删除第m个} 1.1)循环n次通过for循环n次,或者通过while语句遍历集合至空为止 1.2)每次获取第m个,并删除第m个循环查找,每次循环计数1,当计数值count==m时,获取值并删除...

2014-03-09 21:24:04 3053

有时候需要学会放手,别让自己太劳累

工作当中,无论自已处于哪个位置,总喜欢去看看项目的代码,动手写一些代码。因为只有这样,自己心里才有底,才比较踏实。有底,是指了解了代码的实际处理逻辑,并且自己很清楚代码是否存在问题。踏实,是指在有了底之后,能够更好的与客户进行沟通;而且看代码写代码是最实在的东西,对于喜欢写代码的人来说心里是踏实的,实实在在的。 最近负责管理一个项目,大家都比较忙,但我自己更忙...我的工作内容包括但...

2013-12-11 00:11:14 341

axis 1.4调用cxf 2.x服务接口,自定义对象数组参数丢失问题

最近在做一个项目,遇到了一个奇怪的问题:webservice接口能够正常调用,但却出现了部分参数传递正确,个别参数的值丢失(null)的情况。由于以前未曾遇过,为了这个问题还折腾了几天,那个苦呀。 简单描述一下需求:项目中有一个现网的webservice接口,原来是A厂家提供服务端,B厂家提供客户端进行调用。现在A厂家不做了,需要由我们来实现服务端。 好,开始干吧...,嗯....

2013-12-10 22:13:38 849

Java Web之高级应用PPT-张孝祥

Java Web之高级应用。—献给中国SD2C软件技术大会 讲师:张孝祥 Tomcat中的类装载器 为Tomcat配置Https协议功能 为站点增加自动登录和单点登录功能 解决Web开发中的相对路径问题 为网站配置相同页眉和页脚的技巧 总结分析Web开发中的各种字符乱码问题

2009-05-23

计算机网络课件-比较全

计算机网络课件。讲得比较细、比较全,从浅到深,不错,推荐下载

2009-05-23

jQuery 基础教程

jQuery 基础教程, 共有八节, 希望对大家有帮助

2009-04-09

jQuery 1.3 中文参考.chm

jQuery 1.3自从2008年1月14日发布后,后引来了各界的关注。我们也随即投入到翻译文档的工作中来。经过4天的努力,终于完工了。 由于赶上中国农历新年,本人未能及时制作成CHM版本,特意在开工的当天将其整理完成,由于时间赶的比较急,难免会有错误,如发现错误,请联系本人,我将会及时修正。 自从jQuery面世以来,它以其快速、简洁,能够很轻易地处理HTML文档、控制事件、给页面添加动画和Ajax效果等打动着所有关注它的人的心,本人也不例外,但长期以来,类似与本手册的(带查询功能),仅仅只有kuomart(这里不太清楚具体名称,仅仅从本人拥有的手册上找到这个名称,暂时先这样称呼,如有知道请告知!)制作的,但长期没有更新,给大家学习jQuery带来不便。为方便自己也为方便所有爱好jQuery的朋友,本人将CHM重新整理,并和jQuery中文API的整理者 Shawphy 同步更新本CHM手册,以便大家能及时了解其最新资讯!由于本人精力有限,难免出现差错,请谅解并告知 Email ! 本CHM手册旨在帮助广大jQuery爱好者快速了解jquery库和jquery开发人员提供一份速查手册。 有关JQUERY相关资料请浏览 :http://code.google.com/p/jquery-api-zh-cn/downloads/list

2009-04-09

Java IO与NIO文档

Java IO与NIO开发文档

2007-12-14

JSF及Myfaces帮助文档

JSF及Myfaces帮助文档

2007-12-14

JSF API

自己制作的jsf api

2007-12-14

Spring Framework 中文开发参考手册

Spring Framework 中文开发参考手册

2007-12-14

ibatis 开发指南

ibatis 开发指南

2007-12-14

《Java Swing(第二版)》

《Java Swing(第二版)》.chm

2007-12-14

快速成Linux系统管理员教程

快速成Linux系统管理员教程

2007-12-14

Linux系统常用命令快速入门

Linux系统常用命令快速入门

2007-12-14

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

TA关注的人

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