程序员在旅途

用这生命中的每一秒,给自己一个不后悔的未来!

0%

一、Linux容器综述

  容器技术是Linux系统虚拟化演进的成果,是在操作系统层面上实现的一种轻量级的虚拟化隔离方案。旨在单一Linux主机上提供多套隔离的Linux环境,通过将应用程序及其依赖项进行标准封装,打包在一起,运行在容器沙盒中,与其他的容器沙盒相互隔离,形成一个独立、可移植的运行环境,实现在一台Linux主机上运行多个相互隔离的应用程序,提升了资源的使用效率。
  相较于传统的虚拟化技术,如VMWare、OpenStack,其是面向资源的封装,虚拟机会部署一个完整的操作系统,提供一整套完整的、隔离的操作系统环境,容器提供了一种更为轻量(共享主机系统内核)、快速(本质是一个个资源隔离、受限的系统进程)、便捷(沙盒可以快速迁移到其他主机)的虚拟化方案,侧重解决的是应用运行时环境隔离的问题,容器需要运行时隔离技术来保证容器的运行环境符合预期,这种软隔离同时也提升了资源利用率,减少了不必要的资源消耗。
  本质上,Linux容器是操作系统上的一个特殊进程,通过Cgroups和Namespace等技术,实现了进程级别的隔离和资源控制,从而为应用进程提供了一个稳定、可靠、相对安全的运行环境。由于受限Linux容器进程共享内核的特性,内核属性的变动会影响所有的上层容器进程,同时软隔离的属性也会影响容器进程之间的安全性,为了解决这类问题,目前也出现了一些安全容器,如Kata Containers,这类容器应用提供了一个完整的操作系统执行环境,每个容器都运行在一个单独的微型虚拟机中,拥有独立的操作系统内核,以及虚拟化层的安全隔离。

阅读全文 »

一、Linux系统性能分析综述

Linux系统的性能分析优化是一个系统性的工程,需要从宏观和全局的角度来进行,性能分析的目的是为了找出系统瓶颈和优化方案,以提高系统的运行效率和性能。准确的衡量系统的性能表现是进行性能问题分析的前提,一般可以从两个维度来衡量一个Linux系统的性能,从应用负载的视角来考察性能表现,可以使用系统吞吐量和响应延迟来衡量系统提供服务的能力指标,从系统资源的视角层面,可以采用系统资源使用率、饱和度等,例如关注CPU、内存、磁盘IO、网络IO等资源的整体使用情况。
随着应用负载的增加,系统资源的使用也会升高。性能问题的本质在于系统资源已达到瓶颈,即系统资源已经达到了其最大承载能力,但请求的处理仍无法满足需求,无法支持更多的请求。这种情况下,系统就会表现出性能下降的问题,如响应时间变慢、错误增多等。性能分析,其实就是找出应用或系统的瓶颈,并设法去避免或者缓解它们,从而更高效地利用系统资源处理更多的请求,提升系统服务能力。
可以遵循以下思路来进行性能分析:

1.选择合理的指标(应用负载维度、资源使用维度)评估应用程序和系统的性能;
2.明确应用程序和系统性能目标;
3.进行性能基准测试,了解系统提供服务的基准能力;
4.性能分析定位;
5.优化系统和应用程序,完善系统监控和预警。

阅读全文 »

一、综述

在Linux系统功能设计中,文件系统承担着整个系统的数据持久化功能,而文件又是文件系统的数据处理单元,管道、socket、块设备、文件目录等均可以通过文件的方式来进行管理,熟练的掌握文件操作至关重要。
本篇文章从以下几个方面总结常用的文件操作命令,致力于提高Linux运维效率。

  • 磁盘信息概览
  • 文件摘要查看命令
  • 文件查找命令
  • 文件压缩与解压命令
  • 文件传输命令
阅读全文 »

一、建站背景

  之前一直有在CSDN网站(程序员在旅途)写博客,记录相关技术问题的解决思路,分享作为程序员的成长历程,也在想着能有一个专属的个人版简约网站。一次偶然的机会,巧遇Hexo,被Next主题的简约所吸引,所以在2020年起搭建程序员在旅途博客站点。博客网站采用Hexo+Next主题构建,然后托管在公有云服务器上基于域名(meijindong.com)对外提供访问。
  程序员在旅途博客建设过程中,主要涉及到了站点本身的配置优化、域名配置、搜索引擎检索等内容,将会以系列文章的形式发布出来。

  本篇博客主要介绍站点本身的配置以及优化过程,主要涉及以下过程:

1. hexo站点搭建;
2. 配置Next主题(界面配置、站内搜索、valine评论);
3. 博客发布。

阅读全文 »

一、背景介绍

  随着社会生活中数据量的急剧增多,如何从这些海量的数据中提取与发掘出对我们决策有用的信息成为当前亟待解决的题,因此,数据分析与挖掘技术在这些年得到了广泛的发展,也受到了足够的重视。面对不同领域的数据,不同的任务目标,我们在进行数据分析时也会选择不同的模型来进行建模,从而发现数据中的特征,提取其中的价值。常见的数据挖掘模型有:分类与预测、聚类分析、关联规则、时序模式、离群点检测等。这些模型,在我们的生活中已经有了广泛的应用。例如航空公司的客户价值分析,就是对用户数据进行聚类分析,发掘出不同价值群的用户,然后有针对性的制定相应的营销手段,实现精准化运营,以期获取最大的用户转化率。

本篇博文的实例来源于《Python数据分析与挖掘实践》(第二版)中的第七章。实现的主要目标是:
  1,借助航空公司客户数据,对客户进行分类。
  2,对不同客户类别进行特征分析,比较不同类别的客户价值。
  3,针对不同价值的客户类别制定相应的营销策略,为其提供个性化服务。

阅读全文 »

一、数据分析与挖掘介绍

  从人类历史演变的角度出发,我们回顾整个计算机的发展历程可以看到,从第一台电子计算机(ENIAC)于1946年2月诞生到今天,也不过是短短的六十载,但就是在这短短的几十年过程中,计算机技术得到了飞速的发展,极大地促进了社会生产力的提高,提升了生产制造水平。可以说计算机技术是近代以来发展最为迅速的技术之一。
  尤其是近年来,随着半导体技术,通讯技术的不断发展,人类收集数据和存储数据的能力都得到了极大的提高。无论是在科学研究还是社会生活的各个领域中都产生积累了大量的数据,对这些数据进行分析以挖掘出蕴含在这些数据中的有用信息,已成为我们各个领域的共同需求,对改善人类的生活,促进社会的发展有着极大的作用。
  数据分析与挖掘是指利用数学和计算机的手段,对收集来的数据进行适当的处理和开发,以求最大化地开发数据的功能,发挥数据的作用。具体来说,数据挖掘是从海量的数据中挖掘出隐含的、先前未知、对决策有潜在价值的关系、模式、趋势,并利用这些知识和规则建立用于决策支持的模型,提供预测性决策支持的方法、工具、和过程。
  留心观察就会觉察到,大数据分析在我们生活中的应用案例屡见不鲜。例如许多电商网站会根据用户的历史浏览足迹、购买记录等数据,挖掘出用户的喜好等信息,然后基于用户的兴趣偏好,把用户感兴趣的物品或者视频、资讯等推荐给用户,给用户带来沉浸式的体验,让用户感到一定的满足感,优化用户的体验。

阅读全文 »

一、概述

  定时任务这个概念在Java的学习以及项目的开发中并不陌生,应用场景也是多种多样。比如我们会注意到12306网站在锁定车票的30分钟以内要进行车票费用的支付,否则订单会被取消;再比如我们的考试系统,考试管理人员上传好考试信息,考试系统会根据考试信息准时开考;还有上课的铃声会在每周的上课时间准时响起,等等。这些生活细节只要我们稍微注意,留心观察,便会发现编程已经早早地融入到我们生活的方方面面,定时任务也随之应用到这些程序之中。因此,了解好定时任务,对我们的程序的编写有很大的帮助。

阅读全文 »

一、嵌入式系统的由来

  1.1 嵌入式系统的概念:
  嵌入式系统是以应用为中心,以现代计算机技术为基础,能够根据用户需求(功能、可靠性、成本、体积、功耗、环境等)灵活裁剪软硬件模块的专用计算机系统。
  1.2 嵌入式系统发展的三个阶段:
   第一阶段:19世纪70年代,随着8位、16位微处理器的诞生,以这些微处理器为核心所构成的系统广泛地应用于仪器仪表、医疗设备、机器人、家用电器等领域。
   第二阶段:随着微电子工艺水平的提高,集成电路制造商开始把嵌入式计算机应用中所需要的微处理器、I/O接口、A/D转换器、D/A转换器、串行接口,以及RAM、ROM等部件全部集成到一个VLSI中,从而制造出面向I/O设计的微控制器,即俗称的单片机。
   第三阶段:以芯片技术和网络通信技术为标志。微电子技术发展迅速,SOC(片上系统)使嵌入式系统越来越小、但是功能越来越强。与网络通信技术的结合形成了我们今天熟知的物联网。

阅读全文 »

一、slf4j 日志组件介绍

  项目开发,部署运行过程中,记录运行日志的重要性不言而喻。在项目线上运行的过程中,日志基本成为我们了解系统运行状态的唯一工具,因此,了解好Java中常见日志组件的使用以及原理,对我们的项目开发有着重要的意义。
  在Java中,经常听到的关于日志的组件有很多,比如:slf4j,commons-logging,log4j,logback,slf4j-simple, jdk自带的java.util.Logging 等等。梳理清楚这些组件之间的关系对于组件的熟练使用来说至关重要。在我们的项目逐渐复杂的过程中,我们可能会越来越多的引入第三方的开发包,这些开发包中也不可避免的会使用一些不同的日志组件,但有没有发现,我们的项目仍然可以正常的打印的日志,正常的运行,不出问题,这就完全得益于Java中日志系统的优良设计模式。
  slf4j 、commons-logging和java中的jdbc有点像,这两个组件设计了日志系统的通用接口,其他的日志组件如 log4j 等是日志功能的具体实现。说白了也就是,slf4j定义了该做什么,并指明了这么做需要遵守什么规则,log4j这些组件实现了怎么做,也就是该如何记录日志,并遵守了相关的规则。
  slf4j的全称 Simple Logging Facade for Java(简单日志门面),这个组件的设计采用了Facade 设计模式,它为Java程序提供了一个统一的日志输出接口,但是这个组件不提供具体的日志实现方案,因此,如果准备让程序记录日志,还必须要引入具体的实现了日志记录功能的组件,在这里,以 log4j 为例,来为程序实现日志记录功能。

阅读全文 »

一、背景。

  最新一年(2019)的软件测试大赛即将拉开帷幕,今天与往年相比,增加了自主可控的分赛项,进一步的丰富了比赛的内容,各项评分依据也更加明确,因此能够根据分数更有针对性的找出自己的代码问题了,从而获得更好地分数,提高脚本编写能力。评测工具完善速度之快,超出个人想象,可以看得出来主办方费心了,预祝软件测试大赛发展的越来越好。
  自主可控赛项的比赛内容有三部分构成,分别为:功能测试、性能测试、众包测试,其中功能测试的内容就是利用Selenium测试工具对Web应用进行功能测试。之所以称作为自主可控,是因为待测试Web应用是部署在国产的应用服务器上面的,采用的国产CPU、操作系统等,具备完全自主知识产权,编写的脚本也必须启动国产浏览器(360浏览器、QQ浏览器)来测试Web应用才可以得分。
  有关Selenium的介绍与环境安装,在之前的一篇博客里面也写过,链接为Selenium介绍及环境搭建。经过又一段时间的学习,对这个有了进一步的认识,加上此次比赛需要使用国产浏览器的环境,此前并不了解这方面的东西,因此打算在这里再次记录一下学习过程与心得体会。
  对软件测试感兴趣的,想参加的比赛的,官网地址在这里全国大学生软件测试大赛

阅读全文 »