- 博客(46)
- 收藏
- 关注
原创 学习狂神docker报错解决:executable file not found in $PATH: unknown
最近学习docker网络,废话不多说,直接上代码!!错误信息 :OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: “ip”: executable file not found in $PATH: unknown解决方案:①进入容器:docker exec -it tomcat1 /bin/bash②更新:apt update &&a
2022-02-27 11:50:11
19173
3
原创 Xshell安装Docker运行镜像报错:docker: Error response from daemon: cannot start a stopped process: unknown.
今天学习Linux,通过yum安装Docker时,在最后的测试阶段产生了一个错误,如图:我是根据Docker官网的安装教程进行的。使用的是阿里云服务器。Docker官网地址:https://docs.docker.com/engine/install/centos/解决方案:在Xshell中执行命令:yum install -y libseccomp-devel再次运行hello-world 映像:安装成功...
2021-12-08 18:48:37
1434
原创 SpringBoot自动装配原理
创建一个SpringBoot项目,核心文件只有两个,一个是main方法的启动类文件,一个是application.properties全局配置文件。究竟是怎么运行,请看如下分析:原理一览图:解释一下@SpringBootConfiguration:是Spring的一个组件。证明如下:@EnableAutoConfiguration:自动配置的核心注解@ComponentScan:扫描主启动类同级下的包@EnableAutoConfiguration通过@Import({AutoCo
2021-07-20 16:35:06
8856
原创 备忘录模式
备忘录模式:在不破坏封装性的前提下,破获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的对象。角色说明原发者:需要在某个时刻保存其状态的对象。原发者负责创建备忘录,然后使用该备忘录记录自己的状态。当原发者需要恢复某个时刻的状态时,它通过获得相应备忘录中的数据来恢复那个时刻的状态,备忘录:负责存储原发者状态的对象,创建备忘录的类和创建原发者的类在同一个包中,该类提供的访问数据的方法都是友好方法,使得只有和原发者在同一包中的类的实例才可以访问备忘录中的数据。负责人:
2021-06-13 21:10:18
9163
2
原创 模板方法模式
模板方法模式:定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法是关于怎样将若干个方法集成到一个方法中,以便形成一个解决问题的算法骨架。模板方法模式的关键是在一个抽象类中定义一个算法的骨架,即将若干个方法集成到一个方法中,并称该方法为一个模板方法,或简称模板。模板方法所调用的其他方法通常为抽象的方法,这些抽象方法相当于算法骨架中的各个步骤,这些步骤的实现可以有子类实现。角色说明:抽象模板:抽象模板定义了若干个方法以表示一
2021-06-13 16:38:44
9248
1
原创 状态模式
状态模式:主要用来解决对象在多种状态转换时需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换。当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像改变了其类。举例:人的一生。小的时候(假设是0~7岁)只能当幼儿园学生;青年时(假设是7 ~ 18岁)可以当初中和高中生,相应可以做的事情也变多了;成年时,可以做大学生,硕士生等等,做的事情变得更多了。状态模式的关键是将对象的状态封装称为独立的类,对象调用方法时,可以委托当前对象所具有的状态调用相应的方法,是当前对象看起来好像
2021-06-13 13:41:49
9252
1
原创 计算机网络之TCP
计算机网络:计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件,网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。(如果没有实现资源共享和信息传递那就是‘单机游戏’)分析一下上面的官方定义:通信线路:其实就是实现通信的终极桥梁,往往指的就是硬件设备,对通信进行管理协调。网络操作系统 —> 如何进行网络工作?(达到最终的通信目的)网络管理软件 —> 管理工作(保证正确合理)网络通信协议
2021-06-08 20:09:38
8209
4
原创 SpringMVC源码剖析
工作流程加载 DispatcherServlet追朔源码,最终晓得这个也和Servlet有了瓜葛,要想完成用户的一次请求,第一步就是加载 DispatcherServlet,下面我们介绍一下过程:class DispatcherServlet extends FrameworkServlet … ——>class FrameworkServlet extends HttpServletBean … ——>class HttpServletBean extends HttpServle
2021-05-27 15:53:23
8010
原创 组合模式
使用背景:编写程序时,我们希望将许多个体对象和组合对象组成树形结构,以此表示“部分—整体”的层次结构,并借助该层次结构使得用户能用一致的方式处理个体对象和组合对象。组合模式使得用户对个体对象和组合对象的访问具有一致性,组合模式的关键在于无论是个体对象还是组合对象都实现了相同的接口都是同一个抽象类的子类。个体对象:一个对象不含有其他对象的引用,具有其他子节点的节点。组合对象:一个对象包含另外一个对象的引用,不具有其他子节点的叶节点。角色说明抽象组件(Component):接口或抽象类,定义了个体对象
2021-05-25 22:44:14
223
1
原创 单例模式
单例模式是关于怎样设计一个类,并使用该类只有一个实例的成熟模式,该模式的关键是将类的构造方法设置为private权限,并提供一个返回它的唯一实例的类方法(static方法)。只包括一种角色:单件类(Singleton),单件类只可以创建出一个实例。单例模式的特点:单件类中包含用自身声明的类变量,这个变量是单件类唯一的实例。单件类的构造方法访问权限是private。单件类负责创建自己唯一的实例,并提供访问该实例的类方法。单例模式的优点:单件类的唯一实例由单件类本身控制,所以可以很好地控制用户何
2021-05-20 13:39:26
115
原创 基本的JavaAWT
java.awt包提供了基本的GUI设计工具,主要包括组件(Component)、容器(Container)和布局管理器(LayoutManager)。案例:public class JavaAWT1 extends JFrame{ /** * Jpanel要依附于JFrame存在,可直接加其他组件,而JFrame可单独存在,但需要通过内容窗格添加其他组件 * JFrame是人;JPanel是人体的器官,必须依赖人存在,且不能对外表露出来,必须通过JFrame表示出来 * JFrame:添
2021-05-19 18:48:34
173
1
转载 迭代器模式
文章转载自:https://blog.csdn.net/zhengzhb/article/details/7610745定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。类型:行为类模式类图:如果要问java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模式,而是迭代器模式,先来看一段代码吧:public static void print(Collection coll){ Iterator it = coll.iterator(); whil
2021-05-19 14:08:33
163
原创 浅谈JMM
JMM: Java Memory Model,Java内存模型JMM作用是什么?缓存一致性协议,定义程序中各种变量的访问规则。变量变量包括实例字段,静态字段,但不包括局部变量与方法参数,因为它们是线程私有的,不存在...
2021-05-14 11:23:50
140
1
原创 JVM的堆与GC
堆:Heap,一个JVM中只有一个堆内存,所以堆的垃圾也有很多,需要对其内存的大小进行调节。类加载读取了类文件后,会把什么放入堆中?堆内存细分为哪几个区域?栈满时出错信息栈内存怎么进行调优?...
2021-05-13 16:46:34
220
原创 浅谈Java栈
栈:先进后出,后进先出栈溢出:栈的空间也是有限的,栈满时就是溢出时,比如嵌套调用。栈满时报错信息:java.lang.StackOverflowError案例:public class test16 { public static void main(String[] args) { new test16().test();//java.lang.StackOverflowError : 栈溢出错误 } public void test(){
2021-05-12 22:32:14
101
原创 idea使用jprofiler的配置以及检查代码出错
我使用的是jprofiler 9.2.1版本的,本来下载的是最新的版本12.0.2的,但是无奈网上找不到许可证密钥,反而找到了许多老版本的密钥,所以使用了9.2.1版本。下载jprofiler的网址:https://www.ej-technologies.com/download/jprofiler/files之后一直是next就可以。idea的配置:案例://设置参数 :-Xms1m -Xmx8m -XX:+HeapDumpOnOutOfMemoryErrorpublic class t
2021-05-12 19:42:54
3637
3
原创 对象实例化过程
案例public class test17 { public static void main(String[] args) { User user=new User(1,"张三"); System.out.println(user.getId()+"\n"+user.getName()); }}class User{ public int id; public String name; public User(){}
2021-05-11 21:43:58
141
原创 native与DLL文件
初次见到private native void start0();native是什么?即JNI,Java Native Interface (Java本地接口),Java平台提供的用户和本地C代码进行交互操作的API。Java code < ------ > C/C++ code主要用于Java与C/C++联合开发的时候。使用native关键字说明这个方法是原生函数,也就是这个方法使用C/C++语言实现的,并且被编译成了DLL,由java去调用。这些函数的实现体在DLL中,
2021-05-11 19:56:18
919
原创 浅谈transient到Java运行原理
transient此关键字修饰的成员变量,在类的实例对象的序列化处理过程中会被忽略,因此,transient变量不会贯穿对象的序列化和反序列化,生命周期仅存于调用者的内存中而不写到磁盘里进行持久化。为什么使用transient?在实际开发中,常常遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要序列化,打个比方,如果一个用户有一些铭感信息(如密码,银行卡号等),为了安全起见,不希望在网络操作(主要涉及序列化操作)中被传输,这些信息对应的变量就可以加上transient关键字。什么是序列
2021-05-11 12:06:43
215
原创 ArrayList的contains方法底层探究
最近学习Java的过程中,多次使用到了List接口下的ArrayList类中的contains方法,使用的时候也产生了一些疑惑,比如:contains方法内部是不和判断传入的对象是否存在的(是“ == ”,还是“ === ”),其实这也和传入的参数息息相关,接下来看代码。public class ListStudy { private String[] a= {"a","b","c","d","e"}; private int size=a.length; public static voi
2021-05-10 12:35:16
188
原创 互斥信号量
临界资源必须是互斥的访问,即一段时间内只能让一个进程访问,对应临界区。p(s)—申请资源—wait(s)v(s)—释放资源—signal(s)为使多个进程能互斥的访问某临界资源,只需为该资源设置一互斥信号量mutex,并设初始值为1,然后将各进程访问该资源的临界区置于wait(mutex)和signal(mutex)操作之间即可。互斥信号量值的描述:初值为1,取值范围为(-1,0,1)。当 mutex=1 时,表示两个进程皆未进入需要互斥的临界区;当 mutex=0 时,表示有一个进程进入临界
2021-05-08 16:58:39
9064
2
原创 多个进程,每个进程需要x个同类资源,不产生死锁
某系统有n个进程,每个进程需要x个同类资源,系统不会产生死锁的最少资源数是多少?设最少资源数为y个满足如下表达式即可:n(x-1)+1<=y解释一下:每个进程需要x个资源,初始时给每个进程 x-1 个资源,最后再给一个额外的资源,没当一个进程运行完后马上释放其占有的资源,其它进程可以申请资源继续运行。例题某系统采用3个并发进程,都需要同类资源3个,系统不会产生死锁的最少资源数是( B )A. 9 B. 7 C. 10 D. 8...
2021-05-08 15:06:39
6891
原创 java反射机制
什么叫反射?JAVA反射机制是在运行状态中,对于任何一个类,通过反射都能够知道这个类的所有属性和方法;对于任何一个对象,都能够调用它的任何一个属性和方法;这种动态获取得到信息以及动态调用对象的方法的功能称为JAVA语言的反射机制。反射的用途?判断任意一个对象所属的类;构造任意一个类的对象;判断任意一个类所具有的成员变量和方法;获取泛型信息;调用任意一个对象的成员变量和方法;处理注解;生成动态代理;反射基本上是一种解释操作,所以慢于直接执行相同的操作,Class是反射的源头。哪些类型可以
2021-05-07 12:56:18
88
原创 c3p0原理
c3p0只是一个jdbc连接池,并不负责与数据库的所有任务,主要为了提高对数据库操作的性能。同时c3p0有自动回收空闲连接功能。c3p0的bean的配置如下:<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driver}"/> <property name="j
2021-05-06 15:52:56
459
原创 org.apache.jasper.JasperException: 无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/
依旧是一个SSM项目的报错信息,我使用的编辑器是idea,所以也是基于idea结果错误,不过我查资料的过程中也看到了eclipse的解决方法,应该比idea简单一些。开始展示:错误信息:类型 异常报告消息 无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core]描述 服务器遇到一个意外的情况,阻止它完成请求。例外情况org.apache.jasper.JasperException: 无法在web.xml或使用此
2021-04-28 20:33:48
6975
8
原创 绝对有效org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: ......
这是一个SSM框架的错误信息,不知道什么鬼操作导致的,修复了好久才搞定,绝对有效,一定要收藏!!!核心内容在最下面!!!28-Apr-2021 13:43:44.670 警告 [RMI TCP Connection(3)-127.0.0.1] org.apache.tomcat.util.descriptor.web.WebXml.setVersion 未知版本字符串 [4.0]。将使用默认版本。28-Apr-2021 13:43:44.794 严重 [RMI TCP Connection(3)-12
2021-04-28 17:05:35
4750
4
原创 声明式事务
什么是事务?事务就是把一系列的动作当成一个独立的工作单元,这些动作要么全部完成,要么全部不起作用。事务的特性 ACID:1.原子性(atomicity): 事务是原子性操作,由一系列动作组成,事务的原子性确保动作要么全部完成,要么完全不起作用2.一致性(consistency): 一旦所有事务动作完成,事务就要被提交。数据和资源处于一种满足业务规则的一致性状态中3.隔离性(isolation): 可能多个事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏4.持久性
2021-04-24 10:53:40
88
原创 MyBatis-Spring整合
MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。简化操作,方便管理,更有利于框架开发。为了方便阅读,我在代码中有很多的注释内容,解释代码的含义。方式一:SqlSessionTemplate案例:Mapper.javaimport com.hui.pojo.User;import java.util.List;public interface Mapper { public List<User> selectUser();}
2021-04-23 19:25:15
82
1
原创 org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘xxxx‘......
最近在学习SSM,今天遇到的这个问题也是很容易忽略的一个小问题:把java文件和xml文件混合放在一个文件夹中,spring就找不到映射配置文件。错误信息:org.springframework.context.support.AbstractApplicationContext refresh警告: Exception encountered during context initialization - cancelling refresh attempt: org.springframework
2021-04-23 18:36:20
437
原创 依赖注入三种方式
1.构造器函数注入分为无参构造方法和有参构造方法两种方式,其中有参构造方法又包含三种方式。有参构造的三种方式:下标赋值参数类型赋值参数名赋值案例:User.javapublic class User { private String name; private String mess; public User(String name,String mess){ this.name=name; this.mess=mess;
2021-04-21 20:48:19
1083
1
原创 Error creating bean with name ‘user‘ defined in class path resource [beans.xml]: Instantiation......
最近在学习IOC,这是一个IOC用无参构造方法创建对象的错误:警告: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘user’ defined in class path resource [beans.xml]:I
2021-04-21 16:34:11
2680
1
原创 java.lang.NoClassDefFoundError : ......
…根本原因。java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactoryjava.base/java.lang.Class.getDeclaredMethods0(Native Method)java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3166)java.base/java.lang.Class.getDeclaredMeth
2021-04-20 13:28:26
322
原创 ajax原理剖析
ajax是一种在无需重新加载整个网页的情况下,能更新部分网页的技术。(例:在网页的搜索栏输入需求信息后,下面马上会弹出来相关的信息列表,但是此时并没有刷新当前页面)ajax使用javascript在浏览器与服务器之间进行数据的发送和接收。通过在后台与服务器交换数据,而不是每当用户做出改变是重新加载整个Web页面,从而使网页更迅速地响应用户的操作。示例代码(只展示核心代码):log.jsp<%@ page contentType="text/html;charset=UTF-8" languag
2021-04-19 13:11:44
106
1
原创 SpringMVC原理剖析
用户发出请求到DispatcherServlet(前端控制器,担任请求分发的职责,将请求分发到不同的处理器,体现在web.xml的url-pattern)DispatcherServlet调用HandlerMapping(处理器映射)寻找对应的Handler。(体现在servler.xml的bean或者context:component-scan)HandlerExecution表示具体的Handler,主要作用是根据url查找控制器(根据类名找到控制器)。HandlerExecution将解析后..
2021-04-18 18:49:29
329
2
原创 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name.....
例外情况javax.servlet.ServletException: Servlet[springDispatcherServlet]的Servlet.init()引发异常org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:544)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)org
2021-04-17 10:29:43
3130
5
原创 迭代器模式
角色剖析:集合(Aggregate):一个接口,规定了具体集合需实现的操作。具体集合(ConcreteAggregate):具体集合是实现集合接口的类的实例,具体集合按着一定结构存储对象。具体集合应当有一个方法,该方法返回一个针对该集合的具体迭代器。迭代器(Iterator):一个接口,规定了遍历具体集合的方法。具体迭代器(ConcreteIterator):实现迭代器接口的类的实例,要保证遍历集合时,首次调用将按着集合的数据结构找到该集合中的一个对象,而且每当找到集合中的一个对象,立刻根据该集合的
2021-04-16 22:47:05
87
原创 org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘......
javax.servlet.ServletException: Servlet[DispatcherServlet]的Servlet.init()引发异常org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:544)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)org.apache.cat
2021-04-16 11:19:14
444
原创 request.getContextPath()与路径
request.getContextPath()主要是为了解决相对路径的问题,可以返回站点的根路径。绝对路径:绝对路径是包括服务器协议(在本例中为http协议)的完全路径,是指文件在硬盘上真正存在的路径,可以使用“\”或“/”作为目录分割字符。相对路径:相对路径的以“/”开头,路径是从当前站点的根目录。根路径:是指逻辑驱动器的最上一级目录,它是相对子目录来说的。<%String path=request.getContextPath();String basePath=request.ge
2021-04-16 10:53:32
5101
原创 设计模式 — 外观模式
定义:外观模式是简化用户和子系统进行交互的成熟模式,外观模式的关键是为子系统提供一个称作外观的类,该外观类的实例负责和子系统中类的实例打交道。当用户想要和子系统中的若干个类的实例打交道时,可以代替地和子系统的外观类的实例打交道,用户不必了解子系统中的细节。当系统需要进行分层设计时,可以考虑使用Facade模式,可以帮我们更好的划分访问的层次,还可以维护一个遗留的大型系统。角色分析:子系统(Subsystem):子系统是若干个类的集合,这些类的实例协同合作为用户提供所需要的功能,子系统中任何类都不包含
2021-04-09 11:24:03
162
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人