- 博客(108)
- 资源 (12)
- 问答 (2)
- 收藏
- 关注
原创 我的网站收藏夹,用来自己收藏一些网站
Crayon AI ChatGPT Image Generator ChatGPT4oMini Old Character AI Gen Alpha Slang X Image Generator ViduVideo Studio Batoto
2024-09-22 19:17:24 226
原创 一个AI图片生成工具导航网站
目标是通过收集当下的一些工具,然后进行分类管理,一方面方便大家发现新的工具,另一方面能够更加有针对性、高效的找到自己想要的工具。由于网站的功能和内容还在建设中,因此在体验上还存在许多问题。例如,虽然已经整理了很多网站和工具,但是分类还没有完全做好。上周末上线了一个AI图片生成工具导航网站,主要是面向AI图片工具这个垂直领域。最直白的道理,为什么有阿里和京东,还要有拼多多?点击左下角“阅读原文”,可直达AI图片工具导航网站.AI时代,要善于利用工具!目前上线一周,已经收集了300+网站和工具。
2024-06-28 21:01:32 271
原创 布隆过滤器之误识别率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 1946 1
原创 什么是布隆过滤器(Bloom Filter)?
在日常工作中,有一个比较常见的需求,就是需要判断一个元素是否在集合中。例如以下场景:给定一个IP黑名单库,检查指定IP是否在黑名单中?在接收邮件的时候,判断一个邮箱地址是否为垃圾邮件?在文字处理软件中,检查一个英文单词是否拼写正确?遇到这种问题,通常直觉会告诉我们,应该使用集合这种数据结构来实现。例如,先将IP黑名单库的所有IP全部存储到一个集合中,然后再拿指定的IP到该集合中检查是否存在,如果存在则说明该IP命中黑名单。通过一段Java代码,来模拟IP黑名单库的存储和检查。public
2020-10-26 09:23:46 850 1
原创 保持好奇心,把时间花在刀刃上
保持好奇心如果你自己或身边有小孩,你会发现,小孩对未曾接触过的东西都会非常好奇,而且时常会问为什么,这是我们认识世界的方式。随着年龄的增长,日常的东西见多了,好奇心也会随之减弱,能激起你好奇心的东西会越来越少。之所以会出现这种情况,一方面是因为已经习以为常,环境的限制使你很少接触到更新鲜的事物;另一方面是由于人的懒惰,凡事容易浮于表面,体会不到深入了解一件事物之美。因为好奇心,有的人阅读了大量小说,不仅作文写得好,还可能成为金庸大侠。因为好奇心,有的人研读了大量源码,解决了各种宇宙难题,最终成为程
2020-10-15 23:12:17 717 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 202
原创 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 1260
原创 这个国庆几乎无假期,写了9篇Jackson和4篇Fastjson基础教程
这个国庆八天长假,有人回家有人去旅游。而我,每天买菜做饭洗碗陪小孩玩,在附近园区玩了一趟,看了部姜子牙。剩下的时间就是写文章,每天都写,虽然比较简单,但写9篇Fastjson和4篇Jackson教程也不容易。下面把所有文章整理一下。Jackson教程Jackson是一个基于Java的高性能JSON处理器,其核心功能是实现数据与Java对象之间的序列化/反序列化。Jackson最初只是实现JSON数据的绑定,但是发展至今,它也支持其他格式的数据,只要有对应的解析器和生成器就可以了。Jackson
2020-10-08 20:29:36 163
原创 Jackson全局配置和JsonFormat注解设置日期格式
>>《轻松学习Jackson》教程 在日常开发中,日期是很常见的一种数据类型,特别是在与数据库打交道的场景。为了提升日期的可读性,通常会将日期进行格式化之后再输出,用于前端展示和日志打印等场景。Jackson在对日期进行序列化时,也支持按指定的格式进行序列化。本篇内容基于Jackson 2.11.2版本,马上开始学习吧。默认日期格式创建一个代表产品的类Product,其中发布时间publishDate为Date类型。public class Product { private.
2020-10-07 16:49:49 11313
原创 Jackson使用JsonFilter注解过滤字段
通过《Jackson忽略字段不序列化字段的3种方法》一讲我们知道,JsonIgnore和JsonIgnoreProperties都可以用来忽略掉指定的字段。这两个注解有个共同点,就是都在添加注解后就指明了需要过滤的字段。如果想要在序列化的时候,才指定需要过滤的字段,那么可以使用JsonFilter注解来实现。本篇内容基于Jackson 2.11.2版本,马上开始学习吧。过滤类的字段为需要过滤字段的类添加JsonFilter注解。@JsonFilter("myFilter")public clas
2020-10-06 12:01:22 6165
原创 Jackson忽略字段不序列化字段的3种方法
在上一篇中,我们学习了如何忽略值为null的字段《Jackson忽略null字段的3种方法》。相对于忽略null字段,在实际应用中,忽略某些字段的序列化可能更为常见。Jackson对于如何序列化字段、过滤字段的方法多种多样,非常丰富,这一节先来了解一下3种简单的方法。本篇内容基于Jackson 2.11.2版本,马上开始学习吧。使用JsonIgnore注解忽略单个字段为字段添加@JsonIgnore注解,可以忽略该字段的序列化和反序列化。public class ArticleIgnore {
2020-10-06 11:58:48 18708
原创 Google Guava之RateLimiter核心源码解读(中)
RateLimiter是Google Guava框架的一个限速器,通常用于控制对某个资源的访问速率。限速常见的有两种实现方式,一种是令牌桶,另一种是漏桶。RateLimiter选择了令牌桶作为其底层实现,按照固定速率投放令牌,同时支持突发流量。在上一篇中,我们先简单解读了Ticker和Stopwatch,它们是RateLimiter底层时间计算的基础。传送门:《Google Guava之RateLimiter核心源码解读(上)》这一篇,我们将要解读的是创建RateLimiter实例和获取许可的核心
2020-10-05 00:05:35 570
原创 Jackson修改字段名和自定义命名策略
>>Jackson系列教程 Jackson支持在处理数据的时候,使用不同于对象字段名的JSON名称(Jackson内部使用),来代替原来的字段名进行序列化和反序列化。主要有几种实现方式:使用@JsonProperty指定固定的名称进行名称映射;使用预定义的命名策略PropertyNamingStrategy,设置全局或单个类的命名策略;扩展PropertyNamingStrategy,实现自定义命名策略,读和写支持使用不同的命名策略。本篇内容基于Jackson 2.11.2版本.
2020-10-03 22:23:46 13582
原创 Google Guava之RateLimiter核心源码解读(上)
RateLimiter是Google Guava框架的一个限速器,通常用于控制对某个资源的访问速率。限速常见的有两种实现方式,一种是令牌桶,另一种是漏桶。RateLimiter选择了令牌桶作为其底层实现,按照固定速率投放令牌,同时支持突发流量。本篇先来解读一下Ticker和Stopwatch,它们是RateLimiter底层时间计算的基础。代码基于Guava 23.0版本。TickerTicker的意思钟表,里面只有一个read()方法,用来获取当前时间。核心代码解读:public abst
2020-09-26 00:26:45 928
原创 全面总结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 19469
原创 Java JUC工具包之CyclicBarrier与CountDownLatch
假设有5个人约好一起去旅行,那么一般来说有2种组织出行方式,一种是自己组织自由行,另一种是跟团旅行。在Java的JUC工具包中,有两个工具类可以类比这两种旅行方式,分别是CyclicBarrier和CountDownLatch。两种旅行模式1.自由旅行模式(CyclicBarrier)旅行出发当天,5个人(按照约好的时间和地点)相互等待。先到的人,等待未到的人,一旦人齐了,集体成员就同时出发。对应到CyclicBarrier类,就是:有多个工作者线程,其中先准备好的线程,阻塞等待(await()
2020-09-26 00:11:58 175
JVM指令分析实例五(操作数栈)
本篇为《JVM指令分析实例》的第五篇,相关实例均使用Oracle JDK 1.8编译,并使用javap生成字节码指令清单。前几篇传送门:JVM指令分析实例一(常量、局部变量、for循环)JVM指令分析实例二(算术运算、常量池、控制结构)JVM指令分析实例三(方法调用、类实例)JVM指令分析实例四(数组、switch)预备知识局部变量表的变量槽(Variable Sl...
2018-10-14 23:29:05 912
JVM指令分析实例四(数组、switch)
本篇为《JVM指令分析实例》的第四篇,相关实例均使用Oracle JDK 1.8编译,并使用javap生成字节码指令清单。前几篇传送门:JVM指令分析实例一(常量、局部变量、for循环)JVM指令分析实例二(算术运算、常量池、控制结构)JVM指令分析实例三(方法调用、类实例)数组一维原始类型数组void createBuffer() { int buffe...
2018-10-07 23:33:15 198
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 487
JVM指令分析实例一(常量、局部变量、for循环)
Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的操作码以及跟随其后的零至多个代表此操作所需参数的操作数所构成。虚拟机中许多指令并不包含操作数,只有一个操作码。Java虚拟机限制操作码的长度为1个字节,因此最多只能有256个指令。指令格式以下指令格式,是基于Oracle JDK编译后,通过javap工具生成的指令描述格式。<index> <opco...
2018-09-16 01:02:42 590
原创 Java Class文件结构实例分析(下)
发表文章之后,发现很多图片显示不了,请阅读我的公众号文章,以获得本文最佳体验:Java Class文件结构实例分析(下) 本篇我们继续分析Class文件结构的方法及属性部分内容,上节内容回顾请查看:Java Class文件结构实例分析(上)Class文件格式信息继续上节实例代码package chapter6;public class TestClass { ...
2018-09-07 22:59:16 250
原创 Java Class文件结构实例分析(上)
发表文章之后,发现很多图片显示不了,请阅读我的公众号文章,以获得本文最佳体验:Java Class文件结构实例分析(上) 本文假定读者对Java Class文件格式有一些基本的了解,建议结合相关书籍进行对照阅读。Class文件格式信息实例代码package chapter6;public class TestClass { private int m; ...
2018-09-07 22:56:15 275
Java Class文件结构实例分析(下)
发表文章之后,发现很多图片显示不了,请阅读我的公众号文章,以获得本文最佳体验:Java Class文件结构实例分析(下) 本篇我们继续分析Class文件结构的方法及属性部分内容,上节内容回顾请查看:Java Class文件结构实例分析(上)Class文件格式信息继续上节实例代码package chapter6;public class TestClass { ...
2018-09-07 22:50:47 222
Java Class文件结构实例分析(上)
发表文章之后,发现很多图片显示不了,请阅读我的公众号文章,以获得本文最佳体验:Java Class文件结构实例分析(上) 本文假定读者对Java Class文件格式有一些基本的了解,建议结合相关书籍进行对照阅读。Class文件格式信息实例代码package chapter6;public class TestClass { private int m; ...
2018-09-07 22:39:35 185
原创 Javassist实现JDK动态代理
提到JDK动态代理,相信很多人并不陌生。然而,对于动态代理的实现原理,以及如何编码实现动态代理功能,可能知道的人就比较少了。接下一来,我们就一起来看看JDK动态代理的基本原理,以及如何通过Javassist进行模拟实现。JDK动态代理示例以下是一个基于JDK动态代理的hello world示例,在很多地方都可以看到类似的版本。public class DynamicProxyTe...
2018-08-12 19:07:52 3341
原创 Javassist实现JDK动态代理
提到JDK动态代理,相信很多人并不陌生。然而,对于动态代理的实现原理,以及如何编码实现动态代理功能,可能知道的人就比较少了。接下一来,我们就一起来看看JDK动态代理的基本原理,以及如何通过Javassist进行模拟实现。JDK动态代理示例以下是一个基于JDK动态代理的hello world示例,在很多地方都可以看到类似的版本。public class DynamicProxyT...
2018-08-12 19:04:15 306
原创 TCP协议之网络延时
影响TCP 网络时延的因素硬件速度 网络和服务器的负载 请求和响应报文的尺寸 客户端和服务器之间的距离 TCP 协议的技术复杂性TCP协议产生的时延TCP 连接建立握手; TCP 慢启动拥塞控制; 数据聚集的 Nagle 算法; 用于捎带确认的 TCP 延迟确认算法; TIME_WAIT 时延和端口耗尽。TCP连接建立TCP连接的建立,需要经历3个报文的交互过程,沟...
2018-08-05 01:07:23 12433
原创 TCP协议之网络延时
影响TCP 网络时延的因素硬件速度网络和服务器的负载请求和响应报文的尺寸客户端和服务器之间的距离TCP 协议的技术复杂性TCP协议产生的时延TCP 连接建立握手;TCP 慢启动拥塞控制;数据聚集的 Nagle 算法;用于捎带确认的 TCP 延迟确认算法;TIME_WAIT 时延和端口耗尽。TCP连接建立TCP连接的建立,需要经历3个报...
2018-08-05 01:03:36 1757
原创 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 241
原创 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 530
原创 为什么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 2463 2
原创 经典的Times 33 哈希算法
一个好的散列函数通常倾向于“为不相等的对象产生不相等的散列码”。理想情况下,散列函数应该把集合中不相等的实例均匀地分布到所有可能的散列值上。要想完全达到这种理想的情形是非常困难的。幸运的是,相对接近这种理想情形则并不太困难。由Daniel J. Bernstein教授多年前在comp.lang.c发表的Times 33算法。 它是有史以来发布的最有效的哈希函数之一。算法介绍首先,引...
2018-07-13 08:15:19 2534
原创 无穷大的数都一样大吗?
发表文章之后,发现很多图片显示不了,请阅读我的公众号文章,以获得本文最佳体验:无穷大的数都一样大吗? 通常来说,每当提到无穷大,我们都会认为是无穷无尽,不可数的。但具体是多大,我们确是没有概念的。那么,对于无穷大的数:有大小之分吗?如果有,可以比较吗?如果可以比较,比较无穷大数有意义吗?我们知道,物理世界最小的单位可以描述为点,或者说用点来表示。一条直线由无...
2018-07-10 00:19:06 4389 2
通过行为参数化传递代码(Java)
行为参数化就是可以帮你处理频繁变更的需求的一种软件开发模式。接下来,让我们来看看如何应对不断变化的需求。 1.初试牛刀:筛选绿苹果一种常见的实现方式可能是这样:public static List<Apple> filterGreenApples(List<Apple> inventory) { List<Apple> result =...
2018-07-07 18:07:02 297
计算机漫游
今天发一篇曾经的总结,主要涉及几个计算机思想。1. 计算机组成结构1.1 计算机基本构成三大核心部件:中央处理器、存储器、I/O设备中央处理器(CPU)算术/逻辑单元(ALU)寄存器PC(程序计数器)存储器(内存)物理上:由一组动态随机存取存储器(DRAM)芯片组成逻辑上:是一个线性的字节...
2018-07-07 17:58:39 230
原创 Linux下查找文件的一些应用场景
在实际应用中,我们经常会遇到各种查找文件的需求,比如:查找最新的n个文件查找包含某字符串的文件查找昨天修改的文件查找同级目录下,不同文件的最新一个文件(类似于数据库的分组查询场景:按名称分组,查询最新的文件)等等有木有? 下面是一些应用场景: 1、查找最近修改的文件 1)最近24小时内修改的文件[sam@strong shelltes...
2014-04-13 00:54:22 188
大型网站架构模式
《大型网站技术架构》读书笔记: 网站架构模式关于什么是模式,这个来自建筑学的词汇是这样定义的:“每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复工作”。模式的关键在于模式的可重复性,问题与场景的可重复性带来解决方案的可重复使用。 分层分层是企业应用系统中最常见的一种架构模式,将系统在横向...
2014-03-30 21:40:40 131
大型网站架构演化
《大型网站技术架构》读书笔记: 1.1大型网站软件系统的特点与传统企业应用系统相比,大型互联网应用系统有以下特点。高并发,大流量高可用海量数据用户分布广泛,网络情况复杂安全环境恶劣需求快速变更,发布频繁渐进式发展 1.2大型网站架构演化发展历程大型网站的技术挑战主要来自于庞大的用户,高并发的访问和海量的数据,任何简单的业务一旦需要处理数以P计...
2014-03-30 17:30:55 166
原创 有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 3120
Java Web之高级应用PPT-张孝祥
2009-05-23
jQuery 1.3 中文参考.chm
2009-04-09
读、写、清空文件同步难题!朋友们请帮忙!
2008-12-26
SSH中使用quartz产生了好多重复的日志
2008-11-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人