youyichannel

志于道,据于德,依于仁,游于艺!

0%

安装git (MacOS)

通过 Homebrew 安装 Git

  1. 如果没有安装 Homebrew,先打开终端(Terminal),并执行以下命令进行安装:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
阅读全文 »

为什么需要Git?

上图不难看出:

  • 不同版本的文档每次都需要保存为一份独立的文件,非常麻烦,并且不利于管理
  • 版本太多,开发者容易陷入版本死胡同
阅读全文 »

线程的上下文切换

上下文:线程在执行过程中,线程自身的运行条件和状态,比如程序计数器、栈信息等。

线程退出RUNNING状态的情况:

  • 主动让出CPU,如调用了sleep()wait()函数
  • CPU时间片耗尽
  • 调用了阻塞类型的系统中断,比如请求IO,线程被阻塞
  • 被意外终止或结束运行

上述的四种情况中,前三中情况都会出现线程切换,线程切换意味着需要保存当前线程的上下文,待线程下次拥有CPU时间片时恢复现场,并加载下一个将要占用CPU的线程的上下文 => 上下文切换

上下文切换因为每次都需要保存和恢复信息,这将会占用CPU、内存等系统资源,也就意味着效率会有一定的损耗,如果频繁切换就会导致整体效率低下。

阅读全文 »

【典中典】进程和线程

进程概念

进程是程序的一次执行过程,是系统运行程序的基本单位 => 进程是动态的。

系统运行一个程序就是一个进程从创建、运行到消亡的过程。

线程概念

和进程相似,但线程是一个比进程更小的执行单元。一个进行在其执行的过程中可以产生多个线程。

同类的多个线程共享进程的堆、方法区,每个线程有独有的程序计数器、虚拟机栈和本地方法栈 => 操作系统产生线程、切换线程是比较廉价的 => 线程被称为轻量级线程

阅读全文 »

FreeMarker 实战

官方文档:https://freemarker.apache.org/

FreeMarker简介

官网介绍:Apache FreeMarker™ is a template engine: a Java library to generate text output (HTML web pages, e-mails, configuration files, source code, etc.) based on templates and changing data. Templates are written in the FreeMarker Template Language (FTL), which is a simple, specialized language (not a full-blown programming language like PHP). Usually, a general-purpose programming language (like Java) is used to prepare the data (issue database queries, do business calculations). Then, Apache FreeMarker displays that prepared data using templates. In the template you are focusing on how to present the data, and outside the template you are focusing on what data to present.

FreeMarker 是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。模板编写为FreeMarker Template Language (FTL)。它是简单的,专用的语言,不是像PHP那样成熟的编程语言。 那就意味着要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。在模板中,你可以专注于如何展现数据, 而在模板之外可以专注于要展示什么数据。

FreeMarker架构图:

阅读全文 »

官网:https://min.io/

简介

官网简介:MinIO is a high-performance, S3 compatible object store. It is built for large scale AI/ML, data lake and database workloads. It runs on-prem and on any cloud (public or private) and from the data center to the edge. MinIO is software-defined and open source under GNU AGPL v3.

MinIO基于Apache License v2.0开源协议的对象存储服务,可以做为云存储的解决方案用来保存海量的图片,视频,文档。

由于采用Golang实现,服务端可以工作在Windows、Linux、OS X和FreeBSD上。配置简单,基本是复制可执行程序,单行命令可以运行起来。

MinIO兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。

=> S3 ( Simple Storage Service简单存储服务)

基本概念

  • bucket – 类比于文件系统的目录
  • Object – 类比文件系统的文件
  • Keys – 类比文件名

官网文档:http://docs.minio.org.cn/docs/

阅读全文 »