上游市场与下沉市场
上游市场与下沉市场上游市场与下沉市场的概念、区别与联系一、概念
上游市场:
定义:上游市场指的是企业生产和供应链的前端,包括原材料供应、基础设施、设备制造等环节。它是产品从自然资源到成品的初始阶段。
特点:
资源密集型:上游市场主要涉及自然资源的开采和初加工,如矿产、石油、天然气、农产品等。
技术要求高:需要高度专业化的技术和设备,如石油钻探设备、矿山机械等。
资金密集型:上游行业通常需要大量的资本投入,进行资源勘探、开发和初加工。
典型行业:石油和天然气开采、矿产开采、农业、原材料加工等。
下沉市场:
定义:下沉市场指的是消费市场的更广泛的地区,尤其是那些在城市化进程中被忽视的二三线城市、乡镇和农村地区。它关注的是产品和服务的终端消费。
特点:
市场潜力大:随着经济的发展和消费升级,下沉市场的消费能力不断提升,具有巨大的增长潜力。
分布广泛:下沉市场分布在全国各地,地域广阔且人口基数大。
渠道多样化:下沉市场需要灵活的渠道策略,包括线上线下结合、电商平台、乡镇零售店等。
典型行业:快速消费品、家电、电子产品、服装、食品饮料等。
二、区别
产业链位置:
上游市场 ...
MySQL Date和DateTime
MySQL Date和DateTimeDate
存储: 仅存储日期值,格式为 YYYY-MM-DD。
范围: 从 1000-01-01 到 9999-12-31。
用途: 当你只需要年月日信息时使用。
DateTime
存储: 存储日期和时间值,格式为 YYYY-MM-DD HH:MM:SS。
范围: 在MySQL中,例如,从 1000-01-01 00:00:00 到 9999-12-31 23:59:59。
用途: 当你需要存储时间点信息时使用,包括年月日以及时分秒。
TIMESTAMP和DateTime
TIMESTAMP:也用来存储日期和时间,格式与DATETIME相同,但是它具有时间戳的特性,能够自动记录数据的修改和插入时间。TIMESTAMP的值是以UTC时间为基础的,当你插入或者读取数据时,它会自动转换为当前时区的时间。TIMESTAMP的表示范围通常比DATETIME小,从1970-01-01 00:00:01 UTC到2038-01-19 03:14:07 UTC。
Java类 LocalDate 和 LocalDateTime 的对应LocalDate
对应 ...
UML-类图详解
UML类图详解符号表示类(Class)图示:
访问修饰符写法:
private: -
public:+
protected:#
default:(什么都不写默认是default)
属性写法:
属性名 :属性类型
方法写法:
方法名(参数类型):返回类型
包(Package)图示:
接口(Interface)图示:
写法:同类的写法
依赖(Dependency)
表示一个实体(或者说是一个元素)的实现或者行为依赖于另一个实体的定义。
依赖通常是非长期的,非结构化的
使用场景:
临时使用:当一个类的方法操作或者作为参数传递了另一个类的对象时,可以说第一个类依赖于第二个类。但这种关系比较弱,只在特定的方法中或者特定的时间片段中存在。
局部变量:当一个类的方法内部创建了另一个类的对象,作为局部变量使用时。
方法的返回类型:当一个类的方法返回另一个类的对象时。
参数类型:当一个类的方法或构造函数接受另一个类的对象作为参数时。
图示:
使用带箭头的虚线来表示依赖
箭头说明Use可写可不写
关联(Association)
表示实体之间的结构化关系,表明这些实体是互相 ...
什么是网站跳出率
什么是网站跳出率
网站中的跳出率(Bounce Rate)是指访问者在进入网站后,在没有与网站上的其他页面互动的情况下离开的比例。
具体来说,它表示只查看了一个页面(通常是入口页面)并在此页面停留一段时间后离开网站的访问者所占的百分比。
计算方法:
跳出率计算公式:
跳出率 = (只查看一个页面的访问次数 / 进入该页面的总访问次数) * 100%
跳出率的解读:
高跳出率:通常表示访客没有找到他们想要的内容或信息,或者入口页面的设计和内容不能吸引他们继续浏览网站的其他页面。
低跳出率:表示访客更倾向于浏览多个页面,可能与网站内容的吸引力、导航设计的有效性以及页面加载速度等因素有关。
影响跳出率的因素:
页面内容:内容的相关性和吸引力。
用户体验:网站的导航结构和页面布局是否清晰。
页面加载速度:快速加载的页面通常具有较低的跳出率。
入口页面设计:入口页面是否能够引导访客浏览其他页面。
流量来源:不同来源的访问者可能有不同的跳出率。
使用跳出率的目的:跳出率是衡量网站页面效果和用户体验的重要指标之一,通过分析和优化跳出率,可以改善网站的用户参与度和转化 ...
RuntimeException及其子类的使用场景
RuntimeException及其子类的使用场景与示例
RuntimeException 是 Java 中的一个异常类,是所有未检查异常(unchecked exceptions)的超类。
未检查异常是在程序运行时可能发生的异常,不需要在方法或构造函数的 throws 子句中声明。
与之相对的是检查异常(checked exceptions),需要在方法或构造函数的 throws 子句中声明。
RuntimeException 使用场景RuntimeException 及其子类的使用场景主要包括以下几种:
程序运行中可能会发生的错误:如对象强制转化不兼容等等。
非强制性检查的异常:不需要强制捕获的异常,程序员可以选择处理或者忽略。
API 中的方法无法继续执行时:例如,某个方法的前置条件不满足时,可以抛出 IllegalArgumentException 等。
区分受检异常和非受检异常
预测性异常:某些异常可以在编码阶段预测到,并通过改进代码结构或逻辑来避免抛出。例如,NullPointerException、IllegalArgumentException、Illega ...
IOException子类的使用场景
常见的IOException子类及其使用场景:IOException常用子类
EOFException
场景:当期望从输入流中读取更多数据时,但已到达流的末尾。
示例:
12345678910try (DataInputStream dis = new DataInputStream(new FileInputStream("file.txt"))) { while (true) { int data = dis.readInt(); // Handle data... }} catch (EOFException e) { // End of file reached} catch (IOException e) { // Other IO error handling}
FileNotFoundException
场景:尝试打开一个不存在的文件时。
示例:
1234567try (BufferedReader br = new ...
Spring框架下的策略模式最佳实践
Spring框架下的策略模式实战
备注:后文的XXX是具体行为(如文件上传等等)的代称
在Spring框架中,我们可以通过定义策略接口,然后创建实现该接口的Bean来实现策略模式。
Step 1. 定义阶段定义策略模式的返回接口12345678public interface XXXStrategy { // 执行某种行为 void doXXX(X x, Y y, T t) throws Exception // 自定义其他接口的方法 // ......}
定义策略传参的上下文上下文可以封装成对象,也可以不封装
实现策略入口1234567public void XXX(StrategyContext strategyContext, Others others) throws Exception { XXXStrategy strategy = getStrategy(strategyContext); if (strategy == null) { throw new ...
final关键字详解
final 关键字详解final关键字在Java中有三种主要用法,分别用于修饰变量、方法和类。以下是对final关键字的详解。
基本使用场景修饰变量
final变量一旦初始化之后,值就不能再改变。
可以是成员变量,也可以是局部变量。对于成员变量:
必须在声明时或者在构造函数中赋值。
对于局部变量,必须在声明时或者在代码块中赋值。
final 修饰引用的时候,引用的值初始化后就不可变了,但是引用的内容可以变化
修饰方法
final方法不能被子类重写,但可以被继承。
使用final关键字修饰的方法通常是设计用来实现类的核心功能,目的时:
为了防止不安全的修改
提高效率:final方法在编译时会被内联(JVM优化),提高执行效率。
修饰类
final类不能被继承。
使用final关键字修饰的类通常是设计用来防止继承修改的类,常用于工具类或基础类库。
其他特定使用场景
匿名类
在匿名内部类中使用的局部变量必须是final或“事实上的final”(即虽然未声明为final但在作用域内没有改变)。
Lambda表达式内部
在Lambda表达式中使用 ...
数据存储中的Bucket概念
数据存储中的 Bucket 概念简介在数据存储和管理的领域中,术语“Bucket”广泛用于描述一种数据容器的概念。它类似于现实生活中的桶,用于类比在单一存储单元中收集和维护数据集合的行为。
Bucket的概念“Bucket”一词在计算机科学中通常指代一个存储空间,它可以是一个数据结构中的单元,也可以是一个物理或逻辑的存储容器。这种用法强调了容器的功能,即能够聚合具有共同特性的数据。例如,在数据结构中,尤其是哈希表(Hash tables)中,“Bucket”用于存储索引或哈希函数计算出的相同哈希值的数据项。
Bucket的应用哈希表中的Bucket在散列表中,Bucket用作数据项的归属地,以便快速检索。每个Bucket通常对应一个哈希值,而具有相同哈希值的数据项则存储在同一Bucket中。这种方法提高了数据处理的效率,因为它减少了在搜索特定项时需要比较的数据量。
云存储服务中的Bucket在云存储服务中,如Amazon S3、Google Cloud Storage、JSS等等,Bucket是顶层的存储容器。用户可以在一个Bucket中创建、读取、更新和删除无限数量的数据对象。每个B ...
MySQL执行计划详解
MySQL执行计划详解概念MySQL执行计划(Execution Plan)是数据库管理系统对SQL查询语句进行解析、优化、选择最优执行路径,并最终执行的详细步骤和策略的描述。
为什么需要
性能优化:通过分析执行计划,可以了解查询的具体执行过程,识别性能瓶颈,优化查询语句和数据库结构。
调试与诊断:执行计划帮助开发者和DBA识别查询中的问题,如未使用索引、全表扫描等,进行有效的调试和诊断。
资源管理:通过执行计划,可以合理分配和管理数据库资源,避免不必要的资源浪费,提升系统整体性能。
怎么使用MySQL提供了EXPLAIN语句来生成执行计划,以下是基本使用方法:
基本用法:1EXPLAIN SELECT * FROM table_name WHERE condition;
输出结果解读:EXPLAIN的输出包含多个字段,每个字段都提供了执行计划的关键信息:
id:查询的标识符,标识查询执行的顺序。
select_type:查询类型,如SIMPLE、PRIMARY、UNION等。
table:查询涉及的表。
type:连接类型,如ALL、index、range、ref、eq_r ...
com.alibaba.fastjson.JSON详解
com.alibaba.fastjson.JSON详解目录
概述
快速入门
Maven 依赖
基本使用
常用 API
JSON 序列化
JSON 反序列化
JSONPath
高级特性
自定义序列化和反序列化
注解
解析复杂 JSON
性能优化
安全性
参考资料
概述com.alibaba.fastjson.JSON 是阿里巴巴开源的一个高性能 JSON 处理库,主要用于 JSON 数据的解析和生成。
fastjson 提供了丰富的 API,用于将 Java 对象与 JSON 字符串之间进行相互转换,并且具有高效、简洁的特点。
快速入门Maven 依赖在你的项目中使用 fastjson 之前,需要在 pom.xml 中添加以下依赖:
12345<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version> <!-- 请使用最新 ...
MySQL覆盖插入的实现
MySQL覆盖插入的实现在 MySQL 中,覆盖插入(也称为“覆盖更新”)是指在插入数据时,如果插入的记录已经存在,则更新该记录。
MySQL 提供了多种方式来实现覆盖插入,主要有以下几种方法:
REPLACE INTO:如果记录存在,则删除并插入新的记录。
INSERT … ON DUPLICATE KEY UPDATE:如果记录存在,则更新该记录。
INSERT IGNORE:如果记录存在,则忽略插入操作(不会更新记录)。
方法 1:REPLACE INTOREPLACE INTO 会尝试插入新记录。如果记录的主键或唯一键已经存在,则先删除该记录,然后插入新记录。
语法12REPLACE INTO table_name (column1, column2, ...)VALUES (value1, value2, ...);
示例假设有一个 users 表:
12345CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(100), email VARCHAR(100));
使用 REPLACE INT ...
MySQL中IN和EXIST的区别
MySQL中IN和EXIST的区别从原理上解释 IN 和 EXISTS 的区别,需要深入了解它们在 SQL 查询执行过程中是如何处理的。
IN 子查询的原理IN 子查询用于检查某个值是否在一组给定的值列表中。其处理过程如下:
子查询执行:
首先,执行 IN 子查询,并生成一个结果集。这个结果集通常是一个值的列表。
例如:1SELECT department_id FROM departments WHERE department_name = 'Sales';
生成一个包含所有满足条件的 department_id 列表。
主查询过滤:
主查询使用生成的结果集进行过滤。查询引擎会逐行检查主表中的每个值,判断其是否在子查询的结果集中。
例如:1SELECT * FROM employees WHERE department_id IN (SELECT department_id FROM departments WHERE department_name = 'Sales');
这条语句会检查每个 employee 的 department_id ...
mybatis-generator使用教程
mybatis-generator 使用教程为什么使用 MBG ?提高开发效率MBG 自动生成 MyBatis 相关的代码,包括 Java 实体类、SQL 映射文件和 DAO 接口,这样开发者可以节省大量的时间和精力,专注于业务逻辑的开发。
保证代码一致性手动编写的代码容易产生风格不一致和错误,而 MBG 生成的代码遵循一致的规范和模板,保证代码的一致性和可维护性。
快速迭代在数据库表结构发生变化时,MBG 可以快速生成新的代码,减少手动修改代码的工作量,适应快速迭代的开发需求。
减少重复劳动对于大多数 CRUD(创建、读取、更新、删除)操作,MBG 可以自动生成标准的代码,避免开发者重复编写类似的代码,提高开发效率。
适应复杂的 SQL 映射MBG 支持复杂的 SQL 映射生成,可以生成包括关联查询、多表联查等复杂 SQL 映射文件,满足复杂业务需求。
提供灵活的配置MBG 提供了高度可配置性,开发者可以根据具体需求配置生成的代码,包括生成文件的包结构、文件路径、表的映射等。
集成开发工具MBG 可以很方便地与 Maven 集成,通过 Maven 插件可以轻松运行 MBG,生成和更新 ...
SQL执行顺序详解
好的,以下是详细的SQL执行顺序的详解,并整理成文档格式:
SQL执行顺序详解SQL 关键字执行顺序
FROM -> JOIN/ON -> WHERE -> GROUP BY -> HAVING
-> SELECT -> DISTINCT -> ORDER BY -> LIMIT -> OFFSET
-> UNION -> INSERT INTO / UPDATE / DELETE FROM
FROM 子句
作用:指定查询的数据源表或视图。
语法:FROM table_name
JOIN 子句
作用:将多个表连接起来,根据指定的条件。
语法:1JOIN table_name ON join_condition
JOIN 关键字用于连接表。
ON 关键字用于指定连接条件。
WHERE 子句
作用:筛选符合条件的行。
语法:1WHERE condition
GROUP BY 子句
作用:按照指定的列对结果集进行分组。
语法:1GROUP BY column_name
HAVI ...
POJO(Plain Old Java Object)
为什么需要区分POJO在开发中区分不同类型的POJO(Plain Old Java Object)具有以下几个重要的原因:
职责分离
实体类(Entity):负责与数据库表的映射,主要用于持久化操作。
查询对象(Query):封装查询条件,用于传递查询参数。
参数对象(Param):封装HTTP请求参数,用于控制器层接收前端数据。
视图对象(VO):封装展示层的数据,用于将数据传递给前端。
业务对象(BO):封装业务逻辑,用于服务层处理业务操作。
代码可读性和可维护性
通过明确区分不同的POJO类型,可以提高代码的可读性和可维护性,使得开发者能够快速理解代码的意图和使用场景。
开发者可以通过类名和字段名快速理解这个POJO的用途。
便于在大型项目中管理和维护代码。、
数据和逻辑的分离
将数据和逻辑分离可以减少耦合度,增强代码的可测试性和复用性。
实体类主要关注数据的持久化,而不包含业务逻辑。
业务对象关注业务逻辑,实现业务需求。
数据验证和转换
通过使用不同的POJO,可以在不同的层次进行数据验证和转换。
参数对象(Param)可以使用注解进行数据验证,如@NotNu ...
Butterfly代码块高亮踩坑
Butterfly代码块高亮踩坑问题描述代码块没有高亮,没有复制按钮,看起来简直就像是文本
解决路线官方文档 - 代码高亮
issue 指路,也许有你需要的解答
首先查看hexo版本1heox --version
hexo: 7.2.0hexo-cli: 4.3.2os: win32 10.0.22631 undefinednode: 18.16.0acorn: 8.8.2ada: 1.0.4ares: 1.19.0brotli: 1.0.9cldr: 42.0icu: 72.1llhttp: 6.0.10modules: 108napi: 8nghttp2: 1.52.0nghttp3: 0.7.0ngtcp2: 0.8.1openssl: 3.0.8+quicsimdutf: 3.2.2tz: 2022gundici: 5.21.0unicode: 15.0uv: 1.44.2uvwasi: 0.0.15v8: 10.2.154.26-node.26zlib: 1.2.13
修改 hexo 的 _config.yml 配置
注意,是hexo的,不是主题的
如果是 7.0.0 ...
如何使用图标库
如何使用图标库来美化 .yml 文件的 icon
在 Font Awesome 官方网站 上查看所有可用的图标和它们的分类 ([Font Awesome](https://fontawesome.com/#:~:text=URL%3A https%3A%2F%2Ffontawesome.com%2F Visible%3A 0% )) (Font Awesome Docs)
Step 1. 找到图标库对应的 Code Snippet
Step 2. 找到你想要添加图标的位置,添加“图标分类 Code Snippet”Font Awesome的图标分类主要包括:
fas(Font Awesome Solid):实心图标。
far(Font Awesome Regular):常规图标(通常是空心的)。
fal(Font Awesome Light):轻量图标。
fab(Font Awesome Brands):品牌图标。
示例1fab fa-solid fa-x
END
Butterfly主题页脚添加ICP备案信息
Butterfly主题页脚添加ICP备案信息方案一Step 1. 找到页脚布局文件 footer.pug
Step 2. 添加备案号
方案二在 _config.butterfly.yml 的 footer.custom_text 中放入 Step 2 的 html 代码
END
BeanUtils.copyProperties(source, target)
BeanUtils.copyProperties(source, target);功能概述
源对象和目标对象:copyProperties() 方法需要两个参数,一个是源对象(source),另一个是目标对象(target)。方法会尝试将源对象的属性值复制到目标对象中的对应属性。
属性名称和类型:复制过程中,只有当源对象和目标对象中具有相同名称和兼容类型的属性时,属性值才会被复制。
深拷贝与浅拷贝:默认情况下,copyProperties() 执行的是浅拷贝,即如果属性是引用类型,则复制的是引用而不是对象本身。
注意事项
异常处理:copyProperties() 方法声明了抛出 IllegalAccessException 和 InvocationTargetException。这要求调用时必须进行异常处理。
数据类型兼容性:当源对象和目标对象的同名属性类型不完全一致时(例如,一个是 Long 另一个是 Integer),复制可能不会执行,或者需要额外的处理。
数据类型兼容性处理
Spring 的 BeanUtils.copyProperties() 方法在执行属性复制时,主要 ...
MySQL 重置密码
MySQL重置密码Step 1:停止 MySQL 服务:首先,确保 MySQL 服务已经停止。如果 MySQL 服务正在运行,可以使用以下命令停止它:
1sudo systemctl stop mysql
Step 2:以跳过授权表启动 MySQL:在 Ubuntu 上,可以通过以下步骤以跳过授权表的方式启动 MySQL 服务,从而可以修改 root 密码:
1sudo mysqld_safe --skip-grant-tables --skip-networking &
--skip-grant-tables:跳过授权表,允许不需要密码即可登录 MySQL。
--skip-networking:跳过网络连接,仅允许本地连接。
Step 3:登录到 MySQL:在跳过授权表的模式下,可以直接登录到 MySQL 服务器,而不需要密码:
1mysql -u root
Step 4:修改 root 密码:登录到 MySQL 后,使用以下 SQL 命令修改 root 用户的密码。将 new_password 替换为你要设置的新密码:
123USE mysql;UPDATE u ...
Ubuntu MySQL 安装教程
Ubuntu 服务器安装 MySQLStep 1:更新包管理器:在安装任何新软件之前,建议先更新系统的包管理器 apt,以确保安装的软件版本是最新的:
1sudo apt update
Step 2:安装 MySQL 服务器:使用以下命令安装 MySQL 服务器:
1sudo apt install mysql-server
在安装过程中,系统会提示你设置 MySQL 的 root 用户密码。请设置一个安全且记得住的密码,并确认。
Step 3:启动 MySQL 服务:安装完成后,MySQL 服务会自动启动。你可以使用以下命令检查 MySQL 服务的运行状态:
1sudo systemctl status mysql
如果 MySQL 未启动,可以使用以下命令手动启动它:
1sudo systemctl start mysql
Step 4:配置 MySQL(可选):在默认情况下,MySQL 的安全配置脚本已经在安装时运行,可以使用以下命令再次运行该脚本:
1sudo mysql_secure_installation
这个脚本将引导你完成一些基本的安全设置,包括移除测试数据 ...
Docker拉取镜像失败的解决方法
Docker 拉取镜像失败的解决方法报错信息1download failed after attempts=6: dial tcp 104.18.125.25:443: i/o timeout
Step 1:写入镜像配置Step 1.1:创建目录1sudo mkdir -p /etc/docker
Step 1.2:写入镜像配置12345678910sudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": [ "https://docker.m.daocloud.io", "https://dockerproxy.com", "https://docker.mirrors.ustc.edu.cn", "https://docker.nju.edu.cn" ]}EOF
Step 2:重启 Docke ...
MySQL 设置 create_time/update_time 自动更新
MySQL在 MySQL 中,可以使用 CURRENT_TIMESTAMP 函数来获取当前时间戳,其特性包括:
插入时自动更新:通过在表定义中设置默认值为 CURRENT_TIMESTAMP,可以在插入新记录时自动填充当前时间戳。
1234CREATE TABLE example_table ( id INT AUTO_INCREMENT PRIMARY KEY, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
更新时自动更新:使用 ON UPDATE CURRENT_TIMESTAMP 在字段定义中,可以在更新记录时更新时间戳。
1234CREATE TABLE example_table ( id INT AUTO_INCREMENT PRIMARY KEY, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
MyBatis 占位符与字符串替换 详解
MyBatis ‘#’ 和 ‘$’ 详解
MyBatis 是一个开源的持久层框架,用于简化数据库操作,它提供了多种方式来执行 SQL 查询,支持动态 SQL、映射器接口和注解等特性。在 MyBatis 中,# 和 $ 符号在 SQL 查询中有不同的作用和用法。
# 和 $ 的区别
# 符号
作用:# 符号表示预编译处理(PreparedStatement),会将参数按照 JDBC 类型安全地进行替换,即使用占位符 ? 来表示参数值。
安全性:使用 # 可以防止 SQL 注入攻击,因为参数值会被自动转义,使得输入的参数无法改变 SQL 的语义。
适用情况:推荐用于传递参数值,如 WHERE 子句、INSERT 或 UPDATE 的列值等。
示例:
1SELECT * FROM users WHERE id = #{userId}
这里 #{userId} 将会被替换为安全的预编译参数。
$ 符号
作用:$ 符号直接将参数值拼接进 SQL 语句中,可以理解为字符串替换,不会进行预编译处理。
灵活性:由于直接替换参数值,可以用于动 ...
Docker + Umami 使用教程
Docker + Umami 使用教程前置条件
安装 MySQL,MySQL 安装教程
安装 Docker,Docker 安装教程
Step 1:在服务器上,创建一个docker-compose.yml1vim docker-compose.yml
Step 2:在该文件中添加如下内容123456789101112version: '3'services: umami: image: ghcr.io/mikecao/umami:mysql-latest network_mode: "host" environment: DATABASE_URL: mysql://username:password@localhost:3306/databasename DATABASE_TYPE: mysql HASH_SALT: replace-me-with-a-random-string restart: always container_name: umami
username ...
Ubuntu安装Docker
Ubuntu服务器安装DockerStep 1:更新系统软件包1sudo apt update
Step 2:安装依赖包【用于通过HTTPS来获取仓库】1sudo apt install apt-transport-https ca-certificates curl software-properties-common
Step 3:添加Docker官方GPG密钥12sudo -icurl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/docker-ce.gpg
Step 4:验证1sudo apt-key fingerprint 0EBFCD88
0EBFCD88 是公钥的指纹。执行这个命令后,系统会显示与该指纹相关的公钥信息。
Step 5:添加Docker阿里稳定版软件源1sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun. ...
hexo解决图片路径不正确问题
hexo解决图片上传到服务器后路径不正确的问题Table of Contents[toc]
Step 1 安装 hexo-renderer-marked 插件hexo-renderer-marked 是一个为 Hexo 博客框架设计的插件,它使用 Marked 解析 Markdown 文件。Hexo 是一个快速、简单且功能强大的静态博客框架,而 hexo-renderer-marked 插件允许你使用 Marked 来渲染 Markdown 文件,从而生成静态网页内容。
主要功能和用途
Markdown 渲染: hexo-renderer-marked 使用 Marked 库将 Markdown 文件转换为 HTML。Markdown 是一种轻量级的标记语言,常用于编写博客文章、文档等。
支持扩展语法: Marked 支持一些扩展的 Markdown 语法,使你可以使用更高级的特性,例如表格、代码块高亮等。
高性能: Marked 是一个高性能的 Markdown 解析器,解析速度快,生成的 HTML 代码干净且高效。
自定义选项: hexo-renderer-marked 允许你在 ...
Java8新特性
Java8新特性Interface新特性
default修饰的方法,是普通实例方法,可以用this调用,可以被子类继承、重写。
如果两个接口都定义了某个default同名方法,某个类同时实现了这两个接口,那么,这个同名方法必须重写,否则编译报错
static修饰的方法,使用上和一般类静态方法一样。但它不能被子类继承,只能用Interface调用。
函数式编程(Functional Programming, FP)是一种编程范式,它将计算视为数学函数的求值,并强调函数的应用。与命令式编程不同,函数式编程更关注表达式的计算和函数的组合,而不是变量的状态和赋值操作。就像管道符一样,一个函数的输出是下一个函数的输入
Lambda表达式和Stream流都是函数式编程的应用
Java LambdaLambda表达式是Java 8引入的一个重要特性,使得我们可以用更加简洁和函数式的方式编写代码。
Lambda表达式可以用于实现函数式接口(即只有一个抽象方法的接口),并在集合操作、并行处理等场景中得到广泛应用。
基本语法Lambda表达式的基本语法如下:
12(parameters) ...
hexo使用指南
hexo使用指南本地创建一篇新博客1hexo new '博客名'
指定该博客的tags、categories12345678910tags: xxxcategories: xxx或者tags: - xxx1 - xxx2categories: - yyy1 - yyy2注意:使用'-'时需要留一个空格,如“- xxxtag”
添加主页上该博客的描述12description: | hexo基本操作:创建新博客、创建新页面、远程部署、图片上传等
本地创建一个新的页面1hexo new page '页面名'
将本地内容推送到服务器123hexo cleanhexo ghexo d
