自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 资源 (7)
  • 收藏
  • 关注

原创 两数求和问题

问题/** * Given an array of integers, find two numbers such that they add up to a specific target * number. * The function twoSum should return indices of the two numbers such that they add * up to the target, where index1 must be less than index2. Pl.

2022-04-20 20:30:55 264

原创 Telnet不是内部或外部命令,也不是可运行的程序解决方法:Win7和Win10安装Telnet服务

问题:使用Telnet命令报错“Telnet不是内部或外部命令,也不是可运行的程序”。Win7安装telnet服务步骤:开始>>搜索“控制面板”>>程序和功能>>打开或关闭Windows功能。找到telnet,并勾选安装即可。安装完成后,win+R,输入services.msc,找到对应的服务启动即可。Win10安装telnet服务步骤:开始>>设置>>应用应用和功能>>程序和功能&

2022-03-25 15:31:24 6700

原创 数组与集合互转注意事项

集合转数组,必须使用集合的toArray(T[] array)。反例:toArray无参方法存在问题,返回值只能是Object[],若强转会报ClassCastException错误。List<String> list = new ArrayList<String>(2); list.add("guan"); list.add("bao"); // 正例String[] array = new String[list.size()]; array = list.to..

2022-03-15 15:07:58 493

原创 正则表达式匹配两种解法

问题实现正则表达式匹配,支持“.”和“*”。‘.’:匹配任何单个字符。‘*’:匹配0个或多个前面的元素。一些例子:isMatch(“aa”,“a”) return falseisMatch(“aa”,“aa”) return trueisMatch(“aaa”,“aa”) return falseisMatch(“aa”, “a*”) return trueisMatch(“aa”, “.*”) return trueisMatch(“ab”, “.*”) return true..

2022-02-15 11:36:03 851

原创 两个有序数组的中位数

问题有两个大小分别为m和n的排序数组A和B。求两个排序数组的中位数。总体运行时时间复杂度应为O(log (m+n))。解决方案这个问题可以转化为求第k个元素的问题,k是(A的长度+B的长度)/ 2。如果这两个数组中的任何一个为空,那么第k个元素就是非空数组的第k个元素。如果k == 0,第k个元素是A或B的第一个元素。对于普通情况(所有其他情况),我们需要以数组长度一半的速度移动指针。public static double findMedianSortedArrays(int A[]..

2022-02-14 15:41:07 150

原创 广度优先搜索法解决单词梯问题

问题给定两个单词(开始和结束),在一个字典中,求从开始到结束的最短变换序列的长度,即:每次只能更改一个字母每个中间单词必须存在于字典中,例如:开始 = “hit”结束 = “cog”字典 = [“hot”,“dot”,“dog”,“lot”,“log”]。因为一个最短的变换是“hit”->“hot”->“dot”->“dog”->“cog”,程序应该返回其长度为5。注意:如果没有这样的转换序列,则返回0。所有的单词都有相同的长度。所有单词只包含小写字母字符。这个..

2022-02-13 12:00:00 429

原创 单词分割匹配字典

问题给定一个字符串s和一个单词字典dict,确定s是否可以被分割成一个或多个字典单词的空格分隔序列。例如,给定s =“leetcode”, dict = [“leet”, “code”]。返回true,因为"leetcode"可以被分割为“leet code”。解决方案1. 朴素方法这个问题可以通过使用一种简单的方法来解决。讨论总是可以从这开始。public static boolean wordBreak1(String s, Set<String> dict) { ..

2022-02-12 10:49:54 6805

原创 计算最长回文子串

问题寻找最长回文子串是一个经典的面试编码问题。在这篇文章中,将为这个问题总结3种不同的解决方案。解决方案1. 朴素方法我们可以简单地检查每个子字符串并检查它是否是回文的。时间复杂度为O(n3)。如果这是提交给LeetCode onlinejudge,将返回一个错误消息“时间限制超过”。因此,这种方法只是一个开始,我们需要一个更好的算法。public static String longestPalindrome1(String s) { int maxPalinLengt..

2022-02-11 15:31:42 424

原创 计算逆波兰表达式

问题计算逆波兰表示的算术表达式的值。有效的操作符是+,-,*,/。每个操作数可以是一个整数或另一个表达式。例子:[“2”, “1”, “+”, “3”, “*”] -> ((2 + 1) * 3) -> 9[“4”, “13”, “5”, “/”, “+”] -> (4 + (13 / 5)) -> 6解决方案1. 简单方法这个问题很简单。理解了这个问题之后,我们应该很快意识到这个问题可以通过使用堆栈来解决。我们可以遍历给定数组中的每个元素。当它是一个数字时,..

2022-02-11 12:00:00 150

原创 旋转数组三种解法

问题将一个有n个元素的数组向右旋转k步。例如,n= 7和k = 3,数组[1,2,3,4,5,6,7]被旋转到[5,6,7,1,2,3,4]。你知道多少种不同的方法来解决这个问题吗?解决方案1.1 中间数组我们可以直接创建一个新数组,然后将元素复制到新数组中。然后使用System.arraycopy()更改原来的数组。public static void rotate1(int[] nums, int k) { // 取余 if (k > nums..

2022-02-10 21:23:07 317

原创 行为模式之模板模式的案例示范

1. 模板模式介绍模板模式的核心设计思路是通过在抽象类中定义抽象方法的执行顺序,并将抽象方法设定为只有子类实现,但不设计独立访问的方法。只定义了执行顺序和基本策略,具体由开发者自己安排。2. 案例场景模拟在本案例中我们模拟爬虫各类电商商品,生成营销推广海报场景。关于模板模式的核心点在于由抽象类定义抽象方法执行策略,也就是父类规定了一系列的执行标准,这些标准的串联成一整套业务流程。这个场景中我们模拟爬虫爬取各类商家的商品信息,生成推广海报(海报中带有个人邀请码),赚取商品返利。而整个爬取过程分

2022-01-11 10:51:50 410

原创 行为模式之观察者模式的案例示范

1. 观察者模式介绍简单来说,当一个行为发生时传递信息给另外一个用户接受做出相应的处理,两者之间没有直接的耦合关联。在编程开发中也会经常用到一些观察者的模式或组件,如MQ服务,虽然MQ服务是有一个通知中心并不是每一个类服务进行通知,但整体上可以算是观察者模式的思路设计。再比如可能做过的一些类似事件监听总线,让主线服务与其他辅线业务服务分离,为了使系统降低耦合和增强扩展性,也会使用观察者模式思想。2. 案例场景模拟在本案例中模拟每次小客车指标摇号事件通知场景。假如这个类似的摇号功能由你来开发,并

2022-01-10 11:48:37 4605

原创 行为模式之策略模式的案例示范

1. 策略模式介绍策略模式是一种行为模式,也是替代大量ifelse的利器。它所能解决的场景,一般是具有同类可替代的行为逻辑算法场景。比如,不同类型的交易方式(信用卡、支付宝、微信)、生成唯一ID策略(UUID、DB自增、DB+Redis、雪花算法、Leaf算法)等,都可以使用策略模式进行包装,供给外部使用。策略模式有点像三国演义中诸葛亮给刘关张的锦囊:第一个锦囊:见乔国老,并把刘备娶亲的事情搞得东吴人尽皆知。第二个锦囊:用曹操打荆州的谎言骗跑在温柔乡的刘备回去。第三个锦囊:让孙夫人摆平东吴的追

2022-01-08 19:14:56 1443

原创 牢记设计模式六大设计原则

设计模式六大设计原则:单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。通俗的讲,一个类和方法只做一件事。开放封闭原则:软件实体可以扩展,但是不可修改。即面对需求,对程序的改动可以通过增加代码来完成,但是不能改动现有的代码。抽象架构,扩展实现。里氏代换原则:一个软件实体如果使用的是一个基类,那么一定适用于其派生类。即在软件中,把基类替换成派生类,程序的行为没有变化。多态,子类可扩展父类。依赖倒转原则:抽象不应该依赖细节,细节应该依赖抽象。迪米特原则:如果两个类不直接通信,那么这两个类不应

2022-01-07 11:25:19 102

原创 结构型模式之代理模式的案例示范

1. 代理模式介绍代理模式有点像老大和小弟,也有点像分销商。主要解决的问题是为某些资源的访问、对象的类的易用操作上提供方便使用的代理服务。而这种设计思想的模式经常会出现在我们的系统或用到过的组件中,它们都提供给你一种非常简单易用的方式控制原本你需要编写很多代码而进行使用的服务类。类似的场景:你的数据库访问层面经常会提供一个较为基础的应用,以此来减少应用服务扩容时不至于数据库连接数暴增。使用过的一些中间件:PRC框架。在拿到jar包对接口的描述后,中间件会在服务启动的时候生成对应的代理类,当调用接

2022-01-07 11:03:47 1216

原创 SceneBuilder:界面与代码分离神器 配合JavaFX食用的详细流程

1、前言当我们使用JavaFX来写一个GUI时,往往会感觉用代码做界面设计是一件非常麻烦的事。因此,我们需要去掌握使用FXML文件来设计界面,用Controller类来控制界面里面的所有action,这是为了做到界面与代码分离。本文就是介绍一款配合FXML文件使用的GUI界面设计工具。它有什么用呢?有了它,你就可以做到仅仅依靠拖拽即可完成设计以及自动生成FXML文件。2、环境准备准备:IDE推荐Intellij IDEA;jdk必须是1.8,1.8自带JavaFX包;主角:Scen

2022-01-06 20:27:57 3703

原创 exe4j:jar包转换成exe应用程序 详细使用教程

1、前言最近工作中碰到的需求:要求做一款桌面应用程序,用于连接Linux系统并具有运维功能的工具,要求win运行,通过界面操作,但界面不要求很漂亮。由于我本身主攻Java,后端相对熟悉,经过一番搜索了解到:首先Java开发GUI不是主流在Java开发GUI的历史中,第一阶段awt,第二阶段swing和swt,第三阶段是javafx,因此选定JavaFX进行开发。jar包完成后,希望包装成exe提供。假设jar包已经写好的情况下,一定会碰到的问题是jar包怎么包装成exe应用程序,从而提供给其

2022-01-05 19:58:51 2079 1

原创 结构型模式之桥接模式的案例示范

1. 桥接模式介绍桥接模式的主要作用就是通过将抽象部分与实现部分分离,把多种可匹配的使用进行组合。说白了核心实现就是A类中含有B类接口,通过构造函数传递B类的实现,这个B类就是设计的桥。桥接模式在平常的开发中有哪些场景?JDBC多种驱动程序的实现、同品牌类型的台式机和笔记本平板、业务实现中多类接口同组过滤服务等。这些场景都比较适合桥接模式进行实现,因为在一些组合中如果每一个类都实现不同的服务可能会出现笛卡尔积,而使用桥接模式就可以非常简单。2. 案例场景模拟随着市场的竞争在支付服务行业出现了微

2022-01-04 14:47:28 1360 1

原创 结构型模式之适配器模式的案例示范

1. 介绍在业务开发中我们经常需要做不同接口的兼容,尤其是中台服务,中台需要把各个业务线的各种类型服务做统一包装,再对外提供接口进行使用。2. 案例场景模拟随着业务不断发展,当基础的系统逐步成型之后,业务运营就需要开始做用户的拉新和促活,从而保证DUA的增速以及最终ROI转换。这里模拟一个营销系统,例如:你邀请一个用户开户,或者邀请一个用户下单,那么平台就会给你返利,多邀多得。同时随着拉新的量越来越多,开始设置每月下单就会给首单奖励等等各种营销场景。那么这个时候做这样一个系统就会接收各种各样的M

2021-12-31 18:45:04 629

原创 线程池Executor框架是怎么样的?

Executor框架的两级调度模型在Hot Spot VM的模型中,Java线程被一对一映射为本地操作系统线程。Java线程启动时会创建一个本地操作系统线程,当Java线程终止时,对应的操作系统线程也被销毁回收,而操作系统负责调度所有线程并就它们分配给可用的CPU。在上层,Java程序会将应用分解为多个任务,然后使用应用级的调度器(Executor)将这些任务映射成固定数量的线程;在底层,操作系统内核将这些线程映射到硬件处理器上。Executor框架类图Java线程既是工作单元,也是.

2021-12-29 13:57:57 243

原创 线程池原理及源码解读

线程池的优点线程是稀缺资源,使用线程池可以减少创建和销毁线程的次数,每个工作线程可以重复使用。可以根据系统的承受能力,调整线程池中工作线程的数量,防止因为消耗过多内容导致服务器崩溃。线程池的创建public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, .

2021-12-21 10:13:26 294

原创 JVM GC有哪几种,有什么区别,分别有什么触发条件?

Minor GC:对象从新生代区域消失的过程,清理整个YoungGen,eden和S0/S1的清理都会由于MinorGC Allocation Failure(YoungGen区内存不足)而触发minorGC;major GC:对象从老年代区域消失的过程,OldGen区内存不够而触发MajorGC;Full GC:清理整个堆空间,包括新生代、老年代、永久代,触发的场景:System.GC年代晋升失败,比如eden区存活的对象晋升到S区放不下,又尝试直接晋升到Old区还是放不下,那么Promotio

2021-12-20 15:26:40 458

原创 MySQL的几个常见面试问题

1、数据库三范式第一范式:列不可再分第二范式:行可以唯一区分,主键约束第三范式:表的非主属性不能依赖于其他表的非主属性,外键约束三大范式是一级一级依赖的,第二范式建议在第一范式上,第三范式建立在第一第二范式上2、数据库引擎查看mysql提供的所有存储引擎:show engines;常用引擎包括:MYISAM、Innod、Memory、MERGEMYISAM:全表锁,不支持事务,不支持外键,并发性能差,占用空间小,以select、insert为主的应用可以使用该引擎;Innodb:行

2021-12-20 14:52:28 543

原创 MQ的几个常见面试问题

1、为什么要用MQ?关键词:解耦、异步、削峰 解耦:比如A要发数据给BCD,通过接口调用发送。此时新增E,或C现在不需要这个数据了,此时就很难受了。如果使用MQ,A发送消息到MQ,谁需要就就去订阅。A完全不需要考虑给谁发送数据,不需要维护这个代码,也不需要考虑别人是否调用成功、失败超时等情况。 异步 削峰:减少高峰时刻对服务器的压力。 2、MQ的优缺点优点上面说了,解耦、异步、削峰缺点: 系统可用性降低。万一MQ挂了,整套系统就崩溃了。 系统负责

2021-12-17 10:15:58 3337

原创 JVM类加载机制

5个部分:1、加载:在内存中生成代表这个类的java.lang.Class对象,作为方法区这个类的入口。注意,不一定非得从Class文件获取,也可以是ZIP包(jar包、war包),也可以在运行时生成(动态代理),也可以由其他文件生成(比如JSP文件转换成对应的Class类)。2、验证:确保Class文件的字节流里包含的信息是否符合当前JVM的要求,不会危害到虚拟机的安全。3、准备:正式为类变量分配内存并设置初始值的阶段,即在方法区分配这边变量所使用的内存空间。4、解析:虚拟机将常量池中的符

2021-12-15 09:57:44 310

原创 JVM GC垃圾回收机制

1、JAVA中四种引用类型 强引用:最常见,把一个对象赋给一个引用变量。即使该对象永远不用也不会被GC回收,是造成内存泄漏的主要原因之一。 软引用:SoftReference类实现,内存不足时会被回收。 弱引用:WeakReference类实现,只要GC执行,不管内存空间是否足够,都会被回收。 虚引用:PhantomReference类来实现,不能单独使用,必须和引用队列联合使用。虚引用的作用是跟踪对象被垃圾回收的状态。 2、GC 分代收集算法VS分区收集算法分代

2021-12-14 10:55:23 415

原创 认识JVM和运行时内存

认识JVM和运行时内存基本概念:JVM运行Java代码的假想计算机,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收、一个堆、一个存储方法域。JVM与硬件没有直接交互,运行在操作系统之上。运行过程: Java源文件---->编译器---->字节码文件 字节码文件---->JVM解释器---->机器码 内存区域:运行时数据区:方法区、堆、栈、本地方法栈、计数器1、线程JVM允许一个应用并发执行多个线程。JVM中的Java线程与操作系统线

2021-12-13 20:00:10 1168

原创 SpringBoot-06-模板引擎Thymeleaf

6. 模板引擎 ThymeleafThyme leaf 英译为 百里香的叶子。模板引擎​ 以前开发中使用的jsp就是一个模板引擎,但是springboot 以jar的方式,并且使用嵌入式的tomcat,所以默认不支持jsp。​ Springboot推荐使用模板引擎,除了jsp,还有用的比较多的freemarker,包括springboot推荐的Thymeleaf。它们的思想都是一样的,如下:模板引擎的作用:​ 写一个页面模板,加上后台封装好的数据,交给模板引擎。它按照我们的数据进行表

2020-10-10 16:18:48 149

原创 SpringBoot-05-web开发

5. SpringBoot Web开发5.1 web开发探究简介SpringBoot最大的特点就是自动装配!使用SpringBoot的步骤:创建一个SpringBoot应用,选择我们需要的模块,springboot自动配置完成;手动在配置文件中配置部分就可以运行起来了;专注编写业务代码即可!比如SpringBoot到底帮我们配置了什么?我们能不能修改?我们能修改哪些配置?我们能不能扩展?向容器中自动配置组件:xxxAutoConfiguration自动配置类,封装配置文件的内容

2020-10-05 16:21:01 104

原创 SpringBoot-04-自动配置原理再理解

4. 自动配置原理再理解​ 配置文件到底能写什么?怎么写?SpringBoot官方文档有大量的配置,但是难以全部记住。分析自动配置原理​ 官方文档​ 我们以HttpEncodingAutoConfiguration(Http编码自动配置)为例解释自动配置原理;//表示这是一个配置类,和以前编写的配置文件一样,也可以给容器中添加组件;@Configuration //启动指定类的ConfigurationProperties功能; //进入这个HttpProperties查看,

2020-10-03 21:53:00 1050 1

原创 SpringBoot-03-JSR303数据校验和多环境切换

3.3 JSR303数据校验先看如何使用​ Springboot中可以用@Validated来校验数据,如果数据异常则统一抛出异常,方便异常中心统一处理。​ 这里我们写个注解让name只支持Email格式:@Component@ConfigurationProperties(prefix = "person")@Validated //数据校验public class Person { @Email() private String name;}导入依赖:&lt

2020-09-30 11:23:56 138

原创 SpringBoot-03-配置之注入配置文件

3.2 注入配置文件yaml更强大的地方在于,可以给实体类直接注入匹配值!yaml注入配置文件在springboot项目中的resources目录下新建application.yml编写一个实体类 Dog@Componentpublic class Dog { private String name; private Integer age;}思考:原来怎么给bean注入属性值,@Value@Componentpublic class Dog {

2020-09-23 17:43:17 142

原创 SpringBoot-03-配置之yaml语法学习

3. SpringBoot配置3.1 yaml语法学习配置文件Springboot使用一个全局的配置文件,配置文件名称固定spplication.properties语法结构:key=valueapplication.yml语法结构:key:空格 value配置文件作用:​ 修改springboot自动配置的默认值;​ 比如,我们可以修改Tomcat默认启动的端口号!server.port=8081yaml概述​ YAML=YAML Ain’t Ma

2020-09-22 21:26:01 94

原创 SpringBoot-02-主启动类之SpringApplication

2.3 SpringApplication不简单的方法看上去是简单的运行了一个main方法,实际上是开启了一个服务:@SpringBootApplicationpublic class Springboot01HelloApplication { public static void main(String[] args) { //将SpringBoot应用启动 SpringApplication.run(Springboot01HelloApplica

2020-09-21 16:11:40 144

原创 SpringBoot-02-原理初探之主启动类

2. 原理初探2.1 pom.xml父依赖主要依赖一个父项目,主要管理项目的资源过滤和插件<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.2.RELEASE</version> <relat

2020-09-19 21:35:58 228

原创 SpringBoot-01-快速入门

SpringBoot1. 快速入门什么是Spring轻量级的Java开源开发框架为了解决企业级应用开发的复杂性而创建的,简化开发Spring是如何简化Java开发的​ 为了降低Java开发的复杂性,Spring采用4种关键策略:基于POJO的轻量级和最小侵入性编程;通过IOC,依赖注入(DI)和面向接口实现松耦合;基于切面(AOP)和惯例进行声明式编程;通过切面和模板减少样式代码;什么是SpringBoot​ SpringBoot就是一个JavaWeb的开发框

2020-09-18 16:47:40 147

原创 SpringMVC-12-SSM回顾与总结

12.SSM回顾与总结

2020-09-17 16:58:56 64

原创 SpringMVC-11-文件上传和下载

11. 文件上传和下载准备工作​ springMVC可以很好的支持文件上传,但是SpringMVC上下文默认没有装配MultipartResolver,因此默认情况下不能处理文件上传工作。如果想实现,必须在上下文配置MultipartResolver。​ 前端表单要求:为了能上传文件,必须使用POST,并将enctype设置为multipart/form-data。浏览器可以把用户选择的文件以二进制数据发送给服务器。​ 对表单的enctype属性的详细说明application/x-w

2020-09-16 12:10:16 82

原创 SpringMVC-10-拦截器Interceptor

10. 拦截器概述SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。开发者可以自定义拦截器来实现特定的功能。过滤器和拦截器的区别:拦截器是AOP思想的具体应用。过滤器:servlet规范中的一部分,任何java web工程都可以使用在url-pattern配置了/*后,可以对所有要访问的资源进行拦截拦截器:拦截器是SpringMVC框架自己的,只有使用了SpringMVC框架的工程才能使用拦截器只会拦截访问的控制器方

2020-09-15 12:08:04 78

原创 SpringMVC-09-Ajax技术

9. Ajax技术简介AJAX=Asynchronous JavaScript and XML (异步的JavaScript和XML)AJAX是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。Ajax不是新的编程语言,而是一种用于创建更快更好以及交互性更强的Web应用程序的技术。举例:在搜索框输入关键词时,JavaScript会把这些字符发送到服务器,然后服务器返回一个搜索建议的列表。伪造Ajax我们可以使用前端的一个标签来伪造一个ajax的样子:iframe新建

2020-09-14 11:57:11 83

spring-study.rar

跟着狂神学的spring 手敲项目 配合上传的笔记 希望能帮到在学习的其他人 一起加油~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2020-07-31

Spring Framework 5.md

跟着狂神学 手巧笔记 希望能帮到在学习的各位 一起加油~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2020-07-31

Mybatis-Study.rar

跟着狂神敲代码,结合上一份Mybatis笔记,辅助用的手敲项目,配合笔记阅读使用,加油~~~~~~~~

2020-07-28

MybatisNote.md

跟着狂神大大手敲的学习笔记,分享给有需要的人,共同进步,冲鸭~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2020-07-28

指标的正态检验问题

对大数据的正态性检验 可作为参考来解决数据的处理 有疑问留言~

2018-09-04

2004B数模竞赛 电力分配预案

这段代码主要解决的是 2004B数模竞赛中 第三问 电力分配预案生成问题 有疑问留言~

2018-09-04

k-means聚类分析 可选类个数

k-means聚类分析 matlab 输入点集和类别数,确定距离定义,即可实现k-means聚类分析

2018-09-04

空空如也

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

TA关注的人

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