- 博客(39)
- 资源 (5)
- 收藏
- 关注
原创 centos安装nexus3.x版本
1、下载安装包解压后会出现 nexus-3.40.1-01和 sonatype-work 两个文件夹nexus-3.40.1-01: nexus 应用程序目录sonatype-work:私服的仓库,里面存储的是私服上的各种构件2、启动nexus我们这里以启动的时候将启动相关的日志信息写入 my-nexus.log 日志文件中,这样在启动的时候如果出现了异常,那么我们可以快速的定位到错误的原因3、启动报错jdk版本的错误由于我安装的是jdk oracle版本,而不是openjdk版本,nexus要求必须是jd
2022-06-30 13:51:05
469
原创 SpringBoot 是如何通过jar包启动的
SpringBoot 是如何通过jar包启动的得益于SpringBoot的封装,我们可以只通过jar -jar一行命令便启动一个web项目。再也不用操心搭建tomcat等相关web 容器。那么,你是否探究过SpringBoot是如何达到这一操作的呢?只有了解了底层实现原理,才能更好的掌握该项技术 带来的好处以及性能调优。本篇文章带大家聊一探究竟。java -jar做了什么 先要弄清楚java -jar命令做了什么,在oracle官网找到了该命令的描述:If the -jar option is s
2022-05-24 17:34:53
1097
原创 Springboot自动配置原理
一、原理自动配置流程图:@SpringBootApplication: Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot 需要运行这个类的main方法来启动SpringBoot应用@Target(ElementType.TYPE) // 设置当前注解可以标记在哪@Retention(RetentionPolicy.RUNTIME) //标注的类编译以什么方式保留@Documented //
2022-05-24 17:04:07
236
原创 linux安装nexus、gitlab
1、nexus安装、配置nexus-2.14.8-01私服解压 tar.gz tar -zxvf nexus-2.14.8-01-bundle.tar.gz移动到/usr/local 中 mv nexus-2.14.8-01 /usr/local mv sonatype-work/ /usr/local查看、编辑配置文件 cd /usr/local/nexus-2.14.8-01 vi conf/nexus.properties # 默认配置如下,保持默认配置
2022-05-20 13:47:23
327
原创 k8s中Pod、ReplicaSet、Deployment、Service的概念
一、PodPod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。Pod中包含了一个或多个容器,还包括了存储、网络等各个容器共享的资源。Pod支持多种容器环境,Docker则是最流行的容器环境。简单来说k8s不想直接操作container,因为操作container的事情是docker来做的,k8s中要有自己的最小操作单位,称之为Pod。说白了,Pod就是一个或多个Container的组合。每个Pod中都有一个pause容器,pause是Kubernetes基础设施的一部分,K
2022-05-18 18:07:36
1594
原创 doker学习4---docker容器数据卷
doker学习4—docker容器数据卷一、Docker容器数据卷是什么?先来看看Docker的理念:将运用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的容器之间希望有可能共享数据Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了。为了能保存数据在docker中我们使用卷。二、docker容器数据卷的作用卷就是目录或文件,存在于一个或多个容器中,由d
2022-05-13 09:51:21
306
原创 docker学习笔记二 --- docker常用命令
docker学习笔记二 — docker常用命令镜像命令1、docker images 查看镜像,需要注意的是,仓库源中的镜像文件可以有若干个镜像标签(TAG),代表不同的版本,可以通过REPOSITORY:TAG来定义不同的镜像文件。如果没有指定TAG标签,则docker一律默认镜像为latest版本。docker images命令可选参数说明:1,docker images -a --列出本地所有的镜像(包括中间映像层)2,docker iamges -q --只显示
2022-05-12 20:00:00
355
原创 docker学习3 --- docker commit
docker学习3 — docker commit我们今天拿tomcat举例子docker run -it tomcat可以使用:ctrl+p+q不退出容器的方式返回到宿主机目录下;前端访问页面发现404我们需要去容器里面排查一下原因docker exe -it /bin/bashmv webapps webapps2mv webapps.dist webapps使用docker commit命令将修改后的容器生成新的镜像;docker commit命令详解:作用:将运行着
2022-05-12 17:11:07
652
原创 docker 安装和介绍
docker 安装和介绍安装:1.确保自己的centOS 操作系统版本为7及以上,Linux 版本信息查看命令为:cat /etc/redhat-release2.卸载旧版本docker(及相关依赖项)yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \
2022-05-12 15:37:58
127
原创 多线程--CompletableFuture
多线程的学习笔记(2)大家在工作的时候,肯定会遇到很多多线程的场景。我们先简单的比较一下单线程和多线程之间的差距public static void main(String[] args) throws ExecutionException, InterruptedException { //单线程计算累加 Instant start = Instant.now(); long num=0; for (long i = 0; i <
2022-05-10 11:50:10
689
原创 多线程-JMM和并发三大特性
多线程的学习笔记(1)JMMJava虚拟机规范中定义了Java内存模型(Java Memory Model,JMM),用于屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效果,JMM规范了Java虚拟机与计算机内存是如何协同工作的:规定了一个线程如何和何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步的访问共享变量。JMM 描述的是一种抽象的概念,一组规则,通过这组规则控制程序中各个变量在共享数据区域和私 有数据区域的访问方式,JMM是围绕原
2022-05-10 11:45:52
181
原创 线程的三种创建方式
线程的创建方式1、继承Thread类public class ThreadDemo extends Thread{ // 重写run()方法 @Override public void run() { System.out.println("4567890-987e456789"); }}创建线程对象并调用 public static void main(String args[]) { ThreadDemo threadDem
2022-04-29 10:28:29
194
原创 Scheduled的简单使用
Scheduled的简单使用我们在开发中往往会遇到很多需要定时任务的请求,比如每天晚上凌晨去请求接口等。而且我们也不需要特别复杂的需求,比如需要什么分布式场景,这样我们可以用Spring的Scheduled。下面的示例我用的是Springboot的项目首先在启动类上添加@EnableScheduling 注解先简单测试一个一个用例import org.springframework.stereotype.Component;import java.util.concurrent.TimeUni
2022-04-28 19:35:04
1892
原创 RabbitMQ 学习笔记(二)
RabbitMQ 学习笔记(二)Spring 整合RabbitMQ引入依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.1.7.RELEASE</version> &l
2022-02-22 08:08:11
90
原创 Spring中的事件机制-ApplicationEventPublisher
Spring中的事件机制-ApplicationEventPublisherSpring的Application拥有事件发布并且注册事件监听器的能力,拥有一套完整的事件发布与监听机制。在Java中,通过java.util.EventObject来描述事件,通过java.util.EventListner来描述事件监听器,在众多的框架中,建立一套事件发布监听机制通常基于这两个接口来扩展实现 。主要用于系统的解耦.是观察者observe模式的一种体现。这种场景在框架中很常见,比如在Eureka Serve
2022-02-21 20:37:31
951
原创 RabbitMQ 学习笔记(一)
RabbitMQ 学习笔记(一)MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。优势:应用解耦,提升容错性和可维护性异步提速削峰填谷使用了 MQ 之后,限制消费消息的速度为1000,这样一来,高峰期产生的数据势必会被积压在 MQ 中,高峰就被“削”掉了,但是因为消息积压,在高峰期过后的一段时间内,消费消息的速度还是会维持在1000,直到消费完积压的消息,这就叫做“填谷”。劣势:系统可用性降低系统复杂性
2022-02-21 08:17:53
428
原创 Redis学习笔记(四)-- 高并发分布式锁
Redis学习笔记(四)-- 高并发分布式锁高并发分布式锁在我们平时写代码过程中,会遇到很多高并发的场景,比如双十一的秒杀场景,本文就以此举例分析Spring Boot整合Redis锁代码1、引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifa
2022-02-17 13:41:28
547
原创 阻塞队列BlockingQueue
阻塞队列BlockingQueue阻塞队列介绍Queue接口public interface Queue<E> extends Collection<E> { //添加一个元素,添加成功返回true, 如果队列满了,就会抛出异常 boolean add(E e); //添加一个元素,添加成功返回true, 如果队列满了,返回false boolean offer(E e); //返回并删除队首元素,队列为空则抛出异常 E remove(); //返回并删除队首元素
2021-12-09 17:05:57
407
原创 Semaphorer&CountDownLatch&CyclicBarrie详解
Semaphorer&CountDownLatch&CyclicBarrie详解SemaphoreSemaphore,俗称信号量,它是操作系统中PV操作的原语在java的实现,它也是基于 AbstractQueuedSynchronizer实现的。 Semaphore的功能非常强大,大小为1的信号量就类似于互斥锁,通过同时只能有一个线程获 取信号量实现。大小为n(n>0)的信号量可以实现限流的功能,它可以实现只能有n个线程同 时获取信号量。// 构造器public Semaph
2021-12-08 14:54:36
135
原创 理解AQS之独占锁ReentrantLock
深入理解AQS之独占锁ReentrantLock什么是AQSjava.util.concurrent包中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列、条件队列、独占获取、共享获取等,而这些行为的抽象就是基于 AbstractQueuedSynchronizer(简称AQS)实现的,AQS是一个抽象同步框架,可以用来实现一个依赖状态的同步器。JDK中提供的大多数的同步器如Lock, Latch, Barrier等,都是基于AQS框架来实现的一般是通过一个内部类Sync继承 AQS将
2021-12-07 09:33:03
310
原创 CAS&Atomic探究
CAS&Atomic探究问题:在并发编程中很容易出现并发安全的问题,有一个很简单的例子就是多线程更新变量i=1,比 如多个线程执行i++操作,就有可能获取不到正确的值。而这个问题,最常用的方法是通过 Synchronized进行控制来达到线程安全的目的。但是由于synchronized是采用的是悲观锁策 略,并不是特别高效的一种解决方案。。实际上,在juc下的atomic包提供了一系列的操作简单, 性能高效,并能保证线程安全的类去更新基本类型变量,数组元素,引用类型以及更新对象中的 字段类型。a
2021-12-06 15:00:34
370
原创 HashMap源码深度解析
HashMap源码深度解析JDK8中的HashMap与JDK7的HashMap有什么不 一样?JDK8中新增了红黑树,JDK8是通过数组+链表+红黑树来实现的JDK7中链表的插入是用的头插法,而JDK8中则改为了尾插法JDK8中的因为使用了红黑树保证了插入和查询了效率,所以实际上JDK8中 的Hash算法实现的复杂度降低了JDK8中数组扩容的条件也发了变化,只会判断是否当前元素个数是否查过了 阈值,而不再判断当前put进来的元素对应的数组下标位置是否有值。JDK7中是先扩容再添加新元素,JDK
2021-11-29 14:03:23
196
原创 JVM垃圾收集算法
JVM垃圾收集算法分代收集理论 当前虚拟机的垃圾收集都采用分代收集算法,这种算法没有什么新的思想,只是根据对象存活周期的不同将内存分为几块。一般将java堆分为新生代和老年代,这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。比如在新生代中,每次收集都会有大量对象(近99%)死去,所以可以选择复制算法,只需要付出少量对象的复制成本就可以完成每次垃圾收集。而老年代的对象存活几率是比较高的,而且没有额外的空间对它进行分配担保,所以我们必须选择“标记-清除”或“标记-整理”算法进行垃圾收集。注意,“标
2021-08-01 09:44:19
85
原创 “烟花”来了,带给我一些感想
“烟花”来了,带给我一些感想2019年 还记得那个夏天,我穿着校服,站在全校男生都会路过的“公主楼”,蹲在楼下,手端着电脑,在敲击着每一行代码,怀揣着年轻的梦想,希望有朝一日进入大厂,改变世界,为这个世界做一些贡献,为广大程序员奉献一丝头发,就在这个夏天,我告别了四年的大学生活,走上了程序员的长征之路,投简历、准备面试、准备毕业设计,每天就是实验室、各大高校的招聘现场来回奔走,最后,皇天不负有心人,终于得到了offer,七月份就正式步入社会了,作为新人,就想刚入学的样子,什么地方都不懂,还好前辈比较照
2021-07-29 17:45:51
123
原创 MyBatis-Plus
MyBatis-Plus1.特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错支持主键自动生成:支持多达 4 种主键策略(内含分
2021-07-15 15:25:19
101
原创 Maven的使用
Maven的使用Apache Maven 款软件项目管理的开源工具,是基于工程对象模型(Porn )的概念而设计的 Maven 可以 理项目构建的整个生命周期,包括清理( Clean )、编译( Compile )、打包( Package )、测试 Test 环节 同时 Maven 提供了非常丰富的插件,使得构建项目和理项目变得简单。 构建 个项目所 要的流程如下(1 )生成源码(2)从源码中 成文档(3 )编译源码(4 )测试(5 )将源码打包成 Jar ,运行在服务器、仓库或者其他
2021-07-15 15:22:49
340
原创 linux命令
linux命令线上查询及帮助命令(2个)man:查看命令帮助,命令的词典,更复杂的还有info,但不常用。help:查看Linux内置命令的帮助,比如cd命令。文件和目录操作命令(18个)ls:全拼list,功能是列出目录的内容及其内容属性信息。cd:全拼change directory,功能是从当前工作目录切换到指定的工作目录。cp:全拼copy,其功能为复制文件或目录。find:查找的意思,用于查找目录及目录下的文件。mkdir:全拼make directories,其功能是创建目录。
2021-07-15 15:21:52
206
原创 Java8新特性
Java8新特性〇内部类(*)外部链接链接〇函数接口外部链接链接Function<Integer , Integer> f = Math::abs;Consumer<String> c = System.out::println;Supplier<Integer> s = "Hello"::length;Predicate<String> p = "Hello"::equals; c.accept(s.get().toString()
2021-07-15 15:21:00
109
原创 windows安装mysql5.7
windows安装mysql5.7windows安装mysql5.7一环境准备Mysql社区版:https://dev.mysql.com/downloads/file/?id=474802Login是登陆Mysql官网 ,Sign Up是注册Mysql官网账号, 直接点击"No thanks, just start my download."即可下载双击刚才下载的文件二安装Mysql接受 下一步根据个人情况选择安装类型Developer Default 默认类型Server on
2021-07-15 14:55:47
364
原创 Fortify介绍及使用教程
Fortify介绍及使用教程简介Fortify 是一个静态的、白盒的软件源代码安全测试工具。它通过内置的五大主要分析引擎:数据流、语义、结构、控制流、配置流等对应用软件的源代码进行静态的分析,通过与软件安全漏洞规则集进行匹配、查找,从而将源代码中存在的安全漏洞扫描出来,并可导出报告。扫描的结果中包括详细的安全漏洞信息、相关的安全知识、修复意见。原理-首先通过调用语言的编译器或者解释器把前端的语言代码(如JAVA,C/C++源代码)转换成一种中间媒体文件NST(Normal Syntax Tree),
2021-07-05 15:30:38
14605
2
原创 xshell过期或者更新版本过低
xshell过期或者更新版本过低1、去官网下载最新版本试用我们使用xshell会遇到版本过低的情况,下载最新的版本可能会下载失败。可以采取以下步骤进行下载试用最新版本去官网下载https://www.netsarang.com/en/点击邮箱进行下载2、修改系统时间修改到之前的时间,也可以正常使用xshell,亲测有效。...
2021-05-20 16:44:08
1276
原创 切换JDK版本
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言 一、更换jdk版本 二、步骤 1.首先本地安装项目所使用的jdk 2.更换版本 总结前言很多小伙伴都会接触很多项目,然而不同的项目可能使用的JDK的版本是不一样的,那么如何正确的去切换JDK版本呢提示:以下是本篇文章正文内容,下面案例可供参考一、更改项目的JDK版本现在有更多的开发者使用idea进行开发,本文就拿idea进行举例分析二、步骤1.首先本地安装项目所使..
2021-04-10 10:45:28
566
原创 Docker容器
Docker容器一、什么是Docker?官方介绍,Docker是一个开源的应用容器引擎,基于Go语音遵循Apache2.0开源协议。这句话的后半句不管,跟入门码农没有太大关系。主要是前面那句“Docker是一个开源的应用容器引擎”,什么是应用容器引擎?都知道引擎是一个发动机的核心,比如汽车引擎一般之汽车发动机,是让一个汽车能跑起来的核心技术所在。应用容器引擎就是让应用容器跑起来的一个“发动机”,这个“发动机“就是docker技术。那么应用容器又是什么呢?简单理解应用容器就是一个安装软件(应用)的环境
2020-09-06 10:51:27
121
转载 ORA-12170: TNS:Connect timeout occurred
大海深处的星星 阅读数:2730首先,ps -ef|grep ora我确定我的oracle是启动的, 并且lsnrctl status是处于监听状态, 查看数据的实例echo $ORACLE_SID是没错的, 但是连接数据库用户的时候总是报ORA-12170: TNS:Connect timeout occurred异常,如图: 解决方法:用root用户查看/etc/host...
2019-01-20 15:15:55
649
原创 小白菜鸟的一点心得
今天是我第一次写属于自己的博客,以前都是看别人的,感觉别人都写的太好了,以前的自己不敢尝试,今天在大家的鼓励下,我打算开始写一写,干什么都有一个过程,只有敢于尝试,才能成长。 我最近在学习代码方面的知识,今天就和大家聊聊我自己写代码的一些体会与心得,代码重在你的思想,只有理解了,才能知道个所以然,最重要的一点就是,多思考,勤动手,每天多敲敲代码。刚开始学习的时候肯定会有很多的...
2018-04-11 20:16:20
266
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人