- 博客(202)
- 收藏
- 关注
原创 写博客的原因和说明
简述原本在OneNote和有道云笔记上面的内容打算搬到博客上和大家一起分享,有一些知识点是我从大二开始收集的,一些是复制人家博客的原文,如果涉及侵权联系我哈,感谢各位大佬的谅解呢!原由由于现在研二下学期的我,准备找暑假实习,经过一个月的奋战,发现很多公司需要有个人博客或者是有gitHub链接可能会有优势。发现写博客可以更加深刻的复习我以前的笔记,有助于与加深印象。内存不足,希望可以转移...
2019-04-16 16:09:49 128
原创 Whitelabel Error Page 白页
本文主要问题出在MainApplication应该在所有的Controller文件的最外面public class MainApplication { public static void main(String[] args) throws Exception { SpringApplication.run(MainApplication.class, args);...
2019-05-16 15:31:49 2990
原创 排序-基数排序
基数排序(Radix Sort)基数排序也是非比较的排序算法,对每一位进行排序,从最低位开始排序,复杂度为O(kn),为数组长度,k为数组中的数的最大的位数;基数排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到最高位。有时候有些属性是有优先级顺序的,先按低优先级排序,再按高优先级排序。最后的次序就是高优先级高的在前,高优先级相同的低优先级高的在前。基数排序基于分别排序...
2019-05-11 17:25:36 542
原创 排序-桶排序
桶排序(Bucket Sort)桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。桶排序 (Bucket sort)的工作的原理:假设输入数据服从均匀分布,将数据分到有限数量的桶里,每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排算法描述人为设置一个BucketSize,作为每个桶所能放置多少个不同数值(例如当Bucket...
2019-05-11 17:24:50 426
原创 排序-归并排序
归并排序(Merge Sort)和选择排序一样,归并排序的性能不受输入数据的影响,但表现比选择排序好的多,因为始终都是O(n log n)的时间复杂度。代价是需要额外的内存空间。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。归并排序是一种稳定的排序方法。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有...
2019-05-11 17:23:50 193
原创 排序-快速排序
快速排序(Quick Sort)基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。算法描述快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如下:从数列中挑出一个元素,称为 “基准”(pivot);重新排序数列,所有元素比基准值小的摆放在基准前面,...
2019-05-11 17:22:45 165
原创 排序-堆排序
堆排序(Heap Sort)指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。算法描述将初始待排序关键字序列(R1,R2….Rn)构建成大顶堆,此堆为初始的无序区;将堆顶元素R[1]与最后一个元素R[n]交换,此时得到新的无序区(R1,R2,……Rn-1)和新的有序区(Rn),且满足R[1,2...
2019-05-11 17:22:09 122
原创 排序-选择排序
选择排序(Selection Sort)表现最稳定的排序算法之一,因为无论什么数据进去都是O(n2)的时间复杂度,所以用到它的时候,数据规模越小越好。好处是不占用额外的内存空间。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。算法描述n个记录的直接选择...
2019-05-11 17:21:38 147
原创 排序-插入排序
插入排序(Insertion Sort)插入排序的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。算法描述一般来说,插入排序都采用in-pl...
2019-05-11 17:21:04 114
原创 排序-冒泡排序
冒泡排序(Bubble Sort)冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。算法描述比较相邻的元素。如果第一个比第二个大,就交换它们两个;对每一对相邻元素作同样的工作,从开始第一对...
2019-05-11 17:20:18 144
原创 manacher算法(Java实现)
public class Manacher { public static char[] manacherString(String str) { char[] charArr = str.toCharArray(); char[] res = new char[str.length() * 2 + 1]; int index = 0; for (int i = 0; i != ...
2019-05-03 21:42:48 795
原创 数组中和为一个值
给你一个数组arr和一个整数aim。如果可以任意选择arr中的数字,能不能累加得到aim,返回true或者false。 public static boolean money1(int[] arr, int aim) { return process1(arr, 0, 0, aim); } public static boolean process1(...
2019-05-01 16:05:24 229
原创 左上到右下最小路径和
给你一个二维数组,二维数组中的每个数都是正数要求从左上角走到右下角,每一步只能向右或者向下。沿途经过的数字要累加起来。返回最小的路径和。public static int minPath1(int[][] matrix) { return process1(matrix, matrix.length - 1, matrix[0].length - 1); } //递归解法 pub...
2019-05-01 14:04:59 694
原创 牛的数量+字符串全排列
母牛每年生一只母牛,新出生的母牛成长三年后也能每年生一只母牛,假设不会死。求N年后,母牛的数量。public static int cowNumber1(int n) { if (n < 1) { return 0; } if (n == 1 || n == 2 || n == 3) { return n; } //去年的牛(牛不死)+ 三年前出生现在可以生的牛 re...
2019-05-01 13:53:21 259
原创 安排最多会议
一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目的宣讲。给你每一个项目开始的时间和结束的时间(给你一个数组,里面 是一个个具体的项目),你来安排宣讲的日程,要求会议室进行 的宣讲的场次最多。返回这个最多的宣讲场次。public class BestArrange { public static class Program { public int start; public...
2019-04-30 17:28:14 339
原创 收益最多IPO
输入:参数1,正数数组 costs参数2,正数数组profits参数3,正数k参数4,正数mcosts[i]表示i号项目的花费profits[i]表示i号项目在扣除花费之后还能挣到的钱(利润) k表示你不能并行、只能串行的最多做k个项目m表示你初始的资金说明:你每做完一个项目,马上获得的收益,可以支持你去做下一个 项目。输出: 你最后获得的最大钱数。public class ...
2019-04-30 16:52:22 169
原创 字典序最小序列
给定一个字符串序列,拼接之后字典序最小。解法:自定义比较器,调用Arrays.sort()来排序之后拼接返回 public class LowestLexicography { public static class MyComparator implements Comparator<String> { //贪心考虑a+b是否大于b+a @Override pu...
2019-04-30 15:27:26 5748
转载 协程理论相关
协程不是进程,也不是线程,它就是一个函数,一个特殊的函数——可以在某个地方挂起,并且可以重新在挂起处继续运行。所以说,协程与进程、线程相比,不是一个维度的概念。一个进程可以包含多个线程,一个线程也可以包含多个协程,也就是说,一个线程内可以有多个那样的特殊函数在运行。但是有一点,必须明确,一个线程内的多个协程的运行是串行的。如果有多核CPU的话,多个进程或一个进程内的多个线程是可以并行运行的,但是...
2019-04-29 10:01:00 260
转载 事物隔离级别
READ UNCOMMITTEDREAD UNCOMMITTED是限制性最弱的隔离级别,因为该级别忽略其他事务放置的锁。使用READ UNCOMMITTED级别执行的事务,可以读取尚未由其他事务提交的修改后的数据值,这些行为称为“脏”读。这是因为在Read Uncommitted级别下,读取数据不需要加S锁,这样就不会跟被修改的数据上的X锁冲突。比如,事务1修改一行,事务2在事务1提交之前读取了...
2019-04-26 12:52:25 126
转载 数据库事物并发可能出现的问题
可以先看:事物隔离级别1、脏读A事务读取B事务尚未提交的更改数据,并在这个数据的基础上进行操作,这时候如果事务B回滚,那么A事务读到的数据是不被承认的。2、不可重复读指A事务读取了B事务已经提交的更改数据。假如A在取款事务的过程中,B往该账户转账100,A两次读取的余额发生不一致。3、幻读A事务读取B事务提交的新增数据,会引发幻读问题。幻读一般发生在计算统计数据的事务中,例如银行系统在...
2019-04-26 12:49:04 409
转载 集合初始化大小汇总
这里要讨论这些常用的默认初始容量和扩容的原因是:当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使效率大大降低。加载因子的系数小于等于1,意指 即当 元素个数 超过 容量长度*加载因子的系数 时,进行扩容。另外,扩容也是有默认的倍数的,不同的容器扩容情况不同。L...
2019-04-25 19:27:50 2080
转载 jdbc,mybatis,hibernate比较
jdbc,mybatis,hibernate各自优缺点及区别JDBC:我们平时使用jdbc进行编程,大致需要下面几个步骤:1,使用jdbc编程需要连接数据库,注册驱动和数据库信息2,操作Connection,打开Statement对象3,通过Statement对象执行SQL,返回结果到ResultSet对象4,使用ResultSet读取数据,然后通过代码转化为具体的POJO对象5,关...
2019-04-24 21:55:35 163
转载 多态实现原理
C++中:1 每一个类都有虚表2 虚表可以继承,如果子类没有重写虚函数,那么子类虚表中仍然会有该函数的地址,只不过这个地址指向的是基类的虚函数实现,如果基类有3个虚函数,那么基类的虚表中就有三项(虚函数地址),派生类也会虚表,至少有三项,如果重写了相应的虚函数,那么虚表中的地址就会改变,指向自身的虚函数实现,如果派生类有自己的虚函数,那么虚表中就会添加该项。3 派生类的虚表中虚地址的排列顺序...
2019-04-24 16:52:05 136
转载 正向代理&反向代理
建议直接参考图文解析:https://blog.51cto.com/z00w00/1031287下面我copy一波概念:一、正向代理(Forward Proxy)一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术。关于正向代理的概念如下:正向代理(forward)是一个位于客户端【用户A】和原始服务器(origin server)【服务器B】之间的服务器【代理服务器Z】,为了从原...
2019-04-22 21:53:29 341
转载 SQL语句语法和执行顺序
SQL 语句的语法顺序是:SELECT[DISTINCT]FROMWHEREGROUP BYHAVINGUNIONORDER BY为了方便理解,上面并没有把所有的 SQL 语法结构都列出来,但是已经足以说明 SQL 语句的语法顺序和其执行顺序完全不一样,就以上述语句为例,其执行顺序为:FROMWHEREGROUP BYHAVINGSELECTDISTINCTUNIO...
2019-04-22 21:35:30 179
转载 信号如何通知到进程
内核在进程所在的进程表项的信号域设置对应的信号的位,进程会维护一个未决信号的链表,处于用户态时就会处理信号。内核给进程发送信号,是在进程所在的进程表项的信号域设置对应的信号的位。进程检查信号的时机是:进程即将从内核态返回用户态时。如果进程睡眠了,要看睡眠能不能被中断,如果能被中断则唤醒。进程有一个链表的数据结构,维护一个未决信号的链表。信号在进程中注册,其实就是把该信号加入到这个未决信号链...
2019-04-22 21:26:47 261
转载 一次跑一个线程(线程同步方法)
为何要使用同步?java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查),将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用,从而保证了该变量的唯一性和准确性。1.同步方法即有synchronized关键字修饰的方法。由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,内置锁会保护整个方法。在...
2019-04-22 10:22:44 381
转载 适配器模式
转自这位博主,这一系列的博文都很好,有对应的代码示例,我懒得复制,自行查看http://www.cnblogs.com/V1haoge/p/6479118.html适配器就是一种适配中间件,它存在于不匹配的二者之间,用于连接二者,将不匹配变得匹配,简单点理解就是平常所见的转接头,转换器之类的存在。适配器模式有三种:类适配器、对象适配器、接口适配器前二者在实现上有些许区别,作用一样,第三个接...
2019-04-21 19:59:22 117
转载 同步与互斥
同步与互斥的概念当线程并发执行时,由于资源共享和线程协作,使用线程之间会存在以下两种制约关系。1.间接相互制约。一个系统中的多个线程必然要共享某种系统资源,如共享CPU,共享I/O设备,所谓间接相互制约即源于这种资源共享,打印机就是最好的例子,线程A在使用打印机时,其它线程都要等待。2.直接相互制约。这种制约主要是因为线程之间的合作,如有线程A将计算结果提供给线程B作进一步处理,那么线程B在...
2019-04-21 15:20:44 636
转载 强引用&软引用&弱引用&虚引用
强烈原文博主的文章,多线程系列文章可以结合并发编程的艺术来看,大赞!!!原文 https://www.cnblogs.com/dolphin0520/p/3784171.html在Java中,虽然不需要程序员手动去管理对象的生命周期,但是如果希望某些对象具备一定的生命周期的话(比如内存不足时JVM就会自动回收某些对象从而避免OutOfMemory的错误)就需要用到软引用和弱引用了。 从Ja...
2019-04-21 14:36:18 130
转载 Java中内存溢出&内存泄漏
内存溢出1. 定义及原因内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存。为了解决Java中内存溢出问题,我们首先必须了解Java是如何管理内存的。Java的内存管理就是对象的分配和释放问题。在Java中,内存的分配是由程序完成的,而内存的释放是由垃圾收集器(GarbageCollection,GC)完成的,程序员不需要通过调...
2019-04-21 14:10:55 1376
转载 map转JavaBean
http://www.open-open.com/code/view/1423280939826map和JavaBean互转class A { public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception { ...
2019-04-20 16:51:36 7624
原创 责任链模式(职责链模式)
为请求创建一个接受此次请求对象的链类型:行为性使用场景:一个请求的处理需要多个对象当中一个或几个协作处理优点:请求的放松着和接收者(请求的处理)解耦责任链可以动态组合缺点:责任链太长或者处理时间过长,影响性能责任链过多相关设计模式:责任链模式和状态模式各个对象不指定下一个要处理的对象是谁状态模式是指定下一个需要指定的模式coding校验,先后顺序,用户名是否存在,比如...
2019-04-20 11:48:59 150
原创 Maven项目启动tomat服务器报错invalid LOC header (bad signature)
点击项目,右键选择Maven test运行等运行一段时间,出现下面的ERROR,最笨的办法就是直接按照路径删除对应的jar文件然后重新maven update一下。[ERROR] 读取C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.9.8\jackson-databind...
2019-04-19 22:02:30 894
转载 this可以调用类变量
1.概念区分成员变量和成员方法是范围最大的定义,提到成员变量就可以理解成你所定义在一个类体中的各类变量的统称,成员方法亦如是。java类的成员变量包括实例变量和类变量,成员方法包括实例方法和类方法。那么,什么是实例变量和类变量呢?实例变量,是新建了实例后才能用的变量。类变量,是不用新建实例,直接通过类来调用的变量。特点是用static修饰。所以它们还有个响当当的名字,叫静态变量,静态方法。...
2019-04-19 19:52:34 1123
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人