<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on 香取海</title><link>https://zhimoe.github.io/post/</link><description>Recent content in Posts on 香取海</description><generator>Hugo</generator><language>zh</language><lastBuildDate>Sun, 01 Feb 2026 22:09:37 +0800</lastBuildDate><atom:link href="https://zhimoe.github.io/post/index.xml" rel="self" type="application/rss+xml"/><item><title>爆火的Clawdbot，是AI agent的未来么</title><link>https://zhimoe.github.io/post/the-clawdbot-epiphany/</link><pubDate>Sun, 01 Feb 2026 22:09:37 +0800</pubDate><guid>https://zhimoe.github.io/post/the-clawdbot-epiphany/</guid><description>&lt;p&gt;Clawdbot 的开源项目一夜爆红，却在短短几天内遭遇品牌危机、安全漏洞与金融投机的三重打击。但是接着围绕 ai agent 上线的类 reddit 论坛 moltbook 则彻底在 IT 圈子出圈，引发了 AI 大神 Karpathy 发风险提醒。&lt;/p&gt;</description></item><item><title>Claude Code 教程</title><link>https://zhimoe.github.io/post/claude-code-tutorial/</link><pubDate>Sat, 03 Jan 2026 15:33:01 +0800</pubDate><guid>https://zhimoe.github.io/post/claude-code-tutorial/</guid><description>&lt;p&gt;25 年 12 月 27 号 Andrej Karpathy 在 X 上表达了 AI 对软件开发的模式重构带来的焦虑:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I&amp;rsquo;ve never felt this much behind as a programmer. The profession is being dramatically refactored as the bits contributed by the programmer are increasingly sparse and between. I have a sense that I could be 10X more powerful if I just properly string together what has become available over the last ~year and a failure to claim the boost feels decidedly like skill issue. There&amp;rsquo;s a new programmable layer of abstraction to master (in addition to the usual layers below) involving agents, subagents, their prompts, contexts, memory, modes, permissions, tools, plugins, skills, hooks, MCP, LSP, slash commands, workflows, IDE integrations, and a need to build an all-encompassing mental model for strengths and pitfalls of fundamentally stochastic, fallible, unintelligible and changing entities suddenly intermingled with what used to be good old fashioned engineering. Clearly some powerful alien tool was handed around except it comes with no manual and everyone has to figure out how to hold it and operate it, while the resulting magnitude 9 earthquake is rocking the profession. Roll up your sleeves to not fall behind.&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>网易云音乐 Music Playlist(2015-2020)</title><link>https://zhimoe.github.io/post/163-music-playlist/</link><pubDate>Wed, 05 Nov 2025 19:18:56 +0800</pubDate><guid>https://zhimoe.github.io/post/163-music-playlist/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Teeth - 5 Seconds of Summer
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Wind of Change - Scorpions
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Stuck In The Middle - MIKA
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Naked - Di-Rect
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Ob-La-Di, Ob-La-Da - Gabriela Bee
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;マジ切れ！！ - 瀬川英史
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;First Day Of My Life - Melanie C
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Forest Hymn - Bill Douglas
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Cedars of Lebanon - Steve Barakatt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;5 Years Time - Noah and the Whale
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Smile - Sheppard
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;For フルーツバスケット - 岡崎律子
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Rise - Epic Music - John Dreamer
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;そばにいるね - 青山テルマ
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Give a little time to your love - Richard Clayderman
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Smile - Dami Im
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Time - Cat naps
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I Do - 911
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Undo - Sanna Nielsen
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Heartstrings - Ben Saunders
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Love Me Like There&amp;#39;s No Tomorrow - Freddie Mercury
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Running - James Bay
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Life Is Wonderful (Live in Amsterdam) - Jason Mraz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bad guy - Billie Eilish
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Fly - D-Side
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ありがとう... - KOKIA
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Remember Me (Lullaby) (From &amp;#34;Coco&amp;#34;/Soundtrack Version) - Gael Garcia Bernal
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Mr. Lonely - Bobby Vinton
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;岛人ぬ宝 - Manami
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;島人ぬ宝 - hiro
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Over and Over - Rachael Yamagata
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;なごり雪 - 福耳
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;执迷不悔 - 王菲
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;好き - 杉本エマ
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Town of Windmill - a_hisa
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;慢慢喜欢你 - 莫文蔚
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;秋桜 - 河合奈保子
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Girl In The Mirror - Sophia Grace / Silento
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;アイロニ - majiko
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;行かないで - 玉置浩二
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Every Breath You Take - Karen Souza
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Let&amp;#39;s Have a Party - Wanda Jackson
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;サマーブリーズにのって - I WiSH
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ひとつぶの涙 - Kiroro
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;それが大事 - 川嶋あい
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ハーフムーン･セレナーデ - 河合奈保子
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;秋桜 - 柴田淳
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Brave - Jennifer Lopez
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Aurora Borealis - John H. Clarke
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;逢いたくていま - MISIA
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Twinkle Twinkle Little Star (Declan&amp;#39;s Prayer) - Declan Galbraith
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Last Christmas - Free the Spirit
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I Don&amp;#39;t Want to Talk About It - Ive Mendes
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;A Moment of Madness - Katie Melua
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Blessed - Daniel Caesar
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;La Fuerza De Mi Corazon - Luis Fonsi
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I Don&amp;#39;t Want To Let You Go - Jennifer
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;A Time For Us (Remix) - David Davidson
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;As I Am - Joan Jett &amp;amp; the Blackhearts
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Bad Dream - Chlöe Howl
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Jailbreak - AWOLNATION
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;The Upside of Down - Chris August
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Imagine Me Without You - Luis Fonsi
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I Bet She Knows - Tanya Tucker
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Whiskey and Morphine - Alexander Jean
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Wish You Were Here - Delta Goodrem
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;At First Sight - Jay Brannan
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Mercy - Duffy
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I Try - Macy Gray
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Best Is Yet to Come - Luvbug
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Jardin d&amp;#39;hiver - Stacey Kent
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Teenagers - Macy Gray
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Typical Me - Ella Eyre
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;And Then You - Greg Laswell
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;烈女 - 杨千嬅
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;倾城 - 许美静
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;那么骄傲 (Cover 金海心) - 周玥 / 徐薇
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Defeated - Anastacia
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Little Panda Bear - Kimya Dawson
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Wish You Well - Katie Herzig
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Pardon mon amour - Gérard Darmon
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Cosi tanto - Federica Camba
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;最爱 - 周慧敏
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;夜机 - 陈慧娴
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;雨中的恋人们 - 黄凯芹
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Told You So - Christopher
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;The Story - Brandi Carlile
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Something Just Like This (feat. Romy Wave) - Anthony Keyrouz / Romy Wave
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Shivers - Rachel Platten
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;13 - LANY
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Forgiveness - MADE IN HEIGHTS
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I Like Me Better - Lauv
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;逝年 - 夏小虎
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;宏愿 - 周柏豪
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;All In My Mind (Live) - Isaac Gracie
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;GQ - Lola Coca
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;等你下课 (with 杨瑞代) - 周杰伦 / 杨瑞代
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I Like Me Better (Miro Remix) - Miro / Lauv
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;There&amp;#39;s Nothing Holdin&amp;#39; Me Back - Shawn Mendes
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;男孩 - 梁博 / 陶孟童 / 肖和东 / 高誉容
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;情人知己 - 叶蒨文
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Bila - Candy
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Perfect Symphony - Ed Sheeran / Andrea Bocelli
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Stand Up - The Cab
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;What a Pity - Right Away, Great Captain!
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Cups (Movie Version) - Anna Kendrick
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SARVAR - ABV
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;What I Believe - Skillet
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Dying In the Sun - The Cranberries
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Not Alone - Linkin Park
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;房间 - 刘瑞琦
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;梦伴 - 李悦君 Ericaceae
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Hello Summer (Radio Edit) - Rameez
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;词不达意 - 林忆莲
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I Like It Heavy - Halestorm
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;This Thing Is Not Going to Break You - Christa Wells
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;How to Love (feat. Sofia Reyes) - Cash Cash / Sofia Reyes
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Time (Official) - MKJ
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;儿时 - 刘昊霖
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Forevermore - Katie Herzig
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Forget To Begin - The Hampdens
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Anchor Made of Gold - Jenny Wilson
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Dive Wet - Discodeine
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Heathens (DISTO Remix) - DISTO / twenty one pilots
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Hit and Run - Lolo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;This I Promise You - *NSYNC
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Undressed - Kim Cesarion
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;One Love - Blue
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;推开世界的门 - 杨乃文
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Love Is Greater - Amanda Noelle
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Wannabe - Spice Girls
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Love Runs Out - OneRepublic
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Despacito - Luis Fonsi / Daddy Yankee
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Chain Hang Low - Jibbs
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Ce Frumoasa E Iubirea - Giulia
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;A Sight For Sore Eyes - Tom Waits
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;The Call - Gotthard
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Black Sheep - Gin Wigmore
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Kissin U - Miranda Cosgrove
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;TEENAGE LIFE - Daz Sampson
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Dealbreaker - Rachael Yamagata
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Little Lou, Ugly Jack, Prophet John - Belle &amp;amp; Sebastian
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Shutterbug - Glenna
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Me and You - Lucky Twice
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Fuerteventura - Russian Red
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Sensitive Kind - Eric Clapton / Don White
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;春风吹 (Cover 方大同) - 阿冷
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Friends Will Be Friends (2011 Remaster) - Queen
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Nobody Loves You (When You&amp;#39;re Down And Out) - John Lennon
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Trespassing - Adam Lambert
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Anabel2 - Brazzaville
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Fresh Eyes - Andy Grammer
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Fade To Black - Metallica
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Pretty Woman - Roy Orbison
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Skin Tight - Niykee Heaton
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Let It Die - Tayler Buono
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;We Are Powerful - Lenka
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Body Moves - DNCE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Cake by the Ocean - DNCE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Changes - Jack Savoretti
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Bird of Sorrow - Glen Hansard
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;风的季节 - Soler
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Out Of Breath - Jared Lee
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Counting Sheep - SAFIA
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;凉城 - 任然
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;其实，我就在你方圆几里 (Cover 薛之谦) - 陈壹千
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Wonderful U (Demo Version) - AGA
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Make Them Wheels Roll - SAFIA
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Wasted - Brandi Carlile
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Prettiest Friend (Demo) - Jason Mraz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Moon - Brika
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Can&amp;#39;t Take My Eyes Off You - Andy Williams
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Sitting Here In Silence (On My Own) - Oasis
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Uh - Fujiya &amp;amp; Miyagi
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;How I Want Ya (feat. Dev) - Thames / DEV
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Harvest Moon (Cornflowers II) - Sopor Aeternus &amp;amp; the Ensemble of Shadows
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;The A Team - Ed Sheeran
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I&amp;#39;ll Take Care Of You - Beth Hart and Joe Bonamassa
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;相依为命 - 陈小春
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Cake By The Ocean - DNCE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Maps - Alyson Stoner / MAX / Kurt Hugo Schneider
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Beauty - Wolf Colony
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I Only Want To Be With You - Shelby Lynne
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;You Won&amp;#39;t Let Me - Rachael Yamagata
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;爱的故事。上集 - 孙耀威
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Tainted Love - Karen Souza
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Ain&amp;#39;t No Sunshine - Buddy Guy / Tracy Chapman
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;成都 - 赵雷
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;别找我麻烦 - 蔡健雅
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Nothing to Fear - Dexter Britain
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Let It Rain - Gotthard
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Creep - Scott Bradlee’s Postmodern Jukebox / Haley Reinhart
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;When You Love Someone - Kenny Rogers
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Golden Leaves - Passenger
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Hoopty Hoop - Tyler Ward
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Never on a Sunday - The Chordettes
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Hit The Ground Runnin&amp;#39; - Haley Reinhart
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Stupid Cupid - Connie Francis
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;You - Axle Whitehead
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Towards the Light - Jacoo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;레몬트리 (Lemon Tree) - 朴慧京
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Reality - 朴慧京
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Another You - Madeline Juno
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Black Mascara - Eliane
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;The Power of Love - Céline Dion
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Forever Starts Tonight - Tyler Ward
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Angel of Mine - The Icarus Account
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Flashlight (From &amp;#34;Pitch Perfect 2&amp;#34; Soundtrack) - Jessie J
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Your Call - Secondhand Serenade
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I Will Come To You - Hanson
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Love Of My Life (Live At The Bowl) - Queen
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;やわらかな光 - やまだ豊
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Lose You Tonight - Kristina Train
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Lover - Truslow
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Baby I Love You - Tiffany Alvord
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Sky Blue and Black - Jackson Browne
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Making Love out of Nothing at All (Live) - Air Supply
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Under a Violet Moon - Blackmore&amp;#39;s Night
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;The Summer We Crossed Europe In The Rain - Stacey Kent
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Danger in Loving You - Halie Loren
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I Told You So (Featuring Randy Travis) - Carrie Underwood
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Colourful - Virginia To Vegas
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Dream It Possible - Delacey
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Stay - Miley Cyrus
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;爱我还是他 - 陶喆
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Bizarre Love Triangle - Rookie of the Year
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Feel Good Sunshine - Tim Myers
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;How Do I Live - LeAnn Rimes
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;致自己 - 齐一
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;最初的梦想 - 金玟岐
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Mandy (Remastered) - Barry Manilow
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;我愿意 - 陈晓东
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;King - Lauren Aquilina
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;On My Knees - Jaci Velasquez
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Time To Say Goodbye - Lauren Aquilina
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;晚安 - 丢火车
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Raindrops - Eliane
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I&amp;#39;ll Be Your Strength - Simone
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Careless Whisper - George Michael
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Big Bad World - The Real Group
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;You - Future of Forestry
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Cigarettes and Chocolate Milk (Reprise) - Rufus Wainwright
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Going To A Town - Rufus Wainwright
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;You Can Trust In Me - Hotel Saint George
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Desperado - Juwita Suwito
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Give Us a Little Love - Fallulah
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;West Coast (Radio Mix) - Lana Del Rey
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;It&amp;#39;s Raining Again (Smile) - Skylar Grey
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Imagine Me Without You - Jaci Velasquez
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Weekend - Dirk Reichardt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Discover - Minnutes
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Speak Softly Love - Keren Ann
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Speak Softly Love - Andy Williams
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Sailing - Rod Stewart
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Comment te dire adieu (Remasterisé en 2016) - Françoise Hardy
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;只要和你在一起 - 连诗雅
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;La Vida Seguirá - Álvaro Soler
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;飞花 - 李克勤
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Something I Need - Ben Haenow
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Marvin Gaye (feat. Meghan Trainor) - Charlie Puth / Meghan Trainor
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Loving You - 程璧
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;绅士 - 薛之谦
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;独自旅行 - 靳松
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;小幸运 (Cover 田馥甄) - 金玟岐
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;How Long Will I Love You - Ellie Goulding
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;我只在乎你 - 郑钧
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;A Thousand Miles - Vanessa Carlton
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Back 2 Him She Goes - Martin Kember
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Titanium - David Guetta / Sia
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Can&amp;#39;t Help Falling In Love (Live At Lake Las Vegas/2005) - Andrea Bocelli
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;演员 - 薛之谦
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Tonight I Celebrate My Love - Roberta Flack / Peabo Bryson
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Víveme - Laura Pausini
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Now And Forever - Richard Marx
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;一次就好 - 杨宗纬
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;客从何处来 - 燕池
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Life Of The Party - Shawn Mendes
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Uptown Funk - Mark Ronson / Bruno Mars
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Best Day Of My Life - American Authors
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;So:Lo - Kate Havnevik
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;花瓣雨 - 童安格
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;When you say nothing at all - Ronan Keating
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;If This City Never Sleeps - Rosie Thomas
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Reality - Richard Sanderson
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;She - Elvis Costello
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;残酷游戏 - 卫兰
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Say Something - A Great Big World
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;星星 - 牛奶咖啡
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;七友 - 梁汉文
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Lucky (Re-Mastered Version) - Colbie Caillat / Jason Mraz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;We Can&amp;#39;t Stop - Boyce Avenue / Bea Miller
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Counting Stars - OneRepublic
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;老街 - 李荣浩
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Heartbeats - Amy Diamond
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Tuesday - Five for Fighting
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I Got You - Jack Johnson
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;约定 - 周蕙
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Oh My Love - John Lennon
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Every Breath You Take - The Police
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Desperado (2013 Remaster) - Eagles
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;The Heart of Life - John Mayer
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Where Do I Begin - Andy Williams
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Open up Your Door - Richard Hawley
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Lady - Kenny Rogers
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Always on My Mind - Willie Nelson / Carrie Underwood
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Nothing Really Matters - Mr. Probz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Remember When - Alan Jackson
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Crying In The Rain - Don Williams
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Sorry Seems To Be The Hardest Word - Ray Charles / Elton John
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Stupid - Tone Damli Aaberge
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Good Bye - The Melody
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;1973 - James Blunt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;A Thousand Kisses Deep - Leonard Cohen
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;The Best Of Times - Dream Theater
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Time - Pink Floyd
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;What A Wonderful World (Single Version) - Louis Armstrong
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Didn&amp;#39;t Stand A Chance - Travis Garland
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Sealed With A Kiss - Bobby Vinton
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Nothing&amp;#39;s Gonna Change My Love for You - George Benson
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Top Of The World - Carpenters
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I Surrender - Céline Dion
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Wonderful Tonight - Eric Clapton
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;走在冷风中 - 刘思涵
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(Everything I Do) I Do It For You (Album Version) - Bryan Adams
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;曾经的你 - 许巍
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;钟无艳 - 谢安琪
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Bubbly - Colbie Caillat
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Say Hello - Rosie Thomas / Sufjan Stevens
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Down - Jason Walker / Molly Reed
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Those Were The Days - Bobby Winton
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Ordinary Day - Melanie Penn
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;If You Want Me - Glen Hansard / Markéta Irglová
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Breathless - Shayne Ward
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Not a Bad Thing (Single Version) - Justin Timberlake
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Someone Like You - Adele
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Yellow Bird - The Brothers Four
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Forever Young - Bob Dylan
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Never Say Goodbye - Bob Dylan
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;And I Love You So - Don McLean
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Take Me Home,Country Roads - John Denver
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Yesterday (Remastered) - The Beatles
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Hey Jude - The Beatles
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Always On My Mind - Elvis Presley
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Sugar Man - Rodriguez
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Because You Loved Me - Céline Dion
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;If You Come To Me - Atomic Kitten
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Without You - Mariah Carey
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I Stay In Love - Mariah Carey
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;When You Believe - Whitney Houston / Mariah Carey
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Someone Make Me Cry - Frida Amundsen
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;When You Say Nothing At All - Alison Krauss
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Better Man - Robbie Williams
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Fly - Avril Lavigne
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I Will Be - Avril Lavigne
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Summertrain - Greyson Chance
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Try - Colbie Caillat
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Be Be Your Love - Rachael Yamagata
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I Hate Myself for Loving You - Joan Jett &amp;amp; the Blackhearts
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Eyes On Me - 王菲
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Don&amp;#39;t Leave Me (Ne me quitte pas) - Regina Spektor
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I Love You - Stewart Mac
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;New Soul - Vox Angeli
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Love Me Like You Do - Ellie Goulding
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Innocence - Avril Lavigne
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;梦醒了 (Live) - 王菲
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;My My Love - Joshua Radin
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Let It Snow - 安田レイ
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;突然想爱你 - 许茹芸
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I Don&amp;#39;t Want To Say Goodbye - Teddy Thompson
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Way Back Into Love (Demo) - Hugh Grant / Drew Barrymore
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;离开的时候 - 黄丽玲
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;袖手旁观 - 齐秦
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;如果有来生 - 谭维维
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;喜欢你 - 陈洁仪
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Can&amp;#39;t Take My Eyes Off You - John Barrowman
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;If - 丁可
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;You Know I&amp;#39;m No Good - Amy Winehouse
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;需要人陪 - 王力宏
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Yesterday - 朴慧京
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;听海 - 张惠妹
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;忽然之间 - 炎亚纶
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;约定 - 王菲
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Hero - Family of the Year
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;光辉岁月 - Beyond
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;后会无期 - G.E.M.邓紫棋
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;心動 - 陈洁仪
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Forever - Stratovarius
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;相信自己 - 零点乐队
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;南方姑娘 - 赵雷
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;当你老了 - 赵照
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;洋葱 - 杨宗纬
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Forgotten Sorrow (Kor.Ver.) - 梁邦彦
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I&amp;#39;m always close to you - 岡崎律子
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;The end of the world - Skeeter Davis
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Better Than A Hallelujah - Amy Grant
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;A Sky Full of Stars - Coldplay
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Viva La Vida - Coldplay
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Yellow - Coldplay
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Bruises	chairlift - Eric Neveux
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Hotel California (2013 Remaster) - Eagles
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Tonight I Wanna Cry - Keith Urban
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Wrecking Ball - Miley Cyrus
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Closer To Me - Megan &amp;amp; Liz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;贝加尔湖畔 (现场版) - 李维 / 周深
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;寂寞的季节 - 陶喆
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Sing You To Sleep - Matt Cab
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Set Fire to the Rain - Adele
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;原来爱情这么伤 - 梁咏琪
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;漂洋过海来看你 - 李宗盛
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I Hate Falling in Love - Stevie Hoang
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;夜空中最亮的星 - 张恒远
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Stop Crying Your Heart Out - Oasis
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Wonderwall - Oasis
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;因为爱着你 - 王乃恩
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Good Morning, Beautiful - Luke McMaster
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Nothing&amp;#39;s Gonna Change My Love For You - 方大同
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;最想环游世界 - 梁静茹
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;梦一场 (原唱：那英) - 李健
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;All of Me - John Legend
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;What Are We Supposed To Do? - House of Fools
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;记得 - 林俊杰
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;What I Believe - Skillet
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Heathens (DISTO Remix) - DISTO / twenty one pilots
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Take My Hand - Simple Plan
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Always Somewhere (2015 - Remaster) - Scorpions
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Still Loving You - Scorpions
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I Hate Myself for Loving You - Joan Jett &amp;amp; the Blackhearts
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;November Rain - Guns N&amp;#39; Roses
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Sweet Child O&amp;#39; Mine - Guns N&amp;#39; Roses
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Don&amp;#39;t Cry (Original) - Guns N&amp;#39; Roses
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Eifersucht - Rammstein
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Emerald Sword - Rhapsody of Fire
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Angel Of Death - Slayer
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Fade To Black - Metallica
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Everybody Hurts - Alexandra Burke / Bon Jovi / Cheryl Cole / James Blunt / James Morrison / JLS / Joe McElderry / Kylie Minogue / Leona Lewis / Mariah Carey / Michael Bublé / MIKA / Miley Cyrus / Robbie Williams / Rod Stewart / Susan Boyle / Westlife / Take That
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;It&amp;#39;s My Life - Bon Jovi
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;With Or Without You - U2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;One - U2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Last of the Wilds - Nightwish
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I Want My Tears Back - Nightwish
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;她说 - 林俊杰
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Heartbeats - Amy Diamond
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;记得 - 林俊杰
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Life&amp;#39;s A Struggle - 宋岳庭
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;1973 - James Blunt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;When I Was Your Man - Bruno Mars
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Treasure - Bruno Mars
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Summertime Of Our Lives - Cody Simpson
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;突然好想你 - 五月天
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;伤心的人别听慢歌 - 五月天
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;知足 - 五月天
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;温柔 - 五月天
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;All of Me - John Legend
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Runaway Baby - Bruno Mars
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Best of Me - Daniel Powter
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;A.I.N.Y. (爱你) - G.E.M.邓紫棋
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Shut Your Eyes - Snow Patrol
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Called Out In The Dark - Snow Patrol
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Chasing Cars - Snow Patrol
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;玛卡瑞纳 - 海龟先生
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;残酷游戏 - 卫兰
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;客从何处来 - 燕池
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;七友 - 梁汉文
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;如果 - 群星
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;爱得太迟 - 古巨基
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;一丝不挂 - 陈奕迅
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;暖暖 - 梁静茹
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;可惜不是你 - 梁静茹
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;再见二丁目 - 杨千嬅
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;走在冷风中 - 刘思涵
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;醒来 - 王嘉宝
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;喜欢你 - Beyond
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;夜空中最亮的星 - 张恒远
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;因为爱着你 - 王乃恩
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;是否 - G.E.M.邓紫棋
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;钟无艳 - 谢安琪
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;追梦赤子心 - GALA
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;香格里拉 - 黄玠
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;约定 - 王菲
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;执迷不悔 - 邰正宵
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;预感 - 周定纬
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;忽然之间 - 炎亚纶
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;想你想疯了 - 许一鸣
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;喜欢你 - 陈洁仪
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;突然想爱你 - 许茹芸
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;浪漫手机 - 周杰伦
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;今天是你的生日，妈妈 (original version) - 钟立风
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;天才白痴梦 - 许冠杰
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;人来人往 - 陈奕迅
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;爱的钢琴手 - 伍思凯
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;少女的祈祷 - 杨千嬅
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;老街 - 李荣浩
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;山丘 - 李宗盛
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;心動 - 陈洁仪
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;爱 - 莫文蔚
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;漂洋过海来看你 - 李宗盛
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;预谋邂逅 - 阿肆
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;当你老了 - 赵照
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;恰似你的温柔 - 蔡琴
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;未填词 - 邓福如 AFÜ
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;声声慢 - 邓福如 AFÜ
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;如果有如果 - 邓福如 AFÜ
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Nothing On You - 邓福如 AFÜ
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;依然在一起 - 马天宇
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;青衣 - 马天宇
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;记得 - 张惠妹
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;A.I.N.Y. (爱你) - G.E.M.邓紫棋
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;我总是一个人在练习一个人 - 林宥嘉
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Oceanside - Lainey Lou
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;我们都被忘了 - 谢安琪
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;让每个人都心碎 - 张惠妹
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;不一样的地方 - 何洁
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;流川枫与苍井空 - 黑撒
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;偶尔 - G.E.M.邓紫棋
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;哪一站 - 羽·泉
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;惩罚 - 羽·泉
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;我们没有在一起 - 刘若英
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;梦醒了 - 那英 / 王菲
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;最美 - 羽·泉
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;沧海一声笑 - 群星
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;泡沫 - G.E.M.邓紫棋
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;海阔天空 - Beyond
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;如果你也听说 - 张惠妹
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;划地为牢 (这一生只为你) - 羽·泉
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;回忆的沙漏 (国) - G.E.M.邓紫棋
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;讲不出再见 - 谭咏麟
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;凤凰花开的路口 - 林志炫
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;遇见 - 孙燕姿
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;原谅 - 张玉华
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;魔鬼中的天使 - 田馥甄
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;放生 - 范逸臣
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;背叛 - 曹格
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;眼泪 - 范晓萱
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Echoes of the Rainbow - 李治廷
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;雨过之后 (Demo) - 刘心
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;你的样子 - 林志炫
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;领悟 - 辛晓琪
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;梦一场 - 那英
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;我真的受伤了 - 张学友
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;爱笑的眼睛 - 林俊杰
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;爱，很简单 - 陶喆
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;我们都是好孩子 - 王筝
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;原来 - 林俊杰
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Shall We Talk - 陈奕迅
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;苦瓜 - 陈奕迅
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;红玫瑰 - 陈奕迅
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;爱像是昨天 - FREE THE BIRD
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;爱的海洋 - 曲婉婷
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;避风港 - 冯曦妤
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;爱情 - 莫文蔚
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;微凉的记忆 - 周传雄
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;一肩之隔 - 秦岚
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;约定 - 周蕙
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;当爱已成往事 - 张国荣
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;偶阵雨 - 梁静茹
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;离人 - 林志炫
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;从开始到现在 - 张信哲
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;其实都没有 - 杨宗纬
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;你看到的我是蓝色的 - 李霄云
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;再回首 (Live) - 羽·泉
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;情歌 - 梁静茹
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;旋木 - 王菲
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;美丽心情 - 本多 RuRu
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;人生若只如初见 - 王韵壹
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;再见青春 - 汪峰
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;旅行 - 许巍
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;说谎 - 林宥嘉
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;明天，你好 - 牛奶咖啡
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;凤凰花季 - 欧得洋
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;残酷月光 - 林宥嘉
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;老男孩 - 筷子兄弟
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Melody - 陶喆
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;小永远 - 何洁
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;天天想你 - 汪洋
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;约定 - 光良
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;方圆几里 - 薛之谦
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;解脱 - 李玖哲
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;亲爱的路人 - 刘若英
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;洋葱 - 杨宗纬
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;心酸 - 林宥嘉
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;暗香 - 沙宝亮
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;没那么简单 - 黄小琥
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;习惯 - 李霄云
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;岁月轻狂 - 李治廷
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;独家记忆 - 陈小春
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;不让我的眼泪陪我过夜 - 齐秦
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;空白格 (Live) - 杨宗纬
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I’m Yours - Jason Mraz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;The Tower - 史逸欣
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Grenade - Michael Henry
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;The One You Love - Glenn Frey
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;The Climb - Miley Cyrus
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Stay - Miley Cyrus
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Sunshine on My Shoulders - John Denver
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Be Be Your Love - Rachael Yamagata
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Heartbeats - Amy Diamond
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Valder Fields - Tamas Wells
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Hey Jude - The Beatles
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Sweet Hunny Bunny - Ukulele Picnic
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Good Morning, Beautiful - Luke McMaster
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;24/Seven - Big Time Rush
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;One Step At A Time - Jordin Sparks
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Lullabye For A Stormy Night - 史逸欣
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Count On You - Big Time Rush / Jordin Sparks
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Demons - Imagine Dragons
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Viva La Vida - Coldplay
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Let It Be (Remastered) - The Beatles
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Treasure - Bruno Mars
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Nothing&amp;#39;s Gonna Change My Love For You - 方大同
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Who Says - Selena Gomez &amp;amp; The Scene
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Sing You To Sleep - Matt Cab
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Hotel California (2013 Remaster) - Eagles
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Unintended - Muse
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Before You Break My Heart - Stevie Hoang
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I Hate Falling in Love - Stevie Hoang
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Mistletoe - Justin Bieber
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Rhythm Of The Rain - The Cascades
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I Will Come To You - Hanson
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;What a Wonderful World - Willie Nelson
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Negative Things - Selwyn
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I&amp;#39;m Yours - Jason Mraz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;If I Can&amp;#39;t Have You (American Idol Studio Version) - Adam Lambert
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Best of Me - Daniel Powter
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Summertime Of Our Lives - Cody Simpson
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Marry You - Bruno Mars
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Who Says - John Mayer
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;All of Me - John Legend
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Say Something - A Great Big World
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Someone Like You - Adele
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;That&amp;#39;s Why You Go Away - Michael Learns To Rock
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Complicated - Avril Lavigne
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Better With You - Kris Allen
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Morning - 卫兰
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Seasons in the Sun - Westlife
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I&amp;#39;m Yours - Jason Mraz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;First Of May - Bee Gees
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;You Don&amp;#39;t Know - Westlife
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;The Rose - Westlife
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;You Raise Me Up - Westlife
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I love you - 王若琳
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Better In Time (Single Mix) - Leona Lewis
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Bizarre Love Triangle - Frente!
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Calendar Girl - Stars
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;You&amp;#39;re Beautiful - James Blunt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Rabbit - Matt Duke
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Almost Lover - A Fine Frenzy
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Just Give Me a Reason - Jason Chen / Megan Nicole
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Mirrors (acoustic version) - Jason Chen
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Just A Dream - Jason Chen
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Hey There Delilah - Plain White T&amp;#39;s
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Hey, Soul Sister - Train
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;To Be With You - Westlife
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Home - Michael Bublé
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Love To Be Loved By You (The Wedding Song) - Marc Terenzi
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;My Prayer - Devotion
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Beautiful In White (Demo) - Shane Filan
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Bubbly - Colbie Caillat
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Thank You - Dido
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Beautiful Girl - V Factory
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Part of a Fool - Juwita Suwito
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;4th Of July - Joanna
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Fastapi 开发笔记</title><link>https://zhimoe.github.io/post/fastapi-dev-tips/</link><pubDate>Sun, 14 Sep 2025 14:51:25 +0800</pubDate><guid>https://zhimoe.github.io/post/fastapi-dev-tips/</guid><description>&lt;p&gt;最近使用一个 fastapi 后端应用遇到一些性能问题，借助 GPT 和文档学习了一些框架底层知识，记录以便温习。&lt;/p&gt;</description></item><item><title>Python 结构化日志设置[翻译]</title><link>https://zhimoe.github.io/post/python-contextual-logging/</link><pubDate>Sun, 06 Jul 2025 16:27:38 +0800</pubDate><guid>https://zhimoe.github.io/post/python-contextual-logging/</guid><description>&lt;p&gt;在日常开发中，python 项目常用的 log 方法就是 &lt;code&gt;logger.info(f&amp;quot;xxx failed, {user=}, {filename=}&amp;quot;)&lt;/code&gt;, 这样的日志包含一定的信息，在大多数情况下是够用的，但是在大型、可观测性要求较高的情况，还需要更多的上下文信息才能定位问题，例如，这个日志属于哪个请求，如果日志里面充满了相同用户的不同文件名称的日志，还是无法定位上一步某个关键信息（缺乏关联）和这个日志属于同一个请求。这时候结构化日志就很有必要。&lt;/p&gt;</description></item><item><title>Golang 错误处理和日志</title><link>https://zhimoe.github.io/post/golang-error-handling-and-logging-notes/</link><pubDate>Sun, 11 May 2025 08:30:13 +0800</pubDate><guid>https://zhimoe.github.io/post/golang-error-handling-and-logging-notes/</guid><description>&lt;p&gt;Go 语言的错误处理和日志规范。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大部分情况下包装 error 使用 %w，而不是%v，另外有了%w后 pkg/errors 这个包（大部分情况）也需要了。&lt;/li&gt;
&lt;li&gt;错误包装需要避免 failed to 这种前缀，只需要模块名：err 即可。参考 &lt;a href="https://github.com/uber-go/guide/blob/master/style.md#error-wrapping"&gt;uber-golang-style&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;错误包装可以添加额外的变量信息：return fmt.Errorf(&amp;ldquo;get user %q: %w&amp;rdquo;, id, err)&lt;/li&gt;
&lt;li&gt;全局错误变量使用 Err 开头，例如 ErrBrokenLink = errors.New(&amp;ldquo;link is broken&amp;rdquo;)&lt;/li&gt;
&lt;li&gt;如果是自定义错误 struct 类型 则使用 Error 结尾 type NotFoundError struct {}&lt;/li&gt;
&lt;li&gt;logging 优先使用 slog 即可。&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Golang 编程初体验</title><link>https://zhimoe.github.io/post/golang-first-impressions/</link><pubDate>Mon, 05 May 2025 21:50:27 +0800</pubDate><guid>https://zhimoe.github.io/post/golang-first-impressions/</guid><description>&lt;p&gt;总结一下最近使用 golang 写了几个简单的工具和项目的初体验。总体感觉 golang 在语法设计上面非常糟糕，不喜欢，但是在运行时和标准库上面，确实解决了之前编程语言的很多痛点，所以目前 golang 在业务项目蚕食 Java 的地盘。但是 JVM + Kotlin 还是目前最好的业务技术栈，如果不需要计算性能的话，有了 typing 提示后简单的 web 项目用 Python 也是很好的选择，千万不要信了 golang 那些不需要 ORM/使用标准库就够了/显式处理error才是最佳实践的鬼话。&lt;/p&gt;</description></item><item><title>Modern Javascript Features</title><link>https://zhimoe.github.io/post/js-nodejs-dev-notes/</link><pubDate>Sun, 12 Jan 2025 15:03:05 +0800</pubDate><guid>https://zhimoe.github.io/post/js-nodejs-dev-notes/</guid><description>&lt;p&gt;一些很甜的 JS 语法糖。&lt;/p&gt;</description></item><item><title>油猴脚本开发笔记</title><link>https://zhimoe.github.io/post/tampermonkey-dev-notes/</link><pubDate>Sat, 07 Sep 2024 13:11:44 +0800</pubDate><guid>https://zhimoe.github.io/post/tampermonkey-dev-notes/</guid><description>&lt;p&gt;以前都是用别人的油猴脚本，这次自己开发了一个自动化脚本，记录一些笔记。&lt;/p&gt;</description></item><item><title>在 CI 环境配置 puppeteer 以及 bun 的使用</title><link>https://zhimoe.github.io/post/puppeteer-config-notes/</link><pubDate>Sun, 11 Aug 2024 15:21:54 +0800</pubDate><guid>https://zhimoe.github.io/post/puppeteer-config-notes/</guid><description>&lt;p&gt;在流水线 CI-CD 环境中打包部署 puppeteer 服务的一些注意事项。&lt;/p&gt;</description></item><item><title>Pydantic v2 Sqlalchemy v2 项目开发总结</title><link>https://zhimoe.github.io/post/pydantic-sqlalchemy-notes/</link><pubDate>Sat, 10 Aug 2024 22:32:37 +0800</pubDate><guid>https://zhimoe.github.io/post/pydantic-sqlalchemy-notes/</guid><description>&lt;p&gt;最近使用 fastapi pydantic(v2) sqlalchemy(v2) 写了一个两千行左右的 API 项目，这是第一次面向 class 写 python 项目，和以前使用 requests、pandas 写数据处理脚本有很大区别，特别是 sqlalchemy 第一次使用，看文档内容非常多，在和 pydantic 的 schema 相互转换遇到很多问题，所以做一个笔记。&lt;/p&gt;</description></item><item><title>Java Vector Api 和 Elasticsearch 性能提升</title><link>https://zhimoe.github.io/post/java-vector-api-with-es/</link><pubDate>Sat, 18 Nov 2023 09:45:54 +0800</pubDate><guid>https://zhimoe.github.io/post/java-vector-api-with-es/</guid><description>&lt;p&gt;OpenJDK project panama 中一个重点功能就是 vector api，可以显著提升矩阵计算密集型程序的性能，例如在图形计算、机器学习、大规模计算（Lucene）等。&lt;/p&gt;</description></item><item><title>Python @contextmanager 的使用</title><link>https://zhimoe.github.io/post/python-contextlib/</link><pubDate>Sun, 05 Nov 2023 21:45:24 +0800</pubDate><guid>https://zhimoe.github.io/post/python-contextlib/</guid><description>&lt;p&gt;日常开发中使用这个注解的情况比较少，今天发现其实有一个临时环境变量设置的使用方式。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a90d91"&gt;with&lt;/span&gt; &lt;span style="color:#000"&gt;set_environ&lt;/span&gt;(&lt;span style="color:#000"&gt;env_name&lt;/span&gt;, &lt;span style="color:#000"&gt;value&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#177500"&gt;# 使用后自动清除 env_name 变量&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#000"&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#177500"&gt;# env_name 已失效&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>支持中文的等宽编程字体：FangSongCode</title><link>https://zhimoe.github.io/post/programming-font-for-chinese/</link><pubDate>Sat, 28 Oct 2023 08:12:20 +0800</pubDate><guid>https://zhimoe.github.io/post/programming-font-for-chinese/</guid><description>&lt;p&gt;个人对于字体有严重的强迫症，在过去十年里（以后应该也会）一直在换各种编程字体，也会使用 fontforge 对字体做一些小修改，甚至在 reddit 上面看的咨询编程字体的图片可以一眼认出。&lt;br&gt;
对于&lt;a href="https://www.programmingfonts.org/"&gt;编程等宽字体&lt;/a&gt;，曾经用过比较久的有 Fira Code，Aurulent，TheSansMono，Go Mono，Source Code Pro，Plex Mono，Drafting Mono。也用过一些收费字体例如 MonoLisa，PragmataPro，Operator Mono，Gintronic 等。目前最喜欢的还是 Fira Code（MonoLisa 第二），只是 Fira Code 个性突出，在中英文混排中看着非常显眼特别是字符 r 过于 fancy。&lt;/p&gt;</description></item><item><title>Python 异步编程</title><link>https://zhimoe.github.io/post/python-async-programming/</link><pubDate>Sun, 24 Sep 2023 08:47:44 +0800</pubDate><guid>https://zhimoe.github.io/post/python-async-programming/</guid><description>&lt;p&gt;异步编程很难，但却是最近十年所有编程语言在发力的方向。&lt;br&gt;
在面向 CPU 计算的场景下，多线程基本都能吃满 CPU 资源。但是在 IO 场景下，多线程并不能解决问题，大部分时间线程都在等待 IO 调用的返回。&lt;br&gt;
实际上 python 的&lt;a href="https://docs.python.org/3/tutorial/index.html"&gt;官方教程&lt;/a&gt;里面并没有 async 编程的内容，而是在&lt;a href="https://docs.python.org/3/library/ipc.html"&gt;std lib doc 中网络编程章节&lt;/a&gt;介绍了 asyncio 这个 lib，实际上这也是异步编程的最佳使用场景。&lt;/p&gt;
&lt;p&gt;此外经常会看到 &amp;ldquo;Use async sparingly&amp;rdquo;，因为异步编程存在染色问题，一旦使用 async，会要求你全链路全部为 async，否则在 block 时 cpu 并无法让出线程资源。&lt;br&gt;
大多数情况，如果出于性能原因不需要异步，线程通常是更简单的替代方案。&lt;/p&gt;</description></item><item><title>Java 并发 5-虚拟线程（VirtualThread）</title><link>https://zhimoe.github.io/post/java-concurrency-5-virtualthread/</link><pubDate>Wed, 13 Sep 2023 09:57:52 +0800</pubDate><guid>https://zhimoe.github.io/post/java-concurrency-5-virtualthread/</guid><description>&lt;p&gt;回调和反应式编程都可以实现系统吞吐量有效提升，但是这两种编程模式存在阅读、编写、调试困难的问题，所以实际项目中还是以线程池为主。但是 java 的线程是平台线程，可以理解为并行线程数最多等于 CPU 核数 (macOS 查看核数&lt;code&gt;sysctl hw.physicalcpu hw.logicalcpu&lt;/code&gt;)，并且存在线程内存占用大，上下文切换耗时高问题，所以在高并发请求中表现不如前面两种模式（spring reactive 和 vertx 模式并没有流行起来）。&lt;br&gt;
&lt;a href="https://openjdk.org/jeps/444"&gt;JEP 444: Virtual Threads&lt;/a&gt; 主要目标在优化 IO 密集型任务时创建平台线程会消耗过多内存以及线程上下文切换耗时问题。&lt;/p&gt;
&lt;p&gt;虚拟线程的优势：1. 和线程 API 兼容（大部分兼容）2. 降低应用内存使用，提升系统可用性，减少内存不足异常 OutOfMemoryError: unable to create new native thread 3. 提升代码可读性（相比 reactive 编程）。&lt;/p&gt;
&lt;p&gt;本文是 VirtualThread 快速笔记，包含 API 使用、限制和在 Spring Boot 的实际使用以及与 Kotlin 协程的对比。&lt;/p&gt;</description></item><item><title>Git 内部原理-对象、分支以及底层命令[翻译]</title><link>https://zhimoe.github.io/post/git-internal/</link><pubDate>Sun, 06 Aug 2023 16:06:23 +0800</pubDate><guid>https://zhimoe.github.io/post/git-internal/</guid><description>&lt;p&gt;我们中的许多人每天都在使用 git，但是有多少人知道它的内部是怎么运作的呢？&lt;/p&gt;
&lt;p&gt;例如我们使用 git commit 时发生了什么？提交（commit）与提交之间保存的是什么？两次提交之间难道只是文件的差异（diff）吗？如果是，这个差异是如何编码的？还是说每次提交都会保存一个当前仓库的完整快照（snapshot）呢？我们使用 git init 时到底发生了什么？&lt;/p&gt;
&lt;p&gt;发现一篇非常精彩的 Git 内部原理文章&lt;a href="https://medium.com/swimm/a-visualized-intro-to-git-internals-objects-and-branches-68df85864037"&gt;Git 内部原理图解——对象、分支以及如何从零开始建仓库&lt;/a&gt;，&lt;a href="https://www.freecodecamp.org/chinese/news/git-internals-objects-branches-create-repo/"&gt;中文翻译&lt;/a&gt;。文章作者甚至制作了&lt;a href="https://www.youtube.com/playlist?list=PL9lx0DXCC4BNUby5H58y6s2TQVLadV8v7"&gt;配套讲解视频&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Rust Error Handling Notes</title><link>https://zhimoe.github.io/post/rust-error-handling-notes/</link><pubDate>Sat, 22 Jul 2023 21:12:50 +0800</pubDate><guid>https://zhimoe.github.io/post/rust-error-handling-notes/</guid><description>&lt;p&gt;初学 rust 的时候，上手写代码总是遇到很多不一样的 rust 的&lt;code&gt;Result&lt;/code&gt;类型，不同 crate 中的函数返回的&lt;code&gt;Result&amp;lt;T, E&amp;gt;&lt;/code&gt;的&lt;code&gt;E&lt;/code&gt;都不一样，刚开始都是&lt;code&gt;unwrap&lt;/code&gt;或者&lt;code&gt;expect&lt;/code&gt;来处理。如果使用&lt;code&gt;try!&lt;/code&gt;或者&lt;code&gt;?&lt;/code&gt;的话总是编译不通过，还是对 Error 转换和处理不熟练。&lt;/p&gt;</description></item><item><title>使用 OpenPyXL 读写 excel 大文件</title><link>https://zhimoe.github.io/post/python-read-large-excel-file/</link><pubDate>Sun, 07 May 2023 19:31:45 +0800</pubDate><guid>https://zhimoe.github.io/post/python-read-large-excel-file/</guid><description>&lt;p&gt;使用 python OpenPyXL 读写 excel 大文件时，有专门的 read_only write-only 模式来提升读写效率。&lt;/p&gt;</description></item><item><title>Kotlin Coroutine</title><link>https://zhimoe.github.io/post/kotlin-coroutine/</link><pubDate>Sun, 30 Apr 2023 11:02:29 +0800</pubDate><guid>https://zhimoe.github.io/post/kotlin-coroutine/</guid><description>&lt;pre&gt;&lt;code&gt;A coroutine is an instance of suspendable computation. 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;协程是可被挂起的计算的实例。换句话说协程是一个对象，这个对象保存着一段可以切换线程的任务 + 当前执行的状态两部分信息。&lt;br&gt;
日常涉及协程的编码，主要是描述协程的任务和管理多个协程的生命周期、异常处理等。&lt;/p&gt;
&lt;p&gt;Kotlin 使用堆栈帧管理要运行哪个函数以及所有局部变量。挂起协程时，系统会复制并保存当前的堆栈帧以供稍后使用。恢复时，会将堆栈帧从其保存位置复制回来，然后函数再次开始运行。即使代码可能看起来像普通的顺序阻塞请求，协程也能确保网络请求避免阻塞主线程。&lt;/p&gt;</description></item><item><title>SSH 访问 Windows 的 WSL2 Ubuntu</title><link>https://zhimoe.github.io/post/access-into-wsl2-ubuntu-from-macos/</link><pubDate>Sun, 30 Oct 2022 14:14:59 +0800</pubDate><guid>https://zhimoe.github.io/post/access-into-wsl2-ubuntu-from-macos/</guid><description>&lt;p&gt;配置 Windows 和 WSL2，使得能通过其他电脑远程 SSH 到 WSL2 Ubuntu。&lt;/p&gt;
&lt;h3 id="背景"&gt;背景&lt;/h3&gt;
&lt;p&gt;之前的电脑配置是 LinuxMint 台式机 + M1 macbook 笔记本。使用 Linux 主要原因是命令行和 Docker. 最近由于二十大，工作 VPN 在 macOS 不让用，只能将台式机安装上 Win10，发现 docker 在 WSL2 运行非常丝滑，这样正好可以当作 macbook 的 Docker 服务器。切换到 Windows 还有一个原因就是，Linux 的桌面真的不行，最近三年各种版本的桌面使用一圈，Budgie，Gnome，Cinnamon，Xfce 这些桌面总是偶尔界面失去响应，KDE 用的不多，卡顿没遇到但是启动总是慢半秒。Win10 除了没有 Bash/Zsh，中文字体垃圾点，其他的都完胜 Linux。&lt;/p&gt;
&lt;p&gt;下面的教程主要参考：&lt;a href="https://jmmv.dev/2022/02/wsl-ssh-access.html"&gt;Configuring SSH access into WSL 1 and WSL 2&lt;/a&gt;&lt;/p&gt;</description></item><item><title>云原生 Java 开发框架 Quarkus 学习笔记</title><link>https://zhimoe.github.io/post/java-quarkus-notes/</link><pubDate>Sat, 09 Jul 2022 22:14:10 +0800</pubDate><guid>https://zhimoe.github.io/post/java-quarkus-notes/</guid><description>&lt;h2 id="什么是-microprofile"&gt;什么是 MicroProfile&lt;/h2&gt;
&lt;p&gt;MicroProfile 是一个微服务的平台定义，目标是针对微服务架构优化企业 Java 开发。由于 JavaEE 的标准更新越来越慢，跟不上 Web 技术与 K8S 的发展，于是一组供应商（包括 Tomitribe）决定创建 MicroProfile, 这是一个优化的微服务架构平台，在 2016 年加入 Eclipse 基金会。&lt;br&gt;
&lt;a href="https://microprofile.io/compatible/5-0/"&gt;MicroProfile&lt;/a&gt;是一组规范，包含如 OpenTracing、OpenAPI、RestClient、Config、FaultTolerance、CDI 等一组标准。当前最新标准是 5.0. 各大 Java 厂商有很多实现，最有名的就是红帽的 Quarkus, 其他实现有 Open Liberty 和 Payara Enterprise.&lt;br&gt;
注意 SpringBoot 不是 MicroProfile 规范实现，Boot 是独立于 MicroProfile 和 JavaEE 规范的，但是功能上大同小异，Quarkus 也提供了 Spring 注解的支持。&lt;/p&gt;</description></item><item><title>Git 的 detatched Head 模式和解决问题方法</title><link>https://zhimoe.github.io/post/git-detatched-head/</link><pubDate>Wed, 09 Mar 2022 15:49:09 +0800</pubDate><guid>https://zhimoe.github.io/post/git-detatched-head/</guid><description>&lt;p&gt;有时候 commit 完代码后&lt;code&gt;git push&lt;/code&gt;会遇到下面的错误&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;To push the &lt;span style="color:#a90d91"&gt;history&lt;/span&gt; leading to the current &lt;span style="color:#000"&gt;(&lt;/span&gt;detached HEAD&lt;span style="color:#000"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;错误提示说当前 HEAD 没有指向任何分支，但是你记得明明有指向一个分支的&lt;/p&gt;</description></item><item><title>Scala3 缩进语法总结表</title><link>https://zhimoe.github.io/post/scala3-indent-syntax/</link><pubDate>Wed, 02 Feb 2022 10:19:05 +0800</pubDate><guid>https://zhimoe.github.io/post/scala3-indent-syntax/</guid><description>&lt;p&gt;Scala 3 在语法上面新增了一种 Python 的缩进格式，两种格式都可以使用。但是目前部分情况还是需要使用括号。&lt;br&gt;
个人对新语法是支持的。缩进可以极大地提供代码的可读性和整洁，最大的体会就是 SparkStreaming 的 rdd 处理代码，新手容易写出十几个}括号嵌套代码。&lt;br&gt;
当然缺点是缩进不利于代码复制和格式化。&lt;/p&gt;
&lt;p&gt;下面是书本上关于 Scala3 的语法对比。注意，两个语法格式都是支持的。for 和 if 去掉小括号真的是太棒了。&lt;/p&gt;</description></item><item><title>Python Tips for Impatient Dev</title><link>https://zhimoe.github.io/post/python-tips-for-impatient-dev/</link><pubDate>Mon, 31 Jan 2022 21:45:45 +0800</pubDate><guid>https://zhimoe.github.io/post/python-tips-for-impatient-dev/</guid><description>&lt;h2 id="python-tricks"&gt;Python tricks&lt;/h2&gt;
&lt;h3 id="f-string-的妙用"&gt;f-string 的妙用&lt;/h3&gt;
&lt;p&gt;py3.6 开始，推荐使用 f-string，不要使用&lt;code&gt; %s&lt;/code&gt;或者 &lt;code&gt;&amp;quot;&amp;quot;.format()&lt;/code&gt;.如果接收用户输入，使用 Template 做安全校验。&lt;br&gt;
在 python f-string 中可以通过变量或者表达式后面加=实现打印变量名或者表达式：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a90d91"&gt;print&lt;/span&gt;(&lt;span style="color:#c41a16"&gt;f&lt;/span&gt;&lt;span style="color:#c41a16"&gt;&amp;#39;&lt;/span&gt;&lt;span style="color:#c41a16"&gt;{&lt;/span&gt;&lt;span style="color:#000"&gt;v&lt;/span&gt;&lt;span style="color:#c41a16"&gt;=}&lt;/span&gt;&lt;span style="color:#c41a16"&gt;&amp;#39;&lt;/span&gt;) &lt;span style="color:#177500"&gt;# 等价 print(f&amp;#39;v={v}&amp;#39;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a90d91"&gt;print&lt;/span&gt;(&lt;span style="color:#c41a16"&gt;f&lt;/span&gt;&lt;span style="color:#c41a16"&gt;&amp;#39;&lt;/span&gt;&lt;span style="color:#c41a16"&gt;{&lt;/span&gt;(&lt;span style="color:#a90d91"&gt;len&lt;/span&gt;(&lt;span style="color:#000"&gt;arr&lt;/span&gt;),&lt;span style="color:#000"&gt;v&lt;/span&gt;)&lt;span style="color:#c41a16"&gt;=}&lt;/span&gt;&lt;span style="color:#c41a16"&gt;&amp;#39;&lt;/span&gt;) 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;参考：调式时&lt;code&gt;icecream&lt;/code&gt;比&lt;code&gt;print&lt;/code&gt; &lt;code&gt;log&lt;/code&gt;更好。&lt;/p&gt;</description></item><item><title>使用 Happypack 优化 webpack 打包速度</title><link>https://zhimoe.github.io/post/ts-speed-up-angular-build/</link><pubDate>Sun, 12 Sep 2021 18:02:10 +0800</pubDate><guid>https://zhimoe.github.io/post/ts-speed-up-angular-build/</guid><description>&lt;h3 id="问题"&gt;问题&lt;/h3&gt;
&lt;p&gt;一个 ionic app 本地编译需要 8 分钟，提交到流水线编译耗时需要近 40 分钟，从日志看到 webpack 打包步骤耗时最严重。&lt;/p&gt;
&lt;h3 id="排查与解决"&gt;排查与解决&lt;/h3&gt;
&lt;p&gt;初步判断是流水线使用的容器 CPU 性能较弱或者存储 mount 性能导致的。找流水线同事支持配置了一个纯内存编译流水线，发现还是很慢。接下来使用 webpack 的插件&lt;a href="https://www.npmjs.com/package/speed-measure-webpack-plugin"&gt;speed-measure-webpack-plugin&lt;/a&gt;监控性能。&lt;/p&gt;</description></item><item><title>在 Githook 中调用 Nodejs 脚本</title><link>https://zhimoe.github.io/post/nodejs-as-githook/</link><pubDate>Sun, 22 Aug 2021 21:55:06 +0800</pubDate><guid>https://zhimoe.github.io/post/nodejs-as-githook/</guid><description>&lt;p&gt;如何在 githook 中调用 nodejs 脚本。主要踩坑在于不知道如何在 bash 中获取 node 脚本返回值，搜了好大一圈。&lt;/p&gt;
&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;p&gt;微服务模式开发中，每个小组维护自己的应用，通过一个 nginx 入口反向代理所有的子应用，向用户开放一个站点.nginx 应用中需要维护各个子应用的代理，即 ng.conf 中的 location.&lt;br&gt;
此外，一个应用需要配置 DEV,ST,UAT,PRD 四个环境的 location.目前的做法是 www/ngconf/目录下面分为 dev、st、uat、prd 四个文件夹，在文件夹内部每个小组各自维护一个 conf 文件。&lt;br&gt;
每增加一个应用，需要在四个文件夹中自己小组的配置文件添加配置。随着应用越来越多，以及人员流动，会发生不同文件配置相同的 location entry.&lt;br&gt;
例如 A 应用上线一个功能需要依赖 B 应用，但是新人不知道 B 已经配置过了，所以又重复添加了一个，导致启动报错。&lt;/p&gt;</description></item><item><title>Typescript Comprehensive Cheatsheet</title><link>https://zhimoe.github.io/post/ts-comprehensive-notes/</link><pubDate>Sat, 14 Aug 2021 22:06:15 +0800</pubDate><guid>https://zhimoe.github.io/post/ts-comprehensive-notes/</guid><description>&lt;p&gt;一份详尽的 ts 语法笔记。这周在看组里前端同事的代码，感觉完全还是在写 JS，以我有限的 JS/TS 知识，也知道可以写得更加规范一点。但是一上手开始改，还真是手生。&lt;br&gt;
又重新过了一遍文档，做了一点笔记。&lt;/p&gt;</description></item><item><title>开源与心理健康[翻译]</title><link>https://zhimoe.github.io/post/open-source-mental-health/</link><pubDate>Thu, 08 Jul 2021 21:29:57 +0800</pubDate><guid>https://zhimoe.github.io/post/open-source-mental-health/</guid><description>&lt;p&gt;我一位亲爱的朋友，也是高产的 Redox OS 贡献者 jD91mZM2 在 2021 年 3 月去世了，年仅 18 岁。他参与了 2018、2019 和 2020 年的 Redox OS 夏季代码活动。他在开发 Redox OS 的各个方面都做出了贡献，从内核，到 relibc，到移植程序。他的工作详细介绍可以在&lt;a href="https://www.redox-os.org/news/"&gt;Redox OS 新闻&lt;/a&gt;中署名为 jD91mZM2 的帖子看到。&lt;br&gt;
这个帖子可能是黑暗的、深沉的、沉重的、原始的、未经编辑的。如果你和我们中的许多人一样有自己的问题，请随时与我联系：https://twitter.com/jeremy_soller.在这种情况下，我不建议阅读这篇文章的其他内容。我的结论是，开源要成为可持续发展，还有大量的工作要做，而其中很大一部分是对社区及其成员的健康的关怀。&lt;/p&gt;</description></item><item><title>买房装修总结</title><link>https://zhimoe.github.io/post/hangzhou-house-tip/</link><pubDate>Sun, 09 May 2021 09:05:32 +0800</pubDate><guid>https://zhimoe.github.io/post/hangzhou-house-tip/</guid><description>&lt;p&gt;简单记录一下自己买房和装修的一点经验。&lt;/p&gt;
&lt;h2 id="买房"&gt;买房&lt;/h2&gt;
&lt;p&gt;自己买房比较离奇，杭州开始实行摇号的半年后，端午节在老家刷微信，看到有个红盘有 6000 多人报名，感觉买房都要开始碰运气了想到了车牌的悲剧，于是返杭后下车就去那个楼盘看了一下，小区旁边在修地铁，看了几眼沙盘，第二天就借钱登记摇号了，没想到第一次就中了。现在回想起就做梦一样。网上关于如何买房的经验特别多，例如&lt;a href="https://github.com/houshanren/hangzhou_house_knowledge"&gt;杭州房产知识扫盲&lt;/a&gt;,&lt;a href="https://github.com/ayuer/shanghai_house_knowledge"&gt;上海买房&lt;/a&gt;等等。这些我都没用上。这里说说自己的一些经验和踩坑。&lt;/p&gt;</description></item><item><title>Tour of Rusts Standard Library Traits[翻译]</title><link>https://zhimoe.github.io/post/rust-standard-library-traits-tour/</link><pubDate>Sun, 11 Apr 2021 21:47:02 +0800</pubDate><guid>https://zhimoe.github.io/post/rust-standard-library-traits-tour/</guid><description>&lt;p&gt;关于 rust trait 非常好的介绍，比 rust book 详细，系统。&lt;/p&gt;</description></item><item><title>Python 如何实现一个拼写检查器[翻译]</title><link>https://zhimoe.github.io/post/python-spell-correct/</link><pubDate>Sun, 25 Oct 2020 20:01:27 +0800</pubDate><guid>https://zhimoe.github.io/post/python-spell-correct/</guid><description>&lt;p&gt;谷歌 AI 负责人 norvig 在 07 年写的如何实现一个拼写纠正器的经典博文&lt;a href="https://norvig.com/spell-correct.html"&gt;How to Write a Spelling Corrector&lt;/a&gt;.&lt;br&gt;
上面的链接已经是 16 年更新过了，程序也更新到了 python3.&lt;br&gt;
中文版的翻译 &lt;a href="https://blog.csdn.net/suixinsuiyuan33/article/details/69215082"&gt;如何实现一个拼写纠正器&lt;/a&gt; 还是基于 07 年版本的。&lt;/p&gt;</description></item><item><title>Associated Type in Rust</title><link>https://zhimoe.github.io/post/rust-associated-types/</link><pubDate>Sun, 20 Sep 2020 20:30:41 +0800</pubDate><guid>https://zhimoe.github.io/post/rust-associated-types/</guid><description>&lt;p&gt;Associated Type and generic diff in rust&lt;/p&gt;
&lt;h2 id="type-outside-impl"&gt;type outside impl&lt;/h2&gt;
&lt;p&gt;a &lt;code&gt;type Foo = Bar&lt;/code&gt; outside is just type alias. most used in generic type.&lt;/p&gt;
&lt;p&gt;like:&lt;code&gt; type Thunk = Box&amp;lt;dyn Fn() + Send + 'static&amp;gt;;&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="type-inside-impl"&gt;type inside impl&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;type&lt;/code&gt; in an &lt;code&gt;impl&lt;/code&gt; defines an associated type. associated type 可以理解为一个类型占位符，在 trait 的方法声明中使用。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-rust" data-lang="rust"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a90d91"&gt;pub&lt;/span&gt; &lt;span style="color:#a90d91"&gt;trait&lt;/span&gt; &lt;span style="color:#a90d91"&gt;Iterator&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;type&lt;/span&gt; &lt;span style="color:#3f6e75"&gt;Item&lt;/span&gt;; &lt;span style="color:#177500"&gt;// or type T: Display;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#177500"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;fn&lt;/span&gt; &lt;span style="color:#000"&gt;next&lt;/span&gt;(&lt;span style="color:#000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color:#a90d91"&gt;mut&lt;/span&gt; &lt;span style="color:#5b269a"&gt;self&lt;/span&gt;) -&amp;gt; &lt;span style="color:#a90d91"&gt;Option&lt;/span&gt;&lt;span style="color:#000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#5b269a"&gt;Self&lt;/span&gt;::&lt;span style="color:#000"&gt;Item&lt;/span&gt;&lt;span style="color:#000"&gt;&amp;gt;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>编程字体推荐</title><link>https://zhimoe.github.io/post/programming-fonts/</link><pubDate>Fri, 21 Aug 2020 22:02:50 +0800</pubDate><guid>https://zhimoe.github.io/post/programming-fonts/</guid><description>&lt;p&gt;个人对于编程字体有&lt;em&gt;严重的&lt;/em&gt;强迫症，几乎每个月都会在X上面搜索“programming font”或者看下 &lt;a href="https://www.programmingfonts.org/"&gt;programmingfonts.org&lt;/a&gt;上面有没有上新字体。下面总结自己曾经用的比较久的字体，主要是编程字体。&lt;/p&gt;
&lt;h3 id="aurulent"&gt;Aurulent&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://github.com/zhimoe/programming-fonts"&gt;Aurulent 下载&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;小写字母来自 Aurulent Sans Mono，其他字符基于 Fira Code. Aurulent Sans Mono 风格和 SourceCodePro 非常像，胖宽型，大开大合，简单却有具有设计，特别是字符 g，a，p，y，s。&lt;/li&gt;
&lt;li&gt;字母 r 的思路来自&lt;a href="https://www.programmingfonts.org/#gintronic"&gt;gintronic&lt;/a&gt;. 优点是在低分辨率屏，r 的末尾不会被 hint 只剩下尖尖。&lt;/li&gt;
&lt;li&gt;问号？也来自 gintronic 字体，非常漂亮。&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>如何正确地系鞋带</title><link>https://zhimoe.github.io/post/how-to-tie-shoelace/</link><pubDate>Fri, 21 Aug 2020 21:42:38 +0800</pubDate><guid>https://zhimoe.github.io/post/how-to-tie-shoelace/</guid><description>&lt;p&gt;Ian 安全结是登山系鞋带的首选，它越穿越紧，不会松开。解鞋带轻轻一拉即开。而且对称美观，上手简单。值得每个人花十分钟学习。&lt;br&gt;
本篇不仅给出 Ian 安全结示意图，还告诉大家如何让安全结和蝴蝶结水平对称，尽可能美观的秘诀。&lt;/p&gt;</description></item><item><title>Java 8 Lambda 笔记</title><link>https://zhimoe.github.io/post/java-lambda/</link><pubDate>Thu, 06 Aug 2020 22:49:34 +0800</pubDate><guid>https://zhimoe.github.io/post/java-lambda/</guid><description>&lt;h3 id="问题"&gt;问题&lt;/h3&gt;
&lt;p&gt;Java 是 OOP 语言，使用对象封装。由于函数不是一等公民，无法在方法中传递函数/方法。在 Java 8 之前，使用匿名类表示行为：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#177500"&gt;// 监听器接口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a90d91"&gt;public&lt;/span&gt; &lt;span style="color:#a90d91"&gt;interface&lt;/span&gt; &lt;span style="color:#3f6e75"&gt;ActionListener&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;void&lt;/span&gt; &lt;span style="color:#000"&gt;actionPerformed&lt;/span&gt;(&lt;span style="color:#000"&gt;ActionEvent&lt;/span&gt; &lt;span style="color:#000"&gt;e&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#177500"&gt;// 使用匿名类传递一个行为&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#000"&gt;button&lt;/span&gt;.&lt;span style="color:#836c28"&gt;addActionListener&lt;/span&gt;(&lt;span style="color:#a90d91"&gt;new&lt;/span&gt; &lt;span style="color:#000"&gt;ActionListener&lt;/span&gt;(){
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;public&lt;/span&gt; &lt;span style="color:#a90d91"&gt;void&lt;/span&gt; &lt;span style="color:#000"&gt;actionPerformed&lt;/span&gt;(&lt;span style="color:#000"&gt;Event&lt;/span&gt; &lt;span style="color:#000"&gt;e&lt;/span&gt;){
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#000"&gt;System&lt;/span&gt;.&lt;span style="color:#836c28"&gt;out&lt;/span&gt;.&lt;span style="color:#836c28"&gt;println&lt;/span&gt;(&lt;span style="color:#c41a16"&gt;&amp;#34;button clicked&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;});
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>基于 MDX 的 web 词典</title><link>https://zhimoe.github.io/post/python-mdict-web/</link><pubDate>Wed, 01 Jul 2020 00:00:00 +0000</pubDate><guid>https://zhimoe.github.io/post/python-mdict-web/</guid><description>&lt;p&gt;Mdict 项目是一个糅合了 MDX 词典、ES 例句搜索和 AI 模型翻译的多源搜索功能 Web 词典。特别适合部署在内网中学习使用或者给孩子学习使用。&lt;br&gt;
python 版本增加了一个机器学习模型翻译.rust 版本也有模型，但是还没来得及加。&lt;/p&gt;
&lt;h3 id="mdict-py"&gt;mdict-py&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://github.com/zhimoe/mdict-py"&gt;mdict-py 源码&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Mdict 项目是一个糅合了 MDX 词典、ES 例句搜索和 AI 模型翻译的多源搜索功能 Web 词典。特别适合部署在内网中学习使用或者给孩子学习使用。&lt;/p&gt;
&lt;p&gt;特点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;自动识别中英文选择对应 mdx 词典，目前英文词典包含牛津 8 和朗文 4，中文词典包含汉语词典 3&lt;/li&gt;
&lt;li&gt;英文尝试拼写纠错功能，动词时态纠错&lt;/li&gt;
&lt;li&gt;如果配置了中文会尝试搜索朗文的例句，模糊搜索，对于有英语基础的同学很有用&lt;/li&gt;
&lt;li&gt;如果配置了 AI 模型，会使用机器学习模型翻译，翻译结果比较粗糙，但是可以参考&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Python 4 道笔试题</title><link>https://zhimoe.github.io/post/python-interview-questions/</link><pubDate>Thu, 04 Jun 2020 21:31:01 +0800</pubDate><guid>https://zhimoe.github.io/post/python-interview-questions/</guid><description>&lt;p&gt;4 道常见的 python 面试题和解答，以及一些 python 陷阱的链接。&lt;/p&gt;
&lt;h2 id="问题"&gt;问题&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;题目 1&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;def&lt;/span&gt; &lt;span style="color:#000"&gt;change&lt;/span&gt;(&lt;span style="color:#000"&gt;v&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#000"&gt;v&lt;/span&gt;[&lt;span style="color:#1c01ce"&gt;1&lt;/span&gt;] &lt;span style="color:#000"&gt;=&lt;/span&gt; &lt;span style="color:#1c01ce"&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;return&lt;/span&gt; &lt;span style="color:#000"&gt;v&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#000"&gt;a&lt;/span&gt; &lt;span style="color:#000"&gt;=&lt;/span&gt; [&lt;span style="color:#1c01ce"&gt;1&lt;/span&gt;, &lt;span style="color:#1c01ce"&gt;2&lt;/span&gt;, &lt;span style="color:#1c01ce"&gt;3&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;print&lt;/span&gt;(&lt;span style="color:#000"&gt;change&lt;/span&gt;(&lt;span style="color:#000"&gt;a&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;print&lt;/span&gt;(&lt;span style="color:#000"&gt;a&lt;/span&gt;) 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Scala Python 文件读取跳过转义字符</title><link>https://zhimoe.github.io/post/scala-python-file-encoding-escape/</link><pubDate>Thu, 04 Jun 2020 21:30:31 +0800</pubDate><guid>https://zhimoe.github.io/post/scala-python-file-encoding-escape/</guid><description>&lt;p&gt;在文件读取的时候，会遇到非法转义字符，导致文件按行读取失败。此时可以通过忽略转义字符来解决。本文记录了 scala 和 python 的方法。&lt;/p&gt;
&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;p&gt;有 50G 的服务器日志，拆分为几千个 txt 文件，编码是 utf8，使用 scala 和 python 按行处理：&lt;/p&gt;
&lt;h3 id="scala"&gt;scala&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-scala" data-lang="scala"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a90d91"&gt;def&lt;/span&gt; &lt;span style="color:#000"&gt;main&lt;/span&gt;&lt;span style="color:#000"&gt;(&lt;/span&gt;&lt;span style="color:#000"&gt;args&lt;/span&gt;&lt;span style="color:#a90d91"&gt;:&lt;/span&gt; &lt;span style="color:#a90d91"&gt;Array&lt;/span&gt;&lt;span style="color:#000"&gt;[&lt;/span&gt;&lt;span style="color:#a90d91"&gt;String&lt;/span&gt;&lt;span style="color:#000"&gt;])&lt;/span&gt;&lt;span style="color:#a90d91"&gt;:&lt;/span&gt; &lt;span style="color:#a90d91"&gt;Unit&lt;/span&gt; &lt;span style="color:#000"&gt;=&lt;/span&gt; &lt;span style="color:#000"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;for&lt;/span&gt; &lt;span style="color:#000"&gt;(&lt;/span&gt;&lt;span style="color:#000"&gt;line&lt;/span&gt; &lt;span style="color:#a90d91"&gt;&amp;lt;-&lt;/span&gt; &lt;span style="color:#3f6e75"&gt;Source&lt;/span&gt;&lt;span style="color:#000"&gt;.&lt;/span&gt;&lt;span style="color:#000"&gt;fromFile&lt;/span&gt;&lt;span style="color:#000"&gt;(&lt;/span&gt;&lt;span style="color:#c41a16"&gt;&amp;#34;./txt1.log&amp;#34;&lt;/span&gt;&lt;span style="color:#000"&gt;,&lt;/span&gt;&lt;span style="color:#c41a16"&gt;&amp;#34;UTF8&amp;#34;&lt;/span&gt;&lt;span style="color:#000"&gt;).&lt;/span&gt;&lt;span style="color:#000"&gt;getLines&lt;/span&gt;&lt;span style="color:#000"&gt;())&lt;/span&gt; &lt;span style="color:#000"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;if&lt;/span&gt; &lt;span style="color:#000"&gt;(&lt;/span&gt;&lt;span style="color:#000"&gt;line&lt;/span&gt;&lt;span style="color:#000"&gt;.&lt;/span&gt;&lt;span style="color:#000"&gt;contains&lt;/span&gt;&lt;span style="color:#000"&gt;(&lt;/span&gt;&lt;span style="color:#c41a16"&gt;&amp;#34;ABC&amp;#34;&lt;/span&gt;&lt;span style="color:#000"&gt;))&lt;/span&gt; &lt;span style="color:#000"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#177500"&gt;//do something 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#177500"&gt;&lt;/span&gt; &lt;span style="color:#000"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#000"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#000"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Matplotlib 图例中文乱码解决方案</title><link>https://zhimoe.github.io/post/python-matplotlib-chinese-garbled-solution/</link><pubDate>Fri, 01 May 2020 19:18:05 +0800</pubDate><guid>https://zhimoe.github.io/post/python-matplotlib-chinese-garbled-solution/</guid><description>&lt;p&gt;很久以前写的一个答案，四年来一直有人评论感谢，说只有我的方法是有效的。非常意外也很高兴。也放到博客中里备份吧。&lt;br&gt;
&lt;a href="https://www.zhihu.com/question/25404709/answer/67672003"&gt;zhihu.com&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#177500"&gt;# https://www.zhihu.com/question/25404709/answer/67672003&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a90d91"&gt;import&lt;/span&gt; &lt;span style="color:#000"&gt;matplotlib.font_manager&lt;/span&gt; &lt;span style="color:#a90d91"&gt;as&lt;/span&gt; &lt;span style="color:#000"&gt;fm&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#177500"&gt;# 微软雅黑，如果需要宋体，可以用 simsun.ttc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#000"&gt;myfont&lt;/span&gt; &lt;span style="color:#000"&gt;=&lt;/span&gt; &lt;span style="color:#000"&gt;fm&lt;/span&gt;&lt;span style="color:#000"&gt;.&lt;/span&gt;&lt;span style="color:#000"&gt;FontProperties&lt;/span&gt;(&lt;span style="color:#000"&gt;fname&lt;/span&gt;&lt;span style="color:#000"&gt;=&lt;/span&gt;&lt;span style="color:#c41a16"&gt;&amp;#39;C:/Windows/Fonts/msyh.ttc&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#177500"&gt;# Linux 字体在&amp;#34;/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc&amp;#34;, &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#177500"&gt;# 需要先安装字体&amp;#34;&amp;gt;sudo apt install fonts-noto-cjk -y&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#177500"&gt;# MacOS 中文字体文件在&amp;#34;/System/Library/Fonts/PingFang.ttc&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#177500"&gt;# Win10,Linux 已测试，MacOS 未验证&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a90d91"&gt;import&lt;/span&gt; &lt;span style="color:#000"&gt;matplotlib.pyplot&lt;/span&gt; &lt;span style="color:#a90d91"&gt;as&lt;/span&gt; &lt;span style="color:#000"&gt;plt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#000"&gt;plt&lt;/span&gt;&lt;span style="color:#000"&gt;.&lt;/span&gt;&lt;span style="color:#000"&gt;clf&lt;/span&gt;() &lt;span style="color:#177500"&gt;# 清空画布&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#000"&gt;plt&lt;/span&gt;&lt;span style="color:#000"&gt;.&lt;/span&gt;&lt;span style="color:#000"&gt;plot&lt;/span&gt;([&lt;span style="color:#1c01ce"&gt;1&lt;/span&gt;, &lt;span style="color:#1c01ce"&gt;2&lt;/span&gt;, &lt;span style="color:#1c01ce"&gt;3&lt;/span&gt;], [&lt;span style="color:#1c01ce"&gt;4&lt;/span&gt;, &lt;span style="color:#1c01ce"&gt;5&lt;/span&gt;, &lt;span style="color:#1c01ce"&gt;6&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#000"&gt;plt&lt;/span&gt;&lt;span style="color:#000"&gt;.&lt;/span&gt;&lt;span style="color:#000"&gt;xlabel&lt;/span&gt;(&lt;span style="color:#c41a16"&gt;&amp;#34;横轴&amp;#34;&lt;/span&gt;,&lt;span style="color:#000"&gt;fontproperties&lt;/span&gt;&lt;span style="color:#000"&gt;=&lt;/span&gt;&lt;span style="color:#000"&gt;myfont&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#000"&gt;plt&lt;/span&gt;&lt;span style="color:#000"&gt;.&lt;/span&gt;&lt;span style="color:#000"&gt;ylabel&lt;/span&gt;(&lt;span style="color:#c41a16"&gt;&amp;#34;纵轴&amp;#34;&lt;/span&gt;,&lt;span style="color:#000"&gt;fontproperties&lt;/span&gt;&lt;span style="color:#000"&gt;=&lt;/span&gt;&lt;span style="color:#000"&gt;myfont&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#000"&gt;plt&lt;/span&gt;&lt;span style="color:#000"&gt;.&lt;/span&gt;&lt;span style="color:#000"&gt;title&lt;/span&gt;(&lt;span style="color:#c41a16"&gt;&amp;#34;pythoner.com&amp;#34;&lt;/span&gt;,&lt;span style="color:#000"&gt;fontproperties&lt;/span&gt;&lt;span style="color:#000"&gt;=&lt;/span&gt;&lt;span style="color:#000"&gt;myfont&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#000"&gt;plt&lt;/span&gt;&lt;span style="color:#000"&gt;.&lt;/span&gt;&lt;span style="color:#000"&gt;legend&lt;/span&gt;([&lt;span style="color:#c41a16"&gt;&amp;#39;图例&amp;#39;&lt;/span&gt;],&lt;span style="color:#000"&gt;prop&lt;/span&gt;&lt;span style="color:#000"&gt;=&lt;/span&gt;&lt;span style="color:#000"&gt;myfont&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#000"&gt;plt&lt;/span&gt;&lt;span style="color:#000"&gt;.&lt;/span&gt;&lt;span style="color:#000"&gt;show&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Rust Ownerships Lifetimes 教程</title><link>https://zhimoe.github.io/post/rust-ownership-lifetimes/</link><pubDate>Sat, 22 Feb 2020 15:55:13 +0800</pubDate><guid>https://zhimoe.github.io/post/rust-ownership-lifetimes/</guid><description>&lt;p&gt;some notes on rust ownership,reference,string and &amp;amp;str, and lifetimes&lt;/p&gt;</description></item><item><title>SpringBoot &amp; Rust 应用的 Dockerfile 优化</title><link>https://zhimoe.github.io/post/dockerfile-best-practices/</link><pubDate>Mon, 03 Feb 2020 11:30:55 +0800</pubDate><guid>https://zhimoe.github.io/post/dockerfile-best-practices/</guid><description>&lt;p&gt;记录 spring boot 和 rust 项目的 Dockerfile 的最佳实践。&lt;/p&gt;
&lt;h2 id="spring-boot-应用-dockerfile"&gt;spring boot 应用 Dockerfile&lt;/h2&gt;
&lt;p&gt;spring.io 提供了一个 boot 应用的&lt;a href="https://spring.io/guides/topicals/spring-boot-docker"&gt;Dockerfile&lt;/a&gt;指导。&lt;br&gt;
不过有个问题，这个 Dockerfile 使用的 maven 是项目源码里面 copy 过去的。在一般企业项目中这么做显然不规范，直接使用 maven 基础镜像更合理。&lt;/p&gt;</description></item><item><title>Docker CMD ENTRYPOINT 区别</title><link>https://zhimoe.github.io/post/docker-cmd-entrypoint-diff/</link><pubDate>Sun, 02 Feb 2020 21:10:18 +0800</pubDate><guid>https://zhimoe.github.io/post/docker-cmd-entrypoint-diff/</guid><description>&lt;p&gt;记录 docker 中 exec form 和 shell form 的区别，CMD 和 ENTRYPOINT 区别，以及最佳实践。&lt;/p&gt;
&lt;h2 id="exec-form-vs-shell-form"&gt;exec form VS shell form&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# exec form
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;instruction&amp;gt; [&amp;#34;executable&amp;#34;, &amp;#34;param1&amp;#34;, &amp;#34;param2&amp;#34;, ...]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# shell form
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;instruction&amp;gt; &amp;lt;command&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Scala uniform access principle</title><link>https://zhimoe.github.io/post/scala-uniform-access-principle/</link><pubDate>Fri, 31 Jan 2020 18:40:10 +0800</pubDate><guid>https://zhimoe.github.io/post/scala-uniform-access-principle/</guid><description>&lt;p&gt;虽然代码写的很水，但是我对各种编程语言一直比较感兴趣。除了工作中使用的 Java 之外，自己也了解 Python,Groovy,Scala,Kotlin,Clojure,Go,Rust.其中 Python 和 Scala 在工作中也偶尔使用。了解不同的编程语言语法对于编程思维的影响还是蛮有意思的。&lt;br&gt;
例如，只会 Java 的开发者可能没有听过模式匹配 (pattern match).在我学习了 Scala 之后，我对模式匹配的理解就是更强更优雅的 switch+if. 而在我看过 rust 和 elixir 语言中关于模式匹配之后，我对模式匹配的理解就完全不一样了。&lt;/p&gt;</description></item><item><title>Highlights in Scala for Impatient 2nd</title><link>https://zhimoe.github.io/post/scala-for-impatient-2nd-highlights/</link><pubDate>Wed, 15 Jan 2020 21:42:33 +0800</pubDate><guid>https://zhimoe.github.io/post/scala-for-impatient-2nd-highlights/</guid><description>&lt;p&gt;key points in scala-for-impatient 2nd book, best book for java developer to use scala in a rush.&lt;br&gt;
scala-for-impatient 章节摘要，这本书对于 Java 开发者快速上手 Scala 帮助很大。&lt;/p&gt;
&lt;h3 id="functions"&gt;Functions&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;• if expression has a value.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;• A block has a value — the value of its last expression.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;• The Scala for loop is like an “enhanced” Java for loop.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;• Semicolons are (mostly) optional.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;• The void type is Unit.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;• Avoid using `return` in a function.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;• Beware of missing = in a function definition.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;• Exceptions work just like in Java or C++, but you use a “pattern matching” syntax for catch.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;• Scala has no checked exceptions.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Rust Packages Crates Mod Notes</title><link>https://zhimoe.github.io/post/rust-packages-crates-mod/</link><pubDate>Sun, 12 Jan 2020 20:03:33 +0800</pubDate><guid>https://zhimoe.github.io/post/rust-packages-crates-mod/</guid><description>&lt;p&gt;初学 rust 对于项目的 package 和 crate 的关系，module 和文件的关系有点理不清。做了一点笔记。&lt;/p&gt;
&lt;h2 id="packages-and-crates"&gt;packages and crates&lt;/h2&gt;
&lt;p&gt;A Cargo.toml is a package. and must have a package name, defined in &lt;code&gt;[package]&lt;/code&gt; table:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#000"&gt;package&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#000"&gt;name&lt;/span&gt; = &lt;span style="color:#c41a16"&gt;&amp;#34;actix-web&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Git 常用命令备忘录</title><link>https://zhimoe.github.io/post/git-useful-tips/</link><pubDate>Sun, 01 Sep 2019 21:01:06 +0800</pubDate><guid>https://zhimoe.github.io/post/git-useful-tips/</guid><description>&lt;p&gt;记录日常开发中偶尔会遇到的但是总是记不住的 git 命令。&lt;br&gt;
以下技巧都来自于&lt;a href="https://ohshitgit.com/"&gt;oh shit git&lt;/a&gt; 和 &lt;a href="https://stackoverflow.com"&gt;stackoverflow&lt;/a&gt;，版权归作者所有。&lt;/p&gt;</description></item><item><title>DevOps 能力成熟度模型</title><link>https://zhimoe.github.io/post/devops-maturity-model-checklist/</link><pubDate>Wed, 24 Jul 2019 07:58:12 +0800</pubDate><guid>https://zhimoe.github.io/post/devops-maturity-model-checklist/</guid><description>&lt;p&gt;之前听说过 AWS 的软件工程师是需要自己写需求说明书，前后端代码，测试和上线。还有 instagram 的工程师可以做到 python 的代码提交如果合并到主分支后可以在&lt;a href="https://instagram-engineering.com/static-analysis-at-scale-an-instagram-story-8f498ab71a0c"&gt;一个小时内&lt;/a&gt;自动部署到生产被用户使用到，感觉这个非常神奇。如果需要做到这个，对组织级与个人都有极高的 devops 能力成熟度要求。&lt;br&gt;
上周代表 CRM 项目通过了信通院的 DevOps 三级认证。感觉提升的空间很大。专门看了一下信通院发布的成熟度模型标准。&lt;/p&gt;</description></item><item><title>Scala Collection Tips</title><link>https://zhimoe.github.io/post/scala-collection-tips/</link><pubDate>Sun, 19 May 2019 16:49:14 +0800</pubDate><guid>https://zhimoe.github.io/post/scala-collection-tips/</guid><description>&lt;p&gt;scala collection 提供了一整套独立于 Java 的高性能集合，使用上非常灵活，所以需要清楚一些常用的方法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; reduce fold scan&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; 集合的符号方法&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; 数组，tuple&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; 2.13 的集合架构&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>使用 GTmetrix 对前端静态资源图片优化[翻译]</title><link>https://zhimoe.github.io/post/frontend-assets-optimize-gtmetrix/</link><pubDate>Sun, 19 May 2019 11:07:26 +0800</pubDate><guid>https://zhimoe.github.io/post/frontend-assets-optimize-gtmetrix/</guid><description>&lt;p&gt;GTmetrix 是一个前端页面测试的网站，可以发现你的站点哪些资源加载速度较慢，并针对性的优化。本文包含如何使用 GTmetrix 优化网站图片性能。&lt;br&gt;
source:&lt;a href="https://gtmetrix.com/blog/how-to-optimize-images-a-practical-guide/"&gt;How to Optimize Images: A Practical Guide&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Spring FactoryBean and ContextAware</title><link>https://zhimoe.github.io/post/spring-factorybean-contextaware/</link><pubDate>Thu, 16 May 2019 22:44:38 +0800</pubDate><guid>https://zhimoe.github.io/post/spring-factorybean-contextaware/</guid><description>&lt;p&gt;理解 Spring 的 FactoryBean 和 ContextAware 接口。&lt;/p&gt;
&lt;h2 id="factorybean"&gt;FactoryBean&lt;/h2&gt;
&lt;p&gt;一句话就是 FactoryBean 用于返回其他对象实例的，而不是自身类型的实例。&lt;/p&gt;</description></item><item><title>通过例子学习 Clojure</title><link>https://zhimoe.github.io/post/learn-clojure-by-example/</link><pubDate>Mon, 13 May 2019 15:22:05 +0800</pubDate><guid>https://zhimoe.github.io/post/learn-clojure-by-example/</guid><description>&lt;p&gt;这份笔记试图打造最强的 clojure 小抄，keep refactoring it&amp;hellip;&lt;/p&gt;</description></item><item><title>理解 Elasticsearch Query DSL 中的 JSON 结构</title><link>https://zhimoe.github.io/post/elasticsearch-query-dsl/</link><pubDate>Wed, 01 May 2019 10:17:46 +0800</pubDate><guid>https://zhimoe.github.io/post/elasticsearch-query-dsl/</guid><description>&lt;p&gt;理解 ES 搜索中 JSON DSL 有助于自己写 JSON 查询，特别是手写复杂嵌套 json。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; diffs in es 2.x and es 5.x&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; query dsl&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; aggr query&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Useful Scala Code Snippets</title><link>https://zhimoe.github.io/post/scala-useful-snippets/</link><pubDate>Fri, 26 Apr 2019 07:54:00 +0800</pubDate><guid>https://zhimoe.github.io/post/scala-useful-snippets/</guid><description>&lt;h2 id="merge-two-map-and-sum-its-values"&gt;merge two map and sum its values&lt;/h2&gt;
&lt;p&gt;多个 map 合并，key 相同时则 value 相加&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-scala" data-lang="scala"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a90d91"&gt;val&lt;/span&gt; &lt;span style="color:#000"&gt;map1&lt;/span&gt; &lt;span style="color:#a90d91"&gt;=&lt;/span&gt; &lt;span style="color:#3f6e75"&gt;Map&lt;/span&gt;&lt;span style="color:#000"&gt;(&lt;/span&gt;&lt;span style="color:#1c01ce"&gt;1&lt;/span&gt; &lt;span style="color:#000"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#1c01ce"&gt;1&lt;/span&gt;&lt;span style="color:#000"&gt;,&lt;/span&gt; &lt;span style="color:#1c01ce"&gt;2&lt;/span&gt; &lt;span style="color:#000"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#1c01ce"&gt;2&lt;/span&gt;&lt;span style="color:#000"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a90d91"&gt;val&lt;/span&gt; &lt;span style="color:#000"&gt;map2&lt;/span&gt; &lt;span style="color:#a90d91"&gt;=&lt;/span&gt; &lt;span style="color:#3f6e75"&gt;Map&lt;/span&gt;&lt;span style="color:#000"&gt;(&lt;/span&gt;&lt;span style="color:#1c01ce"&gt;1&lt;/span&gt; &lt;span style="color:#000"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#1c01ce"&gt;11&lt;/span&gt;&lt;span style="color:#000"&gt;,&lt;/span&gt; &lt;span style="color:#1c01ce"&gt;3&lt;/span&gt; &lt;span style="color:#000"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#1c01ce"&gt;3&lt;/span&gt;&lt;span style="color:#000"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a90d91"&gt;val&lt;/span&gt; &lt;span style="color:#000"&gt;map3&lt;/span&gt; &lt;span style="color:#a90d91"&gt;=&lt;/span&gt; &lt;span style="color:#3f6e75"&gt;Map&lt;/span&gt;&lt;span style="color:#000"&gt;(&lt;/span&gt;&lt;span style="color:#1c01ce"&gt;1&lt;/span&gt; &lt;span style="color:#000"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#1c01ce"&gt;111&lt;/span&gt;&lt;span style="color:#000"&gt;,&lt;/span&gt; &lt;span style="color:#1c01ce"&gt;3&lt;/span&gt; &lt;span style="color:#000"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#1c01ce"&gt;3&lt;/span&gt;&lt;span style="color:#000"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a90d91"&gt;val&lt;/span&gt; &lt;span style="color:#000"&gt;mapList&lt;/span&gt; &lt;span style="color:#a90d91"&gt;=&lt;/span&gt; &lt;span style="color:#3f6e75"&gt;List&lt;/span&gt;&lt;span style="color:#000"&gt;(&lt;/span&gt;&lt;span style="color:#000"&gt;map1&lt;/span&gt;&lt;span style="color:#000"&gt;,&lt;/span&gt; &lt;span style="color:#000"&gt;map2&lt;/span&gt;&lt;span style="color:#000"&gt;,&lt;/span&gt; &lt;span style="color:#000"&gt;map3&lt;/span&gt;&lt;span style="color:#000"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a90d91"&gt;val&lt;/span&gt; &lt;span style="color:#000"&gt;merged&lt;/span&gt; &lt;span style="color:#a90d91"&gt;=&lt;/span&gt; &lt;span style="color:#000"&gt;mapList&lt;/span&gt;&lt;span style="color:#000"&gt;.&lt;/span&gt;&lt;span style="color:#000"&gt;reduce&lt;/span&gt;&lt;span style="color:#000"&gt;((&lt;/span&gt;&lt;span style="color:#000"&gt;m1&lt;/span&gt;&lt;span style="color:#000"&gt;,&lt;/span&gt; &lt;span style="color:#000"&gt;m2&lt;/span&gt;&lt;span style="color:#000"&gt;)&lt;/span&gt; &lt;span style="color:#a90d91"&gt;=&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#000"&gt;m1&lt;/span&gt; &lt;span style="color:#000"&gt;++&lt;/span&gt; &lt;span style="color:#000"&gt;m2&lt;/span&gt;&lt;span style="color:#000"&gt;.&lt;/span&gt;&lt;span style="color:#000"&gt;map&lt;/span&gt; &lt;span style="color:#000"&gt;{&lt;/span&gt; &lt;span style="color:#a90d91"&gt;case&lt;/span&gt; &lt;span style="color:#000"&gt;(&lt;/span&gt;&lt;span style="color:#000"&gt;k&lt;/span&gt;&lt;span style="color:#000"&gt;,&lt;/span&gt; &lt;span style="color:#000"&gt;v&lt;/span&gt;&lt;span style="color:#000"&gt;)&lt;/span&gt; &lt;span style="color:#a90d91"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color:#000"&gt;k&lt;/span&gt; &lt;span style="color:#000"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#000"&gt;(&lt;/span&gt;&lt;span style="color:#000"&gt;v&lt;/span&gt; &lt;span style="color:#000"&gt;+&lt;/span&gt; &lt;span style="color:#000"&gt;m1&lt;/span&gt;&lt;span style="color:#000"&gt;.&lt;/span&gt;&lt;span style="color:#000"&gt;getOrElse&lt;/span&gt;&lt;span style="color:#000"&gt;(&lt;/span&gt;&lt;span style="color:#000"&gt;k&lt;/span&gt;&lt;span style="color:#000"&gt;,&lt;/span&gt; &lt;span style="color:#1c01ce"&gt;0&lt;/span&gt;&lt;span style="color:#000"&gt;))&lt;/span&gt; &lt;span style="color:#000"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#000"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Scala Future</title><link>https://zhimoe.github.io/post/scala-future/</link><pubDate>Sun, 21 Apr 2019 14:36:36 +0800</pubDate><guid>https://zhimoe.github.io/post/scala-future/</guid><description>&lt;p&gt;some notes on scala future, includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; future&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; executor context&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; await future result&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; callback&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; recover&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Spring Cache Notes</title><link>https://zhimoe.github.io/post/draft/spring-cache-notes/</link><pubDate>Thu, 18 Apr 2019 09:42:12 +0800</pubDate><guid>https://zhimoe.github.io/post/draft/spring-cache-notes/</guid><description>&lt;p&gt;spring 的缓存一些技巧和陷阱&lt;/p&gt;</description></item><item><title>Spring Boot Notes</title><link>https://zhimoe.github.io/post/spring-boot-notes/</link><pubDate>Sun, 14 Apr 2019 18:33:22 +0800</pubDate><guid>https://zhimoe.github.io/post/spring-boot-notes/</guid><description>&lt;p&gt;一些容易忘记的 spring boot 知识要点。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注意，.yaml 和.yml 文件没任何区别。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="配置"&gt;配置&lt;/h2&gt;
&lt;h2 id="springbootapplication-注解"&gt;SpringBootApplication 注解&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#000"&gt;@SpringBootApplication&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#177500"&gt;// &amp;lt;=等价=&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#000"&gt;@Configuration&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#000"&gt;@ComponentScan&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#000"&gt;@EnableAutoConfiguration&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Pattern Matching Anonymous Function</title><link>https://zhimoe.github.io/post/scala-pattern-matching-anonymous-function/</link><pubDate>Sun, 31 Mar 2019 13:10:41 +0800</pubDate><guid>https://zhimoe.github.io/post/scala-pattern-matching-anonymous-function/</guid><description>&lt;p&gt;Scala 中很多使用 if 的地方都可以用 match case 来替换。常见的就是下面的这种写法：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-scala" data-lang="scala"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a90d91"&gt;val&lt;/span&gt; &lt;span style="color:#000"&gt;res&lt;/span&gt; &lt;span style="color:#a90d91"&gt;=&lt;/span&gt; &lt;span style="color:#000"&gt;msg&lt;/span&gt; &lt;span style="color:#a90d91"&gt;match&lt;/span&gt; &lt;span style="color:#000"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a90d91"&gt;case&lt;/span&gt; &lt;span style="color:#000"&gt;it&lt;/span&gt; &lt;span style="color:#a90d91"&gt;if&lt;/span&gt; &lt;span style="color:#000"&gt;it&lt;/span&gt;&lt;span style="color:#000"&gt;.&lt;/span&gt;&lt;span style="color:#000"&gt;contains&lt;/span&gt;&lt;span style="color:#000"&gt;(&lt;/span&gt;&lt;span style="color:#c41a16"&gt;&amp;#34;H&amp;#34;&lt;/span&gt;&lt;span style="color:#000"&gt;)&lt;/span&gt; &lt;span style="color:#a90d91"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color:#c41a16"&gt;&amp;#34;Hello&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a90d91"&gt;case&lt;/span&gt; &lt;span style="color:#a90d91"&gt;_&lt;/span&gt; &lt;span style="color:#a90d91"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color:#c41a16"&gt;&amp;#34;Other&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#000"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#177500"&gt;//更常见的用法是去匹配参数的模式：
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#177500"&gt;&lt;/span&gt;&lt;span style="color:#a90d91"&gt;case&lt;/span&gt; &lt;span style="color:#a90d91"&gt;class&lt;/span&gt; &lt;span style="color:#3f6e75"&gt;Player&lt;/span&gt;&lt;span style="color:#000"&gt;(&lt;/span&gt;&lt;span style="color:#000"&gt;name&lt;/span&gt;&lt;span style="color:#a90d91"&gt;:&lt;/span&gt; &lt;span style="color:#a90d91"&gt;String&lt;/span&gt;&lt;span style="color:#000"&gt;,&lt;/span&gt; &lt;span style="color:#000"&gt;score&lt;/span&gt;&lt;span style="color:#a90d91"&gt;:&lt;/span&gt; &lt;span style="color:#a90d91"&gt;Int&lt;/span&gt;&lt;span style="color:#000"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a90d91"&gt;def&lt;/span&gt; &lt;span style="color:#000"&gt;message&lt;/span&gt;&lt;span style="color:#000"&gt;(&lt;/span&gt;&lt;span style="color:#000"&gt;player&lt;/span&gt;&lt;span style="color:#a90d91"&gt;:&lt;/span&gt; &lt;span style="color:#a90d91"&gt;Player&lt;/span&gt;&lt;span style="color:#000"&gt;)&lt;/span&gt; &lt;span style="color:#a90d91"&gt;=&lt;/span&gt; &lt;span style="color:#000"&gt;player&lt;/span&gt; &lt;span style="color:#a90d91"&gt;match&lt;/span&gt; &lt;span style="color:#000"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;case&lt;/span&gt; &lt;span style="color:#3f6e75"&gt;Player&lt;/span&gt;&lt;span style="color:#000"&gt;(&lt;/span&gt;&lt;span style="color:#a90d91"&gt;_&lt;/span&gt;&lt;span style="color:#000"&gt;,&lt;/span&gt; &lt;span style="color:#000"&gt;score&lt;/span&gt;&lt;span style="color:#000"&gt;)&lt;/span&gt; &lt;span style="color:#a90d91"&gt;if&lt;/span&gt; &lt;span style="color:#000"&gt;score&lt;/span&gt; &lt;span style="color:#000"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#1c01ce"&gt;100000&lt;/span&gt; &lt;span style="color:#a90d91"&gt;=&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c41a16"&gt;&amp;#34;Get a job, dude!&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;case&lt;/span&gt; &lt;span style="color:#3f6e75"&gt;Player&lt;/span&gt;&lt;span style="color:#000"&gt;(&lt;/span&gt;&lt;span style="color:#000"&gt;name&lt;/span&gt;&lt;span style="color:#000"&gt;,&lt;/span&gt; &lt;span style="color:#a90d91"&gt;_&lt;/span&gt;&lt;span style="color:#000"&gt;)&lt;/span&gt; &lt;span style="color:#a90d91"&gt;=&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c41a16"&gt;&amp;#34;Hey, $name, nice to see you again!&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#000"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a90d91"&gt;def&lt;/span&gt; &lt;span style="color:#000"&gt;printMessage&lt;/span&gt;&lt;span style="color:#000"&gt;(&lt;/span&gt;&lt;span style="color:#000"&gt;player&lt;/span&gt;&lt;span style="color:#a90d91"&gt;:&lt;/span&gt; &lt;span style="color:#a90d91"&gt;Player&lt;/span&gt;&lt;span style="color:#000"&gt;)&lt;/span&gt; &lt;span style="color:#a90d91"&gt;=&lt;/span&gt; &lt;span style="color:#000"&gt;println&lt;/span&gt;&lt;span style="color:#000"&gt;(&lt;/span&gt;&lt;span style="color:#000"&gt;message&lt;/span&gt;&lt;span style="color:#000"&gt;(&lt;/span&gt;&lt;span style="color:#000"&gt;player&lt;/span&gt;&lt;span style="color:#000"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Scala Type Class</title><link>https://zhimoe.github.io/post/scala-type-class/</link><pubDate>Sun, 31 Mar 2019 12:58:17 +0800</pubDate><guid>https://zhimoe.github.io/post/scala-type-class/</guid><description>&lt;p&gt;scala type class notes:&lt;br&gt;
&lt;a href="https://scalac.io/typeclasses-in-scala"&gt;关于 scala type class 非常好的文章&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Scala 学习笔记</title><link>https://zhimoe.github.io/post/scala2-notes/</link><pubDate>Sun, 31 Mar 2019 00:11:50 +0800</pubDate><guid>https://zhimoe.github.io/post/scala2-notes/</guid><description>&lt;p&gt;some notes on scala, includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; setup with maven&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; import&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; == and eq&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; case class&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; for&amp;hellip;yield&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; companion object and class&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; method and function(def val)&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; _ in scala&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; =&amp;gt; in scala&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; () {} in scala&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; implicit&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; string&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>使用 Redis 的 hash 优化内存使用[翻译]</title><link>https://zhimoe.github.io/post/redis-hash-optimize-memory-usage/</link><pubDate>Sun, 31 Mar 2019 00:11:50 +0800</pubDate><guid>https://zhimoe.github.io/post/redis-hash-optimize-memory-usage/</guid><description>&lt;p&gt;使用 redis 的 hash 优化内存使用&lt;/p&gt;
&lt;h3 id="问题和方案"&gt;问题和方案&lt;/h3&gt;
&lt;p&gt;场景：有 3 亿张图片放在对象存储 (DELL ECS/AMAZON EC2) 上面，现在需要保存图片的 id-&amp;gt;用户 id 的映射。最直接的思路是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a90d91"&gt;set&lt;/span&gt; &lt;span style="color:#c41a16"&gt;&amp;#34;media:1155220&amp;#34;&lt;/span&gt; &lt;span style="color:#c41a16"&gt;&amp;#34;user1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a90d91"&gt;set&lt;/span&gt; &lt;span style="color:#c41a16"&gt;&amp;#34;media:1155221&amp;#34;&lt;/span&gt; &lt;span style="color:#c41a16"&gt;&amp;#34;user2&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这样设计 key 之后 3 亿张图片需要 21GB 的内存，因为 redis 的 string 是线性增长的。&lt;/p&gt;</description></item><item><title>Scala 2 Implicit</title><link>https://zhimoe.github.io/post/scala-implicit/</link><pubDate>Sat, 30 Mar 2019 12:58:17 +0800</pubDate><guid>https://zhimoe.github.io/post/scala-implicit/</guid><description>&lt;h2 id="隐式参数"&gt;隐式参数&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-scala" data-lang="scala"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#177500"&gt;//隐式参数是在调用时可以自动填充的参数，需要在调用范围内（scope) 有一个隐式变量可供填充。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#177500"&gt;&lt;/span&gt;&lt;span style="color:#a90d91"&gt;def&lt;/span&gt; &lt;span style="color:#000"&gt;addInt&lt;/span&gt;&lt;span style="color:#000"&gt;(&lt;/span&gt;&lt;span style="color:#000"&gt;i&lt;/span&gt;&lt;span style="color:#a90d91"&gt;:&lt;/span&gt;&lt;span style="color:#a90d91"&gt;Int&lt;/span&gt;&lt;span style="color:#000"&gt;)(&lt;/span&gt;&lt;span style="color:#a90d91"&gt;implicit&lt;/span&gt; &lt;span style="color:#000"&gt;n&lt;/span&gt;&lt;span style="color:#a90d91"&gt;:&lt;/span&gt; &lt;span style="color:#a90d91"&gt;Int&lt;/span&gt;&lt;span style="color:#000"&gt;)&lt;/span&gt; &lt;span style="color:#a90d91"&gt;=&lt;/span&gt; &lt;span style="color:#000"&gt;i&lt;/span&gt; &lt;span style="color:#000"&gt;+&lt;/span&gt; &lt;span style="color:#000"&gt;n&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#177500"&gt;//需要提供一个隐式变量 n
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#177500"&gt;&lt;/span&gt;&lt;span style="color:#a90d91"&gt;implicit&lt;/span&gt; &lt;span style="color:#a90d91"&gt;val&lt;/span&gt; &lt;span style="color:#000"&gt;sn&lt;/span&gt; &lt;span style="color:#a90d91"&gt;=&lt;/span&gt; &lt;span style="color:#1c01ce"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#000"&gt;addInt&lt;/span&gt;&lt;span style="color:#000"&gt;(&lt;/span&gt;&lt;span style="color:#1c01ce"&gt;2&lt;/span&gt;&lt;span style="color:#000"&gt;)&lt;/span&gt; &lt;span style="color:#177500"&gt;// 3
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#177500"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#177500"&gt;//如果有两个满足类型的隐式变量，则在编译 addInt(2) 时报错
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#177500"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#177500"&gt;//scala 的方法中 ExecutionContext 一般作为 implicit 参数。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>使用 travis 自动发布 markdown 到博客</title><link>https://zhimoe.github.io/post/publish-markdown-blog-by-travis/</link><pubDate>Sat, 30 Mar 2019 10:56:47 +0800</pubDate><guid>https://zhimoe.github.io/post/publish-markdown-blog-by-travis/</guid><description>&lt;p&gt;如何使用 github pages 和 github actions 构建静态个人博客站点&lt;/p&gt;
&lt;h3 id="update-at-2021"&gt;update at 2021&lt;/h3&gt;
&lt;p&gt;更新：github 开放 action 功能后，travis-ci 已经没有必要了，目前博客使用 zhimoe 仓库管理源码，使用 action 编译后将 public 目录同步到 zhimoe.github.io 仓库的 gh-pages 分支。&lt;br&gt;
注意，由于使用了 jsdelivr 的 cdn 功能，切换分支后 theme 的相关静态文件的 path 也要修改。&lt;/p&gt;
&lt;p&gt;github 给个人和组织免费提供 github pages 功能。就是说如果有个 repo 的名字为 zhimoe.github.io (zhimoe 为你的 github username), 那么这个 repo 里面的 master 或者 gh-pages 分支的内容如果存在 index.html, 那么其他人可以通过 &lt;a href="https://zhimoe.github.io"&gt;https://zhimoe.github.io&lt;/a&gt; 访问这个站点。&lt;/p&gt;</description></item><item><title>WSL 配置 Docker 环境</title><link>https://zhimoe.github.io/post/wsl-docker-environment/</link><pubDate>Tue, 01 Jan 2019 00:00:00 +0000</pubDate><guid>https://zhimoe.github.io/post/wsl-docker-environment/</guid><description>&lt;p&gt;使用 wsl,MobaXterm,cmder,docker 打造可视化的 linux 开发环境&lt;/p&gt;
&lt;p&gt;离不开 Windows 的理由很多，作为后端开发需要使用 linux 的情况也很多，双系统总归是不方便，而且 linux 下的 GUI 体验也没用 Win 10 好。&lt;br&gt;
如果使用虚拟机，那么文件交换和网络等各种问题也需要解决，对系统的内存要求也更高一些。微软为了让更多的开发人员留在 Win10 上面，开发了 WSL，目前的实际体验已经很棒，&lt;br&gt;
今天介绍一下如何打造一个可视化的 linux 开发环境&amp;ndash;即在 Win10 启动 linux 的 GUI 软件，例如 vs code 等。在 wsl 启动 vs code 写代码可以有效避免一些 Windows 和 linux 的编码和换行问题。&lt;/p&gt;
&lt;p&gt;本教程分为 2 部分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; 配置 wsl 可视化&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; 在 wsl 使用 docker&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;以下内容中 &lt;code&gt;wsl&lt;/code&gt;和&lt;code&gt;ubuntu&lt;/code&gt;含义相同，&lt;code&gt;console&lt;/code&gt;和&lt;code&gt;命令行&lt;/code&gt;含义相同。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Neo4j 入门</title><link>https://zhimoe.github.io/post/neo4j-intro/</link><pubDate>Sat, 01 Dec 2018 00:00:00 +0000</pubDate><guid>https://zhimoe.github.io/post/neo4j-intro/</guid><description>&lt;h3 id="neo4j-图数据库介绍"&gt;neo4j 图数据库介绍&lt;/h3&gt;
&lt;p&gt;neo4j 是目前排名最高的图数据库，分为商业和社区版本，社区版只支持单机，而且查询的运行时 (runtime) 不同 (cypher runtime:interpreted(社区版),slotted(企业版)). 数据库排名可以在 &lt;a href="https://db-engines.com/en/ranking/graph+dbms"&gt;https://db-engines.com/en/ranking/graph+dbms&lt;/a&gt; 查看，下一代最有前景的开源图数据库是 dgraph，目前还积极开发中，生产未就绪，等他的 Java 客户端再成熟一点可以试用。&lt;/p&gt;
&lt;p&gt;neo4j 数据库中只有 3 个概念：Node, Relationship, Properties. Node 表示实体类别，使用 Label 区分，例如一个节点可以有 Person/Father 等多个标签，Relationship 即关系，雇佣关系，父子关系，投资关系，交易关系等。Node 和 Relationship 都可以有 Proerties，属性自身不分是属于节点还是属于关系，例如 Person 可以有属性 name，关系也可以用属性 name.你可以在 neo4j browser 左侧看到当前数据库的所有 Node Label,Relationship Type,Properties.&lt;/p&gt;</description></item><item><title>Jupyter Notebook Install New Package[翻译]</title><link>https://zhimoe.github.io/post/python-jupyter-notebook-install-new-package/</link><pubDate>Thu, 01 Nov 2018 19:04:32 +0800</pubDate><guid>https://zhimoe.github.io/post/python-jupyter-notebook-install-new-package/</guid><description>&lt;h3 id="notes"&gt;notes&lt;/h3&gt;
&lt;p&gt;在 pycharm 写代码中如果使用到新的 package，例如&lt;code&gt;numpy&lt;/code&gt;,只需要输入&lt;code&gt;import numpy&lt;/code&gt; 然后 ALT+ENTER 在提示中选择 install new package 即可。&lt;/p&gt;
&lt;p&gt;在 notebook 中，网上的教程都说是&lt;code&gt;!pip install numpy&lt;/code&gt;. 但是这个可能有坑。究其原因是因为：&lt;/p&gt;</description></item><item><title>Java 并发 4-线程池与执行器</title><link>https://zhimoe.github.io/post/java-concurrency-4-threadpool-hierachy/</link><pubDate>Wed, 13 Jun 2018 09:57:52 +0800</pubDate><guid>https://zhimoe.github.io/post/java-concurrency-4-threadpool-hierachy/</guid><description>&lt;h3 id="thread-pool-classes-hierarchy"&gt;thread pool classes hierarchy&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;java thread pool class hierarchy
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Executor (java.util.concurrent)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;|---ExecutorService (java.util.concurrent)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |---AbstractExecutorService (java.util.concurrent)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | |---ForkJoinPool (java.util.concurrent)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | |---ThreadPoolExecutor (java.util.concurrent)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | | |---ScheduledThreadPoolExecutor (java.util.concurrent)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |---DelegatedExecutorService in Executors (java.util.concurrent)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |---ScheduledExecutorService (java.util.concurrent)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Spark Basic</title><link>https://zhimoe.github.io/post/spark-basic/</link><pubDate>Sat, 31 Mar 2018 00:17:30 +0800</pubDate><guid>https://zhimoe.github.io/post/spark-basic/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;大数据计算和普通的程序并无本质区别：数据输入=&amp;gt;计算=&amp;gt;输出和结果的持久化。这里的挑战在于计算的效率和容错性。由于数据输入巨大，计算的效率是基本的要求。为了在通用硬件上高效完成大量计算，唯一的途径就是将计算任务拆分分布式计算。这就引出了新的问题：分布式计算资源的管理（Mesos,YARN）,分布式计算失败后的恢复（容错性）（Spark RDD）,以及分布式的数据输入和保存（分布式文件 HDFS）.hadoop 生态圈就是为了解决几个问题设计的 (YARN,MapR,HDFS).只不过在计算这一环节 Spark 做的更加高效取代了 MapR.所以先看下 hadoop 的核心两个组件。&lt;/p&gt;</description></item><item><title>Java 单元测试如何 Mock 有参数的 void 方法</title><link>https://zhimoe.github.io/post/java-how-test-void-method-with-parameter/</link><pubDate>Sun, 23 Apr 2017 21:51:20 +0800</pubDate><guid>https://zhimoe.github.io/post/java-how-test-void-method-with-parameter/</guid><description>&lt;p&gt;测试中如果遇到被测试方法调用 void 方法，在 Mockito 中改如何处理？&lt;/p&gt;</description></item><item><title>Java Generic</title><link>https://zhimoe.github.io/post/java-generic/</link><pubDate>Sun, 01 May 2016 00:00:00 +0000</pubDate><guid>https://zhimoe.github.io/post/java-generic/</guid><description>&lt;h3 id="泛型"&gt;泛型&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#177500"&gt;// 类&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a90d91"&gt;class&lt;/span&gt; &lt;span style="color:#3f6e75"&gt;Tuple&lt;/span&gt;&lt;span style="color:#000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000"&gt;T&lt;/span&gt;, &lt;span style="color:#000"&gt;S&lt;/span&gt;&lt;span style="color:#000"&gt;&amp;gt;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;private&lt;/span&gt; &lt;span style="color:#000"&gt;T&lt;/span&gt; &lt;span style="color:#000"&gt;first&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;private&lt;/span&gt; &lt;span style="color:#000"&gt;S&lt;/span&gt; &lt;span style="color:#000"&gt;second&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#177500"&gt;// 泛型方法也可在非泛型类里面&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a90d91"&gt;class&lt;/span&gt; &lt;span style="color:#3f6e75"&gt;ArrayAlg&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;public&lt;/span&gt; &lt;span style="color:#a90d91"&gt;static&lt;/span&gt; &lt;span style="color:#000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000"&gt;T&lt;/span&gt;&lt;span style="color:#000"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#000"&gt;T&lt;/span&gt; &lt;span style="color:#000"&gt;getMiddle&lt;/span&gt;(&lt;span style="color:#000"&gt;T&lt;/span&gt;... &lt;span style="color:#000"&gt;a&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;return&lt;/span&gt; &lt;span style="color:#000"&gt;a&lt;/span&gt;&lt;span style="color:#000"&gt;[&lt;/span&gt;&lt;span style="color:#000"&gt;a&lt;/span&gt;.&lt;span style="color:#836c28"&gt;length&lt;/span&gt; &lt;span style="color:#000"&gt;/&lt;/span&gt; &lt;span style="color:#000"&gt;2&lt;/span&gt;&lt;span style="color:#000"&gt;]&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Java Stream Write Reader notes</title><link>https://zhimoe.github.io/post/java-io-basic/</link><pubDate>Tue, 01 Mar 2016 00:00:00 +0000</pubDate><guid>https://zhimoe.github.io/post/java-io-basic/</guid><description>&lt;p&gt;上次总结了 java 中不同读写文件的方法，这次总结一下基本的 IO 流。网上的总结大部分是以 Stream 和 Reader、Writer 来介绍的。这次从封装层次来介绍。&lt;/p&gt;</description></item><item><title>Java 6/7/8 中文件读写</title><link>https://zhimoe.github.io/post/java-file-in-v678/</link><pubDate>Mon, 01 Feb 2016 00:00:00 +0000</pubDate><guid>https://zhimoe.github.io/post/java-file-in-v678/</guid><description>&lt;p&gt;如何在 Java 中读写文件，这里保留 Java6/7 版本，但是你永远不应该使用它们，优先使用 Path、Files、Paths 三个类。&lt;br&gt;
资料：&lt;a href="http://www.javapractices.com/topic/TopicAction.do?Id=42"&gt;Reading and writing text files&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="java8-最佳实践"&gt;Java8 最佳实践&lt;/h2&gt;
&lt;p&gt;不要用 File 对象，改用 Path 对象，该对象既表示文件路径，也表示文件文本（应该认为文件也是路径的一部分），对于以前的 File，可以 File.toPath() 得到一个 Path 对象。&lt;br&gt;
Files 是一个静态类，操作文件内容.Paths 是静态工具类，操作文件路径，例如拼接文件路径，以前要使用平台无关的分隔符表示：File.pathSeparator、File.separator.&lt;br&gt;
例如，构建一个文件对象：&lt;code&gt;Path path = Paths.get(&amp;quot;~/test/&amp;quot;, &amp;quot;foo&amp;quot;, &amp;quot;bar&amp;quot;, &amp;quot;a.txt&amp;quot;);&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Java AOP 举例</title><link>https://zhimoe.github.io/post/java-aop-example/</link><pubDate>Fri, 01 Jan 2016 00:00:00 +0000</pubDate><guid>https://zhimoe.github.io/post/java-aop-example/</guid><description>&lt;p&gt;Java AOP: 找到一个最简单的介绍，不怎么想翻译，直接看原文吧：&lt;br&gt;
&lt;a href="https://www.javacodegeeks.com/2012/06/simple-introduction-to-aop.html"&gt;A Simple Introduction to AOP&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;注意，使用注解的方式声明切面时，增加了一个空方法去定义 Pointcut，即：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a90d91"&gt;class&lt;/span&gt; &lt;span style="color:#3f6e75"&gt;Test&lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#000"&gt;@Pointcut&lt;/span&gt;(&lt;span style="color:#c41a16"&gt;&amp;#34;execution(* org.bk.inventory.service.*.*(..))&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;public&lt;/span&gt; &lt;span style="color:#a90d91"&gt;void&lt;/span&gt; &lt;span style="color:#000"&gt;serviceMethods&lt;/span&gt;(){
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#177500"&gt;//这是一个空方法用于声明 Pointcut，&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#177500"&gt;//后续的 @Before @Around 方法都关联这个方法&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Java 并发 1-线程与任务</title><link>https://zhimoe.github.io/post/java-concurrency-1-thread/</link><pubDate>Fri, 01 Jan 2016 00:00:00 +0000</pubDate><guid>https://zhimoe.github.io/post/java-concurrency-1-thread/</guid><description>&lt;h3 id="基本概念"&gt;基本概念&lt;/h3&gt;
&lt;p&gt;线程：任务执行的环境，可以理解为传送带。注意任务必须在线程上面被执行。&lt;/p&gt;
&lt;p&gt;任务：Runnable/Callable 的实现，可以理解为传送带上面的工序。&lt;/p&gt;</description></item><item><title>Java 并发 2-同步与锁</title><link>https://zhimoe.github.io/post/java-concurrency-2-control/</link><pubDate>Fri, 01 Jan 2016 00:00:00 +0000</pubDate><guid>https://zhimoe.github.io/post/java-concurrency-2-control/</guid><description>&lt;h3 id="objectwaitnotifynotifyall"&gt;Object.wait/notify/notifyAll&lt;/h3&gt;
&lt;p&gt;这三个方法是在 class Object 上面的，也就是所有对象都有这个方法。这里对象就是上一篇中类比的资源，可以当成一个信号量。&lt;br&gt;
&lt;code&gt;Object.wait()&lt;/code&gt; to suspend a thread（等价于&lt;code&gt;sem.wait()&lt;/code&gt;）。将当前线程暂停并释放当前对象锁，直到其他线程调用了当前对象的 notify/notifyAll 方法。&lt;br&gt;
&lt;code&gt;Object.notify()&lt;/code&gt; to wake a thread up（等价&lt;code&gt;sem.signal()&lt;/code&gt;）。唤醒一个在等待当前对象锁的线程。&lt;br&gt;
以前用 wait/notify 的地方，现在可以用 CyclicBarrier 和 CountDownLatch 同步工具代替&lt;/p&gt;</description></item><item><title>Java 并发 3-ThreadLocal</title><link>https://zhimoe.github.io/post/java-concurrency-3-threadlocal/</link><pubDate>Fri, 01 Jan 2016 00:00:00 +0000</pubDate><guid>https://zhimoe.github.io/post/java-concurrency-3-threadlocal/</guid><description>&lt;p&gt;在通常的业务开发中，ThreadLocal 有两种典型的使用场景。&lt;/p&gt;
&lt;p&gt;场景 1，ThreadLocal 用作保存每个线程独享的对象，为每个线程都创建一个副本，这样每个线程都可以修改自己所拥有的副本，而不会影响其他线程的副本，确保了线程安全。&lt;/p&gt;
&lt;p&gt;场景 2，ThreadLocal 用作每个线程内需要独立保存信息，以便供其他方法更方便地获取该信息的场景。每个线程获取到的信息可能都是不一样的，前面执行的方法保存了信息后，后续方法可以通过 ThreadLocal 直接获取到，避免了传参，类似于全局变量的概念。&lt;/p&gt;</description></item><item><title>Java 动态代理</title><link>https://zhimoe.github.io/post/java-proxy/</link><pubDate>Fri, 01 Jan 2016 00:00:00 +0000</pubDate><guid>https://zhimoe.github.io/post/java-proxy/</guid><description>&lt;h3 id="好文"&gt;好文&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.ibm.com/developerworks/cn/java/j-lo-proxy1/"&gt;Java 动态代理机制分析及扩展&lt;/a&gt;，更深入的一篇：&lt;a href="http://nemotan.github.io/2015/11/java%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F-%E5%8A%A8%E6%80%81%E4%BB%A3%E7%90%86%E6%A8%A1%E5%BC%8F/"&gt;java 设计模式 - 动态代理模式&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Java 注解和注解处理器</title><link>https://zhimoe.github.io/post/java-annotation-processing/</link><pubDate>Fri, 01 Jan 2016 00:00:00 +0000</pubDate><guid>https://zhimoe.github.io/post/java-annotation-processing/</guid><description>&lt;h3 id="注解处理"&gt;注解处理&lt;/h3&gt;
&lt;p&gt;注解是 jdk1.5 出现的，但是自定义处理注解的功能是 1.6 才有的。Element 等关于注解源码抽象的支持类都是 1.6 出现的。&lt;/p&gt;</description></item><item><title>Java-==-and-equals</title><link>https://zhimoe.github.io/post/java--and-equal/</link><pubDate>Fri, 01 Jan 2016 00:00:00 +0000</pubDate><guid>https://zhimoe.github.io/post/java--and-equal/</guid><description>&lt;p&gt;samples code and notes on java == and equals&lt;/p&gt;</description></item><item><title>Java类加载过程和子类重写父类方法的调用</title><link>https://zhimoe.github.io/post/java-class-load-super-method-call/</link><pubDate>Fri, 01 Jan 2016 00:00:00 +0000</pubDate><guid>https://zhimoe.github.io/post/java-class-load-super-method-call/</guid><description>&lt;p&gt;最近非常火的一道携程面试题 Java&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a90d91"&gt;public&lt;/span&gt; &lt;span style="color:#a90d91"&gt;class&lt;/span&gt; &lt;span style="color:#3f6e75"&gt;Base&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;private&lt;/span&gt; &lt;span style="color:#000"&gt;String&lt;/span&gt; &lt;span style="color:#000"&gt;baseName&lt;/span&gt; &lt;span style="color:#000"&gt;=&lt;/span&gt; &lt;span style="color:#c41a16"&gt;&amp;#34;base&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;public&lt;/span&gt; &lt;span style="color:#000"&gt;Base&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#000"&gt;callName&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;public&lt;/span&gt; &lt;span style="color:#a90d91"&gt;void&lt;/span&gt; &lt;span style="color:#000"&gt;callName&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#000"&gt;System&lt;/span&gt;.&lt;span style="color:#836c28"&gt;out&lt;/span&gt;.&lt;span style="color:#836c28"&gt;println&lt;/span&gt;(&lt;span style="color:#000"&gt;baseName&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;static&lt;/span&gt; &lt;span style="color:#a90d91"&gt;class&lt;/span&gt; &lt;span style="color:#3f6e75"&gt;Sub&lt;/span&gt; &lt;span style="color:#a90d91"&gt;extends&lt;/span&gt; &lt;span style="color:#000"&gt;Base&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;private&lt;/span&gt; &lt;span style="color:#000"&gt;String&lt;/span&gt; &lt;span style="color:#000"&gt;baseName&lt;/span&gt; &lt;span style="color:#000"&gt;=&lt;/span&gt; &lt;span style="color:#c41a16"&gt;&amp;#34;sub&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;public&lt;/span&gt; &lt;span style="color:#a90d91"&gt;void&lt;/span&gt; &lt;span style="color:#000"&gt;callName&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#000"&gt;System&lt;/span&gt;.&lt;span style="color:#836c28"&gt;out&lt;/span&gt;.&lt;span style="color:#836c28"&gt;println&lt;/span&gt;(&lt;span style="color:#000"&gt;baseName&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;public&lt;/span&gt; &lt;span style="color:#a90d91"&gt;static&lt;/span&gt; &lt;span style="color:#a90d91"&gt;void&lt;/span&gt; &lt;span style="color:#000"&gt;main&lt;/span&gt;(&lt;span style="color:#000"&gt;String&lt;/span&gt;&lt;span style="color:#000"&gt;[]&lt;/span&gt; &lt;span style="color:#000"&gt;args&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#000"&gt;Base&lt;/span&gt; &lt;span style="color:#000"&gt;b&lt;/span&gt; &lt;span style="color:#000"&gt;=&lt;/span&gt; &lt;span style="color:#a90d91"&gt;new&lt;/span&gt; &lt;span style="color:#000"&gt;Sub&lt;/span&gt;(); &lt;span style="color:#177500"&gt;// 输出？&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>单例模式和序列化</title><link>https://zhimoe.github.io/post/java-singleton/</link><pubDate>Fri, 01 Jan 2016 00:00:00 +0000</pubDate><guid>https://zhimoe.github.io/post/java-singleton/</guid><description>&lt;p&gt;Java 单例模式的各种写法和序列化&lt;br&gt;
&lt;a href="http://www.hollischuang.com/archives/205"&gt;参考资料&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="饱汉式"&gt;饱汉式&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a90d91"&gt;public&lt;/span&gt; &lt;span style="color:#a90d91"&gt;class&lt;/span&gt; &lt;span style="color:#3f6e75"&gt;Singleton&lt;/span&gt; { 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;private&lt;/span&gt; &lt;span style="color:#a90d91"&gt;static&lt;/span&gt; &lt;span style="color:#000"&gt;Singleton&lt;/span&gt; &lt;span style="color:#000"&gt;instance&lt;/span&gt; &lt;span style="color:#000"&gt;=&lt;/span&gt; &lt;span style="color:#a90d91"&gt;null&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a90d91"&gt;private&lt;/span&gt; &lt;span style="color:#000"&gt;Singleton&lt;/span&gt; (){} 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	 &lt;span style="color:#a90d91"&gt;public&lt;/span&gt; &lt;span style="color:#a90d91"&gt;static&lt;/span&gt; &lt;span style="color:#000"&gt;Singleton&lt;/span&gt; &lt;span style="color:#000"&gt;getInstance&lt;/span&gt;() { 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	 &lt;span style="color:#a90d91"&gt;if&lt;/span&gt;(&lt;span style="color:#000"&gt;instance&lt;/span&gt; &lt;span style="color:#000"&gt;==&lt;/span&gt; &lt;span style="color:#a90d91"&gt;null&lt;/span&gt;) &lt;span style="color:#000"&gt;instance&lt;/span&gt; &lt;span style="color:#000"&gt;=&lt;/span&gt; &lt;span style="color:#a90d91"&gt;new&lt;/span&gt; &lt;span style="color:#000"&gt;Singleton&lt;/span&gt;(); &lt;span style="color:#a90d91"&gt;return&lt;/span&gt; &lt;span style="color:#000"&gt;instance&lt;/span&gt;; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;} &lt;span style="color:#177500"&gt;//饱汉式，使用时创建&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>理解 Gradle build 脚本结构与语法</title><link>https://zhimoe.github.io/post/gradle-buildscript/</link><pubDate>Fri, 01 Jan 2016 00:00:00 +0000</pubDate><guid>https://zhimoe.github.io/post/gradle-buildscript/</guid><description>&lt;p&gt;在看这个之前，希望你有用 ant 或者 maven 的使用经验，还有，对 groovy 的语法有一个简单的了解，不懂也没关系，下面会介绍。&lt;br&gt;
理解 gradle 文件的前提是理解一个重要的 groovy 概念 &amp;ndash; closure&lt;/p&gt;
&lt;h4 id="closure"&gt;closure&lt;/h4&gt;
&lt;p&gt;一个 closure 是一个定义在 groovy 文件中的{}代码块，这个代码块类似 js 中的匿名函数，它可以被赋值给变量，可以被调用，可以接收参数，还可以作为参数传递给别的函数。&lt;/p&gt;
&lt;p&gt;closure 中最重要的两个概念是委托对象和作为参数传递的语法格式（理解 gradle 文件很重要）。&lt;/p&gt;</description></item><item><title>Java 新手如何学习 SpringMVC 框架</title><link>https://zhimoe.github.io/post/how-do-newbie-learn-spring/</link><pubDate>Fri, 21 Aug 2015 22:02:50 +0800</pubDate><guid>https://zhimoe.github.io/post/how-do-newbie-learn-spring/</guid><description>&lt;p&gt;知乎回答备份，&lt;a href="https://www.zhihu.com/question/21142149/answer/52383396"&gt;原答案写于 15 年&lt;/a&gt;&lt;br&gt;
6,404 人赞同了该回答&lt;/p&gt;</description></item><item><title>你的半步，我的天涯</title><link>https://zhimoe.github.io/post/movie-review-hanamizuki/</link><pubDate>Fri, 09 Aug 2013 23:05:01 +0800</pubDate><guid>https://zhimoe.github.io/post/movie-review-hanamizuki/</guid><description>&lt;p&gt;好久没看过爱情电影了，当《山楂树》赚尽眼泪时我没有看，当《那些年》红遍两岸时，我没有看。因为没有选择，看了这部电影。&lt;/p&gt;
&lt;p&gt;《HANAMITSUKI》是这个名字，中文名是叫《花水木》。&lt;/p&gt;</description></item><item><title>写在 2012 岁末</title><link>https://zhimoe.github.io/post/goodbye-2012/</link><pubDate>Sun, 30 Dec 2012 23:50:24 +0800</pubDate><guid>https://zhimoe.github.io/post/goodbye-2012/</guid><description>&lt;pre&gt;&lt;code&gt; 时光如水，哗啦啦又是一年；
 岁月如歌，唏哩哩唱不成调。
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>小城</title><link>https://zhimoe.github.io/post/essay-small-town/</link><pubDate>Thu, 23 Jun 2011 16:53:00 +0800</pubDate><guid>https://zhimoe.github.io/post/essay-small-town/</guid><description>&lt;p&gt;我不喜欢西安，喜欢一个地方需要时间，而我还找不到理由。我不喜欢因为我仅仅是在这里生活。&lt;/p&gt;
&lt;p&gt;我喜欢玉山，因为那里有曾经的我。一个人走在街上，忽然就觉得这一幕好熟悉，分明有一天自己也是这么走着，那天我要去干什么？我已经记不得，甚至有可能是一种幻觉。&lt;br&gt;
一个能让自己产生幻觉的地方，必然是你留下了太多的记忆在那里，留下了太多的不舍和牵挂。&lt;/p&gt;</description></item><item><title>一点回忆</title><link>https://zhimoe.github.io/post/essay-memories-about-mother/</link><pubDate>Sat, 24 Jul 2010 21:58:19 +0800</pubDate><guid>https://zhimoe.github.io/post/essay-memories-about-mother/</guid><description>&lt;p&gt;我想这不是一篇回忆，而是心情。默存说我们年轻时很容易把自己的写作冲动当成一种写作才能。我自知没有如此高雅的才能。但也不想在某一天突然发现自己被时间推着往前走。阿七说长时间的寂寞是所有写作的滥觞。或许我的确是寂寞的吧！一个人走在无人的路上，往事就在街角处看见了……&lt;/p&gt;</description></item></channel></rss>