A place to record scattered bits of knowledge learned each day.
-
Cost Calculation Methods
1.先进先出法
- FIFO, First-In, First-Out
- 原理:假设最早采购的库存最先销售,期末库存成本反映最新采购价格。
- 适用场景:
- 价格波动较大(如服装行业常受原材料、季节影响)
- 希望利润更接近当前市场水平(避免低估利润)
- 税务优化(在通胀环境下,FIFO 会提高 COGS,降低应税利润)
- 优点:
- 更匹配实际物流(服装行业通常希望先卖旧款)
- 通胀时利润较高(有利于财报好看)
- 缺点:
- 在价格下跌时可能导致高库存成本(利润虚高)
2.移动加权平均法
- Moving Average Cost
- 原理:每次采购后重新计算平均成本,销售时按最新平均成本计算。
- 适用场景:
- 价格波动较小或库存批次难以区分
- ERP 系统支持自动计算(如 SAP、用友等)
- 优点:
- 平滑价格波动,避免极端影响
- 计算简单,适合中小服装企业
- 缺点:
- 在价格剧烈波动时可能偏离实际成本
3.个别计价法
- Specific Identification
- 原理:每件商品单独记录成本(如高单价服装、定制款)。
- 适用场景:
- 奢侈品、高端定制服装(如婚纱、高定西装)
- SKU 较少但单价高
- 优点:
- 成本计算最精确
- 缺点:
- 管理复杂,仅适用于少量 SKU
4.后进先出法
- LIFO, Last-In, First-Ou,国内会计准则已禁止,但国际仍可用
- 原理:假设最新采购的库存最先销售,期末库存反映最早的成本。
- 适用场景:
- 价格持续上涨(如通胀严重时,可降低应税利润)
- 缺点:
- 国内会计准则(CAS)不允许
- 可能导致库存价值低估
5.适用情况
- FIFO:价格波动大、季节性强的服装(如快时尚)
- 移动加权平均:价格稳定、ERP 系统完善的中小企业
- 个别计价法:高端定制、奢侈品
- LIFO:国际业务(如美国 GAAP 允许)
-
Git Conventional Commits
🚀 常见提交类型
类型 含义说明 feat ✨ 新功能:引入了新的功能或特性。 fix 🐛 修复:修复了 bug。 docs 📝 文档:只修改了文档内容,例如 README。 style 💅 样式:代码格式修改,不影响功能(如空格、缩进、分号)。 refactor 🔨 重构:代码重构,没有添加新功能或修复 bug。 perf ⚡ 性能优化:提高了性能的代码更改。 test ✅ 测试:新增或修改测试代码。 chore 🔧 杂务:不属于上述类型的其他更改,如构建系统或依赖管理。 build 🛠️ 构建:影响构建系统或外部依赖的更改(如 gulp
,npm
等配置)。ci 🤖 持续集成:CI/CD 配置文件和脚本的修改。 revert ⏪ 回退:回滚先前的提交。 merge 🔀 合并:合并分支操作(不常用于标准提交类型)。 🧠 总结用法格式:
<type>(<scope>): <subject>
例如:
feat(core): support new plugin API fix(login): incorrect redirect URL chore: update npm dependencies
-
Random Number
弱伪随机数
性质:随机性
单词:Weak Pseudo-Random Number 生成方式:Math.random()
(无种子)
特点说明:适用于简单场景,如动画效果、抽奖;可预测、不可用于加密强伪随机数
性质:随机性、不可预测性
单词:Cryptographically Secure Pseudo-Random Number
生成方式:crypto.getRandomValues()
、/dev/urandom
特点说明:可用于密码学、生成密钥或 token;不能被猜测,但同样种子可重现真随机数
性质:随机性、不可预测性、不可重现性
单词:True Random Number
生成方式:基于硬件噪声、量子效应、地震噪声等
特点说明:来源于物理世界;每次都是唯一的,完全不可预测且无法重现 -
one-way hash function
单向散列函数 (one-way hash function) 有一个输人和一个输出,其中输人称为消息 (message) 输出称为散列值 (hash value)。单向散列函数可以根据消息的内容计算出散列值,而散列值就可以被用来检查消息的完整性。
碰撞:如果单向散列函数计算出的散列值没有发生变化,那么消息很容易就会被篡改,这个单向散列函数也就无法被用于完整性的检查。两个不同的消息产生同一个散列值的情况称为碰撞 (collision)。如果要将单向散列函数用于完整性的检查,则需要确保在事实上不可能被人为地发现碰撞。
抗碰撞性:难以发现碰撞的性质,密码技术中所使用的单向散列函数,都需要具备抗碰撞性。
弱抗碰撞性:当给定某条消息的散列值时,单向散列函数必须确保要找到和该条消息具有相同散列值的另外一条消息是非常困难的。这一性质称为弱抗碰撞性。单向散列函数都必须具备弱抗碰撞性。
强抗碰撞性:是指要找到散列值相同的两条不同的消息是非常困难的这一性质。在这里,散列值可以是任意值。
密码技术中所使用的单向散列函数,不仅要具备弱抗碰撞性,还必须具备强抗碰撞性。
-
Password and Cryptography
专业领域中的严格区分
口令(Password):
- 身份验证的凭证,需通过哈希(Hash)存储,如 SHA-256 或 bcrypt。
- 安全性依赖用户设置强度(如长度、复杂度)。
密码(Cryptography):
- 加密算法或密钥,如对称加密(AES)、非对称加密(RSA)。
- 安全性依赖数学理论(如质因数分解难题、离散对数问题)。
口令:像“钥匙”:直接用于开锁(身份验证),但钥匙本身可能被复制或猜测。
密码学:像“锁的设计原理”:决定锁的安全性(加密强度),即使钥匙被窃,锁仍难以破坏。两者关系: 密码是身份认证的“入口”,而密码学为密码(及其他数据)提供保护机制。没有密码学的支持,密码极易被破解;没有密码,密码学仍可独立保护其他形式的数据安全。
一句话快速记忆:“口令是你自己设的钥匙,密码是锁匠造锁的科学。”