<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:webfeeds="http://webfeeds.org/rss/1.0">
  <title>叶町的存在证明</title>
  <icon>https://image.yeding.top/img/favicon-32x32.png</icon>
  <subtitle>世界并不美丽,但也而因此美丽</subtitle>
  <link href="https://www.yeding.top/atom.xml" rel="self"/>
  <link href="https://pubsubhubbub.appspot.com/" rel="hub"/>
  <link href="https://www.yeding.top/"/>
  <updated>2025-11-30T11:04:40.189Z</updated>
  <id>https://www.yeding.top/</id>
  
  <author>
    <name>叶町</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>

 <webfeeds:cover image="https://image.yeding.top/img/girl%20ending%20%20travel.png" />
 <webfeeds:icon>https://image.yeding.top/img/favicon-32x32.png</webfeeds:icon>
 <webfeeds:logo>https://image.yeding.top/img/favicon-32x32.png</webfeeds:logo>
 <webfeeds:accentColor>ffffff</webfeeds:accentColor>
 <webfeeds:related layout="card" target="browser"/>

  
  <entry>
    <title>境外用户速通云音乐</title>
    <link href="https://www.yeding.top/post/5f8507acb7c0/"/>
    <id>https://www.yeding.top/post/5f8507acb7c0/</id>
    <published>2024-11-10T14:10:26.000Z</published>
    <updated>2025-11-30T11:04:40.189Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>以前总觉得国内的app臃肿繁重，一堆按钮看着就让人烦躁不已。但是真正使用上了国外软件后，却总是找不到想要的功能，不仅广告比国内更甚，甚至会员收费价格也不菲。这不得不让我再次在移动软件使用上退回到国内的习惯上。当然这里并不是客观评价二者差异，而仅仅是作为本文的缘由，在此小小絮叨一番。</p><p>网易云虽然国内也算恶名昭著，但相比AppleMusic和spotify它拥有更多的资源以及推荐算法（个人认为），在我使用了一段时间后面两者后，仍然无法适应后者的使用逻辑。于是毫不犹豫重新返回前者的怀抱。</p><p>那么问题就来了，类似于动画和音乐这类流媒体资源，在万恶的版权法下根据不同区域分属了不同的公司。简而言之就是大陆以外的用户是无法收听网易云只在大陆拥有版权的音乐的。这下不就完蛋了吗？但是我们毕竟身处在一切都是数字化虚拟的互联网中。自然有办法化解这一困境。</p><h1 id="PC直装UnblockNeteaseMusic"><a href="#PC直装UnblockNeteaseMusic" class="headerlink" title="PC直装UnblockNeteaseMusic"></a>PC直装<strong>UnblockNeteaseMusic</strong></h1><p>这里又得请出万能的github网友了。<strong>UnblockNeteaseMusic</strong>是一个用于解锁网易云音乐客户端变灰歌曲的node后端服务（原理自己去查），不仅使用方法简单，其可扩展性也相当高。因为官方文档有些绕口，这里简述一下最简单的使用方法。</p><h2 id="1-下载可执行的exe文件"><a href="#1-下载可执行的exe文件" class="headerlink" title="1.下载可执行的exe文件"></a>1.下载可执行的exe文件</h2><p>下载地址 <a href="https://github.com/UnblockNeteaseMusic/server/releases">github</a><br>注意要下载自己的操作系统和CPU类型对应的文件。</p><p><img src="https://image.yeding.top/img/NeteaseMusic1.png"></p><h2 id="2-打开exe文件"><a href="#2-打开exe文件" class="headerlink" title="2.打开exe文件"></a>2.打开exe文件</h2><p>只要见到这个界面，就算启动成功。注意这里的0.0.0.0是指代的本机地址。</p><p><img src="https://image.yeding.top/img/NeteaseMusic2.png"></p><h2 id="3-打开网易云音乐设置代理"><a href="#3-打开网易云音乐设置代理" class="headerlink" title="3.打开网易云音乐设置代理"></a>3.打开网易云音乐设置代理</h2><ul><li>大致步骤如下。记得设置为HTTP代理。服务器设置为127.0.0.1（本机），而不是0.0.0.0。端口设置为8080。</li></ul><p><img src="https://image.yeding.top/img/NeteaseMusic2_2.png"></p><ul><li>点击测试按钮，出现下图字样即为设置成功。</li></ul><p><img src="https://image.yeding.top/img/NeteaseMusic3.png"></p><h2 id="4-刷新歌曲列表，享受音乐！"><a href="#4-刷新歌曲列表，享受音乐！" class="headerlink" title="4.刷新歌曲列表，享受音乐！"></a>4.刷新歌曲列表，享受音乐！</h2><p>如下图，所有置灰歌曲已被解锁，看着网友有趣的评论，享受这没有广告的音乐世界吧！（<del>点名批评spotify</del>）</p><p><img src="https://image.yeding.top/img/NeteaseMusic4.png"></p><blockquote><p>现在该方法仅支持3.0以下版本解锁</p></blockquote><h1 id="使用Docker一步到位"><a href="#使用Docker一步到位" class="headerlink" title="使用Docker一步到位"></a><strong>使用Docker一步到位</strong></h1><p>前文提到的方法固然简单直接，但是有一个小小的问题——每次启动网易云都必须先启动服务，而且还不得不保持那个丑不拉几的命令行窗口在窗口栏运行。实在是非常的麻烦，非常的原始（）。</p><p>但是先别急，<strong>UnblockNeteaseMusic</strong>本体只是一个node服务，这也就意味着它可以用任何方式被任何软件启动——比如直接挂载一个服务器上通过远程访问。但这毕竟有点小题大做，本末倒置——本来就只是为了方便听歌，难道还要专门买一个服务器不成？</p><p>所以接下来就介绍我目前使用的方案——使用Docker容器开机启动服务。</p><h2 id="1-下载一个Docker"><a href="#1-下载一个Docker" class="headerlink" title="1.下载一个Docker"></a>1.下载一个Docker</h2><p>地址为：<a href="https://www.docker.com/">Docker</a>，直接下载带Desktop的版本就好。</p><p><img src="https://image.yeding.top/img/NeteaseMusic6.png"></p><h2 id="2-安装Docker，下载镜像"><a href="#2-安装Docker，下载镜像" class="headerlink" title="2.安装Docker，下载镜像"></a>2.安装Docker，下载镜像</h2><p>安装就不多说，一路默认设置过去就行了。接着打开客户端，点击<strong>底部_Terminal</strong>字样按钮，打开命令行窗口。（直接使用PowerShell也可）</p><p><img src="https://image.yeding.top/img/NeteaseMusic7.png"></p><p>运行命令：</p><p><code>docker run -d -p 8080:8080 pan93412/unblock-netease-music-enhanced</code> </p><p><code>8080:8080</code> 的冒号后可以改为自己想要绑定的本机端口号。</p><p>正常会如下图显示运行中的服务端口。</p><p><img src="https://image.yeding.top/img/NeteaseMusic8.png"></p><h2 id="3-设置服务开机自启"><a href="#3-设置服务开机自启" class="headerlink" title="3.设置服务开机自启"></a>3.设置服务开机自启</h2><p>Docker默认开机自启所以可以不用管，如果没有自启动把下图选项勾上就行。</p><p><img src="https://image.yeding.top/img/NeteaseMusic9.png"></p><p>服务自启动则需要对容器的名称单独设置，运行命令:</p><p><code>docker update --restart=always 容器名称</code></p><p>这里的<code>容器名称</code>既可以在下图的界面直接获得，也可以通过<code>docker ps</code> 命令的NAMES一栏查看当前服务的名称。</p><p><img src="https://image.yeding.top/img/NeteaseMusic10.png"></p><p>这里的名称是condescending_borg，所以直接执行<code>docker update --restart=always condescending_borg</code> 即可，当然如果不喜欢也可以使用命令<code>docker rename 原容器名称 新容器名称</code>修改容器名称。</p><p>返回结果为容器名称即为成功，可以尝试重启系统检验一下。</p><h2 id="4-打开网易云音乐设置代理"><a href="#4-打开网易云音乐设置代理" class="headerlink" title="4.打开网易云音乐设置代理"></a>4.打开网易云音乐设置代理</h2><p>同第一种方法<a href="#3-%E6%89%93%E5%BC%80%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90%E8%AE%BE%E7%BD%AE%E4%BB%A3%E7%90%86">打开网易云音乐设置代理</a>，注意这里如果自己把8080改成了别的端口，在网易云的设置界面也得改成一样的端口号。</p><h2 id="5-开始享受！"><a href="#5-开始享受！" class="headerlink" title="5.开始享受！"></a>5.开始享受！</h2><p>同上<a href="#4-%E5%88%B7%E6%96%B0%E6%AD%8C%E6%9B%B2%E5%88%97%E8%A1%A8%EF%BC%8C%E4%BA%AB%E5%8F%97%E9%9F%B3%E4%B9%90%EF%BC%81">享受音乐</a>。</p><p>使用这种方法的好处在于，至少PC端本地可以完全无缝使用网易云音乐，而且由于Docker即便开机自启动也不会弹出窗口，可以说完全没有感觉自己启动了它。这下就再也不为看到那黑魆魆的命令行窗口而心烦意乱了。</p><p>当然这个方法的痛点，由于是PC开机自启，移动端便只能在PC运行状态下，通过访问局域网PC地址的端口号解锁歌曲。如果要解决这一痛点，则要么在移动端本体上运行服务，要么像前文提到那样使用远程服务器。当然我个人则使用了更加简单直接的办法。（<del>开VPN</del>）</p><h1 id="结语"><a href="#结语" class="headerlink" title="结语"></a>结语</h1><p>以上是两个方法只是个人一个小小的尝试，比如第二种Docker容器启动服务，其实也可以不用那么麻烦，直接用node命令将代码注册成 Windows 服务，缺点就是更新版本比较麻烦……此外也有很多其他衍生项目提供了诸如其他代码版本，其他系统和第三方播放器插件等等方案。但那些我也没有太了解，就略过不语了。</p><p>最后小结一下。虽然在各类博客上，很多博主会用NAS和一套更加完善的管理方案处理自己的音乐资源。但我是那种即便自己去买了专辑，甚至找创作者签了名，也会把本体放在一边直接使用在线流媒体去听歌的类型。说到底我没有松鼠党屯东西的习惯，能在线使用的东西也会尽量使用在线的服务（比如动画）。所以这就是我现在已经比较满意的听歌方案了，就跟烧耳机一样，我在尝试了复杂的东西之后总是会厌倦，最后还是会觉得，简单就是最好的了！</p>]]></content>
    
    
    <summary type="html">音乐无国界，但是版权有</summary>
    
    
    
    <category term="技术" scheme="https://www.yeding.top/categories/%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="node" scheme="https://www.yeding.top/tags/node/"/>
    
    <category term="Docker" scheme="https://www.yeding.top/tags/Docker/"/>
    
    <category term="音乐" scheme="https://www.yeding.top/tags/%E9%9F%B3%E4%B9%90/"/>
    
  </entry>
  
  <entry>
    <title>驳游戏界常识两则（上）</title>
    <link href="https://www.yeding.top/post/3162f1f36d19/"/>
    <id>https://www.yeding.top/post/3162f1f36d19/</id>
    <published>2024-05-19T12:54:15.000Z</published>
    <updated>2024-11-10T13:44:35.467Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>作为一个涉猎还算广泛的游戏玩家，也作为机核不算短时间的用户，笔者特别喜欢机核上投稿不限题材种类，欣赏着各类人士在同一平台发表自己的见解。但是评论区总会有一些重复的声音，用他们看来是常识的东西去反对文章作者的见解。但游戏界真的存在所有人都一致认同的“常识”吗？笔者不以为然，因此想借此文章，针对一些在玩家社群里屡见不鲜的观点，以自己浅薄的看法，抛砖引玉，引起大家一点小小的思考。</p><h2 id="“鄙视链”"><a href="#“鄙视链”" class="headerlink" title="“鄙视链”"></a>“鄙视链”</h2><p>主机&gt;PC,单机&gt;手游,买断&gt;内购……游戏圈内的鄙视链现象相比其他体裁的文娱作品来说更为突出，也更为混乱。笔者就经常在机核手游的文章评论区看到“手游都是垃圾”，也在有关xgp消息的评论区下看到“订阅制会毁了游戏的未来”。似乎对于那些发表评论的用户而言，单机就是最高峰，买断就是最完美的消费形式。</p><p>“鄙视链”从何而来？</p><p>但是为什么会有“鄙视链”呢？这当然不是游戏所特有的现象，文学上有“科幻小说不属于文学”，电影上也有“超英都是没价值的爆米花电影”的说法。如果是从单一的角度来看，科幻小说也似乎绝大多数文笔不如传统文学，超英也明显掺杂了浓重的商业要素。但，这就证明他们不够优秀么，不能让人感动、思考和带来力量么？</p><p>相比答案是显而易见的。但是笔者仍然要追问，“鄙视链”现象究竟是从何而来？为什么我们会认为某些事物高于另外一些？这就涉及到心理学，人类学等人文领域范畴。笔者才疏学浅，在此主观的发表自己的看法。事实上，在一套评价体系里，事物的确可以有高低之分，诺贝尔文学奖至今也没有颁给过科幻小说。但人活着，从来不是靠的一套僵死的，固定的体系。人是灵活而自由的，有权利选择自己喜欢的任何事物。与此相对，资本则喜欢更细单一、量化、可控的事物，这样才能符合市场经济体制，进行大规模工业化的生产。而资本是如何实现这一点呢，则是靠的人类分享欲。同理心的存在使得人总是需要他人的理解，总是需要分享自己所喜爱的事物，达成某种“共通”的认识，而这其中就存在资本介入的空间。就像现在无处不在的广告“景观”，它们无时不刻暗示着你“不加入我们就会落伍”。资本通过对媒体的控制，介入了玩家对相互理解的需求，营造出一个虚假的“共同体”。这一点上，是二者正好悄然的适配。TGA成为玩家群体追求共同体的“宗教仪式”，在博德之门夺得年度游戏之后，一时间淘宝的博德之门销量暴增，但同时博德之门也在调查问卷中成为了“弃坑率”最高的游戏之一<sup id="fnref:1"><a href="#fn:1" rel="footnote"><span class="hint--top hint--error hint--medium hint--rounded hint--bounce" aria-label="参考数据统计网站HowLongToBeat [Most Backlogged Games of 2023](https://x.com/HowLongToBeat/status/1736085028390731788)">[1]</span></a></sup>。就如同莫言获得诺贝尔奖后，其作品从无人问津瞬间变成炙手可热，最后却仍摆脱不了被大多数人放在书架上吃灰的结局。</p><p>另一方面，喜好的反面自然就是厌恶。一个人自然而然接近喜爱的事物，远离讨厌的事物。而在一个共同体下的“教徒们“，自然也会排斥共同体之外的事物，党同伐异。这就是为什么鄙视链现象其实是普遍存在的原因。但在游戏业界里为什么尤为突出呢？笔者认为可能有几点 一</p><p>由于对这一共同体的崇拜而产生的拜物教现象，会排斥于不符合“共同体”的事物。而在资本市场主导下，呈现出了越有钱的商品越被推崇的倾向。就像被认为是代表游戏最先进方向的3a游戏，其在定义上其实只是意味着高昂的游戏制作成本。主机玩家经常以“免费游戏才是最花钱的”这类理由拒绝氪金手游，但实际上恰恰内购制手游的绝大多数玩家花费并不如需要每隔一段时间买新游戏的主机玩家。能消费648的只是极少数群体而已，能适配大多数群体才是中国成为手游市场的优裕土壤之一的原因<sup id="fnref:2"><a href="#fn:2" rel="footnote"><span class="hint--top hint--error hint--medium hint--rounded hint--bounce" aria-label="参考第三方机构报告 [中国主机游戏及五年预测报告](https://nikopartners.com/china-console-games/)">[2]</span></a></sup>。反而主机游戏，尤其是前文提到的3a游戏不论是设备支出还是游戏价格普遍来说远比其他游戏类型昂贵。笔者认为这也是为什么TGA近年的独立游戏会被诟病的问题，因为玩家意识到独立游戏其实是个商业概念，在TGA这种评价体系下本身就没法定义什么才叫“优秀”的独立游戏。</p><p>虽然笔者试图分析并抨击了这类现象，但并不意味着完全否定其源头本身，TGA的确让很多玩家接触了不同的游戏作品，无论是类型还是思想上都大大拓宽了边界，而主机玩家因为需要氪金的理由拒绝手游也是因为他们更希望一次性体验完整的游戏内容，而不是只能游玩残缺版本。笔者在自身游玩手游的过程中，也时常感受到氪金带来的游戏体验差异会给游戏内容设计上带来相当大的限制，以至于经常遗憾其某些地方的妥协。但同样单机游戏，比如3a开放世界也会有只是在“填充罐头内容”的诟病。在多元的评价体系下，所有游戏都有其值得被赞扬的地方，也有会被批判的方面。我们固然可以在一个准则下将所有作品分个高低，无论是获奖等级，大众评分，游戏成本，销量，甚至于游戏售价。但我们可能会喜欢一个游戏仅仅只是在游戏的时间里，获得了一些无可替代的感受，哪怕只是某一瞬间，也足以使得自己发现这款游戏是多么棒，而关于它为什么棒，则是后附的理由了。反之，讨厌一款游戏同样如此。</p><p>并且，如果从游戏发展历史角度来看，其实游戏的硬件载体和消费方式一直都在改变，从街机到家用机再到个人多媒体设备（PC和手机），从投币到买断到月卡到内购。各个平台，各种消费形式都诞生了许多能在游戏史上留下自己名字的游戏，当然在此其中仍有游戏经久不衰，至今都被相当数量的玩家群体所喜爱。从历史发展角度来看，游戏的载体本身并没有孰高孰低，只有兴盛和衰亡。但既然现在仍旧有不同的载体继续存在着，就证明它们对于游戏玩家大众而言都有其存在的价值。</p><p>笔者真正想说的是，每个人都可以有自己讨厌某款游戏，某类平台，某种消费形式等等事物的理由，但是如果将其扩展到全体的常识，则需要反思自己奉行的准则，真的是放之四海皆准的吗？会不会存在自身的某种狭隘，某种偏见和傲慢呢？我们可以沉浸在塞尔达传说精妙的游戏设计，为林克塞尔达的感情倾心。也同样可以为霜星的离去感到悲痛，研究明日方舟各种关卡极限通关的可能性。又或者在线上线下打打音游或格斗，讨论如何提高自己水平，哪首铺子有逃课方法，哪个角色如何对策。又或者只是在孤独难耐之时，戴上沉重的头盔，进入虚拟的天地，仰望美丽夜空，倾听周遭私语不知不觉酣然入睡。这难道不就是游戏世界带给我们的魅力吗？</p><p>我想只要你因为某一点喜爱上了某款作品，为此感受到它的价值。那对于你来说，它就是最棒的游戏。如果有一天，你找到了能和你为相同作品醉心的人，一起分享着游戏带给你们的一切，那就再美妙不过了吧。无论如何，我们都是共同拥有着名为“游戏玩家”身份的人类啊。<div id="footnotes"><hr><div id="footnotelist"><ol style="list-style: none; padding-left: 0; margin-left: 40px"><li id="fn:1"><span style="display: inline-block; vertical-align: top; padding-right: 10px; margin-left: -40px">1.</span><span style="display: inline-block; vertical-align: top; margin-left: 10px;">参考数据统计网站HowLongToBeat <a href="https://x.com/HowLongToBeat/status/1736085028390731788">Most Backlogged Games of 2023</a><a href="#fnref:1" rev="footnote"> ↩</a></span></li><li id="fn:2"><span style="display: inline-block; vertical-align: top; padding-right: 10px; margin-left: -40px">2.</span><span style="display: inline-block; vertical-align: top; margin-left: 10px;">参考第三方机构报告 <a href="https://nikopartners.com/china-console-games/">中国主机游戏及五年预测报告</a><a href="#fnref:2" rev="footnote"> ↩</a></span></li></ol></div></div></p>]]></content>
    
    
    <summary type="html">下篇敬请期待</summary>
    
    
    
    <category term="杂谈" scheme="https://www.yeding.top/categories/%E6%9D%82%E8%B0%88/"/>
    
    
    <category term="游戏" scheme="https://www.yeding.top/tags/%E6%B8%B8%E6%88%8F/"/>
    
    <category term="理论" scheme="https://www.yeding.top/tags/%E7%90%86%E8%AE%BA/"/>
    
  </entry>
  
  <entry>
    <title>从RSS开始构筑个人信息流</title>
    <link href="https://www.yeding.top/post/eeb30522b71f/"/>
    <id>https://www.yeding.top/post/eeb30522b71f/</id>
    <published>2023-09-09T04:47:08.000Z</published>
    <updated>2023-09-09T04:47:08.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><h2 id="什么是RSS"><a href="#什么是RSS" class="headerlink" title="什么是RSS"></a>什么是RSS</h2><p>生活在数字时代，我们时常被各类信息推送包围：微博、朋友圈的动态；今日头条，贴吧的新闻时事推送；淘宝，京东的降价信息等等。可以说我们的世界已经被信息包围了，但这些信息从来没有掌握在我们自己手里。它们都被掌握在公司，媒体，更是掌握把人的全部喜好量化成数字再一个个精准解剖的大数据手里。我们更像是嗷嗷待哺的婴儿，只是张着嘴等着信息的甘乳流入喉咙，全然不知里面到底是什么成分。</p><p>那么有没有一种方法，能够让我们颠覆这一现状，重新掌握自己信息的主动权呢？很遗憾地说，有但是不完全有。虽然我很希望做出一个绝对肯定的回答，但期待一个老古董的玩意去完美解决这一问题（<del>对大部分人来说并不构成问题</del>）是不现实的。我在这里介绍的，只是问题的部分解决方案——文章推送。</p><p><strong>RSS</strong>（全称：Really Simple Syndication，中文名：简易信息聚合）是一种消息来源格式规范，用以聚合经常发布更新数据的网站，例如博客文章、新闻、或音频的网摘。也许有人是从播客（Podcast）那边了解到这一概念。但它一开始最基本的功能其实是推送文章。虽说其实基于这一规范推送什么都可以，包括上面所诉的一切信息种类，但因为种种现实的问题（<del>万恶的xx社会</del>），目前比较广泛的似乎也只有播客和文章两类。本文主要的内容是后者——如何用RSS构建自己的个人文章推送流。</p><h2 id="寻找RSS"><a href="#寻找RSS" class="headerlink" title="寻找RSS"></a>寻找RSS</h2><p>不知道你在浏览一些以文章推送为主要定位的网站时，在最底下的信息栏有没有看到过这个图标。</p><p><img src="https://th.bing.com/th/id/OIP.zZHKn3Q9kd74foDeNAHtsAAAAA?pid=ImgDet&rs=1"></p><p>这便是个类似于雷达或者wifi的图标便是RSS的标志，当然一部分网站也会直接以RSS的字样显示：</p><p><img src="https://image.yeding.top/img/rss_scrennshot6.png" alt="机核网的RSS入口" title="机核网RSS入口"></p><p>当点开这一标志后，你可以看到一个xml格式的内容。</p><p><img src="https://image.yeding.top/img/rss_scrennshot7.png" alt="机核网的rss文本" title="机核网的rss文本"></p><p>你可能会觉得：难道我需要这么大一段文字才能使用RSS吗？当然不是，我们需要的只是获取这一文本的链接，即最上头显示的URL：<a href="https://www.gcores.com/rss" title="https:&#x2F;&#x2F;www.gcores.com&#x2F;rss">https://www.gcores.com/rss</a>。</p><p>但另一个问题又来了，万一找不到这个入口怎么办？一般情况下，网站的RSS都会放在主网站域名后”&#x2F;rss”、”&#x2F;atom”、”&#x2F;feed”的路径上，或者也可以直接用搜索引擎查找所需网站的RSS。但是如果实在没有找到，又或者网站根本就没有提供RSS怎么办？这里就要祭出一个神器——<a href="https://github.com/DIYgod/RSSHub-Radar">RSSHub Radar</a>。</p><p>这是一个作为浏览器插件开发的RSS链接嗅探器，同时在它还支持用户自己制作并上传RSS以覆盖更多并未提供RSS的网站，效果如下：</p><p><img src="https://image.yeding.top/img/rss_scrennshot8.png" alt="最上面是官方的RSS链接，其下是用户自己制作的RSS" title="最上面是官方的RSS链接，其下是用户自己制作的RSS"></p><p><img src="https://image.yeding.top/img/rss_scrennshot9.png" alt="哪怕是哔哩哔哩这种没有提供RSS的网站，也同样可以使用插件订阅" title="哪怕是哔哩哔哩这种没有提供RSS的网站，也同样可以使用插件订阅"></p><p>当然除此之外还可以使用其他类似插件，或者油猴脚本，甚至直接用RSS阅读器内的资源搜索也是完全没问题的，后者在下文有介绍。</p><h2 id="使用RSS"><a href="#使用RSS" class="headerlink" title="使用RSS"></a>使用RSS</h2><p>有了链接只是第一步，我们还得使用这些链接，订阅网站推送的内容。几乎所有平台都有RSS相关的订阅浏览工具，公司开发或个人开发，开源或闭源，客户端（cs）或浏览器(bs)，五花八门。有需要的可以去寻找自己所需平台上的rss聚合器，这里说下我自己的使用经历和一些经验。</p><p>首先肯定是windows平台啦（因为我既买不起mac，又不会用linux）。由于我并不想电脑又多一个“Chromium”内核的软件，所以我选择了浏览器插件的形式。而当时在墙内的我又不想太过麻烦地天天爬梯子看文章，于是我的选择就相当有限了。但有限并非代表不能找到好的。</p><h3 id="Feedbro"><a href="#Feedbro" class="headerlink" title="Feedbro"></a>Feedbro</h3><p>Feedbro是一个浏览器插件，支持所有主流浏览器。大致界面如下：</p><p><img src="https://image.yeding.top/img/rss_scrennshot4.png"></p><p>它支持各种常见的功能：收藏，已读，文件夹分类，排序，导入导出，过滤规则等等，在如下的界面输入RSS链接即可订阅文章，但是不直接输入URL也没有关系，输入网站名，它也可以搜索其相关的RSS：</p><p><img src="https://image.yeding.top/img/rss_screenshot1.png"></p><p>它甚至还可以切换成中文。</p><p><img src="https://image.yeding.top/img/rss_screenshot2.png"></p><p>教程地址：<a href="https://chenyan98.cn/2888.html" title="https:&#x2F;&#x2F;chenyan98.cn&#x2F;2888.html">https://chenyan98.cn/2888.html</a></p><p>可以说它已经能满足绝大部分人的需求，而且还完全不需要翻墙，唯一的问题可能就是没有账号系统支持跨平台跨设备同步。对于多平台用户来说只能通过导入导出OPML（包含所有订阅链接）文件来部分解决。</p><p>地址：<a href="https://nodetics.com/feedbro/" title="Feedbro - RSS Feed Reader with built-in Rule Engine (nodetics.com)">Feedbro - RSS Feed Reader with built-in Rule Engine (nodetics.com)</a></p><h3 id="Feedly"><a href="#Feedly" class="headerlink" title="Feedly"></a>Feedly</h3><p>Feedly是历史悠久的老牌RSS聚合器，与之相对的另外一个大牌是inoreader。由于我基本没怎么使用过后者，这里主要讲下前者。</p><p><img src="https://image.yeding.top/img/rss_screenshot3.png"></p><p>Feedly的界面设计非常棒，以绿色作为基调，清新自然。同时Feedly支持收藏，已读，文件夹分类，导入导出OPML等功能，而且它的收藏支持文件夹分类，支持标记特定订阅源，甚至还可以对某一订阅源提供相关推荐等。可以说几乎已经满足所有需求。</p><p>唯一需要特别注意的两个缺点：没有中文支持，搜索文章需要会员。如果对这两点感到敏感的用户可以选择inoreader，它不仅支持中文，而且免费功能更加强大齐全。当然它们有一个共同的缺点：得翻墙。</p><p>地址：<a href="https://feedly.com/" title="Stay ahead of the curve with Feedly AI">Stay ahead of the curve with Feedly AI</a></p><h3 id="知微"><a href="#知微" class="headerlink" title="知微"></a>知微</h3><p>其实比起网页版，我更喜欢平常用手机刷Rss，由于一些特殊原因（主要是需要绿色软件),我基本选择的都是安卓手机。安卓端有个相当著名的RSS应用叫FeedMe。但是我却从没用过，因为接下来这款app已经完全满足了我的日常需求。</p><p><img src="https://image.yeding.top/img/rss_scrennshot5.jpg"></p><p>设计上偏向于简洁，部分UI逻辑可能与常规的app相悖，这点需要一定时间习惯。使用上，它也包含上述绝大部分功能，搜索文章也是免费的，其他就不多说了，亲自探索是最好的。它最最突出的优点便是——开发者是中国人。（<del>是中国人就给我用国产</del>）。因此app里内置了许多在国内环境下比较好用的功能，比如通过代理爬取rss文本，同时它既有本地端，也可以通过账号联动获取包括上述两家（Feedly，inoreader）在内的同步推送，相当地便利。另外在设置里还可以看到作者的qq群，如果对产品有任何不满，也可以即时在qq群内反馈，相比于一些公司商业产品或者github上的开源应用，这无疑更加快捷方便。</p><p>地址：<a href="https://github.com/wizos/loread" title="GitHub - wizos&#x2F;loread: RSS Android client，support Inoreader, Feedly, TinyTinyRSS, Fever。">GitHub - wizos&#x2F;loread</a></p><h2 id="享受RSS"><a href="#享受RSS" class="headerlink" title="享受RSS"></a>享受RSS</h2><p>这篇文章到此我只写了短短2k字，但是并不是说关于RSS就只能讲这么多，上面的每一个小地方，比如怎么使用RSSHub Radar制作上传RSS链接，不同RSS阅读器的细微差异有哪些，又如何使用这些产品更好地享受RSS，怎么用RSS去订阅博客视频等等，每一个展开来讲都都可以变成长篇大论。但一方面我能力有限，另一方面这篇文章初衷只是为了推荐（<del>安利别人订阅我的RSS</del>）。所以就先告一段落，有时间再修改或者写别的吧。</p><p>最后再次祝愿大家享受自己用RSS构筑的信息生活！</p><h2 id="部分参考资料"><a href="#部分参考资料" class="headerlink" title="部分参考资料"></a>部分参考资料</h2><hr><p><a href="https://sspai.com/post/56391">高效获取信息，你需要这份 RSS 入门指南</a></p><p><a href="https://sspai.com/post/56079">RSSHub Radar — 订阅一个 RSS 源不应该这么难</a></p><p><a href="https://sspai.com/post/59501">不那么完美的 RSS 订阅方案 — feedly + RSSHub Radar</a></p><p><img src="https://image.yeding.top/img/starrail.jpg" alt="三月七好看捏"></p>]]></content>
    
    
    <summary type="html">一篇关于RSS的安利文</summary>
    
    
    
    <category term="技术" scheme="https://www.yeding.top/categories/%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="RSS" scheme="https://www.yeding.top/tags/RSS/"/>
    
    <category term="Feed" scheme="https://www.yeding.top/tags/Feed/"/>
    
  </entry>
  
  <entry>
    <title>人无法成为自己以外的存在</title>
    <link href="https://www.yeding.top/post/c0412b6e4861/"/>
    <id>https://www.yeding.top/post/c0412b6e4861/</id>
    <published>2023-08-07T05:24:21.000Z</published>
    <updated>2023-08-07T05:24:21.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>开始写博客的理由有很多：学编程的都得有个博客；在互联网上搭建一个属于自己的网站是一件很酷的事；写博客可以反思自己的知识和思想，锻炼文字能力等等，但也许事情没有那么复杂，促使我开始写博客，又几乎不更新博客的理由只有一个——跟风。</p><p>我说的不是那种为了迎合主流文化的潮流，害怕被社会抛弃而不得不进行的自我改造，而是我们基本都会有的一个想法，那便是成为他人，准确点来说是成为自己憧憬的某个对象，正所谓之“长大后我就成为了你”，又或者是“人的欲望本质是他人的欲望”。我开始写博客也是憧憬着，欲望着，觉得自己只要这么做，就一定能成为技术很厉害的大佬，写出让人受益的文章。</p><p>然而，事与愿违。我比起写技术类文章，更喜欢写另外一些杂七杂八的东西，游戏感想啦，耳机史总结啦，甚至还有各种自娱自乐，只为了满足我自己而创作出的小说（这个自然是不可能放到博客上的，基本都放在lofter了）。我确实也希望别人来关注我的博客，为此还查找相关的方法去提升SEO（搜索引擎优化）之类的，一开始也确实写了一些技术文章上去，但终究是不能坚持到底。</p><p>自从毕业也过了两年了，原本想每年都写一篇总结啥的，但也总是开了个头就写不下去了。回顾自己度过的时光，好像经历了很多，但实际能写出来的寥寥无几，究竟是学了什么新技术知识，熟练了什么编程技巧，又或者是看了什么书玩了什么游戏听了什么歌。要是真把它们一一写出，一定是乏味至极的流水账吧。但是，也必须是到舍弃一定洁癖的时候了。</p><h2 id="人随时会迎来死亡"><a href="#人随时会迎来死亡" class="headerlink" title="人随时会迎来死亡"></a>人随时会迎来死亡</h2><p>「忽然之间，人就简单地死掉了。只要死了，便是结束。再伟大的人，只要死了就到此为止。无论是怎样地努力，丰富的经验，伟大的主义主张，在死面前都是何等地无力。领悟到这一点时，又该选择何种生存方式才好呢？」—出自《对你说再见》。我大概是在刚工作的时候，也就是21年的时候玩到了这部作品，身为三大毒电波之一，它以一个独特的视角展示了这个社会的病态和荒诞。活在这个社会的人类不得不无视这种荒诞和疾病来得以活着，又或者是遗忘这些再也普通不过的常理。</p><p>没错，即便人类从自然界进化到如今的现代生活，那些原本威胁我们的灾害也似乎慢慢远去，但事实上我们真的可以忽视死亡吗？这大概不是一个能够去质疑的事物，每个人应该都心知肚明——只要活着，就必须面临死亡。这既是人根本性的焦虑，更是人活着的根基。只有面临死亡，人才能真正地活着。</p><p>以上是我瞎掰的，但我本身却是实实在在考虑着死亡而活着。与其说此刻的我还活着，不如说我暂时还没有死掉，还没那么想要死掉。这或许是一种逃避，一种面对社会大他者的逃避，一种借由自杀幻想逃离符号系统来实现的享乐机制。那又怎么样呢？大他者本来就不存在！与其考虑要怎么活得像个成功者，不论是对于大他者还是小他者，对于任何不属于自己的一切。还是从自身出发考虑死前要干点什么来得自在，反正所有人本来在前往死亡的路上。</p><p>于是我高考结束后，因为不想学高中知识选了计算机，毕业时既考不动研也卷不进大厂更不愿意考公务员，就简单进了个it公司，到现在明知是相差无几的地狱，也依然选择了出国。这绝非是我有什么崇高的理想，而只是不得已为之，为了实现了我死前想干的一些事情罢了。那些努力、经验、主义主张，于我而言也是何等地无力，两方都同样地无力。</p><h2 id="没有形状的话语已经不需要了"><a href="#没有形状的话语已经不需要了" class="headerlink" title="没有形状的话语已经不需要了"></a>没有形状的话语已经不需要了</h2><p>开始听v家大概是初三，到现在也算是有了十年。虽然我自己对此毫无感慨，在其中对它的感情也在不断地改变，大概并不能算是那种从始至终一心一意的热爱。doriko有首名曲叫《虽然歌声无形》，很早之前的我听到这首歌，应该会是感动地落泪吧。实际上我确实有过特别爱洛天依，特别爱初音的那个时候，不对爱洛天依绝对比爱初音多吧，那时候还可买了不少专辑。也有过听着《献给雅音宫羽》潸然泪下的高中夜晚。可是人是会变的，又或者这种改变也是其“不变”的表象，表象之表象。</p><p>总而言之，现在的我仍然买了一张魔法未来的票，但其与18年的未来有你，又或是14年初次在b站点开洛天依的《星屑碎片》pv的心情，应该是大有不同。我的确每天还是会听术曲，大部分是日语，偶尔是中文，又听很多术相关团体（比如zutomayo）的歌。但是我不再像高中时会在网站激烈发表自己对洛天依的喜爱。也不再毫不犹豫就定下未来有你最贵的门票，在那里买了不少周边（有的现在都没拆）。现在的我，只是买了张普通的魔法未来的票，也想着应援棒好贵啊，能不能不买。（）</p><p>但从另一个方面，我从只是网站上刷播放量，到开始入手专辑，又到现在翻译了一些歌曲的歌词来看。也许还是爱着的吧，我猜。尽管“没有形状的话语已经不需要了”，我也渐渐失去了原来对于它们的触动之情。心里也会有“演唱会不就是粉丝经济么”“出这么多周边可真会圈钱”“商曲质量这么好果然平常是偷懒”诸如此类的想法。</p><p>对于我来说他们到底意味着什么呢，初中的我深夜听着歌，看着动漫，心想地是“我被它们拯救了啊”。而到了高中，它们也没有任何可能去挽回我那糟糕的成绩，到最后只能成为无力的享乐，变成了我写在笔记本上的“虽然有很多喜欢的，但要是现在死掉也没什么好可惜的。”而大学后参加了演唱会，如今又赴身日本的我，自然是没有感到任何梦想实现的美妙，只是想着“果然如此”地无可奈何地叹息。</p><p>不成形的话语，确实是毫无用处，但又不舍得丢弃呢，现在的我。</p><h2 id="不要向欲望让步"><a href="#不要向欲望让步" class="headerlink" title="不要向欲望让步"></a>不要向欲望让步</h2><p>即便如此，人也必须追求欲望。原初的欲望的没有对象的，但在社会生存的我们已然丧失了那份来自自然的原乐，所以不得不将那份不定型的欲望对象化，并持之以恒地追求。这其实和那句俗话——“努力的过程比结果更重要”其中蕴含的道理不谋而合。</p><p>所以哪怕是知道在实现目标（即便是妥协的目标，但又大多数人又真的可以不对世界和自己妥协吗？）之后是空无一物，也必须去追求，而且是可持续性的追求，终其一生都在路上的追求。虽说常有新闻报道说现在社会是一个低欲望社会，人们都不愿奋斗不想努力甚至厌恶结婚生子。但实质我认为现代社会不是人的欲望消缺了，反而是它的反面——社会对人所要求的太多了。这是一个消费社会，一切的一切都需要消费来实现，换言之钱就是万能的，不存在它实现不了的事（除非超出了人的能力范围），所以人为了自己的大义也好、理想也罢、又或是更丑恶更原始的支配欲——都不得不追求金钱。然而人的先天条件是完全不一样的，能力也好，财富也罢，总归是不平等的。有条件的人自然能让钱自我循环，越来越多，没钱的人眼里也只剩下了绝望——反正再努力也实现不了欲望了，不如直接摆烂吧。总而言之，在这个社会，想要实现理想，远比以前要难上加难。</p><p>但尽管在工作上摆烂，在赚钱方向摆烂，却未必不能继续朝向欲望进步。这里我的观点可能会让人咋舌——打游戏同样是对欲望的追求。不论是想要赢下对手，还是独自完成某个目标，又或其它一切。参考我之前写过的《当我们在玩游戏时，我们在玩什么》，我们在玩游戏时，我们只是在满足现实里得不到的残缺之物罢了，这里的残缺之物其实就是欲望。我们在玩游戏的途中就是在追求欲望的路上，只是这个欲望已经脱离了现实的关系网络罢了。但欲望本来就是没有对象，如果追求游戏的欲望，那游戏对于玩家来讲就是比现实更真实，更具有实感。</p><p>当然这里的游戏也只是个例子，所有能够让人去追求某个对象化目标的事物，皆可成为欲望的对象。这也许是资本社会给我们的最珍贵的礼物，也是最恶毒的诅咒。但拜此所赐，至少人们有了可以追求的东西，而不是只能去追求那最后的欲望——死亡了。可喜可贺可喜可贺。</p><h2 id="历史的终结"><a href="#历史的终结" class="headerlink" title="历史的终结"></a>历史的终结</h2><p>虽然我用了这个词，但并不代表我认为历史就真的终结了。毕竟肤浅的我对哲学的知识不过是拾人牙慧，甚至是断章取义。不论哲学的终结还是历史的终结，甚至是我前文的那些论述，都夹杂（又或者是几乎全部）着个人视角的胡说八道。</p><p>从客观角度来看，我还相当地年轻，下判断还为时过早。但或许人的历史本身就是一个不断重演的过程。也许正是因为年轻，才可以下判断。这个判断不是我今后能赚多少钱，能干出什么大事业，研究到多深的知识，掌握多少的技术。关于现实或者虚拟生活的未来一切，我都没法下判断。我唯一可以肯定的是，我大概到死都会追逐欲望吧，无论是工作还是兴趣，无论是现实还是游戏，无论是享乐还是退缩，无论是自愿地还是被迫地，无论是享乐地还是痛苦地，毕竟，人是靠追逐欲望才能活着的啊。</p><p>这才是关于人类(自我)历史的终结。</p><p><img src="https://image.yeding.top/img/sayonara.jpg"></p>]]></content>
    
    
    <summary type="html">姑且算是个人总结？</summary>
    
    
    
    <category term="杂谈" scheme="https://www.yeding.top/categories/%E6%9D%82%E8%B0%88/"/>
    
    
    <category term="哲学" scheme="https://www.yeding.top/tags/%E5%93%B2%E5%AD%A6/"/>
    
    <category term="总结" scheme="https://www.yeding.top/tags/%E6%80%BB%E7%BB%93/"/>
    
  </entry>
  
  <entry>
    <title>那些年听过的耳机与歌曲</title>
    <link href="https://www.yeding.top/post/53fc1dd0eb8a/"/>
    <id>https://www.yeding.top/post/53fc1dd0eb8a/</id>
    <published>2022-08-03T17:25:58.000Z</published>
    <updated>2022-08-03T17:25:58.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>从高中开始入手的耳机少说也有好几十条了，之前群吹水时也会装作一个“老烧”，使用一些类似“中高低频”“声场”之类的玄乎的词描述自己对手上耳机的看法。但确实没有从来没有好好记录下来。所以现在就装模作样评论对自己有过印象的耳机，和那些用这耳机听过的那些令人怀念的歌曲。</p><h3 id="威索尼克vsd1s"><a href="#威索尼克vsd1s" class="headerlink" title="威索尼克vsd1s"></a>威索尼克vsd1s</h3><p>算是自己入手的第一款耳机了。如果不算上铁三角某款极其失败的男声塞子。声音暖轰，是非常传统的流行塞，同时也毫无特征可言。不过当初用它来听一些中v曲子，如《唱给雅音宫羽》之类的。我还是能记得当初的感动。</p><p><img src="https://image.yeding.top/img/00032012.jpg"></p><iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="//music.163.com/outchain/player?type=2&id=29784379&auto=0&height=66"></iframe><h3 id="创新-creative-air"><a href="#创新-creative-air" class="headerlink" title="创新 creative air"></a>创新 creative air</h3><p>某次生日家人送的礼物，虽然我还补了一半的钱才到手。算是我高中时期入手的最贵，也是我最喜欢的一款耳机。这是一款平头耳挂式塞子，耳挂不仅可以耍帅，在跑步也能防止掉落（虽然带着这塞子夜跑的估计也只有我一个了）。声音就两个字，清纯。他并非如今水月雨这种通过过分拉高高频、压缩低频的方式来标榜自己的“清纯”，而是以不加音染，通过发声结构来展现音乐本质的魅力。不戴上海绵套甚至难以听见他的低频。虽然这不是一个一耳朵听上去就让人喜欢的声音，但夜晚戴上它闭着眼，听着音乐从心间缓缓流过，也别有一番美妙滋味。推荐歌曲是《まどろみの約束》，冰菓的ed，清丽的女声配上爽快的吉他，朦脓述说着二人的情意。</p><p><img src="https://image.yeding.top/img/erji_creative_air_1l.jpg"></p><iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="//music.163.com/outchain/player?type=2&id=27552690&auto=0&height=66"></iframe><h3 id="sony-1a-dac"><a href="#sony-1a-dac" class="headerlink" title="sony 1a dac"></a>sony 1a dac</h3><p><img src="https://image.yeding.top/img/1057_2.jpg"></p><p>大学后我想着有了更多余钱，要不去买个以前都不敢想的头戴式耳机吧。正值当时耳机吧有两只头戴式耳机正讨论得如火朝天。一款是铁三角的MSR7(陌生人妻），另一款便是某信仰教的1a。虽然铁三角这款头戴式又是号称“甜美女毒”，又是“面向acg听众”。但如上文所说我曾经买过一款铁三角的塞子，虽然那款塞子素质算不上差，但扭曲的调音还是使得我至今都没再入过铁三角的产品了。另一方面，由于我并不想在前端做过多投入，而索尼的1a正巧有一个自带耳放的配置。于是我就顺利入手了sony-1adac。这款产品完美的诠释了索尼做耳机的理念——往死里轰头就完事。</p><p>这并不是指索尼除了轰头的低音之外一无是处，相反索尼的耳机一般三频的质量都比较稳定，哪怕是1a也有着出色的中高频，它并不会被轰头的低频所掩盖。戴上耳机，你能听到沉稳凝实的人声，明亮婉转的高音。因为索尼的浓厚音染，声音并不如清泉清冽，而是如同音乐厅中华丽地回响。可惜这个音乐厅对低音有更高增益。导致听久了之后，总会感到耳朵被低音轰的有点疼痛。索尼显然对调音用力过猛了。</p><p>这耳机比起编曲繁杂的JPOP，其实更适合更单纯的一点的CPOP或者欧美流行。比如Owl City 的 Brid with a broken wing。其实他这一整张专辑我都听了很多次，和Carly Rae Jepsen 一起是我为数不多会主动去听的欧美歌手了。</p><iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="//music.163.com/outchain/player?type=2&id=33035208&auto=0&height=66"></iframe><h3 id="水月雨-nameless（无名）"><a href="#水月雨-nameless（无名）" class="headerlink" title="水月雨 nameless（无名）"></a>水月雨 nameless（无名）</h3><p><img src="https://image.yeding.top/img/Nameless.jpg"></p><p>我愿称水月雨这个牌子为耳机圈的营销大王，一个明显是为了追求高解析的“女毒”塞能称之为“acg”塞子。acg里写摇滚和核的都应该给自己开除“acg”籍了属于是。虽然它一直标榜自己追求HIFI，追求高素质。但很抱歉我前后买了三条水月雨的塞子，我只能从中听出刻意地拔高高频，压低低频，扩大声场。听惯一般调音的耳机后是很难适应水月雨这“独树一帜”的风格的。甚至于有水月雨的用户认为听水月雨可以矫正自己的“听音观”，不被垃圾调音洗脑。对此我只能说，“正确”听音观关我屁事，哪怕有人觉得地摊耳机好听我也会说“啊对对对”。听歌本就是件个人的事，何必还得追求大众的正确。</p><p>言归正传，无名是我买的第一款水月雨的耳机。缺点我已经说过了，但它也并非一无是处。在听一些“几乎没有低音”的“女声”作品的时候，还是能收获意料之外的听觉体验。我认为它的目标可能正是那些只听这些作品的人。这里我也正好有一首 nameless的 アイシテ可以推荐。nameless是一个日本的女声翻唱双人组合。正好是同名组合演绎耳机魅力了。这首歌中组合的二人在左右声道反复吟唱自己那小小爱意，微妙的情感在心中萌芽。</p><iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="//music.163.com/outchain/player?type=2&id=38689097&auto=0&height=66"></iframe><h3 id="拜亚动力-dt880"><a href="#拜亚动力-dt880" class="headerlink" title="拜亚动力 dt880"></a>拜亚动力 dt880</h3><p><img src="https://image.yeding.top/img/20190507180332_88354.jpg"></p><p>第一次听应该是和室友去北京旅游，去逛了很多耳机店。我当时执意想要一个冷声的耳机，以治愈我那被索尼暖声轰炸的鼓膜。先去了北大周边的一个小店。老板一看就是个很高冷的老烧，听到我的要求他觉得很诧异“冷声并不好听啊？”，但最后还是给了我一款塞子。很可惜这款塞子对于我来说仍然太暖了，虽然在他这个老烧看来我更像是不懂行的新人。但我只是想找到自己喜欢的那个声音罢了。最后去了久负盛名的天域联达。然后在那里试听了这款耳机。</p><p>然后我就知道了，什么叫做真正的“冷声”（开玩笑的）。dt880完美符合了我对一个女声音乐的期待。它所展现出的那种清冷的感情，比起1a的热烈，更让人心颤。同时它的三频也相当和谐。低频并非森海系那种下沉很深的低音。而是悬在脖子的高度。比起森海这种虽然下潜深但也失去了一些一体感的低频来说，我更喜欢dt880这种既具有乐器分离度，也不会因为太分离而失去乐曲浑然一体的感觉。总而言之，这趟北京之旅能听到这个耳机就不虚此行了。</p><p>关于这个耳机，其实我能推荐的歌很多，因为本身定位是监听耳机，所以三频均衡的它几乎适合任何风格。但我还是想推荐下，我当时用来测试冷声的一首歌。《不可思議のカルテ（不可思议的病历本）》，动画《青春期猪头少年不会梦到兔女郎学姐》(日式轻小说标题orz）的片尾曲。每一集由动画中不同的女角色演唱。我常听的是双叶的版本。这首曲子，没有沉重的打击乐器，也没有刺耳的金属和电子合成声。开头便是少女的轻声吟唱，悄然而至的伴奏轻盈而又梦幻，在这梦境之中少女将自己深藏的心思娓娓道来。</p><iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="//music.163.com/outchain/player?type=2&id=1352181552&auto=0&height=66"></iframe><h3 id="final-e3000"><a href="#final-e3000" class="headerlink" title="final e3000"></a>final e3000</h3><p><img src="https://image.yeding.top/img/final-e3000.jpg"></p><p>当然在天域联达，我并没有只听了dt880就心满意足地回去了。我在那还听了许多其它品牌和价位的耳机，其中不乏榭兰图又或大奥这类老烧经典。但都太贵了，而且需要好的前端搭配。而我更希望一个不需要太多前置条件就能出好声的耳机（顺道一提，dt880也有低阻版本可以用手机作前端）。无意中，听到了这款耳机。</p><p>这大概是我目前最喜欢的一款入耳式耳机了。前前后后买了三条，狂热的时候天天戴着听歌。final是一个日本牌子，以前跟skullcandy之类的牌子一样是做时尚耳机了。不知道哪天突然开了窍准备进军传统耳机市场。虽然说比起国产耳机性价比还是不太行。但在调音方面可就赢太多了（国产耳机调音一直有点死板）。虽说final e3000阻抗比起一般手机配塞要更高，但基本音量调大点也能有个不错的声音。他的调声是偏中低端的，但低端下潜比较浅，量比较多。水月雨老板曾经在知乎测评过，认为是“低频肥大，不太符合正常的听音观”。但“hufi”就“hufi”好听就完事，像森海那种极深的下潜反而并不讨我欢心。而且他最优秀的厚度刚刚好的中频，以及突出但并不刺耳的高频，而肥大的低频恰好起到了一个背景里烘托氛围的作品。并不像索尼那样直接轰到盖过中高频。也不像水月雨那样，全无低频。固然由于它的低频质量并不好，所以不适合听古典之类的传统重视低音质量的音乐。但对于日式流行妥妥够了。（水月雨学着点，别做个听古典耳机硬说适合acg了。acg音乐只有古风是吧）。</p><p>既然是“hufi”，就是适合听一切流行曲风，但低频比较丰富的歌曲会更加适合这款耳机，这里我推荐的是ずっと真夜中でいいのに的《勘ぐれい》。一首贝斯存在感比吉他还大的歌，戴上耳机随着活泼的贝斯蹦蹦跳跳，感受到acane那独特的少女感。</p><iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="//music.163.com/outchain/player?type=2&id=1498613705&auto=0&height=66"></iframe><h3 id="Intime-Sora碧-Light"><a href="#Intime-Sora碧-Light" class="headerlink" title="Intime Sora碧 Light"></a>Intime Sora碧 Light</h3><p><img src="https://image.yeding.top/img/K0001219789.jpg"></p><p>另一款我喜欢的日厂耳机。属于是初听惊为天人，习惯后反而没那么耐听的类型。但它仍旧是一款性价比很高的耳机，不少人都认为他比final系列更适合用手机直推。其主要原因就是它的阻抗非常的低，只有足足22欧姆，音量很低即可推动。同时它在易推的同时仍然保持了一个相当高的素质、直接拿手机推也不逊色其它500价位的耳机。这款耳机的调音偏冷，但却不会显得声音生硬，究其原因是它的音染非常严重，填上了声音本身尖锐的部分。它付出的代价，就是不太“hifi”。特别是听一些现场live的原声，会显得很奇怪，不真实。总体来讲它的中高低频都相当优秀。低频下潜较深相对量就有点少，跟低频肥大下潜浅的final e3000形成鲜明对比。尤其在女声的中高频上，不同于水月雨着重强调少女的清丽感，sora反而更适合那些并不那么少女的女声。她把能量集中到了一个中高音之间的一个位置，这个位置女性体现的更多是柔情和温柔，而非单纯的元气感。Intime 和 水月雨 显然对女毒各有自己独特的见解。</p><p>承上所述，我给这个耳机推荐的音乐是豚乙女的《狂人日记》。一首东方project同人社团的歌曲，应该只是和鲁迅撞名字了吧。豚乙女的女声走的就是温情路线，她声线的特质正好被Sora 碧 Light体现的淋漓尽致。戴上耳机，你感受到的并非少女的活力与小心思，而是一个饱经风霜的女人将她内心深处的故事娓娓道来。</p><iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="//music.163.com/outchain/player?type=2&id=458013759&auto=0&height=66"></iframe><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><p>以上，是对自己曾经入手的耳机一个简评，或者说是一种追忆。都说耳机摄像入坑毁一生，但在大多数发烧友去追求那些昂贵器材的时候，我们也可以去回归初心，去买些价格相对低廉质量却不差的耳机。虽说耳机是用来听歌的，但是好的音乐并非必须要靠好的设备才能体现。玩耳机对我而言只是一种游乐，就像是入手新的鼠标，入手新的键盘一样。它固然作为工具是有功能性的体现，但同时它也如同一个玩具一般让人们玩赏。抛开那些虚幻又玄学的行业术语，当戴上了新入手的耳机，点开播放键时，只需要去聆听，去感受，从耳机传进双耳的声音，是否让你沉浸在这音乐的海洋。这便已然足够。</p>]]></content>
    
    
    <summary type="html">穷人的耳机体验历史</summary>
    
    
    
    <category term="杂谈" scheme="https://www.yeding.top/categories/%E6%9D%82%E8%B0%88/"/>
    
    
    <category term="音乐" scheme="https://www.yeding.top/tags/%E9%9F%B3%E4%B9%90/"/>
    
  </entry>
  
  <entry>
    <title>【gal评】-交响乐之雨</title>
    <link href="https://www.yeding.top/post/a647efeab291/"/>
    <id>https://www.yeding.top/post/a647efeab291/</id>
    <published>2021-10-29T01:10:58.000Z</published>
    <updated>2021-10-29T01:10:58.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>玩完交响乐之雨（英语：Symphonic Rain简称SR）后，心里一直想要给它写个赏析或是别的什么，来抒发内心那份难以言表的心情。奈何自己无论从文化水平上还是专业知识上都远远不能达到为任何一款游戏做评析（批评）的程度。所以只能说是玩后自己一点浅薄的感想。以下会分几个大点来阐述自己的想法。</p><h2 id="非典型数据库"><a href="#非典型数据库" class="headerlink" title="非典型数据库"></a>非典型数据库</h2><p>东浩纪<sup id="fnref:1"><a href="#fn:1" rel="footnote"><span class="hint--top hint--error hint--medium hint--rounded hint--bounce" aria-label="东京大学哲学博士、小说家、批评家。代表作《动物化的后现代》，以后现代理论阐明御宅族群体。参考资料：https://book.douban.com/subject/10996167/">[1]</span></a></sup>在其著作《动物化的后现代》中提出了宅文化领域一个非常著名的消费理论——数据库消费。即御宅族消费的对象是角色的属性。那些会让御宅族觉得“萌”的元素。身体上的白毛、双马尾、黑皮、萝莉御姐，性格上的傲娇，三无，无口。都可以算做是角色的属性。商家通过将属性结合起来创造出一个受到御宅族喜爱的角色再创造一个他们活动的舞台（故事）。这便是属性先于角色再先于故事的消费理论，而角色属性的集合便是数据库。</p><p>哪怕是20年后的现在绝大部分动画漫画以及小说，仍旧没有脱离数据库消费理论的范畴，更别提原本就是其理论来源的galgame（东浩纪是galgame吹）。</p><p>但交响乐之雨可以说完全不是以数据库理论来创作剧本的，它的角色，它的故事，与萌和受欢迎几乎搭不上任何关系。所有女生穿着都是学校的校服，说话方式也普普通通，性格也与数据库中任何萌元素的属性搭不上边。故事也是，男主每天都在练习乐器，要么去学校要么回家练，偶尔和同学聚餐。除此之外再无任何娱乐活动。哪怕是和同学的嬉笑打闹在这部作品也几乎不得多见。所以前中期的游玩会显得较为枯燥乏味。</p><p>但这并不意味着编剧的无能，相反枯燥正是为了另一个目的——真实感。</p><p>阿虚名言“在虚构作品里寻找真实感的脑子指定有点问题。”但这句的重点并不在于真实感，而在于寻找。如果一个作品需要读者主动去寻找真实甚至加以想象地圆虚构作品的世界观，这肯定是极其失败的。好的作品应该主动地让读者感受到真实感而非被动地等待读者寻找。而交响乐之雨正是后者。</p><p>真实感不等同于现实感，所以哪怕作品中存在“音乐精灵”这种非现实的生物，仍然不会使其传达的真实感有半分失色。</p><p>何谓真实感，着实难以定义。以我的想法来解释的话，就是会让人觉得“在这个背景下我也会做着相同的事”吧。并非是“我想要做什么”或者“我期待发生什么”这类将自己的幻想带入作品来产生愉悦，而是实实在在地觉得他们就是与自己同样的一般人，做着我们也会做的事。</p><p>具体来说，交响乐之雨的故事发生在类似高中的音乐学院里，但它并没有以往俗套的福利、恋爱情节，或是嬉笑打闹的“无休止日常”。男主是临近毕业的高三学生、而他所要做的是在短短几个月内找到唱歌的伙伴，一起完成毕业考核的演出。不同于《高考恋爱一百天》<sup id="fnref:2"><a href="#fn:2" rel="footnote"><span class="hint--top hint--error hint--medium hint--rounded hint--bounce" aria-label="由橘子班创作的著名国产galgame，主要讲述了在离高考只剩100天的男主的恋爱故事">[2]</span></a></sup>里花费大量笔墨用于描绘恋爱及其他轻松的事件，交响乐之雨里你只能看到男主日复一日的通学和练琴。日常对话也没有任何轻松欢快的要素，在这个雨不会停歇的世界里，一切都显得那么沉重而乏味,宛如我们现实的日常生活一般。</p><p>但正因为这一层有力的真实感的铺垫，才显得作品后期的故事展开是那么动人至深。</p><h2 id="主观的世界舞台"><a href="#主观的世界舞台" class="headerlink" title="主观的世界舞台"></a>主观的世界舞台</h2><p>AVG的特殊性在于主人公的不可见，绝大多数情况下玩家只能通过主人公的视角去观察这个世界，去阅读这些篇章，所以也就使得AVG可以向小说借鉴去运用某些相似的手法。</p><p>没错，这就是著名的叙述性诡计。只要是有第一人称的艺术载体，或多或少都可以使用主人公的主观意识去混淆客观描述的世界。但AVG可以比单单只有文字的小说更胜一筹的地方在于。它可以不通过文字的直接描写去进行诡计。画面、音乐、甚至整个游戏系统都可以成为诡计的平台。而这种诡计的戳穿方式也能更加多样化<sup id="fnref:3"><a href="#fn:3" rel="footnote"><span class="hint--top hint--error hint--medium hint--rounded hint--bounce" aria-label="例如《弹丸论破V3》的最后，当屏幕上出现“没有希望”的字眼，整个画面都暗下来之时，系统会弹出保存的提示按钮。当玩家以为这又是游戏的温馨提示而不假思索地按下确认时，会发现游戏画面并没有随之亮起，反而系统又会再次弹出提示保存的按钮。只有当玩家拒绝保存之后，游戏内某个主人公的声音响起“我不会放弃希望”，玩家这才意识到之前游玩的世界一直是某人眼中的画面。">[3]</span></a></sup>。</p><p>但相当一部分作品的叙述性诡计，都是故意为之，所要达成的目的无非是欺瞒读者。哪怕摘除诡计的部分，整个故事仍然能够成立。交响乐之雨也运用了这个手法作为它核心的反转，但它并非是生搬硬套地直接从文字上去描述，也不是通过游戏系统这些更为”元叙述”的手段达成目的。他所运用的叙述性诡计相当直白和简单，而且从某种意义上它并非是个“诡计”，而是明明白白展现给你的“事实”。它的叙述性诡计是它的核心，是它得以成立的根本，这个根本甚至直接地反映在了游戏的名字——“交响乐之雨”上。</p><blockquote><p>世界是主观的，也是客观的，但归根结底，它还是主观的 —— 叶町</p></blockquote><p>哪怕是现实中，我们所观察到的世界也或多或少会受到自己主观的影响。同样的天气，有人会觉得凉爽，有人会觉得潮闷。同样的景色，有人感受到宏伟壮观，有人心里却只有破旧惨败。同样，这部作品的叙述性诡计并非是主角刻意隐瞒真相，而是在他所观察世界呈现出来的就是这副模样。永远灰沉阴暗的天空，雨水绵绵不绝的街道，以及那扑闪着小翅膀的音乐精灵。</p><p>没错，它的叙述性诡计来自于主角自身的认知偏差，但这种认知偏差恰恰是整个故事的基点，是主角伤痛的过往，也是他能够在毕业演出上演奏出动人音乐的原因。</p><p>虽说比起ever13、素晴日这类更加极致的诡计运用来说，交响乐之雨所埋下的伏笔与之后的反转显得平平无奇。但正如前文所提，它的诡计是“事实”，它不是通过诡计去使得故事更加精彩，反而这个平淡的日常故事本身就是由于这个“事实”而展开的。基于主角的主观视角构建出的故事舞台，当视角从主人公身上挪开时，玩家才得以一见他的真面目。正如现实中我们也因”身在此山中”而只觉迷雾缭绕。他人看来显而易见的事物，我们却被自己的主观狭隘所遮蔽而饱受困扰，但也正因为这是只属于我们“自己”的人生，才有可能得出自己专属的答案吧。</p><h2 id="坚强的女孩子们"><a href="#坚强的女孩子们" class="headerlink" title="坚强的女孩子们"></a>坚强的女孩子们</h2><p>既然是galgame（恋爱游戏），就不可能避免去谈论girl。在现在以柚子社为主的gal游戏业界，不，甚至可以扩大到整个日本ACG产业，对女生的形象要求越来越高，越来越脱离现实。一方面如果在“搁置怀疑”的方面做得足够好，这样的角色设计的确也能让人越发沉浸其中不可自拔，但当消费者从这样一个设计感严重的角色和编织感极强的世界中返回到现实之时，也能清晰地知道那只是虚幻，只是娱乐消遣。我想没有人在对现实世界有基本认知能力的情况，依旧幻想自己会遇到一个身材姣好、面容精致、性格还天然傲娇，活脱脱一个从漫画里走出来的角色吧。正如现实中的我们也没有那些恋爱喜剧的主角那么坚强，那么善良和正直，我们对那些满足宅男幻想的角色也终究是明白这不过是一种对现实的聊以自慰或是抽离罢了。</p><p>但是交响乐之雨虽然整体定位仍然是恋爱游戏，但它更像是古典的爱情小说而非日式那种完全脱离现实的轻小说。它的女角色很难用单纯的标签去定义，也不符合量化的数据库原理。但是非常符合角色的性格和其背景，黎瑟的胆怯怕生，法络的不择手段，以及朵鲁妲的不着痕迹又让人心疼的温柔。无不触动心弦。</p><p>当然里面确实存在一个非常符合大和抚子的日式形象，那便是雅俐耶妲（简称雅俐）。雅俐是克里斯（主角）的女朋友，她单纯又善良，因为自己没有音乐天赋而只能与克里斯分隔两地，每到周五克里斯便会收到她的信件。信件里她会述说自己在面包坊努力学习烘焙技艺，字里行间也会流露出无法与克里斯相见的落寞，接着又会鼓励克里斯，只要各自在自己的领域努力进步终会重聚。这样一个温柔的女孩，早期却没有她的线，这意味着如果玩家想要最终攻略某个女角色，就不得不背叛雅俐。在黎瑟线中，克里斯主动提出和雅俐分手，而雅俐在克里斯提出的分手的回信中，却只写下了“別れはつらいことだけど、それもすぐに忘れられるだろう（分别虽然痛苦，但也很快就能淡忘吧）。”的字句，真是令人心碎不已，难以解脱。</p><p><img src="https://image.yeding.top/img/%E3%82%A2%E3%83%AB.PNG" alt="雅俐（？）在朵鲁妲线里和克里斯去做弥撒"></p><p>黎瑟的故事则是另一种意义上的恶意满满，但也让克里斯下定决心哪怕和雅俐分手也要去守护她那柔弱的心灵和稚嫩的梦想。用治愈黎瑟的方式，去治愈自己心中那场绵绵不绝的雨。</p><p><img src="https://image.yeding.top/img/image.png" alt="病床上黎瑟苏醒"></p><p>法络虽然确实心中另有所图，但也远远不到腹黑的程度。这只是两个受伤的人抱团取暖，为了互相抹平伤痛。法络线的结局并不那么美好，但当她为克里斯撑起那把伞的时候，她一定也是想去感受克里斯心底的那场大雨的。</p><p><img src="https://image.yeding.top/img/image_1.png" alt="下雨天法络为克里斯撑伞"></p><p>朵鲁妲，最让人难以释怀的角色。“もし、途中で気が変わったら、私の名前を呼んでくれる（若你中途回心转意，就请再次唤起我的姓名）”，游戏中她对克里斯说出的这句话完美地表达出了她的感情。她的付出，她的忍耐，她的心痛，无疑让她也同克里斯一样经受着这永无尽头的大雨。</p><p><img src="https://image.yeding.top/img/image_2.png" alt="克里斯抱住雨中哭泣的朵鲁妲"></p><h2 id="结语"><a href="#结语" class="headerlink" title="结语"></a>结语</h2><p>这并非一部多么惊世骇俗作品，既没有独到的世界观，也无精彩绝伦的剧本。对于galgame的玩家来说，没有玩过这部作品也不会有多少遗憾。但它又足够出色，除开上述提到的那几点以外，还有独到的音游系统，以及岡崎律子人生最后那悠长又柔情的音乐。但本人才疏学浅只得抒发自己一点浅薄的见解。如果要打个比方的话，我会想起戴舒望<sup id="fnref:4"><a href="#fn:4" rel="footnote"><span class="hint--top hint--error hint--medium hint--rounded hint--bounce" aria-label="中国现代派[象征主义](https://baike.baidu.com/item/象征主义/1780147)诗人,《雨巷》为其早期作品，参考资料：https://baike.baidu.com/item/%E6%88%B4%E6%9C%9B%E8%88%92/189012">[4]</span></a></sup>的《雨巷》。它就像那位雨巷中的姑娘那般神秘而又哀婉，只等待某个人去发现，去感受它的魅力，感受这段虽然哀伤却也美好的故事。</p><h2 id="美图"><a href="#美图" class="headerlink" title="美图"></a>美图</h2><p><img src="https://image.yeding.top/img/2537cb1b9d16fdfa44dceb9bb28f8c5495ee7b6f.jpg"></p><p><img src="https://image.yeding.top/img/effa4a4a20a446239e5088179e22720e0df3d701.jpg"></p><p><img src="https://image.yeding.top/img/SR.jpg"></p><p><img src="https://image.yeding.top/img/302346166d224f4a450f0e660ff790529922d10d.jpg"></p><div id="footnotes"><hr><div id="footnotelist"><ol style="list-style: none; padding-left: 0; margin-left: 40px"><li id="fn:1"><span style="display: inline-block; vertical-align: top; padding-right: 10px; margin-left: -40px">1.</span><span style="display: inline-block; vertical-align: top; margin-left: 10px;">东京大学哲学博士、小说家、批评家。代表作《动物化的后现代》，以后现代理论阐明御宅族群体。参考资料：https://book.douban.com/subject/10996167/<a href="#fnref:1" rev="footnote"> ↩</a></span></li><li id="fn:2"><span style="display: inline-block; vertical-align: top; padding-right: 10px; margin-left: -40px">2.</span><span style="display: inline-block; vertical-align: top; margin-left: 10px;">由橘子班创作的著名国产galgame，主要讲述了在离高考只剩100天的男主的恋爱故事<a href="#fnref:2" rev="footnote"> ↩</a></span></li><li id="fn:3"><span style="display: inline-block; vertical-align: top; padding-right: 10px; margin-left: -40px">3.</span><span style="display: inline-block; vertical-align: top; margin-left: 10px;">例如《弹丸论破V3》的最后，当屏幕上出现“没有希望”的字眼，整个画面都暗下来之时，系统会弹出保存的提示按钮。当玩家以为这又是游戏的温馨提示而不假思索地按下确认时，会发现游戏画面并没有随之亮起，反而系统又会再次弹出提示保存的按钮。只有当玩家拒绝保存之后，游戏内某个主人公的声音响起“我不会放弃希望”，玩家这才意识到之前游玩的世界一直是某人眼中的画面。<a href="#fnref:3" rev="footnote"> ↩</a></span></li><li id="fn:4"><span style="display: inline-block; vertical-align: top; padding-right: 10px; margin-left: -40px">4.</span><span style="display: inline-block; vertical-align: top; margin-left: 10px;">中国现代派<a href="https://baike.baidu.com/item/%E8%B1%A1%E5%BE%81%E4%B8%BB%E4%B9%89/1780147">象征主义</a>诗人,《雨巷》为其早期作品，参考资料：https://baike.baidu.com/item/%E6%88%B4%E6%9C%9B%E8%88%92/189012<a href="#fnref:4" rev="footnote"> ↩</a></span></li></ol></div></div>]]></content>
    
    
    <summary type="html">若你中途回心转意，就请再次唤起我的姓名</summary>
    
    
    
    <category term="杂谈" scheme="https://www.yeding.top/categories/%E6%9D%82%E8%B0%88/"/>
    
    
    <category term="galgame" scheme="https://www.yeding.top/tags/galgame/"/>
    
    <category term="交响乐之雨" scheme="https://www.yeding.top/tags/%E4%BA%A4%E5%93%8D%E4%B9%90%E4%B9%8B%E9%9B%A8/"/>
    
    <category term="シンフォニック＝レイン" scheme="https://www.yeding.top/tags/%E3%82%B7%E3%83%B3%E3%83%95%E3%82%A9%E3%83%8B%E3%83%83%E3%82%AF%EF%BC%9D%E3%83%AC%E3%82%A4%E3%83%B3/"/>
    
  </entry>
  
  <entry>
    <title>当我们在玩游戏时，我们在玩什么</title>
    <link href="https://www.yeding.top/post/858ff2ba3ad9/"/>
    <id>https://www.yeding.top/post/858ff2ba3ad9/</id>
    <published>2021-05-19T15:37:10.000Z</published>
    <updated>2021-05-19T15:37:10.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>  玩游戏时，我们在玩什么。简而言之，我们获得了什么。我就开门见山的说了，是为了填补现实的空虚，为了缓解现实的失落。换言之，游戏并没有什么新奇的，他之所以能吸引人也只是因为人本身在现实中欲求不满罢了。<br>  早先的游戏设计理论把游戏玩家分为四类，接下来一一简单介绍这四种类型以及简要剖析它所对应的现实中人的欲求。</p><h1 id="成就型玩家"><a href="#成就型玩家" class="headerlink" title="成就型玩家"></a>成就型玩家</h1><p>指喜欢在游戏里达成各式各样的成就以获得满足感的玩家。这里的成就主要是单机游戏的成就，比如闯关类。毕竟单机游戏是游戏最开始诞生的游戏类型，这也算是游戏最原始的乐趣了。我们喜爱游戏而讨厌学习不就是因为游戏很快能给予我们正向反馈而学习不能。游戏卡关可能练个几个小时就能通，再多来点时间游戏本身都可以直接通，而学习一门新知识别说几个小时，上千小时都不太足够。成就型玩家喜欢游戏是因为能快速给人带来现实里需要长时间才能得到的成就感</p><h1 id="杀手型玩家"><a href="#杀手型玩家" class="headerlink" title="杀手型玩家"></a>杀手型玩家</h1><p>指喜欢在游戏里与人竞争pk而赢过对手的玩家。简而言之就是pvp对战游戏的玩家。也算是目前最火的一类游戏，代表是王者荣耀和吃鸡。虽说这类游戏同样能带来成就感，但成就感更多来自于击败其他玩家，“杀死”他们来获得。现实里我们可能在与他人竞争的时候屡屡受挫。考的没别人好，工资没别人高。无论如何都只能活在他人的阴影之下。但游戏里我们可以肆意妄为，尽情地“杀死”别人，最后立于他人之上。这类玩家通常都是现实里过于在意和他人的竞争但又自我感觉不如意的人，所以才过于需求游戏里的竞争。并且游戏里赢了会嘲讽输了就会喷，对胜负极为在意。</p><h1 id="探索型玩家"><a href="#探索型玩家" class="headerlink" title="探索型玩家"></a>探索型玩家</h1><p>指喜欢在游戏里探索现实里体验不到的新事物的玩家。可以结合上一条分析，为什么竞争类游戏通常喜欢采用暴力的手法呢，除了能最大最直观地体带来竞争的快感之外，那就是现实是不允许暴力的。我们的生活总是日复一日，每天循环往复同样的事，永远看着同一片风景。但在游戏里我们能游历不一样的山水，体验不一样的人生。无论是在丛林里冒险，还是在赛博都市里飙车，或是在二战战场冲锋陷阵。这些本质都是为了给你现实里不一样的刺激。现实中的我们可能永远只能活在名为学校家庭公司等各种各样的笼子里，但游戏里我们可以体验新的人生新的世界。</p><h1 id="社交型玩家"><a href="#社交型玩家" class="headerlink" title="社交型玩家"></a>社交型玩家</h1><p>指喜欢在游戏里与人交往和结识新伙伴的玩家。这里的社交可以与现实相关也可以与现实无关。因为全国最知名的手游王者荣耀大概就是因为前者积累的人气。固然有一部分人群是因为大家都玩所以我必须玩的同辈压力而去游玩这款游戏。但大部分还是因为这款游戏有利于朋友间增进感情而进行的轻度游玩。当然重度游玩估计就是沉迷于pvp的杀手型玩家了。另外一个更典型的例子就是mmorpg，代表为剑侠情缘三。这款游戏塑造了一个完整的江湖世界，玩家能通过这个世界与其他真实的玩家产生关系，如结为师徒，成为夫妻等。更多的人会选择加入某个公会，一边参与游戏为公会准备的各种活动。游戏对社交型玩家的吸引力来自于它能跨越现实的桎梏实现人与人的交往。游戏是虚拟的，它使人不用去在意现实的金钱地位以及种种社会关系，某种程度上人和人之间就是平等的，同时游戏也会有鼓励人和人结交关系的手段。给予人社交的正反馈而非现实里社交并不一定都能带来好的体验。<br>  以上大概就是四类玩家游玩游戏的原因分析。可以看出无论是哪种玩家，其想要在游戏里所得到的其实都是来自于现实里的原型。但由于种种原因我们在现实里都无法那么理想地满足这些欲求（个人认为社会不平等有部分原因），所以才会去游戏里驰骋飞扬。<br>  综上所述，我们在玩游戏时，我们只是在满足现实里得不到的残缺之物罢了。</p><p><img src="https://image.yeding.top/img/89977816_p0.jpg"></p>]]></content>
    
    
    <summary type="html">简述个人对游戏和游戏玩家的一些看法</summary>
    
    
    
    <category term="杂谈" scheme="https://www.yeding.top/categories/%E6%9D%82%E8%B0%88/"/>
    
    
    <category term="游戏" scheme="https://www.yeding.top/tags/%E6%B8%B8%E6%88%8F/"/>
    
    <category term="理论" scheme="https://www.yeding.top/tags/%E7%90%86%E8%AE%BA/"/>
    
  </entry>
  
  <entry>
    <title>你好，Hexo</title>
    <link href="https://www.yeding.top/post/114244095f3c/"/>
    <id>https://www.yeding.top/post/114244095f3c/</id>
    <published>2021-04-16T09:21:58.000Z</published>
    <updated>2021-04-16T09:21:58.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>我的第一篇Hexo博文</p><p><img src="https://image.yeding.top/img/nier.jpg"></p>]]></content>
    
    
    <summary type="html">第一篇hexo博文。</summary>
    
    
    
    <category term="记录" scheme="https://www.yeding.top/categories/%E8%AE%B0%E5%BD%95/"/>
    
    
    <category term="Hexo" scheme="https://www.yeding.top/tags/Hexo/"/>
    
  </entry>
  
  <entry>
    <title>日本语之森-N1语法（一）</title>
    <link href="https://www.yeding.top/post/709e1cd6d598/"/>
    <id>https://www.yeding.top/post/709e1cd6d598/</id>
    <published>2021-04-16T04:29:17.000Z</published>
    <updated>2021-04-16T04:29:17.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>1.～も同然だ</p><p>意味：ほとんど～と同じだ。同じ様子だと言いたい</p><p>接続：名詞も＋同然だ、名詞＋同然だ、ないも＋同然だ、動詞た形も＋同然だ</p><p>例文：毎日20時時間半年もＮ1を勉強したんだから、合格したも同然だ。</p><p>2.～とは</p><p>意味：意外な気持ちを強く表す。</p><p>接続：動詞の普通形＋とは、い形容詞＋とは、な形容詞（だ）とは、名詞（だ）とは</p><p>例文：</p><ul><li>大人が子供に負けるとは、情けない！</li><li>あいつがゆか先生とデートするとは！ </li><li>日本語が超ペラペラだから、隣の人が中国人だとは、全然思わなかった。</li></ul><p>3.～に越したことはない</p><p>意味：～のほうがいい、最高だ</p><p>接続：動詞普通形＋に越したことはない、イ形容詞、な形容詞（である）、名詞（である）に＋越したことはない</p><p>例文：</p><ul><li>成功のために、好きなことをやるに越したことはない。</li><li>初デートの終わりはキスに越したことはない。</li></ul><p>4.Aいかんによって（で、では）B　Aいかんだ（による、にかかている）</p><p>意味：Aが、どれぐらいか、どのようなものによって、Bがきまる</p><p>接続：名詞＋（の）＋いかんによる</p><p>例文：</p><ul><li>第一審の結果いかんで、上級の裁判所に控訴するかどうかを決める。</li><li>人脈いかんによっては、営業実績がことなる場合が多い。</li><li>君の態度いかんによっては、急な転勤もあり得るから、気を付けるように</li></ul><p>5.　Aいかんによらず（にかかわらず、を問わず）B</p><p>意味：Aとは関係ない、Bは決まっている。</p><p>接続：名詞＋（の）＋いかんによらず、名詞＋（の）＋いかんにかかわらず、名詞＋（の）＋いかんを問わず</p><p>例文：</p><ul><li>お支払いになった会員料は理由の如何によらず、お返しすることができません。</li><li>弊社では、理由の如何にかかわらず、お買い上げの商品の返品・交換を承りません</li></ul><p>6.　Aずにはおかない、Aないでおかない</p><p>意味：絶対にAにする、自然に（感情）になる</p><p>接続：動詞の「ない」形＋ずにはおかない</p><p>例文：</p><ul><li><p>犯罪を見たら、警察に通報せずにはおかないだろう</p></li><li><p>消費税が上がったら、国民は反対せずにはおかないだろう</p></li><li><p>高額の美術品を壊したから、彼に弁償させずにはおかない</p></li><li><p>あんなに教室で騒いだわけだから、罰を与えずにはおかないだろう</p></li></ul><p>7.Aずにはすまない、Aないではすまない</p><p>意味：　Aの状態をけっして許さない</p><p>接続：Vない＋ずにはすまない、Vない＋ないではすまない</p><p>例文：</p><ul><li>癌が見つかった以上は、手術をしないではすまない</li><li>汚職が発覚したからには、あの政治家は辞職せずにはすまないだろう</li></ul><p>8.Aを禁じ得ない</p><p>意味：Aを我慢できない</p><p>接続：名詞＋を禁じ得ない</p><p>例文：</p><ul><li>先生の変顔に笑いを禁じ得なかった</li><li>こんなバカな行政政策に対して今の国民たちは不満を禁じ得ないです</li><li>家庭内の暴力に対して国民の意識の低さに驚きを禁じ得ない</li><li>まさかの敗北で驚きを禁じ得ない。</li></ul><p>9.Aてやまない</p><p>意味：すごくAを願っている</p><p>接続：動詞て＋やまない</p><p>例文：</p><ul><li>N2合格後、日本語の勉強を辞めたことに後悔してやまないです</li><li>娘の伸びる英会話を見て、将来を期待してやまない</li><li>これから、二人の幸せを願ってやみません</li></ul><p>10.~といったらない、～といいたらありはしない、～ったらない（会話）、～といったらありゃしない（会話）</p><p>意味：とても～だ、すごい～だ　言葉でうまく言えないほど～だ</p><p>接続：い形容詞＋といったらない、名詞＋といったらない</p><p>例文：</p><ul><li>あのラーメン屋の汚さといったらない</li><li>就職のための準備の面倒くささと言ったらありゃしない</li><li>部下の前で社長に叱られて恥がしいといったらありはしない</li><li>みんなの前でこけて、恥ずかしいったらなかった</li><li>相手を挑発しまくって、負けたなんて、みっともないといったらなかった</li></ul><p>　11.～極まる、～極まりない</p><p>意味：とても～だ、極限に～だ。「極まる」と「極まりない」は同じ意味</p><p>接続：い形容詞＋こと極まる／極まりない、な形容詞＋（なこと）＋極まる／極まりない</p><p>例文：</p><ul><li>何人もの人をかんだあの犬は狂暴極まりないから、近づかない方がいい</li><li>いつも飲み会でセクハラに近い行為をする社長に不愉快極まる。</li><li>迷惑極まりない歩きたばこの罰金をもっと上げてほしい</li><li>劣悪極まりない労働条件を解決するために、政府が動き出した。</li></ul><p>12.～の極みだ</p><p>意味：とても～だ。極限に～だ。</p><p>接続：名詞＋の極みだ。</p><p>限られた名詞と使う場合が多い。</p><p>接続：</p><ul><li>大事な試合の最後に逆転されてしまい、痛恨の極みだ。</li><li>山や海、空の贅沢の極みをつくした、この逸品料理はまずかった。</li></ul><p>13.～の至りだ</p><p>意味：とても～だ。極限に～だ。（古い）限られた名詞と使う場合が多い。　</p><p>接続：名詞＋の至りだ。</p><p>例文：</p><ul><li>ノーベル賞の授賞式に自分が出るなんて、公営の至りでございます。</li><li>最近は若気の至りによる、軽犯罪が増えている。</li><li>忘年会で酔いつぶれてしまい、赤面の至りです</li><li>メールを送って頂いたにも関わらず大変返信が遅れてしまい、恐縮の至りです。</li><li>憧れの歌手に会えて感激の至りです。</li><li>両親に手塩にかけて育てられて感謝の至りです</li></ul><p>14.～ことこの上ない</p><p>意味：とても～だ。これ以上なく</p><p>接続：な形容詞な＋ことこの上ない、い形容詞＋ことこの上ない</p><p>例文：</p><ul><li>丁重なことこの上ない歓迎を頂き、ありがとうございした。</li><li>友だちが宝くじ一億円に当たって、うらやましいことこの上なかった。しかし、その友達がおれに一億円をくれて、ありがたいことこの上ないものだった。</li><li>この映画は、カップルで見ると気まずいことこの上ない映画10選に選ばれたものです。</li></ul><p>15.～限りだ</p><p>意味：とても～だ。限界まで～だ。</p><p>接続：な形容詞な＋限りだ、い形容詞い＋限りだ</p><p><code>感情の表現と一緒に使う場合が多い</code></p><p>例文：</p><ul><li>ビジネスの本を一冊も読まずに事業を起こすなんて恐ろしい限りです。</li><li>俺の友達が一億円の宝くじに当たったらしい。羨ましい限りだ。</li><li>会社の運命を分けるこんな大事を取引に、経験もない部長が来るなんて心細い限りだわ。</li><li>ただ人を助けてあげたのに、こんなにたくさんのお褒めの言葉を頂くなんて、恥ずかしい限りでございます。</li></ul><p>16.～てかなわない</p><p>意味：～がひどすぎて、我慢できない。</p><p>かなわない＝がまんできない</p><p>文句や不満を言う場合よく使う。</p><p>接続：Vて＋かなわない、い形容詞＋てかなわない、な形容詞＋でかなわない、名詞＋でかなわない</p><p><code>ではー＞ちゃ／ではー＞じゃ</code></p><p>例文：</p><ul><li>毎日こんな寒くちゃかなわないよ。</li><li>今日バイト三人も休まれてかなわないよ</li><li>前の新築のビルの工事がうるさくてかなわない</li><li>ジンさんと一緒にいると面白過ぎてお腹が痛すぎてかなわないわ</li><li>旅行先のレストラン3倍ぼったくられて悔しくてかなわない</li></ul><p>17.~まい、～まいと</p><p>意味：「まい」絶対～しない、～しないだろう、「まいと」絶対～しないという気持ちで</p><p>接続：ｖる＋まい／まいと</p><p>例文：</p><ul><li>この難病は治るまい</li><li>ベトナムはもう電車ができたから、渋滞するまい。</li><li>事故で亡くなったかたの遺族の悲しみは消えまい <code>一段动词接まい可用连用形</code></li><li>スマホを二度とタクシーに落とすまいと、降りるときは必ず席を確かめている。　</li><li>また留年するまいと、ちゃんと大学の授業に出席するようになった。</li><li>そんなことあるまい</li></ul><p>18.～べからず</p><p>意味：するべきではないという意味。看板に書かれている場合が多い。会話では使わない。</p><p>接続：ｖる＋べからず　するべからず／すべからず</p><p>例文：</p><ul><li>産業廃棄物を山に捨てるべかたず</li><li>工業汚水を川に流すべからず</li><li>山にゴミを捨てるべからず</li><li>奥多摩川で「釣りをするべからあず」と書いてあるにも関わらず、友達は釣りをして魚を食べたことがある</li></ul><p>19.～べからざる</p><p>意味：～べからずと同じ意味。会話では使わない。古い本でよく見られる。読んで意味だけ分かればいい</p><p>接続：Vる＋べからざる・するべからざる／すべからざる</p><p>例文：</p><ul><li>横領は社会人としては許すべからざる犯罪である。</li><li>天空の城ラピュタは世界のアニメでは欠くべからざる名作である。</li><li>神様は各信者にとっては欠くベラざる存在である</li></ul><p>20.～ではあるまいし／じゃあるまいし</p><p>意味：～ではないのだから。注意やアドバイスをするときよく使うので、目上の人には使えない。</p><p>接続：名詞＋ではあるまいし・Vる＋わけ／の／ん＋ではあるまいし・Vた＋わけ／の／ん＋ではあるまいし</p><p>例文：</p><ul><li>子どもではあるまいし、そんな馬鹿なことをするな。</li><li>子供ジュあるまいし、社内で先輩を見たら挨拶するのは当たり前でしょう？</li><li>夢じゃあるまいし、宇宙へ行けるなんて考えるもんじゃないよ。</li><li>難しい英語の原稿を読むのではあるまいし、たくさん練習しなさい</li></ul><p>20.AべくしてBする</p><p>意味：Aになるのは当然だからBする。AとBが同じ場合が多い。古い書き言葉。「AなるべくBした」をよく使う。</p><p>接続：Vる＋べくして</p><p>例文：</p><ul><li>あんな高いところから飛び降りたから死ぬべくして死んだよ。</li><li>ここには交通標識一つもなかったから、今回の事故は起こるべくしておこった事件であった</li><li>いつも勝ち組は成功するべくして成功してるように見える。</li><li>私たちあ付き合うべくして付き合ってるわけですよ。</li></ul><p>21.~べくもない</p><p>意味：当然～だから、しなくてもよい</p><p>接続：ｖる＋べくもいない、するべくもない／すべくもない</p><p><code>望む、比べる、疑うなどとよく使われる</code></p><p>例文：</p><ul><li>アップルがうちより大きい会社ということは、比べるべくもありません。</li><li>主力メンバーが五人も抜けているから、勝つことは望むべくもない。</li><li>これ以上の給料は望むべくもないのに、どうしてほかの大手企業の面接に行きたがってるかかわかんない。</li><li>100％信じあっている二人のことだから離婚や別居など疑うべくもない。</li></ul><p>22.～のではあるまいか</p><p>意味：～のではありませんか／～なのでないだろうか</p><p>接続：Vる＋のではあるまいか／い形容詞＋のではあるまいか／な形容詞・名詞＋（なの）＋ではあるまいか</p><p>例文：</p><ul><li>今時、着物を着て町に出る人は珍しいのではあるまいか。</li><li>今年大きな地震がおこるのではあるまいかと心配しているが、会社の建物はしんちくだから、しっかりと耐震設備が備わってることを疑うべくもない。</li><li>あの二人は付き合っているのではあるまいか、と疑うほどいちゃついている</li></ul><table><thead><tr><th></th><th>AそばからB</th><th>AなりB</th><th>Aが早いかB</th><th>Aや否やB</th></tr></thead><tbody><tr><td>とき</td><td>過去のこと</td><td>過去のこと</td><td>過去のこと</td><td>過去のこと</td></tr><tr><td>AとBの関係</td><td>Bがよくないこと</td><td>Ｂがよくないこと</td><td>ＡとBが同時に</td><td>AとBが同時に</td></tr><tr><td>主語</td><td>AとBの主語は同じ</td><td>AとBの主語は同じ</td><td>異なってもOK</td><td>異なってもOK</td></tr><tr><td>回数</td><td>いつも</td><td>一回</td><td>一回</td><td>一回</td></tr><tr><td>意志動詞・無意志動詞</td><td>両方</td><td>両方</td><td>Bは意志動詞のみ</td><td>両方</td></tr></tbody></table><p>22.AそばからB</p><p>意味：Aしたら、またすぐ　Bの状態になる</p><p>接続：Vる／Vた＋そばから（Ｖたのほうが多い）</p><p>注意：</p><ul><li>文句や不満を言おう場合よく使う</li><li>いつも同じ結果になる</li><li>一回で終わることには使わない</li></ul><p>例文：</p><ul><li>このブランドのカバンは店内に置いたそばから、売り切れてしまう。</li><li>あのラーメン屋さんは、外に暖簾をかけたそばから、長い行列ができてしまう。</li><li>うちの子は部屋をからづけたそばから、おもちゃを散らかす。</li><li>給料をもらったそばから、彼女のプレゼント代で消えていく。</li><li>上司からいつも指示を聞いたそばから忘れると言われてるからメモ帳を持参している</li></ul><p>23.AなりB</p><p>意味：Aしたら、すぐBの状態になる。</p><p>接続：Vる＋なり</p><p>注意：</p><ul><li>一回に限る出来事</li><li>Bには意志や命令文は使えない。</li><li>Bはネガティブな場合が多い。</li></ul><p>例文：</p><ul><li>彼は車に乗るなり、猛スピードで走りだした</li><li>彼が玄関に入るなり、犬がやってきた。</li><li>娘は部屋に入るなり、変な声を出しながら、電気をつけた。</li></ul><p>24.Aが早いかB</p><p>意味：Aしたら、すぐにBの状態になる</p><p>Aが早いか、Bが早いかわからないぐらい同時に起こる</p><p>注意：Bは意志動詞のみで使われる</p><p>接続：Vる／ｖた＋が早いか</p><p>例文：</p><ul><li>チャイムが鳴るが早いか、生徒たちは弁当を取り出して食べ始める。</li><li>ラーメン次郎に行くときは、メニューは決まっているからお店に入るが’早いか、自販機から大盛ラーメンを買っている。</li><li>息子はご飯を食べ終わるが早いか、外に遊びに行ってしまった。</li><li>空港で出会うが早いか激しくキスをするカップルを見て、羨んだ。</li></ul><p>25.Aや否やB</p><p>意味：Aするかしないか、わからないぐらいの短い時間でBが起きる</p><p>接続：Vる＋や否や</p><p>例文：</p><ul><li>彼はご飯を食べ終わるや否や、すぐに誰かに電話をかけていた。</li><li>野良猫はひな鳥を捕まえるや否や、獲物を咥えたまま木の上に逃げた。</li><li>子供は親の姿を見るや否や、泣き出した。容疑者は警察’が来るのを見るや否や逃げ出した。</li><li>川に糸を入れるや否や超でかい魚がとれた。</li></ul><p>26.よくも～ものだ</p><p>意味：本当に～したんだ。驚きや怒り、意外な気持ち、憎しみ、あきれなどの気持ちを強調した表現。</p><p>接続：よくも＋V普通／V可能／Vた＋ものだ。</p><p>例文：</p><ul><li>あんな罪を犯して、よくも平気でいられるものだ。</li><li>こんなところで、よくも仕事ができたものだ。</li><li>仕事をみたら、チーム全員がよく頑張ったものだと思います</li><li>よくもこんな狭い場所で住めるものですね。</li><li>明日試験なのに、よくもねられるものだな。</li><li>ほかに恋人がいるのに、よくも私の前で、私だけ愛してるとか言えるもんだな。</li></ul><p>27.～ないものは～ない</p><p>意味：絶対しない、できない。</p><p>接続：　V可能＋ないものは＋V可能＋ない</p><p>注意：二回否定したからといって、肯定の意味を持たないことに注意</p><p>例文：</p><ul><li>あの国は今戦争中だから、いくら行きたくても行けないものは行けない。</li><li>いくらお金を積んでも復縁できないものはできない。</li><li>このパソコンはそんなに高性能ではないから、ビデオ編集なんてできないものはできない。</li><li>両親が結婚させないものはさせない、と入れれたら、駈け落ちするしかない。</li><li>あの熱い眼鏡をかけた子に遠くの字を読ませようと思っても、見えないものは見えないって。</li></ul><p>28.～以外の何物でもない</p><p>意味：それ一つしかない、絶対～だ。</p><p>接続：名詞＋以外のなにものでもない</p><p>例文：</p><ul><li>こんなに毎日カレーを食べるなんてインド人以外のなにものでもない。</li><li>あんなに何度もお辞儀をするなんて日本じん</li><li>ヒョウ柄のシャツにとら柄のパンツを合わせるなんて大阪のおばちゃん以外のなにものでない</li><li>毎日遊んでばかりで少しも勉強しない人が会社作ってお金持ちになるなんて夢以外なにものでもない。</li></ul><p>29.～てからというもの</p><p>意味：Aして以来今もでBの状態が続く。</p><p>接続：Vて＋からというもの</p><p>例文：</p><ul><li>実家から離れてからというもの、規則正しい生活ができていない。</li><li>大学を卒業してからというもの、勉強という勉強をしていない。</li><li>３０歳になって病気をしてからというもの、普段の生活の気を付けるようになった</li><li>交通事故をしてからというもの、交通ルールをしっかり守るようになった。</li></ul><p>30.～ものなら</p><p>意味：もし～できるなら（話し手は～が絶対できないと思う）</p><p>接続：Vる（可能）＋ものなら</p><p>例文：</p><ul><li>殴れるものならばぐってみろ！</li><li>遠くに住んでいる好きな人に会えるものなら会ってキスしたい</li><li>できるもんならブラピに生まれ変わりたい</li><li>辛い物のは苦手なんだけど、食べられるもんなら激辛キムチを食べてみたい。</li><li>付き合えるもんなら石原さとみと付き会いたい！</li></ul><p>31.～ないものでもない</p><p>意味：全くできないことはない、少し可能性がある</p><p>接続：Vない＋ものでもない</p><p>例文：</p><ul><li>この会社で昇進できないものでもないけど、私の能力ではかなり難しそうだ。</li><li>今日中にこの仕事を終わらせろ、って言われたから、残業すればできないものでもないけどなあ…</li><li>チャンさんは日本語ができないものでもないけど、話していると、時々頭が混乱するよ</li><li>先日発売された新車、買えないものでもないけど、やちんが払えなくなりそうだ。</li></ul><p>32.～ものを</p><p>意味：AすればBになるのに</p><p>接続：な形容詞＋ものを（過去の話に使うことが多いので、～たものを、で使うことが多い）</p><p>例文：</p><ul><li>私に相談すればよかったものを、何とかお金を作ったのに。</li><li>毎日勤勉に宿題すればよかったものを、うちの子は夏休みの終わりになっていつも泣きながら宿題やってるよ。</li><li>社長は彼のためを思って厳しくしているものを、彼は社長の気持ちがわかってないな。</li><li>あの時予備の薬を持っておけばよかったものを、おかげで救急車で運ばれてしまった。</li></ul><p>33.～をものともせずに</p><p>意味：難しいことにも負けないで</p><p>接続：名詞＋ものともせずに</p><p>例文：</p><ul><li>困難をものともせずに前進しろ！</li><li>五体満足で生まれず、苦労させたが、障害をものともせず育ってくれた。</li><li>妻はうちの経済事情をものともせず、子供たちを立派に育ててくれた。</li><li>暑さをものともせず、炎の中に飛び込んで子供を助けた</li><li>幾多の困難をものともせず、彼は一代にして莫大な財産を築き上げた。</li></ul><p>34.～ないものだろうか</p><p>意味：～できそうなのに　できないのはなぜか</p><p>接続：Vない形＋ないものだろうか</p><p>例文：</p><ul><li>葬式の日に喧嘩している家族を見て、仲良くできないものだろうか、と感じた。</li><li>どうにか女性からモテないものだろうか、と毎日SNSを使って写真をアップyしたり、大量のメッセージを送っている。</li><li>彼女と仲良くできないものだろうかとせっせとプレゼントを運ぶ男たち。</li><li>古い電子レンジを使えないものだろうかと叩いてみたが、逆効果だっだ。</li><li>ちょっとでも痩せられないものだろうかと色々なダイエットを試している女性たちを見て冷ややかな目で見ている男性たち。</li></ul><p>35.せめてもの</p><p>意味：悪い状況の中の一つだけの良いこと　 「最小限。せいぜい」で、「十分ではないがやむを得ない。 現時点では満足すべき最低限の」 と </p><p>接続：せめてもの＋名詞</p><p>例文：</p><ul><li>泥棒に入られて金品すべて奪われたが、せめてもの救いは家宝の壺が取られてなかったことだ。</li><li>数多くの恋愛経験で実を結ばなかったが、せめてもの慰めは一人の親友が寄り添ってくれたことだ。</li><li>川でおぼれかけた子供を救われた両親は、助けてくれた彼に、せめてものお礼に高級和菓子をもって行った。</li><li>あの人は今まで散々私をだましてきたんだから、せめてもの報いで平手打ちをしてすぐ別れた。</li></ul><p>36.~こととて</p><p>意味：～というわけだから、～なので（古くて硬い表現）</p><p>接続：な形容詞＋な＋こととて　名詞＋の＋こととて</p><p>例文：</p><ul><li>まだ五歳の子供がしたこととて、何とか許してやってください。</li><li>まだ、仕事に未熟なこととて勘弁してください。</li><li>世間知らずのこととて、法律に反する行為をした場合は、罰を免れない。</li><li>紅葉の季節のこととて、モミジを見に行かずにいられない。</li><li>農家に甚大な被害が出たが、野生動物のしたこととて、悔しさをどこにぶつけたらよいか分からない。</li></ul><p>38.～ことなしに</p><p>意味：AをしないでBをする　AをしなければBできない</p><p>接続：Vる＋ことなしに</p><p>例文：</p><ul><li>グルメ（美食家）と名乗るからには、食べることなしに食べ物の評価はできない。</li><li>才能があっても練習することなしに何事もうまくならない。</li><li>編集することなしに放送される番組は視聴者を飽きさせることまちがいない。</li><li>酒、たばこを経験することなしに一人前の男になれないと主張する人もいるだろう。</li></ul><p>39.～ことだし</p><p>意味：いまは～なので、～から</p><p>接続：普通形　な形容詞＋（である）　名詞＋の（である）＋ことだし</p><p>例文：</p><ul><li>この現場は五人いることだし、私たちは別の現場に行こう。</li><li>今日は土曜であることだし、早めに仕事終わらせてパーティーしましょう。</li><li>子供も成人したことだし、老後は夫婦でのんびり過ごしましょう。</li><li>タクシーは頼んだことだし、荷物をまとめて出かけよう。</li><li>子供も妻も寝ていることだし、これでひとりの時間を楽しめる。</li></ul><p>40.AてもB過ぎることはない</p><p>意味：AしてもBには十分じゃない</p><p>接続：（いくら）＋ｖても＋ｖます＋過ぎることはない</p><p>例文：</p><ul><li>あの子は注意散漫だから何度言っても言いすぎることはない。</li><li>SNSでは個人名から性別まで偽れる、警戒してもし過ぎることはない</li><li>栄養ドリング（drink)をいくらのんでも飲み過ぎることはないと思っていたら、その人は死んだらしい。</li><li>真冬に外出するときは防寒着を着ても着すぎることはない。</li></ul><p>41.よほどのことだ</p><p>意味：普通以上、何か特別な理由がある</p><p>接続：事情＋よほどのことだ（会話：よっぽどのことだ）</p><p>例文：</p><ul><li>テレビでどのチャンネルを見ても同じニュースを報道しているので、よほどのことがあったのだろう。</li><li>感情を表さない彼女が嬉しそうに踊っているから、よほどのことだな。</li><li>あそこに人だかりができている、よほどのことがありそうだ。</li><li>社長は長い時間電話で話している、よほどのことがあって話している</li></ul><p>42.～もさることながら</p><p>意味：AはもちろんBもある</p><p>接続：名詞＋もさることながら</p><p>例文：</p><ul><li>人件費もさることながら、雑費も気になるところだ。</li><li>今の生活もさることながら、年金の有無が騒がれているの老後の生活も心配だ。</li><li>外交関係においてA国との貿易問題もさることながらB国との国境問題も放置できない。</li></ul><p>43.～までだ／までのことだ</p><p>意味：最後は～する</p><p>接続：Vる＋までだ／までのことだ</p><p>例文：</p><ul><li>来週までにお金を返さないなら、直接彼の家に入って取り返すまでだ。</li><li>セクハラ問題は、課長に話して解決しない場合は部長に話すまでのことだ。</li><li>どこの国に行ってもビザが切れたら母国に帰るまでのことだ。</li><li>さとみさん告白して断られたらグェンさんに告白してみるまでだ。それでもだめなら一生独身を貫くまでだ。</li></ul><p>44.～に限ったことではない</p><p>意味：AだけではないBも</p><p>接続：名詞＋に限ったことではない。</p><p>例文：</p><ul><li>欠陥住宅はこの家に限ったことではない。あの住宅メーカーの家はすべて疑わしい。</li><li>離婚による精神的ショックは夫婦に限ったものではなく子供にも大きな心の傷を与える。</li><li>この道の歩行者天国は土日に限ったことではなく、平日の祝日もやっているらしい。</li></ul><p>45.~を皮切りに</p><p>意味：～をはじめに、後ろが続く</p><p>接続：N＋を皮切りに </p><p>例文：</p><ul><li>彼女の発言を皮切りに彼は怒って暴言を吐き出した。</li><li>経営陣に反発していた彼を皮切りに、それまで彼に同町していた数人の社員が辞めていった。</li></ul><p>46.~をもって</p><p>意味：～があれば、～で　①以…；用…；拿…　②以…为限；到此为止。</p><p>接続：名詞＋をもって</p><p>例文：</p><ul><li>君の才能を持ってすればN1の漢字なんれ赤子の手をひねるようだろ。</li><li>その体力をもってすればプロのボクサーになれるよ。</li></ul><p>46.～をよぎなくされる</p><p>意味：仕方ないけどしないといけない、断れない。</p><p>接続：名詞＋を余儀なくされる。</p><p>例文：</p><ul><li>地震が発生し、電車に遅れが出たため、会議の時間変更を余儀なくされた。</li><li>焼きそばが無性に食べたかったのに売り切れのため、うどんを食べることを余儀なくされた。</li></ul><p>47.～をよぎなくさせる</p><p>意味：仕方ないけど相手にさせる</p><p>接続：N＋をよぎなくさせる</p><p>例文：</p><ul><li>工場内で起きた火災は建物内の従業員の避難を余儀なくさせた。</li><li>記録的豪雪は多くの車を足止めし。ドライバーたちを車中泊（しゃちゅうはく）することを余儀なくさせた。</li></ul><p>48.ところを</p><p>意味：～のに</p><p>接続：な形容詞＋ところを　名詞＋ところを</p><p>例文：</p><ul><li>おくつろぎのところ（を、）恐縮ですが、そろそろお時間です</li><li>正直に答えなくでもいいところを、真実を語り、相手を怒らせた。</li><li>盛り上がっているところ、みんなの前で喧嘩して水を差してしまった</li></ul><p>49.～ているところを見ると</p><p>意味：Aの状況からするとBが考えられる</p><p>接続：Vて＋いるところを見ると</p><p>例文：</p><ul><li>怒っているところを見ると、私の指摘は正しいようだ。</li><li>若い女性が道で泣き崩れているところを見ると、おそらく失恋したと推測する。</li></ul><p>50.～をくだらない</p><p>意味：最低でも～だ</p><p>接続：数詞＋をくだらない</p><p>例文：</p><ul><li>あの子のゲームする時間は一日三時間はくだらない。</li><li>おお、このステーキは二キロはくだらない。</li></ul><p>51.～をおいて</p><p>意味：～以外～ない</p><p>接続：名詞＋をおいて</p><p>例文：</p><ul><li>この気難しいお客さんを相手にできるのは彼をおいてほかにいない。</li><li>この味を出せるのは有名シェフかうちの母親をおいてはかにいない。</li><li>お金がほかをおいて大事だと考えている人の心は貧しい。</li></ul><p>52.～をよそに</p><p>意味：～は気にしないで</p><p>接続：名詞＋をよそに</p><p>例文：</p><ul><li>　宿題をする友達をよそに漫画を見て大笑いする私。</li><li>　お年寄りが立っているのをよそに優先席に座っておしゃべりを続ける学生たち。</li><li>　貧しい生活を送る人をよそに毎日ワインを片手に優雅に暮らす少数の富豪たち。</li></ul><p>53.~をかぎりに</p><p>意味：～を限りに</p><p>接続：N＋を限りに</p><p>例文：</p><ul><li>今週を限りに、土曜出勤をなくします</li><li>A社は経営（けいえい）破綻（はたん）しかけているから、次（つぎ）の取引（とりひき）を限りに契約破棄（はき）だ。</li></ul><p>54.～を踏まえて</p><p>意味：～も考えて～する</p><p>接続：名詞＋を踏まえて</p><p>例文：</p><ul><li>コンビニはあらゆるデータを踏まえて、在庫や次の日の発注を考えないといけない。</li><li>親が頭ごなしにしかるより、子供の気持ちも踏まえて解決策を出した方がいい。</li><li>会長の演説を踏まえて、今後の営業活動に励み（はげみ）ましょう！</li></ul><p>55.～を押して、押し切って</p><p>意味：～の問題があるけど</p><p>接続：名詞＋を押して</p><p>例文：</p><ul><li>嫌がる彼女の反対を押して家族に挨拶に行った。</li><li>困難を押し切って偉業を成し遂げた人の言葉は、重みがありますね。</li><li>医者の反対を押して治療を受け入れず亡くなった彼の人生は幸福だったのだろうか</li></ul><p>56.～を潮に</p><p>意味：潮（海水（かいすい）の流れ）あること（よくないことが多い）をやめるのにりょうどよい時</p><p>例文：</p><ul><li>討論中に話が変わったのを潮に席を立ち、トイレに行った。</li><li>彼は授業中にケータイ取り上げられたのを潮に、それを辞めるだろう。</li></ul><p>57.～を経て</p><p>意味：～の時間や経験をした後。</p><p>接続：名詞＋を経て</p><p>例文：</p><ul><li>5000年の時を経て完成された中国料理の味は格別だ。</li><li>超人的なトレーニングやプロテインの摂取を経て、彼は強靭な体を作り上げた。</li></ul><p>58.～を境に</p><p>意味：ある時から</p><p>接続：名詞＋を時に</p><p>例文：</p><ul><li>退職（退職）を境（さかい）に都会（とかい）を離れ、田舎（いなか）で自給自足（じきゅうじそく）の生活をする。</li><li>入社を境に学生気分を捨てなければと、生活習慣を見直す。</li><li>食中毒が報道されたのを境に急激に客が減ったのは言うまでもない（あたりまり）。</li></ul><p>59.~だけましだ</p><p>意味：良いとは言えないが、ほかの状況よりはまだ良い</p><p>接続：　普通形＋だけましだ　名詞／な形容詞＋である＋だけましだ</p><p>例文：</p><ul><li>うちの会社は彼の会社に比べ、一ヶ月（いっかげつ）でもボーナスが出るだけましだ。</li><li>私の夫は全く料理をしないの。ゆきさんの旦那さんは料理をしてくれるだけましよ。</li><li>部屋に下着泥棒が入ったが、金品が取られなかっただけましだ。</li></ul><p>　</p><p>60.～Aた分だけB</p><p>意味：Aをしました。その分Bに影響する。</p><p>接続：Vた＋分だけ</p><p>例文：</p><ul><li>仕事をして利益を上げた分だけ給料も増えるという会社に入りたい。</li><li>私は食べた分だけ太ってしまうので、セーブしなければならない。</li></ul><p>61.Aといっても、せいぜいBだけだ。</p><p>意味：というけれども、実際は…</p><p>接続：普通形＋と言っても　名詞＋といっても</p><p>例文：</p><ul><li><p>割引といってもせいぜい10パーセントだけだね。</p></li><li><p>小遣いと言ってもせいぜい二百円だけです。</p></li><li><p>この会社は給料が良いと言いてもせいぜいボーナスが年に二回出るだけだ</p></li></ul><p>62.ただ～のみだ。</p><p>意味：ただ～だけだ（のみ即为だけ的文语）</p><p>接続：ただ＋普通形＋のみだ　ただ＋（な形容詞／名詞）である＋のみ</p><p>例文：</p><ul><li>競技を終えた選手は、晴れ晴れとした表情でただ結果を待つのみだった。</li><li>戦争直後、人々はただ生きるのみで精一杯だった。</li><li>ただ厳しいのみではいい教育（きょういく）とは言えない。</li></ul><p>63.ただ～のみならず／のみか</p><p>意味：Aだけではない</p><p>接続：普通形＋のみならず／のみか　な形容詞／名詞＋である＋のみならず／のみか</p><p>例文：</p><ul><li>佐藤さんはただプロ野球の選手であるのみならず、歌手としても活躍しているすごい方だ。</li><li>新聞記者は政府から不正な金を受け取るのみならず、記事の内容まで政府に漏らしていたという。</li><li>あの歌手は若い人のみならず、老若男女に人気だ</li></ul><p>64.~と思いきや</p><p>意味：～と思ったら違った</p><p>接続：いろいろな形＋と思いきや（ます形　×）</p><p>例文：</p><ul><li>友達とドライブに行く途中に、後ろから車でついてきているかと思いきや、はぐれた。</li><li>さっきまで満腹だと言っていら子供が、もう食べないと思いきや全部食べてびっくりした。</li></ul><p>65.～ときたら</p><p>意味：～について言えば、（後ろにはマイナスの文が多い）</p><p>接続：名詞＋ときたら</p><p>例文：</p><ul><li>あの子ときたら、宿題もせずに帰るや否や友達と遊びに行った。</li><li>思春期のうちの子ときたら、反抗期で悪いことばかりして大変なんです。</li><li>あのお店ときたらうちが値下げしたとたん1円下げてくる、完全にはりあってるな。</li></ul><p>66.～とはいえ</p><p>意味：～といっても、～だが</p><p>接続：名詞／普通形＋とはいえ</p><p>例文：</p><ul><li>彼は若いとはいえ、礼儀正しく気配りのできる好青年だ。</li><li>インフラ整備のため、ここに道路ができるとはいえ、五年先の事らしい。</li><li>十月で暦の暦の上では秋とはいえまだ暑くて夏を感じさせる。</li></ul><p>67.～AといいBといい</p><p>意味：AもBも</p><p>接続：名詞＋といい＋名詞＋といい（形容詞・動詞　×）</p><p>例文：</p><ul><li>色といい形といい、これは最高の逸品ですな。</li><li>先生といいスタッフといい、ここは一流の学校。</li><li>田中氏といい佐藤氏といい、スキャンダルが多くて、政治家に対する不信感が払拭（ふっしょく）できないよ。</li></ul><p>68.～といえども</p><p>意味：～でも　普通そうすると予想されることをしない</p><p>接続：名詞／普通形＋といえども</p><p>例文：</p><ul><li>一流のプログラマーといえども、このソフトの開発は難しいだろう。</li><li>インターネットの専門家といえども、すべてのハッカーの侵入は防ぎきれない。</li></ul><p>69.～といったところだ</p><p>意味：思ったより多くなく～の程度だ　最高でも～だ、せいぜい～だ</p><p>接続：名詞＋といったところだ</p><p>例文：</p><ul><li>噂の有名店で食べたけど、味がいまいちだから商品価値は2000円といったところだ。</li><li>この辞書はざっと見て、二千ページといったところだ。</li></ul><p>70.～ともなしに、ともなく</p><p>意味：特に理由もなく～する　集中せずに～する。 「特に～する目的や意図がなく」という意味で、無意識に動作をしていることを表します。 </p><p>接続：Vる＋ともなく</p><p>注意：</p><p> 特に～する目的や意図がなく無意識に動作をしていることを表します。<br>主に**「見る」「聞く」「話す」「言う」「考える」「覚える」「行く」**など意志動詞に接続します。 </p><p> <strong>「疑問詞＋（助詞）＋ともなく</strong>」の形で、「何&#x2F;どこ&#x2F;いつ&#x2F;誰かははっきりわからないが」という意味を表します。 </p><p>例文：</p><ul><li>いつからともなく社内での報連相が減っていった。</li><li>誰からともなくカラオケに行こうと言い出して、深夜まで歌った</li><li>どこへ行くともなく歩いているとお金を拾った。やった。</li></ul><p>71.～と言っても過言ではない（言い過ぎではない）</p><p>意味：～と言ってもいい</p><p>接続：V普通／い形容詞＋と言っても過言ではない　名詞／な形容詞＋だ＋と言っても過言ではない</p><p>例文：</p><ul><li>味といい、香りといい、このコーヒーは世界一と言っても過言ではない。</li><li>福島第一原発の事故は、世界中を震撼させたと言っても過言ではない。</li><li>犬は動物界でも一番忠実な動物と言っても過言ではない。</li></ul><p>72.~としたところで　～としたって（会話）</p><p>意味：もし～しても、できても</p><p>接続：V可能形／V普通形／名詞+としたところで</p><p>例文：</p><ul><li>平社員の私が行くとしたところで、今回の騒動は収まりません。</li><li>社長がするとしたって絶対に失敗しないことはないでしょう。</li></ul><p>73.~と見える</p><p>意味：～だろう</p><p>接続：名詞／普通形＋と見える</p><p>例文：</p><ul><li>あそこのカップルの女性は、あんなに甘い声でせがんでいるから、よほどあのかばんを欲しいと見える。</li><li>ケータイを見たとたん急に出かけた。意中の人から連絡があったと見える。</li><li>苦労人と見える彼は人の苦労もわかる思いやりある人だ</li></ul><p>74.てっきり＋と思っていた　（てっきり）＋とばかり思っていた</p><p>意味：～したと思っていた</p><p>接続：てっきり＋いろいろな形＋と思っていた</p><p>例文：</p><ul><li>てっきり外でサッカーをしていると思っていた息子は、友達の家でゲームしていた。</li><li>あなたが注文したから、この料理てっきり食べると思ったのにもったいない！</li><li>二時間前に頼んだから、この仕事てっきり終わっているとおもってた。</li></ul><p>75.AというのもBからだ</p><p>意味：Aをしたのは、Bの理由がある</p><p>接続：というのも＋普通形＋からだ</p><p>例文：</p><ul><li>見ず知らずの人から話しかけられ、彼は困っていた。というのも彼は日本語が分からないからだ。</li><li>彼女は掛け持ちで働いている。というのも彼女の家族は貧しく、教育も、ろくに受けられなかったからだ。</li><li>あの人は羽振りがいい、というのも彼は急成長の会社の社長だ。</li></ul><p>76.Aと決まってB</p><p>意味：Aすると必ず、Bになると感じる</p><p>接続：Vる＋と決まって</p><p>例文：</p><ul><li>このバす会社のバスは、悪天候にあなると決まって10分以上遅れる</li><li>彼は遅刻常習犯なのに、パーティーとなると決まって早く来る。</li><li>私が旅行すると決まって雨が降る、私は雨男だ。</li></ul><p>77.AまいとしてB</p><p>意味:AしたくなくてBする</p><p>接続：V＋まいとして（一段动词去る）</p><p>例文：</p><ul><li>勉強中に彼女のことを考えまいとして必死に頭を振った</li><li>劣勢に立たされたが、負けまいとして頑張ったら最後に勝てた。</li><li>彼女を傷つけまいとして言った言葉が逆に怒らせてしまった。</li></ul><p>78.～とて</p><p>意味：～でも、～だって</p><p>接続：名詞＋とて</p><p>（Vるとて＝と言っての古い言い方）</p><p>例文：</p><ul><li>大臣とて人間だから感情的になって失言することもある</li><li>親とて失敗するときもあるが、その時どう対応すつかを子供に見せないといけない。</li><li>あの自動車会社とて、量産していれば、リコールの一回くらいあるものだ。</li></ul><p>79.まさか～とは思ってもみなかった</p><p>意味：～は全然考えなかった／知らなかった</p><p>接続：（まさか）＋普通形とは思ってもみなかった。</p><p>例文：</p><ul><li>まさかあの受付嬢と社長が付き合ってるとは思ってもみなかった。</li><li>ちょっとした出来心が、こんな大事件になるとは思ってもみませんでした。</li><li>ボランティアのつもりでやってことが多くの人を幸せにするとは思ってもみませんでした。</li></ul><p>80.まるで～かのようだ</p><p>意味：本当に～しているみたいだ</p><p>接続：まるで＋普通形＋かのようだ</p><p>例文：</p><ul><li>憧れの芸能人に会えて、まるで空を飛んでいるかのような気持ちになった。</li><li>大きい画面でグラフィックがきれいなゲームをするときは、まるでゲームの世界にいるかのような気分になる。</li><li>三年以上海外生活をしていると、帰国してからもまるでその国にいるかのような感覚になる。</li></ul><p>81.～AようでいてB</p><p>意味：Aの状態に見えるけどBである</p><p>接続：普通形＋ようでいて</p><p>例文：</p><ul><li>うちの子は昨日買ったお菓子のことを覚えていないようでいて、よく覚えている。</li><li>おしゃべりな彼女は私たちの会話を聞いてないようでいて全部聞いていて、ほかの人にばらした。</li><li>彼は英語が話せるようでいて、あまり意思疎通ができていなくて、会話の難しさを知った。</li></ul><p>82.～AようによってはB</p><p>意味：A次第でBにする／になる</p><p>接続：V（ます）＋ようによっては</p><p>例文：</p><ul><li>人の選びようによっては会社の経営に支障（障碍）をきたすこともある</li><li>どんなものでも使いようによっては、すぐ壊れたり長持ちしたりする。</li><li>ケータイも使いようによっては生活を便利にするが、複雑にすることもある。</li></ul><p>83.よほど～のようで／らしく</p><p>意味：とても～の様子で</p><p>接続：よほど＋普通形＋ようで（会話：よっぽど）</p><p>例文：</p><ul><li>赤ちゃんはおもちゃをよほど気に入ったようで、ずっと手から離さない。</li><li>彼らほよほど愛し合っているようで、反対されても別れない。</li><li>彼女は昨日のことでよほど怒ったようで、私と口をきいてくれない。</li></ul><p>84.～ばかりに</p><p>意味：Aだけが原因でBになる</p><p>接続：普通形＋ばかりに　な形容詞／名詞＋である＋ばかりに</p><p>例文：</p><ul><li>昨晩、ずっとゲームをしていて三時に寝たばかりに今朝起きられず仕事に遅刻してしまった。</li><li>ケチって、安い結婚指輪を買ってしまったばかりに、婚約破棄になってしまった。</li><li>昔の彼女との写真を捨てないでいたばかりに、今の彼女に嫉妬で叩かれた。</li></ul><p>85.～んばかりの、～んばかりに</p><p>意味：もうすぐ～になりそう</p><p>接続：Vない＋んばかりに</p><p>例文：</p><ul><li>うちの犬は、私が帰ると「さびしかったよ～」と言わんばかりに駆け寄ってくる。</li><li>はちきれんばかりの自分のお腹を見て、ダイエットしようと決意した。</li></ul><p>（はちきれん：大き過ぎて　破れそうなさま）</p><ul><li>子供たちが溢れんばかりの笑顔を見せて遊ぶ光景が見られる国は幸せ度が高いと言える。</li></ul><p>86.～とばかりに</p><p>意味：どう見ても～の様子だ</p><p>接続：丁寧形／普通形＋とばかりに</p><p>例文：</p><ul><li>今がチャンス！とばかりに香川選手はゴールを決めた。</li><li>ここで止まれとばかりに警棒を激しく振る警備員を見て、思わず笑った。</li><li>手伝えとばかりにあごで指図する上司にイラッと来た</li></ul><p>87.~ごとく、～ごとき</p><p>意味：～ように</p><p>接続：普通形＋ごとく　な形容詞／名詞＋である＋ごとく　名詞＋の＋ごとく　名詞＋の＋ごとき＋名詞</p><p>例文：</p><ul><li><p>彼は怒る時、ライオンのごとく怖い形相で怒るからおっかない</p></li><li><p>私が家へ帰ると、息子は子犬のごとく、駆け寄ってくる。</p></li><li><p>彗星のごとく現れた彼女は美人で優しくてスタイルが良くて最高の女性。</p></li></ul><p>88.~めく</p><p>意味：~らしくなる、感じる</p><p>接続：名詞＋めく</p><p>例文：</p><ul><li>彼女に恨みがあるとはいえ死体をバラバラにするなんて、彼の犯罪は狂気めいている。</li><li>彼はプロの選手めいたことを言うけど、実力が伴ってないな。</li><li>子供めいた言い訳をしたら首になった。</li></ul><p>89.~にかかっている</p><p>意味：～次第</p><p>接続：名詞＋にかかっている</p><p>例文：</p><ul><li>この契約は彼のプレゼン( presentation )にかかっている。</li><li>試合の勝敗が彼の打席にかかっている。</li><li>音響良し、照明良し、空調良し。番組の成功は俳優の体調にかかっている。</li></ul><p>90.～にかこつけて</p><p>意味：～を理由に（託ける　かこつける　 托故，抓口实，借口 ）</p><p>接続：名詞＋にかこつけて</p><p>例文：</p><ul><li>安さにかこつけて、絶対食べられないと思いつつ、野菜を袋に詰め込む。</li><li>記念日にかこつけて、欲しかったブランド品を彼氏に買わせる。</li><li>犬の散歩にかこつけて、かわいいあの子に会いに行こう！</li></ul><p>91.～にかまけて</p><p>意味：～ばかりして／気にして（かまける　感ける　忙于 专心于）</p><p>接続：名詞＋にかまけて</p><p>例文：</p><ul><li>勉強にかまけて彼女とのデートをすっぽかした（捨てる）。</li><li>仕事にかまけて、子供との時間をあまり過ごせず、子供との関係が悪くなってきたので改善せねば！</li><li>友達との遊びにかまけて、家族と過ごす時間が減ってはいけない。</li></ul><p>92.～にかたくない</p><p>意味：～と考えるのは簡単だ</p><p>接続：名詞＋にかたくない（に難くない）</p><p>例文：</p><ul><li>昔の自分を思い出せば、新入社員の心情は想像にかたくない。</li><li>告白して振られるより、告白しないほうがいいという彼の気持ちは理解するにかたくない。</li><li>今までの傾向から、彼女は窮地におちいったら、逃げ出すのは予想にかたくない。</li></ul><p>93.～には及ばない</p><p>意味:～しなくてもいい　～の程度ではない</p><p>接続：名詞／vる＋には及ばない</p><p>例文：</p><ul><li>どんなに頑張ってもパク先生の才能には及ばない。</li><li>一回一人できたことがありますので、心配には及びません。</li><li>すべての学生にアンケートするには及ばない。抜き打ち （予告なしに、突然物事を行うこと。） で調べるかランダム（ random ）に聞いてみよう</li></ul><p>94.～（だけ）にとどまらず</p><p>意味：～だけでなく、もっと～（止まらず）</p><p>接続：名詞／ｖる＋にとどまらず　名詞／な形容詞＋　である＋にとどまらず　い形容詞＋だけにとどまらず</p><p>例文：</p><ul><li>島川さんはオフライン授業にとどまらずオンライン授業でもすさまじい （恐ろしい。ものすごい。驚くほど激しい。） 才能を見せた。</li><li>シャラポアさんはテニスプレーヤーにとどまらず、彼女の美貌を生かしてモデルとしても活躍している。</li><li>この食べ物はおいしいだけにとどまらず、体にいいときたら食べない手はない（一定，不得不）。</li></ul><p>95.~にのぼる</p><p>意味：最低でも～くらいだ</p><p>接続：名詞（数字が多い）＋にのぼる</p><p>例文：</p><ul><li>今回の彼女が貰った成功報酬は十億円にのぼった。</li><li>開業当初、三人だった小さな会社が今では社員100人に上り（のぼり）、社長も嬉しそうだ。</li><li>未成年者で肥満（ひまん）とされる人の数が世界で1億2400万人に上り、過去40年間で10倍になった。</li><li>大阪府警では、免職処分を受けた警察官の数が八人と過去最多に上ったことが分かりました。</li></ul><p>　</p><p>96.~にいたる、にいたって</p><p>意味：～という重大な事態になって、～の場合は極端・特別で～まで</p><p>接続：Vる／名詞＋に至る（に至って）</p><p>例文：</p><ul><li>皆が反省する中、彼に至っては反省の色がまるでない。</li><li>私が五年前脱サラし、会社を立ち上げ今に至る経緯をお話します。</li><li>大学へほとんど行かずにバイトばかりしていた彼は、留年という状況に至って、親に本当のことを言わざるを得なかった。</li><li>地震による被害は、津波や土砂崩れなど二次被害の影響もあり、次第に広範囲に広がり、ついに死者三十名に至った。</li></ul><p>97.～Aにひきかえ（引き換え）B</p><p>意味：AとBは反対だ</p><p>接続：普通形＋（の）にひきかえ　（動詞・形容詞は（の）を入れます）</p><p>例文：</p><ul><li>みゆきさんの旦那さんってカッコ良くて、優しくて家事もしてくれるなんて羨ましい限りですよ。それにひきかえ私の夫は……</li><li>私の周りの友達は将来のために毎月貯金をしている、それにひきかえ私は給料はすべて使いたいし、全然貯金をしないタイプだ。</li><li>野田さんはきれいで頭が良くてスタイルも良いのにひきかえ私は正反対だ。</li></ul><p>98.～にかかわる</p><p>意味：～のような重大なことに関係する　～に影響する</p><p>接続：名詞＋に関わる</p><p>例文：</p><ul><li>この任務は命にかかわるので、油断せずに常に注意しなければならない。</li><li>この 筆記試験（笔试） が大きく合否（合格と不合格）に関わります。そしてこの合否が今後の人生に大きくかかわる。</li><li>現在、日本語教育に関わる仕事をしております。</li></ul><p>99.~にして</p><p>意味：～で／～だから（程度強調）</p><p>接続：名詞＋にして</p><p>例文:</p><ul><li>試験最終日にして熱が出てしまった…。解熱剤を飲んででも行くしかない。</li><li>彼は医者にして、歌手としても活躍するアーティストでもある。</li><li>トリプルアクセルなんて羽生結弦選手にしてようやく成し遂げる事のできる技だ。</li></ul><p>100.～に即して</p><p>意味：～に従って、基準にして</p><p>接続：名詞＋に即して</p><p>例文：</p><ul><li>メディアは事実に即した報道するべきだ。何があっても嘘を放送してはならない。</li><li>サービス産業は常にニーズの変化に即していくことが重要だ。</li><li>高校の規則に即して髪を黒しなければならない。</li></ul><p>101.~にたえない</p><p>意味：～することに耐えられない　～に値しない</p><p>感謝・悲しみ・同情など感情を表す名詞につくと、「我慢できない程、～だ」という　感情を強調する表現になる。</p><p>接続：Vる／名詞＋に耐えない</p><p>例文：</p><ul><li>この事故現場は見るに耐えない無残さだ</li><li>日本語の森を早く知っていればN1に合格しただろうに……。後悔に耐えない。</li><li>N1に満点で合格することができた。これはもう感激に耐えない。</li><li>学生があまりに楽しくなさそうな顔をしていて見るにたえない。</li></ul>]]></content>
    
    
    <summary type="html">看日本语之森的n1语法视频所做的一些笔记，基本上是抄板书ORZ</summary>
    
    
    
    <category term="日语" scheme="https://www.yeding.top/categories/%E6%97%A5%E8%AF%AD/"/>
    
    
    <category term="日语" scheme="https://www.yeding.top/tags/%E6%97%A5%E8%AF%AD/"/>
    
    <category term="语法学习" scheme="https://www.yeding.top/tags/%E8%AF%AD%E6%B3%95%E5%AD%A6%E4%B9%A0/"/>
    
  </entry>
  
  <entry>
    <title>《标准日语语法》学习笔记——第一章绪论</title>
    <link href="https://www.yeding.top/post/8cecd96a62b8/"/>
    <id>https://www.yeding.top/post/8cecd96a62b8/</id>
    <published>2021-01-03T23:18:59.000Z</published>
    <updated>2021-04-16T04:30:16.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><h2 id="语法"><a href="#语法" class="headerlink" title="语法"></a>语法</h2><h3 id="什么是语法"><a href="#什么是语法" class="headerlink" title="什么是语法"></a>什么是语法</h3><p>语法指各个语言单位的构成，结构、性质、类别、以及不同层次之间的关系和发展的客观规则。</p><h2 id="日语的语言单位"><a href="#日语的语言单位" class="headerlink" title="日语的语言单位"></a>日语的语言单位</h2><h3 id="词"><a href="#词" class="headerlink" title="词"></a>词</h3><p>词是最基本的语言单位之一，从意义和功能上考虑，主要分为两大类：</p><ul><li><strong>内容词（自立語）</strong>：具有明确词汇意义，内容实在的词。</li><li><strong>功能词（付属語)</strong>：主要或完全表示语法功能的词。</li></ul><p><strong>内容词（自立語)</strong>,又可划分为：</p><ul><li><strong>名词（名詞）</strong>：表示人、事物、概念等名称的词：如先生、恋人、精神（せいしん）等。</li><li><strong>代名词（代名词）</strong>:指代名词的词，是名词的抽象和概括，具体所指只有在具体语境中才能确认,如：わたくし、彼女（かのじょ）、それ、あそこ等。</li><li><strong>数词（数詞）</strong>：表示数目、数量、<strong>顺序</strong>等概念的词。如：12、306、5万円等。</li></ul><blockquote><p>以上三类词，总称为体言</p></blockquote><ul><li><strong>动词（動詞）</strong>：用来叙述动作、作用、变化、存在等的词：如：帰る、する、なる等。</li><li><strong>形容词（形容詞)</strong>：用来描述性质、状态、感情、感觉等的词，且以“い”为词尾的词。如：優しい、暖かい、嬉しい等。</li><li><strong>形容动词（形容動詞）</strong>：也是用来描述性质、状态、感情、感觉等的词，一般以其词干为基本形。如：偉大、清らか、上手、静か等。</li></ul><blockquote><p>以上三类词总称为用言</p></blockquote><ul><li><strong>连体词</strong>：连接并以用来修饰、限定体言、只能构成定语的词。如：この、ほんの、あらゆる、いわゆる等。</li></ul><p>参考：<a href="https://blog.csdn.net/sinat_29315627/article/details/73435509">日语语法（六）：连体词</a></p><ul><li><strong>副词</strong>：从状态、程度等方面对用言进行修饰、限定的词，或对陈述语气进行先导的词，如のんびり、ゆっくり、かなり等。</li></ul><p>参考：<a href="https://blog.csdn.net/sinat_29315627/article/details/73433936">日语语法（五）：副词</a></p><blockquote><p>以上两类词的基本功能在于构成修饰成分</p></blockquote><blockquote><p>修饰成分统指修饰或限制名词、动词或形容词的成分。分为定语、状语两种。…“修饰动词或者形容词的成分是状语”。定语常用形容词、数量词（物量）、名词、代词充当 .</p></blockquote><ul><li><strong>接续词</strong>：介于词、词组、分句、句子等之间，把它们连接起来并表明其间关系的词。从意义上看，可表示，顺接，逆接，并列，累加、转换话题等。如：したがって、じかし等。（主要就是连接两个相对独立的成分，表达他们之间的关系）</li><li><strong>感叹词</strong>：表示感叹、呼唤、应答等的词，常位于句首或独立成句。如：あら、ほら等。</li></ul><blockquote><p>以上两类词的共同特点是都可以在句中构成独立成分</p></blockquote><p><strong>功能词（付属語)</strong>，可分为以下两类：</p><ul><li>助词：没有或很少有词汇意义，以接在内容词后起语法作用为职能的词。如：が、や、けれども、は、ばかり、よ等。</li><li>助动词：也没有词汇意义，接在内容词后起语法作用，主要用于句末增添语法意义，且有词形变化。如ます、れる、た、らしい等。</li></ul><blockquote><p>日语助动词是附属词的一种，不能单独使用，它主要附在用言的后面，也可以接在体言、助词、助动词后面，起各种语法作用，有词尾变化。</p></blockquote><h3 id="词组"><a href="#词组" class="headerlink" title="词组"></a>词组</h3><p>词组（連語）是由词构成的在句子起词的作用且大于词的语言单位。需要由两个或两个以上的内容词，通过一定语法手段组合起来。词义比词更完善。</p><h3 id="句素"><a href="#句素" class="headerlink" title="句素"></a>句素</h3><p>日语将句子分解得出的多是“内容词+功能词”的语言单位。其中内容词表示意义概念，功能词表示该内容词在句中的地位。例如：</p><p>明日｜10時に｜私は｜西安から｜彼女に｜電話を｜かける。</p><p>分解后的七个部分，其中五个都为“内容词+功能词”的形式。</p><p>句素（文素）是直接构成句子的要素，它既还有表示内容、意义、概念的部分，也还有反映它在句中地位，表明它与其他词关系的部分。前者由内容词构成，后者除用功能词外，还可以借助于内容词的形态变化（如上例中的“かける”）。由单词构成的句素叫简单句素，由词组构成的句素称为扩展句素。</p><h3 id="句子"><a href="#句子" class="headerlink" title="句子"></a>句子</h3><p>句子（文）也是最基本的语言单位之一。作为一个句子，至少应具备以下几个特征：</p><ol><li>内容上，相对完整地表达说话人的思想、感情。</li><li>形式上，其前后有所停顿，表示它的相对独立性。</li><li>功能上，能完成一个相对简单的交际功能。</li><li>结构上，具有一定的结构形式。</li></ol><p>在句法研究中，句子是最大的语言单位，句素是其下位单位。</p><h3 id="语段"><a href="#语段" class="headerlink" title="语段"></a>语段</h3><p>语段（連文）是大于句子的语言单位，是篇章的直接构成要素。语段由内容相关的大于1个的句子组合而成，表达较完整的思想和感情。</p><p>语段是篇章法研究的基本单位。</p><h3 id="篇章"><a href="#篇章" class="headerlink" title="篇章"></a>篇章</h3><p>篇章（談話·文章），包括口头发表的话语，也包括书面写出的文章。作为一个篇章，至少有以下几个特征：</p><ol><li>有独立的内容，有明确的主题</li><li>形式上可以独立存在。</li><li>可完成一个交际功能、</li><li>由一个或几个结构关联的语段构成。</li></ol><p>篇章是篇章法研究的最大语言单位，也是语法研究的最大语言单位。</p><h2 id="日语的语法特征"><a href="#日语的语法特征" class="headerlink" title="日语的语法特征"></a>日语的语法特征</h2><p>日语属于语言类型中的粘着语</p><h3 id="粘着"><a href="#粘着" class="headerlink" title="粘着"></a>粘着</h3><p>一般地说，日语的内容词不能直接入句，只有其后粘附上功能词，才能进入句子。其内容词在句子中的地位，与句中其他词的关系，都是由其后的功能词表示的。</p><h3 id="活用与粘着"><a href="#活用与粘着" class="headerlink" title="活用与粘着"></a>活用与粘着</h3><p>日语的动词、形容词、形容动词和助动词是有词形变化的，但其本身并不都能辨识语法意义，有许多词形变化，是为了粘附某些功能词而发生的。</p><p>例如动词、形容词、形容动词和助动词在借助表假定条件的接续助词“ば”的时候，都必须先变成假定形，才能与“ば”相接。</p><h3 id="语序"><a href="#语序" class="headerlink" title="语序"></a>语序</h3><p>语序指一个句子里各个成分的顺序。在正常情况下日语句子的谓语总是处于句子的最后；定语，状语总是处在被修饰的词语之前。相对灵活的一面是，由于功能词可以明确标志处主语、宾语、补语等句子成分，因此成分的顺序并非严格地不能变动。</p>]]></content>
    
    
    <summary type="html">今天开始系统学习日语语法！</summary>
    
    
    
    <category term="日语" scheme="https://www.yeding.top/categories/%E6%97%A5%E8%AF%AD/"/>
    
    
    <category term="日语" scheme="https://www.yeding.top/tags/%E6%97%A5%E8%AF%AD/"/>
    
    <category term="语法学习" scheme="https://www.yeding.top/tags/%E8%AF%AD%E6%B3%95%E5%AD%A6%E4%B9%A0/"/>
    
  </entry>
  
  <entry>
    <title>SpringBoot常用注解</title>
    <link href="https://www.yeding.top/post/5e47ee7383cc/"/>
    <id>https://www.yeding.top/post/5e47ee7383cc/</id>
    <published>2020-12-31T07:26:02.000Z</published>
    <updated>2020-12-31T08:09:54.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><h4 id="SpringBootApplication"><a href="#SpringBootApplication" class="headerlink" title="@SpringBootApplication"></a>@SpringBootApplication</h4><p>核心注解。包括**@Configuration**，<strong>@EnableAutoConfiguration</strong>，<strong>@ComponentScan</strong>。</p><h4 id="Configuration"><a href="#Configuration" class="headerlink" title="@Configuration"></a>@Configuration</h4><p>从spring3.0开始用于定义配置类，可替换xml配置文件，该类中包含被@Bean注解的方法， 这些方法将会被<strong>AnnotationConfigApplicationContext</strong>或<strong>AnnotationConfigWebApplicationContext</strong>类进行扫描，并用于构建bean定义，初始化Spring容器。 </p><h4 id="EnableAutoConfiguration"><a href="#EnableAutoConfiguration" class="headerlink" title="@EnableAutoConfiguration"></a>@EnableAutoConfiguration</h4><p>实现**@Configuration<strong>注解的类中bean的自动装配。 帮助SpringBoot应用将所有符合条件的</strong>@Configuration**配置都加载到当前SpringBoot，并创建对应配置类的Bean，并把该Bean实体交给spring容器进行管理。 </p><h4 id="ComponentScan"><a href="#ComponentScan" class="headerlink" title="@ComponentScan"></a>@ComponentScan</h4><p>默认装配标识了**@Controller**，<strong>@Service</strong>，<strong>@Repository</strong>，<strong>@Component</strong>注解的类到spring容器中。</p><h4 id="Bean"><a href="#Bean" class="headerlink" title="@Bean"></a>@Bean</h4><p>Spring的@Bean注解用于方法上，该方法会产生一个Bean对象，然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次，随后这个Spring将会将这个Bean对象放在自己的IOC容器中。</p><h4 id="Conditional"><a href="#Conditional" class="headerlink" title="@Conditional"></a>@Conditional</h4><p>设置产生bean的条件，只有满足了该条件，bean才能正常创建。防止因对象为实例化等原因而产生的空指针或其他异常。与**@Bean**搭配使用，如 @Conditional(TestCondition.class) 意味着仅当TestCondition存在于ClassPath中时才生效，一般使用他的分支。</p><p>常见conditional注解</p><p><strong>@ConditionalOnBean</strong> 框架中存在某个Bean时生效</p><p><strong>@ConditionalOnMissingBean</strong> 在Bean不存在时生效</p><p><strong>@ConditionalOnClass</strong>框架中存在某个Class时生效</p><p><strong>@ConditionalOnMissingClass</strong>在Class不存在时生效</p><p><strong>@ConditionalOnWebApplication</strong> 当前是web环境</p><p><strong>@ConditionalOnNotWebApplication</strong> 当前不是web环境</p><p><strong>@ConditionalOnProperty</strong> 当前框架中是否包含特定的属性</p><p><strong>@ConditionalOnJava</strong> 当前是否存在某个Java版本</p><h4 id="MapperScan"><a href="#MapperScan" class="headerlink" title="@MapperScan"></a>@MapperScan</h4><p> mybatis的注解，通过使用@MapperScan可以指定要扫描的Mapper类的包的路径，比如：</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@MapperScan(basePackages=&#123;&quot;com.yeding.dao&quot;&#125;)</span></span><br></pre></td></tr></table></figure><p>在启动类使用该注解后无需在mapper类中加上**@mapper**</p><h4 id="ServletComponentScan"><a href="#ServletComponentScan" class="headerlink" title="@ServletComponentScan"></a>@ServletComponentScan</h4><p> 在启动类上使用该注解后，Servlet、Filter、Listener可以直接通过**@WebServlet**、<strong>@WebFilter</strong>、<strong>@WebListener</strong>注解自动注册 </p><p>####@Component、@Repository、@Service、@Controller</p><p>我们一般使用 <strong>@Autowired</strong>注解让 Spring 容器帮我们自动装配 bean。要想把类标识成可用于 <strong>@Autowired</strong> 注解自动装配的 bean 的类,可以采用以下注解实现：</p><ul><li><strong>@Component</strong> ：通用的注解，可标注任意类为 <code>Spring</code> 组件。如果一个 Bean 不知道属于哪个层，可以使用**@Component** 注解标注。</li><li><strong>@Repository</strong> : 对应持久层即 Dao 层，主要用于数据库相关操作。</li><li><strong>@Service</strong> : 对应服务层，主要涉及一些复杂的逻辑，需要用到 Dao 层。</li><li><strong>@Controller</strong> : 对应 Spring MVC 控制层，主要用于接受用户请求并调用 Service 层返回数据给前端页面。</li></ul><p>可以用**@Service(“userDetailsService”)**等方式标注bean的id，默认id为首字母小写的类名。</p><h4 id="RestController、-ResponseBody"><a href="#RestController、-ResponseBody" class="headerlink" title="@RestController、@ResponseBody"></a>@RestController、<strong>@ResponseBody</strong></h4><p><strong>@RestController</strong>注解是**@Controller<strong>和</strong>@ResponseBody**的合集,表示这是个控制器 bean,并且是将函数的返回值直 接填入 HTTP 响应体中,是 REST 风格的控制器。</p><p>单独使用 <strong>@Controller</strong>不加 <strong>@ResponseBody</strong>的话一般使用在要返回一个视图的情况，这种情况属于比较传统的 Spring MVC 的应用，对应于前后端不分离的情况。<strong>@Controller</strong> +<strong>@ResponseBody</strong> 返回 JSON 或 XML 形式数据</p><h4 id="RequestMapping"><a href="#RequestMapping" class="headerlink" title="@RequestMapping"></a>@RequestMapping</h4><p> <strong>@RequestMapping</strong>是一个用来处理请求地址映射的注解，可用于类或方法上。用于类上，表示类中的所有响应请求的方法都是以该地址作为父路径。 它有方法级别注解和类级别注解两种类型。其属性为：</p><p>(1) <strong>value:</strong> 指定request的地址</p><p>(2) <strong>method:</strong> 指定请求的method类型， GET、POST、PUT、DELETE等</p><p>(3) **params:**指定request中包含的某些参数值，作为方法的输入</p><p>   @RequestParam(value &#x3D; “disable”, required &#x3D; false)</p><pre><code>value 值为传入的参数required 设置为 false，若传入的 value 为空值，则报错required 设置为 true，若传入的 value 为空值，则返回 null </code></pre><p>(4) consumes: 指定处理请求的提交内容类型，例如 application&#x2F;json, text&#x2F;html;</p><p>(5) produces: 指定返回的内容类型，仅当request请求头中的(Accept)类型中包含该指定类型才返回</p><p>(6) headers: 指定request中包含某些指定的header值，让该方法处理请求</p><h4 id="GetMapping、-PostMapping…"><a href="#GetMapping、-PostMapping…" class="headerlink" title="@GetMapping、@PostMapping…"></a>@GetMapping、@PostMapping…</h4><p>分别用于处理HTTP的get请求、post请求等。相当于指定method类型的**@RequestMapping**</p><h4 id="PathVariable和-RequestParam"><a href="#PathVariable和-RequestParam" class="headerlink" title="@PathVariable和@RequestParam"></a>@PathVariable和@RequestParam</h4><p>用于前端向后端传值时，获取url中的信息。</p><p>如：</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">GetMapping(<span class="string">&quot;/klasses/&#123;klassId&#125;/teachers&quot;</span>)</span><br><span class="line"><span class="keyword">public</span> List&lt;Teacher&gt; <span class="title function_">getKlassRelatedTeachers</span><span class="params">(</span></span><br><span class="line"><span class="params">         <span class="meta">@PathVariable(&quot;klassId&quot;)</span> Long klassId,</span></span><br><span class="line"><span class="params">         <span class="meta">@RequestParam(value = &quot;type&quot;, required = false)</span> String type )</span> &#123;</span><br><span class="line">...</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>如果我们请求的 url 是：<strong>&#x2F;klasses&#x2F;{123456}&#x2F;teachers?type&#x3D;web</strong></p><p>那么我们服务获取到的数据就是：<strong>klassId&#x3D;123456,type&#x3D;web</strong>。</p><h4 id="RequestBody"><a href="#RequestBody" class="headerlink" title="@RequestBody"></a>@RequestBody</h4><p> 用于读取 Request 请求（可能是 POST,PUT,DELETE,GET 请求）的 body 部分并且<strong>Content-Type 为 application&#x2F;json</strong> 格式的数据，接收到数据之后会自动将数据绑定到 Java 对象上去。系统会使用HttpMessageConverter或者自定义的HttpMessageConverter将请求的 body 中的 json 字符串转换为 java 对象。</p><h4 id="Slf4j"><a href="#Slf4j" class="headerlink" title="@Slf4j"></a>@Slf4j</h4><blockquote><p>lf4j是一个日志标准，使用它可以完美的桥接到具体的日志框架，必要时可以简便的更换底层的日志框架，而不需要关心具体的日志框架的实现（slf4j-simple、logback等） </p></blockquote><p>该注解会自动创建<strong>loggger</strong>类的bean。并注入被注解的类，相当于<code>private  final Logger log = LoggerFactory.getLogger(XXX.class)</code></p><p>idea需要安装lombok插件，否则会找不到注解生成的log变量从而报错。</p><h4 id="Autowired、-Resource"><a href="#Autowired、-Resource" class="headerlink" title="@Autowired、@Resource"></a>@Autowired、@Resource</h4><p>实现容器的自动装配。spring会在应用上下文中为被注解的属性寻找其依赖的bean。是DI（依赖注入）的核心。</p><p>两者的异同：</p><p>1、<strong>@Autowired</strong>与**@Resource**都可以用来装配bean。都可以写在字段上，或写在setter方法上。</p><p>2、<strong>@Autowired</strong>默认按类型装配（属于spring规范），默认情况下必须要求依赖对象必须存在，如果要允许null 值，可以设置它的required属性为false，如：@Autowired(required&#x3D;false) ，如果我们想使用名称装配可以结合@Qualifier注解进行使用</p><p>3、<strong>@Resource</strong>（属于J2EE规范），默认按照名称进行装配，名称可以通过name属性进行指定。如果没有指定name属性，当注解写在字段上时，默认取字段名进行按照名称查找，如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是，如果name属性一旦指定，就只会按照名称进行装配。</p><p>它们的作用相同都是用注解方式注入对象，但执行顺序不同。<strong>@Autowired</strong>先byType，<strong>@Resource</strong>先byName。</p><h4 id="value、-ConfigurationProperties、-PropertySource"><a href="#value、-ConfigurationProperties、-PropertySource" class="headerlink" title="@value、 @ConfigurationProperties、 @PropertySource"></a>@value、 @ConfigurationProperties、 @PropertySource</h4><p>用于从配置文件中读取配置信息，以下默认配置文件为application.yml：</p><ul><li><strong>@value</strong>：用于读取比较简单的信息，功能很强大，除了能够注入配置信息，还可以直接注入普通字符串、操作系统属性、表达式结果甚至是其它Bean的属性等等，格式一般为： <strong>@Value(“${property}”)</strong> ，property为key值。</li><li><strong>@ConfigurationProperties</strong> ： 可以把同类的配置信息自动封装成实体类 ，用于大量属性值和配置文件的映射。格式一般为 <strong>@ConfigurationProperties(prefix &#x3D; “library”)</strong> ,library为实体类的类名。</li><li><strong>@PropertySource</strong> ：用于指定配置文件，可以与**@value**和</li></ul><p><strong>@ConfigurationProperties</strong>搭配使用</p><p>详细分析参考：<a href="https://cloud.tencent.com/developer/article/1497518">【小家Spring】Spring中读取配置的方式，@Value、@PropertySource、@ConfigurationProperties使用详解</a></p><h4 id="Transactional"><a href="#Transactional" class="headerlink" title="@Transactional"></a>@Transactional</h4><p>在方法上使用时表示该方法开启事务，在类上使用表示 该类的<strong>public</strong> 方法都配置相同的事务属性信息 。属于Spring提供的声明式事务的实现方式之一。注解的属性里可以设置事务的传播行为、隔离规则、回滚规则、事务超时、是否只读</p><p>详细分析参考<a href="https://www.jianshu.com/p/befc2d73e487">Spring 事务 – @Transactional的使用</a></p><h4 id="Aspect"><a href="#Aspect" class="headerlink" title="@Aspect"></a>@Aspect</h4><p>AOP的核心，作用是把当前类表示为一个切面供容器读取。必要时须再加上**@Component**</p><h4 id="Pointcut"><a href="#Pointcut" class="headerlink" title="@Pointcut"></a>@Pointcut</h4><p> JoinPoint的集合，是程序中需要注入Advice的位置的集合，指明Advice要在什么样的条件下才能被触发，在程序中主要体现为书写切入点表达式。</p><p>Advice(通知、切面)： 某个连接点所采用的处理逻辑，也就是向连接点注入的代码， AOP在特定的切入点上执行的增强处理。</p><ol><li><strong>@Before</strong>： 标识一个前置增强方法，相当于BeforeAdvice的功能.</li><li><strong>@After</strong>： <strong>final增强</strong>，不管是抛出异常或者正常退出都会执行.</li><li><strong>@AfterReturning</strong>： 后置增强，似于AfterReturningAdvice, 方法正常退出时执行.</li><li><strong>@AfterThrowing</strong>： 异常抛出增强，相当于ThrowsAdvice.</li><li><strong>@Around</strong>： 环绕增强，相当于MethodInterceptor.</li></ol><p> ~待续</p>]]></content>
    
    
    <summary type="html">SpringBoot常用注解总结</summary>
    
    
    
    <category term="技术" scheme="https://www.yeding.top/categories/%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="Java" scheme="https://www.yeding.top/tags/Java/"/>
    
    <category term="SpringBoot" scheme="https://www.yeding.top/tags/SpringBoot/"/>
    
  </entry>
  
  <entry>
    <title>绿皮书N2语法错题汇总</title>
    <link href="https://www.yeding.top/post/50b39b8439ac/"/>
    <id>https://www.yeding.top/post/50b39b8439ac/</id>
    <published>2020-11-13T20:19:03.000Z</published>
    <updated>2020-12-01T04:02:47.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><h1 id="1-5课"><a href="#1-5课" class="headerlink" title="1~5课"></a>1~5课</h1><p>1.この薬は、（）上でお飲みください。<br>　1　食事が終わった　2　医師が説明した　３　説明書をよく読んだ</p><p>错选：1 <code>正选：3</code></p><blockquote><p>说明：上で前后为同一主语</p></blockquote><p>2.家がぐらっと（）、本箱が倒れた。</p><p>１．揺れるにあたって　２　揺れたかと思うと　３　揺れているうちに　４　揺れている最中に</p><p>错选： 1 <code>正选：2</code></p><blockquote><p>说明：感到晃了一下立马</p></blockquote><h1 id="6-10课"><a href="#6-10课" class="headerlink" title="6~10课"></a>6~10课</h1><p> 1.うちの子は魚のことにかけては（）。</p><p>　1　博士といってもいいくらいだ　2.　あまり関心がないようだ　3.かなり好きらしい</p><p>错选：3 <code>正选：1</code></p><blockquote><p>说明：にかけて 在某个领域上</p></blockquote><p> 2.田中さんはわたしに対して（）。</p><p>1　お姉さんのような人だ　2　最も信頼できる　3　特別に親切にしてくれる</p><p>错选：1 <code>正选 ：2</code></p><blockquote><p>说明：に対して 1. 以……为对象做某事，对……抱有某种情感　2.与……截然不同</p></blockquote><p> 3.本日の運動会は（）に沿って順番に進めていきます。</p><p>1　プログラム　2　いつもの年　3　学年</p><p>错选：3 <code>正选：1</code></p><blockquote><p>说明： に沿って前接具有基准意义的词 如ルール、方針、マニュアル等</p></blockquote><p> 4.運動量の増減（）、体重が変化した。</p><p>1　につれて　2　にしたがって　3　につけて</p><p>错选：1 <code>正选：2</code></p><blockquote><p>说明：につれて　一方の変化<br>にしたがって両方の変化<br>につけて　每当…就…</p></blockquote><p> 5.季節の移り変わり（）、山の木々の様子もいろいろに変化する。</p><p>1　につれて　２　に伴い　3　次第では</p><p>错选：1 <code>正选 ：2</code></p><blockquote><p>说明：に伴う　用于规模比较大，整体性的变化 是正式的书面用语</p></blockquote><p> 6.これはレモネード（）飲み物だ。</p><p>1　といった　2　という　3　といって</p><p>错选：1 <code>正选：2</code></p><blockquote><p>说明：といった对前面数个例子的汇总，という所谓…是…</p></blockquote><p> 7.関西地方の五大学の協力（）、資源の有効利用についての研究が行われている</p><p>1　に伴って　2　の際に　3　のもとに　4　をもとにして</p><p>错选：4 <code>正选：3</code></p><blockquote><p>说明：のもとに在…的状态下 をもとにして以…为基础</p></blockquote><h1 id="11-15课"><a href="#11-15课" class="headerlink" title="11~15课"></a>11~15课</h1><p>1.試合の勝ち負け（）、自分が大きな失敗をしなかったことはうれしい。</p><p>1　にかかわらず　2　はともかく　3　もかまわず</p><p>错选：2 <code>正选：1</code></p><blockquote><p>にかかわらず　 不论，不管<br>はともかく　暂且不提，带有消极意味</p></blockquote><p>2.両親には僕の気持ちを丁寧に説明したが、説明したからといって（）わけではない。</p><p>1　わからない　2　わかってもらえる　3　わかってもらえない</p><p>错选 ：3 <code>正选：2</code></p><blockquote><p>が表示转折，即便和父母好好的说明自己的心情也并非就能得到他们的理解</p></blockquote><p>3.中山さんは料理のこととなると（）。</p><p>1　いろいろ知っている　2　お母さんを思い出すらしい　3　急に熱心になる</p><p>错选：1 <code>正选：3</code></p><blockquote><p>となると表示针对……相关的事时，态度发生的巨大变化</p></blockquote><p>4.この計画を実行するとすれば、（）。</p><p>1　ぜひ手伝ってください　2　貯金を全部おろそう　3　いくらぐらいかかりますか</p><p>错选：1 <code>正选：3</code></p><blockquote><p>とすれば假设意味较强，适合想象暂时不太可能发生的事情</p></blockquote><p>5.大きい地震が（）、この家はたちまち壊れてしまうだろう。</p><p>1　起こらないことには　2　起ころうものなら　3　起こるとなったら</p><p>错选：3 <code>正选：2</code></p><blockquote><p>（よう）ものなら　后接产生的严重结果</p></blockquote><p>6.手術を（）早いほうがいいと医者に言われた。</p><p>1　しようものなら　2　するものなら　3　するとしたら　4　しようとしたら</p><p>错选：4 <code>正选：3</code></p><blockquote><p>しようとしたら后面一般是客观叙述的语气，而不是建议</p></blockquote><h1 id="16-20课"><a href="#16-20课" class="headerlink" title="16~20课"></a>16~20课</h1><p>1.中川先生と出会ったことによって、わたしは（）。</p><p>1　うれしかった　2　へいへん良かった　3　大きく変わった</p><p>错选：1 <code>正选：3</code></p><blockquote><p>によって因为和中川先生相遇，我发生了大的改变</p></blockquote><p>2.今週は忙しかったことだし、（）。</p><p>1　とてもつかれた　2　メールもできなかった　3　週末はゆっくり休みたい</p><p>错选：2 <code>正选：1</code></p><blockquote><p>だし后续接表达说话人判断、希望、意志的句子</p></blockquote><p>3.彼はクラスのリーダーだけに、（）。</p><p>1　わたしはかれが好きだ　2　頑張ってもらおう　3　責任が重い</p><p>错选：2 <code>正选：3</code></p><blockquote><p>　　だけに　正因为…所以…</p></blockquote><p>4.彼女はモデルになりたい（）、無理なダイエットをしているそうだ</p><p>1　ばかりに　2　からには　3　ことだし</p><p>错选：2 <code>正选：1</code></p><blockquote><p>ばかりに　就因为……导致了不寻常的事情发生</p></blockquote><p>5.おいしそうなお弁当だったけど、（）ので、食べようがなかった</p><p>1　箸もスプーンもなかった　2　おなかが痛かった　3時間がなかった</p><p>错选：2 <code>正选：1</code></p><blockquote><p>ようがない强调毫无办法，即使想做也无法做</p></blockquote><p>6.風邪を引いたので、学校に（）。</p><p>1 行けません　2　行きかねます　3　行きがたいです</p><p>错选：3 <code>正选：1</code></p><blockquote><p>　　がたい不用于能力上无法做到的事情，主要前接表示心理活动的动词（想像する　理解する　信じる）以及表示发言行为的动词（言う　表す）等</p></blockquote><p>7.（）ところ、気分が悪くなってしまった。</p><p>1　買ってきた薬を飲んだ　2　仕事で疲れた　3　一日中暑かった</p><p>错选：3 <code>正选：1</code></p><blockquote><p>たところ试着做了什么，然后……</p><p>一日中＋暑かった</p></blockquote><p>8.彼は（）あげく、弁護士になるのをあきらめてしまった</p><p>1　試験に落ちた　2　妻と相談した　3十年も勉強を続けた</p><p>错选：2 <code>正选：3</code></p><blockquote><p>あげく:经过……之后，最终得到遗憾的结果，前接持续的状态，这里只有3是持续性状态</p></blockquote><p>9.あちこち面接を受けた末に、（）。</p><p>1　やっとこの会社に合格した　2　あの会社にどうしても入りたい</p><p>3　まだ就職（しゅうしょく）が決まっていない</p><p>错选：3 <code>正选：1</code></p><blockquote><p>末（すえ）に 与あげく类似，表示做了各种…之后最终得到某种结果，但不一定表示遗憾结果，这里只有1表示结果</p></blockquote><p>10.間違ってほかの人にメールを送ってしまった（）、とんでもない誤解をされた。</p><p>1　ばかりか　2　ばかりに　3　ばかりで　4　ばかり</p><p>错选：3 <code>正选：2</code></p><blockquote><p>ばかりか 不仅<br>ばかりで 全是<br>ばかり 刚刚</p></blockquote><p>11.自分でこの犬を飼うと（）、責任を持って面倒をみなければならない。</p><p>1　いった以上　2　言った上に　3　言った末に　4　言った上で</p><p>错选：4 <code>正选：1</code></p><blockquote><p>言った以上　既然<br>言った上に 并且<br>言った末に 在…之后<br>言った上で 在…基础上</p></blockquote><p>12.この天気では、今日はハイキングには（）。</p><p>1　行きえない　2　行けない　3　行きかねる　4　行きがたい</p><p>错选：1 <code>正选：2</code></p><blockquote><p>得る・得ない一般不表示人的特定的日常能力和状况　而是表示常理上的可能性</p></blockquote><h1 id="21-26课"><a href="#21-26课" class="headerlink" title="21~26课"></a>21~26课</h1><ol><li>メールの返事を一件書くくらい（）。</li></ol><p>1　大変ですよ　2　簡単でしょう　3　一時間かかりました</p><p>错选：3 <code>正选：2</code></p><blockquote><p>くらい前接说话人认为程度轻的词语，即写回信很轻松</p></blockquote><ol start="2"><li><p>歯を抜いた後（）おそれがあります。</p><p>1　食欲がない　2　熱が高い　3　熱が出る</p></li></ol><p>错选：2 <code>正选：3</code></p><blockquote><p>なるおそれがある　强调变成负面状态，书面语</p></blockquote><ol start="3"><li>文章を書くことは（）にほかならない。</li></ol><p>1　楽しい　2　難しくないの　3　考えること　</p><p>错选：1 <code>正选：3</code></p><blockquote><p>にほかならない 表示说话人决断性的判断，除此以外并非其他</p></blockquote><ol start="4"><li>大学に入るには入学試験に（）。</li></ol><p>1　合格したほうがいい　2　合格するべきだ　3　合格しなければならない</p><p>错选：2 <code>正选：3</code></p><blockquote><p>要上大学入学考试（）1.合格比较好2.应该合格3.必须合格</p></blockquote><ol start="5"><li>（）は、借りたらすぐ返すものだ。</li></ol><p>1　1,000円　2　お金　3　あの時のお金</p><p>错选：1 <code>正选：2</code></p><blockquote><p>もの 表示一般性的常识 借了钱就应该立刻换</p></blockquote><p>6.来年の試験に合格したかったら、（）。</p><p>1　もっと努力しようではないか　2　もっと努力するものだ　3　もっと努力することだ</p><p>错选：1 <code>正选：3</code></p><blockquote><p>ことだ 用于表示忠告、规劝的表达方式，最好不用于尊长</p></blockquote><p>7.失敗作と言っても、（）。これで十分です。</p><p>1　作り直さないことです　2　作り直すことはありません　3作り直さないものです</p><p>错选：3 <code>正选：2</code></p><blockquote><p>辞書形+ことはない 表示没有做某事的必要</p></blockquote><p>8.犬が飼い主にそっくりなのが（）たまらなかった</p><p>1　おかしくて　2　珍しくて　3　笑って</p><p>错选：2 <code>正选：1</code></p><blockquote><p>てしょうがない・てしかたがない・てたまらない　前接表示说话人的感情，欲望等的词语，不接说话人的动作，事物的特征等</p></blockquote><ol start="9"><li>今日は会議があるので（）。</li></ol><p>1　出勤せずにはいられない　2　出勤しないではいられない　3　出勤しなければならない</p><p>错选：1 <code>正选：3</code></p><blockquote><p>にはいられない　表示自然而然流露出来的个人的情感和行为，情不自禁做某事</p></blockquote><p>10.地球上から戦争を（）。</p><p>1　なくさなければならない　2　なくさざるを得ない　3　なくさないわけにはいかない</p><p>错选：2 <code>正选：1</code></p><blockquote><p>ざるを得ない　虽然不想那样做，但因为没有办法只好做… 主语多为第一人称</p></blockquote><p>11.この文章は誰かの文章をまねしたように（）。</p><p> 1 思えないわけにはいかない　2　思えてたまらない　3　思えてならない</p><p>错选：2 <code>正选：3</code></p><blockquote><p>思う　不能用たまらない<br>てたまらない 主要是生理上的感觉<br>てならない 自发，自然产生的感觉。比如思える，就不用てたまらない 。比てたまらない郑重</p></blockquote><p>12.（）を食べてみたいものだ。</p><p>1　あ、このおいしそうな料理　2　今日はユリさんのうちで手料理　3　一度、その珍しい魚</p><p>错选：2 <code>正选：3</code></p><blockquote><p>～たいものだ・～てほしいものだ　用于叙述发自内心的希望以及普通的愿望。不直接叙述具体的希望和要求</p></blockquote><p>13.国にいたころ（）家族でハイキングに行ったものです</p><p>1　一度　2　よく　3　いつか</p><p>错选：3 <code>正选：2</code></p><blockquote><p>ものだ　不用于叙述只发生过一次的事情</p></blockquote><p>14.この人は変わった種類のトイレットペーパーを集めているのか。（）ものだ。</p><p>1　いろんな人がいる　2　変な人の　3　一般には理解されない</p><p>错选：2 <code>正选：1</code></p><blockquote><p> 自然な理由は、前の文が、～いるのかと個人的な感想なので、次のaも個人的な感想で自然です。<br> bは、一般的な考えを言っているので、少し不自然です </p></blockquote><p>15.もっと給料が高くて楽な仕事は（）ものか。</p><p>1　見つからない　2　見つけない　3　見つけたい</p><p>错选：2　<code>正选：1</code></p><blockquote><p>工作为主语 选自动词見つかる</p></blockquote><p>16.ついに長年の夢がかなって、彼女はどれほど（）ことだろう</p><p>1　喜びの　2　よかった　3　うれしかった</p><p>错选：1 <code>正选:3</code></p><blockquote><p>接続　疑問詞＋普通形（な形ーな／ーである・名ーである）＋ことだろう・ことか<br>1选项不符合接续</p></blockquote><p>17.留学生に日本語だけでなく、日本の文化や社会のことも（）。</p><p>1　学ぶものだ　2　学ばせるものだ　3　学びたいものだ　4　学んでほしいものだ</p><p>错选：3 <code>正选：4</code></p><blockquote><p>3 学びたいものだ　的动作是由说话人“我”做的<br>4 学んでほしいものだ　“表示希望别人学习…：动作主体是学生</p></blockquote>]]></content>
    
    
    <summary type="html">新完全掌握日语能力考试错题汇总与解析</summary>
    
    
    
    <category term="日语" scheme="https://www.yeding.top/categories/%E6%97%A5%E8%AF%AD/"/>
    
    
    <category term="日语" scheme="https://www.yeding.top/tags/%E6%97%A5%E8%AF%AD/"/>
    
    <category term="语法学习" scheme="https://www.yeding.top/tags/%E8%AF%AD%E6%B3%95%E5%AD%A6%E4%B9%A0/"/>
    
  </entry>
  
  <entry>
    <title>Java多线程学习笔记</title>
    <link href="https://www.yeding.top/post/08fb3a6a9e16/"/>
    <id>https://www.yeding.top/post/08fb3a6a9e16/</id>
    <published>2020-10-26T18:39:32.000Z</published>
    <updated>2020-11-14T00:12:56.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><h1 id="1-基本概念"><a href="#1-基本概念" class="headerlink" title="1.基本概念"></a>1.基本概念</h1><p>程序：</p><blockquote><p> 用某种编程语言(java、python等)编写，能够完成一定任务或者功能的代码集合,是指令和数据的有序集合，是<strong>一段静态代码</strong>。 </p></blockquote><p>进程：</p><blockquote><p> 进程是程序的一次执行过程，是系统运行程序的基本单位 </p></blockquote><p>线程：</p><blockquote><p> 线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。 </p></blockquote><h3 id="并发和并行的区别："><a href="#并发和并行的区别：" class="headerlink" title="并发和并行的区别："></a>并发和并行的区别：</h3><ul><li><strong>并发：</strong> 同一时间段，多个任务都在执行 (单位时间内不一定同时执行)；</li><li><strong>并行：</strong> 单位时间内，多个任务同时执行。</li></ul><h3 id="为什么使用多线程实现并发："><a href="#为什么使用多线程实现并发：" class="headerlink" title="为什么使用多线程实现并发："></a>为什么使用多线程实现并发：</h3><p>多进程方式确实可以实现并发，但使用多线程，有以下几个好处：</p><ul><li>进程间的通信比较复杂，而线程间的通信比较简单，通常情况下，我们需要使用共享资源，这些资源在线程间的通信比较容易。</li><li>进程是重量级的，而线程是轻量级的，故多线程方式的系统开销更小。</li></ul><h3 id="进程与线程的区别："><a href="#进程与线程的区别：" class="headerlink" title="进程与线程的区别："></a>进程与线程的区别：</h3><p>进程是一个独立的运行环境，而线程是在进程中执行的一个任务。他们两个本质的区别是<strong>是否单独占有内存地址空间及其它系统资源（比如I&#x2F;O）</strong>：</p><ul><li><p>进程单独占有一定的内存地址空间，所以进程间存在内存隔离，数据是分开的，数据共享复杂但是同步简单，各个进程之间互不干扰；而线程共享所属进程占有的内存地址空间和资源，数据共享简单，但是同步复杂。</p></li><li><p>进程单独占有一定的内存地址空间，一个进程出现问题不会影响其他进程，不影响主程序的稳定性，可靠性高；一个线程崩溃可能影响整个程序的稳定性，可靠性较低。</p></li><li><p>进程单独占有一定的内存地址空间，进程的创建和销毁不仅需要保存寄存器和栈信息，还需要资源的分配回收以及页调度，开销较大；线程只需要保存寄存器和栈信息，开销较小。</p></li></ul><p>另外一个重要区别是，<strong>进程是操作系统进行资源分配的基本单位，而线程是操作系统进行调度的基本单位</strong>，即CPU分配时间的单位 。</p><p><img src="https://image.yeding.top/img/JVM_Runtime_DataFiled.png"><br>从上图可以看出：一个进程中可以有多个线程，多个线程共享进程的<strong>堆</strong>和<em>*方法区 (JDK1.8 之后的元空间)**资源，但是每个线程有自己的**程序计数器</em>*、<strong>虚拟机栈</strong> 和 <strong>本地方法栈</strong>。</p><p><strong>总结：</strong> <strong>线程是进程划分成的更小的运行单位。线程和进程最大的不同在于基本上各进程是独立的，而各线程则不一定，因为同一进程中的线程极有可能会相互影响。线程执行开销小，但不利于资源的管理和保护；而进程正相反。</strong></p><h3 id="Java线程状态切换"><a href="#Java线程状态切换" class="headerlink" title="Java线程状态切换"></a>Java线程状态切换</h3><p>Java线程模型定义了 6 种状态，在任意一个时间点，一个线程有且只有其中一个状态：</p><ul><li><code>新建（New）</code>：新建的Thread，尚未开始。</li><li><code>运行（Runable）</code>：包含操作系统线程状态中的Running、Ready，也就是处于正在执行或正在等待CPU分配时间的状态。</li><li><code>无限期等待（Waiting）</code>：处于这种状态的线程不会被分配CPU时间，等待其他线程唤醒。</li><li><code>限期等待（Timed Waiting）</code>：处于这种状态的线程不会被分配CPU时间，在一定时间后会由系统自动唤醒。</li><li><code>阻塞（Blocked）</code>：在等待获得排他锁。</li><li><code>结束（Terminated）</code>：已终止的线程。</li></ul><p><img src="https://image.yeding.top/img/thread_status.jpg"> </p><h3 id="线程死锁"><a href="#线程死锁" class="headerlink" title="线程死锁"></a>线程死锁</h3><p>线程死锁描述的是这样一种情况：多个线程同时被阻塞，它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞，因此程序不可能正常终止。</p><p>如下图所示，线程 A 持有资源 2，线程 B 持有资源 1，他们同时都想申请对方的资源，所以这两个线程就会互相等待而进入死锁状态。</p><p><img src="https://image.yeding.top/img/2019-4%E6%AD%BB%E9%94%811.png" alt="线程死锁示意图 "></p><p>产生死锁必须具备以下四个条件：</p><ol><li>互斥条件：该资源任意一个时刻只由一个线程占用。</li><li>请求与保持条件：一个进程因请求资源而阻塞时，对已获得的资源保持不放。</li><li>不剥夺条件:线程已获得的资源在末使用完之前不能被其他线程强行剥夺，只有自己使用完毕后才释放资源。</li><li>循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。</li></ol><h1 id="2-Volatile"><a href="#2-Volatile" class="headerlink" title="2.Volatile"></a>2.Volatile</h1><h2 id="计算机内存模型"><a href="#计算机内存模型" class="headerlink" title="计算机内存模型"></a>计算机内存模型</h2><p>计算机在执行程序时，每条指令都是在CPU中执行的，而执行指令过程中，势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存（物理内存）当中的，这时就存在一个问题，由于CPU执行速度很快，而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的多，因此如果任何时候对数据的操作都要通过和内存的交互来进行，会大大降低指令执行的速度。因此在CPU里面就有了高速缓存。<strong>当程序在运行过程中，会将运算需要的数据从主存复制一份到CPU的高速缓存当中，那么CPU进行计算时就可以直接从它的高速缓存读取数据和向其中写入数据，当运算结束之后，再将高速缓存中的数据刷新到主存当中</strong>。举个简单的例子，比如下面的这段代码：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">i = i + 1;</span><br></pre></td></tr></table></figure><blockquote><p>当线程执行这个语句时，会先从主存当中读取<code>i</code>的值，然后复制一份到高速缓存当中，然后 CPU 执行指令对<code>i</code>进行加1操作，然后将数据写入高速缓存，最后将高速缓存中<code>i</code>最新的值刷新到主存当中。</p></blockquote><p>这个代码在单线程中运行是没有任何问题的，但是在多线程中运行就会有问题了。在多核 CPU 中，每条线程可能运行于不同的 CPU 中，因此 <strong>每个线程运行时有自己的高速缓存</strong>（对单核CPU来说，其实也会出现这种问题，只不过是以线程调度的形式来分别执行的）。比如同时有两个线程执行这段代码，假如初始时<code>i</code>的值为<code>0</code>，那么我们希望两个线程执行完之后i的值变为2。但是事实会是这样吗？</p><p>可能出现这种情况：初始时，<strong>两个线程分别读取<code>i</code>的值存入各自所在的 CPU 的高速缓存当中，然后 线程1 进行加1操作，然后把<code>i</code>的最新值1写入到内存。此时线程2的高速缓存当中<code>i</code>的值还是0，进行加1操作之后，<code>i</code>的值为1，然后线程2把i的值写入内存。最终结果<code>i</code>的值是1，而不是2。这就是著名的缓存一致性问题</strong>。通常称这种被多个线程访问的变量为共享变量。</p><p>为了解决缓存不一致性问题，通常来说有以下两种解决方法：</p><ul><li>通过在总线加<code>LOCK#</code>锁的方式</li><li>通过 <strong>缓存一致性协议</strong></li></ul><blockquote><p>这两种方式都是硬件层面上提供的方式。</p></blockquote><p>在早期的 CPU 当中，是通过在总线上加<code>LOCK#</code>锁的形式来解决缓存不一致的问题。因为 CPU 和其他部件进行通信都是通过总线来进行的，如果对总线加LOCK#锁的话，也就是说阻塞了其他 CPU 对其他部件访问（如内存），从而使得只能有一个 CPU 能使用这个变量的内存。比如上面例子中 如果一个线程在执行 <code>i = i +1</code>，如果在执行这段代码的过程中，在总线上发出了<code>LCOK#</code>锁的信号，那么只有等待这段代码完全执行完毕之后，其他CPU才能从变量i所在的内存读取变量，然后进行相应的操作。这样就解决了缓存不一致的问题。但是上面的方式会有一个问题，<strong>由于在锁住总线期间，其他CPU无法访问内存，导致效率低下</strong>。</p><p>所以就出现了缓存一致性协议。最出名的就是 Intel 的<code>MESI协议</code>，<code>MESI协议</code>保证了每个缓存中使用的共享变量的副本是一致的。它核心的思想是：<strong>当CPU写数据时，如果发现操作的变量是共享变量，即在其他CPU中也存在该变量的副本，会发出信号通知其他CPU将该变量的缓存行置为无效状态，因此当其他CPU需要读取这个变量时，发现自己缓存中缓存该变量的缓存行是无效的，那么它就会从内存重新读取</strong>。</p><p><img src="https://image.yeding.top/img/volatile_1.jpg"></p><h2 id="Java内存模型"><a href="#Java内存模型" class="headerlink" title="Java内存模型"></a>Java内存模型</h2><p>在Java虚拟机规范中试图定义一种Java内存模型（<code>Java Memory Model，JMM</code>）来屏蔽各个硬件平台和操作系统的内存访问差异，以实现让Java程序在各种平台下都能达到一致的内存访问效果。那么Java内存模型规定了程序中变量的访问规则，往大一点说是定义了程序执行的次序。<strong>注意，为了获得较好的执行性能，Java内存模型并没有限制执行引擎使用处理器的寄存器或者高速缓存来提升指令执行速度，也没有限制编译器对指令进行重排序。也就是说，在java内存模型中，也会存在缓存一致性问题和指令重排序的问题</strong>。</p><p><strong>Java内存模型规定所有的变量都是存在主存当中（类似于前面说的物理内存），每个线程都有自己的工作内存（类似于前面的高速缓存）。线程对变量的所有操作都必须在工作内存中进行，而不能直接对主存进行操作。并且每个线程不能访问其他线程的工作内存</strong>。</p><p>在Java中，执行下面这个语句：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">i  = 10;</span><br></pre></td></tr></table></figure><p>执行线程必须先在自己的工作线程中对变量<code>i</code>所在的缓存行进行赋值操作，然后再写入主存当中。而不是直接将数值<code>10</code>写入主存当中。那么Java语言本身对 原子性、可见性以及有序性提供了哪些保证呢？</p><h3 id="原子性"><a href="#原子性" class="headerlink" title="原子性"></a>原子性</h3><blockquote><p>即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断，要么就都不执行。</p></blockquote><p><strong>在Java中，对基本数据类型的变量的读取和赋值操作是原子性操作，即这些操作是不可被中断的，要么执行，要么不执行</strong>。上面一句话虽然看起来简单，但是理解起来并不是那么容易。看下面一个例子，请分析以下哪些操作是原子性操作：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">x = 10;        //语句1</span><br><span class="line">y = x;         //语句2</span><br><span class="line">x++;           //语句3</span><br><span class="line">x = x + 1;     //语句4</span><br></pre></td></tr></table></figure><p>咋一看，有些朋友可能会说上面的4个语句中的操作都是原子性操作。<strong>其实只有<code>语句1</code>是原子性操作，其他三个语句都不是原子性操作</strong>。</p><ul><li><code>语句1</code>是直接将数值<code>10</code>赋值给<code>x</code>，也就是说线程执行这个语句的会直接将数值<code>10</code>写入到工作内存中。</li><li><code>语句2</code>实际上包含2个操作，它先要去读取<code>x</code>的值，再将<code>x</code>的值写入工作内存，虽然读取x的值以及 将x的值写入工作内存 这2个操作都是原子性操作，但是合起来就不是原子性操作了。</li><li>同样的，<code>x++</code>和 <code>x = x+1</code>包括3个操作：读取<code>x</code>的值，进行加<code>1</code>操作，写入新的值。</li></ul><p>也就是说，<strong>只有简单的读取、赋值（而且必须是将数字赋值给某个变量，变量之间的相互赋值不是原子操作）才是原子操作</strong>。不过这里有一点需要注意：<strong>在32位平台下，对64位数据的读取和赋值是需要通过两个操作来完成的，不能保证其原子性。但是好像在最新的JDK中，JVM已经保证对64位数据的读取和赋值也是原子性操作了</strong>。</p><p>从上面可以看出，Java内存模型只保证了基本读取和赋值是原子性操作，如果要实现更大范围操作的原子性，可以通过<code>synchronize</code>d和<code>Lock</code>来实现。由于<code>synchronized</code>和<code>Lock</code>能够保证任一时刻只有一个线程执行该代码块，那么自然就不存在原子性问题了，从而保证了原子性。</p><h3 id="可见性"><a href="#可见性" class="headerlink" title="可见性"></a>可见性</h3><blockquote><p>可见性是指当多个线程访问同一个变量时，一个线程修改了这个变量的值，其他线程能够立即看得到修改的值。</p></blockquote><p>对于可见性，Java提供了<code>volatile</code>关键字来保证可见性。<strong>当一个共享变量被<code>volatile</code>修饰时，它会保证修改的值会立即被更新到主存，当有其他线程需要读取时，它会去内存中读取新值</strong>。而普通的共享变量不能保证可见性，因为普通共享变量被修改之后，什么时候被写入主存是不确定的，当其他线程去读取时，此时内存中可能还是原来的旧值，因此无法保证可见性。</p><p>另外，通过<code>synchronized</code>和<code>Lock</code>也能够保证可见性，<code>synchronized</code>和<code>Lock</code>能保证同一时刻只有一个线程获取锁然后执行同步代码，并且在释放锁之前会将对变量的修改刷新到主存当中。因此可以保证可见性。</p><h3 id="有序性"><a href="#有序性" class="headerlink" title="有序性"></a>有序性</h3><blockquote><p>即程序执行的顺序按照代码的先后顺序执行。</p></blockquote><blockquote><p>指令重排序，一般来说，处理器为了提高程序运行效率，可能会对输入代码进行优化，它不保证程序中各个语句的执行先后顺序同代码中的顺序一致，但是它会保证程序最终执行结果和代码顺序执行的结果是一致的。</p></blockquote><p><strong>处理器在进行重排序时是会考虑指令之间的数据依赖性，如果一个指令Instruction 2必须用到Instruction 1的结果，那么处理器会保证Instruction 1会在Instruction 2之前执行</strong>。</p><p>在Java内存模型中，允许编译器和处理器对指令进行重排序，但是重排序过程不会影响到单线程程序的执行，却会影响到多线程并发执行的正确性。</p><p>在Java里面，可以通过<code>volatile</code>关键字来保证一定的“有序性”（具体原理在下一节讲述）。另外可以通过<code>synchronized</code>和<code>Lock</code>来保证有序性，很显然，<code>synchronized</code>和<code>Lock</code>保证每个时刻是有一个线程执行同步代码，相当于是让线程顺序执行同步代码，自然就保证了有序性。</p><p>另外，Java内存模型具备一些先天的“有序性”，即不需要通过任何手段就能够得到保证的有序性，这个通常也称为 <code>happens-before</code> 原则，<strong>若线程 A 和线程 B 满足 happens-before 关系，则线程 A 执行操作的结果对线程 B 是可见的</strong>。如果两个操作的执行次序无法从<code>happens-before</code>原则推导出来，那么它们就不能保证它们的有序性，虚拟机可以随意地对它们进行重排序。</p><p>下面就来具体介绍下<code>happens-before</code>原则（先行发生原则）：</p><ul><li><strong>程序次序规则</strong>：一个线程内，按照代码顺序，书写在前面的操作先行发生于书写在后面的操作</li><li><strong>锁定规则</strong>：一个unLock操作先行发生于后面对同一个锁额lock操作</li><li><strong>volatile变量规则</strong>：对一个变量的写操作先行发生于后面对这个变量的读操作</li><li><strong>传递规则</strong>：如果操作A先行发生于操作B，而操作B又先行发生于操作C，则可以得出操作A先行发生于操作C</li><li><strong>线程启动规则</strong>：Thread对象的start()方法先行发生于此线程的每个一个动作</li><li><strong>线程中断规则</strong>：对线程interrupt()方法的调用先行发生于被中断线程的代码检测到中断事件的发生</li><li><strong>线程终结规则</strong>：线程中所有的操作都先行发生于线程的终止检测，我们可以通过Thread.join()方法结束、Thread.isAlive()的返回值手段检测到线程已经终止执行</li><li><strong>对象终结规则</strong>：一个对象的初始化完成先行发生于他的finalize()方法的开始</li></ul><p>对于程序次序规则来说，我的理解就是一段程序代码的执行在单个线程中看起来是有序的。注意，虽然这条规则中提到“书写在前面的操作先行发生于书写在后面的操作”，这个应该是程序看起来执行的顺序是按照代码顺序执行的，因为虚拟机可能会对程序代码进行指令重排序。虽然进行重排序，但是最终执行的结果是与程序顺序执行的结果一致的，它只会对不存在数据依赖性的指令进行重排序。因此，在单个线程中，程序执行看起来是有序执行的，这一点要注意理解。事实上，这个规则是用来保证程序在单线程中执行结果的正确性，但无法保证程序在多线程中执行的正确性。</p><p>第二条规则也比较容易理解，也就是说无论在单线程中还是多线程中，同一个锁如果出于被锁定的状态，那么必须先对锁进行了释放操作，后面才能继续进行lock操作。</p><p>第三条规则是一条比较重要的规则，也是后文将要重点讲述的内容。<strong>直观地解释就是，如果一个线程先去写一个变量，然后一个线程去进行读取，那么写入操作肯定会先行发生于读操作</strong>。</p><p>第四条规则实际上就是体现<code>happens-before</code>原则具备传递性。</p><h2 id="深入剖析Volatile关键字"><a href="#深入剖析Volatile关键字" class="headerlink" title="深入剖析Volatile关键字"></a>深入剖析Volatile关键字</h2><h3 id="Volatile-的语义"><a href="#Volatile-的语义" class="headerlink" title="Volatile 的语义"></a>Volatile 的语义</h3><p>一旦一个共享变量（类的成员变量、类的静态成员变量）被<code>volatile</code>修饰之后，那么就具备了两层语义：</p><ul><li>保证了不同线程对这个变量进行操作时的可见性，即一个线程修改了某个变量的值，这新值对其他线程来说是立即可见的</li><li>禁止进行指令重排序</li></ul><p>先看一段代码，假如线程1先执行，线程2后执行：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">//线程1</span><br><span class="line">boolean stop = false;</span><br><span class="line">while(!stop)&#123;</span><br><span class="line">    doSomething();</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">//线程2</span><br><span class="line">stop = true;</span><br></pre></td></tr></table></figure><p>这段代码是很典型的一段代码，很多人在中断线程时可能都会采用这种标记办法。但是事实上，这段代码会完全运行正确么？即一定会将线程中断么？不一定，也许在大多数时候，这个代码能够把线程中断，但是也有可能会导致无法中断线程（虽然这个可能性很小，但是只要一旦发生这种情况就会造成死循环了）。</p><p>下面解释一下这段代码为何有可能导致无法中断线程。在前面已经解释过，每个线程在运行过程中都有自己的工作内存，那么<code>线程1</code>在运行的时候，会将<code>stop</code>变量的值拷贝一份放在自己的工作内存当中。</p><p>那么当<code>线程2</code>更改了<code>stop</code>变量的值之后，但是还没来得及写入主存当中，<code>线程2</code>转去做其他事情了，那么<code>线程1</code>由于不知道<code>线程2</code>对<code>stop</code>变量的更改，因此还会一直循环下去。但是用<code>volatile</code>修饰之后就变得不一样了：</p><ul><li>使用<code>volatile</code>关键字会强制将修改的值立即写入主存；</li><li>使用<code>volatile</code>关键字的话，当<code>线程2</code>进行修改时，会导致<code>线程1</code>的工作内存中缓存变量<code>stop</code>的缓存行无效（<em>反映到硬件层的话，就是CPU的L1或者L2缓存中对应的缓存行无效</em>）；</li><li>由于<code>线程1</code>的工作内存中缓存变量<code>stop</code>的缓存行无效，所以<code>线程1</code>再次读取变量<code>stop</code>的值时会去主存读取。</li><li>那么在<code>线程2</code>修改<code>stop</code>值时（当然这里包括2个操作，修改线程2工作内存中的值，然后将修改后的值写入内存），会使得<code>线程1</code>的工作内存中缓存变量<code>stop</code>的缓存行无效，然后<code>线程1</code>读取时，发现自己的缓存行无效，它会等待缓存行对应的主存地址被更新之后，然后去对应的主存读取最新的值。</li></ul><p>那么线程1读取到的就是最新的正确的值。</p><h3 id="Volatile与原子性"><a href="#Volatile与原子性" class="headerlink" title="Volatile与原子性"></a>Volatile与原子性</h3><p>从上面知道<code>volatile</code>关键字保证了操作的可见性，但是<code>volatile</code>能保证对变量的操作是原子性吗？</p><p>下面看一个例子：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line">public class Test &#123;</span><br><span class="line">    public volatile int inc = 0;</span><br><span class="line"></span><br><span class="line">    public void increase() &#123;</span><br><span class="line">        inc++;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    public static void main(String[] args) &#123;</span><br><span class="line">        final Test test = new Test();</span><br><span class="line">        for(int i=0;i&lt;10;i++)&#123;</span><br><span class="line">            new Thread()&#123;</span><br><span class="line">                public void run() &#123;</span><br><span class="line">                    for(int j=0;j&lt;1000;j++)</span><br><span class="line">                        test.increase();</span><br><span class="line">                &#125;;</span><br><span class="line">            &#125;.start();</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">        while(Thread.activeCount()&gt;1)  //保证前面的线程都执行完</span><br><span class="line">            Thread.yield();</span><br><span class="line">        System.out.println(test.inc);</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>大家想一下这段程序的输出结果是多少？<strong>也许有些朋友认为是10000。但是事实上运行它会发现每次运行结果都不一致，都是一个小于10000的数字</strong>。可能有的朋友就会有疑问，不对啊，上面是对变量<code>inc</code>进行自增操作，由于<code>volatile</code>保证了可见性，那么在每个线程中对<code>inc</code>自增完之后，在其他线程中都能看到修改后的值啊，所以有10个线程分别进行了1000次操作，那么最终<code>inc</code>的值应该是<code>1000*10=10000</code>。</p><p><strong>这里面就有一个误区了，volatile关键字能保证可见性没有错，但是上面的程序错在没能保证原子性。可见性只能保证每次读取的是最新的值，但是volatile没办法保证对变量的操作的原子性</strong>。</p><p>在前面已经提到过，自增操作是不具备原子性的，它包括读取变量的原始值、进行加1操作、写入工作内存。那么就是说自增操作的三个子操作可能会分割开执行，就有可能导致下面这种情况出现：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">假如某个时刻变量inc的值为10，</span><br><span class="line"></span><br><span class="line">线程1对变量进行自增操作，线程1先读取了变量inc的原始值，然后线程1被阻塞了；</span><br><span class="line"></span><br><span class="line">然后线程2对变量进行自增操作，线程2也去读取变量inc的原始值，由于线程1只是对变量inc进行读取操作，而没有对变量进行修改操作，所以不会导致线程2的工作内存中缓存变量inc的缓存行无效，所以线程2会直接去主存读取inc的值，发现inc的值时10，然后进行加1操作，并把11写入工作内存，最后写入主存。</span><br><span class="line"></span><br><span class="line">然后线程1接着进行加1操作，由于已经读取了inc的值，注意此时在线程1的工作内存中inc的值仍然为10，所以线程1对inc进行加1操作后inc的值为11，然后将11写入工作内存，最后写入主存。</span><br><span class="line"></span><br><span class="line">那么两个线程分别进行了一次自增操作后，inc只增加了1。</span><br></pre></td></tr></table></figure><p>解释到这里，可能有朋友会有疑问，不对啊，前面不是保证一个变量在修改volatile变量时，会让缓存行无效吗？然后其他线程去读就会读到新的值，对，这个没错。这个就是上面的<code>happens-before</code>规则中的<code>volatile</code>变量规则，但是要注意，<strong>线程1对变量进行读取操作之后，被阻塞了的话，并没有对inc值进行修改。然后虽然volatile能保证线程2对变量inc的值读取是从内存中读取的，但是线程1没有进行修改，所以线程2根本就不会看到修改的值</strong>。</p><p><strong>根源就在这里，自增操作不是原子性操作，而且volatile也无法保证对变量的任何操作都是原子性的</strong>。解决的方法也就是对提供原子性的自增操作即可。</p><p>在<code>Java 1.5</code>的<code>java.util.concurrent.atomic</code>包下提供了一些原子操作类，即对基本数据类型的 自增（加1操作），自减（减1操作）、以及加法操作（加一个数），减法操作（减一个数）进行了封装，保证这些操作是原子性操作。<code>atomic</code>是利用CAS来实现原子性操作的（<code>Compare And Swap</code>），CAS实际上是利用处理器提供的 <code>CMPXCHG</code> 指令实现的，而处理器执行 <code>CMPXCHG</code> 指令是一个原子性操作。</p><h3 id="Volatile与有序性"><a href="#Volatile与有序性" class="headerlink" title="Volatile与有序性"></a>Volatile与有序性</h3><p>在前面提到<code>volatile</code>关键字能禁止指令重排序，所以<code>volatile</code>能在一定程度上保证有序性。<code>volatile</code>关键字禁止指令重排序有两层意思：</p><ul><li>当程序执行到<code>volatile</code>变量的读操作或者写操作时，在其前面的操作的更改肯定全部已经进行，且结果已经对后面的操作可见，在其后面的操作肯定还没有进行；</li><li><strong>在进行指令优化时，不能将在对<code>volatile</code>变量访问的语句放在其后面执行，也不能把<code>volatile</code>变量后面的语句放到其前面执行</strong>。</li></ul><p>可能上面说的比较绕，举个简单的例子：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">//x、y为非volatile变量</span><br><span class="line">//flag为volatile变量</span><br><span class="line"></span><br><span class="line">x = 2;        //语句1</span><br><span class="line">y = 0;        //语句2</span><br><span class="line">flag = true;  //语句3</span><br><span class="line">x = 4;         //语句4</span><br><span class="line">y = -1;       //语句5</span><br></pre></td></tr></table></figure><p>由于flag变量为<code>volatile</code>变量，那么在进行指令重排序的过程的时候，不会将<code>语句3</code>放到<code>语句1</code>、<code>语句2</code>前面，也不会讲<code>语句3</code>放到<code>语句4</code>、<code>语句5</code>后面。但是要注意<code>语句1</code>和<code>语句2</code>的顺序、<code>语句4</code>和<code>语句5</code>的顺序是不作任何保证的。</p><p>并且<code>volatile</code>关键字能保证，执行到<code>语句3</code>时<code>，语句1</code>和<code>语句2</code>必定是执行完毕了的，且<code>语句1</code>和<code>语句2</code>的执行结果对<code>语句3</code>、<code>语句4</code>、<code>语句5</code>是可见的。</p><h3 id="Volatile的原理和实现机制"><a href="#Volatile的原理和实现机制" class="headerlink" title="Volatile的原理和实现机制"></a>Volatile的原理和实现机制</h3><p>前面讲述了源于volatile关键字的一些使用，下面我们来探讨一下volatile到底如何保证可见性和禁止指令重排序的。下面这段话摘自《深入理解Java虚拟机》：</p><blockquote><p>观察加入volatile关键字和没有加入volatile关键字时所生成的汇编代码发现，加入volatile关键字时，会多出一个lock前缀指令</p></blockquote><p>lock前缀指令实际上相当于一个 <strong>内存屏障</strong>（也成内存栅栏），内存屏障会提供3个功能：</p><ul><li>它 <strong>确保指令重排序时不会把其后面的指令排到内存屏障之前的位置，也不会把前面的指令排到内存屏障的后面</strong>；即在执行到内存屏障这句指令时，在它前面的操作已经全部完成；</li><li>它会 <strong>强制将对缓存的修改操作立即写入主存</strong>；</li><li><strong>如果是写操作，它会导致其他CPU中对应的缓存行无效</strong>。</li></ul><h1 id="3-Synchronized"><a href="#3-Synchronized" class="headerlink" title="3.Synchronized"></a>3.Synchronized</h1><h2 id="基础"><a href="#基础" class="headerlink" title="基础"></a>基础</h2><p>在多线程并发编程中 <code>Synchronized</code> 一直是元老级角色，很多人都会称呼它为重量级锁，但是随着 <code>Java SE1.6</code> 对 <code>Synchronized</code> 进行了各种优化，引入了 <strong>偏向锁</strong> 和 <strong>轻量级锁</strong>。所以在 Java SE1.6 里锁一共有四种状态，<code>无锁状态</code>，<code>偏向锁状态</code>，<code>轻量级锁状态</code>和<code>重量级锁状态</code>，它会随着竞争情况逐渐升级。<strong>锁可以升级但不能降级</strong>，意味着偏向锁升级成轻量级锁后不能降级成偏向锁，但是偏向锁状态可以被重置为无锁状态（锁撤销）。这种锁升级却不能降级的策略，目的是为了提高获得锁和释放锁的效率。</p><table><thead><tr><th>锁状态</th><th>优点</th><th>缺点</th><th>适用场景</th></tr></thead><tbody><tr><td>偏向锁</td><td>加锁、解锁无额外消耗，和非同步方式近似</td><td>如果竞争线程多，会有额外锁撤销的消耗</td><td>基本没有线程竞争的场景</td></tr><tr><td>轻量级锁</td><td>竞争线程不会阻塞，使用自旋等待</td><td>如果长时间不能获取锁，会消耗CPU</td><td>少量线程竞争，且线程持有锁时间不长</td></tr><tr><td>重量级锁</td><td>竞争线程被阻塞，减少CPU空转</td><td>线程阻塞，响应时间长</td><td>很多线程竞争，锁持有时间长</td></tr></tbody></table><p>Java中的每一个对象都可以作为锁。</p><ul><li>对于同步方法，锁是当前实例对象。</li><li>对于静态同步方法，锁是当前对象的Class对象。</li><li>对于同步方法块，锁是<code>Synchonized</code>括号里配置的对象。</li></ul><p>当一个线程试图访问同步代码块时，它首先必须得到锁，退出或抛出异常时必须释放锁。</p><h2 id="锁的升级"><a href="#锁的升级" class="headerlink" title="锁的升级"></a>锁的升级</h2><p>目前锁一共有4种状态，级别从低到高依次是：无锁、偏向锁、轻量级锁和重量级锁。锁状态只能升级不能降级。</p><h3 id="偏向锁"><a href="#偏向锁" class="headerlink" title="偏向锁"></a>偏向锁</h3><p>大多数情况下，锁不仅不存在多线程竞争，而且总是由同一线程多次获得。偏向锁是为了在只有一个线程执行同步块时提高性能。</p><p><img src="https://image.yeding.top/img/biased_lock.svg" alt="biased_lock"></p><h3 id="轻量级锁"><a href="#轻量级锁" class="headerlink" title="轻量级锁"></a>轻量级锁</h3><p><img src="https://image.yeding.top/img/light_lock.svg" alt="img"></p><p>这里解释下其中几个重要的步骤：</p><ul><li>复制 Mark Word 到锁记录：拷贝对象头中的 Mark Word 到锁记录中。</li><li>更新 Mark Word 指针：拷贝成功后，虚拟机将使用 CAS 操作尝试将对象的 Mark Word 更新为指向 Lock Record 指针，并将 Lock Record 里的 owner 指针指向对象的 Mark Word。</li></ul><h3 id="重量级锁"><a href="#重量级锁" class="headerlink" title="重量级锁"></a>重量级锁</h3><p>在重量级锁的状态下， JVM 基于进入和退出 <code>Monitor</code> 对象来实现方法同步和代码块同步，<code>Monitor</code> 的引用存储在对象头中。</p><p><code>Monitor</code> 本身是依赖与操作系统的互斥锁（mutex lock）实现的。由于 JVM 线程是映射到操作系统的原生线程之上的，如果要阻塞或唤醒一条线程，都需要操作系统来帮忙完成，这就需要从用户态转换到核心态中，因此这种转换需要耗费很多的 CPU 时间。</p><p><img src="https://image.yeding.top/img/monitor_lock.svg" alt="img"></p><h2 id="锁粗化"><a href="#锁粗化" class="headerlink" title="锁粗化"></a>锁粗化</h2><p>同步块的作用范围应该尽可能小，仅在共享数据的实际作用域中才进行同步，这样做的目的是为了使需要同步的操作数量尽可能缩小，缩短阻塞时间，如果存在锁竞争，那么等待锁的线程也能尽快拿到锁。 </p><p>但是加锁解锁也需要消耗资源，如果存在一系列的连续加锁解锁操作，可能会导致不必要的性能损耗。 <strong>锁粗化就是 JVM 将多个连续的加锁、解锁操作连接在一起</strong>，扩展成一个范围更大的锁，避免频繁的加锁解锁操作。</p><h2 id="锁消除"><a href="#锁消除" class="headerlink" title="锁消除"></a>锁消除</h2><p>Java 虚拟机在 JIT 编译时(可以简单理解为当某段代码即将第一次被执行时进行编译，又称即时编译)，通过对运行上下文的扫描，经过逃逸分析，<strong>去除不可能存在共享资源竞争的锁，通过这种方式消除没有必要的锁</strong>，可以节省毫无意义的请求锁时间</p><h2 id="Synchronized-vs-ReentrantLock"><a href="#Synchronized-vs-ReentrantLock" class="headerlink" title="Synchronized vs ReentrantLock"></a>Synchronized vs ReentrantLock</h2><ol><li>synchronized 是 Java 关键字，ReentrantLock 是基于 AQS 的 API 层面的互斥锁</li><li>ReentrantLock 设置等待超时时间</li><li>ReentrantLock 可进行公平锁与非公平锁设置</li><li>ReentrantLock 可绑定多个 Condition</li><li>synchronized 不需要手动释放锁</li><li>synchronized 可以修饰方法、代码块</li></ol><p><strong>待续~</strong></p><p> <strong>参考资料</strong></p><hr><p><a href="http://concurrent.redspider.group/RedSpider.html">深入浅出Java多线程</a></p><p><a href="https://hadyang.github.io/interview/">Java计算机知识汇总</a></p><p><a href="https://snailclimb.gitee.io/javaguide/#/">JavaGuide</a></p>]]></content>
    
    
    <summary type="html">Java多线程学习记录</summary>
    
    
    
    <category term="技术" scheme="https://www.yeding.top/categories/%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="Java" scheme="https://www.yeding.top/tags/Java/"/>
    
  </entry>
  
  <entry>
    <title>MYSQL数据库事务和索引学习</title>
    <link href="https://www.yeding.top/post/f3d732a55ffc/"/>
    <id>https://www.yeding.top/post/f3d732a55ffc/</id>
    <published>2020-09-20T06:21:22.000Z</published>
    <updated>2020-10-04T23:46:52.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><h1 id="1-事务"><a href="#1-事务" class="headerlink" title="1.事务"></a>1.事务</h1><h2 id="1-1什么是事务"><a href="#1-1什么是事务" class="headerlink" title="1.1什么是事务"></a>1.1什么是事务</h2><p>事务是逻辑上的一组操作，要么都执行，要么都不执行。 </p><ul><li>一个最小的不可再分的工作单元；通常一个事务对应一个完整的业务(例如银行账户转账业务，该业务就是一个最小的工作单元)</li></ul><h2 id="1-2事务的特征（ACID）"><a href="#1-2事务的特征（ACID）" class="headerlink" title="1.2事务的特征（ACID）"></a>1.2事务的特征（ACID）</h2><ul><li><p>原子性(A)：事务是最小单位，不可再分</p></li><li><p>一致性(C)：事务要求所有的DML语句操作的时候，必须保证同时成功或者同时失败</p></li><li><p>隔离性(I)：事务A和事务B之间具有隔离性</p></li><li><p>持久性(D)：是事务的保证，事务终结的标志(内存的数据持久到硬盘文件中)</p></li></ul><h2 id="1-3并发运行事务带来的问题"><a href="#1-3并发运行事务带来的问题" class="headerlink" title="1.3并发运行事务带来的问题"></a>1.3并发运行事务带来的问题</h2><ul><li><strong>脏读（Dirty read）:</strong> 当一个事务正在访问数据并且对数据进行了修改，而这种修改还没有提交到数据库中，这时另外一个事务也访问了这个数据，然后使用了这个数据。因为这个数据是还没有提交的数据，那么另外一个事务读到的这个数据是“脏数据”，依据“脏数据”所做的操作可能是不正确的。</li><li><strong>丢失修改（Lost to modify）:</strong> 指在一个事务读取一个数据时，另外一个事务也访问了该数据，那么在第一个事务中修改了这个数据后，第二个事务也修改了这个数据。这样第一个事务内的修改结果就被丢失，因此称为丢失修改。 例如：事务1读取某表中的数据A&#x3D;20，事务2也读取A&#x3D;20，事务1修改A&#x3D;A-1，事务2也修改A&#x3D;A-1，最终结果A&#x3D;19，事务1的修改被丢失。</li><li><strong>不可重复读（Unrepeatableread）:</strong> 指在一个事务内多次读同一数据。在这个事务还没有结束时，另一个事务也访问该数据。那么，在第一个事务中的两次读数据之间，由于第二个事务的修改导致第一个事务两次读取的数据可能不太一样。这就发生了在一个事务内两次读到的数据是不一样的情况，因此称为不可重复读。</li><li><strong>幻读（Phantom read）:</strong> 幻读与不可重复读类似。它发生在一个事务（T1）读取了几行数据，接着另一个并发事务（T2）插入了一些数据时。在随后的查询中，第一个事务（T1）就会发现多了一些原本不存在的记录，就好像发生了幻觉一样，所以称为幻读。</li></ul><p><strong>不可重复度和幻读区别：</strong></p><p>不可重复读的重点是修改，幻读的重点在于新增或者删除。</p><p>例1（同样的条件, 你读取过的数据, 再次读取出来发现值不一样了 ）：事务1中的A先生读取自己的工资为 1000的操作还没完成，事务2中的B先生就修改了A的工资为2000，导 致A再读自己的工资时工资变为 2000；这就是不可重复读。</p><p>例2（同样的条件, 第1次和第2次读出来的记录数不一样 ）：假某工资单表中工资大于3000的有4人，事务1读取了所有工资大于3000的人，共查到4条记录，这时事务2 又插入了一条工资大于3000的记录，事务1再次读取时查到的记录就变为了5条，这样就导致了幻读。</p><h2 id="1-4事务隔离级别"><a href="#1-4事务隔离级别" class="headerlink" title="1.4事务隔离级别"></a>1.4事务隔离级别</h2><p><strong>SQL 标准定义了四个隔离级别：</strong></p><ul><li><strong>READ-UNCOMMITTED(读取未提交)：</strong> 最低的隔离级别，允许读取尚未提交的数据变更，<strong>可能会导致脏读、幻读或不可重复读</strong>。<strong>可以防止丢失更新</strong></li><li><strong>READ-COMMITTED(读取已提交)：</strong> 允许读取并发事务已经提交的数据，<strong>可以阻止脏读，但是幻读或不可重复读仍有可能发生</strong>。</li><li><strong>REPEATABLE-READ(可重复读)：</strong> 对同一字段的多次读取结果都是一致的，除非数据是被本身事务自己所修改，<strong>可以阻止脏读和不可重复读，但幻读仍有可能发生</strong>。</li><li><strong>SERIALIZABLE(可串行化)：</strong> 最高的隔离级别，完全服从ACID的隔离级别。所有的事务依次逐个执行，这样事务之间就完全不可能产生干扰，也就是说，<strong>该级别可以防止脏读、不可重复读以及幻读</strong>。</li></ul><h2 id="1-5常用句式"><a href="#1-5常用句式" class="headerlink" title="1.5常用句式"></a>1.5常用句式</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line">SET autocommit = 0 -- 关闭自动提交</span><br><span class="line"></span><br><span class="line">-- 事务开启</span><br><span class="line">START TRANSACTION -- 标记一个事务的开始，从这个以后的sql都在一个事务内</span><br><span class="line"></span><br><span class="line">INSERT XX</span><br><span class="line">UPDATE XX</span><br><span class="line">DELETE XX</span><br><span class="line"></span><br><span class="line">-- 提交：持久化（成功！）</span><br><span class="line">COMMIT</span><br><span class="line">-- 回滚：回到原来的样子（失败！）</span><br><span class="line">ROLLBACK</span><br><span class="line">-- 事务结束</span><br><span class="line">SET autocommit = 1 -- 开启自动提交</span><br><span class="line"></span><br><span class="line">-- 了解</span><br><span class="line">SAVEPOINT 保存点名 -- 设置一个事务的保存点</span><br><span class="line">ROLLBACK TO SAVEPOINT 保存点名 -- 回滚到保存点</span><br><span class="line">RELEASE SAVEPOINT 保存点名 -- 撤销保存点</span><br></pre></td></tr></table></figure><h2 id="1-6事务测试"><a href="#1-6事务测试" class="headerlink" title="1.6事务测试"></a>1.6事务测试</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line">-- 转账</span><br><span class="line">CREATE DATABASE shop CHARACTER SET utf8 COLLATE utf8_general_ci</span><br><span class="line">USE shop</span><br><span class="line"></span><br><span class="line">CREATE TABLE account(</span><br><span class="line"> id INT(3) NOT NULL AUTO_INCREMENT,</span><br><span class="line"> name VARCHAR(30) NOT NULL,</span><br><span class="line"> money DECIMAL(9,2) NOT NULL,</span><br><span class="line"> PRIMARY KEY (id)</span><br><span class="line"> )ENGINE=INNODB DEFAULT CHARSET=utf8</span><br><span class="line"> </span><br><span class="line"> INSERT INTO account (`name`,`money`)</span><br><span class="line"> VALUES (&#x27;A&#x27;,2000.00),(&#x27;B&#x27;,10000.0)</span><br><span class="line"> </span><br><span class="line"> -- 模拟转账：事务</span><br><span class="line"> SET autocommit = 0; -- 关闭自动提交</span><br><span class="line"> START TRANSACTION -- 开启一个事务（一组事务）</span><br><span class="line"> </span><br><span class="line"> UPDATE account SET money=money-500 where `name` = &#x27;A&#x27;; -- A减500</span><br><span class="line"> UPDATE account SET money=money+500 where `name` = &#x27;B&#x27;</span><br><span class="line"> -- B加500</span><br><span class="line"> COMMIT; -- 提交事务，持久化</span><br><span class="line"> ROLLBACK;</span><br><span class="line"> </span><br><span class="line"> SET autocommit = 1；</span><br><span class="line"> </span><br></pre></td></tr></table></figure><h1 id="2-索引"><a href="#2-索引" class="headerlink" title="2.索引"></a>2.索引</h1><h2 id="2-1什么是索引"><a href="#2-1什么是索引" class="headerlink" title="2.1什么是索引"></a>2.1什么是索引</h2><p> <strong>索引是一种用于快速查询和检索数据的数据结构。常见的索引结构有: B树， B+树和Hash。</strong> </p><h2 id="2-2为什么使用索引"><a href="#2-2为什么使用索引" class="headerlink" title="2.2为什么使用索引"></a>2.2为什么使用索引</h2><p> <strong>索引优化是对查询性能优化的最有效手段</strong>，它能够轻松地将查询的性能提高几个数量级。</p><h2 id="2-3索引的数据结构"><a href="#2-3索引的数据结构" class="headerlink" title="2.3索引的数据结构"></a>2.3索引的数据结构</h2><blockquote><p>b-tree</p></blockquote><p> 一棵m阶的B-Tree有如下特性： </p><ol><li>每个节点最多有m个孩子。 </li><li>除了根节点和叶子节点外，其它每个节点至少有Ceil(m&#x2F;2)个孩子。 </li><li>若根节点不是叶子节点，则至少有2个孩子 </li><li>所有叶子节点都在同一层，且不包含其它关键字信息 </li><li>每个非终端节点包含n个关键字信息（P0,P1,…Pn, k1,…kn） </li><li>关键字的个数n满足：ceil(m&#x2F;2)-1 &lt;&#x3D; n &lt;&#x3D; m-1  ki(i&#x3D;1,…n)为关键字，且关键字升序排序。 </li><li>Pi(i&#x3D;1,…n)为指向子树根节点的指针。P(i-1)指向的子树的所有节点关键字均小于ki，但都大于k(i-1)</li></ol><p><img src="https://image.yeding.top/img/b-tree.jpg" alt="b-树"></p><blockquote><p> b+tree</p></blockquote><p>与b-tree的不同</p><ol><li>非叶子节点只存储键值信息。</li><li>所有叶子节点之间都有一个链指针。</li><li>数据记录都存放在叶子节点中。</li></ol><p><img src="https://image.yeding.top/img/b+tree.jpg" alt="b+树" title="索引"></p><blockquote><p>hash表</p></blockquote><p> Hash索引指的就是Hash表，最大的优点就是能够在很短的时间内，根据Hash函数定位到数据所在的位置，这是B+树所不能比的。 <strong>B+ 树索引并不能找到一个给定键对应的具体值，它只能找到数据行对应的页</strong> </p><h2 id="2-4-索引类型"><a href="#2-4-索引类型" class="headerlink" title="2.4 索引类型"></a>2.4 索引类型</h2><blockquote><p>主键索引(Primary Key)</p></blockquote><p><strong>数据表的主键列使用的就是主键索引。</strong></p><p>一张数据表有只能有一个主键，并且主键不能为null，不能重复。</p><p>在mysql的InnoDB的表中，当没有显示的指定表的主键时，InnoDB会自动先检查表中是否有唯一索引的字段，如果有，则选择该字段为默认的主键，否则InnoDB将会自动创建一个6Byte的自增主键。</p><blockquote><p>二级索引(辅助索引)</p></blockquote><p><strong>二级索引又称为辅助索引，是因为二级索引的叶子节点存储的数据是主键。也就是说，通过二级索引，可以定位主键的位置。</strong></p><p>唯一索引，普通索引，前缀索引等索引属于二级索引。</p><ol><li><strong>唯一索引(Unique Key)</strong> ：唯一索引也是一种约束。**唯一索引的属性列不能出现重复的数据，但是允许数据为NULL，一张表允许创建多个唯一索引。**建立唯一索引的目的大部分时候都是为了该属性列的数据的唯一性，而不是为了查询效率。</li><li><strong>普通索引(Index)</strong> ：<strong>普通索引的唯一作用就是为了快速查询数据，一张表允许创建多个普通索引，并允许数据重复和NULL。</strong></li><li><strong>前缀索引(Prefix)</strong> ：前缀索引只适用于字符串类型的数据。前缀索引是对文本的前几个字符创建索引，相比普通索引建立的数据更小， 因为只取前几个字符。</li><li><strong>全文索引(Full Text)</strong> ：全文索引主要是为了检索大文本数据中的关键字的信息，是目前搜索引擎数据库使用的一种技术。Mysql5.6之前只有MYISAM引擎支持全文索引，5.6之后InnoDB也支持了全文索引。</li></ol><p>二级索引: <img src="https://image.yeding.top/img/5f67652b160a154a670a5295.png"></p><h2 id="2-5聚集索引与非聚集索引"><a href="#2-5聚集索引与非聚集索引" class="headerlink" title="2.5聚集索引与非聚集索引"></a>2.5聚集索引与非聚集索引</h2><h3 id="聚集索引"><a href="#聚集索引" class="headerlink" title="聚集索引"></a>聚集索引</h3><p><strong>聚集索引即索引结构和数据一起存放的索引。主键索引属于聚集索引。</strong></p><p>在 Mysql 中，InnoDB引擎的表的 <code>.ibd</code>文件就包含了该表的索引和数据，对于 InnoDB 引擎表来说，该表的索引(B+树)的每个非叶子节点存储索引，叶子节点存储索引和索引对应的数据。</p><h4 id="聚集索引的优点"><a href="#聚集索引的优点" class="headerlink" title="聚集索引的优点"></a>聚集索引的优点</h4><p>聚集索引的查询速度非常的快，因为整个B+树本身就是一颗多叉平衡树，叶子节点也都是有序的，定位到索引的节点，就相当于定位到了数据。</p><h4 id="聚集索引的缺点"><a href="#聚集索引的缺点" class="headerlink" title="聚集索引的缺点"></a>聚集索引的缺点</h4><ol><li><strong>依赖于有序的数据</strong> ：因为B+树是多路平衡树，如果索引的数据不是有序的，那么就需要在插入时排序，如果数据是整型还好，否则类似于字符串或UUID这种又长又难比较的数据，插入或查找的速度肯定比较慢。</li><li><strong>更新代价大</strong> ： 如果对索引列的数据被修改时，那么对应的索引也将会被修改， 而且况聚集索引的叶子节点还存放着数据，修改代价肯定是较大的， 所以对于主键索引来说，主键一般都是不可被修改的。</li></ol><h3 id="非聚集索引"><a href="#非聚集索引" class="headerlink" title="非聚集索引"></a>非聚集索引</h3><p><strong>非聚集索引即索引结构和数据分开存放的索引。</strong></p><p><strong>二级索引属于非聚集索引。</strong></p><blockquote><p>MYISAM引擎的表的.MYI文件包含了表的索引， 该表的索引(B+树)的每个叶子非叶子节点存储索引， 叶子节点存储索引和索引对应数据的指针，指向.MYD文件的数据。</p></blockquote><p><strong>非聚集索引的叶子节点并不一定存放数据的指针， 因为二级索引的叶子节点就存放的是主键，根据主键再回表查数据。</strong></p><h4 id="非聚集索引的优点"><a href="#非聚集索引的优点" class="headerlink" title="非聚集索引的优点"></a>非聚集索引的优点</h4><p><strong>更新代价比聚集索引要小</strong> 。非聚集索引的更新代价就没有聚集索引那么大了，非聚集索引的叶子节点是不存放数据的</p><h4 id="非聚集索引的缺点"><a href="#非聚集索引的缺点" class="headerlink" title="非聚集索引的缺点"></a>非聚集索引的缺点</h4><ol><li>跟聚集索引一样，非聚集索引也依赖于有序的数据</li><li><strong>可能会二次查询(回表)</strong> :这应该是非聚集索引最大的缺点了。 当查到索引对应的指针或主键后，可能还需要根据指针或主键再到数据文件或表中查询。</li></ol><p>这是Mysql的表的文件截图:</p><p><img src="https://image.yeding.top/img/Mysql%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6%E6%88%AA%E5%9B%BE.png" alt="Mysql表文件截图"></p><p>聚集索引和非聚集索引:</p><p><img src="https://image.yeding.top/img/B+%E6%A0%91%E7%B4%A2%E5%BC%95.png" alt="聚集索引"></p><h3 id="覆盖索引"><a href="#覆盖索引" class="headerlink" title="覆盖索引"></a>覆盖索引</h3><p>如果一个索引包含（或者说覆盖）所有需要查询的字段的值，我们就称之为“覆盖索引”。我们知道在InnoDB存储引擎中，如果不是主键索引，叶子节点存储的是主键+列值。最终还是要“回表”，也就是要通过主键再查找一次。这样就会比较慢覆盖索引就是把要查询出的列和索引是对应的，不做回表操作！</p><p><strong>覆盖索引即需要查询的字段正好是索引的字段，那么直接根据该索引，就可以查到数据了， 而无需回表查询。</strong></p><blockquote><p>如主键索引，如果一条SQL需要查询主键，那么正好根据主键索引就可以查到主键。</p><p>再如普通索引，如果一条SQL需要查询name，name字段正好有索引， 那么直接根据这个索引就可以查到数据，也无需回表。</p></blockquote><p>覆盖索引: <img src="https://image.yeding.top/img/20210420165341868.png" alt="覆盖索引"></p><h2 id="2-6最左前缀原则"><a href="#2-6最左前缀原则" class="headerlink" title="2.6最左前缀原则"></a>2.6最左前缀原则</h2><p>MySQL中的索引可以以一定顺序引用多列，这种索引叫作联合索引。如User表的name和city加联合索引就是(name,city)，而最左前缀原则指的是，如果查询的时候查询条件精确匹配索引的左边连续一列或几列，则此列就可以被用到。如下：</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span> <span class="operator">*</span> <span class="keyword">from</span> <span class="keyword">user</span> <span class="keyword">where</span> name<span class="operator">=</span>xx <span class="keyword">and</span> city<span class="operator">=</span>xx ; ／／可以命中索引</span><br><span class="line"><span class="keyword">select</span> <span class="operator">*</span> <span class="keyword">from</span> <span class="keyword">user</span> <span class="keyword">where</span> name<span class="operator">=</span>xx ; <span class="operator">/</span><span class="operator">/</span> 可以命中索引</span><br><span class="line"><span class="keyword">select</span> <span class="operator">*</span> <span class="keyword">from</span> <span class="keyword">user</span> <span class="keyword">where</span> city<span class="operator">=</span>xx ; <span class="operator">/</span><span class="operator">/</span> 无法命中索引            <span class="keyword">Copy</span> <span class="keyword">to</span> clipboardErrorCopied</span><br></pre></td></tr></table></figure><p>这里需要注意的是，查询的时候如果两个条件都用上了，但是顺序不同，如 <code>city= xx and name ＝xx</code>，那么现在的查询引擎会自动优化为匹配联合索引的顺序，这样是能够命中索引的。</p><p>由于最左前缀原则，在创建联合索引时，索引字段的顺序需要考虑字段值去重之后的个数，较多的放前面。ORDER BY子句也遵循此规则。</p><h2 id="2-7如何为表字段添加索引"><a href="#2-7如何为表字段添加索引" class="headerlink" title="2.7如何为表字段添加索引"></a>2.7如何为表字段添加索引</h2><p>1.添加PRIMARY KEY（主键索引）</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">ALTER TABLE</span> `table_name` <span class="keyword">ADD</span> <span class="keyword">PRIMARY KEY</span> ( `<span class="keyword">column</span>` ) <span class="keyword">Copy</span> <span class="keyword">to</span> clipboardErrorCopied</span><br></pre></td></tr></table></figure><p>2.添加UNIQUE(唯一索引)</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">ALTER TABLE</span> `table_name` <span class="keyword">ADD</span> <span class="keyword">UNIQUE</span> ( `<span class="keyword">column</span>` ) <span class="keyword">Copy</span> <span class="keyword">to</span> clipboardErrorCopied</span><br></pre></td></tr></table></figure><p>3.添加INDEX(普通索引)</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">ALTER TABLE</span> `table_name` <span class="keyword">ADD</span> INDEX index_name ( `<span class="keyword">column</span>` )<span class="keyword">Copy</span> <span class="keyword">to</span> clipboardErrorCopied</span><br></pre></td></tr></table></figure><p>4.添加FULLTEXT(全文索引)</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">ALTER TABLE</span> `table_name` <span class="keyword">ADD</span> FULLTEXT ( `<span class="keyword">column</span>`) <span class="keyword">Copy</span> <span class="keyword">to</span> clipboardErrorCopied</span><br></pre></td></tr></table></figure><p>5.添加多列索引</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">ALTER TABLE</span> `table_name` <span class="keyword">ADD</span> INDEX index_name ( `column1`, `column2`, `column3` )</span><br></pre></td></tr></table></figure>]]></content>
    
    
    <summary type="html">数据库学习笔记</summary>
    
    
    
    <category term="技术" scheme="https://www.yeding.top/categories/%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="MYSQL" scheme="https://www.yeding.top/tags/MYSQL/"/>
    
  </entry>
  
  <entry>
    <title>JVM入门笔记</title>
    <link href="https://www.yeding.top/post/dde04d069e3b/"/>
    <id>https://www.yeding.top/post/dde04d069e3b/</id>
    <published>2020-09-18T03:29:05.000Z</published>
    <updated>2020-11-14T00:14:03.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><h1 id="概念"><a href="#概念" class="headerlink" title="概念"></a>概念</h1><p>JVM是Java Virtual Machine（Java<a href="https://baike.baidu.com/item/%E8%99%9A%E6%8B%9F%E6%9C%BA">虚拟机</a>）的缩写。引入Java语言虚拟机后，Java语言在不同平台上运行时不需要重新编译。Java语言<a href="https://baike.baidu.com/item/%E7%BC%96%E8%AF%91%E7%A8%8B%E5%BA%8F/8290180">编译程序</a>只需生成在Java虚拟机上运行的目标代码（<a href="https://baike.baidu.com/item/%E5%AD%97%E8%8A%82%E7%A0%81/9953683">字节码</a>），就可以在多种平台上不加修改地运行。</p><h1 id="位置"><a href="#位置" class="headerlink" title="位置"></a>位置</h1><p><img src="https://image.yeding.top/img/5f6498ee160a154a674b279d.png"></p><p><img src="https://image.yeding.top/img/5f6498ee160a154a674b2798.png"></p><h1 id="类加载器"><a href="#类加载器" class="headerlink" title="类加载器"></a>类加载器</h1><h2 id="作用"><a href="#作用" class="headerlink" title="作用"></a>作用</h2><p>加载Class文件 - new student（）</p><p><img src="https://image.yeding.top/img/5f6498ee160a154a674b279a.png"></p><h2 id="类型"><a href="#类型" class="headerlink" title="类型"></a>类型</h2><ol><li>虚拟机自带的加载器</li><li>启动类（根）加载器</li><li>扩展类加载器</li><li>应用程序加载器</li></ol><h1 id="栈"><a href="#栈" class="headerlink" title="栈"></a>栈</h1><p>栈内存，主管程序的运行，生命周期和线程同步；</p><p>线程结束，栈内存也就是释放，对于栈来说，不存在垃圾回收的问题</p><p>栈的内容：8大基本类型结构+对象引用+实例的方法</p><p>栈运行原理：栈帧</p><blockquote><p>栈中的数据都是以栈帧（Stack Frame）的格式存在，栈帧是一个内存区块，是一个数据集，是一个有关方法 (Method) 和运行期数据的数据集，当一个方法A被调用时就产生了一个栈帧 F1，并被压入到栈中 </p></blockquote><p><img src="https://image.yeding.top/img/5f6497cd160a154a674adf2e.png"></p><h1 id="堆"><a href="#堆" class="headerlink" title="堆"></a>堆</h1><p>Heap，一个JVM只有一个堆内存，堆内存的大小是可以调节的</p><p>类加载器读取了类文件后，会将类，方法，常量，变量，和所有引用类型的真实对象保存在堆中</p><p>堆存在垃圾回收机制。</p><p>堆内存细分为三个区域：</p><ul><li><p>新生代（其中又细分为伊甸区和幸存者区）</p></li><li><p>老年代</p></li><li><p>元方法（原 永久代）</p></li></ul><p><img src="https://image.yeding.top/img/5f6497cd160a154a674adf33.png"></p><p>GC垃圾回收，主要在新生代和老年代</p><p>内存满了会爆OOM错误</p><p>99%都是临时对象</p><h2 id="新生区"><a href="#新生区" class="headerlink" title="新生区"></a>新生区</h2><ul><li>对象：诞生 和成长的地方，甚至死亡；</li><li>伊甸园，所有的对象都在此诞生</li><li>幸存者区（0,1）</li></ul><h2 id="永久区"><a href="#永久区" class="headerlink" title="永久区"></a>永久区</h2><p>这个区域常驻内存，用来存放JDK自身携带的Class对象，Interface元数据，存储的是Java运行时的一些环境或类信息<del>， 这个区域不存在垃圾回收，关闭VM虚拟就会释放这个</del></p><blockquote><p> 位置</p></blockquote><p>jdk6及以前：永久代，常量池是在方法区</p><p>jdk7：永久代退化，常量池在堆中</p><p>jdk8：无永久代，常量池在元空间</p><p><img src="https://image.yeding.top/img/5f6497cd160a154a674adf1f.png"></p><h2 id="堆内存调优"><a href="#堆内存调优" class="headerlink" title="堆内存调优"></a>堆内存调优</h2><h1 id="GC算法"><a href="#GC算法" class="headerlink" title="GC算法"></a>GC算法</h1><p>JVM在进行GC（垃圾回收）时，分为三个区域，：新生区，幸存区，老年区，GC两种类：轻GC，重GC</p><p><img src="https://image.yeding.top/img/5f6497cd160a154a674adf22.png"></p><p>题目：</p><ul><li>JVM内存模型和分区</li><li>堆里的分区有哪些，特点是什么</li><li>GC算法有哪些</li><li>轻重GC什么时候发生</li></ul><h2 id="引用计数法"><a href="#引用计数法" class="headerlink" title="引用计数法"></a>引用计数法</h2><p><img src="https://image.yeding.top/img/5f6497cd160a154a674adf29.png"></p><h2 id="复制算法"><a href="#复制算法" class="headerlink" title="复制算法"></a>复制算法</h2><p><img src="https://image.yeding.top/img/5f6499a0160a154a674b506b.png"></p><p><img src="https://image.yeding.top/img/5f6499a0160a154a674b506d.png"></p><ul><li>好处：没有内存的碎片</li><li>坏处：浪费了内存空间~多了一半空间永远是空的。</li></ul><p>复制算法最佳使用场景：对象存货度较低的时候：新生区~</p><h2 id="标记清除算法"><a href="#标记清除算法" class="headerlink" title="标记清除算法"></a>标记清除算法</h2><p><img src="https://image.yeding.top/img/5f6499a0160a154a674b5072.png"></p><ul><li>优点：不需要额外的空间！</li><li>缺点：两次扫描，严重浪费时间，会产生内存碎片，hash</li></ul><h2 id="标记压缩算法"><a href="#标记压缩算法" class="headerlink" title="标记压缩算法"></a>标记压缩算法</h2><p>对标记清除算法的再优化</p><p><img src="https://image.yeding.top/img/5f6499a0160a154a674b5077.png"></p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>内存效率：复制算法&gt;标记清除算法&gt;标记压缩算法（时间复杂度）</p><p>内存整齐度：复制算法&#x3D;标记压缩算法&gt;标记清除算法</p><p>内存利用率:标记压缩算法&#x3D;标记清除算法&gt;复制算法</p><blockquote><p>GC：分代算法</p></blockquote><p><strong>年轻代：</strong></p><ul><li>存活率低</li><li>复制算法</li></ul><p><strong>老年代：</strong></p><ul><li>区域大：存活率高</li><li>标记清除算法（内存碎片不是太多）+标记压缩混合 实现</li></ul>]]></content>
    
    
    <summary type="html">关于JVM的入门笔记</summary>
    
    
    
    <category term="技术" scheme="https://www.yeding.top/categories/%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="Java" scheme="https://www.yeding.top/tags/Java/"/>
    
    <category term="JVM" scheme="https://www.yeding.top/tags/JVM/"/>
    
  </entry>
  
</feed>