动态规划之01背包dp
问题
一个容量为 m 公斤的背包,现在有 n
种物品,每种物品只有一件,每件物品有其自身的重量
weight[i] 和价值 value[i]。
选择哪些物品装入背包,使得在不超过背包总承重的前提下,装入背包的物品总价值最大。
image-20251115191200115
思路
这就是著名的0-1背包问题。“0-1”意味着每种物品只有一件,你只能选择装入(1)或不装入(0),不能只装入部分。
要解决 01
背包问题,我们可以使用动态规划的方法。核心思路是通过一个二维数组
dp 来记录状态,其中 dp[i][j] 表示前
i 件物品在背包容量为 j
时能获得的最大价值。
那么每种物品只有一件,选择时只有 “放入背包” 或
“不放入背包”...
使用supabase和netlify部署你的小规模程序
微信小程序
微信小程序的微信小程序号申请,开发者平台怎么搞就不说了
项目介绍
我们会以一个以 nodejs 的为基础构建的,后端使用 express +
nodejs,非前后端分离的小型项目页面为例子,最后部署到 netlify 上,因为
github page 因为某些不可名状的原因被 ban 了
https://github.com/ergou10086/ErgouSampleBlogFrame
这是示例的仓库地址
预览:https://keen-licorice-1a4ade.netlify.app/
项目结构如下
123456789101112131415161718192021222324252627282930313233343536373839404142ErgouSampleBlogFrame/├── src/│ ├── config/│ │ └── supabase.js # Supabase 配置│ ├── controllers/│ │ ├── authController.js #...
JavaScript part3—日期和函数类型详解
日期对象
日期对象用于处理日期和时间。
在 JavaScript 中,日期时间处理主要通过 Date
对象实现,它用于表示和操作时间。
Date 对象属性
属性
描述
constructor
返回对创建此对象的 Date 函数的引用。
prototype
原型链,所以我们可以为日期对象对象添加属性和方法。
但是由于原生 Date
方法在格式化、时区处理等场景不够便捷,所以我一般使用Day.js
创建 Date 对象
Date 是一个构造函数,需通过 new
关键字创建实例,常见创建方式有 4 种:
无参数
创建当前时间的 Date 对象(基于系统本地时间):
12const now = new Date();console.log(now); // 例如:2025-11-14T08:30:00.123Z(UTC 时间)
时间戳参数
milliseconds 参数是一个 Unix 时间戳(Unix Time
Stamp),它是一个整数值,表示自 1970 年 1 月 1 日...
JavaScript part2—JavaScript的基本语法
JavaScript 基础语法
浏览器与控制台使用JS
JavaScript代码可以直接嵌在网页的任何地方,由<script>...</script>包含的代码就是JavaScript代码,它将直接被浏览器执行。
在开发 JavaScript
应用时,浏览器是我们的主要战场,而浏览器的开发者工具(特别是控制台)则是我们调试和学习的基本交互位置。
一般我们把JavaScript代码放到一个单独的.js文件,然后在HTML中通过<script src="..."></script>引入这个文件:
12345678<html><head> <script src="/static/js/abc.js"></script></head><body> ...
如何使用宝塔面板进行云服务的部署和管理
宝塔面板简介
宝塔面板是一款专门简化服务器运维操作的可视化 Web
管理工具,支持 Linux 和 Windows 两大主流服务器系统,全球超 2000
万台服务器安装使用,而且基础核心功能全免费,像网站管理、环境部署、资源监控等入门所需功能无需付费
宝塔面板把复杂的服务器命令(如环境部署、软件安装等)封装成图形化按钮,通过网页界面点击操作即可完成,不用记忆繁琐命令。Linux
端支持 CentOS、Ubuntu、Debian 等系统,Windows 端支持 2008、2012
等多个版本;同时能适配各类云服务器(阿里云、腾讯云等)和物理服务器。
一般宝塔面板常用的核心功能如下:
一键部署运行环境:这是入门最常用的功能。能一键安装
LAMP(Linux+Apache+MySQL+PHP)、LNMP(Linux+Nginx+MySQL+PHP)等主流网站运行环境,也支持
Tomcat、Node.js 等针对
Java、前端项目的环境,省去手动配置的复杂步骤。
网站与域名管理:快速创建网站,绑定自己的域名;还能一键部署
SSL...
JavaScript part1——认识JavaScript及其数据类型
JavaScript是一种脚本语言
JavaScript 是互联网上最流行的脚本语言,这门语言可用于 HTML 和
web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。
JavaScript 是 web 开发人员必须学习的 3 门语言中的一门:
HTML 定义了网页的内容
CSS 描述了网页的布局
JavaScript 控制了网页的行为
因为你没有选择。在Web世界里,只有JavaScript(TypeScript是JS的超集)能跨平台、跨浏览器驱动网页,与用户交互。
核心特性:
JavaScript 是一种轻量级的编程语言。
JavaScript 是可插入 HTML 页面的编程代码。
JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行
JavaScript...
Spring Cloud part30—Seata的各种分布式事务类型的实现
Seata
什么是Seata
Seata , 官网 , github , 2.6多星
Seata
是一款开源的分布式事务解决方案,致力于在微服务架构下,提供高性能和简单易用的分布式事务服务。Seata
将为用户提供了 AT、TCC、SAGA 和 XA
事务模式,为用户打造一站式的分布式解决方案
在单体应用中,我们可以通过数据库的本地事务(如 MySQL 的
ACID)保证数据一致性,但微服务架构下,一个业务流程可能涉及多个服务(例如电商下单流程涉及订单服务、库存服务、支付服务),每个服务拥有独立的数据库,本地事务无法跨服务生效,此时就需要分布式事务框架协调各服务的事务,确保所有操作要么全部成功,要么全部回滚。
在 Seata 开源之前,Seata
对应的内部版本在阿里经济体内部一直扮演着分布式一致性中间件的角色,帮助经济体平稳的度过历年的双11,对各BU业务进行了有力的支撑。商业化产品GTS
先后在阿里云、金融云进行售卖
Seata 的三大模块
Seata 架构由 Transaction...
Spring Cloud part29—分布式事务中柔性事务的解决方案之补偿型事务
TCC补偿型
什么是TCC补偿型事务
基于消息实现的事务并不能解决所有的业务场景,例如以下场景:某笔订单完成时,同时扣掉用户的现金。
TCC 是 Try-Confirm-Cancel
的缩写,属于补偿型柔性事务的一种。它通过
“预留资源(Try)→...
Spring Cloud part28—分布式事务中柔性事务的解决方案之通知型事务
柔性事务
柔性事务的分类
在电商领域等高并发的互联网场景下,刚性事务在数据库性能和处理能力上都暴露出了瓶颈。
柔性事务有两个特性:基本可用和柔性状态。
基本可用是指分布式系统出现故障的时候允许损失一部分的可用性。
柔性状态是指允许系统存在中间状态,这个中间状态不会影响系统整体的可用性,比如数据库读写分离的主从同步延迟等。柔性事务的一致性指的是最终一致性。
柔性事务主要分为补偿型和通知型,其中,补偿型事务都是同步的,通知型事务都是异步的。
补偿型事务通过 “正向执行 + 逆向补偿”
的机制保证最终一致性,属于同步事务(执行过程中需要等待各环节完成),典型子类型有
TCC 和 Saga。
补偿型事务又分:TCC、Saga;
通知型事务通过异步消息传递保证最终一致性,属于异步事务(执行过程中无需同步等待,通过消息队列或重试机制完成),典型子类型有
MQ 事务消息和最大努力通知型。
通知型事务分:MQ事务消息、最大努力通知型。
补偿型事务
补偿型号事务的设计理念以 “正向执行 +...
Spring Cloud part27—分布式事务中刚性事务的解决方案
刚性事务:XA模型、XA接口规范、XA实现
XA模型或者 X/Open DTP模型
X/OPEN是一个组织.X/Open国际联盟有限公司是一个欧洲基金会,它的建立是为了向UNIX环境提供标准。它主要的目标是促进对UNIX语言、接口、网络和应用的开放式系统协议的制定。它还促进在不同的UNIX环境之间的应用程序的互操作性,以及支持对电气电子工程师协会(IEEE)对UNIX的可移植操作系统接口(POSIX)规范。
X/Open DTP(Distributed Transaction Process)
是一个分布式事务模型。这个模型主要使用了两段提交(2PC -
Two-Phase-Commit)来保证分布式事务的完整性。
在X/Open DTP(Distributed Transaction Process)
模型里面,有三个角色:
AP:
Application,应用程序。也就是业务层。哪些操作属于一个事务,就是AP定义的。
TM:...
SpringCloudpart25—在微服务项目中实际使用Kafka的额外内容
之前项目中没有提到的一些额外的内容
为Kafka配置事务消息
Kafka事务允许生产者将多条消息作为一个原子操作发送,要么全部成功,要么全部失败。这确保了数据的一致性。
默认情况下,Spring-kafka自动生成的KafkaTemplate实例,是不具有事务消息发送能力的。需要使用如下配置激活事务特性。事务激活后,所有的消息发送只能在发生事务的方法内执行了,不然就会抛一个没有事务交易的异常
1spring.kafka.producer.transaction-id-prefix=kafka_tx.
事务有一个 Exactly-Once语义,即使重试,消息也只会被处理一次
添加事务的配置
在配置文件中添加事务的配置
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869spring: application: name: kafka-message ...
Spring Cloud part24—在微服务项目中实际使用Kafka的基本内容
微服务项目内如何集成 Kafka
和其他组件要考虑的事情一样,还是涉及到在哪用,用给谁,如何配置的这三个问题
在 Spring Cloud 微服务项目中集成
Kafka,主要涉及生产者(发送消息)和消费者(接收消息)的实现,以及与
Spring Cloud 生态的适配(如服务发现、配置中心等)
Spring创建了一个项目Spring-kafka,封装了Apache
的Kafka-client,用于在Spring项目里快速集成kafka。
依赖如下
1234567891011<!-- Spring Kafka核心依赖 --><dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId></dependency><!-- 可选:Spring Cloud Stream(如需通过Stream简化集成)...

















