03 2021 档案
摘要:前言 蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。 今天我们使用蒙特卡洛方法来求圆周
阅读全文
摘要:前言 在知乎上看到一个好玩的问题:房间里有100个人,每人都有100元钱,他们在玩一个游戏。每轮游戏中,每个人都要拿出一元钱随机给另一个人,最后这100个人的财富分布是怎样的? 今天使用java中的GUI来模拟一下。 实现 效果图如下 红色表示负债,模拟次数大概150W次。 代码实现 可视化主类 i
阅读全文
摘要:前言 牛顿迭代法(Newton's method)又称为牛顿-拉夫逊方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。方法使用函数f(x)
阅读全文
摘要:简介 每种数据结构,都有自己的遍历方式,对于二叉树,有前序遍历,中序遍历,后序遍历,对于图,有深度优先遍历和广度优先遍历,今天先看深度优先遍历。 我们从0顶点开始遍历,深度遍历结果0-1->2->3->4->5->6。因为图中可能存在环,所以我们需要记录已经访问过的顶点。 代码实现 import j
阅读全文
摘要:简介 上一篇 我们实现了图的深度优先遍历及各种应用,使用广度优先遍历也是可以实现的。 从顶点0开始遍历,结果为0->1->3->2->6->4->5。 代码实现 import java.util.ArrayList; import java.util.LinkedList; import java.
阅读全文
摘要:简介 一个图主要包括顶点和边两部分。 自环边 自己到自己形成的边,如图中的0顶点 平行边 顶点3和顶点4这种情况就是平行边 简单图 没有自环边和平行边的图 连通图 图中任意两个顶点之间都有路径 连通分量 图中包含的连通子图的个数,如上图有2个连通分量 有环图 图中顶点之间可以形成环,上图0,1,2,
阅读全文
摘要:简介 将阿拉伯数字转换成中文大写,如将123.45转换成壹佰贰拾叁元肆角伍分。 代码实现 import java.util.regex.Pattern; public class CurrencyUtil { private CurrencyUtil() { } //无效字符 private sta
阅读全文
摘要:前言 短网址就是将一个长网址转换成一个短网址,访问短网址会重定向到原来的长网址,短网址会更利于传播和推广。微博就会将我们发的长网址转换成短网址, 显示效果 查看HTML源码 微博将 https://www.cnblogs.com/strongmore/p/14520111.html 转换成了http
阅读全文
摘要:前言 在客户端如Android的时候会涉及到版本的比较,版本号示例 1.0.0 1.0.a1 代码实现 public class Client { private static int versionCompare(String version1, String version2) { String
阅读全文
摘要:简介 Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档。 Markdown 语言在 2004 由约翰·格鲁伯(英语:John Gruber)创建。 Markdown 编写的文档可以导出 HTML 、Word、图像、PDF、Epub 等多种格式的文档。 Markdow
阅读全文
摘要:错误描述 Integer totalCount = jdbcTemplate.query("select count(*) as count from xxx", (rs) -> { return rs.getInt("count"); }); 错误信息 Caused by: com.microso
阅读全文
摘要:简介 GIF图形交换格式是一种位图图形文件格式,以8位色(即256种颜色)重现真彩色的图像。它实际上是一种压缩文档,采用LZW压缩算法进行编码,有效地减少了图像文件在网络上传输的时间。它是目前广泛应用于网络传输的图像格式之一。 优点 优秀的压缩算法使其在一定程度上保证图像质量的同时将体积变得很小。
阅读全文
摘要:简介 布隆过滤器适合大数据判重的场景,如网络爬虫中判断一个URL是否已经爬取过,判断一个用户是否在黑名单中,判断一个邮件是否是垃圾邮件,等等。 优点:占用空间小,效率高,简而言之,就是以正确率换空间和时间。 缺点:有一定的误判率,一个URL经过布隆过滤器判断没爬取过,那么一定没爬取过,一个URL经过
阅读全文
摘要:前言 java中哈希码有以下约定: 在同一个java程序执行过程中,不论调用hashCode方法多少次,都要返回相同的值, 两个对象的equals方法相同,hashCode方法一定相同, 两个对象的equals方法不相同,hashCode方法不一定不同, 两个对象的hashCode方法不相同,equ
阅读全文
摘要:简介 哈希算法简单来说就是将一个元素映射成另一个元素,可以简单分类两类, 加密哈希,如MD5,SHA256等, 非加密哈希,如MurMurHash,CRC32,DJB等。 今天要介绍的MurMurHash由Austin Appleby在2008年发明,与其它流行的哈希函数相比,对于规律性较强的key
阅读全文
摘要:问题介绍 洗牌,简单来说就是随机交换牌的位置,但是如何才是公平的呢,洗牌的结果是所有元素的一个排列。一副牌如果有 n 个元素,最终排列的可能性一共有 n! 个。公平的洗牌算法,应该能等概率地给出这 n! 个结果中的任意一个。这样的暴力解法时间复杂度为O(n!),不可取。公平是说,对于每一个排列,每一
阅读全文
摘要:题目描述 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器。 示例 1:
阅读全文
摘要:简介 LFU(Least Frequently Used),即最不经常使用,淘汰一定时期内访问次数最少的元素,如果访问次数相同,则比较最新一次的访问时间。 代码实现1 import java.util.Comparator; import java.util.HashMap; import java
阅读全文
摘要:题目描述 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。 '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。 示例 1: 输入:s = "aa" p = "a" 输出:false
阅读全文
摘要:简介 算数公式有3种表示方法,前缀表达式,中缀表达式,后缀表达式,区别在于运算符相对于操作数的位置不同。中缀表达式对于人来说很好理解,但对计算机来说很复杂,所以一般会将中缀转前缀或后缀来处理。 举例如下 (3 + 4) × 5 - 6 中缀表达式 - × + 3 4 5 6 前缀表达式 3 4 +
阅读全文
摘要:题目描述 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。 示例 1: 输入:x = 121 输出:true 示例 2: 输入:x = -121 输出:f
阅读全文