自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

AngelCG的博客

学习随笔

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

转载 Linux curl命令最全详解

目录一、最常用的curl命令1、发送GET请求2、发送POST请求3、发送json格式请求:二、curl命令语法与curl命令参数详解1、curl命令语法2、curl命令参数详解三、Linux curl命令退出码四、常见用法1、下载(option:-o或者option:-O)2、上传文件(option:-T)3、伪造来源页面|伪造referer|盗链 (option:-e)4、伪造代理设备(模仿浏览器)5、设置http请求6、http响应头7.

2021-10-09 17:20:18 270367 6

原创 es&kibana 环境搭建

一.ES环境搭建1.elasticsearch 下载(1) 官网下载自己要用的版本:https://www.elastic.co/cn/downloads/elasticsearch2.elasticsearch 安装(1) 解压安装(2) 配置文件修改, /elasticsearch/config/elasticsearch.yaml, 修改服务ip, 端口号等注意⚠️配置文件修改,默认端口号为:9200, transport 连接方式端口号为9300。es连接方式有两种,htt

2021-09-07 13:26:29 760

转载 微软最新Windows系统 Windows 11页面

原文:https://juejin.cn/post/6974962306337734663?utm_source=gold_browser_extension首先最直观的就是底部任务栏中的应用图标都默认放在了中央,不过系统中可以设置到大家习惯的左下角。菜单栏里有设置、文档、多任务窗口、后台、搜索、*Widgets*等应用。点第一个是菜单项,点击会弹出一个面板,上面都是一些应用,左上角有 All apps可以查看所有的应用列表。...

2021-06-22 20:40:17 1592

转载 容器化部署方案 - docker

0. 前言dokcer是什么?dokcer是用Go语言开发的应用容器引擎,基于容器化,沙箱机制的应用部署技术,可适用于自动化测试、打包,持续集成和发布应用等场景。docker基于容器化,沙箱机制,可使用较少的命令和脚本快速部署应用,一次构建,多处移植使用。再配合shell等脚本语言,可实现脚本化一键部署docker 大部分都是依赖于命令执行的,简单易上手docker现在已经成为比较受欢迎的serverless(无服务器架构)服务的基础架构。包括阿里云、亚马孙在内的云计算服务商都采用docker来打

2021-06-17 17:13:57 1492

原创 Golang 垃圾回收

一.什么是垃圾回收?内存泄漏过去一般的发现的方式:内存泄漏监测工具: 这种工具的原理一般是静态代码的扫描,通过扫描程序检测可能出现内存泄露的代码段,然而检测工具难免有疏漏和不足, 只能起到辅助作用。智能指针:是C++中引入的自动内存管理方法,通过拥有自动内存管理功能的指针对象来引用对象,是程序员不太关注内存的释放,而达到内存自动释放的目的。这种方法是采用最广泛的做法,但是对于程序员来说有一定的学习成本,而且一旦有忘记使用的场景仍然会有内存泄露。为了解决这方面的问题,后来开发出来的几乎所有的语言都有

2021-06-02 14:12:47 143

原创 Redis源码分析--- 对象

Redis源码分析--- 对象前边陆续介绍了Redis用到了所有的主要数据结构,比如简单动态字符串(SDS)、双端链表、字典、压缩列表、整数集合等等。Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象,每个对象都用到了至少一种前边介绍的数据结构。通过这五种不同类型的对象,Redis可以在执行命令之前,根据对象的类型来判断一个对象是否可以执行给定的命令,适用对象的另一个好处是,我们可以针对不同的使用场景,为对象设置多种不同的数据结构实现,从而优化对象在不同场

2021-04-23 16:24:34 103

原创 Redis源码分析--- 压缩列表

Redis源码分析--- 压缩列表压缩列表(ziplist)是列表键和哈希键的底层实现之一。当一个列表键只包含少量列表项,并且每个列表项要么就是小整数值,要么就是长度比较短的字符串,那么Redis就会使用压缩列表来做列表键的底层实现。列表里面包含的都是1、3、5、10086这样的小整数值,以及‘hello’、‘world’这样的短字符串。另外当一个哈希键只包含少量键值对,并且每个键值对的键和值要么就是小整数值,要么就是长度比较短的字符串,那么Redis就会使用压缩列表来做哈希键的底层实现。.

2021-04-23 16:21:19 150

原创 Redis 源码分析--- 整数 集合

Redis 源码分析--- 整数 集合整数集合是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合元素数量不多时,Redis就会使用整数集合作为集合键的底层实现。举个例子,如果我们创建一个只包含五个元素的集合键,并且集合中所有元素都是整数值,那么这个集合键的底层实现就会是整数集合: 整数集合的实现整数集合是Redis用于保存整数的值的集合抽象数据结构,它可以保存类型为int16_t、int32_t、或者int64_t的整数值,并且保证集合中不会出现重复元素。每个int..

2021-04-23 16:20:10 72

原创 Reids源码分析--- 跳跃表

Reids源码分析--- 跳跃表跳跃表是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。跳跃表支持平均O(logN)、最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点。在大部分情况下,跳跃表的效率可以和平衡树相媲美,并未因为跳跃表的实现比平衡树要来得更为简单,所以有不少程序都适用跳跃表来代替平衡树。Redis使用跳跃表作为有序集合的底层实现之一,如果一个有序集合包含的元素数量比较多,又或者有序集合中元素的成员是比较长的字符串时,Re

2021-04-23 16:19:03 71

原创 Redis源码分析--- 字典

Redis源码分析--- 字典字典又称为符号表(symbol table)、关联数组(assocoative array)或映射(map),是一种用于保存键值对(key-value pair)的抽象数据结构。在字典中,一个键(key)可以和一个值(value)进行关联(或者说将键值映射为值),这些关联的键和值就称为键值对。字典中每个键值都是独一无二的,程序可以在字典中根据键值查找与之关联的值,或者通过键来更新,又或者根据键来删除整个键值对,等等。字典经常作为一种数据结构内置在很多高级编程语言

2021-04-23 16:17:44 138

原创 Redis源码分析--- 链表

Redis源码分析--- 链表链表提供了高效的节点排重能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地调整链表长度。作为一种常用数据结构,链表内置在很多高级的编程语言里面,因为Redis使用的C语言并没有内置这种数据结构,所以Redis构建了自己的链表实现。链表在Redis中的应用非常广泛,比如列表键的底层实现之一就是链表。当一个列表键包含了数量比较多的元素,又或者列表中包含的元素都是比较长的字符串时,Redis就会使用链表作为列表键的底层实现。integer列表键值的底层实现就

2021-04-23 16:14:21 68

原创 Redis源码分析--- String

Redis源码分析--- String 简单动态字符串(simple dynamic string,SDS),它和C字符串不一样,C字符串只会作为字符串字面变量用在一些无须对字符串值进行修改的地方,比如打印日志的地方。 当Redis需要的不仅仅是一个字符串字面变量,而是一个可以被修改的字符串值时,Redis就会使用SDS来表示字符串值,比如在Redis的数据库里面,包含字符串值的键值对在底层都是由SDS来实现的。 SDS的定义每个sds.h/sdshdr结构表示一个SDS值:...

2021-04-23 16:11:44 196

转载 群消息发送接收项目设计以及一些注意问题

【需求缘起】之前的文章更多的聊了单对单的消息投递:《微信为什么不丢消息?》《http如何像tcp一样实时的收消息?》群聊是多人社交的基本诉求,不管是QQ群,还是微信群,一个群友在群内发了一条消息:(1)在线的群友能第一时间收到消息(2)离线的群友能在登陆后收到消息由于“消息风暴扩散系数”的存在(概念详见《QQ状态同步究竟是推还是拉?》),群消息的复杂度要远高于单对单消息。群消息的实时性,可达性,离线消息是今天将要讨论的核心话题。【常见的群消息流程】开始讲群消息投递流.

2020-09-23 08:53:16 611

原创 Kilim框架的简单学习

Kilim框架Kilim 框架在实现这个语义特性时干了以下几个事情:利用字节码技术,将普通代码转换为支持协程的代码 调用Pasueable方法的时候,如果暂停了就保存当前方法栈的State,暂停执行当前Task,将控制权交给Scheduler调度器 Scheduler 调度器负责协调其他就绪的Task 之前暂停的Task恢复的时候,自动恢复State,恢复到上次执行的位置继续执行其...

2019-02-26 16:04:06 2715

原创 Java 中协程的简单介绍

协程的简单介绍协程是比线程更轻量级的程序处理单元,也可以说是运行在线程上的线程,由自己控制1.适用于被阻塞的,且需要大量并发的场景2.不适用于,大量计算的多线程,遇到此情况,更好使用线程去解决虽然Java的线程的API封装的很好,使用起来非常的方便,但是使用起来也得小心。首先线程需要耗费资源,所以单个的机器上创建上万个线程很困难,其次线程之间的切换也需要耗费cpu,在线程非常多的情...

2019-02-26 15:59:52 794

原创 PHP中的错误处理以及异常处理

一.php错误处理的三种方式A:简单的die()语句等价于exit();B:自定义错误和错误触发器1.错误处理器(自定义错误,一般用于语法错误处理)创建一定义错误函数(处理器),该函数必须有能力处理至少两个参数(error_level和error_message),但是可以接受最多五个参数(erroe_file,error_line,error_context)语法:fu...

2019-02-26 15:55:04 414

原创 Servlet的生命周期及工作原理

Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。 Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Ser...

2019-01-03 21:04:41 180

原创 请求转发与重定向的区别

请求与转发:        比喻:            请求转发:                    A向B发送请求,想让B帮忙完成一项工作,当B接收到请求后发现自己完成不了,于是B请C帮忙,C接收到B的请求后最终完成了该项工作,并把最后的结果返回给A。此过程A只发送了一次请求给B,A只知道把请求发给B,至于B是怎么完成的A并不关心,他只等待最终的结果。           ...

2019-01-03 20:54:50 132

原创 IO流解析

同步、异步。。。同步:当用户发出IO请求操作之后,如果数据没有就绪,需要通过用户线程或者内核不断地去轮询数据是否就绪,当数据就绪时,再将数据从内核拷贝到用户线程;异步:只有IO请求操作的发出是由用户线程来进行的,IO操作的两个阶段都是由内核自动完成,然后发送通知告知用户线程IO操作已经完成。也就是说在异步IO中,不会对用户线程产生任何阻塞。注:同步IO和异步IO的关键区别反映在数据拷贝...

2019-01-03 20:45:56 117

原创 序列化和反序列化

序列化、反序列化序列化:指把堆内存中的Java对象数据,通过某种方式把对象存储到磁盘文件中或者传递给其他网络节点。这个过程称为序列化。通俗来说就是将数据结构或对象转换成二进制串的过程。反序列化:把磁盘文件中的对象数据或者把网络节点上的对象数据,恢复成Java对象模型的过程。也就是将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程。序列化的目的:(1)在分布式系统中,此时需...

2019-01-02 10:05:34 124

原创 静态内部类和非静态内部类的比较

静态内部类和非静态内部类的区别静态内部类只能访问外部类的静态成员和静态方法非静态内部类不管是静态方法还是非静态方法都可以在非静态内部类中访问静态内部类和非静态内部类主要的不同:(1)静态内部类不依赖于外部类实例而被实例化,但非静态内部类需要在外部类实例化后才可以被实例化(2)静态内部类不需要持有外部类的引用。但非静态内部类需要持有对外部类的引用(3)静态内部类不能访问外部类...

2019-01-02 10:02:14 2637

原创 final、finally、finalize 的区别

final的使用方式:1、final修饰的类不能被扩展,也就是不能有子类(即不能被继承)2、final修饰的方法不能被替换或者隐藏:(即final修饰的方法不能被重写)1)使用final修饰的实例方法在其所属类的子类中不能被替换(被重写)2)使用final修饰的静态方法在其所属的类的子类中不能被重定义(redifned)而隐藏(hidden)3、使用final修饰的变量最多只能...

2019-01-02 09:59:53 123

原创 static的使用方式

static的使用方式:1、修饰类(静态内部类)修饰的静态内部类只能使用外部类的静态成员和静态方法2、修饰成员变量(静态变量)静态变量属于类,只要静态变量所在的类被加载,这个静态变量就会被分配空间,在内存中只有一份,所有对象共享这个静态变量。使用有两种方式:一个是类名.静态变量,还有一种是对象.静态变量 。特别注意:不能在方法体中定义静态变量(无论该方法是静态的或是非静态的)。VS...

2019-01-02 09:57:46 306 3

原创 抽象类与接口

接口和抽象类1.语法层面上的区别1)抽象类可以提供成员方法的实现细节(注:可以只包含非抽象方法)、普通方法,而接口只能存在public abstract 方法,方法默认是public abstract的,但是,java 8中接口可以有default方法2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final 类型的3)抽象类中可以有静态...

2019-01-02 09:23:16 295

原创 Java 的三大特性

Java面向对象的是三个特征与含义封装:属性的封装和方法的封装。把属性定义为私有的,get()、set()方法。好处是信息隐藏和模块化,提高安全性。封装的主要作用在于对外隐藏内部实现细节,增强程序的安全性。继承:子类可以继承父类的成员变量和成员方法。继承可以提高代码的复用性。继承的特性:1.单一继承2.子类只能继承父类的非私有成员变量和方法3.成员变量的隐藏和方法的覆盖...

2019-01-02 09:18:07 1064 2

原创 行为型设计模式

一、职责链职责链模式: 使用多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。职责链模式结构图abstarct class Handler{protect Handler successor;public void SetSuccessor(Handler successor){...

2019-01-01 11:08:33 111

原创 结构型设计模式

一、代理模式代理模式结构体代理模式:为其他对象提供一种代理以控制对这个对象的访问。abstract class Base{public abstract void method();}class Source: public Base{public method(){Console.WriteLine("真实的实体类");}}class Prox...

2019-01-01 10:59:43 143 3

原创 创建型设计模式

简单工厂、工厂、抽象工厂设计模式一、简单工厂简单工厂结构图class Product{public:virtual void Do();};class ProducA :public Product{public:void Do(){ocut<<"class ProductA"<<endl;}};class Produ...

2019-01-01 10:53:52 184

原创 设计模式总结

设计模式1、设计原则1)开闭原则-----对扩展开放、对修改关闭2)高内聚、低耦合、尽量减少类之间的转换关系3)提高软件的可用性2、设计模式的分类 范围 创建型 结构型 行为型 类 Factory Method(工厂方法) Adapter(...

2019-01-01 10:51:29 82

原创 MYSQL explain详解

MYSQL explain详解explain显示了mysql如何使用索引来处理select语句以及连接表,可以帮助选择更好的索引和写出更优化的查询语句。先解析一条sql语句:EXPLAIN SELECT s.uid,s.username,s.name,f.email,f.mobile,f.phone,f.postalcode,f.addressFROM uchome_space A...

2018-12-29 10:56:11 17536 2

原创 TCP 三次握手、四次挥手以及安全传输

TCP协议使用连接管理、流量控制、拥塞控制三大机制来保证可靠性传输三次握手:开始客户端处于 close  初始关闭状态客户端:发送SYN=1(表示请求连接),seq=x(申明自己序号为x)之后客户端处于 syn_sent  表示已经发送syn报文开始服务器处于listen    监听状态,可以接受连接服务器:响应SYN=1(表示可以连接),ACK=1 (响应确认连接),...

2018-12-29 10:47:54 630

原创 一个完整的URL 解析过程

网页解析的全过程1、用户输入网址,浏览器发起DNS查询请求用户访问网页,DNS服务器(域名解析系统)会根据用户提供的域名查找对应的IP地址域名解析服务器是基于UDP实协议实现的一个应用程序,通常通过监听53端口来获取客户端的域名解析请求。DNS查找过过程如下:浏览器缓存-浏览器会缓存DNS记录一段时间。有趣的是操作系统没有告诉浏览器存储DNS记录的时间,这样不同浏览器会记录他们各自...

2018-12-29 10:35:17 22421

原创 php中的日期格式

 date(“Y/m/d”);//输出当前日期以下几种输出格式以及各个字母代表的格式date("Y-M-D"); //2018-Nov-Satdate("Y-m-d"); //2018-11-17注意:年份:Y------表示年份y-------表示年份(数字表示,两位数表示 如:99)L-------表示是否为闰年,是闰年为1,否则为0z-------表示...

2018-12-29 10:32:05 518

原创 linux sudo 命令的使用

在linux系统中,由于root的权限过大,一般情况都不使用它。只有在一些特殊情况下才采用登录root执行管理任务,一般情况下临时使用root权限多采用su和sudo命令。一、su和sudo命令对比: 在普通用户下输入su命令后,会提示输入root账户的密码,然后就进入特权模式(跟用root登录系统完全一样),输入exit或者su - user 退出:$ su - Password:...

2018-12-29 08:39:13 316

原创 int和Integer的简单比较

int与Integer的区别 1.属于四类八种基本类型中的一种,用int 声明的变量是非对象类型,即不能在其上调用方法。 2.Integer是一个类(包装类),用Integer声明变量其实一个对象类型(或者是一个引用类型)应用长出现的问题:将int 类型的数据和Integer类型的数据进行比较

2018-07-07 12:01:27 341

原创 java网络编程复习

1、多线程的并发同步?(1)多线程的同步:线程同步就是当线程发出一个功能调用时,在没有有得到结果之前,该调用不会返回,其他线程也不能调用该方法。(2)并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。其中两种关系分别是同步和互斥。同步就是进城之间的关系不是相互排斥临界资源的关系,而是相互依赖的关系。金玉不说明就是:就是前一个进程的输...

2018-07-07 11:40:17 903

原创 简单查找算法

一、顺序查找:(静态查找) 一个一个查找,基于线性表的查找,时间复杂度为O(n),查找成功时次数不超过n int SortSearch(int a[],int c) { for(int i=0;i  if(a[i]==c){    printf("查到了你想要的结果:%d",c);    return i;  }else{   printf("没

2018-01-22 03:03:47 734

原创 八种基本的排序算法

一.、直接插入排序算法(数组存储)1.n个待排元素,分成两部分,有序部分和无序部分2.初始:有序段:a[0]无序段:a[1]--a[n]3.算法实现思想从无序中取出一个元素a[i]和有序区间元素进行比较,并且将其插入合适的位置,插入位置之后的元素要后移。例:{3,2,5,8,4,7,6,9}{3}{2,5,8,4,7,6,9}

2017-12-23 11:24:48 337

空空如也

空空如也

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

TA关注的人

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