- 博客(49)
- 收藏
- 关注
原创 java锁
java锁一、公平锁、非公平锁1.概念2.两者区别3.其他二、可重入锁(递归锁)1.概念2.典型递归锁3.递归锁作用4.示例代码4.1证明ReentrantLock是可重入锁4.2证明synchronized是可重入锁三、独占锁(写锁)/共享锁(读锁)/互斥锁1.概念2.示例代码四、自旋锁1.概念2.示例代码一、公平锁、非公平锁1.概念公平锁:是指多个线程按照申请锁的顺序来获取锁,类似排队打饭。非公平锁:是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程优先获取锁,在高并发的情况下
2021-01-22 20:15:45
365
原创 集合类(ArrayList、HashSet、HashMap)线程不安全例子及解决方案
集合类(ArrayList、HashSet、HashMap)线程不安全例子及解决方案一、ArrayList线程不安全例子及解决方案1.线程不安全演示:2.解决方案2.1.使用Vector解决线程不安全2.2.使用Collections辅助类解决线程不安全2.3.使用CopyOnWriteArrayList解决线程不安全二、HashSet(同理ArrayList)1.线程不安全例子2.解决方案2.1使用Collections辅助类2.2使用CopyOnWriteArraySet三、HashMap(同理Arra
2021-01-22 18:23:16
664
2
原创 java线程池使用及原理
java线程池原理及使用一、为什么使用线程池二、线程池一、为什么使用线程池1.线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动给这些任务,如果线程数量超过了最大数量,超出数量的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行2.线程池主要特点线程复用、控制最大并发数、管理线程降低资源消耗,通过重复利用已创建的线程降低线程创建和销毁造成的消耗提过响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行提高线程的客观理想。线程是稀缺资源,如
2021-01-22 14:55:09
446
原创 java之阻塞队列(BlockingQueue)
java之阻塞队列一、阻塞队列概念二、阻塞队列的好处三、阻塞队列种类四、BlockingQueue的核心方法五、示例代码1.使用SychronousQueue队列2.传统版生产者消费者模式3.阻塞队列版(以ArrayBlockingQueue为例)生产者消费者模式一、阻塞队列概念阻塞队列,顾名思义,首先它是一个队列(先进先出),而一个阻塞队列在数据结构所起到的作用大致如下图:线程1往阻塞队列中添加元素,而线程2从阻塞队列中移除元素当阻塞队列是空是,从队列中获取元素的操作会被阻塞当阻塞队列是满时
2021-01-22 11:36:12
2370
1
原创 java比较器(Comparable、Comparator)
java比较器(Comparable、Comparator)一、说明二、Comparable接口与Comparator对比三、Comparable接口的使用四、Comparator接口的使用五、实例代码1.String类比较2.实现Comparable接口方式比较3.使用Comparator接口定制排序4.使用Comparator接口定制实现了Comparable接口的类的排序一、说明Java中的对象,正常情况下,只能进行比较:== 或 != 。不能使用 > 或 < 的。但是在开发场景
2021-01-21 16:55:04
194
原创 window解决端口占用问题
PS:操作系统:Windows101.打开cmd命令行窗口2.查看端口使用情况如想要查看8080端口使用情况netstat -aon|findstr “8080”3.通过tasklist|findstr "进程号"查看对应的进程tasklist|findstr “24144”4.结束该进程即可、方式一:直接在任务管理器结束任务方式二:taskkill /im java.exe关掉进程taskkill /F /im java.exePS:/F是强制终止,尽量少用.
2021-01-18 17:36:57
212
原创 一台机器同时启动多个tomcat
一、环境和工具准备1.操作系统:window102.tomcat压缩包:apache-tomcat-9.0.27-windows-x64.zip二、步骤1.解压压缩包2.修改server.xml配置文件修改三处地方,保证每个tomcat不冲突即可:3.保证第2步三个端口互不冲突,启动每个tomcat即可...
2021-01-18 17:23:26
386
原创 javaweb三大组件之监听器Listener
javaweb三大组件之监听器Listener一、接口介绍二、步骤(以ServletContextListener为例)一、接口介绍ServletContextListener:概念:监听ServletContext域的创建与销毁的监听器,Servlet域的生命周期:在服务器启动创建,服务器关闭时销毁;监听器的编写步骤:.方法:void contextInitialized(ServletContextEvent sce) :ServletContext对象创建后会调用该方法void
2021-01-18 17:04:42
182
原创 java过滤器Filter实现敏感词汇过滤
一、前提知识:1.学习好设计模式中的“装饰者模式”和“代理模式”2.学习好Filter组件基本使用二、示例代码:package cn.itcast.web.filter;import javax.servlet.*;import javax.servlet.annotation.WebFilter;import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.
2021-01-18 16:00:20
553
原创 javaweb三大组件之过滤器Filter
java三大组件之Filter一、过滤器执行流程二、过滤器生命周期方法三、过滤器配置详解1.拦截路径配置:2.拦截方式配置:资源被访问的方式四、过滤器链(配置多个过滤器)五、示例代码(xml方式)六、示例代码(注解方式)一、过滤器执行流程1.执行过滤器2.执行放行后的资源3.回来执行过滤器放行代码下边的代码二、过滤器生命周期方法1.init:在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次。用于加载资源2.doFilter:每一次请求被拦截资源时,会执行。执行多次3.
2021-01-18 15:23:02
242
原创 javaweb三大组件之Servlet
javaweb三大组件(Servlet,Filter,Listener)一、Servlet1.执行原理2.Servlet中的生命周期方法3.示例代码(web.xml配置方式)4.示例代码(注解方式)5.GenericServlet和HttpServlet介绍6.继承GenericServlet方式的Servlet7.继承HttpServlet方式的ServletPS:自己搭建好maven web项目的基本框架,过程略一、Servlet1.执行原理(1)当服务器接受到客户端浏览器的请求后,会解析请
2021-01-17 20:58:33
108
原创 java创建线程(Thread)的5种方式
java创建线程(Thread)的4种方式方式一:继承于Thread类方式二:实现Runnable接口方式三:实现Callable接口方式四:使用线程池方式一:继承于Thread类步骤:1.创建一个继承于Thread类的子类2.重写Thread类的run() --> 将此线程执行的操作声明在run()中3.创建Thread类的子类的对象4.通过此对象调用start()执行线程示例代码(遍历100以内的所有的偶数):package atguigu.java;//1.创建一个继承于
2021-01-16 17:07:50
49082
原创 java线程(Thread)中常用方法和优先级设置
常用方法:start()----------------启动当前线程;调用当前线程的run()run()------------------通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明在此方法中currentThread()----静态方法,返回执行当前代码的线程getName()-----------获取当前线程的名字setName()-----------设置当前线程的名字yield()----------------释放当前cpu的执行权join()------
2021-01-16 15:05:39
666
1
原创 程序、进程、线程的概念
1.程序:程序是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象2.进程:进程是程序的一次执行过程,或是正在运行的一个程序是一个动态的过程:有它自身的产生、存在和消亡的过程(生命周期)程序是静态的,进程是动态的进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域如:运行中的QQ,运行中的MP3播放器3.线程:进程可进一步细化为线程,是一个程序内部的一条执行路径若一个进程同一时间 并行执行多个线程,就是支持多线程的线程作为调度和执行的单位,
2021-01-15 17:53:51
173
原创 java之枚举类型enum
java之枚举类型enum一、枚举类的作用二、如何定义枚举类三、枚举中的方法四、使用enum定义的枚举类实现接口的情况五、示例代码1.自定义枚举类型2.使用enum关键字定义枚举类一、枚举类的作用类的对象只有有限个,确定的。我们称此类为枚举类当需要定义一组常量时,强烈建议使用枚举类如果枚举类中只有一个对象,则可以作为单例模式的实现方式。二、如何定义枚举类jdk5.0之前,自定义枚举类jdk5.0,可以使用enum关键字定义枚举类三、枚举中的方法values()方法:返回枚举类型的
2021-01-15 16:13:26
209
原创 springmvc配置类下注解@ComponentScans详解
1.示例代码@Configuration //告诉Spring这是一个配置类@ComponentScans( value = { @ComponentScan(value = "com.atguigu", includeFilters = { @Filter(type = FilterType.CUSTOM, classes = {MyTypeFilter.class}) }
2021-01-12 11:15:57
711
原创 springmvc文件上传
springmvc文件上传1.创建maven的web工程,结构如下2.各文件内容pom.xmlweb.xmlupload.jspUploadController.javaspringmvc.xml3.部署tomcat,运行项目即可1.创建maven的web工程,结构如下2.各文件内容pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"
2021-01-12 10:36:24
187
原创 centos7.6+jenkins.war+git+eclipse实现持续部署
centos7.6+jenkins.war+git+eclipse实现持续部署一、环境及工具准备二、环境搭建1.准备3台centos2.关闭3台主机防火墙3.主机A部署git服务器3.1安装git3.2创建具体的git版本库3.3进入版本库,设置权限3.4启动subversion(svn)服务3.5查看svnserve服务进程4.主机B、主机C安装jdk、tomcat5.主机B安装maven6.修改主机B的tomcat配置6.1进入tomcat解压目录的server.xml6.2修改 URL 地址的编码解码
2021-01-05 17:13:40
816
1
原创 centos7.6部署git服务器
一、环境说明1.操作系统版本:centos7.6.18102.git压缩包:git-2.29.2.tar.gz二、操作说明1.准备2台主机主机A:搭建giit服务器存放仓库主机B:作为git客户端拉取仓库PS:主机A、主机B网络要互通,建议关闭两个主机防火墙进行测试2.在主机A、主机B安装git详情参考文章:https://blog.csdn.net/weixin_43824267/article/details/1097114273.主机A新建用户来管理git仓库useradd
2021-01-05 14:32:12
316
原创 centos7.6配置SSH免密登录(windows同理)
一、环境说明1.操作系统版本:cenots7.6.18102.两台主机,网络互通二、配置步骤1.准备主机准备两台centos,假定主机A要免密登录主机B2.两台主机新建用户SSH登录是主机A某个系统用户要以主机B的某个系统用户身份采用SSH方式登录进去,所以这里,主机A和主机B都新建一个用户来测试主机A新建用户auser,密码设置为12345678useradd auser #会创建auser用户,同时加入auser用户组passwd auser #根据提示输入两次用户密码:12
2021-01-05 11:19:37
1205
1
原创 centos7.6+jenkins.war+subversion(svn)+eclipse实现持续部署
centos7.6+jenkins.war+subversion(svn)+eclipse实现持续部署一、环境及工具准备二、环境搭建1.准备3台centos2.关闭3台主机防火墙3.主机A部署subversion服务器3.1安装subversion3.2创建具体的版本库3.3进入版本库,设置权限3.4启动subversion(svn)服务3.5查看svnserve服务进程4.主机B、主机C安装jdk、tomcat5.主机B安装maven6.修改主机B的tomcat配置6.1进入tomcat解压目录的serv
2021-01-05 10:28:57
227
原创 eclipse创建maven的web项目
eclipse创建maven的web项目1.eclipse版本说明2.创建maven项目3.填写基本信息4.修改项目模块5.在pom.xml文件导入基本模块6.编写首页文件index.jsp1.eclipse版本说明点击“Help”–》“About Eclipse IDE”2.创建maven项目点击“File”–》“New”–》“Maven Project”PS:如果找不到“Maven Project”,就点击“other”,进去里面搜索maven查找3.填写基本信息选择war包,点击
2021-01-04 12:49:47
376
原创 centos7.6安装tomcat
一、环境准备1.操作系统版本:centos7.6.18102.tomcat安装包:apache-tomcat-9.0.22.tar.gz下载地址:https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.22/bin/apache-tomcat-9.0.22.tar.gz二、安装步骤1.创建文件夹并进入mkdir -p /myutil/tomcatcd /myutil/tomcatPS:将tomcat压缩包传输到/myutil/tomca
2021-01-04 11:24:23
453
原创 centos7.6安装maven
一、环境准备1.操作系统:centos7.6.18102.jdk安装包:jdk-8u271-linux-x64.tar.gz(或者其他jdk8的包)3.mavan安装包:apache-maven-3.6.1-bin.tar.gz下载地址:https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz二、安装步骤1.先在centos7.6里安装好jdk8参考文章:https:/
2021-01-04 10:36:53
565
原创 centos7.6搭建subversion(svn)服务器
一、环境说明1.linux系统:centos7.6.18102.下载的subversion版本:1.7.14二、搭建subversion服务器1.准备3台虚拟机(1)三台虚拟机系统:centos7.6.1810(2)关闭三台虚拟机的防火墙systemctl stop firewalld.service(3)三台主机作用分配svn-server:svn服务器(主机)svn-client1:svn客户端1(客户机1)svn-client2:svn客户端2(客户机2)2.三台机器下载安装
2020-12-28 14:45:27
254
原创 win10之Subversion(SVN)基本操作
win10之Subversion(SVN)基本操作一、环境说明二、安装Subversion三、Subversion基本操作1.配置版本库2.启动服务器端程序3.检出4.提交5.更新6.工作副本中文件的集中状态7.恢复历史版本四、权限设置1.单一版本库权限配置2.多版本库共享配置一、环境说明1.操作系统:window10家庭中文版2.Subversion安装包:Setup-Subversion-1.8.17.msi二、安装Subversion1.双击Setup-Subversion-1.8.17.m
2020-12-27 17:30:43
2020
1
原创 包资源管理器npm镜像源相关操作
1.npm来源:安装nodejs默认带有npm包资源管理器2.nodejs官网:https://nodejs.org/en/(建议下载LTS稳定版)3.历史版本下载地址:https://nodejs.org/zh-cn/download/releases/https://nodejs.org/en/download/releases/4.设置npm镜像源(不设置的话默认从国外镜像下载)(1)设置为淘宝镜像源npm config set registry http://registry.npm
2020-12-08 10:28:09
126
原创 centos7.6用nexus3搭建maven私服
centos7.6用nexus3搭建maven私服一、环境说明二、安装并启动nexus31.创建nexus3目录,传输nexus3压缩包2.解压压缩包3.自定义参数(全部默认可忽略此步)4.有需求的话,可以自行修改JVM参数5.可以查看nexus的执行命令参数6.启动nexus7.浏览器访问nexus8.获取admin初始密码,并修改密码9.解析两个文件夹:nexus-3.20.1-01、sonatype-work三、配置资源库1.资源库介绍2.创建自己的Blob3.资源库创建(1)创建hosted类型的r
2020-12-06 23:50:22
845
原创 windows10完全卸载npm
1.从卸载程序卸载程序和功能。2.重新启动(或者您可能会从任务管理器中杀死所有与节点相关的进程)。3.寻找这些文件夹并删除它们(及其内容)(如果还有)。根据您安装的版本,UAC设置和CPU架构,这些可能或可能不存在:C:\Program Files (x86)\NodejsC:\Program Files\NodejsC:\Users{User}\AppData\Roaming\npm(或%appdata%\npm)C:\Users{User}\AppData\Roaming\npm-cache
2020-12-06 20:38:13
15250
原创 window10安装和启动nexus
1.下载nexus压缩包这里小编找了官网和其他很多网址,点进去下载都报404错误。幸亏一仁兄分享了网盘资源链接:https://pan.baidu.com/s/1Cdo4kNpcv__cHmhtD1RMig提取码:3pqx2.解压nexus-3.19.1-01-win64.zip压缩包3.进入nexus-3.19.1-01\bin目录下用命令行执行下面命令.\nexus.exe /run端口号设置在文件:解压目录\nexus-3.13.0-01\etc\nexus-default.pr
2020-12-02 17:24:20
1748
原创 设置IDEA的maven项目默认使用jdk1.8和maven设置阿里云镜像
方法一:配置properties节点值在项目的pom.xml文件中配置如下信息<properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target></properties>方法二:配置build>plugins>plugin节点值在项目的pom.
2020-12-02 15:43:50
637
原创 centos7.6将本地docker镜像发布到阿里云
这里写目录标题一、环境说明二、创建镜像仓库1.登录阿里云,进入镜像服务2.创建镜像空间、镜像仓库并设置固定密码3.查看推送、拉取镜像操作4.发布镜像5.阿里云镜像服务可以查看到自己发布的公开镜像6.拉取镜像(可在第3步查详情获取拉取命令)一、环境说明1.linux系统版本:centos7.6.18102.注册阿里云帐号,阿里云官网:https://www.aliyun.com/3.centos安装好docker,docker版本:19.03.13二、创建镜像仓库1.登录阿里云,进入镜像服务
2020-12-02 12:33:14
133
原创 centos7.6下docker以自定义配置文件启动redis5.0.10
centos7.6下docker以自定义配置文件启动redis5.0.10一、环境说明二、启动步骤1.自定义redis配置文件myredis.conf2.以redis5.0.10镜像新建并运行新容器3.用远程工具连接centos里的redis一、环境说明1.linux系统版本:centos7.6.18102.docker版本:19.03.133.拉取redis镜像:redis5.0.104.redis远程连接工具:Redis Desktop Manager二、启动步骤1.自定义redis配置文
2020-12-02 09:07:25
2225
原创 window10连接centos7.6用docker安装的mysql
centos7.6用连接docker安装的mysql一、环境说明二、安装连接mysql:5.7.32演示三、安装连接mysql:8.0.22演示一、环境说明1.linux系统版本:centos7.6.18102.docker版本:19.03.133.拉取好mysql镜像:mysql:8.0.22、mysql:5.7.324.window的连接mysql客户端工具:navicat5.centos关闭防火墙,为本机连接centos里面的mysql做准备二、安装连接mysql:5.7.32演示1.
2020-12-01 12:40:14
342
原创 centos7.6用docker安装的tomcat访问出现404问题解决
一、场景及问题出现1.linux系统版本:centos7.6.18102.docker版本:19.03.133.tomcat镜像版本:latest(拉取时间:2020.12.01)4.新建并运行tomcat容器docker run -d --name tomcatdemo01 -p 8080:8080 tomcat5.谷歌浏览器访问:http://192.168.1.112:8080/PS:192.168.1.112是虚拟机IP,这里要注意把虚拟机防火墙关掉6.出现问题二、问题解决
2020-12-01 11:01:46
965
1
原创 centos7.6安装卸载redis5.0.10和设置开机自启动
一、环境准备1.linux系统版本:centos7.6.18102.redis压缩包:redis-6.0.9.tar.gz官方下载地址:https://redis.io/历史版本:https://download.redis.io/releases/3.准备sftp和ssh连接工具,本人用FlashFXP和Xshell 6二、安装redis1.创建并进入redis压缩包目录mkdir -p /myutil/redis/cd /myutil/redis/PS:通过sftp工具将redi
2020-11-30 23:18:05
720
原创 centos7查看位数和版本
查看版本:uname -a #可显示电脑以及操作系统的相关信息cat /proc/version #说明正在运行的内核版本cat /etc/issue #显示的是发行版本信息lsb_release -a #适用于所有的linux,包括Redhat、SuSE、Debian等发行版,但是在debian下要安装lsbcat /etc/redhat-release #查看版本查看位数:uname -r #有i386或i686的就是32位数,有x86_64的就是64位数u
2020-11-30 15:47:17
607
原创 centos7.6.1810安装mysql5.7.27
centos7安装mysql5.7一、环境准备二、安装步骤1.进入到mysql压缩包所在目录,解压压缩包2.将解压后的文件夹将其转移到/usr/local下,并更名为mysql3.创建mysql用户组和用户4.创建MySQL数据库的数据目录并设置拥有者和拥有组5.清空并重新编辑MySQL配置文件6.初始化mysql7.查看上一步初始化信息8.将mysql.server放置到/etc/init.d/mysql中9.设置开机自启(自行选择)10.启动MySQL服务并查看mysql进程11.登录root用户12.
2020-11-30 15:27:24
349
原创 centos7.6安装jdk8
一、环境准备1.linux系统:centos7.6.18102.jdk压缩包:jdk-8u271-linux-x64.tar.gzjdk8官方下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html3.准备ssh和ftp连接工具(推荐Xshell和FlashFXP)4.centos上安装vim编辑器yum install vim -y二、安装步骤1.将jdk压缩包传至centos7里(本人
2020-11-30 14:23:12
832
原创 docker之DockerFile构建过程解析
1.Docker执行Dockerfile的大致流程(1)docker从基础镜像运行一个容器(2)执行一条指令并对容器作出修改(3)执行类似docker commit的操作提交一个新的镜像层(4)docker再基于刚提交的镜像运行一个新容器(5)执行dockerfile中的下一条指令直到所有指令都执行完成2.DockerFile体系结构(保留字指令)FROM:基础镜像,当前新镜像是基于哪个镜像的MAINTAINER:镜像维护者的姓名和邮箱地址RUN:容器构建时需要运行的命令EXPOSE:
2020-11-29 22:23:03
370
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人