万猫学社_社区达人页

个人头像照片
万猫学社
已加入开发者社区1909

勋章 更多

个人头像照片
专家博主
专家博主
个人头像照片
星级博主
星级博主
个人头像照片
技术博主
技术博主
个人头像照片
江湖侠士
江湖侠士

成就

已发布155篇文章
7条评论
已回答4个问题
0条评论
已发布0个视频
github地址

技术能力

兴趣领域
  • Java
  • 程序员
  • 微服务
擅长领域
  • Java
    高级

    能力说明:

    精通JVM运行机制,包括类生命、内存模型、垃圾回收及JVM常见参数;能够熟练使用Runnable接口创建线程和使用ExecutorService并发执行任务、识别潜在的死锁线程问题;能够使用Synchronized关键字和atomic包控制线程的执行顺序,使用并行Fork/Join框架;能过开发使用原始版本函数式接口的代码。

  • 微服务
    中级

    能力说明:

    熟悉微服务常用开放框架,理解Spring、Spring Boot,以及Spring Cloud的概念和不同,对Spring Cloud Alibaba有较为全面的认知。对Istio具备基础运维能力,掌握基本组件的知识。

  • 数据库
    中级

    能力说明:

    可对MySQL数据库进行备份与恢复,可较为熟练的使用SQL语句进行单表多表查询等操作,可快速上手阿里云RDS MySQL数据库,可进行MySQL云数据库的创建、设置、数据迁移等工作。了解常见NOSQL数据库,如MongoDB、Redis、Memcached的概念、安装、配置等相关基础知识。

技术认证

暂时未有相关云产品技术能力~

微信搜索「万猫学社」关注后回复「电子书」,免费获取12本Java必读技术书籍。

暂无精选文章
暂无更多信息

2022年04月

  • 04.11 09:33:08
    发表了文章 2022-04-11 09:33:08

    面试官:Java中对象都存放在堆中吗?你知道逃逸分析?

    面试官:Java虚拟机的内存分为哪几个区域? 我(微笑着):程序计数器、虚拟机栈、本地方法栈、堆、方法区 面试官:对象一般存放在哪个区域? 我:堆。 面试官:对象都存放在堆中吗? 我:是的。 面试官:你了解过逃逸分析吗? 我(皱了皱眉):是内存溢出吗? 面试官:不是的。 我(挠了挠头):不是很了解。 面试官:今天的面试先到这,回去等消息吧!
  • 04.11 09:32:37
    发表了文章 2022-04-11 09:32:37

    面试官:Redis中有序集合的内部实现方式是什么?

    面试官:Redis中基本的数据类型有哪些? 我:Redis的基本数据类型有:字符串(string)、哈希(hash)、列表(list)、集合(set)、有序集合(zset)。 面试官:有序集合的内部实现方式是什么? 我还沉浸在上一个问题的沾沾自喜中,顿时表情凝固了,手心开始冒出冷汗。“这个。。没有太深入了解”,我支支吾吾的说到。 面试官:回去等消息吧。
  • 04.11 09:32:13
    发表了文章 2022-04-11 09:32:13

    面试官:Redis中集合数据类型的内部实现方式是什么?

    虽然已经是阳春三月,但骑着共享单车骑了这么远,还有有点冷的。我搓了搓的被冻的麻木的手,对着前台的小姐姐说:“您好,我是来面试的。”小姐姐问:“您好,您叫什么名字?”我回答:“我叫万猫学社。”小姐姐笑出了声,说到:“这名字好怪,谁给你起的啊。”我面无表情地回答:“俺爹。”小姐姐收起了笑容,说到:“跟我来吧。”我被带到了面试间等候,片刻后一个着干净满脸清秀的青年走了进来,一股男士香水的淡香扑面而来。
  • 04.08 08:52:50
    发表了文章 2022-04-08 08:52:50

    面试官:Redis中哈希数据类型的内部实现方式是什么?

    面试官:Redis中基本的数据类型有哪些? 我:Redis的基本数据类型有:字符串(string)、哈希(hash)、列表(list)、集合(set)、有序集合(zset)。 面试官:哈希数据类型的内部实现方式是什么? 我还沉浸在上一个问题的沾沾自喜中,顿时表情凝固了,手心开始冒出冷汗。“这个。。没有太深入了解”,我支支吾吾的说到。 面试官:回去等消息吧。
  • 04.08 08:52:07
    发表了文章 2022-04-08 08:52:07

    面试官:Redis中列表的内部实现方式是什么?

    在面试间里等候时,感觉这可真暖和呀,我那冰冷的出租屋还得盖两层被子才能睡着。正要把外套脱下来,我突然听到了门外的脚步声,随即门被打开,一位眉毛弯弯嘴唇红红的小姐姐走了进来,甜甜的香水味立刻钻进了我的鼻孔。
  • 04.08 08:51:39
    发表了文章 2022-04-08 08:51:39

    浅析HTTPS的通信机制

    HTTPS 是在HTTP(Hyper Text Transfer Protocol)的基础上加入SSL(Secure Sockets Layer),在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。依此避免HTTP的明文传输容易被窃听、不验证身份容易被伪装、无法验证报文完整性容易被篡改等问题。除了被广泛用于互联网上安全敏感的通讯,大部分网站也正在广泛采用 。
  • 04.07 09:34:02
    发表了文章 2022-04-07 09:34:02

    快速整明白Redis中的压缩列表到底是个啥

    压缩列表(ziplist)是由一个连续内存组成的顺序型数据结构。一个压缩列表可以包含任意多个节点,每个节点上可以保存一个字节数组或整数值。它是Redis为了节省内存空间而开发的。 压缩列表(ziplist)是哈希(hash)和有序集合(zset)的内部编码之一。当哈希(hash)中的元素个数比较少并且每个元素的值占用空间比较小的时候,Redis就会使用压缩列表做为哈希的内部编码。当有序集合(zset)中的元素个数比较少并且每个元素的值占用空间比较小的时候,Redis也会使用压缩列表做为有序集合的内部编码。
  • 04.07 09:33:19
    发表了文章 2022-04-07 09:33:19

    Linux常用磁盘管理命令详解

    du命令用于查看文件和目录磁盘的使用空间。 命令语法:du [参数] [文件或目录名称] 参数说明:
  • 04.07 09:32:46
    发表了文章 2022-04-07 09:32:46

    昨天面试居然聊了半个多小时的异常处理

    大风吹去了往日的雾霾,阳光透过窗户照进来,透过窗户可以看到远处的山脉与蓝天相接,这可比我那永远见不到阳光的出租屋好多了。渐渐走进的脚步声打断了我的思绪,一位小姐姐坐在了面前,甜甜的香水味立刻钻进了我的鼻孔。 小姐姐微笑地说:”您好,我是今天的面试官,那么开始吧?“ 我收起直勾勾的眼睛,说:“好的。” 小姐姐说:“在Java的异常处理中有两大组成要素:抛出异常和捕获异常。那么抛出异常可以分为哪两种呢?” 我立刻回答到:
  • 04.07 09:23:52
    发表了文章 2022-04-07 09:23:52

    面试官:Redis中字符串的内部实现方式是什么?

    在面试间里等候时,感觉这可真暖和呀,我那冰冷的出租屋还得盖两层被子才能睡着。正要把外套脱下来,我突然听到了门外的脚步声,随即门被打开,穿着干净满脸清秀的青年走了进来,一股男士香水的淡香扑面而来。 面试官:Redis中基本的数据类型有哪些? 我:Redis的基本数据类型有:字符串(string)、哈希(hash)、列表(list)、集合(set)、有序集合(zset)。 面试官:字符串类型的内部实现方式是什么? 我还沉浸在上一个问题的沾沾自喜中,顿时表情凝固了,手心开始冒出冷汗。“这个。。没有太深入了解”,我支支吾吾的说到。 面试官:回去等消息吧。
  • 04.07 09:23:20
    发表了文章 2022-04-07 09:23:20

    面试官:Redis的共享对象池了解吗?

    我正在面试间里焦急地等待着,突然听到了门外的脚步声,随即门被打开,穿着干净满脸清秀的青年走了进来,一股男士香水的淡香扑面而来。 面试官:“平时在工作中用过Redis吗?” 我:“用的比较多。”我心中暗喜,Redis我熟啊,什么五种数据类型、两种持久化方式倒背如流啊。 面试官:“Redis的共享对象池了解吗?” “这个。。没有太深入了解。”我支支吾吾的说到,手心已经冒出冷汗。 面试官:“回去等消息吧。”
  • 04.07 09:22:49
    发表了文章 2022-04-07 09:22:49

    Linux常用文件权限命令详解

    pwd命令用于获取当前工作目录的绝对路径。 使用示例: pwd 效果如下图:
  • 04.06 09:08:49
    发表了文章 2022-04-06 09:08:49

    图解MySQL在Linux下的安装与配置

    MySQL是最流行的RDBMS(Relational Database Management System:关系数据库管理系统)之一,被广泛地应用在互联网上的中小型网站中。关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
  • 04.06 09:08:20
    发表了文章 2022-04-06 09:08:20

    快速了解常用的消息摘要算法,再也不用担心面试官的刨根问底

    加密算法通常被分为两种:对称加密和非对称加密。其中,对称加密算法在加密和解密时使用的密钥相同;非对称加密算法在加密和解密时使用的密钥不同,分为公钥和私钥。此外,还有一类叫做消息摘要算法,是对数据进行摘要并且不可逆的算法。 这次我们了解一下消息摘要算法。
  • 04.06 09:07:54
    发表了文章 2022-04-06 09:07:54

    快速了解常用的非对称加密算法,再也不用担心面试官的刨根问底

    加密算法通常被分为两种:对称加密算法和非对称加密算法。其中,对称加密算法在加密和解密时使用的密钥相同;非对称加密算法在加密和解密时使用的密钥不同,分为公钥和私钥。此外,还有一类叫做消息摘要算法,是对数据进行摘要并且不可逆的算法。 这次我们了解一下非对称加密算法。
  • 04.05 14:14:40
    发表了文章 2022-04-05 14:14:40

    快速了解常用的对称加密算法,再也不用担心面试官的刨根问底

    加密算法通常被分为两种:对称加密和非对称加密。其中,对称加密算法在加密和解密时使用的密钥相同;非对称加密算法在加密和解密时使用的密钥不同,分为公钥和私钥。此外,还有一类叫做消息摘要算法,是对数据进行摘要并且不可逆的算法。 这次我们了解一下对称加密算法。
  • 04.05 14:14:14
    发表了文章 2022-04-05 14:14:14

    curl的HTTP参数速查表

    curl是一个开源的命令行工具,它基于网络协议,对指定URL进行网络传输,得到数据后不任何具体处理(如:html的渲染等),直接显示在"标准输出"(stdout)上。 curl的参数也有很多,以下主要介绍HTTP和HTTPS相关的参数,建议收藏保存。
  • 04.05 14:13:36
    发表了文章 2022-04-05 14:13:36

    curl常用参数详解及示例

    curl是一个开源的命令行工具,它基于网络协议,对指定URL进行网络传输,得到数据后不任何具体处理(如:html的渲染等),直接显示在"标准输出"(stdout)上。
  • 04.04 22:25:58
    发表了文章 2022-04-04 22:25:58

    一张图快速了解五大架构风格

    架构风格定义了用于描述系统的术语表和一组指导构建系统的规则。 架构风格反映了领域中众多系统所共有的结构和寓意特性,并指导如何将各个构件有效地组织成一个完整的系统。
  • 04.04 22:25:30
    发表了文章 2022-04-04 22:25:30

    手把手教你把 Git 子模块更新到主项目

    本文以 skywalking-rocketbot-ui子模块合并到 skywalking 为例,手把手教你如何把 Git 子模块更新到主项目中去。 首先,把fork的skywalking项目克隆到本地:
  • 04.04 22:23:38
    发表了文章 2022-04-04 22:23:38

    Windows系统中,如何快速找到端口被占用的进程?

    在本地调试代码时,经常遇到端口被占用导致启动失败的问题,又不能很快找到哪个进程占用了端口,很是恼火。 今天,我们用shell命令轻松搞定。
  • 04.04 22:23:12
    发表了文章 2022-04-04 22:23:12

    RocketMQ的invokeSync call timeout异常的解决办法

    在RocketMQ客户端的DefaultMQPushConsumer的start方法被执行时,时不时会报出invokeSync call timeout异常,如下:
  • 04.04 22:22:42
    发表了文章 2022-04-04 22:22:42

    2021年北京积分落户名单公布了,爬了两个多小时得到了所有数据,有了惊人的发现(附源码)

    2021年北京积分落户名单公布了,手痒痒就写了一段Java代码,运行了两个多小时,终于到了所有数据,如下截图:
  • 04.04 22:15:02
    发表了文章 2022-04-04 22:15:02

    缓存穿透详解及解决方案

    当存储系统成为瓶颈时,比如高并发、读多写少等场景,我们首先会想到的就是利用缓存来提高整个系统的性能。 缓存虽然能够大大提升整个系统的性能,但同时也引入了更多复杂性。 如果没有针对缓存进行比较好的处理,某些场景下甚至会导致整个系统崩溃。 这次我们要聊的就是:缓存穿透。
  • 04.04 22:14:18
    发表了文章 2022-04-04 22:14:18

    3分钟整明白 缓存热点 是咋回事

    当数据库成为瓶颈时,比如高并发、读多写少等场景,我们首先会想到的就是利用缓存来提高整个系统的性能。 缓存虽然能够大大提升整个系统的性能,但同时也引入了更多复杂性。 如果没有针对缓存进行比较好的处理,某些场景下甚至会导致整个系统崩溃。 这次我们要聊的就是:缓存热点
  • 04.04 22:13:51
    发表了文章 2022-04-04 22:13:51

    3分钟整明白啥是 缓存雪崩

    当数据库成为瓶颈时,比如高并发、读多写少等场景,我们首先会想到的就是利用缓存来提高整个系统的性能。 缓存虽然能够大大提升整个系统的性能,但同时也引入了更多复杂性。 如果没有针对缓存进行比较好的处理,某些场景下甚至会导致整个系统崩溃。 这次我们要聊的就是:缓存雪崩。
  • 04.03 11:17:53
    发表了文章 2022-04-03 11:17:53

    详解 Apache SkyWalking 的跨进程传播协议

    SkyWalking 跨进程传播协议是用于上下文的传播,本文介绍的版本是3.0,也被称为为sw8协议。
  • 04.03 10:56:47
    发表了文章 2022-04-03 10:56:47

    速查列表:Apache SkyWalking OAL 的 域(Scopes)

    在流模式(Streaming mode)下,SkyWalking 提供了 观测分析语言(Observability Analysis Language,OAL) 来分析流入的数据。 OAL脚本现在位于/config文件夹,用户可以简单地改变和重新启动服务器,使其有效。 但是,OAL脚本仍然是编译语言,OAL运行时动态生成Java代码。可以在系统环境上设置SW_OAL_ENGINE_DEBUG=Y,查看生成了哪些类。
  • 04.03 10:56:13
    发表了文章 2022-04-03 10:56:13

    详解 Apache SkyWalking OAP 的分布式计算

    SkyWalking的OAP(Observability Analysis Platform,观测分析平台)是一个用于链路数据的分布式计算系统。 因为它巧妙的设计,使得在链路数据计算和聚合过程中,不需要考虑数据的一致性,也没有事务、分布式锁等概念。 在极端情况下,可能出现链路数据的丢失,但会最大限度保障OAP集群的可用性。咱们来看一下,它是如何设计的,为以后的系统设计和架构提供一些思路。
  • 04.03 10:55:33
    发表了文章 2022-04-03 10:55:33

    昨天去某大厂面试,居然让我做四则运算,还好我够机灵。

    面试官:请您说说怎么计算四则运算?比如1 + 2 * ( 3 + 4 ) - 5。 我:先算括号里再算括号外,先乘除后加减,最后等于10。 面试官懵了一下,说:可能我说明白,我想问的是用计算机怎么计算? 我尬尴的笑了笑,马上说到:对于计算机来说,单纯的两个数的加减乘除很容易,但是如果乘除在加减的后面却要先运算,再加上几个括号,就变得更加复杂了。 为了使计算机更容易理解,前人已为我们引入了一种新的四则运算的表示法。
  • 04.02 10:04:23
    发表了文章 2022-04-02 10:04:23

    学妹一反常态主动联系我,我要不要答应帮她?

    之前在学校举办的活动上,认识了一个学妹。我死磨硬泡终于加了她的微信,经常给她发微信。 可是她总是对我爱答不理的,我心里总有一天让你高攀不起,后来就很少联系了。今天突然主动联系我:
  • 04.02 10:02:30
    发表了文章 2022-04-02 10:02:30

    快速串讲:JVM内存的区域划分

    目的: 快速定位JVM内存泄漏或者溢出等问题。 面试基础题,加分项。
  • 04.02 10:01:47
    发表了文章 2022-04-02 10:01:47

    如何开启Apache SkyWalking的自监控?

    1. 开启Prometheus遥测数据 默认情况下, 遥测功能(telemetry)是关闭的(selector 为 none),像这样:
  • 04.02 10:00:44
    发表了文章 2022-04-02 10:00:44

    一篇文章快速搞懂 Apache SkyWalking 的 OAL

    在流模式(Streaming mode)下,SkyWalking 提供了 观测分析语言(Observability Analysis Language,OAL) 来分析流入的数据。 OAL 聚焦于服务,服务实例以及端点的度量指标,因此 OAL 非常易于学习和使用。 6.3版本以后,OAL引擎嵌入在OAP服务器运行时中,称为oal-rt(OAL运行时)。 OAL脚本现在位于/config文件夹,用户可以简单地改变和重新启动服务器,使其有效。
  • 04.01 09:43:07
    发表了文章 2022-04-01 09:43:07

    说了栈和队列的区别以后,面试官当场就吐了,同学们千万要引以为戒。

    一个漫天黄沙的上午,我准时来到了面试地点。在回应了前台小姐姐的假笑后,我在会议室里坐下,等待着面试官的蹂躏。 没过多久,一个戴着眼镜的男人开门走了进来。
  • 04.01 09:42:24
    发表了文章 2022-04-01 09:42:24

    Apache SkyWalking 告警动态配置源码简析

    AlarmModuleProvider实现了ModuleProvider接口,通过SPI的方式被加载进来。AlarmModuleProvider的prepare方法先被调用,做一些预处理:
  • 04.01 09:41:33
    发表了文章 2022-04-01 09:41:33

    计算机教育中缺失的一课,劝学弟学妹们一句,一定要趁早补上,工作后会事半功倍!

    各位学弟学妹们好,作为稍微年长的我(岁月是把杀猪刀啊),今天就给大家补补课。 在大学里的,我们上的计算机专业课程一般都是像操作系统、编译原理、计算机组成原理、计算机网络这些理论课程,还有一些像C语言、Java、.Net这些可以实践的课程,甚至还有可能让你焊一个收音机,但是对于一些基本习惯却很容易被忽略,需要学弟学妹们自行摸索。

2022年03月

  • 03.31 11:08:49
    发表了文章 2022-03-31 11:08:49

    快速串讲校招高频面试题——排序算法和复杂度

    在校招面试中,排序算法是经常被问到的。排序算法又比较多,很容易遗忘和混淆。建议收藏起来,面试前可以快速过一遍。正所谓:临阵磨枪,不快也光。
  • 03.31 11:08:13
    发表了文章 2022-03-31 11:08:13

    Apache SkyWalking 告警配置指南

    Apache SkyWalking是分布式系统的应用程序性能监视工具(Application Performance Management,APM),专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。 它提供了分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。
  • 03.31 11:07:23
    发表了文章 2022-03-31 11:07:23

    美女同事的烦恼:如何配置 Apache SkyWalking 告警?

    技术部基本上是一个和尚庙,女生非常少,即使有女生也略微有点抽象,小婉就不一样,她气质绝佳。 上午,同事小婉刚才从老板办公室里出来,看上去一脸不悦的样子。为了表示对同事的关(ba)心(gua),我就主动和她聊一聊。
  • 03.23 19:12:14
    发表了文章 2022-03-23 19:12:14

    Java实现Date日期加减和保留日期部分

    Java实现Date日期加减; Java实现Date保留日期部分。
  • 03.23 19:11:22
    发表了文章 2022-03-23 19:11:22

    $‘\r‘: command not found的解决方法

    在Linux系统中,运行Shell脚本,出现了如下错误: one-more.sh: line 1: $'\r': command not found 1 出现这样的错误,是因为Shell脚本在Windows系统编写时,每行结尾是\r\n,而在Linux系统中行每行结尾是\n,所以在Linux系统中运行脚本时,会认为\r是一个字符,导致运行错误。
  • 03.23 19:10:45
    发表了文章 2022-03-23 19:10:45

    EnvironmentPostProcessor怎么做单元测试?阿里P7告诉你

    从Spring Boot 1.3开始,我们可以在应用程序上下文刷新之前使用EnvironmentPostProcessor来自定义应用程序的Environment。Environment表示当前应用程序运行的环境,它可以统一访问各种属性源中的属性,如属性文件、JVM系统属性、系统环境变量和Servlet上下文参数。使用EnvironmentPostProcessor可以在bean初始化之前对Environment进行修改。
  • 03.23 19:07:28
    发表了文章 2022-03-23 19:07:28

    延迟消息的五种实现方案

    生产者把消息发送到消息队列中以后,并不期望被立即消费,而是等待指定时间后才可以被消费者消费,这类消息通常被称为延迟消息。延迟消息的应用场景其实是非常的广泛,比如以下的场景:
  • 03.15 16:49:38
    发表了文章 2022-03-15 16:49:38

    Java实现Kafka生产者和消费者的示例

    Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka的目标是为处理实时数据提供一个统一、高吞吐、低延迟的平台。
  • 03.15 14:45:52
    发表了文章 2022-03-15 14:45:52

    3分钟快速搞懂Java的桥接方法

    Java中的桥接方法(Bridge Method)是一种为了实现某些Java语言特性而由编译器自动生成的方法。 我们可以通过Method类的isBridge方法来判断一个方法是否是桥接方法。
  • 发表了文章 2024-05-15

    Spring Boot 的事务控制及示例代码

  • 发表了文章 2024-05-15

    使用 Apache PDFBox 操作PDF文件

  • 发表了文章 2024-05-15

    【AI帮我写代码,上班摸鱼不是梦】手摸手图解CodeWhisperer的安装使用

  • 发表了文章 2024-05-15

    3分钟快速了解使用Java进行对称加密

  • 发表了文章 2024-05-15

    怎么Java进行MD5摘要加密?

  • 发表了文章 2024-05-15

    【从零开始学微服务】07.微服务常用的开发框架

  • 发表了文章 2024-05-15

    【从零开始学微服务】06.微服务架构的建设思路

  • 发表了文章 2024-05-15

    【从零开始学微服务】04.微服务架构的特点

  • 发表了文章 2024-05-15

    【从零开始学微服务】02.初识微服务

  • 发表了文章 2024-05-15

    深入理解Istio流量管理的熔断配置

  • 发表了文章 2024-05-15

    【从零开始学微服务】01.微服务的过去与现在

  • 发表了文章 2024-05-15

    【从零开始学微服务】08.引入微服务架构的时机

  • 发表了文章 2024-05-15

    【从零开始学微服务】05.微服务的优势和不足

  • 发表了文章 2024-05-15

    【从零开始学微服务】03.软件架构的演化过程

  • 发表了文章 2022-08-10

    在 Istio 服务网格内连接外部 MySQL 数据库

  • 发表了文章 2022-08-10

    一张图快速了解 Istio 的 EnvoyFilter

  • 发表了文章 2022-08-10

    在Istio中,到底怎么获取 Envoy 访问日志?

  • 发表了文章 2022-08-09

    5个 Istio 访问外部服务流量控制最常用的例子,你知道几个?

  • 发表了文章 2022-08-09

    10个 Istio 流量管理 最常用的例子,你知道几个?

  • 发表了文章 2022-08-09

    图解VirtualBox安装CentOS 7

正在加载, 请稍后...
滑动查看更多
  • 回答了问题 2022-04-22

    使用 Docker 基本命令构建和运行镜像时,如何使用 docker run 命令运行镜像?

    docker run :创建一个新的容器并运行一个命令 语法 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] OPTIONS说明: -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项; -d: 后台运行容器,并返回容器ID; -i: 以交互模式运行容器,通常与 -t 同时使用; -P: 随机端口映射,容器内部端口随机映射到主机的端口 -p: 指定端口映射,格式为:主机(宿主)端口:容器端口 -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用; --name='nginx-lb': 为容器指定一个名称; --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致; --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致; -h 'mars': 指定容器的hostname; -e username='ritchie': 设置环境变量; --env-file=[]: 从指定文件读入环境变量; --cpuset='0-2' or --cpuset='0,1,2': 绑定容器到指定CPU运行; -m :设置容器使用内存最大值; --net='bridge': 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型; --link=[]: 添加链接到另一个容器; --expose=[]: 开放一个端口或一组端口; --volume , -v: 绑定一个卷 实例 使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。 docker run --name mynginx -d nginx:latest 使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。 docker run -P -d nginx:latest 使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。 docker run -p 80:80 -v /data:/data -d nginx:latest 绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。 $ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash 使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。 runoob@runoob:~$ docker run -it nginx:latest /bin/bash root@b8573233d675:/#
    踩0 评论0
  • 回答了问题 2022-04-22

    使用 Docker 基本命令构建和运行镜像时,如何使用 docker rm 命令删除容器?

    docker rm :删除一个或多个容器。 语法 docker rm [OPTIONS] CONTAINER [CONTAINER...] OPTIONS说明: -f :通过 SIGKILL 信号强制删除一个运行中的容器。 -l :移除容器间的网络连接,而非容器本身。 -v :删除与容器关联的卷。 实例: 强制删除容器 db01、db02: docker rm -f db01 db02 移除容器 nginx01 对容器 db01 的连接,连接名 db: docker rm -l db 删除容器 nginx01, 并删除容器挂载的数据卷: docker rm -v nginx01 删除所有已经停止的容器: docker rm $(docker ps -a -q)
    踩0 评论0
  • 回答了问题 2022-04-22

    如何实现分层存储?

    基于 Block Device 的分层存储方案 该方案完整地实现了以上提到的分层存储中所有的工作,包括虚拟化,IO 性能统计以及数据的迁移。 方案结构 该方案的结构包括一个 Linux 设备驱动程序和若干用户态的控制程序,如图 3 所示。 驱动程序实现存储设备的虚拟化,IO 性能监测统计以及数据的迁移; 用户态控制程序负责创建、删除虚拟设备,手动触发数据迁移,以及设置获取设备状态。 该方案由于 Storage Tiering 所有的功能都在 Linux 内核实现,且需要维护虚拟设备到物理设备的地址映射表,以及保证数据一致性,所以实现难度和工作量比较大,但可扩展性和灵活性也相对较大。 方案实现 该方案的实现主要包括以下内容: 1、管理设备的注册 管理设备主要用于与用户态程序的 IOCTL 交互,可以是一个字符设备或者 Misc 设备。Linux 下可以通过 register_chrdev 或 misc_register 注册,并实现所需要的 IOCTL 接口。 2、虚拟块设备的创建 用户态控制程序通过 IOCTL 向控制设备发起创建虚拟设备的请求,并传入所有的物理磁盘(DEV1,DEV2)的参数,如设备名,磁盘大小,虚拟磁盘的块大小等;驱动程序收到该请求后,进行必要的参数检查,然后调用 register_blkdev 创建一个新的块设备(VDEV)。并设置新设备的相关参数,如 IO 处理函数,队列大小,设备容量等。 3、虚拟设备地址与物理设备地址映射 虚拟设备地址到物理设备的地址映射表在虚拟设备创建是被初始化,并在数据迁移过程中被修改。 虚拟设备和物理设备都被分成固定大小的块,块大小可以固定或通过 IOCTL 由用户指定,但一旦确定,不能更改,一个 Block 是热度统计以及数据迁移的最小单位;每个 Block 包含若干个 sector(512 Byte)。 当 VDEV 收到一个 bio,可以由 bi_sector 和 bi_size 找出所对应的 VDEV 的 Block 以及 Block 内的偏移量,通过查询映射表,找到各个 VDEV Block 所对应的物理设备以及 Block,然后读取物理设备 Block 内的偏移量,如图 4 所示。 地址映射表以及其他的元数据需要存储在物理设备上,以便机器重启时能重构这个虚拟的块设备,且需要采取一定的备份策略,防止断电或磁盘损坏造成数据丢失。 4、IO 热度统计 IO 热度统计也以 Block 为基本单位,每个 Block 内的任何一个 sector 被访问,该 Block 的热度都为增加。由于大 IO 以及顺序 IO 在性能在传统硬盘和 SSD 上的差异并不是特别大,所以在进行热度统计是应该考虑排除大 IO 和顺序 IO。 5、数据迁移 可以采用自动方式或手动方式。自动方式由驱动内的定时器驱动,每隔一定的时间,启动数据迁移的扫描,将 IO 热度统计中的热数据向高性能存储设备迁移,冷数据向低性能存储设备迁移;手动方式由用户指定,将某块数据向高性能存储设备迁移或低性能设备迁移。手动数据迁移方式增加了更大的灵活性和可扩展性。 开源实现 BTier 基于 Block Device 的分层存储方案的开源实现。BTier 最大支持 16 个设备的虚拟化,这些设备被 BTier 简单地捆绑成一个 btier 块设备,因此,其中任何一个设备的失效,都会导致整个 btier 的失效。 编译并以模块形式安装 BTier 之后,会创建一个名为 tiercontrol 的字符设备; 然后使用 BTier 提供的 btier_setup 应用可以创建一个新的块设备 btiera,然后就可以对 btiera 设备进行所有块设备的读写操作,包括分区和创建文件系统。 BTier 还提供了丰富的 sysfs 接口,进行控制和信息获取,如数据迁移的开关,间隔时间,IO 统计信息等。 不过 BTier 每个 Tier 层仅支持 1 个物理设备,同层多个设备的虚拟化需要借助其他的方法,在虚拟化上面,BTier 还有可以改善的空间。 基于 LVM 的分层存储方案 Linux 的逻辑卷管理(LVM)提供了存储虚拟化,可以将多个物理卷(PV)建成一个卷组(VG),然后再在 VG 里创建虚拟卷(VG)。而且 LVM 提供了在不同物理卷之间迁移数据的 API。因此,基于 LVM 的分层存储方案借助 LVM 的虚拟化和数据迁移的能力,实现会更简单。 方案结构 该方案中,数据一致性的问题以及数据迁移时 IO 中断的问题都由 LVM 进行处理,重点在于如何分析并统计 IO 的热度信息,并且不涉及内核态的开发。该方案的结构如图所示。 方案实现 该方案的实现主要包括以下内容: 1、创建虚拟设备 使用 pvcreate 将所有的物理磁盘创建成物理卷(PV);再使用 vgcreate 将所有的 VG 创建成一个卷组(VG);最后使用 lvcreate 在创建出来的 VG 上建虚拟卷。 2、IO 热度统计 IO 热度统计可以使用 blktrace 工具,或者实现一个设备驱动来检测 IO 的热度。使用 blkparse 可以解析 blktrace 的输出,然后分析这些 IO 的分布以及读写频度,从而得到 IO 的热度统计信息。 4、数据迁移 根据 IO 的热度统计信息,使用 LVM 提供的 pvmove 工具,可以在属于同一个 VG 里的不同 PV 之间进行数据迁移,将热数据和冷数据分布存放在不同的物理卷上。 开源实现 LVMTS(LVM Tired Storage)是一个使用 SSD 和 HDD 来创建混合存储的方案,完全在用户态实现,主要由几个守护进程构成。 Lvmtscd 负责监测 blktrace 的输出并统计块设备的访问频度,并将这些统计信息记录在文件中; Lvmtsd 负责根据用户配置的信息,启动其他的守护进程,并完成数据迁移。 实际使用中发现,LVMTS 并不是太稳定,而且在 IO 分析统计上并不是太完善,可开发的空间仍然很大。
    踩0 评论0
  • 回答了问题 2022-04-20

    程序员35岁后的出路

    1.送外卖 2.开网约车 3.回老家种地 4.摆地摊卖煎饼果子
    踩0 评论0
正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息