自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (2)
  • 收藏
  • 关注

原创 40亿个非负整数中找到出现两次的数和中位数

问题现有40亿个32位的无符号整数(0~4294967295),可以最多使用1GB,找出出现两次的数补充问题:最多用10MB,找到中位数思路问题一:可以申请一个长度为 4294967295 * 2 的bitmap,用两个位置表示一个词频,首次遇到数num,则bitArr[num2 + 1]和bitArr[num2] 置为01,第二次出现置为10,第三次出现置为11,之后再出现则不予理睬再次遍历bitArr,若bitArr[i2 + 1]和bitArr[i2]为10,那么就对该数进行记录问题二:需

2020-07-03 11:57:25 371

原创 40亿非负整数中找到未出现的数

题目现有一个包含40亿个无符号整数(32位,0~4294967295)的文件,找到其中所有未出现过的数要求内存限制1GB思路可以申请一个长度为4294967295的bitArr,每个位置只可以为0或1。8个bit为1B,所以内存大约要500MB。遍历40亿个无符号整数,遇到某个数A就将bitArr[A]置为1遍历完成后,再次遍历bitArr,哪些位置不是1,则哪些数就没出现过进阶问题内存限制为10MB,但是只需要找到一个未出现的数即可思路将4294967295分成64个区间(由内存限制

2020-07-03 11:26:04 354

原创 只用2GB内存在20亿个数中找到次数最多的数

题目有一个包含20亿个全是32位整数的大文件,在其中找到出现次数最多的数要求内存限制2GB思路使用哈希表进行存储的话,key需要4B,value需要4B,20亿个数需要16GB,2亿个数需要1.6GB把包含20亿个数的大文件哦那个过哈希函数(假设哈希函数足够优秀)分成16个小文件(由内存限制决定),根据哈希函数的性质,同一种数不会分到不同的小文件上,同时每个小文件的数不会大于2亿种。接下来就通过哈希表进行统计,最后选出16个小文件中各自的第一名即可。...

2020-07-03 11:08:02 302

原创 认识布隆过滤器

通过一个案例来认识布隆过滤器题目:不安全的网页黑名单包含100亿个黑名单网页,每个网页最多占用64B。现在想要实现一个网页过滤器系统,可根据URL判断该网页是否在黑名单上。要求:该系统允许有一定的判断失误率(不高于万分之一)使用的额外空间不超过30GB首先认识哈希函数典型的哈希函数都有无限的输入值域当哈希函数传入相同的输入值时,返回值一样给哈希函数传入不同的输入值时,返回值可能一样也可能不一样(输出域有限S)很多不同的输入值所得到的返回值会均匀分布在S上(决定哈希函数的优略)布

2020-07-02 11:11:11 198

原创 Lock对象的使用

Lock对象在功能上比sybchronized更加丰富。ReentrantLock类使用ReentrantLock实现同步调用ReentrantLock对象的lock()获取锁,调用unlock()释放锁,如下lock的使用public class MyService { private Lock lock = new ReentrantLock(); public void testMethod() { lock.lock(); for (in

2020-06-29 21:44:11 2412

原创 多线程之线程间通信

一、wait/notify机制

2020-06-28 15:06:19 211

原创 多线程之对象及变量的并发访问

synchronized同步方法首先需要了解到:在方法内部的变量是线程安全的,不会存在非线程安全问题实例变量非线程安全问题例如:class Test { private int num; public void change(String string) { try { if(string.equals("a")) { num = 100; Thread.sleep(2000); } else { num = 200; } } catch(I

2020-06-26 20:45:01 347

原创 数据库进阶(以Mysql为例)

(该部分不包含数据库的基本操作)mysql编码1、查看mysql编码在命令窗口登录mysql后输入一下命令查看show variables like ‘character%’;2、设置mysql编码在我们之前的解压包中,my-default.ini 就是我们默认的配置文件,mysql在启动会自动去mysql应用程序的文件中查找my.ini的配置文件(自行创建)(配置如下)[mysqld]character‐set‐server=utf8collation‐server=utf8_gen

2020-06-20 11:49:27 558

原创 java多线程技能

进程和多线程进程:程序的一次执行实例,正在执行的程序等。(每个进程都有自己是状态,每个进程都有自己的虚拟地址空间 ,进程是操作系统分配资源的基本单位 )线程:线程是客户端/应用中的单位,是进程的执行路径。一个进程可以拥有多个线程。 多个线程可以读写同一块内存(一个进程无法直接访问另一进程的内存)。使用多线程1.创建线程的方式继承Thread类,重写run(),创建线程实例后调用start()启动实现Runnable接口,重写run(),创建线程实例后调用start()启动区别:使用第一种具有局

2020-05-09 10:49:19 144

原创 排序算法之基数排序(桶排序)JAVA

排序过程按从低位到高位的顺序对数组中的每个元素排序例如: 12 , 3 , 21 , 56 , 84第一轮排序:21 , 12 , 3 , 84 , 56第二轮排序:3 , 12 , 21 , 56 , 84简言之就是,从低位到高位,从小到大排序的各项指标平均时间复杂度:O(NM)最坏时间复杂度:O(NM)空间复杂度:O(M)是否稳定:稳定排序实现在这里插入代码片pu...

2020-05-06 21:53:27 180

原创 排序算法之计数排序(JAVA)

排序过程1.找出待排序的数组中最大和最小的元素2.统计数组中每个值为出现的次数,存入数组位置等于该值处3.对所有的计数累加sum4.反向填充目标数组:将计数数组的元素顺序倒出到新数组中,每倒出一个元素,计数数组的计数就减一(sum也减一),sum减到0结束排序的各项指标平均时间复杂度:O(N+K)最坏时间复杂度:O(N+K)空间复杂度:O(N+K)是否稳定:稳定排序实现在这里...

2020-05-06 21:35:28 200

转载 java.lang.ExceptionInInitializerError解决办法

如何解决Exception in thread “main” java.lang.ExceptionInInitializerError需要记住以下几点:  1. "Exception in thread “main” java.lang.ExceptionInInitializerError"意味着异常出现在主线程,并且是LinkageError的一个子类java.lang.Exceptio...

2020-05-06 21:18:29 30874 1

原创 排序算法之堆排序(JAVA)

排序过程首先将数组元素建成大小为n的大顶堆(每个结点的值大于它的孩子的值),将堆顶元素和数组最后一个元素进行交换,再将除了最后一个数的n-1个元素建立成大顶堆,再将最大元素和数组倒数第二个元素进行交换,重复直至堆大小减为1。排序的各项指标平均时间复杂度:O(NlogN)最坏时间复杂度:O(NlogN)空间复杂度:O(1)是否稳定:不稳定排序实现在这里插入代码片public sta...

2020-05-06 19:36:55 201

原创 排序算法之快速排序(JAVA)

排序过程在数组中随机选一个数(默认数组首个元素),数组中小于等于此数的放在左边,大于此数的放在右边。排好该元素后,再对该元素两边递归调用快速排序,重复这个过程。排序的各项指标平均时间复杂度:O(NlogN)最坏时间复杂度:O(N^2)空间复杂度:O(logN)是否稳定:不稳定排序实现在这里插入代码片public static void quickSort(int[] arr) {...

2020-05-06 17:09:04 163

原创 排序算法之归并排序(JAVA)

排序过程首先对数组进行拆分,每次都一分为二。拆分结束后,让数组中的每一个数单独成为长度为1的区间。最后,再两两一组有序合并(该过程完成排序),得到长度为2的有序区间,依次进行,直到合成整个区间。...

2020-05-06 15:27:05 204

原创 排序算法之选择排序(JAVA)

排序过程首先从0—N-1区间上选择一个最小值,将其与0位置上的元素进行交换,然后再在1—N-1范围上选取最小值与1位置上的元素进行交换。重复过程直到剩下最后一个元素,数组即为有序。排序的各项指标...

2020-05-06 14:37:34 141

原创 排序算法之插入排序(JAVA)

排序过程首先位置1上的数和位置0上的数进行比较,如果位置1上的数大于位置0上的数,将位置0上的数向后移一位,将1插入到0位置,否则不作任何处理。接下来每次插入的位置k依次和之前的数进行比较,找到属于自己的位置。排序的各项指标平均时间复杂度:O(N^2)最坏时间复杂度:O(N^2)空间复杂度:O(1)是否稳定:稳定排序实现在这里插入代码片public static void ins...

2020-05-06 14:25:31 158

原创 排序算法之冒泡排序(JAVA)

排序过程从小到大进行排序,首先交换的区间为0—N-1,将前一个数和后一个数进行比较,前面大于后面,交换两个数,否则不交换,该轮将最大的数放到了最右端。第二轮比较区间为0—N-2,前面大于后面,交换两个数否则不交换。依次进行。最后范围只剩一个数时数组即为有序。排序的各项指标平均时间复杂度:O(N^2)最坏时间复杂度:O(N^2)空间复杂度:O(1)是否稳定:稳定排序实现在这里插入代码...

2020-05-06 14:13:15 145

原创 SpringBoot学习之路,详细到位

一、了解SpringBoot1.什么是springBootSpringBoot是Spring的一个子工程,你只需要“run”就可以非常轻易的构建独立的、生产级别的Spring应用。使用它只需要很少的配置就可以运行。我们可以使用SpringBoot创建JAVA应用,并使用java-jar启动它,就能得到一个生产级别的web工程。2.为什么要学习SpringBoot1)解决复杂的配置2)解...

2020-04-24 21:43:50 163

原创 BFPRT算法--通俗易懂

BFPRT算法解决问题:找到一个无序数组中第K大(小)的数,且时间复杂度O(N)在介绍前,给出一种相似且较好的解法(长期期望O(N))在数组中随机选择一个数num进行快排的patition过程,得到三个区间Anum然后看K是否在等于区域的的左右边界内部,在的话返回num,不在的就判断K跟num大小关系,然后选择A或C继续该过程,知道K在num的左右边界内部下面介绍BFPRT,跟上述区别主...

2020-03-12 11:21:52 335

原创 Manacher算法--简单易懂

Manacher算法主要解决的问题:一个字符串中最大的回文子串实现算法之前先对字符串进行处理(无须讨论奇、偶回文):比如传入一个字符串"abcbadd"把它处理成"#a#b#c#b#a#d#d#"(中间增加其他符号,计算长度时除以2即可)接下来,需要知道回文半径–如abcba, c的回文半径就是2准备一个回文半径数组arr[ ],里面存放字符串每个位置的回文右边界(从一个位置向右扩,最多...

2020-03-12 10:15:31 250

原创 KMP-简单易懂

解决问题str1中是否有某个子串等于str2,有则返回在str1中得到起始位置。举例:abcabck 和 abcabct 此时返回-1abcabcabct 和 abcabct 此时返回3常规思路用str2去比较str1从0开始的每一位,比较结束若有str2返回此时比较的起始位置,否则返回-1KMP算法思路先计算出str2的nexts数组(起始位-1,计算出其他位置最长前缀和最长后缀到...

2020-03-11 12:10:59 103

转载 一致性哈希

一致性哈希机器数量发生变动的时候,几乎所有的数据都会移动(不移动的应该是运气比较好吧前后取模都是同一个值),这个代价很大。此时的问题从水平如何拆分变成了,当增加或者删除节点时,对于大多数记录,保证原来分配到的某个节点,现在仍然应该分配到那个节点,将数据迁移量的降到最低,这就是一致性哈希要做的事情。在这里我们不指定是数据库还是什么,反正都是分布式存储节点。1.一致性哈希一致性 Hash 算法也...

2020-03-10 15:56:46 150

转载 布隆过滤器

大量数据,判断给定的是否在其中现在有大量的数据,而这些数据的大小已经远远超出了服务器的内存,现在再给你一个数据,如何判断给你的数据在不在其中。如果服务器的内存足够大,那么用HashMap是一个不错的解决方案,理论上的时间复杂度可以达到O(1),但是现在数据的大小已经远远超出了服务器的内存,所以无法使用HashMap,这个时候就可以使用“布隆过滤器”来解决这个问题。但是还是同样的,会有一定的“误判...

2020-03-10 15:38:54 102

原创 哈希函数和哈希表

哈希函数哈希算法是通过一个哈希函数,将一段数据(也包括字符串、较大的数字等)转化为能够用变量表示或是直接就可作为数组下标的数字,这样转化后的数值我们称之为哈希值, 也就是算出一个数来代表一个字符串。我们通过哈希值从而实现很快地查找和匹配它又名散列函数,对于经典哈希函数来说,它具有以下5点性质:1、输入域无穷大2、输出域有穷尽3、输入一样输出肯定一样4、当输入不一样输出也可能一样(哈希...

2020-03-10 15:24:30 271

原创 Java常见运行时异常小归纳

java.lang.ArithmeticException 算术运算异常,比如0/4java.lang.ArrayStoreException 使用toArray方法时可能类型不一致出错java.nio.BufferOverflowException 例如ByteBuffer.allocate(2)分配了两个字节,放数据的时候多于2字节java.nio.BufferUnderflowExc...

2020-02-23 11:54:49 214

原创 IDEA中pom.xml导入依赖,external libraries不显示解决

点击IDEA右侧的maven然后点击刷新按钮即可。。。。。。。。。

2019-10-07 15:22:44 6540 2

原创 jstl 问题rg.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot.

出现该问题可能是Tomcat配置的问题tld 文件可能没有全部放入我之前把tomcat的tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\ 改成了(*.jar)导致有些文件被跳过了,把它改回原来的配置即可(换成 jar 速度会更快,但是有时候会莫名报错)...

2019-10-02 21:06:49 356

原创 IDEA中'ehcach.xml'出现Cannot find the declaration of element 'ehcache'.

第一步,打开settings->languages&frameworks->schemas and dtds ,添加地址 http://ehcache.org/ehcache.xsd第二步,xml文件中将对应部分改为 xsi:noNamespaceSchemaLocation=“http://ehcache.org/ehcache.xsd”...

2019-09-06 09:47:02 840

转载 MySQL命令行中文显示乱码解决

https://www.cnblogs.com/qmfsun/p/4846467.html

2019-09-05 15:43:05 290

原创 org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update

出现这个错误有可能是下面这种情况修改前 <id name="id"> <generator class="native"/> </id> <property name="name"/> <set name="orders" inverse="true" cascade="delete-orphan">...

2019-08-16 14:55:32 1482

原创 Prohibited package name: java异常原因

Prohibited package name: java异常原因今天创建maven工程时,莫名出现Prohibited package name: java,查了一下发现把maven下的java设置成了一个包了,应该吧java设置成目录,java作为包名就会出现上面那个异常(也可以把名字直接改了。。。)...

2019-07-10 10:13:16 377

原创 多表查询、事务、DCL

多表查询 查询语法: Select 列名列表 From 表名列表 Where-----SELECTFROM dept,emp; – A*B组合 笛卡尔积 分类:1. 内连接查询1).隐式内连接:用where来消除无用的内连接SE...

2019-05-01 21:32:47 132

原创 SQL语句应用,表操作

DQL查询语句的使用(特别注意ALTER TABLEemployee CHANGE NAME NAME VARCHAR(18) CHARACTER SET utf8 COLLATEutf8_general_ci NOT NULL; 用于汉字编码异常)排序查询语法—order by 排序字段 排序方式聚合函数—将一列数据作为一个整体进行纵向计算1).count 计算个数(...

2019-04-29 21:33:06 170

原创 时间复杂度

数据结构(一)一.时间复杂度四个定义1.T(N)&lt;=cf(N),则记为T(N) = O(N)2.T(N)&gt;=cg(N),则记为T(N) = Ω(N)3.T(N) = Θ(h(N)),当且仅当T(N) = O(h(N)),且T(N) = Ω(N) (此时最好情况和最坏情况相同,曲线重合)4.如果T(N) = O(p(N)) , 且T(N) ≠ Θ(p(N)),此时记为 T(N...

2019-02-20 20:19:58 283

学生管理系统IO操作版

JAVA实现学生管理系统,可以增删改查操作。该版本可以保存操作,保存的内容在目录下的txt文档中。

2019-03-22

Java实现学生管理系统(一次性版)

学生管理系统JAVA实现,可以进行查看所有学生,添加学生,删除学生等操作。

2019-03-22

空空如也

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

TA关注的人

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