自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 TCMalloc详解

TCMalloc详解TCMalloc虚拟内存TCMalloc架构TCMalloc Front-endPer-thread模式Front-end缓存运行时大小小对象和大对象分配Middle-endTransfer CacheCentral Free listPagemap 和 Spans在`spans`中存储小内存对象TCMalloc Page SizesTCMalloc Back-endLegacy PageheapTCMalloc详细架构图本文部分内容是结合参考其他文章已经tcmalloc官方文档。T

2021-11-02 20:29:24 5782

原创 go语言中的Map

go语言中的Mapmap是什么创建mapmap的零值map之间的比较遍历map中的元素map中key的特点map中禁止对元素取地址使用map实现set作为参数传递map容量映射的特点映射在函数间的传递并发操作map的实现原理一般map的实现思路go中的map实现思路核心结构体`hmap`字段`buckets`核心结构体`bmap``hmap`和`bmap`的基本结构合起来溢出桶再次分析map的读map是什么​ 映射是一种数据结构,用于存储一系列无序的键值对。映射功能强大的地方是,能够基于键快

2021-10-21 09:14:27 934

原创 Go的数组和切片

Go的数组和切片Array什么是数组数组的特点怎么样使用数组在函数之间传递数组Slice切片的特性切片扩容slice初始化怎么样使用切片Array什么是数组数组是一个长度固定的数据类型,可以存储一段联系且数据类型相同的数据,可以是内置类型,也可以自定义类型。数组的特点数组在内存中的空间是连续分配的,由于内存连续,CPU 能把正在使用的数据缓存更久的时间。而且内存连续很容易计算索引,可以快速迭代数组里的所有元素。在访问数组时,可以提供需要在内存中移动的距离,所以访问非常快。数据一旦声明之后,它的

2021-10-19 16:23:02 189

原创 Go语言中的基础类型

Go 基础类型Numbers整型 Integers溢出整形之间的类型转换浮点型转整形会丢失精度八进制和十六进制浮点型 FloatMath包复数 complex布尔 Boolean字符串 Stringlen函数跟字符串处理的相关包在Go中数据类型可以分为4大类:基础类型:Numbers, strings, booleans.聚合类型:Array,structs.引用类型:Pointers,slices,maps,functions,channels接口类型:iterface这里讨论基础数据类型

2021-10-19 10:58:23 378

原创 责任链模式

什么是责任链模式责任链模式是一种行为设计模式,请求会被一个责任链按照顺序处理,每个处理器会处理请求并决定要不要将请求传给下个处理器。什么时候可以使用责任链模式当需要做一系列平行操作时,可以使用责任链模式。例如,需要对用户发表的评论和文章过滤,需要过滤政治敏感、色情相关、不文明等词语,这个时候就可以设计多个敏感词过滤器并组成责任链,将文章内容交给责任链进行处理。还有一个场景,当接受到一个用户的发起交易的请求时,可能会有多种鉴权的步骤需要进行,需要验证这个用户是否属于系统,这个用户是否合法,是否被冻结

2021-10-15 15:51:04 56

原创 观察者模式

什么是观察者模式观察者模式是一种行为设计模式, 允许你定义一种订阅机制, 可在对象事件发生时通知多个 “观察” 该对象的其他对象。##什么时候可以使用观察者模式当一个事件发生或者一个东西的状态发生了变化时,会有其他响应的事件被触发。例如,当一个用户在注册之后成为一个系统的用户时,系统可能会给他发邮件、发放一些优惠券并且同时去推荐用户一些内容。这个时候就可以使用观察者模式。又或者一些用户订阅了一个公众号,每当公众号有内文章发布时,这个用户就会受到相应的通知。这也是使用了关观察者模式。##观察者模式代

2021-10-15 15:48:10 46

翻译 Namespaces in Linux

Namespaces in Linux为什么使用Namespaces隔离进程Process Namespace 进程命名空间Linux Network NamespaceMount Namespace其它命名空间Cross-Namespace Communication 跨Namespace通信结论本文是翻译一篇国外博客的内容:https://www.toptal.com/linux/separation-anxiety-isolating-your-system-with-linux-namespace

2021-10-15 15:43:46 69

原创 Namespaces in Linux

本文是翻译一篇国外博客的内容:https://www.toptal.com/linux/separation-anxiety-isolating-your-system-with-linux-namespaces随着Docker、Linux Containers等工具的出现,把Linux进程隔离到进程所属的系统环境中变的很容易。让一组程序在不需要虚拟机的情况下,运行在一个真实的Linux机器上并且这些程序不会互相影响变的完全有可能。这些工具对于PaaS供应商来说如虎添翼。但是到底发生了什么在这种现象下.

2021-10-15 15:39:11 64

原创 使用Argo CD自动部署应用

运行环境OS: macOS Majave, Version 10.14.5Docker Desktop: Docker Engine v20.10.2.Kubernets: v1.19.3Argo CD: argocd: v1.8.5+d0f8edf.dirty在本地运行argoCD需要docker和kubernets运行环境下载Docker Desktop的地址 https://www.docker.com/products/docker-desktop.基于Docker Desktop运行

2021-02-27 13:03:50 1086

原创 基于Kubernetes运行argoCD

#运行环境OS: macOS Majave, Version 10.14.5Docker Desktop: Docker Engine v20.10.2.Kubernets: v1.19.3在本地运行argoCD需要docker和kubernets运行环境下载Docker Desktop的地址 https://www.docker.com/products/docker-desktop.基于Docker Desktop运行Kubernets的方法: https://www.jianshu.com

2021-02-27 11:54:56 386

原创 Kotlin-作用域函数

Kotlin提供了一些作用域函数,let run also apply takeIf takeUnless repeat withlet与run// 定义一个数据类data class Client(val name: String, var postalCode: Int)fun main(args: Array<String>) { val client =...

2020-04-19 15:31:39 184 1

原创 Kotlin-扩展属性

扩展属性是什么在Kotlin中,如果有需要的,扩展属性就是在类的定义之外添加一个字段。这个字段并不会被真正的添加到类中,所以这个字段不能被初始化,不能被放到构造器和初始化语句块中。扩展属性怎么样使用来看一段代码,如下:var StringBuilder.lastChar: Char get() = get(length - 1) set(value: Char) ...

2020-04-08 16:53:54 460

原创 Kotlin-扩展函数是什么

什么是扩展函数Kotlin提供了扩展函数的功能,使用扩展函数可以扩展一个类的功能不需要继承或者使用装饰者模式。扩展函数的使用方法我们可以为一个不能修改的类提供一个新的函数,然后进行调用。fun String.lastChar() : Char = this.get(this.length-1)...

2020-04-08 16:27:45 188

原创 Kotlin-对象声明(object)

对象声明的作用在Java中经常会使用到单例模式,定义一个使用private构造方法并且使用静态字段来持有这个类仅有的实例。例如:public class Singleton { public static Singleton instance = new Singleton(); private Singleton() { }}在Kotlin中,可以使用对...

2020-04-07 20:43:19 798

原创 Kotlin-数据类(data class)详解

数据类的作用在Kotlin中数据类能够帮助生成equals() hashCode() toString() copy()方法,不需要手动重写这些方法使用方法data class Client(val name: String, val postalCode: Int)equals() hashcode()方法会将所有在主构造方法内的属性纳入考虑。equals()方法会判断判断所有...

2020-04-07 12:46:15 2564 1

原创 BuildKite基本使用方法

BuildKite是什么BuildKite是一个CI/CD的工具,帮助团队在开发过程中持续集成、持续交付、持续部署。BuildKite怎么工作在Buildkite的体系中,可以分为两部分,一部分是Hosted Platform(托管平台), 另外一部分是On-Premises(内部部署).托管平台是BuildKite官方的服务,内部部署是需要手动去部署的,可以部署在本地机器、do...

2020-03-25 12:46:15 3815

原创 [Git] git rebase与merge的作用与区别

git rebase merge 的功能git rebase 和 gie merge 是git版本控制工具用来合并两个分支,这两个分支都进行了改变。git rebase merge的区别git merge在合并分支时,会将两个分支进行合并,并且产生一个新的提交。git rebase在合并分支时,会在master分支最后一次提交后面添加feature分支里面的修改。流程如...

2020-02-09 15:19:57 516

原创 Tomcat VS Jetty

Tomcat非常受欢迎的Apache开源项目 在开发社区中有很多资料 经过多年测试,验证和稳定,有多种版本可供选择 商业上成功,许多企业和政府组织都在使用它 易于与其他Java Web应用程序框架(如Spring框架)集成 Tomcat非常灵活且可扩展–可以通过TomEE,JBoss,WildFly扩展到企业支持Jetty使用更少的内存,更轻巧,从而提供速度和可伸缩性 可以轻...

2020-01-13 16:30:55 149

原创 为什么Spring Boot要内嵌服务器?

为什么Sprint Boot要内嵌服务器呢?想象一下如果要部署一个Java应用都需要做些什么呢?安装JDK 安装Web/Application服务器(Tomcat/Jetty etc) 部署war包如果我们想要简化这个流程,并且只要拥有Java运行环境就能够运行部署应用,要做些什么呢?在创建一个可部署的应用时,内嵌一个服务器,在Spring Boot创建一个应用时,会生产一个包含...

2020-01-13 16:24:39 610

原创 怎么样将一个Gradle项目转为Maven项目

最近碰到一个需求,要将Gradle项目转为Maven项目,怎么样转换呢?步骤如下第一步在IntelliJ IEDA中找到Add FrameWoke Support。在不同版本的IDEA位置可能不一样。点击之后进入到一个选择框,选择Maven并点击OK。第二步在build.gradle中添加maven插件,我这里使用的Kotlin。在生成pom.xml文件前又...

2020-01-03 13:36:22 2319

原创 面向对象与面向过程比较

面向过程编程与面向过程编程语言面向过程编程是一种编程范式或编程风格。它以过程(理解为方法、函数、操作)作为组织代码的基本单元,以数据(可以理解为成员变量、属性)与方法相分离为最主要的特点。面向过程风格是一种流程化的编程风格,通过拼接一组顺序执行的方法来操作数据完成一项功能。面向过程编程语言首先是一种编程语言。它最大的特点是不支持类和对象两个语法概念,不支持丰富的面向对象编程特性(比如继承、...

2019-12-23 16:19:53 105

原创 [面向对象学习笔记] 封装、抽象、继承、多态分别可以解决那些编程问题

封装是什么封装封装也叫作信息隐藏或者数据访问保护。类通过暴露有限的访问接口,授权外部仅能通过类提供的方法来访问内部信息或者数据。例如在Java中我们在定义一个类时,会给一个类加属性,我们给将这些类属性设置为private,然后给这些属性添加一些方法,有的只能被获取,不能被修改,有些可以被修改,但是不可以被重置。在Java中是通过一些关键字来提供访问权限控制。如果Java中没有提供这些关键词...

2019-12-23 15:22:01 204

原创 面向对象到底是指什么

什么是面向对象面向对象是一种软件开发方法。对象对象包括三部分:面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程(OOP). OOA、OOD、OOP三个连在一起正好是面向对象软件开发的三个阶段。什么是OOA、OOD、OOPOOPOOP是面向对象编程,面向对象编程是一种编码范式或编码风格,以类或者对象作为组织代码的基本原则,并将封装、抽象、继承、多态作为软件设计与实现的基本...

2019-12-23 14:05:40 334

原创 [Git] 常用的Git命令

查看git提交日志查看git提交日志git log 显示提交信息 git reflog 显示全部操作改动 git reflog --stat 显示简化版全部操作改动 git reflog --pretty=formate:%s 以格式化的形式显示日志信息 git log --pretty=oneline 显示简化提交信息 git log --graph --pretty=...

2019-12-09 15:00:00 93

原创 [Git] Github仓库添加webhook,Jenkins自动build

给github仓库添加webhook,每次使用git push命令时,jenkins就会自动build。步骤如下:进入某一仓库的settings 添加左侧导航栏的Webhook 点击Add wekhook 填写Payload URL,这里的URL就是jenkins的地址,example:http://myjenkins.com/github-webhook/ 选择Content-...

2019-12-09 14:14:06 704

原创 [读书笔记] Clean Code(代码整洁之道)

目录第一章 整洁代码第二章 有意义的命名第三章 函数第四章 注释第五章 格式第一章 整洁代码第二章 有意义的命名在编程中,命名随处可见。我们给变量、函数、参数、类和包命名。好的命名能够代码读起来更加容易。名副其实一个变量的名字应该体现出这个变量要做什么事,应该怎么用。如果名称需要注释来补充,那就不算是名副其实。int d; //消逝的时间,以日计i...

2019-12-06 14:35:36 132

原创 [IOS学习] IOS中的MVVM设计模式

什么是MVVM设计模式 MVVM也是一种设计模式,改设计模式是由MVC设计模式改进而来,弱化了Controller的功能,增加了了一个View Models的模块。 MVVM设计模式由三部分组成:Model、Views、View Models。MVVM的具体组成部分 MVVM的包括下面三部分:Models: 存储App中的数据。通常是struct 简单的类 V...

2019-11-28 20:28:36 214

原创 [IOS学习] IOS中的MVC设计模式

什么是MVC设计模式 MVC是Model(M)-View(V)-Controller(C)的缩写,是一种常见的设计模式,在Java web中有使用,在IOS开发中是一种基本的设计模式。使用MVC设计模式来构建一个App的项目,会使得项目结构更加清晰,能够加快开发速度。 MVC设计模式由三部分组成:Model: Mode中存有数据。凡是存有数据的东西,都可以称为Model,例...

2019-11-28 17:14:49 134

原创 [IOS学习] .什么是xib文件 storyboard nib

什么是.xib文件 使用.xib文件可以进行可视化布局,可以直接将UIKit提供的组件拖入.xib文件中的ViewController中,并对组件进行布局。什么是storyboard storyboard是在IOS5中引入的新功能,能够节省构建App界面的时间。storyboard可以直观的展示App中的每一个页面的布局,以及多个页面的之间的关联。 stor...

2019-11-27 21:23:58 392

转载 leetcode.27. 移除元素

题目描述:给定一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 n...

2019-05-01 10:20:32 76

原创 leetcode.26. 合并两个有序链表

题目描述:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。...

2019-04-30 17:52:37 93

原创 leetcode.21. 合并两个有序链表

题目描述:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4方法一:递归法/** * Definition for singly-linked list. * public class Lis...

2019-04-30 17:01:05 62

转载 leetcode.14. 最长公共前缀

题目描述:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。方法一:思路:首先找出第一个字符串和第二个字符串的公共字符串,然后用...

2019-04-21 20:28:19 68

原创 leetcode.13. 罗马数字转整数

题目描述:罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为...

2019-04-20 21:15:37 70

原创 leetcode.9. 回文数

题目描述:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此...

2019-04-17 16:03:23 223

转载 leetcode.7 整数反转

题目描述:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。实例1:输入: 123输出: 321实例2:输入: -123输出: -321实例3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231, 231− 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。...

2019-04-17 15:33:01 69

原创 leetcode.136 只出现一次的数字I

题目描述:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4方法一(^异或运算符)异或运算符在两个相等运算符之间运算结果为0,例如4^4=0...

2019-03-26 21:44:16 178

转载 elasticsearch教程,非常详细

附上链接:https://www.cnblogs.com/Wolfmanlq/p/5984494.html

2018-12-28 16:52:46 703

转载 关闭centos7的防火墙

https://blog.csdn.net/ViJayThresh/article/details/81284007

2018-12-27 14:50:00 71

转载 在Linux系统安装Nodejs 最简单步骤

附上链接:https://www.cnblogs.com/liuqi/p/6483317.html

2018-12-25 14:46:30 244

尚硅谷mysql高级:索引、优化

尚硅谷mysql高级:索引、优化,讲的很棒,分享给大家,欢迎来下载。

2018-08-12

com.springsource.org.aopalliance-1.0.0.jar

在做 spring3 AOP 开发,练习的时候,除了那些在官方下载的包之外,这些依赖包必须添加进来,否则 你的代码不能运行 AOP 相关代码。

2018-04-05

Java Servlet API

JAVA Servlet API,自己制作的,比较简易JAVA Servlet API,自己制作的,比较简易

2018-01-12

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

TA关注的人

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