自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 收藏
  • 关注

原创 [Linux学习] 实战系列之网络管理

[Linux学习] 实战系列之网络管理先来点简单常用的,但是注意,简单常用的也要用的熟练哦ping大家应该都知道ping是用来测试一个主机是否能够互通。一个ping命令的输出如下:root@***:~# ping 127.0.0.1PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.036 ms64 bytes from 127.0.0.1: icm

2021-08-28 09:05:55 294

原创 垃圾什么时候回收?

[ JVM ] 垃圾什么时候回收?垃圾回收是面试中很重要的话题,整个垃圾回收的知识点也非常多,一整篇看下来的话可能会对一些细节不是很深刻,所以我个人喜欢把大问题拆分成小问题来集中处理。所以这一章我们集中来讨论Java中的垃圾什么时候回收,更为具体的话就是”垃圾回收的触发机制“,由于不同的垃圾回收算法的触发机制不一,所以我们分为两章来讨论。经典垃圾回收触发机制在G1出现以前,Gc分为两种,即YoungGc和FullGC(或者称为MinorGc和MajorGC)YoungGC顾名思义,YoungG

2021-08-27 20:21:05 536

原创 跨代引用问题和并发标记问题

跨代引用问题和并发标记问题跨代引用什么是跨代引用?跨代引用是指在发生YGC的时候,若存在老年代指向新生代的引用,则需要对老年代进行扫描,造成了时间花费过多的问题。JVM是怎么解决这个问题的呢?一个简单的思路就是发生跨代引用的时候将这个引用关系记录下来到一个集合里,JVM就是这么做的,这个集合叫卡表,且不同的回收器有不同的记录方式。对于CMS回收器,卡表会记录一段内存是否被老年代引用了,每个记录的大小为512个字节。而对于G1回收器,因为是分region划分的,所以还需要记录该指针存在于

2021-08-27 20:20:33 952 1

原创 dubbo的那些高可用机制

dubbo的那些高可用机制作为经典的RPC框架,dubbo除了简单的服务远程调用功能,还会有哪些机制来保证它的高可用呢?1. 注册中心宕机由于我们的注册中心使用的是zookeeper、redis等,是有可能出现宕机情况的,那么dubbo中是如何在注册中心宕机的情况下继续服务的呢?本地缓存注册中心仅仅是提供了我们发现服务ip和port的功能,但如果我们已经知道了服务提供者的ip和port那么为什么还需要注册中心呢?所以,在每一次的服务发现之后,dubbo都会将服务对应的节点信息保存在本地缓存,

2021-08-27 20:19:34 213

原创 2021-08-27 dubbo整体框架

dubbo整体框架1. 业务层 business该层主要包含了我们的的业务代码是如何调用接口的。2. RPC层该层包含的是我们的服务注册与发现机制,分为如下几个子层config 初始化层 读取配置文件,完成dubbo的初始化proxy 代理层 为了使我们的远程调用像本地调用一样自然,我们可以使用代理模式来将服务的具体实现换为远程调用,dubbo为我们实现了两种代理模式 : javassist代理和jdk动态代理。Registry 注册中心层 该层包含了注册中心的具体实现,同理 dubb

2021-08-27 20:18:55 83

原创 [Linux学习]实战系列之进程管理

[Linux学习]实战系列之进程管理查看运行中的进程信息查看进程信息的命令有很多,参数也一大堆,我们这里主要分享一些常用的命令+参数和它们的作用psps最为简单的命令是ps,我们可以直接执行获得当前会话中打开的进程,信息也非常简略,只有进程号、运行时间、终端名等ps -ef | grep 我们经常使用此命令来查看特定名称的进程(包括了所有进程),并且包含更多的信息ps aux此命令与 ps -ef的区别在于增加了进程对资源的使用情况ps -H加上-H参数会显示线程信息

2021-06-11 22:57:02 137 1

原创 [linux学习] 实战系列之日志分析

[linux学习] 实战系列之日志分析之前有系统的学习过shell命令,但是过会儿就忘得一干二净,只记得cd、ls这些常用命令,果然这些东西还是要带着目的的去用才会熟悉,所以就有了这个实战系列,主要是根据不同的场景来带着目的的去用一下我们常用的命令。分析什么日志分析日志分析日志,首先我们得找一段日志吧,日志内容无所谓,千篇一律嘛,我这里在服务器上找了我mysql的错误日志来分析。error.log:2021-03-27T14:45:57.543470Z 1 [System] [MY-013576]

2021-06-11 22:56:18 825 1

原创 [操作系统的故事] 2.进程管理的故事

进程管理的故事这次我们来将一个关于进程管理的故事。。。什么是进程管理操作系统是替我们管理硬件的软件,所以与其说是进程管理,倒不如说是CPU管理来的贴切。为什么要对CPU进行管理呢?1.屏蔽CPU进行编程, 市面上的cpu那么多,我们每次换一块cpu执行就要更改我们的代码,很不方便。2.对cpu的管理复杂且不安全, 我们希望能直接调用一个接口而不去管其中的细节。所以,我们需要操作系统提供一个安全且可靠的机制来帮我们执行我们的程序。一个简单的版本:直接执行作为一个最简单且直接的思路,我

2021-06-08 22:33:52 193 1

原创 [操作系统的故事] 1. 内存管理的故事

操作系统复习(一)内存管理的故事这是一个关于操作系统内存管理的故事内存管理是什么故事从我们需要运行一个程序开始说起。。。我们知道,我们写完编译后的程序是保存在磁盘中的,那么CPU怎样才能访问到我们的程序并执行呢?由于CPU只能访问到内存空间,所以我们需要将磁盘中的程序拷贝到内存,然后将该程序中每一条指令的物理地址交给CPU,CPU才能不断地取址执行。这就是操作系统的内存管理。并且引出了两个问题:我们的进程在物理内存中是怎样存在的CPU以怎样的方式来得到物理地址第一个版本:直接使用物理

2021-06-08 22:32:57 247 1

原创 2021-05-26 [MySQL] MySQL中的那些日志

Mysql中的那些日志今天来聊聊mysql中的哪些日志错误日志error log记录了mysql的启动、运行、关闭的一些信息,不仅是错误信息,错误日志也会记录一些警告信息或正确信息。SHOW VARIABLES LIKE 'log_error';定位错误日志。二进制日志bin log记录了所有对数据库进行更改的操作,主要的目的适用于复制和恢复。只有提交的事务才会记录到binlog,而binlog刷新到磁盘跟sync_binlog参数有关,若为0,则不控制该刷新,若为n,则等到提交n次事务后

2021-05-26 22:42:16 75

原创 2021-05-26 [MySQL] MySQL中的那些优化

Mysql中的那些索引和优化增删改查优化INSERT语句当有大量语句要插入时:将n条INSERT INTO Table (id, name, score) VALUES ('1', '张三',78)改为n/3条INSERT INTO Table (id, name, score) VALUES ('1', '张三',78), ('2','李四',80),('3','王五',90)这样就节省了解析的时间。插入时尽量按照主键的顺序执行考虑使用replace语句代替inser

2021-05-26 22:41:39 65

原创 2021-05-26 [MySQL] MySQL中的那些锁

MySQL中的那些锁为什么要有锁呢?其实跟我们在学java锁的目的是一样的,即保证一个数据在一定时间内只能被一个线程所修改。而根据锁的粒度,在mysql中可以分为3大类:表锁、行锁、页锁。页锁用的不多,这里就不讨论了。表锁顾名思义,表锁锁住的是一张表,MyISAM支持,优点是不会产生死锁,且开销小、速度快。在使用表锁时,我们首先需要获取我们需要的所有表锁:lock table testTable1 read, testTable2 write;上述操作对testTable表加了一把读锁,对

2021-05-26 22:40:41 90 1

原创 node学习(二)常见模块使用

node学习(二)常见模块使用上一章我们了解到,node的web服务使用起来较为繁琐,这就需要外部的模块进行一部分的封装,简化我们的代码1. express 处理请求安装该模块npm install express --save我们来看官网的介绍:Fast, unopinionated, minimalist web framework for node. // 快速,无偏见,最低限度的node网络框架。const express = require('express')cons

2021-05-13 17:38:21 116

原创 node学习(一)基本使用

node学习(一)node的基本使用Node是一个基于Chrome V8引擎的运行环境,使用了一个事件驱动、非阻塞式I/O模型,让JavaScript 运行在服务端的开发平台。1. 原理初探学一个框架时,弄清楚其原理是十分重要的,因为是初学,所以这里只给出了node的大体结构,深入探究将在最后几章给出。1.1 node架构:可以看到,除了node自己提供的标准库之外,node的底层操作主要由以下模块支持:Node bindings: 将调用的java方法传递到c++层面执行,执行完毕后回调

2021-05-13 17:37:03 1995 1

原创 rabbitMQ学习(二)高级特性与集群

rabbitMQ学习(二)高级特性与集群我们学习中间件的时候,入门往往是简单的(会用API就行了),但要做到对MQ的高可用与高性能,我们还得了解一下他的一些高级特性。rabbitMQ的高级特性保证MQ的可靠性学习过了TCP协议的同学都知道,TCP协议通过了确认机制、重传机制等等保证了数据传输的可靠性。招式是一样的,rabbitMQ也提供了差不多的机制来保证我们生产者的消息被消费者接收并正常使用。我们先来回顾一下rabbitMQ消息的发送流程(先考虑最简单的版本):可以看到我们的发送主要有三个

2021-05-13 17:21:24 141 1

原创 # rabbitMQ学习(一)入门使用

rabbitMQ学习(一)前言为什么要学习rabbitMQ?别问,必学。MQ是什么,有什么优势?“消息队列”是在消息的传输过程中保存消息的容器。 --百度百科简单来说,消息队列即在两个系统中用于消息传递的一个中间件,一般有三个角色消息中间件发送方(生产者)接收方(消费者)相比于让两个系统之间进行互相调用,使用MQ有如下优势:解耦 两个系统不会直接依赖,而是与消息中间件进行通信提速 发送方只需要将消息放入队列中即可返回,不用等待接收方的处理消峰 让接收方不会被动承担

2021-05-13 17:19:57 135

原创 netty学习(二)Netty线程模型与核心组件

netty学习(二)Netty线程模型与核心组件1.I/O线程模型1.1 传统阻塞IO模型传统阻塞IO模型就是每一个请求都需要一个线程来进行处理,这个处理包括两方面:连接的处理业务的处理有如下问题:当请求过多时,创建的线程也会过多,那么线程的切换也会很频繁,上下文处理造成资源浪费操作系统能处理的线程是有限制的,当线程达到限制后,新的请求就会被阻塞单个线程大部分时间都是阻塞的,因为此请求并没有数据可以读写,造成了资源浪费1.2 Reactor模型针对传统IO模型的问题:rea

2021-04-22 00:42:34 143

原创 netty学习(一)java原生IO

netty学习(一)JAVA中的IO方式1. 为什么要学习netty?别问,必学2. BIO、NIO、AIO这里再复习一下java中的三种IO模型,要将java中的IO模型,首先离不开操作系统中的IO模型2.1. 操作系统中的IO模型一次IO的过程包括两部分: 1. 内核空间接收到外来数据 2. 将内核空间的数据拷贝到用户空间供应用使用由此诞生了操作系统中的5种IO模型同步并阻塞在该模型下,每一个线程在调用读取函数之后就一直进入阻塞,直到读取到数据同步非阻塞与上面不同,每一个线

2021-04-22 00:40:00 122

原创 高性能mysql阅读笔记(三)服务器性能剖析

高性能mysql阅读笔记(三)服务器性能剖析性能优化简介我们可能会听到很多很多的性能指标(qps,吞吐率,cpu利用率等等)在这里,我们单纯的将性能定义为响应时间,而性能优化即在一定的工作负载下尽可能的降低响应时间。所以,重中之重即找出时间都花费到了哪些地方,即性能剖析。性能剖析包括两个步骤测量任务的花费时间对花费时间进行排序剖析Mysql查询原著中在此章之前还加了一章对ph应用的性能剖析,由于这里我们只关注mysql,所以感兴趣的可以查看原著(其实是我不懂php哈哈)mysql的性

2021-04-11 21:49:29 93

原创 高性能mysql阅读笔记(二)mysql基准测试

高性能mysql阅读笔记(二)MySQL基准测试测试指标1.吞吐量在数据库中,吞吐量指的是单位时间内的事务处理数,单位是TPS(每秒事务数)2.响应时间通常使用百分比响应时间,如95%5ms3.并发性并发性基准测试需要关注的是正在工作中的并发操作,或者是同时工作中的线程数或者连接数。当并发性增加时,需要测量吞吐量是否下降,响应时间是否变长,如果是这样,应用可能就无法处理峰值压力。4.可拓展性可拓展性指的是,可系统增加一倍的工作,在理想情况下能得到两倍的吞吐量,用于发现应用的

2021-04-11 21:03:17 89

原创 高性能mysql阅读笔记(一)mysql的架构与历史

高性能mysql阅读笔记(一)mysql架构与历史前言对于mysql的学习,博主一直局限于本科课堂的数据库知识,然后就是零零碎碎的阅读一些书籍的部分章节,没有系统的学习过,所以在这里再挖个坑,之后会陆陆续续的把这本高性能mysql读完,笔记为证。mysql的逻辑架构[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DxqfDQfJ-1618146150944)(uploads/image-20210410224823785.png)]如上图所示,mysql的逻辑结构分为

2021-04-11 21:03:00 78

原创 分布式学习(三)用docker搭建zookeeper集群

分布式学习(三)用docker来搭建自己的zookeeper集群!前言作为一个穷学生,自然是租不起集群环境的,租不起咋办呢?一般都有两种解决方案来模拟集群搭建虚拟机来模拟集群: 这种方式能最大程度的模拟在单机下模拟集群,但是极其消耗磁盘,我果断放弃用端口号来模拟多主机:这种方式只是单纯的执行了多个zookeeper应用作为轻量级的虚拟机,我选择容器来模拟集群环境,有如下优点:部署方便: 制作一个镜像,然后创建容器即可,不用对每一个容器再安装环境轻量:一个容器也就占用几百兆注:

2021-04-10 12:11:42 205

原创 分布式学习(二)zookeeper原理

Zookeeper原理剖析1. 理论分析一个分布式架构的目标,就是保证集群内数据的一致性,那么zookeeper保证了什么样的数据一致性?又是怎么保证的呢?1.1 数据一致性数据一致性一般包含三种:强一致性、弱一致性和最终一致性强一致性所谓强一致性,就是集群内每一个节点读取时都要保证是最新的数据,所以要实现强一致性就会使得每一次写操作执行后集群都会被阻塞来进行同步,效率较低。弱一致性在弱一致性下,集群内每一次读写都不需要保证为最新。最终一致性最终一致性不保证每一次读写为最新,

2021-04-10 12:09:06 144

原创 分布式学习(一)初识分布式

分布式学习(一)初识分布式架构1. 网站应用的演进自互联网发展以来,网站应用的规模在不断的扩大,为了让网站应用的处理能力增强,单机的应用部署已经不能满足高并发、高可用的要求。同时,业务的拓展性也使得我们急需一个治理系统确保我们的架构有条不紊的进行。上图是互联网网站应用的演进,分为如下过程:单一应用架构在我们学习初期,往往只考虑整个系统的可用性,通常之开发单个应用,将所有的功能部署在一起,同时不需要太多成本,我们只需要关注数据的增删改查。垂直应用架构当访问量逐渐增大,同时为了整个系统

2021-04-10 12:08:01 340

原创 后端开发技能学习(十)redis学习(下篇)

文章目录后端开发技能学习(十)redis学习(下篇)哨兵基本概念实现原理三个定时任务领导者选举故障转移集群数据分布理论数据库的分库分表切分方式缓存中的常见问题过期淘汰策略穿透优化无底洞优化雪崩优化热点key重建优化bigkey优化热点key优化后端开发技能学习(十)redis学习(下篇)哨兵基本概念在上一章节中,我们学习到了redis的主从模式,在这种模式下,redis能接收高并发的读操作,但这种模式同样也会产生一定的问题。主节点如何产生,发生故障怎么办?从节点发生故障,其他节点如何得知和恢复

2021-04-05 16:24:56 86

原创 SpringMVC学习(二)

SpringMVC学习(二)1. 响应数据和结果视图1.1 返回类型a. 字符串类型转发到该字符串解析得到的视图中,通过model对象将数据存放到request域中@RequestMapping(path="/response")public String response(Model model){ user u = new user(); u.setAge(23); u.setName("lzr"); u.setSex("男"); model.add

2021-02-02 22:37:00 70

原创 Spring MVC学习 (一)

Spring MVC学习 (一)1. 概念1.1 三层架构C/S架构:客户端/服务端架构B/S架构:浏览器/服务端架构服务器端三层架构 1.2 MVC模型M model: 模型 (javaBean)V View: 视图 (JSP)C Controller: 控制器 (servlet)1.3 Spring MVC概念:基于java的实现MVC设计模型的请求驱动类型的轻量级Web框架 其他的(structs2)通过一套注解,让一个简单的Java类成为

2021-02-02 22:36:06 80

原创 mysql进阶笔记 InnoDB (一)InnoDB存储引擎

文章目录mysql进阶笔记 InnoDB (一)InnoDB存储引擎InnoDB体系架构后台线程内存Checkpoint技术Master Thread工作方式InnoDB关键特性插入缓冲(Insert Buffer)两次写(Double Write)自适应哈希索引(Adaptive Hash Index)异步IO(Async IO)刷新邻接页(Flush Neighbor Page)mysql进阶笔记 InnoDB (一)InnoDB存储引擎InnoDB体系架构1.内存池:维护进程/线程访问的数据结

2021-01-12 10:55:56 161 1

原创 Java进阶(四)类加载机制

文章目录Java进阶(四)类加载机制类加载机制什么时候加载类加载过程类加载器Java进阶(四)类加载机制类加载机制什么是类加载?在java中,我们在写完代码后,为了做到跨平台,编译器不会直接将代码编译为机器码,而是将java文件转换为字节码文件(.class),然后将字节码文件交予不同平台下的java虚拟机。而这一阶段起作用的就是类加载机制。更为专业的说法:虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就

2021-01-05 19:51:33 105 2

原创 Java 进阶(三)动态代理

文章目录Java 进阶(三)动态代理代理模式定义作用静态代理动态代理Java 进阶(三)动态代理要想学习动态代理,首先我们得了解一下代理模式。代理模式定义代理模式给某一个对象提供代理对象,并由代理对象控制对原对象的引用。举个例子,tx想用游戏赚钱,但是自己又设计不出好的游戏,于是跟拳头公司协商,拿下LoL中国区的代理。这样tx就不用再去关心新英雄新皮肤的设计、游戏更新等等问题,只需要关心英雄和皮肤怎么卖才赚钱就行了(狗头保命)。作用那么为什么要用代理模式呢?还是回到刚刚的栗子,tx拿到代

2021-01-05 10:10:11 106

原创 Java进阶(二)并发(上篇)

文章目录Java进阶(二)并发(上篇)并发设计原理基本概念并发中的问题并发设计模式Thread和Runnable管理大量线程:执行器Executor使用返回值控制任务调度共享受限资源synchronized关键字lock对象原子性与易变性Java进阶(二)并发(上篇)并发设计原理基本概念1.并发与并行并发:在单个处理器上采用单核执行多个任务。并行:同一时间在不同计算机、处理器或者处理器核心上同时运行多个任务。2.同步同步:一种协调两个或更多任务以获得预期结果的机制同步机制:信号量、监视器

2020-12-30 14:13:23 114

原创 Java进阶(一)注解

Java进阶(一)注解概念与语法注解的概念注解(元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便的使用这些数据。简单来说,我们首先可以把注解理解为一种注释,即解释我们的方法,或者说为该方法提供一个标签。那为什么要用注解而非注释呢?我的理解是:注释是给开发者理解代码而存在的,但是注解则是为了让我们的代码自己能够理解代码而存在的。在java se5版本中,内置了三种注解:@Override,表示当前的方法定义将覆盖超类中的方法。如果不小心拼写错误或者方法名对

2020-12-26 18:13:01 110

原创 后端开发技能学习(十)redis学习(中篇)

文章目录后端开发技能学习(十)redis学习(中篇)客户端Java客户端jedispython客户端redis-py持久化RDBAOF问题定位与优化多实例部署复制配置原理阻塞发现阻塞内因外因后端开发技能学习(十)redis学习(中篇)客户端redis中的客户端与服务端通信采用的RESP协议,该协议基于TCP协议,协议格式如下:发送命令格式:*<参数数量> CRLF$<参数1的字节数量> CRLF<参数1> CRLF...$<参数N的字节数量>

2020-12-17 22:04:18 205

原创 后端开发技能学习(九)redis学习(上篇)

文章目录后端开发技能学习(九)redis学习(上篇)安装与使用入门基础命令数据类型后端开发技能学习(九)redis学习(上篇)安装与使用入门基础命令先来点基础命令SELECT n # 选择字典(默认有16个字典) n代表字典序号默认字典为0号KEYS * # 通过通配符来匹配并显示键值TYPE key # 查看键值的数据类型SET key value # 新建键对值DEL key # 删除键对值GET key # 获得值EXISTS key # 判断键是否存在数据类型1.字符串

2020-12-15 21:40:38 239

原创 后端开发技能学习(七)sql命令学习(中篇)

文章目录后端开发技能学习(七)sql命令学习(中篇)1.创建计算字段1.1 拼接字段1.2 使用别名1.3 执行算数运算2. 数据处理函数文本处理函数日期和时间处理函数后端开发技能学习(七)sql命令学习(中篇)1.创建计算字段一般来说,存储在表中的数据不是应用程序所需要的,而在客户机上对这些数据进行转换的效率远远不如在数据库中的处理。1.1 拼接字段拼接: 将值联结到一起构成单个值使用Concat()函数可以拼接两个列:栗子:SELECT Concat(vend_name,'(',vend

2020-10-08 21:43:30 111 1

原创 后端开发技能学习(六)sql命令学习(上篇)

文章目录后端开发技能学习(六)sql命令学习(上篇)数据库基础检索排序检索过滤where子句过滤组合过滤通配符过滤后端开发技能学习(六)sql命令学习(上篇)数据库基础数据库:保存有组织的数据的容器表:某种特定类型数据的结构化清单列:表中的一个字段。所有表都是由一个或多个列组成的行:表中的一条记录主键:一列(或一组列),其值能够唯一区分表中的每个行,主键需满足:1.任意两行都不具有相同的主键值 2.每个行都必须具有一个主键值(不能为null)sql:结构化查询语言,用来与数据库通信检索要

2020-10-02 09:49:47 113

原创 Java算法与数据结构系列(一)排序 sort

文章目录Java算法与数据结构系列(一)排序 sort选择排序冒泡排序快速排序Java算法与数据结构系列(一)排序 sortgithub上发现一个算法与数据结构学习的仓库,而且是用java实现的,开个专栏来学习一下。。。代码会同步到github:----------------------------分割线------------------------------为了代码的规范性,我们先来写一个排序的接口吧package sort;/** * sort interface // 排序 ja

2020-09-16 10:59:03 198

原创 后端开发技能学习(五)java垃圾回收机制

文章目录后端开发技能学习(五)java垃圾回收机制垃圾的定义引用计数法可达性分析算法java内存区域垃圾怎么回收标记-清除算法复制算法标记整理算法内存模型与回收策略后端开发技能学习(五)java垃圾回收机制垃圾的定义本章介绍怎样判别一个对象是否是垃圾。引用计数法引用计数法通过在对象头中分配一个空间来保存该对象被引用的次数。若该对象被其它对象引用,则引用计数+1;若删除该对象的引用,则引用计数-1;当引用计数为0时,就会回收该对象。缺点:当有两个对象相互引用时将导致引用计数永不为0。可达性

2020-09-14 22:30:58 122

原创 后端开发技能学习(三) shell常用命令

文章目录后端开发技能学习(三) shell常用命令查找findgrep正则表达式常见用法压缩磁盘权限进程其他后端开发技能学习(三) shell常用命令查找findfind用于对文件进行查找格式:find pathname -options [-print -exec -ok …]参数:pathname:目录options:选项-print:输出匹配结果-exec:对匹配的文件进行操作-ok:同上,不过会给出提示option含义-name按文件名查找-per

2020-09-07 10:02:36 245

原创 后端开发技能学习(二) shell基础学习

文章目录后端开发技能学习(二) shell基础学习环境搭建语法变量的定义与使用运算控制容器方法文件文件读取目录的读取文件写入sed流编辑模块输入和菜单后端开发技能学习(二) shell基础学习环境搭建1.linux下可以直接执行shell2.windows下需要安装虚拟服务软件,如果你看了上一篇博文(https://editor.csdn.net/md/?articleId=108312144),那么你可以直接用gitbash来执行shell话不多说,先来写个hello world:$ vi t

2020-09-03 12:57:21 207

空空如也

空空如也

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

TA关注的人

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