DDD(Domain-Driven Design 领域驱动设计)是由Eric Evans最先提出,目的是对软件所涉及到的领域进行建模,以应对系统规模过大时引起的软件复杂性的问题。
由浅入深学Git_03
由浅入深学Git_02
安装git (MacOS)
通过 Homebrew 安装 Git
- 如果没有安装 Homebrew,先打开终端(Terminal),并执行以下命令进行安装:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" |
由浅入深学Git_01
JUC知识点_02
线程的上下文切换
上下文:线程在执行过程中,线程自身的运行条件和状态,比如程序计数器、栈信息等。
线程退出RUNNING状态的情况:
- 主动让出CPU,如调用了
sleep()
、wait()
函数 - CPU时间片耗尽
- 调用了阻塞类型的系统中断,比如请求IO,线程被阻塞
- 被意外终止或结束运行
上述的四种情况中,前三中情况都会出现线程切换,线程切换意味着需要保存当前线程的上下文,待线程下次拥有CPU时间片时恢复现场,并加载下一个将要占用CPU的线程的上下文 => 上下文切换
上下文切换因为每次都需要保存和恢复信息,这将会占用CPU、内存等系统资源,也就意味着效率会有一定的损耗,如果频繁切换就会导致整体效率低下。
JUC知识点_01
【典中典】进程和线程
进程概念
进程是程序的一次执行过程,是系统运行程序的基本单位 => 进程是动态的。
系统运行一个程序就是一个进程从创建、运行到消亡的过程。
线程概念
和进程相似,但线程是一个比进程更小的执行单元。一个进行在其执行的过程中可以产生多个线程。
同类的多个线程共享进程的堆、方法区,每个线程有独有的程序计数器、虚拟机栈和本地方法栈 => 操作系统产生线程、切换线程是比较廉价的 => 线程被称为轻量级线程。
ES&MongoDB实现搜索实战
FreeMarker实战
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架构图: