<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>克洛洛日记</title><description/><link>https://huangyijie.com/</link><item><title>期权交易统计 20251018</title><link>https://huangyijie.com//posts/options/analyzed-2025-10-18/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/analyzed-2025-10-18/</guid><pubDate>Sat, 18 Oct 2025 00:00:00 GMT</pubDate><content:encoded>扫描文件数量: 38 个

有效交易记录: 33 个

盈亏数据为空的记录: 5 个

---

📈 盈亏总额: 179.19

✅ 盈利交易: 22 个

❌ 亏损交易: 11 个

💰 盈利大于100的交易: 11 个

💸 亏损大于100的交易: 9 个

📊 胜率: 66.67%

📉 负率: 33.33%

---

## 详细交易数据:
- 2025-07-01-AAPL-SS: -19.82 (亏损)
- 2025-07-02-GLD-SS: -113.82 (亏损)
- 2025-07-08-AAPL-SS: 262.18 (盈利)
- 2025-07-19-UVXY-SS: -214.79 (亏损)
- 2025-07-21-UVXY-SS: -168.34 (亏损)
- 2025-07-22-META-SS: 214.18 (盈利)
- 2025-07-23-YINN-SL: 177.18 (盈利)
- 2025-07-28-TSLA-SS: -198.82 (亏损)
- 2025-07-29-UPS-SIV: -235.00 (亏损)
- 2025-07-31-CFLT-SIV: 8.59 (盈利)
- 2025-07-31-META-SL: -952.82 (亏损)
- 2025-08-02-AMD-SIV: 128.18 (盈利)
- 2025-08-02-GTLB-SS: 23.18 (盈利)
- 2025-08-02-TSLA-SS: 410.18 (盈利)
- 2025-08-05-HIMS-SIV: 54.59 (盈利)
- 2025-08-07-LLY-SIV: -352.82 (亏损)
- 2025-08-08-COIN-SS: 452.18 (盈利)
- 2025-08-14-AAPL-SS: 158.18 (盈利)
- 2025-08-14-HOOD-SS: 87.18 (盈利)
- 2025-08-19-RKLB-SS: -51.41 (亏损)
- 2025-08-20-TLT-SS: 13.59 (盈利)
- 2025-08-22-AAPL-SS: 12.18 (盈利)
- 2025-08-22-TSM-SS: 202.18 (盈利)
- 2025-08-26-IBKR-SS: 61.59 (盈利)
- 2025-08-28-URBN-SIV: -214.41 (亏损)
- 2025-08-30-TSLA-SS: 202.18 (盈利)
- 2025-09-10-ORCL-SIV: 99.18 (盈利)
- 2025-09-11-AAPL-SS: 210.18 (盈利)
- 2025-09-17-NVDA-SS: 110.59 (盈利)
- 2025-09-23-META-SS: -416.18 (亏损)
- 2025-10-02-BABA-SL: 69.18 (盈利)
- 2025-10-13-SPX-SL: 72.18 (盈利)
- 2025-10-14-AVGO-SL: 88.59 (盈利)</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>AVGO 2025.10.14 卖多</title><link>https://huangyijie.com//posts/options/2025-10-14-avgo-sl/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-10-14-avgo-sl/</guid><pubDate>Tue, 14 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: AVGO

**操作详情**: SELL 2025.10.17 370 CALL / BUY 2025.10.17 380 CALL

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖多  | 370  | 0.95 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 95 | 2025.10.17 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 无      | 无 | 无 | 无 | 无 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.10.14  | 到期  | 无 |


## 决策依据
1. 跟老师
2. 给最近的市场做对冲

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.10.17**

2025.10.17到期，拿到全部权利金

### 反思总结
无记录

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 12.81  | 88.59  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>SPX 2025.10.13 卖多</title><link>https://huangyijie.com//posts/options/2025-10-13-spx-sl/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-10-13-spx-sl/</guid><pubDate>Mon, 13 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: SPX

**操作详情**: SELL SPX 20251017 6700 CALL / BUY SPX 20251017 6710 CALL

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖多  | 6700  | 3.6 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 360 | 2025.10.17 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 无      | 无 | 无 | 无 | 无 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.10.13  | 1  | 无 |


## 决策依据
1. 老师是SPXW，我开错了
2. SPX是月度期权，周四到期

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.10.14**

2025年10月14日开平仓，2.75买入

### 反思总结
1. 第二天开盘大跌，可以平仓，后来大盘起来了再平仓挣得少

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 12.81  | 72.18  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>MSTU 2025.10.08 买多</title><link>https://huangyijie.com//posts/options/2025-10-08-mstu-bl/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-10-08-mstu-bl/</guid><pubDate>Wed, 08 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: MSTU

**操作详情**: BUY 20251121 5.0 CALL

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 买多  | 5  | 0.75 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 75 | 2025.11.21 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 0.289      | 0.289 | 0.225 | -0.008 | 0.004 | 0.001


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.10.08  | 45  | 无 |


## 决策依据
1. 大饼大跌（现在看还没跌到位）

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利100%或者亏损-50%

### 交易结果
平仓日：**未平仓**

无记录

### 反思总结
无记录

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 6.4  | 无  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>FUBO 2025.10.07 买多</title><link>https://huangyijie.com//posts/options/2025-10-07-fubo-bl/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-10-07-fubo-bl/</guid><pubDate>Tue, 07 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: FUBO

**操作详情**: BUY 20260116 4.0 CALL

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 买多  | 4  | 0.7 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 70 | 2025.01.16 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 0.52      | 0.52 | 0.235 | -0.004 | 0.007 | 0.003


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.10.07  | 90  | 无 |


## 决策依据
1. 低价股，看降息
2. 拿到财报后再判断

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利100%或者亏损-50%

### 交易结果
平仓日：**未平仓**

无记录

### 反思总结
无记录

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 6.4  | 无  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>BABA 2025.10.02 卖多</title><link>https://huangyijie.com//posts/options/2025-10-02-baba-sl/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-10-02-baba-sl/</guid><pubDate>Thu, 02 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: BABA

**操作详情**: SELL 20251003 190 CALL / BUY 20251003 195 CALL

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖多  | 190  | 1.68 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 168 | 2025.10.02 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 无      | 无 | 无 | 无 | 无 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.10.02  | 1  | 无 |


## 决策依据
1. 老师本周有SELL BABA CALL，相信老师的方向
2. BABA随后大涨，开卖185太危险，那就卖190

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**未平仓**

2025.10.03（美东时间）到期日开盘盈利卖出，盈利69.18。

### 反思总结
1. 当天市场不太好，可以博低于190
2. 相信自己的判断没卖185

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 12.81  | 69.18  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>GTLB 2025.10.01 卖空</title><link>https://huangyijie.com//posts/options/2025-10-01-gtlb-ss/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-10-01-gtlb-ss/</guid><pubDate>Wed, 01 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: GTLB

**操作详情**: SELL 20251031 48 PUT / BUY 20251031 43 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖空  | 48  | 2.87 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 287 | 2025.10.31 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 0.246      | 0.246 | 无 | 0.002 | -0.002 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.10.01  | 21  | 无 |


## 决策依据
1. GTLB处于BOLL下轨
2. MACD DIF开始向上

## 盈亏预览
|     最大盈利     |   最大亏损     |   盈亏平衡点（到期）   |
|:---------|:-------|:-----|
| 287 | -213 | 45.13 |

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**未平仓**

无记录

### 反思总结
无记录

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 12.81  | 无  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>股票期权的Theta</title><link>https://huangyijie.com//posts/notes/options-theta/</link><guid isPermaLink="true">https://huangyijie.com//posts/notes/options-theta/</guid><description>深入理解期权Theta参数：时间价值的隐形消耗者</description><pubDate>Tue, 23 Sep 2025 00:00:00 GMT</pubDate><content:encoded># 深入理解期权Theta参数：时间价值的隐形消耗者

&gt; 掌握时间衰减的力量，做出更明智的期权交易决策

在期权交易的世界里，**Theta（θ）** 是一个至关重要却又常被忽视的&quot;希腊字母&quot;参数。它衡量的是**时间流逝对期权价值的影响**，被称为**时间衰减**的量化指标。理解Theta对于期权交易者有效管理头寸、控制风险和优化策略至关重要。

## 1. 什么是Theta？

**Theta** 被定义为：**在其他条件不变的情况下，期权价格随时间流逝的变化率**。其计算公式为：

**Θ = ∂V/∂t**

其中V是期权价格，t是时间。

**通俗理解**：Theta衡量的是**期权价值每天会损失多少**。例如，如果某期权的Theta值为-0.05，意味着每天（其他条件不变时）该期权价值会减少0.05元。

Theta通常以**负值**表示，这提醒期权买方：**时间是他们的敌人**，因为期权价值会随着到期日的临近而不断衰减。

## 2. Theta的核心特性

### 2.1 Theta值的正负含义

| 头寸类型     | Theta值 | 时间流逝的影响         |
|-------------|---------|----------------------|
| **期权买方** | **负值** | 价值衰减，不利        |
| **期权卖方** | **正值** | 价值衰减，有利        |

对于期权买方（多头）而言，Theta为负值，表示每天都在损失时间价值；而对于期权卖方（空头），Theta为正值，表示每天都在从时间价值衰减中获利。

### 2.2 Theta与期权虚实程度的关系

Theta的大小与期权的**虚实状态**密切相关：

- **平值期权**（行权价≈标的市价）：**Theta绝对值最大**，时间价值衰减最快。
- **深实值或深虚值期权**：**Theta绝对值较小**，时间价值衰减较慢。
- **极度实值的看跌期权**：在某些特殊情况下，其Theta甚至可能为**正值**。

### 2.3 Theta与剩余时间的关系

Theta的衰减是**非线性**的：

- **到期日较远**：Theta绝对值较小，时间价值衰减缓慢。
- **临近到期**：Theta绝对值**急剧增加**，时间价值加速衰减，尤其是最后几周。

**例如**：剩余30天的期权，前20天可能只衰减20%的时间价值，而最后10天可能衰减80%的时间价值。

## 3. 影响Theta大小的因素

Theta值受多种因素影响，主要包括：

1.  **剩余到期时间**：越临近到期，Theta绝对值越大。
2.  **标的资产价格与行权价的关系**：平值期权Theta绝对值最大。
3.  **波动率**：波动率越低，Theta的绝对值通常越小。
4.  **利率和股息**：也会间接影响Theta值。

## 4. Theta的实战应用与策略

### 4.1 对买卖双方的意义

- **期权买方**：支付时间价值以换取未来的获利潜力，但需承担时间价值衰减的风险。买方应尽量避免在震荡市中长期持有高Theta的期权。
- **期权卖方**：通过卖出时间价值获利，但需承担标的资产价格大幅波动的风险。卖方希望时间快速流逝，期权价值加速衰减。

### 4.2 计算时间成本

投资者可以利用Theta值粗略计算继续持有期权的时间成本。Theta的绝对值越大，持有期权的每日时间成本就越高。

**举例说明**：
假设某上证50ETF认购期权理论价格为9.337元，Theta值为-0.107。这意味着在其他条件不变时，持有该期权理论上大约每天会损耗0.107元的时间价值。

### 4.3 Theta在交易策略中的考量

- **趋势明朗市场**：适合买方长期持有期权，因为潜在利润可能覆盖时间价值损耗。
- **震荡市场**：长期持有期权（尤其是高Theta期权）不划算，更适合卖方策略。
- **临近到期的价外期权**：由于内在价值为零，其价值仅包含时间价值，时间损耗非常剧烈，买方风险很高。

## 5. Theta与其他希腊字母的关系

Theta需要与Delta、Gamma、Vega等其他希腊字母结合分析，才能全面评估头寸风险。

**表：主要希腊字母风险指标对比**

| 希腊字母 | 衡量关系                  | 典型数值范围/符号      |
|----------|-------------------------|----------------------|
| Delta (Δ) | 股价变动对期权价格的影响   | 看涨: 0~1; 看跌: -1~0 |
| **Theta (θ)** | **时间流逝对期权价格的影响** | **通常为负值**       |
| Gamma (Γ) | 股价变动对Delta值的影响    | 正值                |
| Vega (ν)  | 波动率变动对期权价格的影响 | 正值                |

特别值得注意的是，在实际应用中，Theta参数常被视为Gamma的**镜像值**。对于Delta中性的投资组合，Theta和Gamma近似互为相反数。

## 6. 风险提示与交易建议

1.  **警惕&quot;末日轮&quot;期权**：临近到期日的平值期权Theta变化极快，时间价值加速衰减，风险巨大。
2.  **慎做买方**：期权买方需密切关注Theta损耗，避免因时间流逝导致期权价值快速贬值，尤其在标的资产价格未按预期变动时。
3.  **卖方风险**：虽然卖方从时间衰减中获利，但需警惕标的资产价格大幅波动的风险，可能造成远高于所收权利金的损失。
4.  **综合评估**：始终结合Delta、Gamma、Vega等其他风险参数综合评估头寸，避免孤立看待Theta风险。

## 总结

Theta是期权交易中衡量**时间价值衰减速度**的核心指标。它揭示了：
&gt; **期权价值如何随着时间流逝而无声地消逝**

理解和有效管理Theta风险，能帮助交易者：
*   更精准地**评估持仓的时间成本**。
*   制定更有效的**交易策略**（选择适合的期权类型和到期日）。
*   更好地**管理风险**，避免因时间衰减而遭受意外损失。

**记住**：对期权买方而言，时间是无声的敌人；对卖方而言，时间是隐形的盟友。尊重时间的力量，管理好自己的头寸，才能在期权交易中走得更远。</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>META 2025.09.23 卖空</title><link>https://huangyijie.com//posts/options/2025-09-23-meta-ss/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-09-23-meta-ss/</guid><description>正股太高，不要操作类似的，不好平仓，被动接正股会流动性会瞬间不足，被迫必须马上平仓</description><pubDate>Tue, 23 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: META

**操作详情**: SELL 2025.10.24 785 PUT / BUY 2025.10.24 780 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖空  | 785  | 3.1 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 310 | 2025.10.24 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 0.029      | 0.029 | 无 | -0.009 | 0.025 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.09.23  | 21  | 无 |


## 决策依据
1. META近期没怎么涨
2. 大老师持续看好

## 盈亏预览
|     最大盈利     |   最大亏损     |   盈亏平衡点（到期）   |
|:---------|:-------|:-----|
| 310 | -190 | 781.9 |

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损10`x0%权利金

### 交易结果
平仓日：**2025.10.17**

2025年10月17日，785的PUT被行权，被动接100股，收取权利金3839.79。晚上以707.91卖出100股，亏损7711.56，同时以69.95的价格卖出780的PUT，盈3455.59

### 反思总结
1. 有点冲动
2. 对META不太了解
3. 正股股价太高，期权价格高，流动性不好，780的PUT差点平不了
4. 正股股价高，被行权会流动性不足

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 12.82  | -416.18  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>股票期权的Gamma</title><link>https://huangyijie.com//posts/notes/options-gamma/</link><guid isPermaLink="true">https://huangyijie.com//posts/notes/options-gamma/</guid><description>股票期权中的Gamma：理解风险与收益的加速器</description><pubDate>Sun, 21 Sep 2025 00:00:00 GMT</pubDate><content:encoded># 股票期权中的Gamma：理解风险与收益的加速器

在股票期权交易中，**Gamma（γ）** 是一个核心的“希腊字母”风险指标，它衡量了期权**Delta值对标的资产价格变化的敏感度**。理解Gamma对于有效管理期权头寸的风险和捕捉交易机会至关重要。

## 1. 什么是Gamma？

**Gamma** 是期权价格对标的资产价格的**二阶导数**。其定义为：**标的资产价格每变动1个单位，所引起期权Delta值的变化量**。

公式表示为： **Γ = ΔDelta / Δ标的资产价格**

**一个简单的比喻**：
*   **Delta** 像汽车的**速度**，表示期权价格相对于股价的变动速度。
*   **Gamma** 像汽车的**加速度**，表示Delta值的变化速度，即速度变化的快慢。

**举个例子**：
假设某平值期权的Delta为0.5，Gamma为0.02。
*   若标的股票价格上涨1元，Delta将增加0.02，变为0.52。
*   若股价再上涨1元，Delta将再增加0.02，变为0.54。

## 2. Gamma的特性与规律

### 2.1 Gamma值的正负

*   **期权买方**（多头）：**Gamma始终为正值**（无论看涨还是看跌期权）。
*   **期权卖方**（空头）：**Gamma始终为负值**。

### 2.2 Gamma与期权虚实程度的关系

Gamma的大小与期权的虚实状态密切相关：
*   **平值期权**（行权价≈标的市价）：**Gamma值最大**。因为此时Delta对标的资产价格的变化最敏感。
*   **深实值或深虚值期权**：**Gamma值趋近于0**。因为它们的Delta已接近1、-1或0，变化空间很小。

### 2.3 Gamma与剩余到期时间的关系

*   **临近到期**：平值期权的**Gamma值会急剧增加**。因为股价的微小波动就可能决定期权的最终状态，Delta变化极为剧烈。
*   **到期日较远**：所有期权的Gamma值相对较小且差异不大。

### 2.4 Gamma与波动率的关系

*   **波动率越高**，期权权利金越“厚”，Gamma值**越低**。
*   **波动率越低**，Gamma值**相对较高**。

## 3. Gamma的实战意义与应用

### 3.1 衡量与管理Delta风险

Gamma揭示了Delta的**稳定性**：
*   **高Gamma**：意味着Delta值不稳定，会随股价变动而剧烈变化。对期权买方有利，因为方向正确时盈利会加速；但对卖方意味着风险骤增。
*   **低Gamma**：意味着Delta值稳定，股价变动对Delta影响较小。

### 3.2 Gamma中性策略

投资者可以尝试构建**Gamma中性**组合，旨在消除股价波动对投资组合Delta值的影响，从而专注于从其他因素（如时间衰减或波动率变化）中获利。这通常需要同时持有不同Gamma值的头寸，并使整体Gamma为零。
*   **高Gamma头寸**：需要**更频繁地调整**对冲仓位以维持Delta中性。
*   **低Gamma头寸**：调整对冲仓位的频率可以较低。

### 3.3 交易策略的核心：做多波动与做空波动

Gamma策略的本质常是交易**波动率**而非价格方向本身：

*   **做多Gamma（Long Gamma）**：
    *   **操作**：以**买入期权**为主（买入看涨或看跌期权）。
    *   **逻辑**：预期标的资产价格会有**大幅波动**（无论涨跌）。波动越大，Delta的加速变化带来的盈利潜力越大。这类似于“亏有限，赚无限”的策略。
*   **做空Gamma（Short Gamma）**：
    *   **操作**：以**卖出期权**为主（卖出看涨或看跌期权）。
    *   **逻辑**：预期标的资产价格将**窄幅震荡**，波动率下降。通过赚取时间价值衰减获利。
    *   **⚠️高风险警告**：做空Gamma收益有限（最多赚取权利金），但理论上风险无限。一旦市场出现大幅波动，可能面临巨大亏损。普通投资者应极度谨慎。

### 3.4 “Gamma挤压”现象

市场中一种特殊的连锁反应。当大量投资者（尤其是机构）卖出期权（做空Gamma）后，若标的价格出现显著波动，他们会被迫在现货市场进行同向操作以对冲Delta风险，从而进一步加剧价格波动，形成恶性循环。

## 4. 给投资者的关键提示

1.  **关注平值期权**：平值期权及其附近期权的Gamma值最高，价格变化最敏感，是短线交易和波动率交易的重点，但风险也最高。
2.  **警惕“末日轮”风险**：临近到期日的平值期权Gamma变化极快，价格可能剧烈波动。卖方需格外警惕风险，买方也要注意时间价值的快速衰减。
3.  **慎做卖方**：卖出期权（做空Gamma）虽然能赚取权利金，但潜在风险巨大，务必严格控制仓位，并设置止损。
4.  **综合考量**：切勿孤立看待Gamma。必须将其与**Delta、Theta（时间衰减）、Vega（波动率风险）** 等其他希腊字母结合分析，才能全面评估头寸风险。

## 总结

Gamma是期权交易中衡量“加速度”的关键指标。它揭示了：
&gt; **盈利可能如何加速，风险可能如何放大**。

理解并有效管理Gamma风险，能帮助投资者：
*   更精准地**评估头寸风险**。
*   构建更复杂的**对冲策略**。
*   更好地**把握市场波动带来的机会**。

**记住**：高Gamma是把双刃剑，既能带来收益的快速增长，也能导致风险的快速积累。尊重市场，管理仓位，永远不要低估Gamma的力量。</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>股票期权的Delta</title><link>https://huangyijie.com//posts/notes/options-delta/</link><guid isPermaLink="true">https://huangyijie.com//posts/notes/options-delta/</guid><description>股票期权中的Delta：解读风险与收益的敏感度</description><pubDate>Sat, 20 Sep 2025 00:00:00 GMT</pubDate><content:encoded># 股票期权中的Delta：解读风险与收益的敏感度

在股票期权的世界里，**Delta（Δ）** 是一个至关重要且基础的概念。它就像一个灵敏的刻度尺，衡量着期权价格对于其标的股票价格变动的敏感程度。理解Delta，能帮助我们更好地管理风险、评估潜在收益。

## 1. 什么是Delta？

**Delta** 的定义是：**标的股票价格每变动1个单位，期权价格预期会随之变动的数值**。

它的计算公式非常简单：
**Delta = 期权价格变化值 / 标的股票价格变化值**

## 2. Delta值的含义与范围

Delta值不是一个固定的数字，它的取值范围和正负传递了丰富的信息。

### 看涨期权 vs. 看跌期权

*   **看涨期权（Call Option）** 的 **Delta值介于 0 到 +1 之间**。这是因为当股票价格上涨时，看涨期权的价格也会上涨，二者同向变动。
*   **看跌期权（Put Option）** 的 **Delta值介于 -1 到 0 之间**。这是因为当股票价格上涨时，看跌期权的价格会下跌，二者反向变动。

### 虚实程度的影响

Delta的绝对值大小可以直观地反映期权的“虚实”状态：

| 期权状态 | 看涨期权Delta | 看跌期权Delta | 含义 |
| :--- | :--- | :--- | :--- |
| **深度实值** | 接近 +1 | 接近 -1 | 期权价值受股价变动影响巨大，几乎等幅变动。 |
| **平值附近** | 接近 +0.5 | 接近 -0.5 | 股价变动对期权价值有显著影响，但非等幅。 |
| **深度虚值** | 接近 0 | 接近 0 | 股价变动对期权价值影响微乎其微。 |

**一个简单的比喻**：你可以把Delta的绝对值**近似地理解为**该期权**到期时变为实值期权的概率**。一个Delta为0.8的看涨期权，大约有80%的概率在到期时是实值的。

## 3. Delta的实际应用

Delta不仅仅是一个理论指标，它在实战中有着重要作用。

### 衡量持仓风险与方向

Delta具有**可加性**。一个投资组合的总Delta值等于所有成分（股票+期权）Delta值的总和。

**举个例子**：
假设你持有以下头寸：
*   买入100股某股票（Delta = +1 * 100 = +100）
*   卖出2张该股票的看涨期权（每张Delta = +0.6，共 -2 * 0.6 * 100 = -120）

那么你的**组合总Delta = (+100) + (-120) = -20**。
这个负的Delta值意味着你的整体持仓更像一个**偏空**的头寸，相当于持有20股空头股票。如果股票价格上涨，你的组合可能会亏损；如果下跌，则可能盈利。

### Delta中性策略（Delta Hedging）

这是Delta最经典的应用之一。投资者可以通过构建一个**总Delta为零或接近零**的投资组合，来规避标的股票价格方向性波动的风险（即市场涨跌的风险）。

**如何实现？**
例如，你持有10手看跌期权多头，每手的Delta是-0.2，那么你部位的Delta就是 -2（10 * -0.2 * 1）。为了对冲这个风险，你可以**买入2手标的股票**（Delta为+1 * 2 = +2），使得整体Delta变为 (-2) + (+2) = 0。

需要注意的是，Delta值会随着股价、波动率和时间的变化而不断变化，因此这种**对冲需要动态调整**才能持续保持“中性”状态。

### 估算价格变动

Delta可以帮助你快速估算股价小幅变动时期权价格的近似变化。

*   **例子1**：一张Delta为+0.5的看涨期权，如果标的股票价格上涨1元，那么这张期权价格大约会上涨0.5元。
*   **例子2**：一张Delta为-0.4的看跌期权，如果标的股票价格上涨1元，那么这张期权价格大约会下跌0.4元。

**请注意**：这种线性关系仅在股价发生**微小变动**时估算效果较好。当股价发生大幅波动时，就需要引入另一个叫“Gamma”的指标来更精确地衡量Delta本身的变化了。

## 4. 影响Delta的因素

Delta值并非一成不变，它会受到以下几个关键因素的影响：

*   **标的资产价格**：这是最直接的因素，随着股价变动，期权的虚实状态改变，Delta也随之变化。
*   **波动率**：市场波动率的上升会使虚值期权的Delta向0.5靠拢，也使实值期权的Delta向0.5靠拢。在高波动环境中，所有期权都更像平值期权。
*   **到期时间**：随着到期日的临近，平值期权的Delta会剧烈变化，而实值和虚值期权的Delta会加速趋向于1或0。

## 总结

股票期权中的Delta是一个核心而实用的风险指标。它揭示了期权价格与股价变动的敏感关系，指明了头寸的风险方向，是进行**风险管理**和**策略构建**的基石。

记住这几点：
*   **看涨正，看跌负**
*   **实值近1，虚值近0，平值近0.5**
*   **可相加，辨方向**
*   **可对冲，控风险**</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>TSLA 2025.09.18 卖空</title><link>https://huangyijie.com//posts/options/2025-09-18-tsla-ss/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-09-18-tsla-ss/</guid><pubDate>Thu, 18 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: TSLA

**操作详情**: SELL 2026.01.16 450 PUT / 2025.01.16 440 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖空  | 450  | 6.15 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 615 | 2025.01.16 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 0.028      | 0.028 | 无 | 无 | -0.002 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.09.18  | 90  | 无 |


## 决策依据
1. TSLA涨太多，平了手里的TSLL止盈
2. 持续看好TSLA年底到450
3. 开仓中期的SS继续在车上

## 盈亏预览
|     最大盈利     |   最大亏损     |   盈亏平衡点（到期）   |
|:---------|:-------|:-----|
| 620 | -380 | 443.8 |

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损10`x0%权利金

### 交易结果
平仓日：**未平仓**

无记录

### 反思总结
无记录

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 12.82  | 无  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>NVDA 2025.09.17 卖空</title><link>https://huangyijie.com//posts/options/2025-09-17-nvda-ss/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-09-17-nvda-ss/</guid><pubDate>Wed, 17 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: NVDA

**操作详情**: SELL 2025.10.03 165 PUT / BUY 2025.10.03 160 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖空  | 165  | 1.17 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 117 | 2025.10.03 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 0.108      | 0.108 | -0.006 | 0.025 | -0.029 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.09.17  | 14  | 无 |


## 决策依据
1. 跟老师的SEL PUT，但是加入保护腿

## 盈亏预览
|     最大盈利     |   最大亏损     |   盈亏平衡点（到期）   |
|:---------|:-------|:-----|
| 122.5 | -377.5 | 163.78 |

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损10`x0%权利金

### 交易结果
平仓日：**2025.10.03**

2025.10.03到期，NVDA187.62，100%收益（117）

### 反思总结
无记录

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 12.82  | 110.59  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>AAPL 2025.09.11 卖空</title><link>https://huangyijie.com//posts/options/2025-09-11-aapl-ss/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-09-11-aapl-ss/</guid><pubDate>Thu, 11 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: AAPL

**操作详情**: SELL 2025.10.10 235 PUT / BUY 2025.10.10 230 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖空  | 235  | 2.88 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 288 | 2025.10.10 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 0.145      | 0.145 | 0.001 | -0.011 | 0.02 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.09.11  | 21  | 无 |


## 决策依据
1. 苹果从发布会后开始下跌，差不多了
2. 跨美联储降息会

## 盈亏预览
|     最大盈利     |   最大亏损     |   盈亏平衡点（到期）   |
|:---------|:-------|:-----|
| 288 | -212 | 232.12 |

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损10`x0%权利金

### 交易结果
平仓日：**2025.09.20**

2025.09.20平仓，0.65买入

### 反思总结
1. 下跌后开仓，风险低

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 12.82  | 210.18  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>ORCL 2025.09.10 做空波动率</title><link>https://huangyijie.com//posts/options/2025-09-10-orcl-siv/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-09-10-orcl-siv/</guid><pubDate>Wed, 10 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: ORCL

**操作详情**: SELL 2025.09.12 340 CALL / BUY 2025.09.12 350 CALL

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 做空波动率  | 340  | 2.15 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 215 | 2025.09.12 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 无      | 无 | 无 | 无 | 无 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.09.10  | 1  | 无 |


## 决策依据
1. 看虎友开仓，跟单，虽然虎友是330的

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损10`x0%权利金

### 交易结果
平仓日：**2025.09.11**

2025.09.11平仓，盈利99.18

### 反思总结
1. ORCL太热，开仓后最多出现亏200+
2. 当天没平仓，虽然第二天跌了，但万一涨呢？
3. 尽量不做卖垂直差价波动率

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 12.82  | 99.18  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>TSLA 2025.08.30 卖空</title><link>https://huangyijie.com//posts/options/2025-08-30-tsla-ss/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-08-30-tsla-ss/</guid><pubDate>Sat, 30 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: TSLA

**操作详情**: SELL 2025.10.10 340 PUT / 2025.10.10 335 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖空  | 340  | 2.65 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 265 | 2025.10.10 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 0.039      | 0.039 | 无 | -0.001 | -0.002 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.08.30  | 21  | 无 |


## 决策依据
1. TSLA下半年没什么大坏消息，震荡向上

## 盈亏预览
|     最大盈利     |   最大亏损     |   盈亏平衡点（到期）   |
|:---------|:-------|:-----|
| 264.5 | -235.5 | 337.36 |

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损10`x0%权利金

### 交易结果
平仓日：**2025.09.15**

当天平仓，亏214.41（-221.52%）

### 反思总结
1. 2025.09.15平仓，0.50买入

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 12.82  | 202.18  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>URBN 2025.08.28 做空波动率</title><link>https://huangyijie.com//posts/options/2025-08-28-urbn-siv/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-08-28-urbn-siv/</guid><description>开盘卖波动率的策略只能用在热门股</description><pubDate>Thu, 28 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: URBN

**操作详情**: SELL 20250829 73 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 做空波动率  | 73  | 1 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 100 | 2025.08.29 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 无      | 无 | 无 | 无 | 无 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.08.28  | 1  | 无 |


## 决策依据
1. 财报不行，盘前大跌

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.08.28**

当天平仓，亏214.41（-221.52%）

### 反思总结
1. 没有严格执行-100%的止损线
2. 正股成交量不行
3. 这种开盘卖波动率的策略只能用在热门股

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 6.4  | -214.41  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>IBKR 2025.08.26 卖空</title><link>https://huangyijie.com//posts/options/2025-08-26-ibkr-ss/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-08-26-ibkr-ss/</guid><pubDate>Tue, 26 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: IBKR

**操作详情**: SELL 20250829 61.5 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖空  | 61.5  | 0.86 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 86 | 2025.08.29 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 无      | 无 | 无 | 无 | 无 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.08.26  | 3  | 无 |


## 决策依据
1. 跟老师，IBKR纳入标普500

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**未平仓**

2025.08.29 3点57（美东8.28）0.18平仓

### 反思总结
无记录

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 2.4  | 61.59  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>MSFT 2025.08.23 卖空</title><link>https://huangyijie.com//posts/options/2025-08-23-msft-ss/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-08-23-msft-ss/</guid><pubDate>Sat, 23 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: MSFT

**操作详情**: SELL 20251219 530 PUT / BUY 20251219 520 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖空  | 530  | 5.57 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 557 | 2025.12.19 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 0.072      | 0.072 | 无 | -0.008 | 0.049 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.08.23  | 90  | 无 |


## 决策依据
1. 今年会开始降息，MSFT在AI里挣钱能力占优，股价从财报后连跌多日，BOLL下轨开始往上走

## 盈亏预览
|     最大盈利     |   最大亏损     |   盈亏平衡点（到期）   |
|:---------|:-------|:-----|
| 557 | -443 | 524.43 |

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**未平仓**

无记录

### 反思总结
无记录

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 12.82  | 无  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>AAPL 2025.08.22 卖空</title><link>https://huangyijie.com//posts/options/2025-08-22-aapl-ss/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-08-22-aapl-ss/</guid><pubDate>Fri, 22 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: AAPL

**操作详情**: SELL 20250829 230 PUT / BUY 20250829 225 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖空  | 230  | 2.35 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 235 | 2025.08.29 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 0.248      | 0.248 | -0.004 | -0.02 | 0.001 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.08.22  | 5  | 无 |


## 决策依据
1. 鲍威尔讲话鸽派，9月大概率降息，手里有个苹果亏损，加仓，但是收盘反思觉得到期时间太短。下周三之前看情况提前平仓

## 盈亏预览
|     最大盈利     |   最大亏损     |   盈亏平衡点（到期）   |
|:---------|:-------|:-----|
| 230 | -269.5 | 227.7 |

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.08.26**

2025.08.26 2.1平仓

### 反思总结
1. 没等到周五8.29就提前平仓
2. AAPL其实就代表大盘
3. 其实走势26号的时候可以

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 8.84  | 12.18  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>TSM 2025.08.22 卖空</title><link>https://huangyijie.com//posts/options/2025-08-22-tsm-ss/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-08-22-tsm-ss/</guid><pubDate>Fri, 22 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: TSM

**操作详情**: SELL 20250905 240 PUT / BUY 20250905 235 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖空  | 240  | 3.15 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 315 | 2025.09.05 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 0.139      | 0.139 | 0.003 | -0.022 | 0.02 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.08.22  | 10  | 无 |


## 决策依据
1. 大概率降息，半导体连跌多日，但是下周英伟达财报，周一周二看能不能提前移仓多一个礼拜

## 盈亏预览
|     最大盈利     |   最大亏损     |   盈亏平衡点（到期）   |
|:---------|:-------|:-----|
| 315 | -185 | 236.85 |

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.09.05**

2025.09.05最后一天开盘平了，1.0平仓

### 反思总结
1. 由于前两天已接近最大损失，所以搏最后一天的就业数据
2. 平仓的时候是大盘的盘中突然下跌，太着急
3. 半导体大跌是因为AVGO太好，英伟达下跌，但TSM是AVGO供应商，所以不用太担心市场减少

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 12.82  | 202.18  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>TLT 2025.08.20 卖空</title><link>https://huangyijie.com//posts/options/2025-08-20-tlt-ss/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-08-20-tlt-ss/</guid><pubDate>Wed, 20 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: TLT

**操作详情**: SELL 20250912 86 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖空  | 86  | 0.8 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 80 | 2025.09.12 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 无      | 无 | 无 | 无 | 无 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.08.20  | 21  | 无 |


## 决策依据
1. 周五有演讲，不敢入其他股
2. 老师跟单
3. TLT处于低点，如果降息会涨，如果加息也不会跌多少

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.08.23**

2025.08.23提前平仓，由于没有保护腿，保证金有点高。鲍威尔降火鸽派，释放保证金。

### 反思总结
无记录

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 4.42  | 13.59  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>RKLB 2025.08.19 卖空</title><link>https://huangyijie.com//posts/options/2025-08-19-rklb-ss/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-08-19-rklb-ss/</guid><pubDate>Tue, 19 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: RKLB

**操作详情**: SELL 20260116 32 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖空  | 32  | 3.25 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 325 | 2026.01.16 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 无      | 无 | 无 | 无 | 无 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.08.19  | 120  | 无 |


## 决策依据
1. 看到别人分享，加上RKLB已连续跌多日

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.08.21**

2025.08.21提前平，3.7买入

### 反思总结
1. 由于周五有演讲，怕大跌，平掉无保护的期权
2. 对这个股没有研究，不应该跟风

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 2.42  | -51.41  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>AAPL 2025.08.14 卖空</title><link>https://huangyijie.com//posts/options/2025-08-14-aapl-ss/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-08-14-aapl-ss/</guid><pubDate>Thu, 14 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: AAPL

**操作详情**: SELL 20250905 235 PUT / BUY 20250905 230 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖空  | 235  | 2.34 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 234 | 2025.09.05 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 无      | 无 | 无 | 无 | 无 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.08.14  | 21  | 无 |


## 决策依据
1. 老师开仓，苹果9月发布新品

## 盈亏预览
|     最大盈利     |   最大亏损     |   盈亏平衡点（到期）   |
|:---------|:-------|:-----|
| 233.5 | -266.5 | 232.66 |

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.09.05**

2025.09.04提前平，0.63买入，因GOOG反垄断胜

### 反思总结
1. 在快到期且接近最大亏损可搏到最后
2. 多看后面的消息，这单可不用提前平，后面又大涨

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 8.84  | 158.18  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>HOOD 2025.08.14 卖空</title><link>https://huangyijie.com//posts/options/2025-08-14-hood-ss/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-08-14-hood-ss/</guid><pubDate>Thu, 14 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: HOOD

**操作详情**: SELL 20250912 115 PUT / BUY 20250912 110 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖空  | 115  | 3 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 300 | 2025.09.12 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 0.099      | 0.099 | 无 | -0.008 | 0.004 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.08.14  | 21  | 无 |


## 决策依据
1. HOOD大跌，触碰BOLL中轨

## 盈亏预览
|     最大盈利     |   最大亏损     |   盈亏平衡点（到期）   |
|:---------|:-------|:-----|
| 300 | -200 | 112 |

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.09.08**

2025.09.08 平仓，盈利87.18

### 反思总结
1. 开仓时HOOD本身有点高
2. 时间有点短，虽然是1个月，但正股本身太高了
3. 最后能盈利有点运气成分

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 12.82  | 87.18  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>COIN 2025.08.09 卖空</title><link>https://huangyijie.com//posts/options/2025-08-08-coin-ss/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-08-08-coin-ss/</guid><pubDate>Sat, 09 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: COIN

**操作详情**: SELL 20251017 330 PUT / BUY 20251017 320 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖空  | 330  | 6 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 600 | 2025.10.17 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 0.051      | 0.051 | 无 | -0.004 | 0.007 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.08.09  | 45  | 无 |


## 决策依据
1. COIN持续下跌，各指标显示已经到阶段底部，所以做一个2个月的期权

## 盈亏预览
|     最大盈利     |   最大亏损     |   盈亏平衡点（到期）   |
|:---------|:-------|:-----|
| 600.5 | -399.5 | 324 |

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.10.03**

2025.10.03（美东时间）平仓，盈利452.18USD，提前平仓时因为盈利超过了70%

### 反思总结
1. 这两天，币圈不错，有大会要开
2. 70%以前走这个看上去很正确
3. 两个月的时间是个很好的周期，对于币圈相关股

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 12.82  | 452.18  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>KDJ指标</title><link>https://huangyijie.com//posts/notes/kdj/</link><guid isPermaLink="true">https://huangyijie.com//posts/notes/kdj/</guid><description>KDJ指标完全指南：从原理到实战应用</description><pubDate>Fri, 08 Aug 2025 00:00:00 GMT</pubDate><content:encoded># KDJ指标完全指南：从原理到实战应用

## 一、KDJ指标的起源与核心概念
KDJ指标（随机指标）由乔治·莱恩（George Lane）于1950年代创立，是结合动量观念、强弱指标和移动平均线优点的经典摆动指标。它通过测量收盘价在特定周期内相对于价格区间的位置，判断**超买超卖状态**并预测短期价格转折点，被誉为 **&quot;短线交易之王&quot;**。

### 核心构成的三条曲线：
- **K线（快线）**：反映短期价格动量，计算公式为：

  _K = (当日收盘价 - N日内最低价) / (N日内最高价 - N日内最低价) × 100_
  
  直接体现价格在周期内的相对位置。

- **D线（慢线）**：K值的平滑处理（默认M日移动平均），代表中期趋势方向。

  _D = K值的M日简单移动平均_

- **J线（方向敏感线）**：放大K与D的差值，捕捉极端波动信号。  

  _J = 3×K - 2×D_

&gt; **默认参数**：N=9（计算周期），M=3（平滑次数）。K、D值范围0-100，J值可突破100或跌破0，波动更剧烈。

## 二、KDJ四大核心交易信号解析

### 1. 超买超卖区域信号
| 区域      | 判定条件          | 市场含义                     | 操作建议         |
|-----------|-------------------|------------------------------|------------------|
| **超买区** | K/D&gt;80 或 J&gt;100   | 市场过热，回调风险高         | 减仓或卖出      |
| **超卖区** | K/D&lt;20 或 J&lt;0     | 市场过度恐慌，反弹概率大     | 逢低布局        |

**注意**：
- 强势股可能持续超买（如K&gt;80后继续上行），需结合趋势过滤
- J值极端波动（J&gt;100或J&lt;0）反转概率显著提升

### 2. 金叉与死叉信号
| 信号类型 | 形成条件          | 可靠性强化条件               | 案例验证                |
|----------|-------------------|------------------------------|-------------------------|
| **金叉** | K线上穿D线        | K/D&lt;20 + 成交量放大 &gt;1.5倍   | 药明康德2024年1月金叉后反弹25% |
| **死叉** | K线下穿D线        | K/D&gt;80 + 顶背离形态          | AI概念股2023年死叉后1周跌30% |

**陷阱识别**：
- 假金叉：下跌趋势中K/D在30-40区间金叉 + 量能萎缩（量比&lt;0.8）
- 假死叉：股价在20日均线上方死叉 + MACD红柱未缩短

### 3. 背离信号：趋势反转预警
| 类型     | 特征                      | 增强信号                  | 成功率  |
|----------|---------------------------|---------------------------|---------|
| **顶背离** | 价格创新高，KDJ峰值降低   | 死叉确认 + 放量跌破前低   | &gt;80%    |
| **底背离** | 价格创新低，KDJ谷底抬高    | 金叉确认 + 放量突破前高   | &gt;75%    |

▶️ **经典案例**：
- 2021年2月比特币价格创新高$58,000，但KDJ的D值低于前高，随后暴跌至$30,000
- 2020年3月标普500指数底背离引发V型反转

### 4. J线极端值预警
- **J&gt;100**：市场极度亢奋，短期回调概率极高（尤其J值下穿100时）
- **J&lt;0**：市场恐慌过度，反弹需求强烈（J值上穿0时是买点）

## 三、参数优化策略：适应不同行情
| 交易风格   | 推荐参数  | 适用场景                  | 特点                     |
|------------|-----------|---------------------------|--------------------------|
| 短线高频   | (5,3,3)   | 题材炒作/15分钟级别交易    | 敏感度高，信号频繁       |
| 中线波段   | (14,3,3)  | 趋势股/日线级别操作        | 平衡灵敏度与噪音过滤     |
| 长线投资   | (25,5,5)  | 月线级别大趋势判断         | 忽略短期波动，钝化少     |

**调整口诀**

_行情越妖，参数越小；行情越稳，参数越大；震荡市调大参数，单边市调小参数_

## 四、KDJ的黄金搭档：多指标共振策略
### 1. KDJ + MACD（趋势+动量）
- **买入**：KDJ金叉 + MACD绿柱缩量
- **卖出**：KDJ死叉 + MACD红柱缩量

### 2. KDJ + 均线（趋势过滤）
- **只做多头**：KDJ金叉时股价 &gt; 60日均线
- **回避空头**：KDJ金叉时股价 &lt; 60日均线 → 无视信号

### 3. KDJ + 成交量（识别真假）
- **真信号**：金叉/死叉时量能放大至5日均量1.5倍以上
- **假信号**：交叉时量能低迷 → 可能是主力骗线

## 五、实战避坑指南
### ⚠️ 失效场景与对策：
1. **单边行情钝化**
    - 特征：牛市KDJ长期&gt;80，熊市长期&lt;20
    - 对策：改用趋势跟踪工具（如5日均线），忽略超买超卖信号

2. **突发消息干扰**
    - 案例：公司业绩暴雷导致一字跌停，KDJ信号滞后
    - 对策：基本面恶化时果断止损，不依赖技术指标

3. **小盘股/庄股操控**
    - 识别：分时图脉冲式拉升后回落 + 缩量金叉 = 诱多陷阱

## 六、经典实战案例解析
### 案例1：底部反转组合信号（高胜率）
**条件**：
- KDJ在超卖区（K&lt;15）形成金叉
- J值从&lt;0区域上穿0轴
- 日线出现阳包阴K线形态  
  **效果**：药明康德2023年10月该信号出现后3周反弹40%

### 案例2：顶部背离逃顶
**条件**：
- 股价创新高但KDJ峰值降低
- 死叉时K&gt;80 + 放量跌破10日均线  
  **效果**：2023年AI概念股及时离场避免30%跌幅

## 七、终极总结：KDJ三阶用法
| 行情类型   | 核心信号组合                  | 目标胜率 |
|------------|-----------------------------|----------|
| 震荡市     | 20下金叉 + 量能放大          | 65-75%   |
| 趋势回调   | 多头趋势中KDJ回落至40下方金叉 | &gt;70%     |
| 极端反转   | J&lt;0 + 底背离 + 长下影线       | &gt;80%     |

**交易铁律**：
&gt; ✨ **震荡市KDJ是&quot;神器&quot;，单边市是&quot;凶器&quot;！**  
&gt; ✨ **永远不要与20日均线反向交易！**  
&gt; ✨ **指标是工具，趋势为王，量价为胆！**

---
**实战口诀**：  

_金叉不涨看量能，死叉不跌看支撑；钝化行情趋势强，背离信号要盯牢_</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>布林线</title><link>https://huangyijie.com//posts/notes/boll/</link><guid isPermaLink="true">https://huangyijie.com//posts/notes/boll/</guid><description>布林线：揭秘股价波动的 “隐形轨道”</description><pubDate>Thu, 07 Aug 2025 00:00:00 GMT</pubDate><content:encoded># 布林线：揭秘股价波动的 “隐形轨道”

![](https://p3-flow-imagex-sign.byteimg.com/ocean-cloud-tos/image_skill/ca698ca2-aa0d-4786-b8b3-dc90b1dc1740_1754497826394031927_origin\~tplv-a9rns2rl98-image-qvalue.jpeg?rk3s=6823e3d0\&amp;x-expires=1786033827\&amp;x-signature=2UU19LcqNAdb6FYX%2FgcBY%2BK4Jlc%3D)

在技术分析的工具箱中，布林线（Bollinger Bands）无疑是最受欢迎的指标之一。它由著名分析师约翰・布林格（John Bollinger）在 20 世纪 80 年代提出，凭借对股价波动范围的精准刻画，成为投资者判断趋势、捕捉买卖信号的重要工具。

## 一、布林线的基本构成

布林线由三条曲线构成，共同形成股价运行的 “轨道系统”：



*   **中轨（Middle Band）**：通常以 20 日移动平均线（MA20）计算，代表股价的中期趋势，是整个指标的核心参考线。

*   **上轨（Upper Band）**：中轨加上 2 倍的标准差，反映股价的压力位。

*   **下轨（Lower Band）**：中轨减去 2 倍的标准差，反映股价的支撑位。

这三条轨道并非固定不变，而是会随着股价波动自动调整宽窄，**波动率越高，轨道越宽；波动率越低，轨道越窄**，完美体现了 “市场波动具有周期性” 的核心思想。

## 二、布林线的计算逻辑

布林线的计算基于统计学中的 “正态分布” 原理，具体步骤如下：



1.  计算某段时间（默认 20 天）的收盘价移动平均线（中轨）；

2.  计算这段时间收盘价的标准差（衡量价格波动幅度）；

3.  上轨 = 中轨 + 2× 标准差；

4.  下轨 = 中轨 - 2× 标准差。

其中，20 天周期和 2 倍标准差是约翰・布林格经过大量回测后推荐的参数，适用于大多数市场，但投资者也可根据品种特性（如个股、期货）灵活调整。

## 三、布林线的核心功能

### 1. 判断股价所处位置

当股价运行在上轨附近时，说明市场可能处于超买状态，后续回调概率增加；当股价触及下轨时，往往意味着超卖，反弹机会较大。但需注意，**强势趋势中股价可能长期贴着上轨或下轨运行**，此时不能单纯依据轨道位置判断反转。

### 2. 识别趋势强弱



*   上升趋势中，布林线轨道向上倾斜，股价多数时间在中轨上方运行；

*   下降趋势中，轨道向下倾斜，股价常位于中轨下方；

*   横盘整理时，轨道呈水平状态，股价在上下轨之间来回波动。

### 3. 预测行情转折点

当布林线轨道由宽变窄（“收口”）时，表明市场波动率降低，多空双方陷入僵持，往往预示着即将出现大行情（“变盘”）；当轨道由窄变宽（“开口”）时，说明行情启动，趋势可能持续一段时间。

## 四、实战应用技巧



1.  **结合 K 线形态**：当股价触及下轨并出现锤子线、启明星等见底信号时，可考虑买入；触及上轨并出现上吊线、黄昏星等见顶信号时，可考虑卖出。

2.  **配合成交量**：股价突破上轨时，若成交量同步放大，说明上涨动力充足，趋势更可靠；反之则可能是假突破。

3.  **与其他指标联用**：布林线与 RSI（相对强弱指标）、MACD 等配合使用，可过滤无效信号。例如，股价上穿布林线上轨且 RSI 超过 70，超买信号更强烈。

## 五、注意事项



*   布林线属于滞后指标，无法预测突发事件，需结合基本面分析综合判断；

*   不同市场（如 A 股、美股、外汇）的波动率差异较大，参数设置需灵活调整；

*   避免单一依赖布林线决策，任何指标都有局限性，需建立多维度分析体系。

掌握布林线的核心逻辑后，投资者能更清晰地识别股价的 “安全区域” 与 “风险区域”。但技术分析的本质是概率游戏，只有结合严格的止损纪律和资金管理，才能让布林线真正成为交易中的 “得力助手”。</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>LLY 2025.08.07 做空波动率</title><link>https://huangyijie.com//posts/options/2025-08-07-lly-siv/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-08-07-lly-siv/</guid><pubDate>Thu, 07 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: LLY

**操作详情**: SELL 20250808 650 PUT / BUY 20250808 645 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 做空波动率  | 650  | 1.6 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 160 | 2025.08.08 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 无      | 无 | 无 | 无 | 无 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.08.07  | 1  | 无 |


## 决策依据
1. 财报后盘前，夜盘大跌开盘，抢波动率

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.08.08**

亏损-352.82！！最后一天（8.9）才平仓

### 反思总结
1. 没有按照1天的纪律平仓
2. 正股价格太高，期权价格波动大
3. 卖垂直价差不好平仓
4. 没有严格执行-100%的亏损平仓
5. 不熟悉正股

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 12.82  | -352.82  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>MACD指标</title><link>https://huangyijie.com//posts/notes/macd/</link><guid isPermaLink="true">https://huangyijie.com//posts/notes/macd/</guid><description>MACD指标全解析：趋势交易的黄金法则</description><pubDate>Wed, 06 Aug 2025 00:00:00 GMT</pubDate><content:encoded># MACD指标全解析：趋势交易的黄金法则

## 1 核心原理与计算方法
MACD（Moving Average Convergence Divergence，指数平滑异同移动平均线）由杰拉尔德·阿佩尔于1970年代提出，是技术分析中的**趋势跟踪动量指标**。它通过双指数移动平均线的收敛与发散关系捕捉市场趋势变化。

### 1.1 三大核心组件
- **DIF线（快线）**：12日EMA - 26日EMA，反映短期价格趋势。计算方式为短期指数移动平均线（12日）减去长期指数移动平均线（26日）。
- **DEA线（慢线）**：DIF的9日EMA，平滑后的趋势线。对DIF线进行9日指数平滑处理，作为交易信号的触发线。
- **MACD柱状图**：(DIF - DEA) × 2，直观显示多空动能。**红柱**表示DIF &gt; DEA（多头强势），**绿柱**表示DIF &lt; DEA（空头强势）。柱体长度体现趋势强度，绝对值越大动能越强。

### 1.2 零轴：多空分水岭
- **0轴上方**：DIF &gt; 0，短期均线高于长期均线，**多头市场**
- **0轴下方**：DIF &lt; 0，短期均线低于长期均线，**空头市场**  
  该位置相当于60日均线的趋势分界点。

## 2 核心应用法则
### 2.1 趋势判断与交易信号
| **信号类型**       | **市场含义**                  | **操作建议**               |
|---------------------|-------------------------------|---------------------------|
| 0轴上金叉           | 多头强势确认                  | 加仓买入                  |
| 0轴下金叉           | 下跌中反弹                    | 轻仓试单                  |
| 0轴上死叉           | 上涨中回调                    | 部分减仓                  |
| 0轴下死叉           | 空头加速下跌                  | 立即止损                  |

*表：MACD交叉信号的实战意义*

&gt; **经典案例**：宁德时代2023年0轴上金叉后涨幅达40%，而地产股2025年0轴下死叉导致股价腰斩。

### 2.2 背离分析：提前预判反转
- **顶背离**：股价创新高，MACD高点却降低 → **下跌预警**  
  *案例*：2024年光伏龙头顶背离后下跌30%。
- **底背离**：股价创新低，MACD低点抬高 → **反弹信号**  
  *案例*：2022年上证指数2863点底背离触发500点反弹。

**背离确认要点**：需配合成交量！顶背离+缩量=强烈卖出信号；底背离+放量=可靠买入机会。

### 2.3 柱状图动能解析
- **红柱二次放大**：空中加油形态（如贵州茅台2024年主升浪）
- **绿柱底背离**：中芯国际2025年创新低但绿柱缩短后反弹200%
- **缩头缩脚法则**：
    - 红柱缩短（缩头）：上涨动能衰减 → 减仓信号
    - 绿柱缩短（缩脚）：下跌动能衰竭 → 建仓信号

## 3 高阶实战技巧
### 3.1 0轴擒牛术（主力成本区）
当DIF与DEA在**0轴附近粘合**后金叉（鳄鱼张嘴形态），往往预示主升浪启动。  
*操作条件*：
1. 粘合时间＞15天
2. 金叉配合放量阳线
3. 案例：比亚迪2024年该形态出现后2周暴涨40%。

### 3.2 MACD二次翻红
红柱缩短但未变绿时突然再次放大，是**强势延续信号**，需满足：
- 股价回调不破20日均线
- 周线MACD处于多头
- 优选行业龙头股（如宁德时代2024年主升浪）

### 3.3 多周期共振策略
| **时间周期** | **参数配置**    | **适用场景**         |
|--------------|-----------------|----------------------|
| 短线交易     | (6,13,5)        | 捕捉连板妖股         |
| 中线波段     | 经典(12,26,9)   | 趋势行情跟踪         |
| 长线过滤     | 周线MACD＞0     | 确认大级别行情 |

## 4 经典陷阱与应对策略
### 4.1 常见失效场景
❌ **震荡市假信号**：金叉/死叉频繁出现（需结合布林带过滤）  
❌ **突发暴涨暴跌**：指标滞后导致信号延迟（改用KDJ辅助）  
❌ **水下金叉陷阱**：0轴下第一次金叉失败率＞70%

### 4.2 避坑指南
1. **真假金叉鉴别**：
    - 假金叉：0轴下首次金叉+无量能配合
    - 真金叉：0轴上二次金叉+放量突破

2. **鳄鱼闭嘴止损法**：  
   当MACD高位粘合后死叉，且股价跌破30日均线 → **无条件止损**（避免45%亏损案例）

## 5 组合策略提升胜率
### 5.1 三重指标共振系统
- **MACD**：判断趋势方向（金叉/死叉）
- **成交量**：验证信号真实性（金叉需放量）
- **均线系统**：20/60日均线过滤杂波  
  *数据*：三指标共振可使成功率提升80%

### 5.2 波段交易极简口诀

- 买入条件：
DIF金叉DEA + 红柱由绿转红 + 股价＞20日均线

- 卖出条件：
DIF死叉DEA + 红柱连续缩短3天 + 股价＜10日均线


## 结语：MACD的哲学智慧
MACD作为“指标之王”，其本质是**趋势动能的速度监测器**。但需牢记：
&gt; “没有万能指标，只有共振信号。当价格趋势、量能配合与指标信号形成三重验证时，才是真正的黄金买点。”

通过参数优化（短线用6-13-5，长线用12-26-9）与多周期共振，结合严格的止损纪律，才能将MACD转化为持续盈利的利器。</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>AMD 2025.08.06 做空波动率</title><link>https://huangyijie.com//posts/options/2025-08-02-amd-siv/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-08-02-amd-siv/</guid><pubDate>Wed, 06 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: AMD

**操作详情**: SELL 20250808 160 PUT / BUY 20250808 152.5 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 做空波动率  | 160  | 1.57 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 157 | 2025.08.08 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 无      | 无 | 无 | 无 | 无 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.08.06  | 3  | 无 |


## 决策依据
1. 前一天AMD收跌，8.6又大跌，卖波动率

## 盈亏预览
|     最大盈利     |   最大亏损     |   盈亏平衡点（到期）   |
|:---------|:-------|:-----|
| 265.5 | -234.5 | 42.34 |

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.08.07**

2025.08.07提前平仓，盈利已到70%，0.16平仓

### 反思总结
1. 尽量不要卖垂直价差，短期的话，不然很难平仓，如果遇到方向相反想要移仓的话很难

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 12.82  | 128.18  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>RSI指标</title><link>https://huangyijie.com//posts/notes/rsi/</link><guid isPermaLink="true">https://huangyijie.com//posts/notes/rsi/</guid><description>RSI是用来衡量过去一段时间多空双方力量谁强谁弱的指标</description><pubDate>Tue, 05 Aug 2025 00:00:00 GMT</pubDate><content:encoded>### RSI是用来衡量过去一段时间多空双方力量谁强谁弱的指标

- 一般默认 6，14，24天，可以用1条
- RSI在0-100区间，50以上代表价格强势，50以下代表价格弱势

### 核心用法：判断超买和超卖

- 超买，80以上，可能涨势尾声
- 超卖，20以下，可能跌势尾声

#### 注意

- 辅助指标，不会单独用，配合比如MACD，比如MACD出现双牛买入，当RSI处于80以上，获利了结
- 对价格涨跌很敏感，经常有假信号，比如判断超买，刚到80就下来，可信度不高。要在80向上走，并且成交量放大，才有效

#### 第二种用法：背离

- 股价不断新低，但是RSI底部不断抬高，底背离
- 反之，顶背离

#### 第三种用法：金叉死叉（准确度低）

- 6天突破12天或者24天，金叉，买入

#### 缺点

钝化，比如持续上涨或者下跌，可能就钝化，一直在80上面或者20下面，甚至在100和0，所以适合震荡行情。</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>HIMS 2025.08.05 做空波动率</title><link>https://huangyijie.com//posts/options/2025-08-05-hims-siv/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-08-05-hims-siv/</guid><pubDate>Tue, 05 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: HIMS

**操作详情**: SELL 20250808 50.0 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 做空波动率  | 50  | 0.8 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 80 | 2025.08.08 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 无      | 无 | 无 | 无 | 无 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.08.05  | 1  | 无 |


## 决策依据
1. 盘前大跌，开盘抢卖波动率

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.08.06**

2025.08.06提前平仓，符合预期

### 反思总结
无记录

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 6.4  | 54.59  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>GTLB 2025.08.02 卖空</title><link>https://huangyijie.com//posts/options/2025-08-02-gtlb-ss/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-08-02-gtlb-ss/</guid><pubDate>Sat, 02 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: GTLB

**操作详情**: SELL 20250905 45 PUT / BUY 20250905 40 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖空  | 45  | 2.65 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 266 | 2025.09.05 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 0.243      | 0.243 | 0.002 | 0.004 | -0.002 | 0.009


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.08.02  | 30  | 无 |


## 决策依据
1. GTLB大跌到BOLL底部，回到最近一次财报后大跌的价位，预计下周会再跌两天。买在BOLL中轨附近，MACD死叉，柱状图向下放大，可能跌幅接近尾声了。

## 盈亏预览
|     最大盈利     |   最大亏损     |   盈亏平衡点（到期）   |
|:---------|:-------|:-----|
| 265.5 | -234.5 | 42.34 |

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.08.26**

2025.08.26提前平仓，2.30买入

### 反思总结
1. 8.26当天大跌，判断错误提前走了，之后两天大涨
2. 以后开仓要看好BOLL下轨再入
3. 下轨入的时候看好时间

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 12.81  | 23.18  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>TSLA 2025.08.02 卖空</title><link>https://huangyijie.com//posts/options/2025-08-02-tsla-ss/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-08-02-tsla-ss/</guid><pubDate>Sat, 02 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: TSLA

**操作详情**: SELL 20250829 315 PUT / BUY 20250829 305 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖空  | 315  | 5.68 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 568 | 2025.08.29 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 0.098      | 0.098 | 无 | -0.01 | 0.006 | 0.017


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.08.02  | 21  | 无 |


## 决策依据
1. 手里的325/330到期平仓，开这个新仓，TSLA在BOLL底部区间，预计下周还会再跌，搞不好会到280

## 盈亏预览
|     最大盈利     |   最大亏损     |   盈亏平衡点（到期）   |
|:---------|:-------|:-----|
| 573.5 | -426.5 | 309.27 |

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.08.12**

2025.08.12平仓，平仓价格1.45

### 反思总结
无记录

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 12.82  | 410.18  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>CFLT 2025.07.31 做空波动率</title><link>https://huangyijie.com//posts/options/2025-07-31-cflt-siv/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-07-31-cflt-siv/</guid><pubDate>Thu, 31 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: CFLT

**操作详情**: SELL 20250815 18.0 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 做空波动率  | 18  | 1.17 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 117 | 2025.08.15 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 无      | 无 | 无 | 无 | 无 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.07.31  | 1  | 无 |


## 决策依据
1. 盘前CFLT因财报大跌，开盘抢IV高做空波动率，由于这个策略只能作用于最近的周五，但由于CFLT没有，所以选择最近的日期

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.07.31**

当天收盘前平仓，符合预期，成交价1.02

### 反思总结
无记录

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 6.4  | 8.59  | 7.55% |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>META 2025.07.31 卖多</title><link>https://huangyijie.com//posts/options/2025-07-31-meta-sl/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-07-31-meta-sl/</guid><description>不能赌财报！</description><pubDate>Thu, 31 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: META

**操作详情**: SELL 20250801 770 CALL / BUY 20250801 790 CALL

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖多  | 770  | 1.01 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 101 | 2025.08.01 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 无      | 无 | 无 | 无 | 无 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.07.31  | 1  | 无 |


## 决策依据
1. 赌财报。群里老师的策略是780/800。由于收盘前老师的权利金已不足1，所以我贪婪地选择770/790。

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 财报后离场

### 交易结果
平仓日：**2025.07.31**

财报后7.31（美东时间）平仓，亏损952.82！平仓价10.41。

### 反思总结
1. 不能赌财报！
2. 要关注和注意最大亏损！
3. 尽量在尾盘再平，因为有时间价值磨损！

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 12.82  | -952.82  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>UPS 2025.07.29 做空波动率</title><link>https://huangyijie.com//posts/options/2025-07-29-ups-siv/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-07-29-ups-siv/</guid><pubDate>Tue, 29 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: UPS

**操作详情**: SELL 20250829 95 PUT / BUY 20250829 90 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 做空波动率  | 95  | 2.48 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 248 | 2025.08.29 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 无      | 无 | 无 | 无 | 无 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.07.29  | 21  | 无 |


## 决策依据
1. 看到UPS财报后大跌，且处于底部，就在开盘后开仓。实际上不对，第一，我对UPS不太了解，第二，卖IV（财报后）不应该做长期的，除非在计划日内，一般当天平仓

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.08.22**

2025.08.22平仓，SELL PUT被对手提前平仓，被动买入100股。当晚卖出正股，亏损833.83，SP获得424.79。同时平仓BUY PUT获得173.59。

### 反思总结
1. 不熟悉的票
2. 做空波动率没有严格执行止损线
3. 期权交易量不行，不好平仓

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 11.8  | -235  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>TSLA 2025.07.28 卖空</title><link>https://huangyijie.com//posts/options/2025-07-28-tsla-ss/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-07-28-tsla-ss/</guid><pubDate>Mon, 28 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: TSLA

**操作详情**: SELL 20250801 330 PUT / BUY 20250801 325 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖空  | 330  | 3.17 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 317 | 2025.08.01 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 无      | 无 | 无 | 无 | 无 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.07.28  | 5  | 无 |


## 决策依据
1. 看东方熊猫的群里，说TSLA会到330，不加思索就开仓了

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.08.01**

2025.08.01到期日平仓，亏损198.82，平仓价5.03

### 反思总结
1. 这次交易是不必要的，开仓当天TSLA是可以，但不是自己的策略，不应该信这个群里的
2. 不应该开仓当周的高风险订单

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 12.82  | -198.82  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>YINN 2025.07.23 卖多</title><link>https://huangyijie.com//posts/options/2025-07-23-yinn-sl/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-07-23-yinn-sl/</guid><pubDate>Wed, 23 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: YINN

**操作详情**: SELL 20250815 45 CALL / BUY 20250815 50 CALL

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖多  | 45  | 2.4 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 245 | 2025.08.15 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 无      | 无 | 无 | 无 | 无 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.07.23  | 14  | 无 |


## 决策依据
1. 中概近期涨得高，快逼近前期高点。群里的老师前两天有SELL CALL，7.23当天YINN再次大涨，于是我做这一单。跟老师同一天到期的价差加了一个保护腿

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.08.02**

提前平仓，盈利已到70%往上，平仓日2025.8.2，平仓价0.55

### 反思总结
无记录

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 12.82  | 177.18  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>META 2025.07.22 卖空</title><link>https://huangyijie.com//posts/options/2025-07-22-meta-ss/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-07-22-meta-ss/</guid><pubDate>Tue, 22 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: META

**操作详情**: SELL 20250808 705 PUT / BUY 20250808 700 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖空  | 705  | 2.42 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 242 | 2025.08.08 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 无      | 无 | 无 | 无 | 无 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.07.22  | 14  | 无 |


## 决策依据
1. META在7.22走势在阶段底部，相对平稳，而且预估财报不会太差

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.07.31**

财报后由于正股大涨，期权组合大跌，提前平仓，成交价0.15

### 反思总结
1. 在赌财报的策略平仓后，留下这一单作为对冲，原则上在财报前应平掉

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 12.82  | 214.18  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>UVXY 2025.07.21 卖空</title><link>https://huangyijie.com//posts/options/2025-07-21-uvxy-ss/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-07-21-uvxy-ss/</guid><pubDate>Mon, 21 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: UVXY

**操作详情**: SELL 20250808 16.5 PUT / BUY 20250808 15.5 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖空  | 16.5  | 0.6 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 5 手/股 | 300 | 2025.08.08 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 无      | 无 | 无 | 无 | 无 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.07.21  | 14  | 无 |


## 决策依据
1. 恐慌持续下降，美股不断新高

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.08.08**

2025.08.08平仓

### 反思总结
1. 不做空旷，不管做多还是做空

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 23.34  | -168.34  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>UVXY 2025.07.19 卖空</title><link>https://huangyijie.com//posts/options/2025-07-19-uvxy-ss/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-07-19-uvxy-ss/</guid><pubDate>Sat, 19 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: UVXY

**操作详情**: SELL 20250801 17.0 PUT / BUY 20250801 16 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖空  | 17  | 0.53 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 5 手/股 | 265 | 2025.08.01 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 无      | 无 | 无 | 无 | 无 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.07.19  | 7  | 无 |


## 决策依据
1. UVXY在底部，美股创新高，我认为近期会调整

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.07.29**

在2025.7.29平仓，持有10天，因为没有挣钱，所以一直没有平。但在最后一天（已提前平仓），8月1日，美股因为非农而大跌，UVXY收于17.39。平仓价0.94和0.86。

### 反思总结
1. 没有分析非农的影响
2. 提前平仓，其实已经接近最大亏损了，没必要
3. 应记录好最大亏损，这样可以判断是否提前平仓

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 20.96  | -214.79  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>AAPL 2025.07.08 卖空</title><link>https://huangyijie.com//posts/options/2025-07-08-aapl-ss/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-07-08-aapl-ss/</guid><pubDate>Tue, 08 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: AAPL

**操作详情**: SELL 20250808 210 PUT / BUY 20250808 200 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖空  | 210  | 3.55 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 355 | 2025.08.08 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 无      | 无 | 无 | 无 | 无 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.07.08  | 21  | 无 |


## 决策依据
1. 苹果没怎么涨，其他MG7除了TSLA都涨了

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.08.06**

2025.08.06平仓，8.6突发利好，库克去了白宫，由于达到了70%收益，提前平仓

### 反思总结
1. 在财报前平仓，吸取META的教训不赌财报
2. 不足的是这一单应在21天左右平仓，手里还有其他AAPL

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 12.82  | 262.18  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>GLD 2025.07.02 卖空</title><link>https://huangyijie.com//posts/options/2025-07-02-gld-ss/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-07-02-gld-ss/</guid><pubDate>Wed, 02 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: GLD

**操作详情**: SELL 20250801 307.5 PUT / BUY 20250801 305 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖空  | 307.5  | 1.14 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 114 | 2025.08.01 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 无      | 无 | 无 | 无 | 无 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.07.02  | 21  | 无 |


## 决策依据
1. 黄金处于区间底部

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.08.01**

到期前一天7.31平仓，亏损113.82

### 反思总结
1. 其实不应该平
2. 亏损最大已经达到
3. 忽视了8.1的非农影响
4. 黄金震荡太小
5. 到21天时如果有亏损，应该平仓，没有严格按照交易纪律来

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 8.84  | -113.82  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>AAPL 2025.07.01 卖空</title><link>https://huangyijie.com//posts/options/2025-07-01-aapl-ss/</link><guid isPermaLink="true">https://huangyijie.com//posts/options/2025-07-01-aapl-ss/</guid><pubDate>Tue, 01 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;!--- AUTO GENERATED BY SCRIPT, DO NOT MODIFY.---&gt;

## 基本信息
**正股代码**: AAPL

**操作详情**: SELL 20250801 210 PUT / BUY 20250801 205 PUT

## 期权详情
|     交易策略     |   行权价     |   成交价   |
|:---------|:-------|:-----|
| 卖空  | 210  | 2.15 |

|     数量     |   权利金收支     |   到期日   |
|:---------|:-------|:-----|
| 1 手/股 | 215 | 2025.08.01 |

|     IV（隐波）     |   Delta     |   Gamma   | Theta | Vega | Rho | 
|:---------|:-------|:-----|:-----|:-----|:-----|
| 无      | 无 | 无 | 无 | 无 | 无


## 交易详情
|     开仓日期     |   计划持仓天数     |   目标年化收益率   |
|:---------|:-------|:-----|
| 2025.07.01  | 21  | 无 |


## 决策依据
1. 苹果没有像其他MG7一样大涨，走势已经平稳，看好近期反弹

## 交易纪律、交易结果和反思总结
### 交易纪律
1. 平仓条件：盈利70%或者亏损100%权利金

### 交易结果
平仓日：**2025.08.01**

平仓日2025.08.01（盘后财报），没有按计划天数21天平仓（北京时间7.31）

### 反思总结
1. 在财报前平仓，吸取META的教训不赌财报
2. 不足的是这一单应在21天左右平仓，手里还有其他AAPL

### 成本
|     手续费     |   实际盈亏     |   实际年化收益率   |
|:---------|:-------|:-----|
| 12.82  | -19.82  | 无 |</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>时间协议</title><link>https://huangyijie.com//posts/posts/2020-01-18-time-protocol/</link><guid isPermaLink="true">https://huangyijie.com//posts/posts/2020-01-18-time-protocol/</guid><pubDate>Sat, 18 Jan 2020 00:00:00 GMT</pubDate><content:encoded># 时间协议
前两天在看Netty的hello world的时候，里面举了个例子—创建时间协议服务器。通过学习，才知道这个协议很老的，甚至已经被网络时间替代了。但是这个协议很简单，所以学习一下也无碍。

## 什么是时间协议

时间协议（英语：TIME protocol）是一个在RFC 868内定义的网络传输协议。它用作提供机器可读的日期时间信息。

这是时间协议（Time Protocol）在[RFC868](https://tools.ietf.org/html/rfc868)上的定义（中文由我自己翻译的）：


```
                             Time Protocol
                                时间协议

This RFC specifies a standard for the ARPA Internet community.  Hosts on
the ARPA Internet that choose to implement a Time Protocol are expected
to adopt and implement this standard.
这个RFC的标准给ARPA（美国国防部国防高等研究计划署）英特网定义的。在ARPA英特网上，
要实现时间协议的主机，则希望采用并且实现这个标准。


This protocol provides a site-independent, machine readable date and
time.  The Time service sends back to the originating source the time in
seconds since midnight on January first 1900.
这个协议提供了一个独立的，机器可读的日期和时间。时间服务将回复给客户端一个从
格林威治时间1900年1月1日开始计算，到请求时刻的总秒数。

One motivation arises from the fact that not all systems have a
date/time clock, and all are subject to occasional human or machine
error.  The use of time-servers makes it possible to quickly confirm or
correct a system&apos;s idea of the time, by making a brief poll of several
independent sites on the network.
现实中，并不是所有的系统都有时间功能，而且偶尔会受到人为的或者机器错误的影响。
那么时间服务器就可以快速地提供正确的时间来让其他系统确认，或者用来纠正时间，
只需要在网络上简单地查询就可以。


This protocol may be used either above the Transmission Control Protocol
(TCP) or above the User Datagram Protocol (UDP).
这个协议可以用在TCP和UDP协议上。

When used via TCP the time service works as follows:
当通过TCP协议使用时，时间服务器将执行以下步骤：

   S: Listen on port 37 (45 octal).
   服务端：监听37端口

   U: Connect to port 37.
   客户端：连接到37端口

   S: Send the time as a 32 bit binary number.
   服务端：发送32位二进制的时间

   U: Receive the time.
   客户端：接收到时间

   U: Close the connection.
   客户端：断开连接

   S: Close the connection.
   服务端：断开连接

   The server listens for a connection on port 37.  When the connection
   is established, the server returns a 32-bit time value and closes the
   connection.  If the server is unable to determine the time at its
   site, it should either refuse the connection or close it without
   sending anything.
   服务器监听端口37的连接。当连接建立，服务器将返回32位的时间值，然后关闭连接。
   如果服务器无法确定时间，它需要拒绝连接，或者不发送任何信息，直接关闭连接。

When used via UDP the time service works as follows:
当通过UDP协议使用时，时间服务器将执行以下步骤：

   S: Listen on port 37 (45 octal).
   服务端：监听37端口

   U: Send an empty datagram to port 37.
   客户端：发送空数据报到37端口

   S: Receive the empty datagram.
   服务端：接受到空的数据报

   S: Send a datagram containing the time as a 32 bit binary number.
   服务端：发送32位二进制的时间的数据报

   U: Receive the time datagram.
   客户端：接收时间数据报

   The server listens for a datagram on port 37.  When a datagram
   arrives, the server returns a datagram containing the 32-bit time
   value.  If the server is unable to determine the time at its site, it
   should discard the arriving datagram and make no reply.
   服务器用37端口监听数据报。当接收到数据报，服务器就返回包含32位二进制的时间的数据报。
   如果服务器无法确定时间，则它应该丢弃接收到的数据报，不作回复。

The Time
时间

The time is the number of seconds since 00:00 (midnight) 1 January 1900
GMT, such that the time 1 is 12:00:01 am on 1 January 1900 GMT; this
base will serve until the year 2036.
这里的时间，时从格林威治时间1900年1月1日0点0分0秒开始计算，
比如1就表示时格林威治时间1900年1月1日上午12点0分1秒；但是，这种计算方式到2036年将不再适用。

For example:
示例：

   the time  2,208,988,800 corresponds to 00:00  1 Jan 1970 GMT,

             2,398,291,200 corresponds to 00:00  1 Jan 1976 GMT,

             2,524,521,600 corresponds to 00:00  1 Jan 1980 GMT,

             2,629,584,000 corresponds to 00:00  1 May 1983 GMT,

        and -1,297,728,000 corresponds to 00:00 17 Nov 1858 GMT.

```

## 时间协议服务器的Java实现

完整代码在[https://github.com/henryhuang/time-protocol-example](https://github.com/henryhuang/time-protocol-example)。

### Server

```java

public class TPServer {

    private static final int PORT = 37;
    private static final long OFF_SET = 2208988800L;

    public static void main(String[] args) {

        new TPServer().start();

    }

    public void start() {
        System.out.println(&quot;Server starting...&quot;);

        try (ServerSocket serverSocket = new ServerSocket(PORT)) {

            while (true) {
                Socket connection = serverSocket.accept();
                new TPHandlerThread(connection);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }

    }


    private class TPHandlerThread implements Runnable {

        private Socket connection;

        private TPHandlerThread(Socket connection) {
            this.connection = connection;
            new Thread(this).start();
        }

        public void run() {

            System.out.println(&quot;Receive seek time request!&quot;);

            try (DataOutputStream os = new DataOutputStream(connection.getOutputStream())) {
                byte[] timeBytes = String.valueOf(getTime()).getBytes();
                os.writeInt(timeBytes.length);
                os.write(timeBytes);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (connection != null) {
                    try {
                        connection.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }

    private static long getTime() {
        return System.currentTimeMillis() / 1000L + OFF_SET;
    }

}

```

### Client

```java

public class TPClient {

    private static final int PORT = 37;
    private static final long OFF_SET = 2208988800L;

    public static void main(String[] args) {
        Long time = new TPClient(&quot;localhost&quot;).seekTime();
        if (time != null) {
            System.out.println(new Date((time - OFF_SET) * 1000L));
        }
    }

    private String host;

    public TPClient(String host) {
        this.host = host;
    }

    public Long seekTime() {

        try (Socket socket = new Socket(this.host, PORT);
            DataInputStream is = new DataInputStream(socket.getInputStream())) {
            int length = is.readInt();
            byte[] bytes = new byte[length];
            is.readFully(bytes);
            return Long.valueOf(new String(bytes));
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;

    }


}

```</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>聊聊Spring的stereotype注解</title><link>https://huangyijie.com//posts/posts/2019-10-23-talk-spring-stereotype/</link><guid isPermaLink="true">https://huangyijie.com//posts/posts/2019-10-23-talk-spring-stereotype/</guid><pubDate>Wed, 23 Oct 2019 00:00:00 GMT</pubDate><content:encoded>我们在使用Spring的时候，使用最多的注解是什么？我想除了@Bean就是@Component了吧？@Component位于spring-context库（5.1.8版本，文中未特别说明的情况下默认此版本）的org.springframework.stereotype包路径下面：

![Spring Stereotype 1](http://githubimg.wxio.club/spring-stereotype-1.jpg)

会发现还有我们熟悉的@Controller，@Service，@Repository，这不就是Spring MVC里经常用到的么？

## 什么是 Stereotype

Stereotype是一种J2EE特性，以下来自网友：

```
Stereotype特性最早出现在J2EE6中（忘记是哪个JSR提出的了），
可以理解为围绕着“元数据”功能而发展出来的一种设计模式，
虽然我很难说清楚他属于23个设计模式中的哪一个，
但是这确实已经是一种约定俗成的做法，
只要看到Stereotype就应该像看到“Factory——工厂模式”、“Adapter——适配器模式”、“Facade——外观模式”一样，一眼就知道他的作用。
```

**简单的说Stereotype特性就是用注解来告诉框架某个类是属于系统功能中的哪一层。**

## Stereotype 特性如何被使用

在Stereotype模式下，Spring为Controller-Service-Dao的分层模型分别提供了@Controller、@Service、@Repository注解。

我们按照Stereotype的模式为对应的类标记3个注解，然后在引入MVC、ORM、JPA相关的框架之后这些注解会告诉框架对应的类扮演着什么样的功能角色，框架就能很清晰的根据注解提供相关的功能服务。

例如引入spring-webmvc库后，类如果被@Controller注解标记，框架就知道他们都是处理前端请求的，框架就会为他提供RequestMapping之类的功能。</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>免费申请 JetBrains 全产品 License</title><link>https://huangyijie.com//posts/posts/2019-10-21-jetbrains-all-products-pack-license/</link><guid isPermaLink="true">https://huangyijie.com//posts/posts/2019-10-21-jetbrains-all-products-pack-license/</guid><pubDate>Mon, 21 Oct 2019 00:00:00 GMT</pubDate><content:encoded>作为一个开发者选择的IDE，不管是Java，JS，还是Python，可能最好用的IDE就是JetBrains家的了。就比如我，作为一个喜欢倒腾新语言的人，每当想要写个程序的时候就会想JetBrains有没有这种语言的IDE，然后就会发现有针对Go的GoLand，针对Python的PyCharm，针对JS的WebStorm等等。

可是一个现实的问题摆在面前，就是License贵啊，再加上每种IDE都有License需求，那就更贵了啊！

但是现在有办法免费获取JetBrains家全系列产品的License了--**使用个人或者团队的开源项目申请**，虽然是一年有效期，但是他们会在快到期前提醒你，然后就可以重新申请审核再续一年了。

## 准备个人开源项目

首先要准备自己的开源项目，比如我使用的 https://github.com/henryhuang/oishi，JetBrains官方似乎对于项目的 star 没有强制要求，但是不排除以后有要求。

## 添加项目 License

然后需要给项目添加 License，在项目主页点击 Create new file，然后输入 LICENSE 后，输入框右边就会自动弹出 License 类型的选择，点击它选择一个尽量开放的类型，比如我选择的是 MIT。

## 申请 JetBrains License

之后就可以开始填写申请信息了，去到 [https://www.jetbrains.com/shop/eform/opensource](https://www.jetbrains.com/shop/eform/opensource) 填写内容：

![申请表](http://githubimg.wxio.club/www.jetbrains.com_shop_eform_opensource.png)

基本上就按照输入框Place Holder里提示的填写就可以了，注意的一点就是 No. of required licenses 填写项目提交代码的人数，他们按照这个来决定所对应的License需求数量。

提交申请后，会收到邮件表明他们已经收到了申请，会在接下来的几天处理：

![JetBrains邮件1](http://githubimg.wxio.club/jetbrains1.jpg)

大概等待1-2天后，会收到申请成功的通知：

![JetBrains邮件2](http://githubimg.wxio.club/jetbrains2.jpg)

## 激活 JetBrains License

点击申请成功的邮件中的 **Take me to my license(s)**，然后会被要求创建一个账号，之后会收到激活邮件：

![JetBrains邮件3](http://githubimg.wxio.club/jetbrains3.jpg)

点击 **Confirm your account** 后进入个人中心。

点击 **Active subscriptions** 激活 License。之后选择 License 点击 Assign，输入创建账号的邮箱，完成后就会收到邮件表示已经授予这个账号License使用权限了：

![JetBrains邮件4](http://githubimg.wxio.club/jetbrains4.jpg)

## 使用 JetBrains License

激活 License 后，打开 Idea （其他产品也行），选择 JetBrains Account，输入注册的邮箱和密码后点击 Activate 就可以了：

![使用License](http://githubimg.wxio.club/jetbrains5.jpg)。</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>Aloha 一个Hexo主题</title><link>https://huangyijie.com//posts/posts/2019-06-30-one-hexo-theme-aloha/</link><guid isPermaLink="true">https://huangyijie.com//posts/posts/2019-06-30-one-hexo-theme-aloha/</guid><pubDate>Sun, 30 Jun 2019 00:00:00 GMT</pubDate><content:encoded>好久没写了，想抬笔但是总是不知道写啥，也没耐心完整地写完一篇，想了想用这个方式开始，介绍一下自己以前的一个[Hexo](https://hexo.io)主题-- Aloha。

- 项目地址 https://github.com/henryhuang/hexo-theme-aloha
- 预览地址 https://huangyijie.com/hexo-theme-aloha/
- 使用Wiki https://github.com/henryhuang/hexo-theme-aloha/wiki

这个主题就是很正常的一个博客布局，亮点是我使用了[Semantic UI](https://semantic-ui.com)，喜欢Semantic UI的人可以用。

打开后很简洁：

![首页](http://githubimg.wxio.club/2019-06-30-one-hexo-theme-aloha/1.jpg)

点击左上角的按钮后就会显示侧边栏，侧边栏集合了个人头像、个人社交链接图标以及菜单：

![侧边栏](http://githubimg.wxio.club/2019-06-30-one-hexo-theme-aloha/2.jpg)

文章页是如下效果，右侧可以显示TOC，底部是上下篇文章的快速导航：

![文章页](http://githubimg.wxio.club/2019-06-30-one-hexo-theme-aloha/3.jpg)

具体的使用可以查看GitHub的项目[Wiki](https://github.com/henryhuang/hexo-theme-aloha/wiki)页。</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>泰国之旅 [三]</title><link>https://huangyijie.com//posts/posts/thailand-trip-3/</link><guid isPermaLink="true">https://huangyijie.com//posts/posts/thailand-trip-3/</guid><pubDate>Mon, 24 Jun 2019 00:00:00 GMT</pubDate><content:encoded>今天要去下一个地点 芭提雅 了。

行程安排：金佛色 -&gt; 唐人街 -&gt; 芭提雅 

车是在中午，所以游玩的时间只有上午，由于酒店的位置的原因，所以只能选择去金佛色和唐人街这条线了。

从酒店直接打Grab就可以直接到金佛色了，司机还是很熟悉的，知道哪里可以下车。

## 金佛寺

![金佛寺](http://githubimg.wxio.club/thailand-trip-3/01.jpg)

以下转自某度：

&gt; 金佛寺，又称黄金佛寺，是 泰国 华人对该寺的称呼，位于Hua Lamphong火车站西南面的唐人街， 曼谷 火车总站附近，若搭乘地铁，可在Hua Lamphong站下车，西南不远即是。为 泰国 著名寺庙， 泰国 三大国宝之一。据说这座寺院由三位华人集资建成，故又称三华寺或三友寺。
金佛寺因供奉一尊世界最大金佛而闻名。一尊用纯金(注：另一说是约60%含金量，此有待考证)铸成的如来佛像，重5.5吨，高近4米，盘坐的双膝相距3米有余，金光灿烂，庄严肃穆。是 泰国 素可泰 时代的艺术品，也是 泰国 和佛教的无价宝。

![金佛寺2](http://githubimg.wxio.club/thailand-trip-3/02.jpg)

金佛寺下面是一个曼谷唐人的展览，可以很全面地了解中国人在曼谷的历史（基本上算是我们潮汕 人在曼谷的历史）。

![金佛寺3](http://githubimg.wxio.club/thailand-trip-3/03.jpg)

![金佛寺4](http://githubimg.wxio.club/thailand-trip-3/04.jpg)

## 唐人街

之后就去了唐人街，可惜没多长时间可以逛，就在这里吃了一个面。

![唐人街1](http://githubimg.wxio.club/thailand-trip-3/05.jpg)

在路面买了杯咖啡，虽说是路边的，但是都是真材实料现磨的，夏日解渴真的很合适！

![唐人街2](http://githubimg.wxio.club/thailand-trip-3/06.jpg)

这么走走的一上午就没了，回酒店等待车上门接。

等待期间专门去吃了个 泰国 本地真宗的午饭，只是我真的不习惯这个味道: (

![曼谷1](http://githubimg.wxio.club/thailand-trip-3/07.jpg)

车来了，走了（此车非车）。

![曼谷2](http://githubimg.wxio.club/thailand-trip-3/08.jpg)

## 芭提雅

到了芭提雅天快黑了， 芭提雅就在海边，这是芭提雅的海映入我眼帘的第一画面，当时还是很兴奋的。

![芭提雅1](http://githubimg.wxio.club/thailand-trip-3/09.jpg)

酒店就在海边，值得一提的是这是个摇滚主题的酒店，晚上还有摇滚小Party。

![芭提雅2](http://githubimg.wxio.club/thailand-trip-3/10.jpg)

来芭提雅怎么能不去看秀呢？尤其是蒂芙尼的！真的是很好看，他们表演得很敬业！这是最后合照的场景，我就没去了。

![芭提雅3](http://githubimg.wxio.club/thailand-trip-3/11.jpg)

之后去了一下步行街看了看，然后就回酒店睡觉了。

未完待续。

---

同步在我的马蜂窝：[泰国之旅 [三]](http://www.mafengwo.cn/i/14372158.html)。</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>泰国之旅 [二]</title><link>https://huangyijie.com//posts/posts/thailand-trip-2/</link><guid isPermaLink="true">https://huangyijie.com//posts/posts/thailand-trip-2/</guid><pubDate>Sun, 31 Mar 2019 00:00:00 GMT</pubDate><content:encoded>今天起来很早，可能是旅游的缘故，在国内早上起来很晚，而在曼谷就很早起来，可能是想争分夺秒的缘故吧。

虽然今天起来得很早，但是磨磨蹭蹭，再泡个澡，就10点了。

&gt; 曼谷悦榕庄 -&gt; Asok Spring SPA -&gt; Pier 21 Terminal 21 Food Court -&gt; 曼谷文化艺术中心 -&gt; 曼谷悦榕庄 -&gt; Patpong 夜市 -&gt; 曼谷悦榕庄

久闻泰国马杀鸡大名，第一天起床就迫不及待地预约了一家在Asok BTS站附近的**Spring SPA**店。整个环境非常地轻松，SPA加泰式按摩真的是让人很放松！其实我所住的悦榕庄最有名的就是SPA，只是价格让人望而却步，所我就放弃了。

在曼谷遍地是按摩店，当然所指的是正规的。价格便宜，而且还是正宗泰式按摩。

这里提一下，我在马杀鸡之前在小商店买了瓶饮料，真的很好喝，有点像凉茶加蒟蒻，很推荐！

![去地铁站的路上](http://githubimg.wxio.club/thai/1/waytoasok.jpeg)

由于是空腹马杀鸡，所以结束后很饿，也到了午饭时间，所以找了吃饭的地方-**Terminal 21**的美食街**Pier 21**，在这里我也将发现又一个爱上泰国的原因--美食！

阴差阳错，我点了份泰国炒面。第一口下去，我的天！怎会如此好吃！它看上去只是简单的鸡饭炒薄河粉，但是再加上它甜属性的调料，那就不一般了，非常符合我的胃口！

![Pier 21](http://githubimg.wxio.club/thai/1/pier21foods.jpeg)

美中不足的是量太少了！于是我就寻找其他美食，找了碗鱼丸粉条和冰淇淋，由此而知泰国还是有好多华人文化的。

这个美食广场真的吃不完，我发誓还会再来。

吃完饭后就去下个目的地--**曼谷文化艺术中心**。坐BTS可以到那附近的一站 **Ratchathewi**，出站走两步就到了。这里吐槽一下谷歌地图，很不人性化，地铁站到了以后都没有说是哪个口出来，真的超级不方便。。。

一路上发现这里其实是购物集中地，网上推荐的暹罗百丽宫购物中心就在艺术中心对面。

![曼谷文化艺术中心门口雕塑](http://githubimg.wxio.club/thai/1/bbk_art.jpeg)

虽说文化艺术中心是个必须来的，但可能最近没有什么活动，所以人不是很多，展品也不是很多，很多展厅没什么东西，不过整个文化艺术中心都是免费参观的。但是有点坑的是存包要钱，除非你有泰国身份证，不然就要掏10泰铢。

![曼谷文化艺术中心1](http://githubimg.wxio.club/thai/1/bbk_art10.jpeg)

![曼谷文化艺术中心2](http://githubimg.wxio.club/thai/1/bbk_art9.jpeg)

![曼谷文化艺术中心3](http://githubimg.wxio.club/thai/1/bbk_art8.jpeg)

![曼谷文化艺术中心4](http://githubimg.wxio.club/thai/1/bbk_art7.jpeg)

![曼谷文化艺术中心5](http://githubimg.wxio.club/thai/1/bbk_art6.jpeg)

![曼谷文化艺术中心6](http://githubimg.wxio.club/thai/1/bbk_art4.jpeg)

![曼谷文化艺术中心7](http://githubimg.wxio.club/thai/1/bbk_art3.jpeg)

![曼谷文化艺术中心8](http://githubimg.wxio.club/thai/1/bbk_art2.jpeg)

![曼谷文化艺术中心9](http://githubimg.wxio.club/thai/1/bbk_art1.jpeg)

![曼谷文化艺术中心10](http://githubimg.wxio.club/thai/1/bbk_art11.jpeg)

参观完艺术中心，下一站就是**四面佛**（其实不是专门去，看地图在回酒店的路上）。坐 BTS 到 **Siam**，然后往下一站一直走。曼谷的天气是真的热，还好曼谷有很多很长的天桥，不用在地上一直等过马路，省了很多时间，比如从地铁站出来就可以一直走到下一站，四面佛就在两点中间。

四面佛所在的神庙其实是个印度宗教的总计场所，四面佛是华人地区民间对梵天的俗称，“梵天”在佛教中亦称造书天、婆罗贺摩天、净天。原是印度教、婆罗门教三大主神之一的梵天，是创造宇宙之神，梵文字母的创制者（摘自百度百科词条《四面佛》）。

![四面佛](http://githubimg.wxio.club/thai/1/four_face.jpeg)

往前走还有一个佛，也是印度相关的（话说曼谷印度人还是很多的），但是具体名字我忘了，浑身深蓝色。

话说走这一段是真的累，路过 **Paragon Food Food Hall**, 买了碗甜品吃。

之后只能回酒店了。坐地铁到 **Sala Daeng**，还要走很长一段才能到，真是累死了 :( 。

到酒店第一件事就是洗澡，在曼谷每出一次门回来就要洗澡，真的全是汗！

休息一会，就到吃完饭的时间了。我所在的悦榕庄酒店楼顶有超级网红高空露天餐厅，但可惜我一个人实在不好意思，也不太想上去。。。因为必须要穿正装！我带了那么多衣服，唯独没有这个。

还好，在我刚回来下地铁那里有一个夜市，后来我才知道那里是曼谷三大红灯区之一--Patpong。我是真的来夜市吃东西的，但进去一看。。。全是酒吧，夜店风采，于是我就走了。周围实在找不到吃的地方，于是就进了KFC，再然后就是有了新发现！

泰国的KFC和国内有很大区别，餐具是刀叉，饭有很多本地的风味的(这点想想就是)，最大的差别是。。。饮料是自助的，而且是百事公司全套，什么七喜，百事可乐，美年达等等。

![曼谷晚上的马路](http://githubimg.wxio.club/thai/1/bbk_night_paphong.jpeg)

吃完就回酒店了，今天实在太累，睡觉了。

未完待续。

---

同步在我的马蜂窝：[泰国之旅 [二]](http://www.mafengwo.cn/i/12216990.html)。</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>泰国之旅 [一]</title><link>https://huangyijie.com//posts/posts/thailand-trip-1/</link><guid isPermaLink="true">https://huangyijie.com//posts/posts/thailand-trip-1/</guid><pubDate>Mon, 18 Mar 2019 00:00:00 GMT</pubDate><content:encoded>好久没有写了，猛然发现整整一个2018年都没有写，那就聊聊最近吧。

最近去了泰国，泰国是个好地方，这也是我第一次出国，自从2016年办理了护照以后就一直是白本，从此我的护照再也不是白本了。

整个泰国之旅还是挺满意的，就是时间太短，好多地方都没去。我是提前办理的旅游签证，机票定的是香港曼谷来回的土豪航空阿联酋航空，酒店的话就比较分散，两天曼谷悦榕庄，一天芭提雅硬石，两天曼谷美居。

&gt; 行程：深圳 -&gt; 香港 -&gt; 曼谷 -&gt; 芭提雅 -&gt; 曼谷 -&gt; 香港 -&gt; 深圳

## 第0天

下班后直接坐地铁去蛇口港坐船去香港机场，话说蛇口港是可以先办理行李托运的，我觉得很方便没多想就办理了，结果悲剧了--洗漱包忘了托运，里面都是瓶装液体。在去机场的路上想尽了办法，比如看能不能在机场存几天，比如寄给香港同事，改天让同事帮忙拿到深圳，又比如直接寄回深圳。但事与愿违，到了香港机场码头，直接就是安检！我根本没有时间找快递点，找存包点！安检员一个劲地说这个超过100毫升，这个也超过100毫升，问我要不要托运？我心想这怎么托运啊就一个小包。。。我掂了掂爽肤水和洗面奶的量，觉得快没了，忍痛割爱就扔了。。。好在进了机场后就买了同样的洗面奶，价格比在香港商场卖的便宜。

![机场地铁](http://githubimg.wxio.club/thai/0/hktrain.jpeg)

之后撸了浦发机场贵宾厅后就登机了，话说虽然我这次去的比国泰的还有点差距，但比内地任何一个机场都好多了，包括北上广！

![贵宾厅](http://githubimg.wxio.club/thai/0/hkrest.jpg)

土豪航空就是土豪航空，连屌丝经济舱的机上娱乐设施都这么好，丝毫不会觉得机上3小时会无聊，我在机上看了刚刚在国内上映的《绿皮书》。餐饮方面，还行吧，但由于我提前在贵宾厅大吃了一顿，导致我觉得还行。不过饮料种类挺多的，红酒，白酒，啤酒随便要。

![机上娱乐](http://githubimg.wxio.club/thai/0/planeent.jpeg)

![阿联酋航空](http://githubimg.wxio.club/thai/0/emirate.jpeg)

![机上菜单](http://githubimg.wxio.club/thai/0/planemenu.jpeg)

![机上晚餐](http://githubimg.wxio.club/thai/0/dinner.jpeg)

一部《绿皮书》（当时国内影院才刚上映），再看看风景，就到素万那普机场了。

![机上曼谷夜景](http://githubimg.wxio.club/thai/0/planebbk.jpeg)

到了机场就是要入境了，由于我是提前办理了签证，所以就不用去排队办理落地签。没想到泰国机场对中国人还挺照顾，入境有几个窗口写了大大的“中国护照”，好像是中国护照专口，因为我看到有个欧美小哥在一个中国护照口排队排到了他的时候，工作人员不让他办理，他只能去其他窗口办理。

泰国还是比较热的，但是比较好的是所有的交通工具，室内场所都有空调。我对泰国的第一印象，是司机的热情和微笑，然后是接机车里的香味和曼谷司机一贯的飙车式开车。

接机直接送到酒店，迅速地 check in 后，就开始享受浦发五万积分兑换的曼谷悦榕庄了，真的很不错，浦发的大羊毛终于撸到了。

![悦榕庄minibar](http://githubimg.wxio.club/thai/0/minibar.jpeg)

![悦榕庄外夜景](http://githubimg.wxio.club/thai/0/banyantreenight.jpeg)

总的来说，除了安检扔了一些东西，今天从下班然后一路到曼谷还是挺顺利的，来到曼谷后的第一印象也没令我失望，司机的热情和微笑也令我难忘！一切都很顺利，很期待明天的到来。

关灯睡觉，待续。

---

同步在我的马蜂窝：[泰国之旅 [一]](http://www.mafengwo.cn/i/12114866.html)。</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>Nginx使用SSL证书配置https</title><link>https://huangyijie.com//posts/posts/qcloud-nginx-ssl/</link><guid isPermaLink="true">https://huangyijie.com//posts/posts/qcloud-nginx-ssl/</guid><pubDate>Sun, 24 Feb 2019 00:00:00 GMT</pubDate><content:encoded>## 申请SSL证书

首先申请SSL证书，这里以腾讯云的免费DVSSL证书为例，前往 https://console.cloud.tencent.com/ssl/apply

- 填入通用名称，比如 www.wxio.club
- 最好不要密码
- 填好其他信息
- 点击下一步，如果域名在腾讯云解析，就选择 *自动DNS验证*，否则按照选项进行配置
- 点击确认申请

## 下载和上传证书

前往 https://console.cloud.tencent.com/ssl 下载刚申请的证书，以 www.wxio.club 为例，解压后有

```
.
├── Apache
│   ├── 1_root_bundle.crt
│   ├── 2_www.wxio.club.crt
│   └── 3_www.wxio.club.key
├── IIS
│   ├── keystorePass.txt
│   └── www.wxio.club.pfx
├── Nginx
│   ├── 1_www.wxio.club_bundle.crt
│   └── 2_www.wxio.club.key
├── Tomcat
│   ├── keystorePass.txt
│   └── www.wxio.club.jks
└── www.wxio.club.csr

```

复制Nginx里的 1_www.wxio.club_bundle.crt 和 2_www.wxio.club.key 到服务器的 /etc/nginx （其实那都可以）

## 配置 nginx.conf

编辑器打开 /etc/nginx/nginx.conf, 在 http 下面，添加或者修改配置：

```
server {
        listen 80;
        server_name www.wxio.club wxio.club;
        rewrite ^(.*)$ https://${server_name}$1 permanent; # 这里是使 http 跳转到 https
}

server {
        listen 443;
        server_name www.wxio.club wxio.club;

        ssl on;
        ssl_certificate 1_www.wxio.club_bundle.crt; # 这里可以写 .crt 的全路径
        ssl_certificate_key 2_www.wxio.club.key; # 这里可以写 .key 的全路径
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;

        location / {
                root /home/git/www/public;
                index index.html index.htm;
        }

}
```

## 重启 nginx 服务

```
service nginx restart
```</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>i18next</title><link>https://huangyijie.com//posts/posts/2017-08-28-i18next/</link><guid isPermaLink="true">https://huangyijie.com//posts/posts/2017-08-28-i18next/</guid><pubDate>Mon, 28 Aug 2017 00:00:00 GMT</pubDate><content:encoded>I18next 是一款用JavaScript编写的国际化框架。

### 为什么需要国际化

一般在编写网站的时候，网页需要向用户展现一些文字，假如你的网站完全面向中国用户，那么你可以把网页里的内容写成中文。但是如果你还要面向英文用户，那么你就不能直接把内容写成中文了，你的网站需要国际化。你需要使用一些技术来让程序自动切换内容的显示，网页的总体结构是不变的，但是内容需要随着用户的改变而改变。

但是可能有人会说，各准备一个英文和一个中文的网页不就可以了吗？那么请问以后再出现法文，葡萄牙文，西班牙文的需求呢？这种需求其实很常见，比如ebay.com，它面向不同国家有不同的显示，甚至在一个国家还有多种显示（比如加拿大，分为加拿大英语区和加拿大法语区）。如果针对一种语言准备一套网站，那将是大大的代码冗余和资源的浪费。

### 为什么使用i18next

I18next提供了JavaScript开发中能想到的所有关于i18n的需求，它提供了一个完整的解决方案，不管是本地客户端还是服务端，移动端Web还是桌面端Web。当然，它不仅仅可以用在JavaScript平台，它还能用在其他平台，比如php，ios等。

以下是官方的一段话：

&gt; Learn once - use everywhere. The community made integrations for frameworks like react.js, angular.js, vue.js and many more. But this is not where it ends...you can use i18next with node.js, php, ios, android and other platforms.

&gt;I18next reached not only the web, but also mobile and desktop development.

翻译过来大概意思是：它的社区已经将i18next和react.js，angular.js，vue.js等热门的框架集成，而且你能在Node.js，php，ios，android等平台上使用，除了Web端，你还能在手机端桌面端的开发中使用。

### 开始使用

#### 安装

```
# yarn
$ yarn add i18next

# npm
$ npm install i18next --save

# bower
$ bower install i18next
```

#### Hello World

这里直接修改自官网的Hello World：

```js
var i18next = require(&apos;i18next&apos;);

var option = {
  lng: &apos;en&apos;,
  resources: {
    en: {
      translation: {
        &quot;hello-world&quot;: &quot;Hello world!&quot;
      }
    }
  }
};

var callback = function(err, t) {
  console.log(i18next.t(&apos;hello-world&apos;));
}

i18next.init(option, callback);
```

执行过后会输出：

```
$ node .
Hello world!
Done in 0.18s.
```

这里调用的是 i18next 的 init() api 进行初始化，init()需要传入两个参数option和callback函数。

在 callback 函数中, **i18next.t(&apos;hello-world&apos;)** 就是键 &apos;hello-world&apos; 所对应值 &apos;Hello world!&apos;。

在 option 中，lng 表示当前采用的是 en 语言所对应的资源，而 resources 就是资源配置。那么，如果想输出中文呢？很简单，只要在 resources 中加入对应语言的键值对即可：

```js
var i18next = require(&apos;i18next&apos;);

var option = {
  lng: &apos;zh_CN&apos;,
  resources: {
    en: {
      translation: {
        &quot;hello-world&quot;: &quot;Hello world!&quot;
      }
    },
    zh_CN: {
      translation: {
        &quot;hello-world&quot;: &quot;你好世界！&quot;
      }
    }
  }
};

var callback = function(err, t) {
  console.log(i18next.t(&apos;hello-world&apos;));
}

i18next.init(option, callback);
```

再将 option.lng 改为 &apos;zh_CN&apos;，这样执行后输出：

```
$ node .
你好世界！
Done in 0.18s.
```

最基本的国际化方案就是这么简单，实际应用中会根据用户的某些国家属性来决定使用哪套资源，举个例子，用eBay来说，假如用户直接访问 www.ebay.com，系统会默认显示英文，假如用户访问www.ebay.ch，看上去整个网页的结构布局和 www.ebay.com 一样，只不过语言变成了德文，这里就是根据域名的不同来选择不同的服务器，而不同的服务器实际上运行的是一套代码。

当然还可以根据用户所在国家自动显示不同的语言，在这里就不多说了。

以上代码完整的项目地址是 [https://github.com/henryhuang/i18next-samples/tree/master/i18next-basic-sample](https://github.com/henryhuang/i18next-samples/tree/master/i18next-basic-sample) .

### 结合 Express 使用

主要的代码如下：

```js

...

// 初始化 i18next
i18n.use(i18nMiddleware.LanguageDetector).use(i18nFsBackend).init({
  lng: &apos;en&apos;,
  preload: [
    &apos;en&apos;, &apos;zh-CN&apos;
  ],
  backend: {
    loadPath: path.resolve(__dirname, &apos;./lang/{{lng}}/translation.json&apos;)
  }
});
//
app.use(i18nMiddleware.handle(i18n));

...

app.get(&apos;/lang/:lang&apos;, function(req, res) {
  res.cookie(&apos;i18next&apos;, req.params.lang);
  res.redirect(&apos;/&apos;);
});

```

完整的项目代码在这里 [https://github.com/henryhuang/i18next-samples/tree/master/i18next-express-sample](https://github.com/henryhuang/i18next-samples/tree/master/i18next-express-sample) .</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>错误排查：非ROOT用户使用密钥进行ssh登录提示输入密码</title><link>https://huangyijie.com//posts/posts/2017-07-07-non-root-user-config-for-ssh-key-login/</link><guid isPermaLink="true">https://huangyijie.com//posts/posts/2017-07-07-non-root-user-config-for-ssh-key-login/</guid><pubDate>Fri, 07 Jul 2017 00:00:00 GMT</pubDate><content:encoded>由于个人的需要，需要搭建一个私有的git服务器，当然还需要有完善的操作界面，综合下来，我选择了**Gogs**。

```
问：为什么不用GitHub呢？
答：我们不想让别人看到我们的代码。
问：GitHub有private的呀！
答：那要钱，我们没钱。。。
```

很顺序按照官网的步骤一步一步搭建完成了（其实早就用过了，这是第N次的搭建），然后另一个人上传了代码（注意这是通过http的方式的），于是我去下载。

我不喜欢用http的方式，因为要输入密码，而且也不安全，所以一直保持着使用ssh的方式。首先我配置了个人的公钥，但是执行**git clone**以后一直都提示我输入密码！

于是我就开始了一步一步排查！

### 客户端私钥配置

一般情况下，ssh 会拿 **~/.ssh/id_rsa** 去连接，但是如果多个密钥对连接不同的域名的话，就需要在 **~/.ssh/config** 里进行指定域名的配置：

```
host {{domain}}
user git
hostname {{domian}}
port 22
identityfile ~/.ssh/id_rsa_2
```

这里的 **~/.ssh/id\_rsa\_2** 就是我配置在 Gogs 的公钥所对应的私钥，这样我进行 **git clone git@domian:username/repo.git** 的时候就会去拿 **~/.ssh/id\_rsa\_2** 了。

### 文件权限问题

首先确认了一下，以下文件和文件夹都是属于 Gogs 的运行用户和用户组（git:git）的：

```
/home/git/.ssh
/home/git/.ssh/authorized_keys
```

我们使用 ssh 的方式 clone repository, 其实所使用的 ssh 用户 是 git，git用户相对于系统的root用户就是个非root用户了。

ssh对于非root用户的密钥限制是非常严格的，它不允许以上的文件夹和文件有太大的权限，.ssh只需要700，而authorized_keys只需要600。执行以下命令确认权限问题：

```bash
chmod 700 /home/git/.ssh
chmod 600 /home/git/.ssh/authorized_keys
```

可是，再运行 git clone 还是提示需要密码！

### sshd_config配置问题

首先打开日志进行错误跟踪：

&gt; 注意先把 **/etc/ssh/sshd_config** 的 **LogLevel** 改成 **DEBUG**，不然看不到debug级别的日志。

```bash
tail -f /var/log/auth.log
```

然后在客户端执行 git clone 命令，看到了 /var/log/auth.log里：

```
Jul  7 22:57:24 localhost sshd[13061]: debug1: temporarily_use_uid: 1003/1003 (e=0/0)
Jul  7 22:57:24 localhost sshd[13061]: debug1: trying public key file /root/.ssh/authorized_keys
Jul  7 22:57:24 localhost sshd[13061]: debug1: Could not open authorized keys &apos;/root/.ssh/authorized_keys&apos;: Permission denied
Jul  7 22:57:24 localhost sshd[13061]: debug1: restore_uid: 0/0
Jul  7 22:57:24 localhost sshd[13061]: Failed publickey for git from 180.158.160.234 port 50987 ssh2: RSA ......
```

上面的这一条引起了注意：

```
Jul  7 22:57:24 localhost sshd[13061]: debug1: Could not open authorized keys &apos;/root/.ssh/authorized_keys&apos;: Permission denied
```

很奇怪ssh为什么去读root用户的authorized_keys，而不是git用户的。

于是打开 **/etc/ssh/sshd_config**，找到：

```
AuthorizedKeysFile      ~/.ssh/authorized_keys
```
这里错了，应该是 **.ssh/authorized_keys**！改完以后是：

```
AuthorizedKeysFile      .ssh/authorized_keys
```

如果是 **~/.ssh/authorized_keys** ，那么ssh就去拿了 **/root/.ssh/authorized_keys**，而不是所请求的用户（git）的 **~/.ssh/authorized_keys** 了，为什么呢？这是我自己的理解：首先ssh在获取到了请求用户的用户名后（使用git clone的话一般是git用户），然后ssh就会设置当前目录在git用户的home目录下，如果配置 **.ssh/authorized_keys** ，就能拿到 git 用户所需要的 **authorized_keys** 了，但是如果配置 **~/.ssh/authorized_keys**，则去拿了ssh service的执行者root用户的home下面的 **.ssh/authorized_keys** 了。

### 总结

一般出现使用 ssh 的方式进行 git 远程操作（比如 git clone），出现需要密码的情况，或者配置了密钥进行 ssh 登录，但是还是需要密码的情况，可以先从以下三点进行错误排查：

- 客户端私钥是否指定正确
- 非root用户的文件权限是否有问题
- sshd_config配置是否有问题</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>使用Github、Travis-CI和Coding.net自动部署博客［三］</title><link>https://huangyijie.com//posts/posts/2017-06-22-blog-with-github-travis-ci-and-coding-net-3/</link><guid isPermaLink="true">https://huangyijie.com//posts/posts/2017-06-22-blog-with-github-travis-ci-and-coding-net-3/</guid><pubDate>Thu, 22 Jun 2017 00:00:00 GMT</pubDate><content:encoded>迟迟到来的第三篇，也就是最后一篇。

``` yml
deploy:
  provider: script
  script: sh .travis/deploy.sh
  skip_cleanup: true
  on:
    branch: master
```

这是 Travis CI 的部署步骤的配置，“部署” 是整个工作流的最后一步，这里只注意 **branch: master**，道理和上一个说明一样，其他照抄；

### 编写部署脚本

**Travis CI** 的工作流最后一步是**部署**的功能，我们利用它本身的配置需求进行配置，并且编写相关脚本，这样就可以达到部署博客的需求了。

在博客根目录下添加 **.travis** 文件夹，文件目录结构为：

```
blogroot // 博客根目录
└── .travis
    ├── deploy.sh
    ├── private_key.enc
    └── ssh_config
```

- deploy.sh 是执行脚本

``` shell
#!/bin/bash
# Decrypt the private key
openssl aes-256-cbc -K $encrypted_adc0b7f2dba9_key -iv $encrypted_adc0b7f2dba9_iv -in .travis/private_key.enc -out ~/.ssh/id_rsa -d
# Set the permission of the key
chmod 600 ~/.ssh/id_rsa

# Start SSH agent
eval $(ssh-agent)
# Add the private key to the system
ssh-add ~/.ssh/id_rsa
# Copy SSH config
cp .travis/ssh_config ~/.ssh/config
# Set Git config
git config --global user.name &quot;henryhuang&quot;
git config --global user.email h1886@outlook.com

# Deploy to GitHub
hexo deploy
```

这个脚本的功能就是执行 **hexo deploy**，有人说那直接执行不就完了吗？

非也！我们要部署代码，就是要执行 **git push** 的操作，而这一步是需要 **ssh key** 的，否则你是没有权限给一个 git repository push 代码的，而这个脚本除了最后一步，其他所有的代码都是在构建这个带 ssh key 的上下文环境。

什么都不用管，照抄就行，只用管以下两个配置。

``` shell
# Decrypt the private key
openssl aes-256-cbc -K $encrypted_adc0b7f2dba9_key -iv $encrypted_adc0b7f2dba9_iv -in .travis/private_key.enc -out 
```

这行代码的作用就是获取你的key，毕竟私钥是不能放到代码里了，要是被别人看到了怎么办？所以Travis让你在本地用Travis知道的key对你的私钥进行加密，得到这个 **private_key.enc**，而这个key是由你自己配置到Travis上的，而这个key的名字是什么呢？就是上面的 $encrypted_adc0b7f2dba9_key 和 $encrypted_adc0b7f2dba9_iv，具体怎么配置，可以查看官网的说明 [https://docs.travis-ci.com/user/encrypting-files/#Automated-Encryption](https://docs.travis-ci.com/user/encrypting-files/#Automated-Encryption).

最后编写完成脚本后，上传代码到GitHub就可以了。</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>使用EditorConfig</title><link>https://huangyijie.com//posts/posts/2017-06-21-use-editorconfig/</link><guid isPermaLink="true">https://huangyijie.com//posts/posts/2017-06-21-use-editorconfig/</guid><pubDate>Wed, 21 Jun 2017 00:00:00 GMT</pubDate><content:encoded>使用不同编辑器，比如IDE（Eclipse，Intellij IDEA），又使用不同OS（Mac，Windows等），难免会碰到编码风格不一致的情况，那怎么办？

使用 **EditorConfig**！

## 有什么好处？

当你将代码推送到GitHub时，你可以避免Mac和Windows之间的**换行符冲突**，以及其他多人协作开发中遇到的事情。

## 什么是EditorConfig？

这段摘自官方网站。

EditorConfig帮助开发人员在不同的编辑器和IDE之间定义和维护一致的编码风格。 EditorConfig项目包括**用于定义编码样式的文件格式**和**文本编辑器插件**，使编辑器能够读取文件格式并遵守定义的样式。 EditorConfig文件易于阅读，可以使**版本控制系统**（Git等）保持良好的工作环境。

## 示例配置文件

EditorConfig的配置文件名称是 **.editorconfig **，将以下内容添加到此文件中：

```
[*]
end_of_line = lf

```

然后当你打开一个文件时，EditorConfig插件将使文件的**换行符换成 LF **。

## 如何使用

1.在你的编辑器或者IDE中添加插件

http://editorconfig.org/#download

以上链接的eclipse插件需要从Eclipse Marketplace进行安装。如果没有Eclipse Marketplace入口，你可以使用**https：//editorconfig-eclipse.github.io/repository**进行安装。

2.将.editorconfig文件添加到项目的**根目录**（对于Windows用户：要在Windows资源管理器中创建.editorconfig文件，你需要创建一个名为**.editorconfig.**的文件，Windows资源管理器将自动重命名为.editorconfig）

并添加内容：

```
root = true

[*]
end_of_line = lf

```

更多配置参见https://github.com/editorconfig/editorconfig/wiki/EditorConfig-Properties。

## 结语

请注意，EditorConfig不仅可以避免换行冲突，还可以避免**缩进样式，缩进大小，字符集等冲突**。

对于git的autocrlf配置，这个博文https://github.com/cssmagic/blog/issues/22可能对你有用。</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>JavaScript执行window.print()打印内容为空白</title><link>https://huangyijie.com//posts/posts/2016-10-08-js-window-print-blank/</link><guid isPermaLink="true">https://huangyijie.com//posts/posts/2016-10-08-js-window-print-blank/</guid><pubDate>Sat, 08 Oct 2016 00:00:00 GMT</pubDate><content:encoded>今天写代码的时候，需要用到打印页面的功能，按理说只要很简单的一段js代码就可以了：

``` javascript
window.print();
```

但是很奇怪，怎么执行，要打印的页面内容都是空白！

于是一步一步分析，终于找到了罪魁祸首的代码片段：

``` css
@media print {
    body * {
        visibility: hidden;
    }
}
```

这段 CSS 的作用就是当媒体类型为 print 的时候，body 里面所有元素都采用样式 “**visibility: hidden;**”，所以解决这个问题是
把 “**visibility: hidden;**” 去掉就可以了。

但是这里有两点可以说：

1. 写代码的时候，一个模块的功能不能影响到全局，这是谨慎也是需要第一位考虑的做法；
2. CSS 的 Media Type

### Media Type

#### Media Type 种类

**Media Type** 直译过来就是**媒体类型**，这是CSS2引入的属性，可以通过 **@media** 等方式给不同的媒体类型定义不同的CSS样式规则。上面讲到的，我在**打印**页面的时候，所处的媒体类型就是 **print**，一般我们在浏览网页的时候，媒体类型是 **screen**，W3C给出的媒体类型有以下十种（**注意，名字是大小写敏感的**）：

1. **all**
适用于所有设备。
2. **braille**
用于盲文触觉反馈设备。
3. **embossed**
用于分页盲文打印机。
4. **handheld**
用于手持设备（通常是指有限带宽的小屏设备）。
5. **print**
用于分页材料和打印预览模式下在屏幕上查看的文档。
6. **projection**
用于投影机。
7. **screen**
主要用于彩色计算机屏幕。
8. **speech**
用于语音合成设备。
9. **tty**
适用于使用固定间距字符网格（如电传打字机，终端，或具有有限显示能力的便携式设备）的媒体。在“tty”类型中不应该使用像素单元。
10. **tv**
用于电视类设备（分辨率低，彩色，有限可滚动屏幕，有声音的）。

#### Media Type 引入方式

Media Type 有多种引入方式。

1. @media方式引入
``` css
@media print{
  body * {
    visibility: hidden;
  }
}
```
	这种方式在 CSS 文件中 和 style 标签里都可以使用。
	
2. @import方式引入
``` css
@import url(&quot;css/print.css&quot;) print;
```
	和上一种一样，这种方式在 CSS 文件中 和 style 标签里都可以使用。

3. link方法引入
``` html
&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;../css/print.css&quot; media=&quot;print&quot; /&gt;
```

4. xml方式引入
``` html
&lt;?xml-stylesheet rel=&quot;stylesheet&quot; media=&quot;screen&quot; href=&quot;css/style.css&quot; ？&gt;
```</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>使用Github、Travis-CI和Coding.net自动部署博客［二］</title><link>https://huangyijie.com//posts/posts/2016-10-05-blog-with-github-travis-ci-and-coding-net-2/</link><guid isPermaLink="true">https://huangyijie.com//posts/posts/2016-10-05-blog-with-github-travis-ci-and-coding-net-2/</guid><pubDate>Wed, 05 Oct 2016 00:00:00 GMT</pubDate><content:encoded>接着[第一篇](/2016/09/20/blog-with-github-travis-ci-and-coding-net-1/)讲。

在确保注册 Travis CI 和已经安装了 **Travis CI Command Line Client** 之后，我们现在开始进行 Travis CI 相关的配置。

### 添加 Travis CI 配置文件

在博客根目录下添加 Travis CI 所需要的配置文件 **.travis.yml**，配置文件内容和一些说明如下：

``` yml
language: node_js

sudo: false

node_js:
  - &quot;5.11&quot;

cache:
  apt: true
  directories:
    - node_modules

addons:
  ssh_known_hosts: git.coding.net

script:
  - hexo clean &amp;&amp; hexo generate

branches:
  only:
    - master
```

#### 个别说明

``` yml
node_js:
  - &quot;5.11&quot;
```

使用5.11版本的nodejs，具体在你本地控制台下使用 node -v 查看版本；

``` yml
addons:
  ssh_known_hosts: git.coding.net
```

我是将代码部署到 Coding.net 上，所以配 git.coding.net，如果是部署到github 上，则配置为 github.com；

``` yml
script:
  - hexo clean
  - hexo generate
```

这个配置表示让 Travis CI 依次执行 hexo clean 和 hexo generate 命令

``` yml
branches:
  only:
    - master
```

告诉 Travis CI 只监听 master 分支的变化，如果你的源码没有放在 master 分支，则做相应改变；

好了，其他没有说明的配置项则照抄。

写完以后，我们要使用 Travis CI Command Line 进行验证，看看配置文件有没有问题：

``` shell
travis lint .travis.yml
```

出现以下反馈则说明没有问题：

``` shell
Hooray, .travis.yml looks valid :)
```

### 生成私钥加密文件

#### 什么是私钥？

私钥就是密钥对（密钥对指一对**公钥**和**私钥**），我们在使用 github 的时候，首先需要在 github 上配置**公钥**，这是最基础的。那么，存在我们本地的**私钥**就是你的个人身份标示，如果你的项目 git 地址配置的是 **git@github.com:username/projectname.git**（相对的还有 https://github.com/username/projectname.git）， 当你在对 Repository 在一些操作（比如 push 等），则需要私钥进行身份验证了（这是自动验证的，如果是使用 https 的配置，则需要提供用户名和密码）。

我们在 Travis CI 上自动部署代码，就牵扯到了 push 操作，那么就需要提供**私钥**了。

新手首先理所当然觉得直接讲私钥放在项目里不就可以了吗？

你们啊，乃衣服！

#### 为什么生成私钥加密文件？

将私钥直接放在项目里，那么人人都能看到。**私钥**的泄露将会发生一系列的问题，比如有坏人拿你的私钥直接操作你的 git 项目，你能干啥他也能干啥（原理上面讲了），这咋整？我们需要对**私钥**进行加密。

Travis 提供了加密文件的支持，什么意思呢？我们可以对文件（这里指私钥）在本地进行加密，然后把加密过后的文件放在项目里，那么别人就无法获取里面的真实内容。然后我们在让 Travis 执行脚本的时候，在读取加密文件之前对文件进行解密（使用的解密密码提前在 Travis 上配置好了），这样就可以达到不将文件内容暴露，并且让 Travis 获取到真实内容的目的了，大概的时序图如下：

![Travis文件加密](http://githubimg.wxio.club/image/jpegTravisEncFileSequenceDiagram.jpg &quot;Travis文件加密&quot;)

#### Travis 文件加密

那么现在开始进行文件的加密（主要是私钥的加密），首先看看前提（这里我直接翻译官方的说明）。

- 你的仓库已经在 Travis CI 上建立（在[前一篇](/2016/09/20/blog-with-github-travis-ci-and-coding-net-1/)已经讲过，如果你照做的话）
- 已经安装 Travis CI Command Line Client，并且已经**登陆**（在[前一篇](/2016/09/20/blog-with-github-travis-ci-and-coding-net-1/)已经讲过）

其实很简单，把私钥**拷贝**（不要删除原来的）到博客**根目录**下（之后会删除），然后执行：

```
travis encrypt-file id_rsa
```

id_rsa 是私钥文件，执行后博客根目录下会生成 id_rsa.enc 文件，这是加密过后的文件，会上传到 GitHub 上，使用它需要先进行解密。把这个加密后的文件放到博客根目录的 .travis 文件夹下（没有的话创建）后面用，别忘了删除 id_rsa 文件。 

之后登录 Travis CI 中 repositry 的 Settings 界面：

![Settings](http://githubimg.wxio.club/blog/blog-with-github-travis-ci-and-coding-net/travis-ci-key.png &quot;Settings&quot;)

Travis CI 会给我们自动生成两个环境变量--两个 key，这两个 key 是对私钥加密文件进行解密的用的。

### 提交配置

完成以上后，可以将代码提交到 GitHub 上，这样 Travis CI 就会触发任务，如果在 Travis CI 的 Job Log 里最后的 log 是以下则说明执行成功：

```
Done. Your build exited with 0.
```

但是这还没有部署到 Coding.net （或者 github.com ）上，这需要编写 deploy 相关脚本。

好了，第二篇就差不多了，在最后一篇将讲编写部署脚本。

*未完待续，还有第三篇。*</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>寓食记</title><link>https://huangyijie.com//posts/posts/2016-10-01-yushiji/</link><guid isPermaLink="true">https://huangyijie.com//posts/posts/2016-10-01-yushiji/</guid><pubDate>Sat, 01 Oct 2016 00:00:00 GMT</pubDate><content:encoded>以前在看美食公众号的时候，总觉得是小县城餐馆的风格，进去就是菜谱，选图也颇山寨，更可怕的是这种美食公众号的内容都是千篇一律，指不定多看几个公众号的内容就能找到相同的。也可能是因为大多数人对美食媒体的认识都局限在“**菜谱**”这一层面的缘故吧，想突破总觉得没有理由。

直到我朋友给我推荐了－－**寓食记**。

![寓食记](http://githubimg.wxio.club/image/jpg/yushiji/qrcode_for_yushiji.jpg &quot;寓食记&quot;)

**寓食记**的内容很文艺，或者说是最近的内容偏文艺，它首先会突出“故事”，再进入菜品的制作步骤，最重要的是每个故事都能使你很快融入这道菜的意境。

发现一个有内容的公众号可能越来越难了，再加上最近微信公众号的刷量工具出问题，导致很多公众号的真实阅读量被曝光，有的公众号刷的量快到100%了，可想大部分阅读一片繁荣的景象这得多假。</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>使用Github、Travis-CI和Coding.net自动部署博客［一］</title><link>https://huangyijie.com//posts/posts/2016-09-20-blog-with-github-travis-ci-and-coding-net-1/</link><guid isPermaLink="true">https://huangyijie.com//posts/posts/2016-09-20-blog-with-github-travis-ci-and-coding-net-1/</guid><pubDate>Tue, 20 Sep 2016 00:00:00 GMT</pubDate><content:encoded>在从前，我在本地写一篇文章后要将它不熟到服务器并且提交源码，需要这么几个步骤：

```shell
$ hexo clean &amp;&amp; hexo deploy // 我的博客是用hexo构建的，其他的静态博客构件工具还有jekyll等
$ git add .
$ git commit -m &quot;xxxx&quot;
$ git push origin source // 保存博客源码
```

这里主要做了两个操作，而这两个操作又是 **捆绑** 的，什么意思呢？就是每次写一篇文章我 **都要** 在本地执行进行部署，**并且**提交源码，这是很费劲的。

我可不可以像代码开发一样，在本地写完代码，然后提交代码，就这么结束了？当然可以了！

下面开始一步一步的讲解，过程虽然有些繁琐，但是记住这种事情只要做一次，正可谓功在当代，利在千秋啊！

## 持续集成（CI）

来到新公司，接触到了**[持续集成（CI）](http://baike.baidu.com/view/5253255.htm)**的概念，提供 CI 的开源工具有 Jenkins，但是我总不能自己跑个机器来运行 Jenkins 对我的博客源码变化进行监控吧？那么，就想到了有没有开源、免费的、提供 CI 功能的在线工具服务呢？当然有，[**Travis CI**](https://travis-ci.org/) 是目前比较火的开源持续集成构建工具，而且它对github的集成支持非常好。

## 怎么自动部署

那么，具体是怎么个自动部署法？这是时序图：

![自动部署是时序图](http://githubimg.wxio.club/blog-with-github-travis-ci-SequenceDiagram.jpg &quot;自动部署时序图&quot;)

1. 创建文章；
2. 将代码 push 到远程仓库，这里是 Github；
3. Github 调用 Travis 的 webhook，关于什么是 webhook，这里不具体说明了，大体上就是一个链接，Travis 在 Github 上配置以后，Github 每发生一些事件（就比如我这里的 push）就会掉用访问这个链接以**起到通知 Travis 的作用**；
4. Travis 从 github 获取代码；
5. Travis build 代码；
6. Travis 部署博客到 Coding.net。

可以看到，在本地只需要执行两步操作，剩下的我完全不用管。

最右边的 **[Coding.net](https://coding.net/)** 是我用来部署博客的，它是类似  Github 的代码托管，并且也提供 pages 的服务，最关键的一点是它是**中国本地**的。最开始我部署在 Github 上，但是由于国内访问实在太慢而且不稳定，所以就选择了 **[Coding.net](https://coding.net/)**。

下一篇将会着重讲 Travis CI 的配置和使用，在这之前先得注册 Travis CI 和安装一个 Travis 官方提供的命令行工具 **Travis CI Command Line Client**，它可以快捷地使用一些功能，比如生成 Travis 的加密文件等。

## 注册 Travis CI

Travis CI 不需要单独注册，直接使用 GitHub 账号登录就可以了。

上官网会发现有 Sign in with GitHub（使用GitHUb登录）和 Sign Up（注册），其实这俩做的事情都一样，就是用 GitHub 账号登录。

登录后界面会显示你的 GitHub repository，默认全部全部没有勾选（“叉号”），选择你的博客的 repository（使之变成“对号”） 后完成第一步，如图：

![注册Travis CI](http://githubimg.wxio.club/blog/blog-with-github-travis-ci-and-coding-net/travis-sign-in.png &quot;注册Travis CI&quot;)

接下来是添加配置文件 .travis.yml 和 进行第一次 push 代码触发工作，这两部再下一篇再讲。

## 安装 Travis CI Command Line Client

以下的安装教程是我直接翻译的[官方安装说明](https://github.com/travis-ci/travis.rb#installation)。

请确保本地已经安装**[Ruby](http://www.ruby-lang.org/en/downloads/)**，并且版本不低于1.9.3，推荐2.0.0版。

可以通过执行以下命令验证 Ruby 的版本：

```
$ ruby -v
ruby 2.0.0p195 (2013-05-14 revision 40734) [x86_64-darwin12.3.0]
```

然后执行:

```
$ gem install travis -v 1.8.2 --no-rdoc --no-ri
```

最后验证一下是否安装成功:

```
$ travis version
1.8.2
```

如上，如果出现 1.8.2 这样的版本信息，则说明 Travis CI Command Line Client 安装成功。之后进行登录，执行：

```
$ travis login
```

按照提示依次输入用户名、密码，Two-factor码（如果你有设置的话），以下是登录成功的反馈：

```
$ travis login
We need your GitHub login to identify you.
This information will not be sent to Travis CI, only to api.github.com.
The password will not be displayed.

Try running with --github-token or --auto if you don&apos;t want to enter your password anyway.

Username: henryhuang
Password for henryhuang: *************
Two-factor authentication code for henryhuang: 403317
Successfully logged in as henryhuang!
```

使用 **gem** 需要安装 **ruby 环境**，作为一个开发人员，不要嫌麻烦。

*未完待续，还有第二篇。*</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>书单</title><link>https://huangyijie.com//posts/posts/2016-05-12-booklist/</link><guid isPermaLink="true">https://huangyijie.com//posts/posts/2016-05-12-booklist/</guid><pubDate>Thu, 12 May 2016 00:00:00 GMT</pubDate><content:encoded>在阳台晾衣服的时候，看到了书柜上尘封已久的书籍，别有一番滋味在心头啊！

从开始工作到现在，多多少少买了一些书，有技术的也有非技术的，记得两年前京东经常有图书活动，买200减去100这样的，所以当时买了很多，后来就买的少了，更多的是看电子书，再加上买了个Kindle，几乎没有再进纸质书了。

突然有个想法想整理一下技术书籍，以后想搞个借书换书的功能，最初的想法是这样（现在还没进一步的去想），步骤如下：

1. 给我发电子邮件所要哪本书，并提供身份证明（这一步也是不得已），身份证明大致包括如下：
    1. github账号
	2. 提供手机号码
	3. 照片
	4. 邮寄地址
2. 克隆[Booklist](https://github.com/henryhuang/booklist)，在所要借阅的书籍后面备注借阅者身份信息，提交github的pull request
3. 给我转账，包括邮费、押金（前期我觉得还是需要押金，后期可能就不需要了，至于押金多少还没定），当然快递到付就不需要邮费了
4. 我寄书

大致的过程就是这样，当然这里面是有漏洞的，比如这里面是先给我转账后我再寄书，这对借阅者是不保险的，唯一能靠的就是**信任了** ：）。其实开个淘宝店来卖“借阅”这种商品也是可以的，但是我觉得太麻烦了 = =。

Booklist的地址如下：

[https://github.com/henryhuang/booklist](https://github.com/henryhuang/booklist)

最后想说的是，如果这个事办成，这件事核心只有一个：**分享**。</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>WebJars使用示例</title><link>https://huangyijie.com//posts/posts/2016-04-07-webjars-usage-sample/</link><guid isPermaLink="true">https://huangyijie.com//posts/posts/2016-04-07-webjars-usage-sample/</guid><pubDate>Thu, 07 Apr 2016 00:00:00 GMT</pubDate><content:encoded>## 说明

这里只介绍Servlet3如何使用WebJars（Classic风格），文章中示例源码地址在[https://github.com/henryhuang/webjars-example](http://https://github.com/henryhuang/webjars-example)。

## 代码编写

### Servlet类

首先配置一个Servlet：

``` java

public class ServletSample extends HttpServlet {
	
	private static final long serialVersionUID = -5041101055869552308L;
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doPost(req, resp);
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		
		try(PrintWriter printWriter = resp.getWriter()) {
			printHTML(printWriter, &quot;&lt;script type=&apos;javascript&apos; src=&apos;webjars/jquery/3.0.0-alpha1/jquery.js&apos;&gt;&lt;/script&gt;&quot;, &quot;OK&quot;);
			printWriter.flush();
		}

	}
	
	private void printHTML(PrintWriter printWriter, String headContent, String bodyContent) {
		printWriter.print(&quot;&lt;html&gt;&quot;);
		printWriter.print(&quot;&lt;head&gt;&quot;);
		printWriter.print(headContent);
		printWriter.print(&quot;&lt;/head&gt;&quot;);
		printWriter.print(&quot;&lt;body&gt;&quot;);
		printWriter.print(bodyContent);
		printWriter.print(&quot;&lt;/body&gt;&quot;);
		printWriter.print(&quot;&lt;/html&gt;&quot;);
	}
	
}

```

注意 **cnhalo.ServletSample#doPost**:

``` java

printHTML(printWriter, &quot;&lt;script type=&apos;javascript&apos; src=&apos;webjars/jquery/3.0.0-alpha1/jquery.js&apos;&gt;&lt;/script&gt;&quot;, &quot;OK&quot;);

```

**&quot;webjars/jquery/3.0.0-alpha1/jquery.js&quot;** 是根据jquery的WebJars包里**META-INF/resources**下的路径写的：

![文件结构](http://77fkdd.com1.z0.glb.clouddn.com/image%2Fpng%2Fwebjars-lib-tree.png)

### web.xml

web.xml 里的内容为：

``` xml
  &lt;servlet&gt;
  	&lt;servlet-name&gt;webjars&lt;/servlet-name&gt;
  	&lt;servlet-class&gt;cnhalo.ServletSample&lt;/servlet-class&gt;
  &lt;/servlet&gt;
  &lt;servlet-mapping&gt;
  	&lt;servlet-name&gt;webjars&lt;/servlet-name&gt;
  	&lt;url-pattern&gt;/webjars&lt;/url-pattern&gt;
  &lt;/servlet-mapping&gt;
```

## 运行

### 自己打包

示例项目使用Gradle进行构建，需要配置Gradle的环境，然后依次执行：

``` bash
git clone http://https://github.com/henryhuang/webjars-example
cd webjars-example
gradle war // 生成war包
```

gradle会打出war包，进入项目的 build/libs/ 下面，看到 **webjars-1.0.war** 即是，将war包放入tomcat下运行即可。

**注意，代码使用了jdk8。**

### 使用发布包

如果不想使用gradle打包，可以使用我已经打好的包[webjars-1.0.war](https://github.com/henryhuang/webjars-example/releases/download/1.0/webjars-1.0.war)。

## 验证

启动tomcat，访问 **http://localhost:8080/webjars-1.0/webjars**，界面显示 **OK**，查看页面源码（使用FireFox，鼠标右键，查看页面源代码，其它浏览器类似）：

``` html
&lt;html&gt;
&lt;head&gt;
    &lt;script type=&apos;javascript&apos; src=&apos;webjars/jquery/3.0.0-alpha1/jquery.js&apos;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
    OK
&lt;/body&gt;
&lt;/html&gt;
```

点击 *webjars/jquery/3.0.0-alpha1/jquery.js* ，可显示 jquery的源码信息，则使用成功！</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>WebJars介绍</title><link>https://huangyijie.com//posts/posts/2016-04-04-webjars-introduction/</link><guid isPermaLink="true">https://huangyijie.com//posts/posts/2016-04-04-webjars-introduction/</guid><pubDate>Mon, 04 Apr 2016 00:00:00 GMT</pubDate><content:encoded>## 什么是WebJars

什么是WebJars？WebJars是将客户端（浏览器）资源（JavaScript，Css等）打成jar包文件，以对资源进行统一依赖管理。WebJars的jar包部署在Maven中央仓库上。

## 为什么使用WebJars

我们在开发Java web项目的时候会使用像Maven，Gradle等构建工具以实现对jar包版本依赖管理，以及项目的自动化管理，但是对于JavaScript，Css等前端资源包，我们只能采用拷贝到webapp下的方式，这样做就无法对这些资源进行依赖管理。那么WebJars就提供给我们这些前端资源的jar包形势，我们就可以进行依赖管理。

## 三种风格的WebJars

官方提供三种风格的WebJars，NPM，Bower，和Classic。

### NPM WebJars

- 根据镜像即时创建和部署
- 任何人都可以请求发布资源包
- 使用[NPM](https://www.npmjs.com/)的镜像资源，NPM是javascript（主要是nodejs，iojs）的包管理工具

### Bower WebJars

- 根据镜像即时创建和部署
- 任何人都可以请求发布资源包
- 使用[Bower](http://www.bower.io/)的镜像资源，Bower是前端资源的管理工具

### Classic WebJars

- 手工打包并且部署
- 只由WebJars官方团队发布
- 人工创建RequireJS配置文件（RequireJS是一个使浏览器使用javascript模块化的库）

前两种主要是使用很成熟的前端资源管理工具的仓库资源来创建jar包并且部署，但是任何人都可以发布包，这就造成了有些包的内容不严谨，说不定给你弄点恶意代码你都不知道，而第三种是由官方团队进行发布。

前两种根据镜像即时发布，可以使资源版本维持在最新状态，而第三种是手工打包的，难免会有延迟。

## 官方网站

[http://www.webjars.org/](http://www.webjars.org/)

关于WebJars的使用，可看我这篇[WebJars使用示例](/2016/04/07/webjars-usage-sample/)</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>Maven打jar包内容出错</title><link>https://huangyijie.com//posts/posts/2016-03-29-maven-build-jar-no-class-file/</link><guid isPermaLink="true">https://huangyijie.com//posts/posts/2016-03-29-maven-build-jar-no-class-file/</guid><pubDate>Tue, 29 Mar 2016 00:00:00 GMT</pubDate><content:encoded>今天在使用maven打包时，发现打的jar包有问题。

## 第1种情况－无class文件

打的jar包没有内容（准确地说是没有class）,猜想应该是maven打包的时候没有compile java源文件到class，从网上找原因，原来maven默认是compile **src/main/java** 下的java文件，而我们目录结构中的源码目录是 **src/**，需要在**pom.xml**里指定源码位置。

在pom.xml文件的 build &gt; resources 前加入 &lt;sourceDirectory&gt;${basedir}/src&lt;/sourceDirectory&gt; ，如下：

``` xml
&lt;sourceDirectory&gt;${basedir}/src&lt;/sourceDirectory&gt;
&lt;resources&gt;
    &lt;resource&gt;
        &lt;filtering&gt;false&lt;/filtering&gt;
        &lt;directory&gt;src/main/java&lt;/directory&gt;
        &lt;includes&gt;
            &lt;include&gt;**&lt;/include&gt;
        &lt;/includes&gt;
        &lt;excludes&gt;
            &lt;exclude&gt;**/*.java&lt;/exclude&gt;
        &lt;/excludes&gt;
    &lt;/resource&gt;
&lt;/resources&gt;
```

打出的jar包内就有class了。

## 第2种情况－无资源文件

启动系统后，界面报错，提示找不到 html 资源文件。

由于使用的是[Wicket](http://wicket.apache.org)，需要打入Component对应的html文件（这是Wicket的特点），界面提示找不到html文件，查找这个jar包的内容，发现没有html，再次回到 pom.xml 文件查看：

``` xml
&lt;sourceDirectory&gt;${basedir}/src&lt;/sourceDirectory&gt;
&lt;resources&gt;
    &lt;resource&gt;
        &lt;filtering&gt;false&lt;/filtering&gt;
        &lt;directory&gt;src/main/java&lt;/directory&gt;
        &lt;includes&gt;
            &lt;include&gt;**&lt;/include&gt;
        &lt;/includes&gt;
        &lt;excludes&gt;
            &lt;exclude&gt;**/*.java&lt;/exclude&gt;
        &lt;/excludes&gt;
    &lt;/resource&gt;
&lt;/resources&gt;
```

如上，resources &gt; resource &gt; directory 的内容是 src/main/java，改成 src 后再打的jar包就好了。

具体原因和第一个问题类似，这里的配置是将 resource （除了class等其他资源）打入jar包，而配置是只将 src/main/java 内的所有资源（除了java文件的文件）打入jar包，实际上我们所希望的是将 src/ 下的打入，改完后如下：

```xml
&lt;sourceDirectory&gt;${basedir}/src&lt;/sourceDirectory&gt;
&lt;resources&gt;
    &lt;resource&gt;
        &lt;filtering&gt;false&lt;/filtering&gt;
        &lt;directory&gt;src&lt;/directory&gt;
        &lt;includes&gt;
            &lt;include&gt;**&lt;/include&gt;
        &lt;/includes&gt;
        &lt;excludes&gt;
            &lt;exclude&gt;**/*.java&lt;/exclude&gt;
        &lt;/excludes&gt;
    &lt;/resource&gt;
&lt;/resources&gt;
```

## 参考

pom.xml的上级配置（默认配置）：[https://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Super_POM](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Super_POM)</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>数据分布式模型</title><link>https://huangyijie.com//posts/posts/2016-03-26-distributed-data-model/</link><guid isPermaLink="true">https://huangyijie.com//posts/posts/2016-03-26-distributed-data-model/</guid><pubDate>Sat, 26 Mar 2016 00:00:00 GMT</pubDate><content:encoded>## 概述

数据的分布有两种途径：

- 复制（replication）：
	
	将同一份数据拷贝至多个节点；复制又分为：**主从式**（master-slave）和**对等式**（peer-to-peer）。

- 分片（sharding）：

	将不同数据存放在不同节点。
	
&lt;!--more--&gt;

## 复制	
	
将数据复制到多个服务器上，每份数据都能在多个节点中找到，复制方式又分为**主从复制**和**对等复制**。
	
### 主从复制

我们把数据复制到多个节点中，其中有个节点叫做**主节点**，其余节点叫做**从节点**。主节点存放权威数据，通常负责处理数据更新操作；从节点一般提供数据读取的功能。复制操作让从节点与主节点同步。

主从复制有这么些好处是：

- 在需要频繁读取数据的情况下，主从复制有助于提升数据访问性能
- 主从复制可以增强**读取操作**的故障恢复能力

但是，主从复制最大的缺陷就是**数据的一致性**问题。如果数据更新没有通知全部从节点，那么不同的客户端就可能从节点中读取到不同的值，这个问题之后再做补充。

### 对等复制

对等复制和主从复制的区别就是前者没有**主节点**这个概念。所有的节点地位相同，都可以接受写入请求，而且丢失其中一个副本，不影响整个数据库的访问。

它的优点是很从容处理出错的节点，因为所有的节点数据都一致，不必担心数据请求会丢失，而且只需增加节点，就可以轻易提升性能。

但是，对等复制的最大问题还是**数据的一致性**问题。有可能出现两个用户在同一时间试图更新同一条记录，导致**写入冲突**。主从复制也有数据一致性的问题，不过数据读取的不一致性至少持续时间相对比较短（待主节点通知到所有的从节点，数据就一致了），而写入操作导致的不一致数据却总是存在。

## 分片

将不同部分的数据分片存放在独立的节点上，每个节点负责自身数据的读取和写入操作，不同的服务器节点服务于不同的用户。为了获取理想效果，必须保证需要同时访问的那些数据存放在同一节点上，并且节点必须排布好这些数据块，使访问速度最优。

在存放**同时访问的数据**的选择上，可以把**聚合**作为分布数据的单元，因为聚合就是把需要同时访问的数据放在一起。

在**节点排布**的问题上，首先考虑把数据放得离访问者近一些，然后是**保持负责均衡**（把聚合数据均匀地分布在各个节点中，让它们需要处理的负载量相等）。

分片可以同时提升读取与写入效率，提升性能。但是，它的**故障恢复能力**却不强，它只能保证访问此数据的用户才会受影响，其他用户则能正常访问。

## 结合

主从复制和分片的结合所达到的效果是整个系统有多个主节点，对每项数据来说，负责它的主节点只有一个；对等复制和分片的结合，就是把每片数据存放在多个节点上，这样一旦一个节点出错，可以保证其他节点重建数据。

## 总结

数据分布分为两种方式，**分片**和**复制**，其中复制又分为**主从**和**对等**。主从复制减少了更新数据时的冲突几率，但是主节点的写入操作是瓶颈，而对等复制却相反。</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>Wicket的HelloWorld</title><link>https://huangyijie.com//posts/posts/2016-03-13-wicket-hello-world/</link><guid isPermaLink="true">https://huangyijie.com//posts/posts/2016-03-13-wicket-hello-world/</guid><pubDate>Sun, 13 Mar 2016 00:00:00 GMT</pubDate><content:encoded>在公司用了4年的Wicket了，竟然发现没有写个HelloWorld。

Wicket，全称Apache Wicket， 它是个基于组件的Web应用框架，更多的解释看[Wikipedia](https://en.wikipedia.org/wiki/Apache_Wicket)。

官方网站：[wicket.apache.org](http://wicket.apache.org/)。

很遗憾，由于Wicket在国内的普及程度不够，中文相关的文档很少，有的话也就是基于1.2版本的，官方最新的release版本已经是7.x，SNAPSHOT是8.x（Wicket的版本规则从1.5以后就为6.x，7.x，8.x，有点像Java的版本规则）。

这里的HelloWorld是结合Gradle，Jettty完成的，在Eclipse IDE上开发。

&lt;!--more--&gt;

&gt; 什么是Gradle？
	
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置，而不是传统的XML。

其他的自动化构建工具还有Ant和Maven等。

它有丰富的插件机制。

Eclipse上Gradle的配置请先看[http://www.cnphp6.com/archives/42868](http://www.cnphp6.com/archives/42868)。

&gt; 什么是Jetty？

Jetty是一个纯粹的基于Java的网页服务器和Java Servlet容器。

其他的容器还有Tomcat，JBoss等。

这里使用Jetty是使用Gradle的Jetty插件。

下面开始HelloWorld。

### 创建Eclipse项目
	
以此选择File-&gt;Other，搜索 Gradle，选择 Gradle Project，输入Project name为 wicket-helloworld，Sample project选择 Java Quickstart，然后Finish。
	
### 调整项目文件结构

由于我们使用Java Quickstart的Sample project，会生成一些我们不需要的文件，所有我们需要调整文件结构（我这里都以**cnhalo**为包名前缀），调整后的结构为：

![文件结构](http://77fkdd.com1.z0.glb.clouddn.com/wicket-hello-worldproject-structure2.png)
	
### 加入Wicket依赖
	
我们向Gradle中加入Wicket依赖，在build.gradle中dependencies里加入：

```
compile ‘org.apache.wicket:wicket-core:7.2.0’
```

我写这遍文章的时候，使用最新的release版本7.2.0，更新的版本可在[mvnrepository.com](http://mvnrepository.com/artifact/org.apache.wicket/wicket-core)查看。

加入依赖后，在项目的右键，依次点击Gradle-&gt;Refresh All，让Gradle去下载依赖的包，等待下载完成后，项目的Gradle Dependencies为：

![Gradle Dependencies](http://77fkdd.com1.z0.glb.clouddn.com/wicket-hello-worldgradle-dep.png)

### 配置Jetty

在build.gradle最上面加入：

```
apply plugin: &apos;war&apos;
apply plugin: &apos;jetty&apos;
```
在Eclipse项目的的 src/main 下依次创建 webapp/WEB-INF/web.xml：

![web.xml](http://77fkdd.com1.z0.glb.clouddn.com/wicket-hello-worldwebxml.png)

web.xml的内容为：

``` xml

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;web-app id=&quot;WebApp_ID&quot; version=&quot;2.4&quot;
xmlns=&quot;http://java.sun.com/xml/ns/j2ee&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&quot;&gt;

  &lt;display-name&gt;Wicket Hello World&lt;/display-name&gt;
  &lt;filter&gt;
    &lt;filter-name&gt;App&lt;/filter-name&gt;
    &lt;filter-class&gt;org.apache.wicket.protocol.http.WicketFilter&lt;/filter-class&gt;
    &lt;init-param&gt;
      &lt;param-name&gt;applicationClassName&lt;/param-name&gt;
      &lt;param-value&gt;cnhalo.CHApp&lt;/param-value&gt;
    &lt;/init-param&gt;
    &lt;init-param&gt;
      &lt;param-name&gt;configuration&lt;/param-name&gt;
      &lt;param-value&gt;DEPLOYMENT&lt;/param-value&gt;
    &lt;/init-param&gt;
  &lt;/filter&gt;

  &lt;filter-mapping&gt;
    &lt;filter-name&gt;App&lt;/filter-name&gt;
    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
    &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;
    &lt;dispatcher&gt;INCLUDE&lt;/dispatcher&gt;
  &lt;/filter-mapping&gt;

&lt;/web-app&gt;

```
注意，这里的 cnhalo.CHApp 这个类这里还未创建，org.apache.wicket.protocol.http.WicketFilter 这个过滤器是请求进入Web容器后再进入Wicket的入口。
	
### 创建Wicket相关代码

创建 cnhalo.CHApp 类，继承org.apache.wicket.protocol.http.WebApplication，全部代码为：

``` java

package cnhalo;

import org.apache.wicket.Page;
import org.apache.wicket.protocol.http.WebApplication;

/**
 *
 *
 * @author	HuangYijie
 * @date	Mar 13, 2016 9:49:43 PM
 * 
 */
public class CHApp extends WebApplication {

  @Override
  public Class&lt;? extends Page&gt; getHomePage() {
    return IndexPage.class;
  }

}

```
创建 cnhalo.IndexPage 类，继承 org.apache.wicket.markup.html.WebPage，全部代码为：

``` java

package cnhalo;

import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;

/**
 *
 *
 * @author	HuangYijie
 * @date	Mar 13, 2016 9:51:10 PM
 * 
 */
public class IndexPage extends WebPage {

  private static final long serialVersionUID = -2856887644490684320L;
  
  public IndexPage() {
    add(new Label(“helloworld”, “Wicket Hello World”)); // 在IndexPage.html中对wicket:id=“helloworld”的组件进行匹配
  }
  
}


```
在 cnhalo.IndexPage 的同级目录中创建 IndexPage.html：

``` html
&lt;!DOCTYPE html&gt;
&lt;html xmlns:wicket&gt;
&lt;head&gt;
&lt;meta charset=“UTF-8”&gt;
&lt;title&gt;Wicket Hello World&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

  &lt;h1 wicket:id=“helloworld”&gt;&lt;/h1&gt;

&lt;/body&gt;
&lt;/html&gt;
```

### 运行

在Eclipse项目右键，依次选择 Run As -&gt; Run with Jetty，然后浏览器访问 localhost:8080，即可看到 **Wicket Hello World**。
	
### 在Tomcat下运行

要在Tomcat下运行，只要打成war包就可以，依次在Eclipse项目右键执行 Gradle -&gt; Task Quick Launcher，输入 war 后回车。Gradle将会打出 war 包，等 Eclipse 的 Console 显示：

``` shell

[sts] -----------------------------------------------------
[sts] Starting Gradle build for the following tasks: 
[sts]      war
[sts] -----------------------------------------------------
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:war UP-TO-DATE

BUILD SUCCESSFUL

Total time: 0.276 secs
[sts] -----------------------------------------------------
[sts] Build finished succesfully!
[sts] Time taken: 0 min, 0 sec
[sts] -----------------------------------------------------


```
刷新Eclipse项目的build，build/libs/wicket-helloworld-1.0.war 即可放入Tomcat的webapps下。

---

文章中使用软件的版本：

JDK: 1.8.0_45
Gradle: 2.0
Eclipse: Luna Release (4.4.0)

项目源码地址：[https://github.com/henryhuang/WicketHelloWorld](https://github.com/henryhuang/WicketHelloWorld)。</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>Java运行时内存结构</title><link>https://huangyijie.com//posts/posts/2016-03-09-java-memory-area-structure/</link><guid isPermaLink="true">https://huangyijie.com//posts/posts/2016-03-09-java-memory-area-structure/</guid><pubDate>Wed, 09 Mar 2016 00:00:00 GMT</pubDate><content:encoded>![Java内存结构图](http://77fkdd.com1.z0.glb.clouddn.com/it%2Fjava%2Fjava-memory-stracture.png)

由图所示，Java运行时内存区域分为：**虚拟机栈**、**方法区**、**本地方法栈**、**程序计数器**和**堆**。

&lt;!--more--&gt;

### 程序计数器
	
程序计数器可以看作是**当前线程**所执行的字节码的行号指示器，它只了很小的内存。程序的基础功能（循环、跳转、异常处理、线程恢复等）都需要依赖这个计数器来完成。程序计数器是属于**线程私有**的。
	
### 虚拟机栈
	
虚拟机栈描述的是Java方法之行的内存模型：每个方法被执行的时候都会同时创建一个栈帧，用于存储局部变量表、操作数栈、动态链表、方法出口等信息。

每一个方法被调用直至执行完成的过程，就是对应一个栈帧在虚拟机从**入栈道出栈**的过程。

我们平时所关心的栈，可以说是虚拟机栈中的**局部变量表**，局部变量表存放了编译期可知的**基本数据类型**（boolean、byte、char、short、int、float、long、double）、**对象引用**和**returnAddress**类型。

JVM规范规定了这个区域的两种异常：

- **StackOverflowError**
  
  如果线程请求的**栈深度**大于虚拟机所允许的深度时会抛出；

- **OutOfMemoryError**

  如果虚拟机栈可以动态扩展，当扩展时无法申请到足够的内存时会抛出。

### 本地方法栈

本地方法栈与虚拟机栈所发挥的作用是非常相似的，虚拟机栈执行**Java方法（字节码）服务**，而本地方法栈则是**Native方法服务**。

本区域会抛出 **StackOverflowError** 和 **OutOfMemoryError**异常。
	
### 方法区

方法区存储**已经**被虚拟机加载的**类信息**、**常量**、**静态变量**、**即时编译器编译后
的代码**。

有些资料说方法区为“**永久代（Permanent Generation）**”（其实只有HotSpot虚拟机）。

在垃圾回收方面，这个区域很少出现垃圾回收行为，但是不是说没有垃圾回收。这个区域的垃圾回收主要目标是**常量池**的回收和对**类型**的卸载。

JVM规范规定，这个区域会抛出 **OutOfMemoryError** 异常：当方法区无法满足内存分配需求时抛出。		

### 运行时常量池

  **运行时常量池** 是方法区的一部分。Class文件中除了有类的版本、字段、方法、接口等描述信息外，还有一项信息是常量池（Constant Pool Table），用于存放**编译期**生成的各种**字面量**和**符号引用**，这部分内容将在类加载后存放到方法区的运行时常量池中。

  运行时常量池的另一个重要特征是具备动态性，除了Class文件中常量池的内容进入方法区常量池外，运行期间也可能将新的常量放入池中，比如String类的intern()。

  这部分会抛出 OutOfMemoryError 异常：当常量池无法再申请到内存时会抛出。

### 堆

Java堆是被**所有线程共享**的一块内存区域，在虚拟机启动的时候创建。大多数应用中，堆事JVM内存中**最大**的一块。按照JVM规范，**所有的对象实例以及数组都要在堆上分配**，但是随着技术的发展，这已经不是绝对的了。

Java堆是垃圾收集器管理的主要区域，被称为**GC堆**，按照**分带收集算法**（现在基本是），堆分为**新生代**和**老年代**。从内存非配的角度，线程共享的Java堆中可能划分出多个线程私有的分配缓冲区。

这里存放的都是**对象实例**。

堆的大小可通过 **-Xmx** 和 **-Xms** 控制。

这里会抛出 **OutOfMemoryError**：堆中没有内存完成**实例分配**，并且堆也**无法再扩展**时。

### 总结

简单的归类，Java运行时内存区域中：

属于**线程私有**的区域是：程序计数器、虚拟机栈、本地方法栈；

属于**线程共享**的区域是：堆、方法区（包括运行时常量池）。</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item><item><title>前端优化法则</title><link>https://huangyijie.com//posts/posts/2016-02-29-rules-of-front-end-optimization/</link><guid isPermaLink="true">https://huangyijie.com//posts/posts/2016-02-29-rules-of-front-end-optimization/</guid><pubDate>Mon, 29 Feb 2016 00:00:00 GMT</pubDate><content:encoded>前两天被人问到前端的优化有哪些，我支支吾吾也只能说出两三条，表示很惭愧。

说到前端优化的必修课，那就是[Yahoo的前端优化性能规则](https://developer.yahoo.com/performance/rules.html)，里面都是别人的经验总结，有 **35** 条之多，这是先分类在文章最后，之后会个别阐述我针对最初的 **14** 条，借鉴别人的翻译成果和我自己的解读。

&lt;!--more--&gt;

### 35条分类

&gt; 标注 ＊ 号的是最初的14条

- 内容
	- 减少HTTP请求 * 
	- 减少DNS查询 *
	- 避免重定向 *
	- Ajax缓存化 *
	- 后载入组件
	- 预先载入组件
	- 减少DOM元素数量
	- 跨域分离组件
	- 最少化iframe
	- 避免404错误
- 服务端
	- 使用CDN（内容分布网络） *
	- 增加过期时间或者可控制缓存的请求头 *
	- 使用Gzip组件 *
	- 配置ETags（实体标签） *
	- 提前刷新缓冲区
	- Ajax请求使用Get方法
	- 避免空的图片src
- Cookie
	- 减少Cookie大小
	- 为组件使用无Cookie域
- CSS
	- 将样式放在顶部 *
	- 避免使用CSS表达式 *
	- 选择&lt;link&gt;而不要@import
	- 避免过滤器
- JavaScript	
	- 将JS放在底部 *
	- 使用外部的JS和CSS *
	- 压缩JS和CSS *
	- 去掉重复的脚本 *
	- 最小化Dom读取
	- 开发灵活的事件处理器
- 图片
	- 优化图片
	- 优化CSS Sprites（CSS精灵）
	- 在HTML中不要缩放图片
	- 制作小的和可缓存的favicon.ico
- 移动
	- 组件维持在25kb以下
	- 将组件放入复合的文档中</content:encoded><author>海拉鲁球果 &lt;hyrule-journal@cnhalo.com&gt;</author></item></channel></rss>