自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构与算法学习——基础知识(一)

数据结构与算法线性结构和非线性结构线性结构基本概念非线性结构基本概念线性结构和非线性结构数据结构主要包括线性结构和非线性结构。线性结构基本概念线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系线性结构有两种不同的存储结构,即顺序存储结构(数组)和链式存储结构(链表)。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的(地址是连续的)。链式存储的线性表称为链表,链表中得存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息线性结构常见的有:数据、队列、链

2020-11-09 20:14:27 573 1

原创 Javaswing图书信息管理平台

2022-12-24 02:12:43 134 1

原创 java执行linux命令的形式导出图片压缩包(后台导出,单线程运行)

@GetMapping("exportTask") public @ResponseBody RestResult exportTask(String taskId) { Map<String, Object> hashMap = new HashMap<>(); Task task = taskService.getById(taskId); //TODO 需要在这里知道最后用户的上传时间,如果最后时间小于生成时间,.

2021-11-25 15:51:28 673

原创 总结 nginx access.log 太大如何清理

总结 nginx access.log 太大如何清理cat /dev/null > access.log 以一个空文件替换该文件 ,既不需要重启,又不需要切换配置文件进入到nginx 的logs文件夹下,输入 truncate -s 0 access.log 清空access.log文件备注: truncate命令可以将一个文件缩小或者扩展到某个给定的大小可以利用该命令和-s选项来特别指定文件的大小删除access.log 文件 并重启nginx...

2021-11-16 14:00:34 8505

原创 编程业务案例——Js+Jquery+手撕翻页插件——源码+解析

翻页插件效果css样式html代码js代码效果css样式.Pages { zoom: 1; text-align: center; color: #666; clear: both;}.Pages span { padding: 0px 0px; display: inline-block;}.Pages a { display: inline-block; margin: 0px 4px; line-height

2020-11-19 11:22:46 290

原创 数据结构与算法学习——基础知识(二)

基础知识递归递归

2020-11-18 20:33:34 190

原创 编程案例——bootstrap左侧树增删改查

bootstrap左侧树demo左侧树效果图代码实例左侧树效果图代码实例前端页面页面只需写一个ul标签即可<div class="col-md-2"> <ul id="ztree" class="ztree"></ul></div>js引包<script type="text/javascript" src="${ctx.contextPath}/static/plugins/admin-template/js/jqu

2020-11-10 11:28:45 379

原创 设计模式学习——设计模式概论与分类

设计模式设计模式介绍设计模式类型单例设计模式单例模式的介绍单例模式有八种方式:设计模式介绍设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验、模式不是代码,而是某类问题的通用解决方案,设计模式(Design pattern)代表了最佳的实践,这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式的本质提高 软件的维护性,通用性和扩展性,并降低软件的复杂度<设计模式>是经典的书,作者是Erich Gamma、Richard Helm、Ralph

2020-10-27 15:06:09 109

原创 设计模式学习——职责链模式

职责链模式基本介绍职责链模式的实例类图职责链模式的实例代码职责链模式在SpringMvc的源码分析职责链模式的注意事项和细节基本介绍职责链模式(Chain of Responsibility Pattern),又叫责任链模式,为请求创建了一个接收者对象的链(简单示意图)。这种模式对请求的发送者和接收者进行解耦。职责链模式通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,以此类推。这种类型的设计模式属于行为型模式。### 原理类图![

2020-10-27 00:58:40 147

原创 设计模式学习——策略模式

策略模式原理类图策略模式的实例类图策略模式的代码实例策略模式在JDK-Arrays 应用的源码分析策略模式的注意事项和细节### 基本介绍1. 策略模式中(Stractegy Pattern)中,定义算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。2. 这算法体现了几个设计原则,第一、把变化的代码从不变的代码中分离出去;第二、针对接口编程而不是具体类(定义了策略接口);第三、多用组合/聚合,少用继承(客户通过组合方式使用策略)原理类图对原理类图的说明,即

2020-10-24 14:45:48 110

原创 编程案例——layui的table表格并获取选中的数据、layui监控select下拉框并将隐藏的div显示

layuitable表格展示效果代码获取radio标签所对应的数据条目table表格展示效果代码前端代码<html><body><table id="demo" lay-filter="demo"></table></body><script src="/static/js/jquery-1.8.3.min.js"></script><script> layui.use('table'

2020-10-23 17:53:25 3089

原创 设计模式学习——状态模式

状态模式基本介绍原理类图状态模式类图实例状态模式代码实例状态模式注意事项和细节基本介绍状态模式(state Pattern):它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换。当一个对象的内在状态发生改变时,允许改变其行为,这个对象看起来像是改变了其类。原理类图对原理类图的说明-即(状态模式的角色及职责)Context类 为环境角色,用于维护ConcreteState实例,这个实例定义当前状态State 是抽象状态角色,

2020-10-22 23:17:49 110

原创 设计模式学习——解释器模式

解释器模式基本介绍基本介绍在编译原理中,一个算术表达式通过词法分析器形成词法单元,而后这些词法单元再通过语法分析器构建语法分析树,最终形成一颗抽象的语法分析树。这里的词法分析器和语法分析器都可以看做是解释器。解释器模式(Iterpreter Pattern):是指给定一个语言(表达式),定义它的文法的一种表示,并定义一个解释器,使用该解释器来解释语言中的句子(表达式)应用场景应用可以将一个需要解释执行的语言中的句子表示为一个抽象语法树一些重复出现的问题可以用一种简单的语言来表达..

2020-10-22 21:56:14 332

原创 设计模式学习——备忘录模式

备忘录模式基本介绍原理类图原理代码备忘录模式的实例类图备忘录模式的实例代码备忘录模式的注意事项和细节基本介绍备忘录模式(Memento Pattern)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将对象恢复到原先保存的状态。现实生活中的备忘录是用来记录某些要去做的事情,或者是记录已经达到的共同意见的事情,以防忘记了。而在软件层面,备忘录模式有着相同的含义,备忘录对象主要用来记录一个对象的某种状态,或者某些数据,当要做回退时,可以从备忘录对象里获取原来的数

2020-10-20 16:03:09 155

原创 设计模式学习——中介者模式

中介者模式基本介绍原理类图中介者模式的类图实例中介者模式的代码实例中介者模式的注意事项和细节基本介绍中介者模式(Mediator Pattern),用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式属于行为型模式,使代码易于维护比如MVC模式,C(Controller控制器)是M(Model模型)和V(View视图)的中介者,在前后端交互时起到了中间人的作用。原理类图对原理类图的说明-即(中介者模式

2020-10-20 14:41:00 119

原创 设计模式学习——观察者模式

观察者模式基本介绍观察者模式实例类图观察者模式实例代码观察者模式在JDK应用的源码分析基本介绍观察者模式 (Observer Pattern) 是一种"发布者-订阅者"的模式.有时候也被称为"模型视图模式","源-监听者模式"等. 在这种模式中,由一个目标对象来管理所有依赖与它的观察者对象,并且当这个目标对象自身发生改变时,会主动向它的观察者们发出通知.观察者模式实例类图观察者模式实例代码//接口,让WeatherData 来实现public interface Subject {

2020-10-16 16:28:57 106

原创 设计模式学习——迭代器模式

迭代器模式迭代器模式的介绍原理类图迭代器模式实例类图迭代器模式实例代码迭代器模式的介绍迭代器模式(Iterator Pattern)是常用的设计模式,属于行为型模式如果我们的集合元素是用不同的方式实现的,有数组、还有java的集合类、或者还有其他方式,当客户端要遍历这些集合元素的时候就要使用多种遍历方式,而且还会暴露元素的内部结构,可以考虑使用迭代器模式解决。迭代器模式,提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即:不暴露其内部的结构。原理类图

2020-10-16 10:47:20 200 1

原创 SpringCloud学习——系统架构演变、Dubbo和SpringCloud的对比

SpringCloud学习系统架构演变背景集中式架构垂直拆分分布式服务流动计算架构(SOA)微服务Dubbo和SpringCloud的对比RPC与HTTP的对比系统架构演变背景随着互联网的发展,网站应用的规模不断扩大。需求的激增,带来的是技术上的压力。系统架构也因此不断的演进、升级、迭代。从单一应用,到垂直拆分,到分布式服务,到SOA,以及现在火热的微服务架构,还有在Google带领下来势汹涌的Service Mesh。集中式架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以

2020-10-15 14:10:20 191

原创 SpringCloud学习——了解SpringBoot

SpringBoot基本介绍概念为什么要学习SpringBootSpringBoot的主要特征详解SpringBoot父工程SpringBoot启动器@EnableAutoConfiguration@ComponentScan基本介绍概念Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications >that you can “just run”.We take an

2020-10-15 10:48:31 154

原创 设计模式学习——访问者模式

访问者模式基本介绍原理类图访问者模式的类图实例访问者模式的代码实例基本介绍访问者模式,封装一些作用于某种数据结构的各元素的操作,它可以再不改变数据结构的前提下定义作用于这些元素的新的操作。主要将数据结构与数据操作分离,解决数据结构和操作耦合性问题。访问者模式的基本工作原理是:在被访问的类里面加一个对外提供接待访问者的接口。访问者模式主要应用场景是:需要对一个对象结构中的对象进行很多不同操作(这些操作彼此没有关联),同时需要避免让这些操作“污染”这些对象的类,可以选用访问者模式解决。原

2020-10-04 16:18:58 101

原创 设计模式学习——命令模式

命令模式基本介绍原理类图命令模式的类图实例命令模式的代码实例基本介绍命令模式:在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求得接收者是谁,也不知道被请求得操作是哪个。我们只需要在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计。命令模式使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活,实现解耦。在命令模式中,会将一个请求封装为一个对象,以便使用不同参数来表示不同的请求(即命名),同时命令模式也支持可撤销的操作。原理类图

2020-10-04 13:34:03 118

原创 设计模式学习——模板方法模式

模板方法模式基本介绍模板方法模式类图实例:模板方法模式代码实例:模板方法的钩子方法模板方法模式在Spring框架应用的源码分析模板方法模式在Spring框架应用的源码类图基本介绍模板方法模式,又叫模板模式,在一个抽象类公开定义了执行它的方法的末班,它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。简单说,模板方法模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构,就可以重定义该算法的某些特定步骤。这种类型的设计模式属于行为型模式。

2020-10-03 00:38:04 150

转载 并发编程面试题(2020最新版)——修正版

一、基础知识1 并发编程的优缺点1.1 为什么要使用并发编程(并发编程的优点)充分利用多核CPU的计算能力方便进行业务拆分在百万级千万级的并发量要求下,多线程并发编程是开发高并发系统的基础,面对复杂业务模型,并行程序会比串行程序更符合业务需求1.2 并发编程有什么缺点并发编程并不总是能提高程序运行速度的,可能也会遇到很多问题,比如:内存泄漏、上下文切换、线程安全、死锁等问题。2 并发编程三要素是什么?出现线程安全问题的原因是什么?如何保证多线程的运行安全?2.1 并发编程三要素(线程

2020-10-02 01:26:46 1357

原创 设计模式学习——代理模式

代理模式基本介绍静态代理静态代理的基本介绍静态代理类图实例静态代理代码实例静态代理优缺点动态代理动态代理模式基本介绍动态代理类图实例动态代理代码实例Cglib代理Cglib代理模式得基本介绍Cglib代理模式类图实例Cglib代理模式代码实例代理模式(Proxy)的变体基本介绍代理模式:为一个对象提供一个替身,以控制对这个对象的访问,即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。被代理的对象可以是远程对象、创建开销大的对象或需要安

2020-10-01 19:17:04 323

原创 多线程编程学习——04线程的通讯机制

线程的通讯机制为什么要线程通讯线程通讯方式休眠唤醒方式Oject的wait、notify、notifyAllCondition的await、signal、signalAll相关面试题sleep和wait区别wait和notify区别为什么要线程通讯多个线程并发执行时,在默认情况下CPU是随机切换线程的,有时我们希望CPU按我们的规律执行线程,此时就需要线程之间协调通信。线程通讯方式线程间通讯常用方式如下:休眠唤醒方式: Object的wait、notify、notifyAllCondit

2020-09-30 16:39:13 262

原创 设计模式学习——享元模式

享元模式基本介绍原理类图类图实例代码实例享元模式在JDK-Integer的应用源码分析享元模式的注意事项和细节基本介绍享元模式(Flyweight Pattern),也叫蝇量模式:运用共享技术有效地支持大量细粒度的对象。常用于系统底层开发,解决系统的性能问题。像数据库连接池,里面都是创建好的连接对象,在这些连接对象中有我们需要的则直接拿来用,避免重新创建,如果没有我们需要的,则创建一个。享元模式能够解决重复对象的内存浪费的问题,当系统中有大量相似对象,需要缓冲池时。不需总是创建新对象,可以从缓

2020-09-29 00:00:03 86

原创 Java多线程编程学习——03线程死锁

线程安全问题什么是死锁?死锁产生的四个必要条件互斥条件不可剥夺条件请求与保持条件循环与等待条件死锁处理死锁预防破坏“互斥”条件破坏“请求与保持”条件破坏“不可剥夺”条件破坏“循环与等待”条件死锁避免有序资源分配法银行家算法顺序加锁限时加锁死锁检测什么是死锁?多个线程抢占同一资源,并请求锁定对方资源,造成恶性循环且无外力情况下无法执行下去的情况叫做死锁。死锁产生的四个必要条件互斥条件线程(进程)要求对所分配的资源具有排他性,即在一段时间内某个资源被当前线程(进程)所占有,其他线程(进程)若想

2020-09-28 14:47:54 171

原创 Java多线程编程学习——02线程安全问题

线程安全问题什么是线程安全线程安全问题根本原因问题解决-线程同步同步代码块(synchronized)什么是线程安全如果有多个线程同时运行同一个实现了Runnable接口的类,程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的;反之,则是线程不安全的。线程安全问题根本原因多个线程同一时刻操作共享的数据,会导致该共享数据出现与预期的值不符的情况,这样便会引发线程安全问题。问题解决-线程同步要解决线程安全问题,只要在某个线程修改共享资源的

2020-09-28 12:16:10 93

原创 设计模式学习——外观模式

外观模式基本介绍原理类图代码实例外观模式在MyBatis框架的源码分析源码类图外观模式的注意事项和细节基本介绍外观模式(Facade),也叫"过程模式",外观模式为子系统中的一组接口提供了一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节。原理类图说明(外观模式的角色分析):外观类(Facade):为调用端提供统一的调用接口,外观类知道

2020-09-28 00:18:48 140

原创 Java多线程编程学习——01线程的创建方式和生命周期

Java多线程编程什么是并发与并行?什么是进程、线程?线程的创建什么是FutureTask?实现接口和继承Thread类比较Runnable和Callable接口比较线程生命周期什么是并发与并行?并行:指两个或多个事件在同一时刻发生(同时发生)。并发:指两个或多个事件在同一个时间段内发生。什么是进程、线程?进程是系统中正在运行的一个程序,程序一旦运行就是进程。进程可以看成程序执行的一个实例。进程是系统资源分配的独立实体,每个进程都拥有独立的地址空间。一个进程无法访问另一个进程的变量和

2020-09-27 22:50:17 105

原创 leecode刷题学习——08字符串转换整数(atoi)

无重复字符的最长子串题意介绍解题思路本题代码题意介绍解题思路思路——>第一:考虑字符串特点,根据示例可得,字符串可能首字符为空,首字符为‘+’,‘-’区分正负,若为字符则直接返回0。第二:根据ASCII码值可得,当chars[i] < 48 || chars[i] > 57为字符,返回0。第三:在写算法时尽量避免使用string内置的方法,性能较低,且因为string是不可变的,trim()方法会返回新的变量。解题思路——>采用一个index来记录字符串的起始位

2020-09-26 22:49:47 156

原创 leecode刷题学习——07整数反转

整数反转题意介绍解题思路本题代码 题意介绍 解题思路碰到本题,第一思路应该是分解该整数。分解整数我们考虑的方法是采用取余的方式,每次数字除10取余得到末尾数字,并剔除末尾数字继续取余(剔除末尾数字的方法是:例如,当数字为2125,2125除以10的余数为5,2125-5=2120并除以10得结果为212,这就是剔除末尾数字的新的数字,并且可以将剔除的末尾数字乘以10来获取新的数字。)第一:降解整数,取末尾数字,第二:末尾数字*10,获得新的目标值第三:判断目标值是否超出取值范围。

2020-09-26 22:30:52 73

原创 设计模式学习——组合模式

组合模式组合模式基本介绍原理类图解决的问题类图实例代码实例jdk中的源码分析HashMap的类图实例组合模式的注意事项和细节 组合模式基本介绍组合模式,又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层次关系。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式。组合模式使得用户对单个对象和组合对象的访问具有一致性,即:组合能够让客户以一致的方式处理个别对象以及组合对象。原理类图对原理结构图说明即组合模式的

2020-09-26 19:05:55 145

原创 leecode刷题学习——03无重复字符的最长子串

无重复字符的最长子串题意介绍解题思路本题代码题意介绍解题思路本题难点在于返回最长子串长度,首先通过将以遍历的字符存放到Map<String,Integer>中,key为字符,value为该字符的数组下标。若map中已包含该字符,则更新start。本题代码public int lengthOfLongestSubstring(String s) { //hash表判断字符是否重复,若重复则重新竞选新的start. Map<Characte

2020-09-25 23:35:34 122

原创 leecode刷题学习——01两数之和

两数之和题意介绍本题思路本题代码题意介绍本题思路本题为入门算法题,看到本题并不难,但是第一思路肯定是双for循环获取结果,但是需要注意[0,1]和[1,0]是一个结果集,所以在遍历时,j=i+1,即j的取值应该j>i,这样每次遍历 i 寻找结果都是在nums[j]>nums[i]中。双层for循环的效率极低,所以我们考虑对其进一步的优化,采用hash表的形式存储,当目标值符合情况则取出添加到数组中。本题代码方法一:暴力解法 /** * * @p

2020-09-25 14:49:06 103

原创 leecode刷题学习——06 Z字形变换

Z字形变换题意介绍本题思路本题代码题意介绍本题思路1 解读本题第一想法肯定是遍历数组,但是如何控制数组向下走和向前走是问题所在关键。这里我们将每一行看作一个rows [i](rows 是一个字符串数组)图中为实例答案,是一个rows[4]的数组,rows[0]=LDR,rows[1]=EOEII,2 根据上图,我们已得知解题思路,但是难以控制的是空格字符如何判断。这里采用boolean down=false控制字符串遍历时,当downfalse的时候,字符串向前走,当downtrue的时候,

2020-09-25 14:12:24 100

原创 设计模式学习——装饰者模式

装饰者模式装饰者模式定义类图实例代码实例装饰者模式在JDK应用的源码分析装饰者模式定义装饰者模式:动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则(ocp)。类图实例代码实例Drink 抽象类public abstract class Drink { public String des; //描述 private float price=0.0f; public String getDes() {

2020-09-15 22:55:19 88

原创 设计模式学习——桥接模式

桥接模式桥接模式基本介绍桥接模式(Bridge)-原理类图原理类图说明:桥接模式代码实例桥接模式基本介绍桥接模式(Bridge模式)是指:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。是一种结构型设计模式Bridge模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象与行为实现分离开来,从而保持各部分的独立性以及应对他们的功能扩展。桥接模式(Bridge)-原理类图原理类图说明:Client类:桥接模式的调用者抽象类

2020-09-09 21:34:06 202

原创 设计模式学习——适配器模式

适配器模式适配器模式基本介绍工作原理类适配器模式类适配器模式介绍类适配器模式类图实例类适配器模式代码实例类适配器模式注意事项和细节对象适配器模式对象适配器模式介绍对象适配器模式类图实例对象适配器模式代码实例对象适配器模式注意事项和细节接口适配器模式接口适配器模式介绍接口适配器模式类图实例接口适配器模式代码实例适配器模式在SpringMVC框架应用的源码分析Spring MVC的工作流程适配器模式源码分析DispatchServlet类图实例适配器模式的注意事项和细节博主感言:设计模式更多的是一个思想,而ja

2020-09-01 23:33:07 235

原创 设计模式学习——建造者模式

建造者模式建造者模式基本介绍建造模式的四个角色建造者模式类图实例建造者模式java代码实例建造者模式在JDK的应用和源码分析源码中建造者模式角色分析建造者模式的注意事项和细节建造者模式基本介绍建造者模式又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造模式的四个

2020-08-31 22:56:02 145

JAVA架构从入门到精通开发笔记v1.7.pdf

JAVA架构从入门到精通开发笔记PPT 连接阿里云服务器 数据库 git版本管理 linux常用命令 yum软件包管理 maven依赖 数据库优化 分库分表 文件处理

2020-01-09

空空如也

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

TA关注的人

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