XieJava's blog

记录最好的自己


  • 首页

  • 分类

  • 标签

  • 归档

  • 关于

如何理解企业安全能力框架(IPDRR)

发表于 2021-06-17 | 更新于: 2025-10-23 | 分类于 技术 , 网络安全 | | 阅读次数:
字数统计: 1.6k | 阅读时长 ≈ 5

企业安全能力框架(IPDRR)是美国国家标准与技术研究所(National Institute of Standards and Technology)的网络安全框架(简称NISTCSF )。第一个版本于2014年发布,旨在为寻求加强网咯安全防御的组织提供指导。企业可以根据自身需求加强网络安全防御。
企业网络安全系统框架
企业网络安全系统框架(参考IPDRR)

随着社会数字化转型的深入,网络攻击事件日益增多、破坏力逐步增强。安全方法论也正逐步从”针对威胁的安全防御”向“面向业务的安全治理”(IPDRR)等演进。

IPDRR能力框架模型包括风险识别(Identify)、安全防御(Protect)、安全检测(Detect)、安全响应(Response)和安全恢复(Recovery)五大能力,从以防护为核心的模型,转向以检测和业务连续性管理的模型,变被动为主动,最终达成自适应的安全能力。

IPDRR模型体现了安全保障系统化的思想,管理与技术结合来有效保障系统核心业务的安全。通过持续的安全检测来实现IPDRR的闭环安全,为用户提供完善的安全能力框架和支撑体系。

具体来说IPDRR主要包含了五个部分:
识别(Identify):识别网络资产及风险,是指对系统、资产、数据和网络所面临的安全风险的认识及确认
保护(Protect):保护网络,是指制定和实施合适的安全措施,确保能够提供关键基础设施服务。
检测(Detect):发现攻击,在攻击产生时即时监测,同时监控业务和保护措施是否正常运行,制定和实施恰当的行动以发现网络安全事件
响应(Respond):响应和处理事件,指对已经发现的网络安全事件采取合适的行动。具体程序依据事件的影响程度来进行抉择,主要包括:事件调查、评估损害、收集证据、报告事件和恢复系统
恢复(Recover):恢复系统和修复漏洞,将系统恢复至正常状态,同时找到事件的根本原因,并进行预防和修复

可以参考大家对实体财物是怎么保护的就很容易理解了。举个例子,大家如何对自己的私有财产是怎么保护的呢?
第一步识别(Identify)肯定是识别出有哪些资产分别都有什么风险吧,比如家里的现金、金银珠宝、贵重电器、房产证、82年的拉菲、92年的茅台等等对于我们来说都是属于我们要保护的资产,这些都有被小偷偷走,被破坏等风险。所以我们需要采取一定的措施将这些资产给保护起来。
比如现金、金银珠宝、房产证等放在保险柜里,82年的拉菲、92年的茅台等搞个酒窖上好锁,家里的房子装好防护门、防盗窗等,这些就是第二步保护(Protect),对需要保护的资产做好基本的防护。做到了这些够不够呢?显然是不够的,这只是做好被动防御,我们还要做好主动防御,也就是第三步检测(Detect),这时候我们可以装一些监控设备摄像头、传感器等等,看时时刻刻监控我们所要保护的资产看有没有什么情况,还可以雇佣一批保安7*24小时巡逻实时监测。响应(Respond)也就是发现了什么风吹草动,就采取响应的措施,比如如果是有人破门而入就及时的告警,制止,报警。恢复(Recover)就是对易发生的损失进行恢复,如有人破门而入把门给搞坏了,就得把门重新修好或换一个新的级别更高更安全的门。

企业的网络安全也是一样的。首先要识别自己企业的网络安全资产如重要系统、服务器等都部署在哪里,有没有漏洞,基线配置有没有合规。然后需要做好基本的防护,比如在出入口部署防火墙、主机装EDR、Web服务器要在WAF的保护下、做好访问控制、部署IPS设备等等。有了基础的防护设备以后要做好检测响应比如部署NTA做好流量检测分析、部署SIEM或日志分析系统将这些基础防护设备的告警精心接入做好安全告警的检测分析。通过检测设备发现网络安全事件以后要采取响应的响应措施,比如发现漏洞要进行补洞加固等、发现攻击封堵IP等,可以通过SOAR安全编排与自动化响应平台对人、工具、流程进行协同提高对于安全事件的响应能力。最后是恢复,也就是对已经造成的破坏进行恢复至正常状态,对于失陷的主机进行离网、杀毒、重装、恢复等。

本文试图对市面上常见的安全产品进行分类来映射到IPDRR的五大能力
识别(Identify)提供识别能力的产品包括资产管理平台、资产测绘平台、基线管理平台、漏洞扫描工具等。
保护(Protect)提供保护能力的产品包括主机防御类EDR、VPN、4A、防火墙、IPS、WAF、抗DOS等
检测(Detect) 提供威胁检测能力的产品包括IDS、NTA、蜜罐、恶意代码检测、用户异常行为检测等。
响应(Respond):提供响应能力的产品包括SIEM、安全审计、态势感知、SOAR等
恢复(Recover):提供恢复能力的产品包括NG-SOC,NG-SOC理论上应该是覆盖了IPDRR所有的能力。
IPDRR产品能力映射

当然企业安全能力不能够仅仅的依靠工具,是人、策略、流程、工具综合能力的体现。企业可以根据自身需求参考IPDRR能力框架模型加强网络安全能力建设,哪里欠缺补哪里,通过管理与技术结合来有效保障系统核心业务的安全。


博客地址:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

再见2020,2021我来了!

发表于 2021-01-01 | 更新于: 2025-10-23 | 分类于 人生 | | 阅读次数:
字数统计: 936 | 阅读时长 ≈ 3

今天是2021年1月1日,按照惯例应该是回忆过去展望未来的一天。

回忆过去:

在过去的一年里,曾今在2020年立下的flag是否都实现了呢?

2020的flag:

  • 看完10本英文原著。
  • 爱分享网站运营PV要达5W,UV达5千
  • 每周至少发一篇微信公众号文章
  • 开通自己的博客
  • 每周至少跑步3次

2020年完成得最好的是看完了10本英文原著,因为2020过春节到第一季度受疫情影响,老老实实待在家里。在5月份就看完了10本英文原著。但是后来却没有坚持下来。看英文原著的热情慢慢的消退下来。一是看了这么多本原著似乎英文还是那么的菜打击了自己的信心,二是看英文原著比较耗时间4、5月份开始正常上班后时间就显得比较紧张了。后来7月份的时候准备考通信工程师的考试,时间更加紧张。所以继续看英文原著的事情就放下来了。英文很重要,学习英文2020年还是要继续坚持。

爱分享网站因为各种原因在7月份的时候基本上已经停了,但是服务器还在续费。其实在5,6月份以前网站的访问量等各方面指标都一直在上升,因为疫情大家可能待在家里看书的需求量大增,网站的访问量一直都在持续的上升。如果网站不停基本上运营的flag还是可以达到的。现在的环境对于个人网站来说很艰难了。网站还会继续下去主要内容会以自己的博客为主了。

因为网站基本停了,一直在想网站生存的方向。微信公众号的文章也比较少更新了。还是自己肚子里的货太少了,写了一段时间以后发现没啥东西写了,坚持不下去了。真佩服那些现在还在每天更新的微信公众号。

经过多方比较决定用hexo来搭建自己的博客。写博客已经被认为是很古老的方式了,一直以来都很羡慕那些一直坚持下来的优质博主。想通过博客的方式记录自己的学习、生活、工作。2020年共写了24篇博客,产量不是很高,说明思考和积累还是不够。

跑步锻炼,在夏天天气好的时候还是坚持得不错,每周基本上坚持了一次。天气渐渐冷了起来以后懒筋发作很少出去跑步了。看着自己日益发胖的体重,要深刻的检讨一下。

2020年全年阅读量有所减少在豆瓣上标记只读了29本书。因为2020年中旬的时候决定考通信工程师和信息安全工程师,所以其他书看得比较少了。经过几个月的努力,顺利通过了通信工程师和信息安全工程师的考试。虽然2020年年初立的flag很多都没有完成,完成了的效果也不是特别好,但是过了通信工程师和信息安全工程师心里稍微有点宽慰。毕竟2020年努力过。

展望未来:

不管怎么样,2020年已经成为过去式了。崭新的2021已经来到,先立下2021年的flag。

2021年flag:

  • 考CISP
  • 考一建
  • 发两篇论文
  • 至少写30篇博客文章
  • 完成12本英文原著
  • 完成50本书籍的阅读量

2021加油!

工作这么多年了,我为什么还在考证

发表于 2020-12-21 | 更新于: 2025-10-23 | 分类于 人生 | | 阅读次数:
字数统计: 1.1k | 阅读时长 ≈ 3

学习学习

工作这么多年了,我为什么还在考证?

因为以前一直没有考过啊!

毕业以来参加工作后,一直以来认为考证没有啥用处。一方面,因为找工作太过顺利,那会儿找工作也没有看到别人拿什么证去找工作,也没有看到那家公司的招聘广告上写需要什么什么证书。另一方面,由于才从学校出来对于学习考试有种天然的排斥。想想这么多年以来一直都是在学习考试。好不容易毕业了那还不好好放松一下。现在回想起来真是too young,too simple。

工作这么多年,都是在从事研发相关的工作。一开始写代码,要学的东西挺多的,从毕业时候的ASP到Java。能够完成工作任务,能够做出东西来才是硬道理。后来做项目经理,产品经理也是没有经过系统的培训和学习,在项目中磨练在项目中成长。在公司也带了几个重点大项目,项目也交付得令公司和客户比较满意。想想这研发和项目管理就那么回事。貌似所有的公司都是一样,不管你用什么办法,能够搞定项目的就是好的项目经理。至于有没有证没人关注。甚至公司过CMMI5的时候,我带的项目被抽为参审项目,我还没有系统的学过项目管理。虽然CMMI5已经过了,但是总感觉过得挺虚的。基本上就是在咨询公司的指导下,要你干什么就干什么,要你准备什么就准备什么。至于为啥是这样完全是懵逼。

人过中年,似乎不管到哪里都充满着危机感。以前自以为自己技术很牛逼,项目管理方面也是相当的OK。随着时间的推移这种自信心慢慢的越来越消退。大家都说搞IT的就是吃青春饭。就像随着年龄的增长,身体越来虚一样,心里也是越来越虚。心里虚了以后就想自己应该多学习提高自己。但是一段时间发现要学的东西实在是太多了,技术的、管理的。东一下西一下的,也没有什么效果。后来自己总结了一下,没有目标的学习都是假装在学习,只不过是安慰自己罢了。一定要给自己定个目标要学哪个方向,而检验学习效果的办法非常简单粗暴–考证。以考促学。能够考证通过不能说明你学得有多么的精深,至少也说明你达到了基本的平均水平。没有考试就没有压力,一本书拖拖拉拉看了一年还在看。而考试时间临近的压力对于深度拖延症患者也是一个很好的治愈方式。

就这样,我给自己制定的第一个学习目标就是系统的学习项目管理的理论体系,所以报了软考的信息系统项目管理师。经过半年多的学习顺利的拿到了信息系统项目管理师的证。学习的时候还是有一些感触,原来自己在平时的项目管理工作中还是有理论支撑的,人家在书中就已经写了。一些平时没有注意考虑到的点书上也有总结。回想起自己带的项目过CMMI5和过ISO认证等,以及公司的项目管理体系和质量管理体系结合书中的知识点,至少把我零散的一些项目管理知识和经验给系统化、体系化的联系起来了,让我对项目管理有了更深切的理解。尤其是在后来信息系统项目管理师考试写论文的时候,就能够可以很好的理论联系实践。

嗯,工作这么多年,我终于可以持证上岗了!


作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注微信公众号,一起学习、成长!

网络信息安全管理要素和安全风险评估

发表于 2020-12-04 | 更新于: 2025-10-23 | 分类于 技术 , 网络安全 | | 阅读次数:
字数统计: 1.6k | 阅读时长 ≈ 5

网络信息安全管理要素由网络管理对象、网络威胁、网络脆弱性、网络风险、网络保护措施组成。
网络信息安全管理要素
由于网络管理对象自身的脆弱性,使得威胁的发生成为可能,从而造成了不同的影响,形成了风险。

网络安全管理实际上就是风险控制,其基本过程是通过网络管理对象的威胁和脆弱性进行分析,确定网络管理对象的价值、网络管理对象威胁发生的可能性、网络管理对象的脆弱程度,从而确定网络管理对象的风险等级,然后据此选取合适的安全保护措施,降低网络管理对象的风险。

所有的安全管理、安全服务、安全技术等都是围绕网络信息安全管理要素来的。

网络安全风险评估是评价网络信息系统遭受潜在的安全威胁所产生的影响。

网络安全风险,是指由于网络系统所存在的脆弱性,因人为或自然的威胁导致安全事件发生所造成的可能性。网络风险评估就是评估威胁者利用网络资产的脆弱性,造成网络资产损失的严重程度。

网络安全风险评估过程,主要包括网络安全风险评估准备、资产识别、威胁识别、脆弱性识别、已有的安全措施分析、网络安全风险分析、网络安全风险处置与管理等。
网络安全风险评估过程
资产识别包含“网络资产鉴定”和“网络资产价值估算”。前者给出评估所考虑的具体对象,确认网络资产种类和清单,是整个评估工作的基础。常见的网络资产主要分为网络设备、主机、服务器、应用、数据和文档资产等六个方面。

“网络资产价值估算”是某一具体资产在网络系统中的重要程度确认。

威胁是指可能对评估对象造成损害的外部原因。威胁利用评估对象自身的脆弱性,采用一定的途径和方式,对评估对象造成损害或损失,从而形成风险,威胁识别是对网络资产有可能受到的安全危害进行分析,一般从威胁来源、威胁途径、威胁意图等几个方面来分析。

脆弱性是指评估对象存在一个或多个脆弱的管理、技术、业务方面的漏洞,这些漏洞可能会被威胁所利用。脆弱性识别是指通过各种测试方法,获得网络资产中所存在的缺陷清单,这些缺陷会导致对信息资产的非授权访问、泄密、失控、破坏或不可用、绕过已有的安全机制,缺陷的存在将会危及网络资产的安全。

任务 输出文档 文档内容
风险评估准备 会议记录并确认需要评估的系统、评估计划和评估程序 评估系统、评估计划和内容安排,双方负责人及需要明确的协调工作
访谈 针对业务系统进行技术安全和管理安全评估的访谈表 业务系统描述、运营情况和用户群体,并了解业务管理流程
文档审查(资产识别) 资产审查记录和业务系统审查记录 资产管理台账、网络拓扑图、业务运营管理制度和责任人
威胁识别 技术安全测评的网络、主机、应用测评结果记录,工具测试完成后的电子输出记录 漏洞扫描、渗透性测试、性能测试、入侵检测和协议分析等内容的技术测试结果
脆弱性识别 根据威胁识别结果,技术安全测评的网络、主机、应用测评 检查检查内容的记录,并根据威胁对业务系统脆弱性进行识别
风险处置 风险处置措施记录 对已识别的风险进行评估和处置,并评估是否存在残余风险
风险管理 对可接受的残余风险进行风险管理并出具风险评估报告 风险评估过程中发现的问题、问题的证据和证据源、每项检查活动中测评委托单位配合人员的书面认可

网络安全风险分析是指在资产评估、威胁评估、脆弱性评估、安全管理评估、安全影响评估的基础上,综合利用定性和定量的分析方法,选择适当的风险计算方法或工具确定风险的大小与风险等级,即对网络系统安全管理范围内的每一个网络资产因遭受泄露、修改、不可用和破坏所带来的任何影响做出一个风险测量的列表,以便识别与选择适当和正确的安全控制方式。通过分析所评估的数据,进行风险值计算。

网络安全风险分析

网络安全风险分析的主要步骤如下:
一、对资产进行识别,并对资产的价值进行赋值。
二、对威胁进行识别,描述威胁的属性,并对威胁出现的频率赋值。
三、对脆弱性进行识别,并对具体资产的脆弱性的严重程度赋值。
四、根据威胁及威胁利用脆弱性的难易程度判断安全事件发生的可能性
五、根据脆弱性的严重程度及安全事件所作用的资产价值计算安全事件的损失。
六、根据安全事件发生的可能性及安全事件出现后的损失,计算安全事件一旦发生对组织的影响,即网络安全风险值。其中,安全事件损失是指确定已经鉴定的资产受到损害所带来的影响。


作者博客:http://xiejava.ishareread.com


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

pyinstaller打包exe后不能运行报Failed to execute script XXXX问题分析与处理

发表于 2020-11-03 | 更新于: 2025-10-23 | 分类于 技术 , 开发 | | 阅读次数:
字数统计: 362 | 阅读时长 ≈ 1

最近用python的tkinter写了个小工具,发现用pyinstaller打包成exe后运行出错。报Failed to execute script XXXX

1
pyinstaller -F -w worksubmit.py

报错

为了搞清楚报错的原因,想看到程序具体执行的情况。可以通过不带-w的参数打包在控制台看程序执行情况。
pyinstaller -F worksubmit.py 可以通过不带-w的参数打包,这时打包的exe运行是带控制台的命令行

运行情况

可以清楚的看到

ModuleNotFoundError:No module named ‘xlrd’

这时就要解决打包时xlrd模块没有打进去的问题,找到xlrd模块的位置,并将该模块打到运行程序包里。
先找到程序依赖的xlrd模块的位置,在PyCharm中通过”File”->”Setting”,在项目设置里查看Project interpreter,可以看到xlrd的目录位置。

找包路径

用pyinstall打包的时候通过加-p的参数将依赖的模块打进去。

1
pyinstaller -F -p J:\study\python\testsubmit\venv\Lib\site-packages worksubmit.py

在这里插入图片描述
这样就可以顺利将依赖的模块打进去,再执行exe文件不再报错了。

总结一下,碰到打包成exe后运行有问题,可以通过不带-w的参数打包,这时打包的exe运行是带控制台的命令行。基本上所有的运行问题都可以通过控制台的命令定位和排查。


博客地址:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

等级保护与分级保护的关系和区别

发表于 2020-10-24 | 更新于: 2025-10-23 | 分类于 技术 , 网络安全 | | 阅读次数:
字数统计: 932 | 阅读时长 ≈ 3

等级保护与分级保护既有联系又有区别:

国家安全信息等级保护,重点保护的对象是非涉密的涉及国计民生的重要信息系统和通信基础信息系统;涉密信息系统分级保护是国家信息安全等级保护的重要组成部分,是等级保护在涉密领域的具体体现。

国家安全信息等级保护重点保护的对象是涉及国计民生的重要信息系统和通信基础信息系统,而不论它是否涉密。涉密信息系统分级保护保护的对象是所有涉及国家秘密的信息系统,重点是党政机关、军队和军工单位,由各级保密工作部门根据涉密信息系统的保护等级实施监督管理,确保系统和信息安全,确保国家秘密不被泄漏。

国家信息安全等级保护是国家从整体上、根本上解决国家信息安全问题的办法,进一步确定了信息安全发展的主线和中心任务,提出了总体要求。对信息系统实行等级保护是国家法定制度和基本国策,是开展信息安全保护工作的有效办法,是信息安全保护工作的发展方向。而涉密信息系统分级保护则是国家信息安全等级保护在涉及国家秘密信息的信息系统中的特殊保护措施与方法。

等级保护与分级保护本质的区别是等级保护适用的对象为非涉密信息系统,分级保护适用的对象为涉密信息系统。

具体区别如下:

项目 等级保护 分级保护
管理体系 公安机关 国家保密部门
标准体系 国家标准(GB、GB/T) 国家保密标准(BMB,强制执行)
适用对象 非涉密信息系统 涉密信息系统
定级依据 等级保护定级是依据重要业务系统与承载业务运行的网络、设备、系统及单位属性、遭到破坏后所影响的主、客体关系等。 分级保护定级是依据信息的重要性,以信息最高密级确定受保护的级别。
级别划分 第一级:自主保护级
第二级:指导保护级
第三极:监督保护级
第四级:强制保护级
第五级:专控保护级
秘密级
机密级
绝密级
工作内容 信息系统等级保护工作包括:
系统定级、系统备案、安全建设整改、等级测评和监督检查五个环节。
涉密信息系统分级保护工作包括:
系统定级、方案设计、工程实施、系统测评、系统审批、日常管理、测评与检查和系统废止八个环节。
测评频率 第三级信息系统:应每年至少进行一次等级测评;
第四级信息系统:应每年至少进行一次等级测评;
第五级信息系统:应当根据特殊安全要求进行等级测评。
秘密级、机密级信息系统:应每两年至少进行一次安全保密测评或保密检查;
绝密级信息系统:应每年至少进行一次安全保密测评或保密检查。
评测机构 国家信息安全等级保护工作协调小组办公室授权的信息安全等级保护测评机构 由国家保密工作部门授权的系统测评机构

Supervisor离线安装及使用

发表于 2020-05-18 | 更新于: 2025-10-23 | 分类于 技术 , 开发 | | 阅读次数:
字数统计: 2.2k | 阅读时长 ≈ 8

Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警

supervisor的安装有多种方式
配置好yum源后,可以直接安装

1
yum install supervisor

Debian/Ubuntu可通过apt安装

1
apt-get install supervisor

pip安装

1
pip install supervisor

easy_install安装

1
easy_install

这几种安装方式都需要在线联网。但大部分的生产环境都是离线环境,是封闭的网络没有办法在线安装。

这里整理了Supervisor的离线安装包和安装脚本,可以进行离线安装并能指定安装目录。

一、整理Supervisor安装需要的工具和依赖包

包括有:
setuptools
elementtree
meld3
supervisor

二、编写离线安装脚本

整体思路:依次解压并安装Supervisor所需要的工具和依赖包,将Supervisor的配置文件的默认安装目录路径替换成制定的目录路径

1
vi install_supervisor.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/env bash
function Install_Supervisor()
{
#Install supervisord
tar -zxvf setuptools-24.0.2.tar.gz 2>&1 >/dev/null
cd setuptools-24.0.2/
python setup.py install >/dev/null 2>&1
cd ..
easy_install elementtree-1.2.7-20070827-preview.zip >/dev/null 2>&1
easy_install meld3-0.6.5.tar.gz 2>/dev/null 2>&1
easy_install supervisor-3.3.0.tar.gz >/dev/null 2>&1
mkdir -p ${INSTALL_DIR}/etc/
mkdir -p ${INSTALL_DIR}/tmp/
mkdir -p ${INSTALL_DIR}/logs/
cp etc/supervisord.conf ${INSTALL_DIR}/etc/
sed -i "s#__install_dir__#${INSTALL_DIR}#g" ${INSTALL_DIR}/etc/supervisord.conf
sed -i "s#__user__#${USER}#g" ${INSTALL_DIR}/etc/supervisord.conf
ln -s /usr/bin/supervisorctl ${INSTALL_DIR}/commandctl
cp run_supervisor.sh ${INSTALL_DIR}/
sed -i "s#__install_dir__#${INSTALL_DIR}#g" ${INSTALL_DIR}/run_supervisor.sh
chmod +x ${INSTALL_DIR}/run_supervisor.sh
}

USER='root'
if [ ! -n "$1" ]; then
INSTALL_DIR='/app/supervisor'
else
INSTALL_DIR=$1
fi
Install_Supervisor

安装脚本中默认的安装路径是/app/supervisor,可以根据实际情况进行调整。

另外整理了一个run_supervisor.sh的脚本,在安装以后根据安装目录来生成这个启动脚本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env bash
cd __install_dir__
if [ ! -d "tmp" ];then
mkdir tmp
else
echo "tmp文件夹已经存在"
fi
if [ ! -d "logs" ];then
mkdir logs
else
echo "logs文件夹已经存在"
fi
/usr/bin/supervisord -c __install_dir__/etc/supervisord.conf
echo "supervisord 已执行。"

三、将所有的安装包脚本等打成离线安装包

1
tar -czvf  supervisor_install_pack.tar.gz  supervisor

已打好的离线安装包下载 https://545c.com/file/21165215-443895501
城通网盘下载 https://545c.com/file/21165215-443895501
CSDN下载 https://download.csdn.net/download/fullbug/12434225

四、离线安装包使用

下载离线安包,解压

1
tar -zxvf supervisor_install_pack.tar.gz

解压后看到supervisor的目录,在supervisor的目录中找到install_supervisor.sh的脚本
supervisor离线包安装目录
执行install_supervisor.sh的脚本,默认安装/app/supervisor下,可以带参数指定安装目录。也可以修改install_supervisor.sh脚本自定义默认的安装路径。
执行完安装脚本,就可以在/app/supervisor目录下看到有相应的启动脚本、配置文件目录、日志目录及临时文件目录。
supervisor运行目录
执行run_supervisor.sh就可以启动supervisor

1
./run_supervisor.sh

五、验证和使用supervisor

ps -ef|grep supervisor 查看supervisor是否已经启动

查看supervisor是否已经启动

通过web界面的9001看web界面控制台http://127.0.0.1:9001

web界面控制台

  • supervisord
    运行 Supervisor 时会启动一个进程 supervisord,它负责启动所管理的进程,并将所管理的进程作为自己的子进程来启动,而且可以在所管理的进程出现崩溃时自动重启。
    supervisord -v 查看supervisor版本号

  • supervisorctl
    是命令行管理工具,可以用来执行 stop、start、restart 等命令,来对这些子进程进行管理。
    supervisor是所有进程的父进程,管理着启动的子进展,supervisor以子进程的PID来管理子进程,当子进程异常退出时supervisor可以收到相应的信号量。

supervisor常用管理命令
supervisorctl restart < application name> ;重启指定应用
supervisorctl stop < application name> ;停止指定应用
supervisorctl start < application name> ;启动指定应用
supervisorctl restart all ;重启所有应用
supervisorctl stop all ;停止所有应用
supervisorctl start all ;启动所有应用

六、配置文件说明

supervisor.conf配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
[unix_http_server]
file=/tmp/supervisor.sock ;UNIX socket 文件,supervisorctl 会使用
;chmod=0700 ;socket文件的mode,默认是0700
;chown=nobody:nogroup ;socket文件的owner,格式:uid:gid

;[inet_http_server] ;HTTP服务器,提供web管理界面
;port=127.0.0.1:9001 ;Web管理后台运行的IP和端口,如果开放到公网,需要注意安全性
;username=user ;登录管理后台的用户名
;password=123 ;登录管理后台的密码

[supervisord]
logfile=/tmp/supervisord.log ;日志文件,默认是 $CWD/supervisord.log
logfile_maxbytes=50MB ;日志文件大小,超出会rotate,默认 50MB,如果设成0,表示不限制大小
logfile_backups=10 ;日志文件保留备份数量默认10,设为0表示不备份
loglevel=info ;日志级别,默认info,其它: debug,warn,trace
pidfile=/tmp/supervisord.pid ;pid 文件
nodaemon=false ;是否在前台启动,默认是false,即以 daemon 的方式启动
minfds=1024 ;可以打开的文件描述符的最小值,默认 1024。注意托管ES进程,这里要进行调整至65535
minprocs=200 ;可以打开的进程数的最小值,默认 200。注意托管ES进程,这里要进行调整至4096

[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ;通过UNIX socket连接supervisord,路径与unix_http_server部分的file一致
;serverurl=http://127.0.0.1:9001 ; 通过HTTP的方式连接supervisord

; [program:xx]是被管理的进程配置参数,xx是进程的名称
[program:xx]
command=/opt/apache-tomcat-8.0.35/bin/catalina.sh run ; 程序启动命令
autostart=true ; 在supervisord启动的时候也自动启动
startsecs=10 ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart=true ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
startretries=3 ; 启动失败自动重试次数,默认是3
user=tomcat ; 用哪个用户启动进程,默认是root
priority=999 ; 进程启动优先级,默认999,值小的优先启动
redirect_stderr=true ; 把stderr重定向到stdout,默认false
stdout_logfile_maxbytes=20MB ; stdout 日志文件大小,默认50MB
stdout_logfile_backups = 20 ; stdout 日志文件备份数,默认是10
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out
stopasgroup=false ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=false ;默认为false,向进程组发送kill信号,包括子进程

;包含其它配置文件
[include]
files = supervisord.d/*.ini ;默认放在安装目录的supervisord.d目录下,可以指定一个或多个以.ini结束的配置文件。

子进程配置文件

需要给托管的子进程配置相应的配置文件,每个进程的配置文件都可以单独分拆也可以把相关的脚本放一起。目录及文件后缀可以在
supervisor.conf配置文件中进行自定义。见supervisor.conf的

1
2
[include]
files = supervisord.d/*.ini #目录路径及文件后缀名都可以自定义。

logstash.ini 样例说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#项目名
[program:logstash-test]
#脚本目录
directory=/app/elk/logstash-7.6.0
#脚本执行命令
command=/app/elk/logstash-7.6.0/bin/logstash -f /app/elk/logstash-7.6.0/bin/test-pipeline.conf
#进程数
numprocs=1
#supervisor启动的时候是否随着同时启动,默认True
autostart=true
#当程序exit的时候,这个program不会自动重启,默认unexpected,设置子进程挂掉后自动重启的情况,有三个选项,false,unexpected和true。如果为false的时候,无论什么情况下,都不会被重新启动,如果为unexpected,只有当进程的退出码不在下面的exitcodes里面定义的
autorestart=false
#这个选项是子进程启动多少秒之后,此时状态如果是running,则我们认为启动成功了。默认值为1
startsecs=1
#脚本运行的用户身份
user = root
#把stderr重定向到stdout,默认 false
redirect_stderr = true
#stdout日志文件大小,默认 50MB
stdout_logfile_maxbytes = 10M
#stdout日志文件备份数
stdout_logfile_backups = 10
#日志输出
stderr_logfile=/app/elk/logstash-7.6.0/logs/logstash_test_error.log
stdout_logfile=/app/elk/logstash-7.6.0/logs/logstash_test_out.log

作者博客:http://xiejava.ishareread.com


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

logstash简明实用教程

发表于 2020-04-14 | 更新于: 2025-10-23 | 分类于 技术 , 开发 | | 阅读次数:
字数统计: 3.3k | 阅读时长 ≈ 13

一、logstash是什么

Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。
官方介绍:Logstash is an open source data collection engine with real-time pipelining capabilities。简单来说logstash就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端;与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供里很多功能强大的滤网以满足你的各种应用场景。
Logstash 能够动态地采集、转换和传输数据,不受格式或复杂度的影响。利用 Grok 从非结构化数据中派生出结构,从 IP 地址解码出地理坐标,匿名化或排除敏感字段,并简化整体处理过程。

Logstash常用于日志关系系统中做日志采集设备;
logstash
系统结构
logstash系统结构
Logstash的事件(logstash将数据流中等每一条数据称之为一个event)处理流水线有三个主要角色完成:inputs –> filters –> outputs:

输入(inpust):必须,负责产生事件(Inputs generate events),常用:File、syslog、redis、beats(如:Filebeats)
Logstash 支持 各种输入选择 ,可以在同一时间从众多常用来源捕捉事件。能够以连续的流式传输方式,轻松地从日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。

过滤器(filters):可选,负责数据处理与转换(filters modify them),常用:grok、mutate、drop、clone、geoip
过滤器能实时解析和转换数据
数据从源传输到存储库的过程中,Logstash 过滤器能够解析各个事件,识别已命名的字段以构建结构,并将它们转换成通用格式,以便更轻松、更快速地分析和实现商业价值。

  • 利用 Grok 从非结构化数据中派生出结构
  • 从 IP 地址破译出地理坐标
  • 将 PII 数据匿名化,完全排除敏感字段
  • 简化整体处理,不受数据源、格式或架构的影响

输出(outpus):必须,负责数据输出(outputs ship them elsewhere),常用:elasticsearch、file、graphite、statsd
Logstash 提供众多输出选择,可以将数据发送到指定的地方,并且能够灵活地解锁众多下游用例

其中inputs和outputs支持codecs(coder&decoder)在1.3.0 版之前,logstash 只支持纯文本形式输入,然后以过滤器处理它。但现在,我们可以在输入 期处理不同类型的数据,所以完整的数据流程应该是:input | decode | filter | encode | output;codec 的引入,使得 logstash 可以更好更方便的与其他有自定义数据格式的运维产品共存,比如:graphite、fluent、netflow、collectd,以及使用 msgpack、

二、为什么是logstash

Logstash和Flume对比
1、Logstash比较偏重于字段的预处理,在异常情况下可能会出现数据丢失,只是在运维日志场景下,一般认为这个可能不重要;而Flume偏重数据的传输,几乎没有数据的预处理,仅仅是数据的产生,封装成event然后传输;传输的时候flume比logstash多考虑了一些可靠性。因为数据会持久化在channel中,数据只有存储在下一个存储位置(可能是最终的存储位置,如HDFS;也可能是下一个Flume节点的channel),数据才会从当前的channel中删除。这个过程是通过事务来控制的,这样就保证了数据的可靠性。
2、Logstash有几十个插件,配置比较灵活,flume强调用户自定义开发;
3、Logstash的input和filter还有output之间都存在buffer,进行缓冲;Flume直接使用channel做持久化
4、Logstash性能以及资源消耗比较严重,且不支持缓存;
Logstash和Flume对比
详见参考:https://blog.csdn.net/songfeihu0810232/article/details/94406608

三、logstash安装与配置

1、logstash安装

环境要求:jdk1.8或以上
下载logstash软件包 logstash官方下载地址https://www.elastic.co/cn/downloads/logstash
下载后直接解压就可以用
如:tar zxvf logstash-7.6.0.tar.gz
解压后目录如下:
logstash目录
目录结构说明见官方文档:https://www.elastic.co/guide/en/logstash/7.1/dir-layout.html
解压以后可以对logstash进行简单的测试。

1
bin/logstash -e 'input { stdin { } } output { stdout {} }'

这条命令表示通过命令的方式指定logstash的输入输出分别是标准的输入输出,什么是标准的输入输出呢?就是控制台的输入输出。
等待启动成功,直接输入“hello world”
将会在控制台会有相应的输出
出现这些信息就表示logstash安装成功并且可以使用了。
logstash测试

2、在线安装logstash插件

虽然logstash默认安装了大部分的插件,但是有些插件没有默认安装,如logstash-output-syslog、logstash-output-jdbc

2.1. 安装Gem并更新

1
2
3
4
5
6
# yum install -y gem
# gem -v
2.0.14.1
# gem update --system
# gem -v
3.1.2

2.2 检查并修改镜像源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# gem sources -l
*** CURRENT SOURCES ***

https://rubygems.org/

# gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
https://gems.ruby-china.com/ added to sources
https://rubygems.org/ removed from sources

# cat ~/.gemrc
---
:backtrace: false
:bulk_threshold: 1000
:sources:
- https://gems.ruby-china.com/
:update_sources: true
:verbose: true
:concurrent_downloads: 8

请注意:国内的镜像站从https://gems.ruby-china.org 换成了 https://gems.ruby-china.com
!!!现在很多网上的资料就都是写的https://gems.ruby-china.org,导致很多人换了镜像源也装不上。

2.3. 修改 logstash的 gem 镜像源

cd到logstach的安装目录,可以看到Gemfile文件 vi Gemfile

1
2
3
4
5
6
# This is a Logstash generated Gemfile.
# If you modify this file manually all comments and formatting will be lost.

source "https://rubygems.org"
gem "logstash-core", :path => "./logstash-core"
......

更改默认的 https://rubygems.org 为https://gems.ruby-china.com

2.4、安装插件

安装插件

3、离线安装logstash插件

在实际应用过程中有些生产环境是封闭的网络环境,没法连接外网。这时候就需要离线安装插件。
说离线安装实际就是在一个有网络的环境下将插件装好,然后再装到离线环境中。
这里有两种方式,
一种就是在有网络的环境下将插件装好,将整个logsash包离线拷到生产环境。
另一种方式就是在有网络的环境下将插件装好后,将logstash的需要离线安装的插件打个离线包,然后再在生产环境进行离线安装。
离线插件包打包安装具体操作如下:

3.1 通过logstash-plugin prepare-offline-pack 命令将插件打成zip包

1
./logstash-plugin prepare-offline-pack --output logstash-output-syslog.zip logstash-output-syslog

打包
打包命令执行成功以后,可以看到在logstash的bin目录下有打成的离线插件zip包
打包后生成的离线包

3.2 通过logstash-plugin install 进行离线安装

1
bin/logstash-plugin install file:///home/logstash/logstash-7.6.2/tools/logstash-output-syslog.zip

安装后成功会有如下提示

1
2
Installing file: /home/logstash/logstash-7.6.2/tools/logstash-output-syslog.zip
Install successful

3.2 通过logstash-plugin list命令检查插件是否安装成功

logstash-plugin list

4、logstash简单配置说明

语法

Logstash 设计了自己的 DSL ——包括有区域,注释,数据类型(布尔值,字符串,数值,数组,哈希),条件判断,字段引用等。

区段(section)

Logstash 用 {} 来定义区域。区域内可以包括插件区域定义,你可以在一个区域内定义多个插件。插件区域内则可以定义键值对设置。示例如下:

1
2
3
4
input {
stdin {}
syslog {}
}

数据类型

Logstash 支持少量的数据值类型:

  • bool
    1
    debug => true
  • string
    1
    host => "hostname"
  • number
    1
    port => 514
  • array
    1
    match => ["datetime", "UNIX", "ISO8601"]
  • hash
    1
    2
    3
    4
    options => {
    key1 => "value1",
    key2 => "value2"
    }

    字段引用(field reference)

    如果想在 Logstash 配置中使用字段的值,只需要把字段的名字写在中括号 [] 里就行了,这就叫字段引用。
    对于 嵌套字段(也就是多维哈希表,或者叫哈希的哈希),每层的字段名都写在 [] 里就可以了。比如,你可以从 geoip 里这样获取 longitude 值:
    [geoip][location][0]
    logstash 的数组也支持倒序下标,即 [geoip][location][-1] 可以获取数组最后一个元素的值。
    Logstash 还支持变量内插,在字符串里使用字段引用的方法是这样:
    “the longitude is %{[geoip][location][0]}”

条件判断(condition)

表达式支持下面这些操作符:
equality, etc: ==, !=, <, >, <=, >=
regexp: =, !
inclusion: in, not in
boolean: and, or, nand, xor
unary: !()
通常来说,你都会在表达式里用到字段引用。比如:
if “_grokparsefailure” not in [tags] {
} else if [status] !~ /^2\d\d/ and [url] == “/noc.gif” {
} else {
}

命令行参数

Logstash 提供了一个 shell 脚本叫 logstash 方便快速运行。它支持一下参数:
-e
意即执行。我们在 “Hello World” 的时候已经用过这个参数了。事实上可以不写任何具体配置,直接运行 bin/logstash -e ‘’ 达到相同效果。这个参数的默认值是下面这样:
input {
stdin { }
}
output {
stdout { }
}
–config 或 -f
意即文件。真实运用中,我们会写很长的配置,甚至可能超过 shell 所能支持的 1024 个字符长度。所以我们必把配置固化到文件里,然后通过 bin/logstash -f agent.conf 这样的形式来运行。
此外,logstash 还提供一个方便我们规划和书写配置的小功能。你可以直接用 bin/logstash -f /etc/logstash.d/ 来运行。logstash 会自动读取 /etc/logstash.d/ 目录下所有的文本文件,然后在自己内存里拼接成一个完整的大配置文件,再去执行。
–configtest 或 -t
意即测试。用来测试 Logstash 读取到的配置文件语法是否能正常解析。Logstash 配置语法是用 grammar.treetop 定义的。尤其是使用了上一条提到的读取目录方式的读者,尤其要提前测试。
–log 或 -l
意即日志。Logstash 默认输出日志到标准错误。生产环境下你可以通过 bin/logstash -l logs/logstash.log 命令来统一存储日志。
–filterworkers 或 -w
意即工作线程。Logstash 会运行多个线程。你可以用 bin/logstash -w 5 这样的方式强制 Logstash 为过滤插件运行 5 个线程。

四、logstash使用的几种典型的应用场景

1、通过logstash将syslog日志原始日志转发

syslog日志原始日志转发
在logstash的bin目录下新建配置文件

1
vi test-pipeline.conf

编辑input和output

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
input {
stdin{
type => "test-log"
}
syslog{
type => "test-log"
port => 514
}
}
output
{
stdout {
codec => rubydebug
}
syslog{
host => "192.168.2.185"
port => 514
}
}

这样就相当于把日志转发到了192.168.2.185这台机器的514端口
编辑好配置文件以后执行
./logstash -f test-pipeline.conf --config.test_and_exit 对配置文件进行检查,如果配置文件写得有问题,将会有错误提示。
配置文件检查没有问题后就可以启动logstash执行了./logstash -f test-pipeline.conf --config.reload.automatic
用udpsender工具往这台机器上发送日志信息,可以看到日志转发到192.168.2.185这台机器上了。

updsend发送日志

在控制台可以看到192.168.2.185,接收到了192.168.2.173转发过来的日志
控制台日志

2、通过rsyslog、logstash采集nginx等中间件的日志送到ES

logstash可以与rsyslog、filebeat等无缝结合采集nginx等中间件日志,送给数据存储。
通过rsyslog、logstash采集nginx等中间件的日志送到ES

具体参见:https://xiejava.gitee.io/posts/f3e97829/

3、通过logstash将日志入kafka再入mysql或ES

数据先放到kafka队列里缓存削峰,然后从kafka队列里读取数据到mysql或其他存储系统中进行保存。logstash将日志入kafka再入mysql或ES
具体参见:https://xiejava.gitee.io/posts/54e4fd14/

4、通过logstash进行日志补全后再转发或入库

采集原始日志以后,需要对原始日志进行调整合补齐,比如最常见的是根据IP来补齐IP的经纬度等信息。

logstash进行日志补全

这里就可以用logstash的geotip,也可以用其他的外部API接口,为了更具代表性的说明,这里调用的是第三方的http接口(http://ip-api.com/json/),这个接口也是可以自己定义的。
参考配置文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
input {
stdin { }
syslog {
port => "514"
}
}
filter {
grok{
#匹配获取IP
match => {"message" => "%{IPV4:ip}"}
}
http {
#调用外部接口获取IP的详细信息
url => "http://ip-api.com/json/%{ip}"
verb => "GET"
add_field => {
"new_field" => "new_static_value"
}
}
mutate {
replace => {
#这里对原始日志数据进行补全,如加了新的字段及从接口中获取的信息
"message" => "%{message}|%{ip}: My new message|%{new_field}|%{[body][as]}"
}
}
}
output {
stdout { }
syslog {
host => "192.168.2.173"
port => "7514"
}
}

通过http接口调用API取得数据,然后通过mutate重新组合补全信息,这里通过调用获取IP地址信息的API获取IP的信息,然后补全到原始日志中。
在这里插入图片描述

可以看出logstash是一个非常灵活好用的数据采集框架工具,可以通过简单的配置满足绝大多数数据采集场景的需求。


作者博客:http://xiejava.ishareread.com


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

英语学渣的我是如何撸完一本英文原著的

发表于 2020-04-07 | 更新于: 2025-10-23 | 分类于 读书 | | 阅读次数:
字数统计: 2.2k | 阅读时长 ≈ 7

英语原著
2020年初立的flag就有要看完十本英文原著。看英文原著对于英语学渣的我来说几乎是很难想像的事情。说英语烂那只有自己知道,读书的时候从来就没有学好过,工作这么多年更是忘得一干二净了。与英语相爱相杀若干年,经历了无数次从开始到放弃……

非常羡慕别人能够很顺畅的看懂英文原著,能够丢开字幕看懂英语大片,能够飚一口的英文。有人说学好了英文就给自己多开了一扇了解世界的窗户,比别人多一半的人生经历。英语对于生活在全球化信息时代的我们来说有多么的重要,不用多说,道理啥的咱都知道,可是经历了这么多年还是学不会啊。买了N多的英语学习资料,下了N多的视频教程,查找了各种学习英语的方法。单词书永远都是翻了前面几页,英语学习资料屯了一堆从来没有开封过,市面上吹捧的各种英语学习方法感觉都很不错,尝试了很多种还是在尝试……

虽然有过无数次失败的经历,但也越来越认识到英语的重要性,也看到越来越多的人将英语学得很溜,让我清醒的认识到英语很重要,英语很难学,英语是一定是可以学好的,但是妄想速成是不可能的。如何才能最终习得英语的技能呢?

前新东方英语老师李笑来在他的《财富自由之路》中指出在智力上、知识上、经验上,复利效应对每个人来说都是存在的。知识和能力的习得与积累是有复利效应的。所以,大多数的人应该要相信自己能够通过知识和能力的积累和复利获得成功和成长。经过多年教训,所有什么打着21天搞定单词,一个月看懂原著啥的口号都是骗人的。在英语技能的习得上,我笃信只有坚持积累和复利才能最终成功。我坚信经过自己的努力和坚持,我在英语习得上投入的精力和时间超过成本线以后,我的英语水平将会有突破性的提高。

在英语学习的过程中有过《坚持了330天,我终于放弃了背单词》的经历,让我认识到只有“用”英语,才能够真正的掌握英语。目前我最朴素的需求就是想能够看懂英文文档,能够流畅的阅读英文书籍。而目前所处的语言环境”说”英语的需求不是很迫切。对于我来说能够流利阅读英语已经足够了。既然开始“用”英语,那就从大量开始阅读英语原版书开始吧!英语这么菜,我为什么敢挑战英文原版书呢?因为我看到了李笑来老师提到掌握一门外语的最少必要知识。
1、认识字母
2、认识音标
3、会查字典
4、懂点基本语法
5、会用百度或google等搜索引擎。
如果掌握了这些最小必要的知识,你就已经“入门”了,接下了就只剩下所谓“执行”了,也就是要用起来。
我想,这些最小必要的知识我基本都已经具备了。在正式准备看英语原著之前,我看完了全套149本《书虫》(见《看完全套149本《书虫》是种什么样的体验》)。对于英语的阅读相对来说没有那么怵了。
虽然我看完了全套149本《书虫》,但是《书虫》毕竟只是入门级的英语简写读物,与英语原版的原著还是有很大的距离的。

作为英语原著初读者来说,真正看完一本书,完成从0到1的过程,比深刻理解一本书更重要。而对于初读者来说如何撸完一本英文原著还是比较有挑战的。

首先要找到一本自己非常感兴趣并且适合自己难度的书籍。自己不感兴趣或者难度太难了,就会容易放弃。
对于挑选原版书的阅读材料来说,我也是花的一些功夫。网上有人建议刚开始接触英语原著建议是比较浅的原著如儿童读物《夏洛的网》、《格林童话》、《小王子》之类的。对于我这种成年人来说这类读物实在是提不起我的兴趣。还有人推荐《哈利波特》系列,我不是哈迷所以也没有选择《哈利波特》系列。我选择的是《奇迹男孩》。《奇迹男孩》的电影在2018年上映的时候我就想看,但是一直没有时间去看。正好买了这本英文原著来看看。《奇迹男孩》英文原著豆瓣评分9.1分,属于儿童成长类的书籍,老少皆宜,300来页长短适中不是那种大部头。因为是面向青少年的书籍所以单词不难,而且是近几年出的新书畅销书,比较口语化没有太多的长句子,非常通俗。事实证明《奇迹男孩》非常适合像我这样的英语原著初读者。
奇迹男孩

选择了阅读目标的原版书籍后,就要开始读并坚持下来
作为英语原著初读者,即使是最通俗的原版书,单词也会是一个拦路虎。单词没有办法,那就是勤查字典。《奇迹男孩》是面向青少年的书籍,单词不难,但对我来说也是充斥着各种生词。不过还好每页大概是在6、7个左右。如果按照伍君仪的《把你的词汇用起来》中的透析法,隔一个生词查一个,只查一半的生词,剩下的靠猜,那每页只要查2-3个单词左右,这个查词量已经很小了。因为这本书对我来说生词量6、7个不算多,而且作为原著初读者,猜单词的意思往往猜不准,所以我就索性看到不懂的单词每个都会查字典。为了尽快的撸完这本书,我也是给自己定了个目标,每天看30页。看少了不记得前后的情节,看多了怕自己看不下去。别看只有区区的30页,看中文也就半个小时的事情,但是看英文又要查字典,平均要花掉2-3个小时才能看完。所以对于英语原著初读者来说30页是个比较适中的量,后续如果熟练的可以慢慢的增加。这本《奇迹男孩》300多页,大概花了我一周半的时间。

对于英语原版书是看电子版的还是纸质版的,建议还是先看纸质版的
作为英语原著初读者,我自己认为还是先看纸质版。看电子版的有个好处就是可以随时查字典,尤其是用kindle看,开启生词提示,并且长按生词就会调出字典查词,非常方便。正是因为太方便了,会让我们产生依赖,有时很容易的单词还会忍不住去查一下字典。而且有时候要往回看情节翻起来也不太方便。虽然有进度显示但是没有纸质书那么直观。纸质书看起来更加有感觉,可以前后翻,有时不记得前面的情节了可以方便的随时翻看,每天看了多少页插个书签就是。看着书签慢慢的插到了最后心里还是满满的成就感。

对于英语原著初读者来说,撸完一本英文原著,完成从0到1的过程。这种小小的成就感,更加坚定了学习英语的信心。相信经过自己的努力和坚持,看完数十本英文原著以后,英语水平将会有突破性的提高。

学习外语没有其他任何捷径,唯有“结硬寨,打呆仗;日拱一卒,功不唐捐!”

我读过的英文读本豆列: https://www.douban.com/doulist/118432400/

爱分享读书豆瓣小组: https://www.douban.com/group/655112/


关注:“爱分享读书”微信公众号

“爱分享读书”微信公众号

读书我们是认真的

忘掉10000小时,如何快速获得某项技能

发表于 2020-03-28 | 更新于: 2025-10-23 | 分类于 读书 | | 阅读次数:
字数统计: 1.2k | 阅读时长 ≈ 4

一万小时定律

几乎每个人都知道1万小时定律,这个定律被人奉为圭臬。给每个渴望成功的同学们指明了方向,只要在某个领域付出不断的努力,达到10000个小时,就可以成为这方面的专家领袖。

所谓“一万小时定律”,最早出现于作家格拉德威尔《异类》一书。在书中,格拉德威尔举出了例如比尔盖茨这样的例子,言之凿凿的声称:那些天才和专家之所以卓越非凡,并非他们的天赋超人一等,而是他们付出了持续不断的努力。而任何普通人都可以达到这样的目标,只需要付出10000小时的训练即可。

这个定律非常符合大家的胃口,也有一定的道理,不怀疑在一个方向上持续不断的努力肯定会有所成功。在智力上、知识上、经验上,复利效应对每个人来说都是存在的。知识和能力的习得与积累是有复利效应的。所以,大多数的人应该要相信自己能够通过知识和能力的积累和复利获得成功和成长。

但是10000小时不是个很短的时间,如果每天投入2个半小时,那要10年才能成为专家。大多数人不用说坚持10000个小时,坚持100个小时还没有入门,就已经倒下放弃了。而对正常人现实需求来说,一万小时是成为顶尖高手的门槛,可遇而不可求。想要获得比较好的收入,能够做出较好的事情,基本上只需要超过平均水平即可。不必凡事都跟行业内最顶尖的几个人相比,但是能够超过一个行业的平均水平,也足够获取比较好的利润、回报和成绩。

对于任何一件事情、一个行业领域或者是一个学习任务而言也只有先入门了,取得了比较好的利润、回报和成绩,才会有兴趣持续的做下去,才可能有10000小时精进的努力。所以忘掉10000小时,先快速的入门达到超过行业平均水准,才能继续后面的牛逼。

那么问题来了,如何才能快速的入门呢?
李笑来的《财富自由之路》里,指出了两个关键字“最少必要知识”、”用“
当需要进入某个行业、获得某项技能的时候,一定要想办法在最短的时间里弄清楚都有哪些最小必要知识,然后迅速的掌握它们。任何人都可以完成快速入门。例如掌握一门外语的最少必要知识有哪些呢?
1、认识字母
2、认识音标
3、会查字典
4、懂点基本语法
5、会用百度或google等搜索引擎。
如果掌握了这些最小必要的知识,你就已经“入门”了,接下了就只剩下所谓“执行”了,也就是要用起来。通过用起来才能从入门到熟练。然后就要专注于改进了。
所以快速学习或快速掌握一门技能进入某个行业。无外乎就是快速的掌握最小必要的知识迅速入门,然后通过不断的用起来,在用的过程中不断的实践。逐步从入门到熟练,熟练后就可以专注创新改进而达到精进。

道理就是这么个道理,但是为什么有些人学什么东西入门就是比你快呢?
就是他已有的背景知识掌握得比你广、比你好,比如同样是学机器学习,数学系的大概率的要比计算机系的要入门快,计算机系的大概率的要比文科类专业的入门要快。因为学机器学习需要比较强的数学知识背景,虽然入门同样是要掌握那几种常用的算法,数学系的理解起来要比非数学系统理解起来要快得多。

所以要想快速进入某个行业、获得某项技能,先弄清楚这个行业都需要哪些最小必要知识,评估一下自己的背景知识的匹配度,迅速补齐掌握最小的必要知识,持续的用,不断的改进。实际上当你进入到某个行业实际上就已经补齐完善了你的背景知识。通过不断的学习,背景知识框架体系会越来越广,那你学东西会越来越快。形成一个正向循环。让你越来越牛逼!


关注:“爱分享读书”微信公众号

“爱分享读书”微信公众号

读书我们是认真的

<1…19202122>
XieJava

XieJava

216 日志
11 分类
27 标签
RSS
GitHub
友情链接
  • 爱分享读书
  • CSDN
  • 豆瓣
© 2025 XieJava | Site words total count: 436.7k

主题 — NexT.Muse
0%