Home

读后感-东野圭吾作品集(2018年)

读后感-东野圭吾作品集(2018年)

阅读时间:2018年1月至2018年12月 阅读方式:微信读书 自从去年开始读东野圭吾的作品以来,总体来说比较喜欢其风格。其实推理细节并不是我喜欢他的作品的根本原因,主要原因是他的作品中会刻画一些社会现实和人性(伟大或阴暗皆有),很能让我产生共鸣而为之动容。今年又一发不可收拾的读了他的二十多部作品,按惯例写一下读后感。 这里岔开一句话,我认为如果读完一本书让自己觉得有收获,务必写一下读后感,因为时间一长,除了书名,书中的经典语句以及剧情细节可能记不清了。但如果认真写好读后感,可以通过简练的语句帮助自己回忆,让自己知道这部作品当初感动自己的原因。当然,从书里我们其实可以学会很多知识和道理,写下来说不定也可以帮助自己成长。 恋爱的贡多拉 标签:【恋爱】、【运动】(滑雪)、【开放结局】。其实恋爱和运动这两个内容都是我不感兴趣的(并不是作品问题,我对恋爱和运动这两个话题确实不感兴趣,尤其是东野的作品中的运动,主要是日本流行的运动,比如滑雪、棒球、高尔夫等)。故事说的是四对年轻伴侣,广太和美雪,水城和秋菜,月村和麻穗以及日田和桃实。他们各自错综复杂、矛盾而讽刺的情感关系,剧情挺狗血的。。。最后的结局是是半开放式,留了点悬念给读者。 经典语句: 一场完美的恋情,需要的不仅仅是爱。而是需要更高的觉悟。 没有什么雁过无痕、完美轨迹。 每一个恋爱中的人都是潜在的推理家。 风雪追击 标签:【运动】(滑雪)。感觉滑雪运动相关的几本书《风雪追击》、《梦回都灵》、《布谷鸟的蛋》、《鸟人计划》(未读)、《疾风回旋曲》(未读),都是为了推广日本的滑雪运动而写的?作品中会用大量细节来描绘滑雪这项运动,尽量在说服读者,滑雪是多么有意思的一项运动。不过对我来说依然无感,因为我的家乡偶尔才下雪,即便下雪也很难到积雪的程度,因此滑雪这项运动对我来说感觉很遥远。 故事大概情节是主角龙实无故卷入了一件凶杀案中,证据表明他是最大的嫌疑人,但他为了洗清自己的嫌疑而走上了找到可以证明自己不在场的“滑雪女神”之路。龙实的同学兼好友波川选择了站在他一边,用自己缜密的分析能力帮其洗清嫌疑。这本书因为看的比较早,具体的细节我已记得不是很清楚,印象中没有特别出彩的情节,也是因为滑雪主题并不能吸引我。 经典语句: 虽然我们每个人都是蜉蝣一样的存在,但是即使一只一寸的虫子都有五分灵魂,把这些灵魂聚集起来就一定能成为一股很大的力量。 新参者 标签:【推理】、【加贺恭一郎系列】。加贺是我个人非常喜欢的东野笔下的主角没有之一。加贺出身并不好,但他洁身自好,坚持原则,体谅别人(甚至是嫌疑人),懂得人情世故,加上他健康阳光的形象,很容易圈粉读者。 作品的故事性很强且不乏人情温暖。故事发展的过程中,加贺表现出敏锐的判断力、细致入微的观察力以及对所处辖区各种细枝末节之事都非常了解等特点。九个看似独立的故事,最终汇集到一起解开了案件之谜。 经典语句: 即使失败一百次,也不要后悔一次。 谎言有三种,一是为了欺骗别人,二是为了保护自己,三是为包庇别人。 谎言是真相的影子,一旦找到就要踩住不放。 我杀了他 标签:【推理】、【开放结局】、【加贺恭一郎系列】。在结婚典礼当天被毒杀。有意思的是,每个嫌疑人都认为是自己杀了穗高诚(这个人有多遭人恨。。。。。。)书中没有写明谁是凶手,读者需要自己推理,脑子好使的读者应该特别喜欢这类作品。我当然更多是因为加贺而喜欢此书。。。。。。哈哈 麒麟之翼 标签:【推理】、【加贺恭一郎系列】、【父亲】。青柳武明在日本桥被刀刺中,他拖着将死之躯来到日本桥,在桥上的“麒麟之翼”像前死去。八岛冬树是头号嫌犯,然而意外出了车祸昏迷不醒,生命垂危。八岛冬树以前是青柳武明所在公司的职工,由于安全事故而无法继续留任岗位,而公司也选择隐瞒工厂安全隐患的问题。媒体大肆报道杀人案是因为八岛冬树和青柳武明私下协商工伤赔偿未果而行凶杀人。而随着八岛冬树的死亡,案件也被媒体和大众定性。而加贺凭借着一些微不足道的蛛丝马迹,刨根问底,最终找出了案件的真相。 作品中媒体只对案件的传播力感兴趣而并不关心背后的真相,青柳武明及家人也因此从受到关怀的被害人转变为安全事故的幕后主使而遭到唾弃和指责。作品中用青柳武明和青柳悠人这对父子之间的默契,影射了加贺及其父亲之间的默契,展现了坚韧并用实际行动教育孩子走正途的父亲形象,剧情一波三折让人为之动容。 经典语句: 人都会犯错,最重要的是如何面对错误。逃避错误,无视错误,只会再次犯相同的错误。 无路可走的时候,就不断回到原点。 在死亡临近的时候,人民会回归自己真正的本心,扔掉所有的自尊心,意气用事,直面自己最后的心愿。 命运确实就像癌细胞,不幸会一点点蔓延开。 红手指 标签:【推理】、【加贺恭一郎系列】、【父亲】、【母亲】。总体来说作品很感人,不过结局略为有一点点牵强。两代人对待自己下一代的做法大相径庭,溺爱孩子的父母,最终可能会为自己的溺爱行为而尝到苦果。 经典语句: 人之所以会撒谎,是为了隐藏内心的脆弱,保护那些不可取代的东西,逃避那些挣脱不了的痛苦。 必须记住的是,越是老年人,或者说正因为是老年人,内心常常会有不可平复的伤痕。治疗的方法很多,周围的人不能理解。所以我觉得,重要的不是理解,而是尊重。 人之所以会撒谎,是为了隐藏自己内心的脆弱,保护那些不可取代的东西,逃避那些挣脱不了的痛楚。 人怎么死,取决于他是怎么活过来的。那个人会有这样的死法,完全是因为他的活法就是如此。 刑警并不是只破案就够了。什么时候破案,怎么破案才是最重要的。 祈祷落幕时 标签:【推理】、【加贺恭一郎系列】、【母亲】。本作描述了加贺失踪多年的母亲,母亲在临死前托人将自己离家出走的原因告诉了儿子加贺,由此加贺和父亲之间多年的误解也因此消除。母亲留给加贺为数不多的遗物中,一本标有东京十二座桥的挂历,最终成为加贺抽丝剥茧找出真相的最重要线索。不出典型的东野作品的套路,在真相的背后,有着一段刻骨铭心、让人为之动容的隐情——受害人和加害人错综复杂的关系及因果循环。加贺在破获案件的的同时,又让读者对凶手产生了同情之心,让人内心极为矛盾。 经典语句: 被欺凌的人心里留下了永远的伤口,可施加了伤害的人却连事情本身都不记得。 只从一个角度去观察,根本无法掌握本质,不管是人还是土地。 渴望幸福的祈祷一重又一重,终有落幕之时。 分身 标签:【高科技】、【强大的背后势力】。我个人对本作并不是特别有感,故事中的两姐妹由于机缘巧合知道了自己的真实身世而走上了寻根之旅。作品主要反应了作者对滥用高科技技术导致的一些社会、伦理问题的担忧。 经典语句: 其实每个人都在寻找自己的分身,而正因为找不到,所以每个人都是孤独的。 […]

SpringBoot 遇到 com.google.guava » guava 组件运行异常问题修复方案

SpringBoot 遇到 com.google.guava » guava 组件运行异常问题修复方案

环境 Apache Maven : 3.5.4 org.springframework.boot » spring-boot-starter-parent : 2.0.3.RELEASE io.springfox » springfox-swagger2 & io.springfox » springfox-swagger-ui : 2.9.2 org.codehaus.mojo » findbugs-maven-plugin : 3.0.5 运行项目错误 错误信息如下: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘apiDocumentationScanner’ defined in URL [jar:file:/C:/Users/danielfu/.m2/repository/io/springfox/springfox-spring-web/2.9.2/springfox-spring-web-2.9.2.jar!/springfox/documentation/spring/web/scanners/ApiDocumentationScanner.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating […]

前端自动化测试神器-Katalon进阶用法

前端自动化测试神器-Katalon进阶用法

前言 上一篇介绍了Katalon的基础用法,本篇继续介绍一些进阶的用法。 Keyword 和 Method Call Statement Keyword Keyword就是自定义方法,该方法在当前项目下公共可用(当然,也可以将文件考到别的项目中进行复用),而Method Call Statement则更多的是用在局部定义的方法的调用上。 在项目的Keywords目录下,创建my.test.kits包,并创建TestUtilities.groovy类,其代码为: public class TestUtilities { @Keyword def CheckItemExists(TestObject obj) { return obj != null; } } 调用代码如下: WebUI.openBrowser(‘https://news.baidu.com’) if (CustomKeywords.’my.test.kits.TestUtilities.CheckItemExists'(findTestObject(‘Object Repository/testKeywords/Page_/input_tn’))) { WebUI.check(findTestObject(‘Object Repository/testKeywords/Page_/input_tn’)) WebUI.setText(findTestObject(‘Object Repository/testKeywords/Page_/input_word’), ‘新闻标题’) } else { WebUI.setText(findTestObject(‘Object Repository/testKeywords/Page_/input_word’), ‘Katalon’) } Method Call Statement 这是一种局部方法定义和调用方式,比如我需要打开百度新闻,然后登录之后再做一些其他操作,如果将登录这个操作封装起来,代码则大致如下: WebUI.openBrowser(‘https://news.baidu.com/’) […]

前端自动化测试神器-Katalon的基础用法

前端自动化测试神器-Katalon的基础用法

前言 最近由于在工作中需要通过Web端的功能进行一次大批量的操作,数据量大概在5000左右,如果手动处理, 完成一条数据的操作用时在20秒左右的话,大概需要4-5个人/天的工作量(假设一天8小时的工作里除去休息时间,我能在6个小时里像机器人一样保证每20秒处理一条数据)。 显然,作为一个程序员,我是不可能让这样机械化的操作浪费我宝贵的生命的。第一反应是想到了若干年前被我用来做Web前端测试和写页游外挂的神器Selemium(当时页游真的很火,我用自己写的脚本,在只花了很少钱的情况下,用了不到3周时间就已经是大神排行榜前10了)。但在我印象中,Selemium需要编写大量的代码来完成一个脚本,调试过程也较为繁琐,这么多年过去了,我在想会不会有更新更好用的工具出现呢?于是Google了一下之后,发现了Katalon。 Katalon VS Selemium Katalon是在Selemium相同的内核上构建起来的一个自动化测试工具。官方给出的两者的对比文档:https://www.katalon.com/resources-center/blog/katalon-studio-vs-selenium-based-open-source-frameworks/。 我综合自己这两天使用的情况,大概可以总结为如下几点: Katalon的用户群体范围更广,用户甚至不需要任何编程基础,只需要知道自己想做什么即可,而Selemium的用户群体是开发或者测试人员 Katalon是一个非常易用的图形化的工具,但它竟然是免费的(官方说法是Completely free • Built with Heart),并且是免安装版本,下载解压就能直接使用。而Selemium需要安装运行环境、语言驱动等等较为繁琐的步骤 使用Selemium的时候,可能需要经常查询API文档以找到自己想要实现的功能,而Katalon大部分时候不需要(当然本身也是有非常完善的API文档的) 专业人员通过Selemium可以完成各种复杂的功能,Katalon也可以,Katalon用的是Java和Apache Groovy作为其脚本开发语言 性能方面,Katalon比Selemium差一点 Katalon提供了Spy和Record两个让构建测试变得异常简单的神级功能,以及很多内建的非常实用的功能(比如从文件、数据库等数据源获取数据填充到测试变量中) 基础用法 新建项目 方法1:Spy 用Spy Web功能添加对象到对象仓库中 为了更直观,我做了一张动图,完成了Spy的基本演示,其中包含了如下步骤: 打开百度搜索首页 定位搜索框,将其捕获(按组合键Shift + `) 确认捕获的元素 将搜索框保存到对象仓库中 查看捕获的所有信息 Spy的作用是可以在较为复杂的页面上或者当操作人员不会写代码的时候,需要操作元素时,用Spy可以非常方便的做到。上述所有步骤的动图如下: 新建Test Case 这个设计的步骤很简单: 打开百度首页 在输入框里输入katalon 确认搜索 展示搜索结果 过程动图如下(整个过程中并没有对Chrome做任何人工操作): 方法2:Record 上面的方法,相对于初学者来说,已经是“复杂”的了,毕竟我们先手动Spy出我们想操作的元素。其实,如果只是简单的通过百度搜索某个关键字这样的简单流程,完全可以用Katalon自带的Record Web功能,详见如下动图: Record Web功能会把你对浏览器做的所有操作,全程录制并保存起来,当然如果有需要,也可以按自己的需求对录制好的步骤做一些调整。 编辑脚本 如果你是个专业用户,你可以可以直接通过编辑脚本来写测试用例。比如在上述用例的基础上,我有如下需求变更: […]

机器学习笔记5-Tensorflow高级API之tf.estimator

机器学习笔记5-Tensorflow高级API之tf.estimator

前言 本文接着上一篇继续来聊Tensorflow的接口,上一篇中用较低层的接口实现了线性模型,本篇中将用更高级的API——tf.estimator来改写线性模型。 还记得之前的文章《机器学习笔记2 – sklearn之iris数据集》吗?本文也将使用tf.estimator改造该示例。 本文代码都是基于API版本r1.4。本文中本地开发环境为Pycharm,在文中不再赘述。 tf.estimator 内置模型 比起用底层API“较硬”的编码方式,tf.estimator的在使用时更像是对模型描述(或定义)的过程。Tensorflow把训练、评估、数据处理等这些过程全部封装起来,让开发人员更专注于解决实际问题的建模过程,而不是纠结于代码实现过程。如果用tf.estimator改造上一篇中的线性模型的话,完整代码如下: 本例中使用的库numpy是一个开源工具,是一个功能非常强大且执行效率很高的库,主要用作数值处理及矩阵操作等。 import numpy as np import tensorflow as tf # 定义特性列,线性模型中特性是列是x,shape=[1],因此定义如下: feature_columns = [tf.feature_column.numeric_column(“x”, shape=[1])] # 使用tf.estimator内置的LinearRegressor来完成线性回归算法 # tf.estimator提供了很多常规的算法模型以便用户调用,不需要用户自己重复造轮子 # 到底为止,短短两行代码我们的建模工作就已经完成了 estimator = tf.estimator.LinearRegressor(feature_columns=feature_columns) # 有了模型之后,我们要使用模型完成训练->评估->预测这几个步骤 # 训练数据依旧是(1.,0.),(2.,-1.),(3.,-2.),(4.,-3.)这几个点,拆成x和y两个维度的数组 x_train = np.array([1., 2., 3., 4.]) y_train = np.array([0., -1., -2., -3.]) # […]

趣味题——上海有多少个加油站

趣味题——上海有多少个加油站

最近在网上看到一道趣味题:上海有多少个加油站?当然不能百度,只能用自己掌握的知识来进行估算。 解题思路 我先大致列出了我的思路: 加油站数量 = 平均每天加油车辆数(?) / 平均每个加油站每天吞吐量(?) 平均每天加油车辆数估算 车辆总数估算 所以两个计算要素是: 平均每天加油车辆数 平均每个加油站每天吞吐量 平均每天加油车辆数的计算思路: 每天加油车辆数 = 车辆总数(?) * 加油频率(?) 因为有不同类型的车辆,因此公式应该写成: 每天加油车辆数 = SUM(不同车种总数 * 加油频率) 我能想到的社会上的车辆大概有如下几种: 私家车 – 加油站主力军 出租车 – 应该是仅次于私家车的车种,但是相对私家车的绝对数量来说,也是较小比例的一种车 企业用车 – 和出租车相比不确定哪个多哪个少,不过企业用车可根据牌照额度更准确的估算 公务车 – 比例不大 工程车 – 比例不大 公交车 – 截止2017年,上海很多公交车都已经换成新能源车了,不再需要去加油站加油 每天进出上海的外省市流动车辆 我不知道任何一种车辆的总数,但由于我自己在拍沪牌(妈的,拍了两年了没中),因此我以沪牌额度进行估算: 沪牌目前的投放额度是:个人约10万/年,企业约2万/年。因为牌照很难拍到,牌照额度基本不会被浪费,一个牌照就会对应一辆车。另假设:个人用车平均15年报废,企业用车平均10年报废,因此: 沪牌私家车 = 100000 […]

机器学习笔记4-Tensorflow线性模型示例及TensorBoard的使用

机器学习笔记4-Tensorflow线性模型示例及TensorBoard的使用

前言 在上一篇中,我简单介绍了一下Tensorflow以及在本机及阿里云的PAI平台上跑通第一个示例的步骤。在本篇中我将稍微讲解一下几个基本概念以及Tensorflow的基础语法。 本文代码都是基于API版本r1.4。本文中本地开发环境为Pycharm,在文中不再赘述。 名词解释 核心概念 和很多开发语言设计一样,Tensorflow提供了多个级别的客户端API,其中最底层叫Tensorflow Core,使用这一层API可以完全控制Tensorflow,但是使用难度上也相对较大。在Tensorflow Core之上创建的更高级别的API,对开发者更友好,更易于使用、学习起来也更简单。 Tensorflow中该数据的核心单位是张量(Tensor),张量就是将一组基础数值,组织成形态(Shape)为一个任意维度的数组,张量的阶(Rank)就是维度的数量。概念还是挺拗口的,举个例子就非常明了了: [1., 2., 3.] # Rank=1, Shape=[3] [[1., 2., 3.], [4., 5., 6.]] # Rank=2; Shape=[2, 3]: 代表第一层数组里包含2个子数组,每个子数组里包含3个值 [[[1., 2., 3.]], [[7., 8., 9.]]] # Rank=3; Shape=[2, 1, 3] : 代表第一层数组里包含2个数组,每个子数组里又包含1个子数组,子数组里包含3个元素 Tensorflow其实就是针对张量的计算图,计算图中的每个节点(Node)之间是有向连接的,看起来像张量的流动图(即从输入开始,流过一系列的节点,最终输出结果),Tensorflow也由此得名。官方原话是: What is a Data Flow Graph? Data flow graphs describe […]

机器学习笔记3-Tensorflow简介

机器学习笔记3-Tensorflow简介

前言 前面两篇主要写了一些机器学习的基础概念,从本篇开始我们来了解下深度学习。深度学习是机器学习的一个子集,是一种特殊的数学模型。同样是从输入到输出,深度学习在这两者之间会有很多层称为“隐层”(Hidden Layers)的层,每一层将会将输入内容进行计算并自我调节,最终得到合理模型,这种数学模型非常像人类目前对大脑工作原理的认知,所以也称之为“人工神经网络”。 现在市面上有数十种深度学习框架:Wiki传送门。一个个学过来肯定精力不够,那我们就学综合评分最高的那个:Tensorflow。 Tensorflow是由Google团队在2015年11月9日以Apache 2.0开源许可证开源的,但刚发布的版本有诸多缺陷:bug比较多、性能比较差、使用难度比较高。在2017年2月16日,Google宣布Tensorflow 1.0正式发布,该版本适用于工业生产场景。所以在该版本发布之后,对深度学习领域产生了极大的影响,其大大简化了编写深度学习的代码难度,并且在Google这面大旗下,被各种专业人员以及机器学习爱好者所推崇(截止2018年1月9日,Tensorflow在Github上已经有7193个Watch,85038个Star和41555个Fork)。 Tensorflow在短短发布后的一年不到的时间里,已经跃居为综合排名第一的深度学习框架。为什么会如此火爆呢?我个人猜测理由如下: 深度学习目前是大趋势(所以得抓紧学习,抓住机遇) Google的技术实力太强大,开源过很多项目都非常成功(比如Android),所以跟着Google走可能不会让我们失望 接口丰富易用且支持多种语言(底层是C++实现的,这里指的是客户端调用底层API的语言),如Python、C++、Java、Go 易于部署,包括分布式部署 本机安装Tensorflow 如果你的电脑性能还不错,可以考虑直接在本机安装Tensorflow(官方安装文档传送门),优先考虑使用Anaconda来安装,按照官方教程一步步执行即可。 安装之后,需要在Pycharm中执行Tensorflow的代码,我们这里先用简单的输出常量的代码为例(此代码也是后文中demo1.py中的代码): import tensorflow as tf node1 = tf.constant(3.0, dtype=tf.float32) node2 = tf.constant(4.0) # also tf.float32 implicitly print(node1, node2) sess = tf.Session() print(sess.run([node1, node2])) 常见错误汇总 执行代码的时候,你可能会遇到很多错误,我这里整理了一份我在此过程中遇到的错误以及对应的解决方案供大家参考: 错误提示 解决方案 Anaconda installation is not found https://stackoverflow.com/questions/47624777/pycharm-anaconda-installation-is-not-found ImportError: Could not […]

读后感-东野圭吾作品集(2017年)

读后感-东野圭吾作品集(2017年)

阅读时间:2017年5月至2017年11月 阅读方式:微信读书 2017年开启了阅读大年,实物书加电子书总计大概有50本之多。以往每年的阅读量算上专业书籍大概也只有4-5本的样子,17年由于上下班路途越来越堵,电台广播也老是在广告中插播内容搞得很烦人,不能专心听广告了,遂又发现微信读书的机器朗读还不错,因此有了这一年爆发式的阅读量。 充分利用起上下班开车的2.5个小时时间,听专业书籍和太多动脑的书籍有碍驾驶,因此也是以小说为主。在看了第一本《解忧杂货店》之后,一发不可收拾的阅读了N本东野的书。东野圭吾虽然被标为畅销推理小说作家,但他的作品很多是“社会派”,用朴实的语言和丰满的细节描绘来阐述人性以及社会现象。 以前没有读书做笔记和写读后感的习惯,开了这个博客后,争取今后能记录下每一本书的读后感,这些去年读的书,都简要的写一下以表诚意。以下内容中,推理类作品都是有剧情反转的,写太多会剧透,怕扫了还未读过的读者的兴了,所以主要阐述个人观点为主。而讨论社会问题类的作品可能会有部分剧透。 解忧杂货店 这是一部时空穿越的奇幻类小说,以一个个独立的小故事慢慢铺垫开,最终又把这一系列线索串联起来形成一个完整的故事,让人在整理思绪的同时也不禁感叹故事设计的巧妙。是非常典型的东野风格。 故事以各种巧合和阴差阳错的事件为主旋律,比如“浪矢杂货店”被误传为“解忧杂货店”。店主浪矢熊治本来是想用俏皮的方式解决一些孩子们无聊的问题,当他发现这样真能帮助别人的时候,便将此作为正事认真对待,尽量回答好每个的问题以解决他人的烦恼。在通过书信帮人解忧的过程中,发现其实很多问题都是没有标准答案的,而烦恼者本人其实对问题答案本身也是有自己的答案的,只是由于各种原因而犹豫不决,需要有人来坚定其信念。所以无论“浪矢爷爷”用好的口气还是坏口气给对方建议,对方最终都是会按照自己预设的方向去做。这可能也是基本的人性吧,对一件事犹豫不决的时候,并不是要一个答案,而只是一个聆听者。 助人者终助己,最后真正的“浪矢爷爷”在杂货店重生之日答复了空白的信,救赎了三位乱入者,也正是由于假浪矢也救赎了很多自己素未谋面的陌生人。即便是艰难的生存在这个世界上,也应该不吝向他人展示自己的善意,让善良延续,正如“解忧杂货店”那样。 经典语句: 很多时候,咨询的人心里已经有了答案,来咨询只是想确认自己的决定是对的。 如果自己不想积极认真地生活,不管得到什么样的回答都没有用。 只要全家同舟共济,一起回到正路上也完全有可能。 白夜行 东野圭吾巅峰之作,故事以当铺老板桐原洋介被人以利器刺死为故事展开,刑警笹垣润三一直对案件的疑点耿耿于怀,在其后的19年里,他不依不饶的私下调查着案件,甚至在从警署退休后,依然想查明真相。 随着调查的深入,笹垣润三越来越接近真相,而真正让读者纠结的是越来越不希望这个老练的刑警去揭开真相,矛盾的心情只有细细读过原作才能体会。加害者本身可能是受害者,而受害者也可能是施害者,作者模糊了好和坏之分,更多的是对未成年人犯罪的深刻剖析。 直到故事最后,男女主人公才第一次出现在同一场景中,而此时已经是生死两隔,让人唏嘘不已。从某个角度讲,男女主角心狠手辣、毫无人性,为了目的不择手段,但从另外的角度来讲,他们从一开始就是最大的受害者。 经典语句: 我的人生就像在白夜里走路。 我的天空里没有太阳,总是黑夜,但并不暗,因为有东西代替了太阳。虽然没有太阳那么明亮,但对我来说已经足够。凭借着这份光,我便能把黑夜当成白天。我从来就没有太阳,所以不怕失去。 世上有两样东西不可直视,一是太阳,二是人心。 拉普拉斯的魔女 本书只能算是东野中规中矩的作品,算是科学玄幻类的作品吧,主要思想是对人工智能的担忧。看似魔幻的故事,背后却隐藏着一个残忍的真相。 本书也是东野圭吾想突破自我的作品,至于质量如何,每个人有不同的看法,我个人觉得本书很普通,当然也不乏一些感人的小片段。 经典语句: “这个世界的未来,究竟会怎么样?” “我和你说,还是不要知道比较幸福。” 你再看看互联网。全是他人的脏话和愚行。已发现可以攻击的对象,就争先恐后的加以指责。他们什么都创造不出来,什么都不思考,什么责任都不承担。 任何人都无法一直活在过去之中,只能一步步走向未来。一旦这么做,就会有新的发现。虽然无法保证,但只能如此相信。 嫌疑人X的献身 本书也是非常值得一读的东野作品,小说一开始就把杀人事件及其凶手告诉了读者,刚上来会让人摸不着头脑,后面的故事要怎么展开呢?都知道谁是凶手了,这样的推理小说还会好看吗?东野当然没有让喜欢他的读者们失望,在被作者成功的引导到错误的方向后,故事最后却来了个大揭秘,把读者杀了个措手不及。轰轰烈烈的故事背后,却是由于很小的事情而起因,这就是所谓的“蝴蝶效应”吧。 本书中的两大男神主角,石神哲哉和汤川学,两人惺惺相惜又暗中较劲。大学时代就可谓是天才的两人,却由于命运的捉弄,一个沦落为教着一群根本不爱学习的学生的高中老师,生活困窘无奈甚至一度走向绝境;另外一人成了大学教授,功成名就。两人阴差阳错的因一次杀人案件而重逢,用各自高超的智慧和推理能力互相斗法。作者对情节设计的绝妙之处就是明明石神是凶手,在汤川一步步逼近真相解开谎言的同时,又期盼石神最终能赢过汤川,真是让读者纠结万分! 经典语句: 有时候,一个人只要好好活着,就足以拯救某个人。 对于数学问题,自己想出答案和确认别人的答案是否正确,哪一个更简单,或者困难到何种程度,拟一个别人无法解答的问题和解开那个问题,何者更困难? 这个世上没有无用的齿轮,也只有齿轮本身能决定自己的用途。 假面饭店 & 假面前夜 这两本是姊妹篇所以一起说,个人觉得这两本并没有特别出彩之处,整体故事情节比较冗长乏味。 假面饭店 《假面饭店》讲述的是警方由一系列预告杀人案件的线索推断出会在高档酒店“东京柯尔特西亚”马上发生杀人案件的故事。由于不能影响酒店营业以及造成公众恐慌,警方派出大量警务人员卧底在酒店的各个岗位,伺机抓捕罪犯。警视厅刑警新田浩介扮成的酒店服务生与酒店前台小姐山岸尚美在破案过程中,从开始的互相看不对眼慢慢过渡到了互相欣赏,敬佩各自在对本职工作的敬业和专业精神,最后还来了一波英雄救美,绝对让少女读者们非常满意。本书情节上并不是紧凑到令人窒息的地步,一个个独立的小故事中讲述不同的客人的各种“伪装”行为,每个来酒店的客人都怀着各自的理由和目的带着一张面具。警方需要从蛛丝马迹中找出谁是凶手,而酒店人员要抛掉成见服务好每个客人。故事最后的揭秘,再一次是东野的一贯风格:重大事件的起因,却源自一件很小的事情。无论用“蝴蝶效应”也好,用“无心插柳”也好,每个人无意的行为,可能对他人产生帮助也可能产生极大的伤害。 当然,我个人觉得虽然故事是完整的,但是整个情节设计上是有瑕疵的。女主山岸尚美把已经入住的客人视为“上帝”而可以固执己见地“得罪”还未入住的潜在客人,真是让人匪夷所思的价值观。 假面前夜 作为假面饭店的前传,《假面前夜》中女主山岸尚美和警视厅刑警新田浩介在本部作品中并没有见过面,但是在整个案件处理过程中了解到了互相的存在。故事依旧是描述形形色色带着“面具”的酒店客人,女主在出色的完成本职工作并保护客人的面具不被撕毁的同时,顺便帮助男主破案。 故事整体上还是延续了《假面饭店》铺陈叙事的风格,只在最后揭开真相时有一点点出乎意料。 经典语句: 来我们酒店的客人都是带着面具的,一个叫做‘客人’的面具,绝不要试图揭开面具。 无论什么人,在违反规则时都会产生些兴奋感吧。罪恶感和快感之间仅仅是一念之差。 社长常说不珍惜家人的人也不会珍惜客人,因此是做不好工作的。 […]

机器学习笔记2 – sklearn之iris数据集

机器学习笔记2 – sklearn之iris数据集

前言 本篇我会使用scikit-learn这个开源机器学习库来对iris数据集进行分类练习。 我将分别使用两种不同的scikit-learn内置算法——Decision Tree(决策树)和kNN(邻近算法),随后我也会尝试自己实现kNN算法。目前为止,我还是在机器学习的入门阶段,文章中暂不详细解释算法原理,如果想了解细节信息可自行搜索。 代码分解 读取数据集 scikit-learn中预制了很多经典数据集,非常方便我们自己练习用。使用方式也很容易: # 引入datasets from sklearn import datasets # 获取所需数据集 iris = datasets.load_iris() load_iris返回的结果有如下属性: feature_names – 分别为:sepal length (cm), sepal width (cm), petal length (cm)和 petal width (cm) data – 每行的数据,一共四列,每一列映射为feature_names中对应的值 target – 每行数据对应的分类结果值(也就是每行数据的label值),其值为[0,1,2] target_names – target的值对应的名称,其值为[‘setosa’ ‘versicolor’ ‘virginica’] 分离数据 监督学习可以用一个简单的数学公式来代表: y = f(X) 按上一篇中的相关术语描述就是已知X(features),通过方法f(classifier)求y(label)。 […]