- 博客(33)
- 资源 (1)
- 收藏
- 关注
原创 面值为2,5,7的三种硬币,凑出27元最少需要多少枚硬币?
面值为2,5,7的三种硬币,数量无限,凑出27元最少需要多少枚硬币?本题可以用DP或者DFS的方法求解,这里展示DP的四步求解过程:1.确定状态 易得,a1+a2+a3+..+ak = 27 在最后一步中,当前面值加上第ak枚硬币得出27 (ak = 2,5,7) 则倒数第二步为:a1+a2+a3+..+ak-1 = (27-ak),实为本题的子问题2.状态转移方程设 f(x) = 凑出x元需要的最少硬币那么,f(x) = min(f(x-2)+1,f(x-5)...
2020-09-05 16:10:45
2341
原创 为什么生产者消费者中模式中要用while作临界判断?
关于生产者模式,想必大家也非常了解了,其中java实现的一个简易模型:生产者在一个固定容量的容器中加入元素,通知消费者消费,消费者消费后通知生产者生产 当生产的时候需要判断容器中是否已经满,为什么这个判断需要用while而不能用if呢,例如下面代码中第7行public class MyContainer1<T> { final private LinkedList<T&g...
2019-08-21 22:51:04
1744
原创 最高效的单例模式实现-静态内部类方式
相信对于单例模式大家都非常熟悉,用来保证一个类的对象只能被实例化一次。常见的实现方法有懒汉式,饿汉式。先分析这两种实现方式的弊端再来介绍今天要介绍的静态内部类实现方式饿汉式pulbic class Singleton{ private static Singleton instance = new Singleton(); private Singleton(){}; ...
2019-08-19 17:06:08
469
原创 为什么重写equals方法就要重写hashCode?
这个问题其实没有网上探讨的那么复杂,《Java疯狂讲义 》中给出了一个简单明了的解释:当把一个对象放入HashSet中时,如果重写了该对象的equals()方法,则也应该重写其hashCode()方法。因为Java官方的规则是:如果两个对象的equals方法比较返回true,那么它们的hashCode也应该相等。 是为了确保equals方法相同的两个对象它们hashCode也相同...
2019-08-18 10:31:25
294
原创 为什么是TCP连接是三次握手?而不是两次或四次?
为什么是TCP连接是三次握手?而不是两次或四次?其实这个问题在谢希仁版的《计算机网络》里说了:三次握手是 保证双方都得知自已和对方收发能力正常 的最低值先来看一下三次握手的过程:第一次握手: 客户端向服务器发送seq为x的SYN包(这里的SYN包指的是TCP报文头部TCP flag标记位SYN为1的包,下面的ACK同理)后,进入同步发送SYN-SENT状态,等待服务器确认。第二次握手:...
2019-08-16 21:28:50
1578
原创 手写二叉排序树(BST)-Java实现
二叉搜索树有以下特点二叉排序树或者是一棵空树,或者是具有下列性质的二叉树(1)若左子树不空,则左子树上所有节点的值均小于它的根节点的值;(2)若右子树不空,则右子树上所有节点的值均大于它的根节点的值;(3)左、右子树也分别为二叉排序树;(4)没有键值相等的节点。Java实现public class BinarySearchTree { int data; BinarySearch...
2019-08-13 00:26:09
300
原创 Redis比MySQL快多少?Jmeter压测告诉你
在一些高并发场景中,通常我们会选择redis做缓存,防止所有请求同时发到DB中,造成响应速度急剧下降。众所周知,redis一个高性能的key-value型内存数据库,它的速度会比mysql快很多,但是在具体的项目中会比mysql快多少呢?为了更直观的体现出差距,这篇文章中我用了Jmeter,一款apache的压力测试工具做了一个小的数据对比 测试思路:分别在mysql和redis中存入一条用户...
2019-08-09 20:31:46
8948
1
原创 Java多态调用父类的成员变量、成员方法、静态变量的具体表现?
这篇文章主要探究了Java运行时多态中,子类重写了父类方法,并定义了和父类相同名称的成员变量,调用父类的方法,成员变量、静态变量等属性时,会具体调用子类还是父类的属性先写一段Java多态的代码父类public class Animal {//父类 static int cons = 1; int val = 1; final int fin = 1; public v...
2019-08-07 09:41:24
6928
原创 一张图了解JVM运行时内存数据区
关于JVM运行时内存数据区,结合自己的学习经验整理了一张图,在这里分享给大家解读:在JVM运行时内存区域中,可以按线程共享和线程独立来区分不区的区域其中我们常说的堆就是线程共享的,它主要用来存放对象实例和数组,我们创建好的对象的引用就指向这里,是JVM管理内存中最大的一块,也是JVM回收的主要区域;还有一个线程共享的区域是方法区,实质上方法区也是堆的一个逻辑部分,它主要用来存储类信息、常量...
2019-08-06 16:15:31
578
原创 使用assembly打包dubbo provider部署到Linux
在使用dubbo开发分布式项目时,一般都遵循如下架构最近在写的分布电商项目中我使用了zookeeper作注册中心,provider作数据访问服务层consumer就是一般开发的web项目,我按照功能分了几个子项目,只不过它进行数据访问时,是通过注册中心也就是zookeeper获取到provider提供的服务,monitor是数据统计的一个服务,我项目中没用使用到。以上是dubbo的大致...
2019-07-29 20:41:49
466
原创 Dubbo架构图及运行原理详解
Dubbo是一个分布式,高性能,透明化的RPC框架,提供自动注册、自动发现等高效服务治理方案Dubbo架构图如下:provider:提供者,进行数据访问操作的部分,可以对应项目中的service-impl部分consumer:消费者,调用服务的项目Container:Dubbo容器,依赖于Spring容器,随spring容器启动而启动Registry:注册中心,当Contanier启动...
2019-07-26 18:10:43
659
原创 什么是SOA架构?和RPC框架之间的联系?
SOA(Service OrientedAmbiguity)即 面向服务架构面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。上面是百度百科上关于SOA...
2019-07-26 12:24:59
1371
原创 按之字形顺序打印二叉树 (两种解法)
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 解法1:由题目可以看出,对树进行层序遍历,并用两个指针维护每一层的结束位置,得知每一层有哪些节点,把每一层的节点按一定规则反转加入到ans中即可。关键点:维护last和nLast指针用来判断是否进入到下一行import java.util.Arr...
2019-07-26 11:41:31
398
原创 浏览器输入URL到页面展示到底发生了什么?
用户在浏览器输入www.baidu.com这个URL到页面显示这个过程中,发生了一系统的操作: 首先,浏览器会请求DNS把这个域名解析成IP地址,然后根据这个IP地址在互联网上寻找对应的服务器,经过TCP三次握手后与服务器建立TCP连接,并根据HTTP协议向这个服务器的默认80端口发起get请求,这个服务器处理完请求后以HTTP报文格式返回默认的数据资源给访问的用户,用户接受到响应报文后浏...
2019-07-24 11:33:11
426
原创 The nexus service was launched, but failed to start. --nexus启动报错完美解决
在windows环境下安装并启动nexus可能会出现以下情况wrapper: waiting to start...wrapper: waiting to start...wrapper: waiting to start...The nexus service was launched, but failed to start.在\nexus-2.13.0-01-bundle-...
2019-07-23 20:30:33
1412
8
原创 快速排序递归与非递归--Java实现
算法思想: 在数组中选出一个元素做枢轴,把所有比它小的元素移到它的左边比它大的元素移到它的右边,对两边的数组递归地进行上述操作,直到数组有序。排序过程:递归版:import java.util.Arrays;public class QuickSort { public static void main(String[] args) { int a[] = new in...
2019-07-23 12:49:43
759
原创 冒泡排序Java实现
package Sort8;import java.util.Arrays;public class BubbleSort { public static void bubbleSort(int[] a,int n) { //控制比较多少轮 for(int i = 0;i<n-1;i++) { //控制比较的次数 for(int j = 0;j...
2019-07-23 10:55:25
112
原创 nginx动静分离&负载均衡配置参考
动静分离 在nginx.conf配置文件的 Server{...}内加入以下代码: location ~\.(css|js|png|jpg|PNG)$ { root d:/upload/; }表示所有以css.png结尾的静态资源请求都由nginx处理,其他请求再交给tomcat,root后接静态资源的路径负载均衡1.首先增加一...
2019-07-11 15:09:46
186
原创 SprinbMVC接收form表单中的数组类型数据
在一些场景中,form表单中提交的数据需要通过数组保存例如我这里要把js动态生成的slist数组的内容放入form表单中:for(var i = 0;i<slist.length;i++){$("#ff").append('<input type="text" hidden="hidden" name="slist" value="'+slist[i]+'">...
2019-07-08 15:34:29
731
原创 springboot项目部署到linux云服务器&简易教程
1.把项目打成Jar包 在cmd下切成到你的springboot项目路径,使用如下maven命令mvn install这个过程会把你项目pom文件中依赖的jar包下载到整合的Jar包中出现BUILD SUCCESS说明创建成功2.本地测试 在上一个目录的基础下进入target目录,输出jdk中运行jar包的命令:java -jar movie2.1-0.0.1-SNAPSH...
2019-07-04 20:02:52
1021
原创 mysql获取date日期的的年份
在mysql数据的查询中,对于某些查询,我们可能需要根据date类型的字段的年份和月份作查询条件,而后端传入的条件可能是整数类型,如何比较大小呢?Mysql中提供了year和month函数截取年份和月份。SELECT * FROM movie where YEAR(release_time) = 2018 and MONTH(release_time) = 6例如:这样就可以筛选出2018...
2019-06-30 20:37:50
23841
2
原创 mybatis实现多对多关联查询(超详细版)
mybatis实现多对多关联查询XML实现 在开发过程中,持久层架mybatis为我们封装了SQL操作,只需要提供相应的SQL语句即可查询出结果,若结合逆向工程插件便可免去写一些简单SQL的繁琐工作,大大提高了开发效率。然而,一些复杂的SQL语句自动代码无法完成,如一对一,一对多,关联查询等。 这里我们以多对多查询为例:下面代码中一部电影可以属于多个分类,一个分类下又可以存在多部电影,这种...
2019-06-27 22:40:53
8204
3
原创 关联查询和子查询性能比较
在项目开发的过程中,对于一些实体类,它的大部分字段都可以在一张表中查询到,但另一些属性来来自于其它表,需要用到关联查询或者子查询。下面来探讨一下这两种查询的区别。例如评论表,它的点赞数来自另一张表public class Comments { private Integer commentsId; private Integer userId; private St...
2019-06-24 13:08:42
7027
3
原创 堆排序基本思路&简洁代码模板(Java实现)
堆排序 是利用堆 这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它是不稳定排序。堆的性质:是一棵完全二叉树,并且父节点的值大于它所有子节点的值(最大堆)堆调整(heapfiy):若子节点c1,c2有大于父节点parent的值,则与父节点交换。堆排序的基本思想是:将待排序序列构造成一个最大堆,此时,整个...
2019-06-15 12:40:02
434
原创 二叉树改成双向链表
题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路:通过比二叉搜索树的结构和双向链表结构易得,中序遍历的结果就是排序链表的序列,此时只需定义一个pre指针指向上一个节点,在遍历中将这些节点串联起来即可。 // 5 // 3 8 //1 4 6 9...
2019-06-14 09:57:58
259
原创 springboot发送qq邮件详细步骤
springboot发送qq邮件详细步骤为简化spring应用开发而生的springboot,整合了各种框架和业务功能,其中对邮件的发送也提供了相当丰富的支持,并且配置也是非常的简单的,下面一起来看看怎么实现发送邮件功能吧在spring工程pom文件中导入依赖 <!-- 邮箱依赖 --> <dependency> <groupId>org...
2019-06-10 15:58:49
1603
原创 详谈Mybatis中插入数据时注入主键值的几种方法
Mybatis添加数据时给实体类中的主键属性赋值在我们使用mybatis的过程中,在表中插入某条数据时,通常会传入一个实体类例如:@Insert("insert into emp (empno,ename,job) values (#{empno},#{ename},#{job})")int insert(Emp emp); 但这个实体类的主键字段(这里为empno)在mysq...
2019-05-31 15:06:02
2567
原创 归并排序思想及模板(简洁版)
归并排序思路对于任意两个有序数组 例如:[1]和[2]可以按顺序把这两个数组合并为一个数组 ([1,2])把要排序的数组分为两个部分,递归地对数组实现上述过程public class MergeArray { //总调用接口 private static void mergeSort(int[] a, int n) { int[] temp = new int[n]; mS...
2019-05-30 17:16:30
257
原创 通俗易懂讲解代理模式以及相关特点
代理模式代理模式是生产开发中一个非常经典的设计模式,许多优秀的框架中都用来用到了这种设计。如struts2的拦截器,mybatis中拦截器插件、AspectJ和Spring中的AOP等等…下面我面来谈谈什么是代理模式。 代理模式的定义:为其他访问对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中...
2019-05-11 17:17:15
753
原创 翻转链表最简单的方法之一
给你一个链表的头结点head,请你将它反转 (1,2,3,4,5) -> (5,4,3,2,1) 解题思路: 用一个指针保存下一个节点保证当前指针cur能不断往前遍历,在遍历的过程中不断修改cur.next指向上一个节点,最后把cur 赋值给pre完成倒置链表 public ListNode reverseList(ListNode head) { ...
2019-05-10 20:42:43
154
原创 第一次使用typora
这里是我第一次使用typora,一款markdown文本编辑器的测试文件。保存的md格式文件可以直接发布在CSND上。一级标题二级标题三级标题加粗下划线表头一个无序列表1 java2 测试3 测试==高亮 ==www.baidu.com![](C:\Users\10547\Pictures\无标题 (...
2019-05-08 15:57:30
277
原创 蓝桥杯-Algo-3 K好数 (DP动态规划)
问题描述如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。求L位K进制数中K好数的数目。例如K = 4,L = 2的时候,所有K好数为11、13、20、22、30、31、33 共7个。由于这个数目很大,请你输出它对1000000007取模后的值。输入格式输入包含两个正整数,K和L。输出格式输出一个整数,表示答案对1000000007取模...
2018-03-10 22:46:59
325
原创 蓝桥杯ALGO-177 balloon in box (100%测试数据通过)
问题描述: 你要写一个程序,使得能够模拟在长方体的盒子里放置球形的气球。 接下来是模拟的方案。假设你已知一个长方体的盒子和一个点集。每一个点代表一个可以放置气球的位置。在一个点上放置一个气球,就是以这个点为球心,然后让这个球膨胀,直到触及盒子的边缘或者一个之前已经被放置好的气球。你不能使用一个在盒子外面或者在一个之前已经放置好的气球里面的点。但是,你可以按你喜欢的任意顺序使用这些点,而且...
2018-03-06 13:41:58
1154
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人