自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小匠杨的博客

技术杂记

  • 博客(37)
  • 收藏
  • 关注

原创 操作系统为什么这么难

操作系统为什么这么难

2020-04-25 16:39:15 4971

原创 多模块项目-项目复制出现Module xx must not contain source root xx The root already belongs to module xx

问题多模块项目在进行模块复制后改名时出现问题。Module “cboss-zjsm-test”must not contain source root “C:\Users\Young\Desktop\sql\cboss-zjsm-project - 副本\cboss-zjsm-test\src\main\java”.The root already belongs to module "cboss-zjsm-inter解决办法将不属于自己模块的content root都干掉...

2021-06-09 14:54:38 388

原创 $0 $1 \1 \2在Java正则中到底什么意思

Java正则Pattern & Matcherdemo1demo2说明java 中的正则匹配以小括号为依据,第一个小括号为第一组,第二个为第二组。默认正则有一个第0组$0 & $X以组匹配出的结果我们可以用$0 $1…依次来代替,具体参考如下例子。注:$0 $1只代表第一次出现的大写字母,上述(在大写字母前或后加_)功能的实现是因为String的repalaceAll底层有循环依次做正则匹配...

2021-04-13 21:59:02 2394

原创 nodejs是什么东东

是什么它是一个C++语言写的程序。它能够认识、解析、执行JS,可以说它是一个执行JS的环境,可以类比JVM来理解,java代码在JVM上执行,js在nodejs上执行(举例不是特别准确,但大体可类比理解)。标准一点的解释是:Node.js 是一个基于 Chrome V8 引擎的 Javascript 运行环境,用来方便快捷的创建服务器端网络应用程序(异步非阻塞)。能干什么运行JS以前 JS 只能运行在浏览器中,Node.js 出现之后,不管是服务器上,还是哪,只要安装了 Node.js 就可

2021-04-03 16:56:39 372

原创 new String(“111“)到底会创建几个对象

new String 到底会创建几个对象呢String对象详解简单描述String入门常识String的创建方式String str = "111";会创建几个对象new String("111")会创建几个对象代码示例String对象详解简单描述字符串可以说是java中非常常见的一种数据类型了,我们在日常的开发中对其的使用及其的频繁,并且它也是笔试面试中常考的一个知识点,因此我们非常有必要对其做一定了解。今天这篇文章以一个常见的面试题为引子,详细的对String做一个描述。String入门常识

2021-04-03 16:17:16 824

原创 杂学Linux-IO篇(二)

导读这篇文章是我学习IO的第二篇文章,这里接着上篇的BIO模型说起,在学习了上一篇的BIO后我们应该明白BIO最大的特色就是阻塞,每个连接、每个请求都是阻塞式的调用。但随着互联网的快速发展,阻塞式的IO会极大的影响系统的性能,为了满足高并发、快速响应的需求,我们对IO有了更近一步的要求,出现了NIO,也就是新的IO模型。NIO什么是NIONIO是建立在BIO的基础上的一种新的IO模型,它是对BIO最大的特色阻塞式的IO的一种改进,它采用非阻塞式的方式来提升性能,简单的理解就是它是非阻塞式的IO,连接

2020-10-25 20:55:54 181

原创 Maven知识大集合

导读maven是我们常用的一个项目构建工具,了解它的配置文件对我们来说非常的有必要,这里通过一个spring boot类的父子模块来对配置文件做一个详细的说明。父模块pom<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

2020-10-21 17:12:47 286 1

原创 杂学Linux-IO篇

本文来介绍一下Linux系统的IO相关知识,内容为自己所学所感,或许不是那么的准确,仅供参考,希望对初学者有一定的帮助,对于下面文章中提到的pageCache请参考我的另一篇文章杂学Linux-基础篇IO可以这么说计算机中由CPU、内存和IO三部分组成,IO代表着所有的输入输出设备,对于编程人员来说了解IO的底层过程对我们来说百利而无一害。文件IONIO:以下两图简明的展示了文件IO的过程,图中包含3中IO过程,ByteBuffer的两种和FileChannel的一种;ByteBuffer使

2020-09-24 20:21:44 206

原创 杂学Linux-基础篇

一般对于开发来说,了解Linux系统的知识是必须的,因为大部分服务器都是用Linux作为操作系统的,这篇文章作为我学习Linux系统的一个笔记来分享给大家,或许不是那么准确,但我会以我自己的心得来对Linux中的一些内容做一个简单的描述,便于初学者了解Linux。一些基本概念VFS(虚拟文件系统)首先我们必须必须必须有一个思想认识,在Linux里 一切皆文件,无论是是一个程序、还是一个真实的...

2020-09-22 20:42:07 171

原创 什么是Zookeeper&分布式协调又是什么鬼

导读我是在没有接触分布式知识的时候学的Zookeeper,在学习的过程中有种不知所云、虚无缥缈的感觉,脑海中一直充斥的两个问题就是,Zookeeper到底是用来做什么的?什么是分布式协调呢?直到学完第二遍,看了一些Zookeeper的使用场景才对Zookeeper有了一个简单相对清晰的概念,因此抽时间做了这次的总结,希望能够帮到打算学习或正在学习Zookeeper的你。什么是Zookeeper&什么是分布式协调在学习Zookeeper的时候,听到的第一句对Zookeeper的描述就是:Zook

2020-08-27 16:26:03 596

原创 会话相关知识看过来

Cookie&Session&TokenHTTP服务是无状态的,为了解决无状态的这个问题出现了Cookie&Session&Token,三者都是用来维持客户端和服务端的会话的。当客户端第一次访问服务端时,服务端会生成一个Session,自己保留一份称为session,给客户端返回一份,客户端将session保存在存在本地称为cookie,当客户端再次访问服务器时会自动的将cookie带着,服务端会获取该cookie与自己保存的做对比验证,判断是否相同,如果相同则维持会话

2020-08-15 10:04:21 370

原创 Spring Boot的启动过程&自动化配置

导读在看了Spring Boot的启动过程源码后,对整个启动的过程有了一个简单的了解,在这做一个简单的、粗略的记录。启动过程Spring Boot的启动过程从代码层面可分为两部分,第一,执行SpringApplication构造函数;第二,执行run()方法,完成整个Spring Boot的启动。构造函数初始化上下文的各种接口–ApplicationContextInitializer以及各种监听器–ApplicationListener,这些上下文初始化器和监听器都以文件的形式存储在META-I

2020-08-05 20:04:24 373

原创 Java枚举的使用-Enum

是什么1、java枚举类是一组预定义常量的集合,使用enum关键字声明这个类,常量名称官方建议大写;2、所有枚举值都是public , static , final的;3、枚举类默认继承了java.lang.Enum,并且enum类会被final修饰;4、枚举类默认实现了java.lang.Comparable接口;5、枚举类覆载了toString方法,当我们调用时直接会返回对应的枚举值;6、它的构造方法默认为private ,因此不能添加其他的类型修饰符;7、可直接用==判断两枚举值8、v

2020-08-05 13:21:13 199

原创 Maven 本地仓库明明有对应的jar包但还是报找不到

导读今天在导入项目时发现本地仓库中明明有对应的jar包,但在项目中还是报找不到对应的jar包,经过一番查找,最终解决,详细参考下面图片。问题原因第一,你本地仓库对应的包文件夹下有_remote.repositories这个文件;第二,你的项目现在连接不到下载这个包的仓库;以上两点就是本地明明有对应的jar包,但项目中还是会报找不到这个jar包的原因。解决方法1、直接干掉_remote.repositories这个文件;2、配置你的项目,让你的项目能够连接到下载这个包的仓库(一般为私服

2020-08-03 13:49:50 17316 7

原创 Nginx配置文件解析&Session共享

是什么一个高性能的 HTTP 和 反向代理 服务器,其特点是占有内存少,并发能力强。它和Apache服务器相比,Nginx更加的年轻有活力,性能更强,而Apache年龄稍大,成熟稳重,相对来说bug更少。解决什么问题高并发负载均衡高可用虚拟主机伪静态动静分离配置文件解析虚拟主机通过nginx可以实现虚拟主机的配置,nginx支持三种类型的虚拟主机配置基于ip的虚拟主机, (一块主机绑定多个ip地址)基于域名的虚拟主机(servername)基于端口的虚拟主机(listen

2020-07-27 20:31:32 489

原创 Spring cloud中Ribbon&RestTemplate&Feign&Hystrix&Zuul

导读Ribbon做负载均衡,RestTemplate和Feign发起远程过程调用,整个服务的调用过程可描述为:Eureka Client从Eureka Server获取服务列表保存在本地,Ribbon做负载均衡,RestTemplate或Feign发起远程过程调用。Feign是RestTemplate的进一步包装,它的底层就是RestTemplate;Template集成了Ribbon;Ribbon集成了Eureka Client;RibbonRibbon客户端的负载均衡实现,它内部提供了许多的

2020-07-27 10:48:15 368

原创 Spring Cloud中Eureka的使用

EurekaEureka是Spring Cloud框架中的服务注册与发现组件。Eureka的使用Eureka服务器功能服务注册表:记录各个微服务信息,例如服务名称,ip,端口等。注册表提供查询API(查询可用的微服务实例)和管理API(用于服务的注册和注销)。服务注册与发现:注册:将微服务信息注册到注册中心;发现:查询可用微服务列表及其网络地址服务检查:定时检测已注册的服务,如发现某实例长时间无法访问,就从注册表中移除。配置使用1.配置pom文件<dependency>

2020-07-27 10:26:22 358

原创 EL表达式无法识别 本地没问题&部署到服务器上无法识别

本地运行的好好的项目,部署到虚拟机Tomcat上,确发现无法识别EL表达式,找了许久,终于发现问题所在:

2020-07-24 16:10:35 321

原创 Redis主存复制与集群

Redis单机问题随着互联网的急速发展,单机的redis已经不足以应对日常的需求,单机的redis主要存在以下问题:1.单点故障,在单机环境下,一旦redis宕机,那么整个系统将会崩溃。2. 容量有限,redis是一个内存型数据库,而一台机器的内存是非常有限的,一台机器只能将内存的一部分分配给redis用,故而单机的redis存在容量问题。3. 访问压力,当访问量急速增加时,单机的redis将会出现瓶颈,无法为所有的用户提供服务。问题解决方案对于上述存在的问题,业界一般采用AKF原则来进行解决,

2020-07-22 15:24:43 326

原创 为自己打响Redis的进阶之战

Redis发布订阅模式发布订阅模式发布者将消息发布到对应的频道上,而消息订阅者只要订阅了对应的频道,那么只要发布者发布了消息,订阅者就会收到该订阅。简单使用参考:消息订阅者订阅频道消息发布者发布消息消息订阅者接收到消息pipeliningredis支持管道(pipelining)技术,简单的理解就是,将多次命令请求合并为一次请求发送,减少IO,减少访问次数。简单的一个测试参考下图:我们利用pipelining将多条命令一次发送给redis。nc 是一个工具,它可以用来测试TCP

2020-07-16 16:41:22 145

原创 这么简单的Redis你也要错过吗

Redis号称是最快的key-value的基于内存的数据库,近年来,各大公司的招聘、面试都会问到Redis,可以说热度极高,接下来我将会分享一些我学习Redis的笔记,希望能够给予到大家一定的帮助。数据的存储变化一开始,我们直接将数据存在磁盘当中,但随着数据量的逐渐增大,数据的访问效率逐步的降低,后来,出现了关系型数据库,使得数据的存取效率有了极大的提升,但随着大数据时代的来临和越来越高的并发,关系型数据库也到了一定的瓶颈,此时人们提出了一种内存级的数据库,所有数据保存在内存中,但这种数据库对机器的性能

2020-07-16 16:22:09 161

原创 Spring Boot&Spring Cloud入门总结

Spring Boot&Spring Cloud入门总结Eureka:服务注册与发现,用于服务管理。Feign: web调用客户端,能够简化HTTP接口的调用。Ribbon:基于客户端的负载均衡。Hystrix:熔断降级,防止服务雪崩。Zuul:网关路由,提供路由转发、请求过滤、限流降级等功能。Config:配置中心,分布式配置管理。Sleuth:服务链路追踪Admin:健康管理初识Spring Boot&Spring CloudSpring Boot是一个简化配置的、集

2020-07-14 19:13:37 203

原创 Springboot配置文件及简单web开发

Springboot的配置文件文件类型properties文件,我们以前一直使用的文件,文件内容要求如下格式:person.name=zhangsanperson.age=12person.gender=男person.desc=my name is ${person.name},my age is ${person.age}@Componentpublic class Person { @Value("${person.name}") private String na

2020-07-14 15:47:47 150

原创 1门槛入门Spring Cloud

Spring CloudSpring Cloud 是微服务架构的一系列框架的集合,使用它可以很方便的进行分布式应用的开发,非常迅速的搭建出一个分布式系统。架构的组成服务注册与发现组件:Eureka,Zookeeper,Consul,Nacos等。Eureka基于REST风格的。服务调用组件:Hystrix(熔断降级,在出现依赖服务失效的情况下,通过隔离 系统依赖服务的式,防止服务级联失败,同时提供失败回滚机制,使系统能够更快地从异常中恢复),Ribbon(客户端负载均衡,用于提供客户端的软件

2020-07-14 15:32:12 132

原创 小匠杨解读策略模式

导读可以这么说,所有的设计模式都是对于编程中的某一类问题的解决方案。在大多数人眼里或许设计模式非常的难,但其实它只是一种有着固定边界、确定的方案而已,当经过多次的使用,慢慢的熟练了你就不会觉得它有这么难了,到那时你会觉得它真的简单、真的强大。是什么策略模式是一种编程的思想,某类问题的解决方案,它可以解决我们在编程中遇到的一些特定的问题,策略即在处理一件事情的时候,不同的情况会有不同的处理方法,不同的处理方法就是不同的策略,常见的一个例子就是我们日常生活中的出行方式的选择,汽车、公交车、地铁,同样是选出

2020-07-07 09:42:59 215 1

原创 为什么我的Maven依赖会不成功呢

导读在IDEA中使用Maven做项目构建工具是非常常见的,但在使用Maven中也会有许多的问题,今天在做做JDBC时遇到了引入依赖不成功的问题,反反复复的进行了仔细的分析也查看了网上的许多的帖子,做了各种各样的尝试,最终将问题解决,做出如下记录,希望遇到同样问题的你们可以不用那么的头疼。问题Idea在引入mysql-connector-java依赖包时出问题,pom文件报错,无法使用该依赖包:导包dependency<dependency> <groupId>mysql

2020-07-03 21:51:00 1054

原创 高并发-高可用-负载均衡LVS

随着互联网的快速发展,越来越多的互联网服务面临着极其庞大的并发量,面对庞大的并发,现在的人们是如何解决的呢?本文是我了解到的处理高并发时使用负载均衡的一些知识,我将其写为一篇文章分享给大家,希望能够对大家学习负载均衡有点帮助。几个基本概念该并发:短时间内对服务器进行大量的请求。负载均衡:在高并发的场景下,我们会有专门的负载均衡服务器来将大量的请求分发到对应的应用服务器上,以此降低单台服务器的压力。负载均衡的模型四层负载均衡:在高并发场景下,通常在真正的应用服务器前会有一台四层负载均衡服务器,

2020-05-26 21:54:19 616

原创 捅破JVM调优这层薄薄的窗户纸

说起JVM调优,大多数人都闻风丧胆,但其实它并没有那么难,你与JVM调优的距离仅差一层窗户纸,今天让我来帮你们将它捅破。调优是什么调优是为了追求吞吐量或响应时间而做的一系列硬件、软件的优化活动。简单理解为了提升吞吐量或相应时间,结合具体的业务场景我们应该使用多大内存、什么样的CPU等硬件和给JVM设置什么样的参数使得JVM的垃圾回收时间缩短。调优是为了什么在谈到调优时,我们应该明确,调优是为了追求什么?其实很简单,调优有两个指标,第一,吞吐量;第二,响应时间。我们所做的调优工作就是围绕这两个根本性的

2020-05-25 11:24:26 436

原创 JVM垃圾回收大揭秘

引言我们都知道在java编程中,我们不需要手动的释放内存,因为java有着自动的垃圾回收机制,那么在java中什么是垃圾,垃圾回收机制又是怎么回事,本文将会对JVM的垃圾回收机制做个详细的介绍。自动垃圾回收与手动垃圾回收自动垃圾回收会使得开发效率提高,但在执行中要进行垃圾回收,所以执行效率会降低,而手动处理垃圾则相反,自动垃圾回收会使得编程相对于手动更加容易。什么是垃圾在java中,我们称没有任何引用指向的对象或多个对象(循环引用)为垃圾,这些对象所占据的内存空间需要垃圾回收机制去自动的回收该部分

2020-05-23 17:05:05 286

原创 从零开始学习JVM

对于大部分学习Java语言的人来说,JVM是一个无法避免的必要知识点,接下来我将分享一下我的jvm学习笔记,希望能够给予各位一点帮助。什么是jvmJava virtual machine(java虚拟机),它是一种规范,虚构的一个计算机(有自己的字节码指令集和内存管理),也可称之为跨语言的平台,无论何种语言,只要编译为class文件,那么jvm就可以识别运行。自己的理解:jvm可理解为一个黑盒子,它有两个口,一个用以接收class文件,内部经过一系列处理,从另一个口将命令传出去调用操作系统具体的指令,

2020-05-22 10:55:43 296

原创 多线程与高并发学习笔记(四)

前述文章介绍了一些线程相关的知识点,今天我们讨论一下线程池,可以说线程池是我们编程人员必不可少的知识点之一;那什么是线程池呢? 简单理解其实就是装线程和任务的一个容器;有了它我们可以最大程度的减少了频繁的创建和销毁线程所带来的资源开销,其实总的来说就是为了减小资源的浪费,使效率尽可能的最大化。Callable与Future说到线程池,那么我们先介绍下Callable与Future接口;说到线程...

2020-05-08 19:41:20 245

原创 多线程与高并发学习笔记(三)

ThreadLocalThreadLocal线程局部变量,每个线程都维护一个ThreadLocal相关的地址空间,相当于每个线程都有一个自己的数据保存地,不会互相影响;以空间换时间的策略。原理分析分析ThreadLocal源码可知:使用ThreadLocal后,每个线程都维护着一个Map,而Map里存着Entry对象;key为ThreadLocal对象,值为ThreadLocal 的set...

2020-05-01 21:22:21 295

原创 多线程与高并发学习笔记(二)

本文主要介绍一些Java中常用的同步工具类ReentrantLock可重入锁,可代替synchronized,它比synchronized更加的灵活,提供了更多的方法,但在使用上需要手动的加锁和释放锁;底层使用CAS来实现。使用synchronized锁定的话如果遇到异常,jvm会自动释放锁,但是lock必须手动释放锁,因此经常在finally中进行锁的释放.常用方法:Boolean t...

2020-04-29 22:21:22 319

原创 多线程与高并发学习笔记(一)

在编程领域,我们要想有所提高,那么需要跨越的一座大山就是多线程与高并发。这是我多线程与高并发学习系列文章的第一篇,我会从最基本的什么是线程讲起,希望更多的人能够从这些文章中有所收获为你学习多线程与高并发助力,用最少的时间得到最大的成果。线程基本概念说到线程就得从程序说起,程序是躺在磁盘中的应用代码,进程是运行中的程序,而线程是进程的不同执行路径,用专业一点的说法就是进程是资源分配的基本单位,...

2020-04-28 12:41:12 340

原创 解密缓存一致性与指令乱序

缓存为什么要使用缓存首先我们要明白缓存的出现是为了加速程序的执行过程,提升效率。为什么这样说呢?因为程序的执行是在CPU中来完成的,而程序的驻留地确实硬盘,程序需要先从硬盘加载到内存,然后再读入CPU当中才能执行,而硬盘、内存、CPU的读写数据能力相差极大(好几个数量级),为了缓解三者之间读写数据速度问题,因此引入了缓存,缓存一般在CPU当中(一般有三层缓存)。块处理在引入缓存后,出现了一...

2020-04-24 15:34:47 487

原创 Java编程入门-计算机底层知识

java编程入门之计算机底层运行过程我想对于大多数初入门的或已经学习编程一段时间的程序员来说,他们对于计算机底层一定充满好奇,或者称之为迷茫吧!为什么我写的程序计算机能够认识?为什么计算机能够帮助我们完成这么多的任务?计算机底层到底是怎么回事?接下来我用我目前了解的一些知识来为你做一个简单易理解的回答。计算机的组成想要明白计算机的运行过程,那么首先必须了解计算机的基本组成:如图cpu:c...

2020-04-23 20:15:52 768

原创 找工作杂记-简历篇

面试前的准备在我看来面试大概分为两个过程,一自己心里上需要做好充足的准备;二准备简历进行面试。心里方面保持良好的心态,将面试官当成自己的朋友,站在平等的地位上,千万不要慌张,面试过程是一个互相选择的过程。一方面企业在挑选适合的人才,另一方面我们也在选择适合自己的企业。简历准备简历是我们的第一名片,是我们能否有面试机会的敲门砖,是找工作的重中之重,因此我们一定要用心、细心、耐心的打磨,突出...

2020-04-22 21:50:23 434

空空如也

空空如也

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

TA关注的人

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