自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 CentOS7模板机环境的搭建

虚拟机安装Centos7

2022-10-14 08:10:38 785 1

原创 获取图片元数据信息,经纬度转地址

Java获取照片元数据

2022-07-12 11:36:30 257

原创 RabbitMQ的安装及基础使用教程

1、消息中间件概述1.1、什么是消息中间件MQ全称 Message Queue ,消息队列是应用程序与应用程序之间的通讯媒介,多用于分布式系统之间的通信。下图为进行远程通信的两种方式:直接远程调用和通过消息中间件 完成通信。为什么要使用MQ在项目中,有些业务操作不需要即时返回并且处理耗时,可以把这些操作提取出来进行异步处理,而这种异步处理的方式可以大大的节省服务器的请求响应时间,从而提高系统的吞吐量。MQ的常见使用场景任务异步处理将不需要同步处理且耗时的操作有消息队列通知消息

2022-03-17 09:39:11 200 1

原创 chmod 777 授权无效

chmod 777 命令给文件夹授权后,依旧无权限访问这是因为SELinux是Linux系统上一个常见的安全软件,只需要把它关闭即可首先通过命令 getenforce 来查看当前SELinux的状态,默认情况下一般都是Enforcing状态,也就是强制启用的意思。SELinux一共有3种状态,分别是Enforcing,Permissive和Disabled状态。第一种是默认状态,表示强制启用,第二种是宽容的意思,即大部分规则都放行。第三种是禁用,即不设置任何规则。可以通过setenforce命令

2021-11-29 23:16:27 7517

原创 手写 starter

自定义个一个简单的 redission-spring-boot-starter文章目录第一步:新创建一个module,命名 redission-spring-boot-starter第二步:导入依赖第三步:自定义配置类第四步:写入到 ==spring.factories== 文件中,可被自动装配扫描到第五步:==mvn install==命令把module添加到本地仓库第六步:测试 ==redission-spring-boot-starter== 启动器第一步:新创建一个module,命名 redi

2021-11-25 11:22:58 180

原创 CentOS 7虚拟机下配置固定IP

CentOS 7虚拟机下配置固定IP达到如下效果:1、笔记本主机IP为设置自动获取,不管什么情况下,不受虚拟机影响,只要连接外网就可以正常上网;2、只要笔记本主机可以正常访问外网,启动虚拟机中的CentOS 7系统就可以正常访问外网,无需再进行任何设置;3、虚拟机设置为固定IP,不管主机在什么网络环境下,是断网环境,还是连接任何网段访问外网的环境下,虚拟机的IP都固定不变,而且使用终端连接,始终不变,正常连接;4、虚拟机的固定IP可以按照自己想设置的IP地址网段随意设置,比如我就想设置固定IP为1

2021-11-21 16:25:55 2055

原创 Spring注解发展历程

1,Spring Framework 1.x 注解驱动启蒙时代此时,Java5刚刚发布,开始支持Annotation,Spring1.2提供了==@Transactional和@ManagedResource==注解,但是此时Bean的装载还是通过XML配置文件的方式 <bean name="DemoSerivce" class="com.ditian.example.spring.v1.DemoService01"/>2,Spring Framework 2.x 注解驱动过渡时期.

2021-11-18 16:49:37 483

原创 42.接雨水

/** * @Classname CatchRain * @Description TODO * @Version 1.0.0 * @Date 2021/11/2 9:20 * @Created by DiTian */public class CatchRain { public static void main(String[] args) { int[] height = new int[]{0,1,0,2,1,0,1,3,2,1,2,1}; //

2021-11-02 10:33:52 85

原创 POI和easyExcel

POI使用依赖 <!--xls 03--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</version> &l

2021-10-29 22:04:39 169

原创 Java IO流

1, File类1.1 File类定义File类主要是JAVA为文件这块的操作(如删除、新增等)而设计的相关类File类的包名是java.io,其实现了Serializable, Comparable两大接口以便于其对象可序列化和比较1.2 File类方法构造方法:File(URI uri)通过将给定的 file:URI转换为抽象路径名来创建新的 File实例。File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。

2021-10-13 11:21:02 86

原创 5. 最长回文子串

最长回文子串给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。示例 2:输入:s = “cbbd”输出:“bb”示例 3:输入:s = “a”输出:“a”示例 4:输入:s = “ac”输出:“a”提示:1 <= s.length <= 1000s 仅由数字和英文字母(大写和/或小写)组成动态规划和中心扩展法实现:/** * @Author: DiTian *.

2021-10-11 10:18:25 73

原创 高级技术之 JUC 高并发编程

1,什么是 JUC1.1 JUC简介JUC 就是java.util.concurrent 工具包的简称,这一个专门用来处理线程的工具包,JDK1.5开始出现1.2 进程与线程**进程(Process):**是系统进行资源分配和调度的基本单位,比如QQ启动就是一个进程。**线程(Thread):**是操作系统能够进行运算调度的最小单位,是程序执行的最小单位,它被包含在进程中,比如QQ中的各个功能,都是不同的线程。1.3 线程的状态在Thread类中枚举了线程的6种状态; pu

2021-08-25 14:06:31 785

原创 236. 二叉树的最近公共祖先(java)

/** * @Author: DiTian * @Description: * @Date: Created in 9:28 2021/8/20 */public class CommonAncestor { private static Map<Integer,BTNode> parent = new HashMap<Integer,BTNode>(); private static Set<Integer> visited = new Has

2021-08-20 12:11:53 225

原创 SpringBoot启动流程

0,启动@SpringBootApplication注解类的main方法import org.springframework.boot.SpringApplication;//启动类import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication//启动必要的注解public class SpringBootDemoApplication { //运行main方法启动spri

2021-08-19 14:20:03 443

原创 88. 合并两个有序数组

/** * @Author: DiTian * @Description: 合并两个有序数组 * @Date: Created in 9:24 2021/8/13 */public class MergeTwoArrays { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入第一个有序数组,逗号隔

2021-08-13 10:28:00 71

原创 415. 字符串相加

/** * @Author: DiTian * @Description: 两字符串相加 * @Date: Created in 15:23 2021/8/12 */public class StrAddStr { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str1 = scanner.nextLine();

2021-08-12 16:58:33 44

原创 121. 买卖股票的最佳时机(java)

/** * @Author: DiTian * @Description: 买卖股票的最佳时机 * @Date: Created in 16:49 2021/8/9 */public class MaxProfit { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入一串数字,逗号隔开:");

2021-08-10 09:43:29 65

原创 103. 二叉树的锯齿形层序遍历(Java)

/** * @Author: DiTian * @Description: 二叉树的锯齿形层次遍历 * @Date: Created in 16:08 2021/7/28 */@SuppressWarnings("unused")public class ZigzagLevelTraversal { //树节点类 static class TreeNode{ Integer val; TreeNode left; TreeNode

2021-08-09 16:31:54 133

原创 Nacos启动没反应

按住shift,鼠标右键(选择在此打开命令窗口)输入startup.cmd -m standalone命令执行结果:需要满足条件:1、java(x64)! jdk8 or later is better2、环境变量需要配置: JAVA_HOME再次运行成功启动!

2021-08-07 16:00:42 983

原创 21. 合并两个有序链表(Java代码实现)

通过递归和迭代两种方式合并两个有序链表/** * @Author: DiTian * @Description: 合并两个有序链表 * @Date: Created in 10:03 2021/8/6 */public class MergeTwoList { //创建节点类 static class LinkedNode{ private int val; private LinkedNode next; public Linke

2021-08-06 10:50:10 150

原创 【LeetCode】160. 相交链表(JAVA完整代码)

/** * @Author: DiTian * @Description: 求两个链表的相交节点 * @Date: Created in 16:49 2021/8/5 */public class IntersectionNode { //节点类 static class LinkedNode{ private String val; private LinkedNode next; LinkedNode(String val){

2021-08-06 09:46:14 160

原创 141. 环形链表

给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。/** * @Author: DiTian * @Description: * @Date: Created

2021-08-05 09:55:25 35

原创 LeetCode 53. 最大子序和

/** * @Author: DiTian * @Description: 最大子序列和 * @Date: Created in 13:33 2021/8/2 */public class MaxSubArray { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入数组元素,以逗号分隔:");

2021-08-03 12:56:14 51

原创 快速排序和计数排序

/** * @ClassName: SortArray * @Description: 数组排序 * @Author: DiTian * @Date: 2021/8/1 11:58 */public class SortArray { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入一个数组,以

2021-08-01 20:00:40 125

原创 LeetCode---15. 三数之和(java实现)

/** * @Author: DiTian * @Description: * @Date: Created in 15:24 2021/7/30 */public class SumOfThreeNums { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Set set = new HashSet(); System.ou

2021-07-30 16:07:52 45

原创 二叉树创建

创建一棵二叉树,并进行先序,层次遍历/** * @Author: DiTian * @Description: 树的创建 * @Date: Created in 16:59 2021/7/28 */public class BTNode { //定义一个二叉树的结点 private int data; private BTNode lchild; private BTNode rchild; //构造函数 public BTNode(){

2021-07-29 08:49:32 125

原创 23种设计模式——装饰者模式

1、装饰器模式在软件开发过程中,有时想用一些现存的组件。这些组件可能只是完成了一些核心功能。但在不改变其结构的情况下,可以动态地扩展其功能。所有这些都可以釆用装饰器模式来实现。1.1、装饰器模式的定义与特点装饰器(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。装饰器模式的主要优点有:装饰器是继承的有力补充,比继承灵活,在不改变原有对象的情况下,动态的给一个对象扩展功能,即插即用通过使用不用装饰类及这些

2021-07-23 18:07:09 84

原创 23种设计模式——桥接模式

1、桥接模式在现实生活中,某些类具有两个或多个维度的变化,如图形既可按形状分,又可按颜色分。如何设计类似于 Photoshop 这样的软件,能画不同形状和不同颜色的图形呢?如果用继承方式,m 种形状和 n 种颜色的图形就有 m×n 种,不但对应的子类很多,而且扩展困难。当然,这样的例子还有很多,如不同颜色和字体的文字、不同品牌和功率的汽车、不同性别和职业的男女、支持不同平台和不同文件格式的媒体播放器等。如果用桥接模式就能很好地解决这些问题。1.2、桥接模式的定义与特点桥接(Bridge)模式的定义如

2021-07-23 04:37:56 263

原创 23种设计模式——适配器模式

1、适配器模式在软件设计中也可能出现:需要开发的具有某种业务功能的组件在现有的组件库中已经存在,但它们与当前系统的接口规范不兼容,如果重新开发这些组件成本又很高,这时用适配器模式能很好地解决这些问题。1.2、模式的定义与特点适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少

2021-07-22 21:27:00 186

原创 23种设计模式——代理模式

1、代理模式1.1、代理模式的定义与特点代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。代理模式的主要优点有:代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用;代理对象可以扩展目标对象的功能;代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度,增加了程序的可扩展性其主要缺点是:代理模式会造成系统设计中类的数量增加在客户端和目标对象之间增加一

2021-07-22 05:54:35 193

原创 23种设计模式——建设者模式

1、建设者模式在软件开发过程中有时需要创建一个复杂的对象,这个复杂对象通常由多个子部件按一定的步骤组合而成。例如,计算机是由 CPU、主板、内存、硬盘、显卡、机箱、显示器、键盘、鼠标等部件组装而成的,采购员不可能自己去组装计算机,而是将计算机的配置要求告诉计算机销售公司,计算机销售公司安排技术人员去组装计算机,然后再交给要买计算机的采购员。生活中这样的例子很多,如游戏中的不同角色,其性别、个性、能力、脸型、体型、服装、发型等特性都有所差异;还有汽车中的方向盘、发动机、车架、轮胎等部件也多种多样;每封电子

2021-07-19 21:50:31 211

原创 23种设计模式——抽象工厂模式

1、抽象工厂模式前面介绍的工厂方法模式中考虑的是一类产品的生产,如畜牧场只养动物、电视机厂只生产电视机、计算机软件学院只培养计算机软件专业的学生等。同种类称为同等级,也就是说:工厂方法模式只考虑生产同等级的产品,但是在现实生活中许多工厂是综合型的工厂,能生产多等级(种类) 的产品,如农场里既养动物又种植物,电器厂既生产电视机又生产洗衣机或空调,大学既有软件专业又有生物专业等。本节要介绍的抽象工厂模式将考虑多等级产品的生产,将同一个具体工厂所生产的位于不同等级的一组产品称为一个产品族。1.1、模式的定

2021-07-18 21:59:45 180

原创 23种设计模式——工厂方法模式

1、工厂方法模式“工厂方法模式”是对简单工厂模式的进一步抽象化,其好处是可以使系统在不修改原来代码的情况下引进新的产品,即满足开闭原则。优点:用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程。灵活性增强,对于新产品的创建,只需多写一个相应的工厂类。典型的解耦框架。高层模块只需要知道产品的抽象类,无须关心其他实现类,满足迪米特法则、依赖倒置原则和里氏替换原则。缺点:类的个数容易过多,增加复杂度增加了系统的抽象性和理解难度抽象产品只能生产一种产品,此

2021-07-18 18:05:44 216

原创 23种设计模式——原型模式

1、原型模式1.1、原型模式的定义与特点原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。例如,Windows 操作系统的安装通常较耗时,如果复制就快了很多。在生活中复制的例子非常多,这里不一一列举了。原型模式的优点:Java 自带的原型模式基于内存二进制流的复制,在性能上比直接 new 一个对象更加优良。可以使用深克隆方式

2021-07-18 13:58:26 214

原创 23种设计模式——单例模式

1、单例模式单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。主要解决:一个全局使用的类频繁地创建与销毁。使用场景:当想控制实例的数量,

2021-07-17 10:14:28 590

原创 SnowFlake 算法

SnowFlake 算法SnowFlake 算法,是 Twitter 开源的分布式 id 生成算法。其核心思想就是:使用一个 64 bit 的 long 型的数字作为全局唯一 id。在分布式系统中的应用十分广泛,且ID 引入了时间戳,基本上保持自增的,后面的代码中有详细的注解。这 64 个 bit 中,其中 1 个 bit 是不用的,然后用其中的 41 bit 作为毫秒数,用 10 bit 作为工作机器 id,12 bit 作为序列号。①1 bit:是不用的,为啥呢?因为二进制里第一个 bit 为如

2021-07-12 16:20:42 1072

原创 jQuery实现table表格中行数据上下拖拽功能

jQuery实现table表格中行数据上下拖拽功能$("#table").sortable({ cursor: "move", axis: "y", //只在y轴进行拖动 item: "tr", //拖动的对象 opacity: 0.5, //拖动时,透明度为0.5 revert: false, //释放时,增加动画 cancel: "tfoot,thead", //禁止表头和表末拖拽 update: function(event,u

2021-07-09 10:50:12 1008

原创 Git+Gitee+IDEA

1 Git概述Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。Git 易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具。1.1 版本控制介绍版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。版本控制最主要的功能就是追踪文件的变更。它将什么时候、什么人

2021-05-09 11:12:41 266

空空如也

空空如也

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

TA关注的人

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