自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 资源 (9)
  • 收藏
  • 关注

原创 【elk-day01】es和kibana搭建及验证---Mac-Docker

说明一下为什么要安装desktop版本的docker,因为docker作为工具使用,我们需要的是开箱即用,没有必要非得整那种dockerserver什么的手动进行安装,一大堆配置很麻烦,这个desktop很适合新手使用,查看管理镜像和容器非常方便。

2023-12-27 17:41:00 1785

原创 mac配置subl命令打开sublime

在打开的文件中添加以下代码。

2023-12-27 15:06:21 800

原创 Docker容器化技术

简单来说:有效的将单个操作系统的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求,这种技术就是容器技术。而目前比较有名且使用范围较广的就是docker容器化技术docker主要作用就是提供一个容器环境,使我们的程序独立地运行在容器中。docker最初是dotCloud公司基于google公司退出的Golong语言开发而来,基于linux内核的Cgroups、NameSpace,以及Union FS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。

2023-03-23 14:46:16 1010 1

原创 面经(持续更新中)

问题总汇常见问题你目前的项目架构是怎样的你在项目中遇到过哪些问题大数据量请求你的服务,你的服务是如何能扛得住的网络http七层和四层协议tcp/ip从页面发起请求到响应服务器这中间发生了什么数据库数据库三范式数据库事务实现原理数据库各种锁数据库索引数据库的隔离级别jdk相关线程池,你都用过哪些线程池,他们的实现原理是什么多个线程是如何同时运行的jvm聊一聊jvm堆栈存储聊一聊垃圾回收聊一聊类加载过程聊一聊内存泄漏和内存溢出什么是双亲委派机制

2022-05-26 21:22:29 107

原创 docker常用操作

解决无法在mac电脑创建的centos7容器中启动docker问题本地docker安装过程省略本地通过docker下载centos7镜像来模拟环境大家 docker中获取centos7官网查看centos镜像地址docker pull centos:centos7特权模式启动docker,不使用特权模式启动的话会导致进入centos7镜像中有些命令无法执行docker run -itd --name centos7 --privileged centos:centos7 init进入容器内部

2022-01-26 15:37:41 1243

原创 java设计模式之职责链模式(Chain of Responsibility Pattern又名责任链模式)

基本介绍为请求创建了一个接受者对象的链(示意图如下)。这种模式对请求的发送者和接受者进行解耦职责链模式通常每个接受者都包含对另一个接受者的引用。如果一个对象不能处理该请求,则会将相同的请求传给下一个接受者,以此类推职责链模式的角色及职责:Handler:抽象的处理者,定义了一个处理请求的接口,同时含有另外的HandlerConcreteHandlerA,B:具体的处理者,处理它自己负责的请求,可以访问它的后继者(即下一个处理者),如果可以处理当前请求,则处理,否则就交给后继者去处理,从而形成

2021-03-19 14:10:19 104

原创 java设计模式之策略模式(strategy pattern)

基本介绍定义算法族,分别封装起来,让他们之间可以互相替换,此设计模式让算法的变化独立于使用算法的客户这算法体现了几个设计原则把变化的代码从不变的代码中抽离出来针对接口编程而不是具体类多用组合/聚合,少用继承(客户通过组合方式使用策略)原理图如下:说明:客户context有成员变量strategy1,strategy1等其他的策略接口,至于需要使用到哪个策略,可以在构造器中指定案例鸭子问题有各种鸭子(野鸭、水鸭、北京鸭等,鸭子有各种行为,例如叫、飞等)显示鸭子的信息传统

2021-03-18 20:07:00 128

原创 java设计模式之状态模式(state pattern)

基本介绍主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换当一个对象内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类原理图如下:原理类图的说明:Context:环境角色,用于维护State实例,这个实例定义当前状态State:抽象状态角色,定义一个接口封装与Context的一个特点接口相关行为ConcreteState:具体的状态角色,每个子类实现一个与Context的一个状态相关行为案例App抽奖活动问题请

2021-03-18 17:12:08 144

原创 设计模式之解释器模式(interpreter pattern)

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

2021-03-16 17:13:57 76

原创 设计模式之备忘录模式(Memento Pattern)

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

2021-03-10 20:27:26 96

原创 设计模式之观察者模式

原理观察者模式类似于订牛奶奶站:Subject用户:ObserverSubject登记注册、移除和通知registerObserver:注册removeObserver:移除notifyObserver:通知所有的注册用户,根据不同需求,可以是更新数据,让用户来取,也可能是实施推送,看具体需求而定Observer:接受输入观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象为Subject,依赖的对象为Observer,Subject通知Observer变化,比如这里的

2021-03-08 20:22:50 68

原创 设计模式之迭代器模式(Iterator Pattern)

基本介绍如果我们的集合元素是用不同的方式实现的,有数组,还有java的集合类,或者还有其他方式,当客户端要遍历这些集合元素的时候就要使用多种遍历方式,而且还会暴露元素的内部结构,可以考虑使用迭代器模式解决迭代器模式,提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即:不暴露其内部的结构原理图的说明:Iterator:迭代器接口,是系统提供,含有hasNext、next、remove等方法ConcreteIterator:具体的迭代器类,管理迭代Ag

2021-03-01 18:56:51 96

原创 设计模式之访问者模式

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

2021-02-27 20:20:00 66

原创 设计模式之命令模式

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

2021-02-26 17:35:48 71

原创 设计模式之模板方法模式(Template Method Pattern,又名模板模式Template Pattern)

基本介绍在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需重写方法实现,但调用将以抽象类中定义的方式进行简单说,模板方法模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构,就可以重新定义该算法的某些特定步骤对原理图的说明AbstractClass抽象类,类中实现了模板方法(template),定义了算法的骨架,具体子类需要去实现其他的抽象方法(各个operation方法)ConcreteClassA和B实现抽象方法(各个operation方法

2021-02-26 11:06:29 88

原创 设计模式之代理模式(proxy)

基本介绍代理模式:为一个对象提供一个替身,可以控制对这个对象的访问。即通过代理对象访问目标对象。这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能被代理兑现可以是远程对象、创建开销大的对象或者需要安全控制的对象代理模式有不同的形式,主要有三种:静态代理,动态代理(jdk代理、接口代理)和Cglib代理(可以在内存动态的创建对象,而不需要实现接口,他实际上也是属于动态代理的范畴)代理模式示意图静态代理基本介绍静态代理在使用时,需要定义接口或者父类,被代理对

2021-02-25 15:56:48 77

原创 设计模式之享元模式(Flyweight Pattern又名蝇量模式)

基本介绍运用共享技术有效地支持大量细粒度的对象常用语系统底层开发,解决系统的性能问题。像数据库连接池,里面都是创建好的连接对象,在这些连接对象中有我们需要的则直接拿来用,避免重复创建,如果没有我们需要的,则创建一个享元模式能够解决重复对象的内存浪费问题,当系统中有大量相似对象,需要缓冲池时。不需要总是创建新对象,可以从缓冲池里拿。这样可以降低系统运行内存,同时提高效率享元模式经典的应用场景就是池技术,String常量池、数据库连接池、缓冲池等都是享元模式的应用,享元模式是池技术的重要实现方式原理

2021-02-25 11:29:41 118

原创 设计模式之外观模式(Facade又名过程模式)

基本介绍外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需根这个接口发生调用,而无需关心这个子系统的内部细节[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vfBJYzSo-1614068293420)(http://626372.haituie.cn/626372/learning/java%E8%AE%BE%E8%AE%A1%E6%A8%

2021-02-23 16:18:56 241

原创 设计模式之适配器模式

基本介绍适配器模式将某个类的接口转换成客户端期望的另外一个接口标识,主要目的是兼容性,让原本因接口不匹配而不能一起工作的两个类可以协同工作。其别名为包装器(wrapper)适配器模式属于结构型模式主要分为三类:类适配器模式、对象适配器模式、接口适配器模式工作原理适配器模式:将一个类的接口转换成另一种接口,让原本不兼容的类可以兼容从用户的角度看不到被适配者,是解耦的用户调用适配器转化出来的目标接口方法,适配器再调用被适配者的相关接口方法用户收到反馈结果感觉只是和目标接口交互如下图:

2021-02-20 14:05:37 129

原创 设计模式之组合模式

介绍组合模式又名部分整体模式,它创建了对象组的树形结构,将对象组合成树装结构以表示“整体-部分”的层次关系组合模式依据树形结构来组合对象,用来表示部分以及整体层次这种类型的设计模式属于结构型模式组合模使得用户对单个对象和组合对象的访问具有一致性,即:组合能让用户以一致的方式处理个别对象和组合对象组合模式的原理说明:Component(可以是抽象类或者接口):这是组合中对象声明接口,在适当情况下,实现所有类共有的接口默认行为,用于访问和管理Component子部件Leaf:在组合中表示

2021-02-17 20:49:43 85

原创 设计模式之装饰者模式

装饰者模式定义动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则(ocp)装饰者模式原理装饰者模式就像打包一个快递主体:例如陶瓷、衣服、零食等(Component)包装:例如报纸填充、泡沫填充、纸板、木板等(Decorator)Component:主体例如前面的DrinkConcreteComponent:具体的主体,例如各个单品Decorator:装饰者吗,例如各种调料在如图的ConcreteComponent与Component之间,

2021-02-16 23:56:57 123 1

原创 设计模式之桥接模式

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

2021-02-16 01:15:14 67

原创 设计模式之建造者模式

案例盖房项目需求:需要建房子:这一过程为打桩、砌墙、封顶等房子有很多种类:例如普通房、高楼、别墅等,虽然建房子的过程一样,但是要求不一定相同请编写程序完成需求传统方式解决盖房需求public abstract class AbstractHouse { /** * 打地基 */ public abstract void buildBasic(); /** * 砌墙 */ public abstract void bu

2021-02-10 15:46:49 57

原创 设计模式之原型模式

基本介绍原型模式是指:用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象原型模式是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象,无需知道如何创建的细节工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝他们自己来实施创建,即对象.clone()prototype:原型类,声明一个克隆自己的接口ConcretePrototype:具体的原型类,实现一个克隆自己的操作Client:让一个原型对象克隆自己,从而创建一个新的对象

2021-02-09 15:53:46 50

原创 设计模式之七大原则

一、单一职责原则基本介绍对类来说,即一个类应该只负责一个职责,如类A负责两个不同的职责:职责1,职责2 当职责1发生需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的粒度分解为A1,A2代码和图见gitee上面com.witty.designpattern.princple.singleresponsibility包总结降低类的复杂度,一个类只负责单一职责提高类的可读性,可维护性降低变更引起的风险通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责

2021-02-09 11:29:42 43

原创 设计模式前言

设计模式的目的为了解决某一类问题的通用解决方案代码重用性可读性可扩展性(需要增加新的功能时,非常的方便)可靠性(当我们增加了新的功能后,对原来的功能没有任何的影响)使程序呈现高内聚,低耦合的特性(依赖性很低,如果被依赖的模块出现了问题尽量在模块内解决,不要把错误带到依赖你的模块中)设计模式的分类设计模式分为三种类型,共23种创建型模式(解决对象的创建问题):单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式结构型模式(如何让软件结构有伸缩性和弹性,并且使扩展性良好):适配器模式

2021-02-09 11:28:35 52

原创 设计模式之单例模式

共有8种创建方式步骤:构造器私有化(防止外部进行new操作)在类的内部创建对象向外暴露一个静态的getInstance的公共方法饿汉式两种写法静态常量方法class Singleton{ private final static Singleton instance = new Singleton(); private Singleton(){ } public static Singleton getInstance(

2021-02-09 11:23:16 40

原创 设计模式之工厂模式

案例披萨项目:要便于披萨种类的扩展,要便于维护披萨的种类很多(比如GreekPizz,CheesePizz等)披萨的制作有prepare,bake,cut,box完成披萨店订购功能设计如下图public abstract class Pizza { protected String name; /** * 准备原材料,不同的披萨不一样 */ public abstract void prepare(); public void cut

2021-02-09 11:21:02 51

原创 centos7下nginx实现图片服务器(openresty+nginx-upload+lua脚本)带所有资源

各个文件的链接会在文章的最后给出来在安装nginx之前建议关闭防火墙,因为后面的访问可能会因为防火墙问题导致无法访问开机禁用防火墙:systemctl disable firewalld.service关闭防火墙:systemctl stop firewalld.service查看防火墙的状态:systemctl status firewalld.service安装依赖...

2019-10-15 21:12:34 426

原创 Integer.valueOf()源码解析和比较==和.equals的区别

int 基本类型 数据存放在栈中new Integer的源码如下就是正常的创建对象,给对象赋值,创建的对象存在在堆中Integer 是int的包装类,将基本类型赋值给包装类,会进行自动装箱,自动装箱操作就是进行valueOf(int arg1)一般new的Integer会在堆中。 Integer.valueOf返回:当参数的值不在-128~127之间时,每次的赋值都会从...

2018-11-08 23:04:09 843 1

原创 java 中的this

this指的是当前对象,哪一个对象调用了this所在的成员,this就是哪一个对象例如wangwu.setage(){            this.age = 20;}这里的this指的就是wangwuthis.age指的就是对象wangwu的age...

2018-11-05 20:35:31 110

原创 关于反射我有话要说

首先java中有一句话一切皆对象,而类是描述对象的,对象是类的实例,所以就有了如下的图,可以将其他类看做对象,而描述这些类的就是Class类而所有的类都可以有接口、包、字段、构造器、方法。既然Class在描述所有的类,那么Class就应该包含获取构造、方法、字段相关的方法。在这里需要说明一下Object和Class的区别:Object表示一切对象Class表示一切类而反...

2018-10-30 19:53:48 162

原创 用mybatis框架实现增删改查

首先建立一个javaproject起名为firstblood-mybatis然后建立一个和src同级的目录用来存放mybatis依赖的jar包,并build path这些包的下载地址:点击打开链接添加Library   JUnit4过程:右键单击项目名->build path->add librarys..->选择JUnit->next->选择...

2018-05-27 19:55:10 18030 1

原创 javaweb模拟简单登录从无到有(jdbc+servlet+jsp)

首先新建java的动态web项目然后点击next先看一下默认创建的文件夹然后再对default output folder做修改最后点击finish,在这里我的项目名字叫做PP下面的url根据自己的数据库的名字填写(这个文件是写与数据库进行连接的信息的)下面这个图是我后来改的只看db.properties文件即可在webapp下建一个views文件夹存放网页显示有关的.jsp文件建一个login的...

2018-05-07 13:10:38 888

原创 vs下载

https://www.visualstudio.com/zh-hans/downloads/?rr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DU2jccTlC-rT2Rdlf6R-VLI3EwVN_3Ll6ZAVL9NXx-LPsl9sWYPvx8DeqdRv6rezAAwqcgQHBOSnj3MUk-DRLpa%26wd%3D%26eqid%3Db9...

2018-05-05 23:19:28 1404

原创 jdbc中关于获取mysql数据库的链接

首先你需要有一个mysql-connector-java-5.1.25-bin.jar来build path。将jar包拷贝到相关project的lib目录下,然后用鼠标 在该jar包上单击右键选择build path,出现奶瓶就OK了然后建立一个class文件写入以下代码进行连接MySQL数据库:public class ConnectionTest

2017-12-02 14:26:25 418

原创 关于api、jdk、和ide

api是一些预先定义的函数,提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。通俗来说就是:开发人员不需要知道其内部的结构和机理,只要会调用就行。jdk就是提供给java开发人员的工具包,里面包括了jre((虚拟)运行环境)、javac(编译器将后缀名为.java的编译为后缀名为.class)、jar(打包工具,将相关的类文件打包

2017-09-04 20:36:04 696

原创 算法:拦截导弹

题目描述:某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于等于前一发的高度。某天,雷达捕捉到敌国导弹来袭。由于该系统还在试用阶段,所以只用一套系统,因此有可能不能拦截所有的导弹。输入第一行输入测试数据组数N(1接下来一行输入这组测试数据共有多少个导弹m(1接下来行输入导弹依次飞

2017-08-17 18:04:46 386

原创 Java学习中关于用cmd执行.class文件

正常情况下,环境变量已经配置好了,如果直接从开始打开cmd,执行某个class文件时,需要cd到该文件所在的目录下,然后直接运行class文件(语法Java+空格+文件名)。而如果要运行用eclipse编译的.class文件,如果该文件在某个包中,如果直接cd到那个文件所在的目录下,然后运行,就会报错找不到或无法加载主类(无论该class对应的Java文件中有没有main函数)。正确的操作方法

2017-08-11 15:54:08 10026

原创 java学习中关于线程

并发机制,每一个任务(或事件)就是一个线程。并发机制就是说同事干多个事,比如你呼吸的同时还可以行走说话等,这就是并发机制。Java具有并发机制,也就是说Java可以同时执行多个线程。Windows操作系统是多任务操作系统,以进程为单位,在级短的时间内只执行一个线程,然后跳转到另一个线程上执行,由于cpu运行速度太快加上在每个线程上存留的时间极短所以看上去就好像所有的线程都在同步执行一样

2017-08-07 20:36:31 202

nginx上传下载之openresty-1.15.8.2.tar.gz

openresty安装压缩包

2019-10-15

nginx上传下载之nginx-upload-module-2.3.0

nginx-upload-module安装压缩包

2019-10-15

nginx上传下载之nginx.conf

该文件为nginx的配置文件

2019-10-15

nginx上传下载之index.html

该文件是作为上传的页面

2019-10-15

nginx上传下载之deal_upload.lua

nginx上传下载文件功能之deal_upload.lua文件,该文件可以对上传的文件进行解析(得到后缀),并且创建FF*FF个文件夹来作为存储的空间

2019-10-15

Navicat_for_Mysql

mysql的图像化免费工具

2018-12-06

java中文API文档

可以搜索的javaAPI中文文档.

2018-11-11

mybatis基础jar包

mybatis的基础jar包的压缩文件 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。 iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)

2018-05-27

druidjar包

druid连接池,是阿里巴巴公司设计的,是目前性能很好的一种。

2017-12-02

空空如也

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

TA关注的人

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