自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (1)
  • 收藏
  • 关注

原创 算法-分解正整数的公约数

1.题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。2.思路:遍历2~n/2,如果求余为0,赋值下一轮值等于上一轮除以当前数,如2可以被90整除,下一轮传入值为90/2=453.简单代码:/** * @Author: hs * @Description: 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 * @Date: 2021-02-02 11:54 */public class ZhengZhengShuFenjieZhiY

2021-02-02 12:26:19 168

原创 算法-题目:根据输入值求偶数奇数和

1.题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n、2.解决思路:通过递归来实现3.简单代码如下:/** * @Author: hs * @Description: 题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n * @Date: 2021-02-02 10:42 */public class OushuJis

2021-02-02 11:08:09 261

原创 算法-猴子分桃

1.问题:五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走了一堆;第二只猴子起来一看,只有四堆桃。于是把四堆合在一起,分成相等的五堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;其他几只猴子也都是 这样分的。问:这堆桃至少有多少个?2.解決思路:可以痛過递归来处理,f(n-1)=4(f(n)-1)/5;中间如果存在(num-1)%5!=0;说明桃子数不符合,如果从5-0,最后能进行到猴子数达到0,说明这个桃子数num符合3.简单实例:/**

2021-02-02 09:50:50 340

原创 设计模式-抽象工厂模式

1.抽象工厂:工厂内定义创建一系列相关或者相互依赖的对象的接口(如农场工厂类提供创建食物和肥料产品对象接口),但不做具体实例的创建,具体实例交给具体工厂类去创建(如肉类食物、蔬菜类食物、动物类肥料、植物类肥料产品实例分别交由具体的动物处理工厂和植物处理工厂处理)2.简单例子:(1)首先目的是生产肉类食物、蔬菜类食物、动物类肥料、植物类肥料产品四种产品;(2)但是为了解耦,易于扩展,我们不直接在农场(farm)中创建这些产品实例,而是向外传达农场有生产食物和肥料,具体肉类食物和肥料交给动物农场去生

2021-02-02 00:09:36 174

原创 算法-打印出N内的所有质数

1.质数:只有自身和1两个正约数,如3只有1和3,所以是3是质数,4有1,2,4,所以不是质数2.简单例子如下:/** * @Author: hs * @Description: 查找出质数 * @Date: 2021-02-01 11:41 */public class FindZhishu { //一个数只有1和它本身的正约数 public static boolean isZhishu(int n){ if(n<=3){

2021-02-01 14:30:00 233

原创 算法-九九乘阶打印和计算N的乘阶结果

1.九九乘阶打印例子//九九乘阶打印 public static void print() { for (int i = 1; i <= 9; i++) { for(int j = 1;j<=i;j++){ System.out.print(j + "*" + i + "=" + i * j + " "); if(i==j){ System

2021-02-01 11:31:24 259

原创 算法-计算兔子总数问题

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....2.思路:可见当n==1或者n==2时,兔子数都是1,当n>2时,兔子数都是等于前两个月的相加,这个正好可以用递归来实现3.java简单例子:/** * @Author: hs * @Description: 兔子生子 * @Date: 2021-0...

2021-02-01 11:28:09 438

原创 设计模式-工厂方法模式-静态工厂方法模式

1、静态工厂方法模式:同个类内,不同静态方法分别创建不同的实例对象,这些实例对象类都继承同个接口2、简单代码如下:/** * @ClassName StatisFactoryMethod * @Description 静态工厂方法模式:跟多个工厂方法模式类似,多个方法分别生产对应的对象,只不过方法都是静态的 * @Author hs * @Date 2021/1/31 14:17 * @Version 1.0 */public class StatisFactoryMethod {

2021-01-31 14:36:04 110

原创 设计模式-工厂方法-多个工厂方法

1.多个工厂方法模式:它属于工厂方法模式,是在同个类内有不同方法分别创建不同实例(这些实例都继承自同一个接口)2.代码实例如下:/** * @ClassName ManyFactoryMethod * @Description 多个工厂方法模式(工厂方法模式):通过不同方法创建同一个接口的不同实例 * @Author hs * @Date 2021/1/31 13:52 * @Version 1.0 */public class ManyFactoryMethod { pu

2021-01-31 14:26:15 190

原创 设计模式-工厂方法-普通工厂方法

1.普通工厂方法模式:普通工厂方法属于工厂方法模式,它是同个方法,根据传入的参数不同,创建不同对象实例(这些对象实例都实现了同一个接口)2.简单实例如下:/** * @ClassName CommonFactory * @Description 普通工厂模式(属于工厂方法模式):通过单个方法创建实现了同个接口的不同实例 * @Author hs * @Date 2021/1/31 13:42 * @Version 1.0 */public class CommonFactory {

2021-01-31 14:22:52 89

原创 JVM-常用的参数

(1)-Xms256m 堆初始化值(2)-Xmx256m 堆最大值(3)-XX:NewRatio=2 年轻代和老年代比例为1:2(4)-XX:SurvivorRatio=8 年轻代中的Eden区和两个survivor区比例是8:1:1(5)-XX:PrintGC 打印GC日志(6)-XX:PrintGCDetails 打印GC日志详情(7)-XX:+UseParNewGC 使用ParNew 和 Serial Old垃圾回收器组合(8)-XX:+UseParllelOldGC 使用

2021-01-31 11:23:28 424

原创 算法-二分查找

1.前提条件:数组必须是一个有序数组2.思路:1)取中间值array[middle]与目标值target做比较,如果相等返回当前下标;2)如果中间值array[middle]小于目标target值,说明目标值在中间值的右侧,设置新一轮开始下标start=middle,相当于下一轮从middle~end之间查询;3)如果中间值array[middle]大于目标target值,说明目标值在中间值的左侧,设置新一轮结束下标end=middle,相当于下一轮从start~middle之间查询;4

2021-01-30 11:33:04 54

原创 算法-快速排序

1.思路:在数组中找一个值作为中间值key,然后从数组右边开始向左边寻找小于key值放到key的左边,同时从数组的左边向右边寻找大于key值放到key的右边;2.具体步骤:(1)定义全局变量i,赋值等于start (2)定义全局变量j,赋值等于end (3)定义key值,等于array[i] (4)后面会交换array[i]和array[j]值,同时i会不断增加,j会不断减小,所以只要i<j,都会循环处理 (5)从下标为j开始,向下走,直到找到比key值小的值的下标(目标是找到比key值.

2021-01-29 13:19:06 60

原创 算法-冒泡排序

1 数组:{5,7,6,2,4}2.冒泡排序思路,从下表为0开始遍历,每次查找最大那个值往后移(时间O(n^2))。1)从5开始,与后一位作比较,如果比后一位大,就交换两个元素的位置,否则不交换,如5没有比7大,不需要交换,结果->{5,7,6,2,4}1)7比6大,需要交换,结果->{5,6,7,2,4}2)7比2大,需要交换,结果->{5,6,2,7,4}3)7比4大,需要交换,结果->{5,6,2,4,7} ->这一轮走完,找到了最大...

2021-01-27 14:21:06 49

原创 线程池-线程池工作原理以及状态

1.线程池工作原理:主线程执行excute方法:1)此时如果线程池的没有线程,就会创建线程来执行该任务2)如果已经有线程,并且线程数小于核心线程数,会继续创建线程来执行新任务3)如果线程数已经满核心线程数了,新的任务就会暂存到阻塞队列中等待执行4)如果阻塞队列已经满了,则会创建新线程来执行新的任务5)如果线程数已达到最大线程数,则会执行拒绝策略6)拒绝策略有四种,会根据设置的来执行。2.线程池有哪些状态?running、shutdown、stop、tidying、te

2021-01-24 23:24:13 693

原创 多线程-线程类型有哪几类

1线程类型有哪几类?1)用户线程(ULT),由我们APP等应用来创建,调度,管理,操作系统不用管理的线程。2)内核线程(KLT),由我们系统内核来创建调度,管理的线程。3)如果我们不使用线程池,JVM创建应用线程同时也会创建内核线程,一对一关系,我们程序每创建一条线程,虚拟机会到内核调度中心调度内核线程,内核线程由CPU按一定算法分配调度时间。...

2021-01-24 16:10:05 1297

原创 JVM-GC下

1.垃圾收集器有Serial(串行)收集器,ParNew收集器,Parallel收集器,CMS收集器,G1收集器(1)Serial收集器:该收集器是最古老的,单线程的,发生GC的时候,用户的应用程序会被暂停,然后单线程执行GC,执行完了再继续执行应用程序,所以会出现卡顿现象(STW)(2)ParNew收集器:是Serial多线程版,发生GC的时候多线程来完成(3)Parallel收集器:国内用的最多的,也是默认的使用收集器,它充分利用的CPU资源,并发进行GC回收。它年轻代用复制算法,老年代用标

2020-07-01 01:56:51 93

原创 JVM-GC中

1.垃圾回收方法:(1).标志清除法:比较古老的方法,在内存中标志所有需要回收的对象,然后在内存中找出已标志的对象进行一一回收,该方法效率不高,同时会产生大量内存碎片。(2)复制算法:开一片大小一样的内存空间,把存活对象转移到新的片区即(to),对原来的内存片区(from)全部清除。(3)标志-整理算法:标志存活对象,把存活对象往内存某区聚集移动,然后对边界外的内存进行回收。(4)分代收集算法:根据不同年代对象存活率不一样应用上面3种不同算法,如年轻代一般可回收的对象比较多,回收

2020-07-01 00:45:49 122

原创 JVM-GC上

1.垃圾回收中主要同个引用计数法和可达性分析法来判断对象是否可以回收。(1)引用计数法:当对象被其他对象引用计数+1,当其他对象解除引用当前对象则-1,最终进行GC的时候会对计数为0的对象进行回收。(2)可达性分析法:会根据当前对象是否有roots跟引用,如果没有则会对其进行回收,可以作为跟引用的主要有:Thread、类加载器、static静态成员、本地方法栈、栈帧中的局部变量等。2.如何判断一个常量是否可以被回收,主要通过判断其是否被其他对象引用,如常量池中的"hg"字符串,没有被Stri

2020-07-01 00:28:24 98

原创 jvm-类加载机制上

类的生命周期:类的生命周期包括:1.加载.class文件,即加载阶段2.验证有没有编译错误,即验证阶段3.给类静态变量分配内存,并赋默认值,即准备阶段4.解析类依赖了哪些其他类,类加载器载入其他类,即解析阶段5.给静态变量赋值(上面那个是默认值,跟这个不一样),即初始化阶段6.使用7.卸载...

2020-06-25 13:55:19 115

原创 JVM-对JVM的理解-下

1.jvm中方法区和堆是内存共享区,其中方法区主要是用来存放类中的静态变量、常量、类信息以及运行时常量池;堆主要是用户存放实例对象,堆的内部结构如下: 由上面图,堆内包括年轻代(占1/3)和老年代(2/3)组成,Eden是对象最初存放位置,当Eden中的对象存放满了,就会触发YGC,而幸存的对象会存到From区,当From区满了也会进行YGC,而From中幸存的实例会被存到To区,此时原来的to就变成了From区,原来的to变成From区,某些对象在From和To转循环超过15次(默认值...

2020-06-19 22:11:41 90

原创 JVM-对JVM的理解-上

1.JVM由类加载子系统、运行时数据区、执行引擎构成 2.内存区有共享区(堆和方法区)和线程私有区(java虚拟机栈、程序计算器、本地方法栈),java虚拟机栈里面还有栈帧,我们类里面每个方法会与每个栈帧会对应,当我们类main方法运行时,程序计算器会辅助操作数栈记录下一条执行指定,而我们方法的执行过程由操作数栈来完成,栈帧里面有局部变量、操作数栈、动态链接、方法出口。 3.下面是class文件反编译得到的执行命令文件,java原方法内容是定义1和2两个变量,相加并乘10,把结果发回,栈中执行过程如下:首先

2020-06-19 21:40:56 100

转载 kafka介绍

kafka是一个高吞吐的分布式消息队列系统。特点是生产者消费者模式,先进先出(FIFO)保证顺序,自己不丢数据,默认每隔7天或者1G清理数据。(1)Kafka架构是由producer(消息生产者)、consumer(消息消费者)、borker(kafka集群的server,负责处理消息读、写请求,存储消息,在kafka cluster这一层这里,其实里面是有很多个broker)、topic...

2019-07-23 18:15:58 120

转载 kafka中kafkaConsumer的poll拉取方法

1.一开始以为poll()方法里传的是Kafka返回的记录条数, 但其实是传的时间(ms)2.Kafka轮询一次就相当于拉取(poll)一定时间段broker中可消费的数据, 在这个指定时间段里拉取,时间到了就立刻返回数据。3.例如poll(5000): 即在5s中内拉去的数据返回到消费者端原文:https://blog.csdn.net/weixin_41227335/ar...

2019-07-23 11:45:02 27799 7

转载 Executor的使用

package com.dci.api.listener;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.TimeUnit;public class MyThreadPool { public static...

2019-07-15 13:49:17 278

转载 mongoDB实现文件上传下载

通过Java驱动来实现文件操作:1、 对文件的增加、删除和读取,通过GridFS、GridFSDBFile、GridFSFile几个类来完成:GridFS:核心类,提供了对文件的创建、查找和删除操作。GridFSDBFile:从数据库中读取的文件,提供了文件的输出、删除操作。GridFSFile:要保存的文件,提供了文件的保存、校验、获取文件基本信息等操作。DBCollecti...

2019-06-25 11:36:32 756

原创 redis常用方法:

jedis.set(key,value);jedis.append(key,value2);//该方法实现value拼接jedis.get(key);jedis.del(key);jedis.mset(key1,value1,key2,value2,key3,value3);一次往redis缓存中加入多对key-valuejedis.incr(key);//让value+1,v...

2019-06-14 11:05:08 293

原创 简单的过滤器实现

1:实现一个filter要实现Filter接口,并且要在web.xml文件中配置,配置时指定过滤所有action(*.do),当然要除了login.do2:web.xml对应配置监听器,主要是监听接收到的请求,除了login.do路径不用过滤处理,其他的都要过滤处理,如下:<filter> <filter-name>urlFilter</...

2019-06-10 00:32:38 479

原创 BiMap使用

可以实现key和value转换,我们用Map平常一般都是通过key来获取value值,如果场景希望通过value来获取key值,BiMap就适合,它是双向集合,但当value有重复值时,会抛出异常,除非用forcePut()方法强制覆盖public void reverseMapValue(){BiMap<Integer,String>biMap=HashBiMap.cr...

2019-06-04 12:15:01 1466

原创 netty入门一

netty理解:netty是一个能够快速快速开发应用服务的NIO框架,大大简化了TCP或者UDP服务器的网络编程,它具有灵活性高、性能高效稳定、开发使用简单易上手;阿里的产品dubbo底层就是用了netty框架来实现的;netty好处:并发高、速度快、封装好;(NIO框架中建立socket连接时线程Thread不会直接阻塞,而是由selector选择器负责遍历socket,发现完成...

2019-06-03 13:32:08 87

原创 @EnableEurekaClient和@EnableDiscoveryClient注解区别

@EnableEurekaClient和@EnableDiscoveryClient注解区别作用都是注明当前服务为“注册发现服务”可扫描到的服务,如下代码:@EnableDiscoveryClient@SpringBootApplicationpublic class ProviderUserApplication { public static void main(String[...

2019-05-22 01:02:49 1224

ftpServer.rar

java实现把远程FTP服务器文件下载到本地指定目录

2019-07-22

空空如也

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

TA关注的人

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