自定义博客皮肤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)
  • 收藏
  • 关注

原创 Linux常用命令字典篇

Linux命令1. 翻页查看文件less [-N] 文件名:可以向后翻页,也可以向前翻页,-N表示显示行号more 文件名:仅可以向后翻页2. 端口占用信息查看netstat -tunlp | grep 端口号:查看端口号对应的信息lsof i: 端口号:lsof为list open file在 Linux 上的 /etc/services 文件可以查看到更多关于保留端口的信息3. 杀死进程kill -9 进程id:强制杀死一个进程kill -15 进程id:正常关闭一个进程4.

2023-09-14 22:24:03 640

原创 Zookeeper应用场景和底层设计

什么是zookeeper开源分布式的apache项目为分布式应用提供协调服务zookeeper工作机制基于观察者设计模式存储并管理大家关心的数据注册观察者等价于文件系统+通知机制zookeeper特点一个leader,多个follower组成的集群集群中半数以上节点存活,zookeeper才能正常服务集群中的每个服务器都保存一份相同的数据副本,具有数据一致性同一个客户端的请求顺序执行数据更新具有原子性具有实时性,一定时间范围内,客户端能读到最新数据zookeepe

2023-09-14 22:21:45 283

原创 为什么要自己搭建自动化测试框架

为什么要自己搭建自动化测试框架,不直接使用现有自动化测试工具现有工具不支持自动化测试case的版本控制,即无法支持团队协作对于复杂加密和签名的接口,工具不支持涉及到很多协议的情况不支持(postman只支持http,jmeter好一点,还支持https)不容易排错生成的自动化测试报告不美观接口串联场景不太支持数据库连接校验不支持日志监控不支持web化自动化+接口自动化的组合场景不支持...

2022-05-01 09:30:00 412

原创 【消息队列】浅析Kafka的特点及底层运行机制

Kafka官方文档:https://kafka.apache.org/documentation/#introduction一、什么是KafkaKafka是一种基于发布/订阅模式的分布式消息队列。它是用scala语言实现的,通信1)基于TCP;2)基于Client/Server【发布订阅】支持一对多,即一个消息可同时被多个消费者消费延申:一对一的模式指一个消息仅能被一个消费者消费【分布式】kafka以集群的方式存在【消息队列】相当于生产者和消费者之间的消息中转站。

2022-04-30 20:59:39 318

原创 【Java】Stream API

Stream API【包】java.util.streamStream API是JDK8的新特性,实质上实现了函数式编程一、认识一下Stream在java中有一类类,叫做集合(Collection),其功能是用于在内存中存储数据。Stream这个类与集合有很亲密的关系,它是用来处理数据的。Collection VS StreamCollectionStream面向内存编程面向CPU/计算编程操作会改变存储的数据操作不会改变源数据,而是创建了新的Stream对象

2022-04-14 15:05:06 181

原创 【JVM】如何解读字节码文件

JDK中的字节码文件一、什么是字节码文件众所周知,java是一种跨平台的语言,实现java跨平台的底层逻辑在于其中间编译产物——【字节码文件】。实际上,与其说java是跨平台的语言,不如说jvm是跨语言的平台。因为jvm就是基于解读字节码文件来运行的,任何可以翻译成字节码文件的语言都可以通过jvm实现跨平台。可见字节码文件的重要性,下面就来具体介绍字节码文件。课外延申jdk每新出一个版本就对应两套规范,一个是java语法规范,一个是jvm规范。原因就在于其它语言也可以基于jvm运行。1、远

2022-04-14 11:14:30 1112

原创 【Java】并发编程-synchronized篇

锁机制篇——synchronizedsynchronized是java关键字,相当于一把锁,用于解决线程安全问题一、synchronized的使用1、什么是锁锁是一种资源,谁获取了锁,谁就拥有执行锁所管辖(锁住)范围内的代码的权限。synchronized { 锁住的范围 }方法上修饰:锁住该方法内的所有代码public synchronized void show(){ 锁管辖范围}代码块上修饰:锁住代码块中的部分public void show(){ lalala

2022-04-11 16:35:19 255

原创 【Java】并发编程-多线程基础篇

多线程一、预热1、进程VS线程1)进程进程是运行着的程序代码。一个进程只能对应一个程序代码,但一个程序代码可以对应多个进程。直白来说,程序代码是菜谱,进程是厨师烹饪的过程。对于同一个菜谱,可以有多个厨师同时按其制膳。进程是操作系统分配资源的基本单位,进程之间的资源不共享。两个厨师同时在做清蒸鲈鱼,同一条鲈鱼不可同时被二者使用,因为最后做出来的是两盘,不是一盘。2)线程线程是进程的一段执行逻辑,一个进程可以由多个线程组成。厨师在制膳过程中,可能一边在一个锅里熬制浇汤,一边在另一个锅里蒸鱼,可能同

2022-04-10 11:33:50 641

原创 【Java】注解篇

注解详解一、什么是注解先看看注解长啥样注解就是一种特殊标记,这种标记可以告诉处理程序看到它时应该相应地做哪些操作。没有对应处理程序的注解是没有意义的。打个比方,我们在学习过程中,会在书上做各种标记,有的地方用红色笔画横线,有的地方用蓝色笔画波浪线。别人看了这些标记,最多觉得你把书标得五颜六色,实质上对别人提高学习成绩没啥用。但是如果你告诉他红色是期末考试重点,蓝色是月考重点,却可以提高他考试拿高分的效率。【红色横线/l蓝色波浪线】——【注解】【期末考试前重点复习红色内容/月考前重点复习蓝色内容

2022-04-07 19:45:48 554

原创 【OS】IO系统——设备管理

操作系统的设备管理——IO系统一、啥是IO系统操作系统是一种特殊的管理系统,管理与计算机相关的各种资源,往大了说,包括硬件资源和软件资源,细化了说,包括计算资源、内存资源、文件资源、设备资源。本文主要讲解设备管理的相关内容。1、OS管理的设备有哪些所有能连接到计算机上的设备都归操作系统管理,例如键盘、鼠标、显示器、音响、麦克风、CD、磁盘、U盘、硬盘、打印机等等。这些设备不管多么”千奇百怪“,无非就是两类,要么是输入设备(Input Device),要么就是输出设备(Output Device),或

2022-04-04 16:30:09 1577

原创 【java】反射机制

Java中的反射机制一、什么是反射反射,顾名思义,应该是某个操作的逆向过程。java的反射机制,指代创建对象的逆向过程。【创建对象的过程】通过类型,来创建该类型的实例【反射的过程】通过实例,来获取该实例的类型反射:获取需要创建实例类型信息的过程,并且可以动态创建对象、动态调用方法、动态设置属性【注】java语言是静态语言,反射机制让java有了动态语言的特性简单粗暴来说,静态语言指编译时检查数据类型的语言,定义变量时必须指定变量的类型;动态语言指运行时才检查数据类型的语言,定义变量时不需

2022-04-02 19:36:48 398

原创 【python】闭包和装饰器

一、闭包1、什么是闭包闭包是一种特殊的函数,同时满足以下条件的函数就是闭包函数:函数内部定义了一个函数外部函数的返回值是内部函数外部函数的参数是一个函数(需要被增强功能的函数)【表示形式】def 闭包函数名(需要被增强的函数名): 局部变量 #可有可无 def 内部函数名(参数列表): 前增强内容 调用需要被增强的函数 后增强内容 return语句 #可有可无 return 内部函数名2、为什么要用闭包(优势)可以延长外部函数中局部变量的生命周期以可控的方式

2022-04-02 12:18:33 829

原创 【python】介绍和基础语法

一、python介绍1、为啥学python运维、测试可以实现自动化爬虫实现可视化以及便捷高效的数据分析机器学习相关研究2、python有啥特点它是一条90后的大蟒蛇,哈哈哈哈,你悄悄知道就行解释型语言,无编译——python语言是解释执行的交互式语言——>>>提示符之后,直接输入python语句&回车,就有相应的操作。(解释型的特点让它可以一令一动)一切皆对象——在java中哪些基本类型数据,也是以对象形式存储强大的基础库二、输出与输入任何语

2022-04-01 21:55:55 619

原创 【MySQL】MySQL索引详解

索引是什么?索引的本质是一种数据结构,一种排好序的数据结构,可以辅助数据库进行高效地数据查询。这种排好序不一定是真正的进行数据存储物理位置上的排序,而是一种逻辑上的排序,是对能够指向存储位置的引用进行排序,因为数据库物理存储有序,只能按照一种排序方式存储,但是实际情况我们可能会用到很多种排序方式索引底层实现原理B树、B+树https://www.jianshu.com/p/92d15df75027B树B+树M阶树B树B+树根子树个数[2,][2,M]

2022-03-22 15:03:21 1002

原创 Java函数式接口的介绍

接口在java中,接口是与类同一级别的一种类型,它与类不相同:关键字为interface可以实现(implements),但不可以继承(extends)一个类可以实现多个接口接口的权限修饰符仅为public和默认没有构造函数,不可以被实例化接口中:方法+常量方法:public abstract,无论是否显式表达,都是公共的&抽象的常量:public static final,无论是否显式表达,都是公共的&全局的如果一个类实现了该接口,那么必须实现该接口的全部方法,

2022-03-20 21:29:05 511

原创 JVM存在的两种内存报错StackOverflowError和OutOfMemoryError

JVM内存异常内存异常有两种:内存溢出和内存泄漏,JVM内存异常也存在这两种内存异常的情况。内存溢出:分配内存时,发现内存不够用内存泄漏:回收内存时,已经不被占用的内存无法被正常回收,造成闲置但无法被重新分配的情况JVM内存指JVM的运行时数据区,包括程序计数器、堆、虚拟机栈、本地方法栈以及方法区。其中,程序计数器不会发生内存异常的情况。JVM内存异常时,有两种错误提示类型,包括栈溢出(StackOverflowError)和内存溢出(OutOfMemoryError)。JVM不区分虚拟机栈

2022-03-12 15:57:03 2224

原创 Selenium自动化测试工具的简单介绍和使用

SeleniumSeleniumwhat:进行web网站的自动化测试,提供了操控网页的功能,包括向网页中put和从网页中gethow:提供了库,针对不同语言提供了不同语言的库一、自动化原理三部分组成:自动化程序+浏览器驱动器+浏览器自动化程序使用selenium提供的库,编写的测试脚本(向驱动器发送一些http网络消息)浏览器驱动器将脚本发送来的消息,转换成浏览器可以理解的请求;将浏览器的响应返回给脚本浏览器不同浏览器需要安装不同的浏览器驱动器,注意版本号匹配(浏览器胶囊按钮-帮

2022-03-10 17:42:19 8783

原创 Hadoop学习笔记(一)—— 大数据

大数据是什么无法在一定时间内用常规软件捕捉、管理、处理的数据集合,它是一种信息资产,具有海量、高增长率、多样化的特点。需要一种全新的处理模式才能处理。数据量单位大数据要解决的问题海量数据的存储海量数据的分析计算...

2020-11-03 14:52:25 118

原创 八大排序算法及Java实现(内部排序)

排序算法内部排序算法:需要排序的数据可以一次全部加载到内存中外部排序算法:需要排序的数据数量太过庞大,不能一次性全部加载到内存中内部排序算法速度从快到慢希尔排序(移动法)> 简单选择 > 直接插入 > 冒泡 > 希尔排序(交换法)1.冒泡排序每次从头开始到未排好序部分的末尾,依次比较相邻数据,如果与要求的顺序逆序,则交换,直到某一次循环中没有发生交换结束n-1次外循环每次循环“末尾”数据排好,即尾部为排好序的部分每次内循环比上一次减1for(int

2020-08-18 12:18:29 153

原创 线程池的原理及相关概念

我们创建线程池使用ThreadPoolExecutor类来创建,ThreadPoolExector继承自抽象类AbstractExecutorService类,该抽象类实现了ExecutorService接口,而它又实现了Executor接口。总的来说,线程池的本质是Executor接口,但我们不直接使用它来创建线程池,而是使用ThreadPoolExecutor来new以下。Executor接口:里面有一个execute(Runnable)方法,返回值为voidExecutorService接口:s

2020-07-19 19:23:11 155

转载 数据库的范式理解:第一范式、第二范式、第三范式、BCNF、第四范式、第五范式

https://www.cnblogs.com/lca1826/p/6601395.html

2020-06-22 11:37:25 411

原创 SpringBoot是什么及其优缺点&简单认识微服务

Spring Boot简介简化Spring应用来发的一个框架整合Spring技术栈的一个大整合J2EE开发的一站式解决方案相关:spring data:数据访问,包括sql和nosqlspring secruity:安全权限spring cloud:分布式整体解决方案优点:可以快速创建独立运行的spring项目,与主流框架集成内嵌servlet容器,(内嵌tomcat)无序打包成war包有很多启动器(starter),实现自动依赖和版本控制自动装配无需手动xml配置可运

2020-06-21 15:18:41 565

原创 【NoSQL】什么是NoSQL以及其四大分类和应用场景

NoSQL的四大分类KV键值对数据库redis(C编写的)、memecache、tair应用于内容缓存、处理大数据量的高访问负载、日志等查找速度快但是数据无结构化文档型数据库ConthDB、MongoDB(基于分布式文件存储的数据库,C++编写,主要用于处理大量文档;它是一种介于关系型数据库和非关系型数据库的中间产品,是nosql中功能最丰富、最像关系型数据库的非关系型数据库)应用于web应用数据结构要求不严格、表结构可变、不需要预定义表结构但查询性能不高且缺少统一查询语言列存储数据库

2020-06-21 15:09:10 2871

原创 JVM:内存分配与垃圾回收机制(appending)

Java并不是最早使用动态内存分配和垃圾回收技术的语言!垃圾回收(GC)需要考虑哪些问题哪些内存要回收需要进行GC的内存区域方法区(GC成效低):类(条件苛刻)、常量Java堆(GC成效高):对象内存可回收的条件类、常量无用了对象die了什么时候回收需要分配内存时,内存不够用了怎么回收依赖于垃圾回收策略...

2020-06-18 18:20:36 145

原创 Nginx中的核心概念及基本命令

什么是nginx一个高性能的HTTP反向代理web服务器轻量级并发能力强(支持5万个并发)占用内存少专门为性能优化而开发支持热部署基本的一些概念反向代理负载均衡动静分离

2020-06-12 17:09:22 117

原创 Shell(Bourne again shell)学习笔记

什么是shell一个命令解释器一个用C语言编写的可以直接操作Linux内核的程序一种命令编程语言shell命令可以启动暂停停止程序对计算机进行控制什么是shell脚本一个文件该文件由shel命令组成命令即可执行的程序名解释运行shell的版本Bourne shell(/usr/bin/sh)Bourne again shell(/bin/bash)C shell(/usr/bin/csh)K shell(/usr/bin/ksh)shell for root(/sb

2020-06-12 12:28:27 1554 1

转载 Java中四种引用:强引用、软引用、弱引用、虚引用

ava内存管理分为内存分配和内存回收,都不需要程序员负责,垃圾回收的机制主要是看对象是否有引用指向该对象。java对象的引用包括  强引用,软引用,弱引用,虚引用Java中提供这四种引用类型主要有两个目的:第一是可以让程序员通过代码的方式决定某些对象的生命周期;第二是有利于JVM进行垃圾回收。下面来阐述一下这四种类型引用的概念:...

2020-06-07 09:07:52 133

原创 基于CentOS7的Nginx的下载安装

一般情况下服务器都是远程登录的,所以我们也采用远程登录的方式登录我们本机虚拟机安装的linux系统(Xshell)查询虚拟机的IP地址ifconfig进行远程登录准备好nginx安装需要的环境gcc安装nginx是c语言编写的,所以需要安装gcc来编译nginxpcre安装一个perl库。nginx的http模板块使用pcre来解析正则表达式zlib安装zlib提供很多种压缩和解压方式。nginx使用zlib对http包进行gzip解压openssl安装openssl是一个强

2020-06-05 12:18:46 353 1

原创 JVM:Java运行时数据区内存模型与内存异常

什么是内存管理对内存空间进行分配和回收,即内存动态分配和垃圾回收Java:虚拟机自动管理C/C++:程序员手动管理!!自动管理相比于手动管理不容易出现内存泄露和内存溢出,但仍然存在内存泄漏和溢出的问题虚拟机规范足够严谨也足够宽松,严谨是为了正确性,宽松是为了实现的灵活性,即规范只是要求具备哪些功能,而实现请自由发挥JVM运行时数据区域1.模型图题外话:为什么要划分区域和分类——为了方便管理线程私有:程序计数器、栈(虚拟机栈、本地方法栈)线程共享:方法区、堆2.程序计数器当前线程

2020-06-02 15:03:05 124

原创 常见字符集及其编码方式

常见的编码表ASCII:美国标准信息交换码,使用一个字节7位表示,首位为0ISO8859-1:拉丁码表,即欧洲码表,使用一个字节8位表示GB2312:中文编码表,使用一个或两个字节表示GBK:中文编码表的升级版,融合了更多中文符号,使用一个或两个字节表示Unicode:国际标准码,包含全人类使用的所有文字,使用两个字节表示UTF-8:变长编码的Unicode,使用1~4个字节来表示...

2020-06-02 09:35:54 186

原创 Kubernetes(K8S)中的核心思想及基本概念

kubernetes为什么叫k8s?答:单词首字母和尾字母之间有8个字母k8s发展历程IAAS:infrastructure as a service,基础设施即服务,eg.阿里云PAAS:platform as a service,平台即服务,eg.新浪云、dockerSAAS:software as a service,软件即服务,eg.Office365资源管理器——对集群化的容器进行管理容器集群化:so many problems,比物理机的集群化复杂麻烦的多mesos:apche

2020-05-31 10:49:47 664

原创 JVM:高效并发机制——内存模型、线程、锁

为什么要进行并发(多任务处理)处理器能力很强,尽可能压榨其劳动力处理器处理速度与存储和通信速度相差甚大(IO、网络通信、数据库访问非常耗时)物理机提高处理器效率的办法增加缓存机制(but 带来了复杂性)——速度差异:每个处理器都有自己的缓存器,当它们访问同一内存时存在一致性问题,因此各处理器要按照协议(MSI、MESI、MOSI、Synapse、Firefly等)规定来访问内存代码的乱序执行:执行顺序和代码顺序不一定一致,但输出结果一致虚拟机的并发提高效率也类似,如jvm的即时编译器有指

2020-05-30 22:40:17 255

转载 MyBatis mapper文件中的变量引用方式#{}与${}的差别

                                           &nbsp.

2020-05-28 10:39:31 173

原创 【Docker】Docker介绍-基础篇

Docker简介写好的代码在开发环境下可以正常运行,部署到新环境却出现了bug,原因在于环境配置等存在差异,给运维部署带来了很大的麻烦==》软件带环境安装==》docker实现,可将环境也一模一样的复制过来,消除在你的机器正常运行而在我的机器上运行错误的问题。打破代码即应用==》镜像即应用镜像技术:将除内核以外的所有需要的环境自下而上打包,实现应用程序式跨平台间的无缝接轨运作镜像=运行文档+配置环境+运行环境+运行依赖包+操作系统发行版Docker安装Docker常用命令Docker镜

2020-05-27 13:52:42 1224

原创 Maven学习笔记:什么是Maven&什么是构建

自动化构建工具——maven1.因:开发中存在的问题一个项目=一个工程===》如果一个模块=一个工程就好了(如果每个工程中存在相同jar包,冗余)需要的jar包及jar包依赖的相关jar包需要自己下载(困难)并手动导入(冗余)项目===》能自动最好了2.果:maven出现了使得将项目中的模块可作为一个项目独立开发,模块间依赖也不影响所有jar包放一份在仓库中,工程需要时引用即可,不需要在工程中真正的下载一份存着jar包及jar包依赖的相关jar包可自动下载导入,不需要手动,然后通过gav

2020-05-23 11:16:58 563

原创 职责链模式

职责链模式解耦请求发送者与接收者请求可以直接传给职责链上任意一个节点,并不一定要从链条的首部开始(按照一定规定)请求具体被哪个接收者处理不知道接收者的职责链条具体是怎样的不知道接收者职责链可以按照需求动态改变,增强了灵活性结构图 Handler子类具体实现handleRequest方法 handleRequest(Request request){ if(职责范围内) 处理请求 else h.handleRequest(request)交给上级处理 }...

2020-05-19 20:13:24 73

原创 Linux知识点补充及命令总结

关机命令shutdown -r/h 时间r表示重启h表示停止时间数字 表示数字分钟后怎样几点:几分 表示几点几分怎样now 表示立刻怎样reboot=shutdown -r nowhalt=shutdown -h now=poweroff!!sync是关机命令前必须执行的命令,其表示将内存中的数据写入磁盘...

2020-05-18 20:52:36 124

原创 JVM:java对象创建的过程

对象创建的过程如图是大致流程在常量池中检查是否存在创建对象使用类的符号引用分配内存空间(这里指大部分情况,即对象实例在堆上分配)对分配的空间进行相应数据的填充将对象的引用(也可以是句柄,但hotspot采用引用)入栈,即给对象变量赋值1.常量池中检查类符号引用遇到new指令后,要先判断使用的类是否已经加载进来,因为对象的创建是依据类信息来创建的,简单来说就是需要模板或者设计图纸如果类加载进来了,那么常量池中就会存在该类的符号引用,通过该引用就可以找到存放类信息的内存空间,就可以拿到设

2020-05-16 15:25:00 186

原创 JSTL标签库的学习笔记

JSTL1.概念JSP Standard Tag Library JSP标准标签库,开放源码的标签库——替代代码脚本2.五个标签库组成核心标签库 c前缀 (常用)格式化 fmt前缀函数 fn前缀数据库 sql前缀(不使用)XML x前缀(不使用)!!每个标签库都有一个uri地址,使用时必须taglib指令引入才能用<%@ taglib prefix=“c” uri=“uri地址” %>3.使用步骤导入jstl的jar包写taglib指令引入使用标签

2020-05-15 19:38:42 112

原创 EL表达式的学习笔记

EL1.概念Expression Language 表达式语言——替代jsp中表达式脚本在jsp页面中进行数据(域对象中数据)的输出2.EL表达式格式${表达式}!!当输出值null时:EL什么都不输出,jsp表达式脚本会输出null3.EL表达式搜索数据域的顺序(当存在同名时)先小域后大域 :pagecontext<request<session<application4.输出不同类型的表示方式字符串 ${ key名 }对象所有属性 ${ 对象变量名 }

2020-05-15 18:47:16 117

空空如也

空空如也

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

TA关注的人

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