精华内容
下载资源
问答
  • FIFO的读写

    千次阅读 2017-12-18 18:58:46
    1.同步时钟FIFO的读写(用同一...时钟频率*数据宽度= 读数据宽度*读出数据的频率( 不是读时钟频率 ) 如:12.5*writ_dth(8)=rd_width(16)*6.25( 不是50M )
    1.同步时钟FIFO的读写(用同一个时钟)
    具体的工程可见FPGA的工程中:
    不空的标志出现从第一个数据写入,最后一个数据读出的时间;
    满标志出现在最后一个数据的写入,到第一个数据的读出之前的时间段;
















    2.异步步时钟FIFO的读写:
    异步FIFO实例,对FPGA片内DCFIFO进行读写测试,FIFO的读写时钟不同,且写入位宽为8bit,读出位宽为16bit
    1.在本设计中FIFO的读写使能通过计数器隔离开,先写后读。
    2.设计中仿真数据没有32位,故满标志一直未满;
    3.1
    图一整体的读写时序
    3.2写时序的开始ba数据开始
    写操作时序
    (fifo_wren通过计数器给出)12.5M时钟写入宽度为8bits

    3.2读时序
    FIFO的读时钟是写时钟的4倍,即50M,读出的位宽设置为16bits;
    4说明:
    从图一可以得知FIFO的读写时钟频率与位宽没有直接的关系,FIFO就是一个装置,读时钟越快,读的宽度越大,把FIFO的读空的时间越短而已;














    5.fifo的读写使能都为1,边读边写(个人理解);、

    fifo_controller uut_fifo_controller(
    .rst(!rst_n), // input rst
    .wr_clk(wr_clk), // input wr_clk//PLL输出12.5MHz时钟
    .rd_clk(rd_clk), // input rd_clk//PLL输出50MHz时钟
    .din(fifo_wrdb), // input [7 : 0] din
    .wr_en(1), // input wr_en
    .rd_en(1), // input rd_en
    .dout(fifo_rddb), // output [15 : 0] dout
    .full(fifo_full), // output full
    .empty(fifo_empty) // output empty
    );
    边读边写的整体时序
    说明:边读边写的特点
    1.写时序的时间=读时序的时间
    2.与读写时钟的频率无关,不是读时钟50M,数据就是50M,
    具体要计算读出数据的频率,
    写时钟频率*写数据宽度= 读数据宽度*读出数据的频率( 不是读时钟频率
    如:12.5*writ_dth(8)=rd_width(16)*6.25( 不是50M)








    展开全文
  • linux下文件不关闭的后果

    千次阅读 2019-01-10 20:11:29
    最后突然想到是不是文件的时候文件没有关闭导致的,通过查询程序发现确实是文件完后没有fclose,然后开始读取,导致没有读到内容。 我开始以为是文件没有关闭,导致重新打开后文件指针没有指向文件开头。随后...
    linux下的c编程,今天同事调试程序时遇到一个问题,写文件后读取文件没有内容。但是通过vim打开文件发现有内容存在。查了半天都不知道为什么。最后突然想到是不是写文件的时候文件没有关闭导致的,通过查询程序发现确实是文件写完后没有fclose,然后又开始读取,导致没有读到内容。
    我开始以为是文件没有关闭,导致重新打开后文件指针没有指向文件开头。随后我写了个测试程序,发现不是这个原因。文件写完后不关闭文件,内容会存在于缓冲区,所以重新打开文件读取不到内容。那文件内容是什么时候写进去的呢?答案就是程序结束的时候。所以fopen一定要对应fclose,不然出问题有时完全没排查方向。
    而且要注意,如果未关闭的那个fopen使用的是fopen(fp,"w"),覆盖式写文件。程序结束时写入方式也是覆盖式的,如果前面有写入文件内容,那么就会被覆盖。如果使用的fopen(fp,"a"),追加写入,那程序结束时,缓冲区里面的内容将被写入文件尾。
    
    展开全文
  • 不知道该什么代码,或者一种摔键盘的冲动正在你的胸中酝酿。咖啡一杯接着一杯。不敢再喝了,因为搞不好要有副作用了,心跳加速,身体不由自主地颤抖,出冷汗,但还是无法产出任何代码。所有重新发现编程趣味的努力...

    你已经对着电脑n个小时了。不知道该写什么代码,或者一种摔键盘的冲动正在你的胸中酝酿。

    咖啡一杯接着一杯。不敢再喝了,因为搞不好要有副作用了,心跳加速,身体不由自主地颤抖,出冷汗,但还是无法产出任何代码。

    所有重新发现编程趣味的努力都徒劳无功,因为你的最后一点能量都用来驱逐大脑中正在攻城略地的话:

    “我写不出代码了!”

    编程的本质是棘手

    即使是最优秀的程序员也会遭遇无法解决的软件工程问题。碰到这样的问题,并不一定意味着你缺乏技能或知识。

    编程不是一项容易的工作,我们可以通过采取非正统的方法来保持你想要的生产力水平,并确保提交高质量的代码。

    如果我在一个问题上花了几个小时,却仍然找不到解决方案的话,最后我会觉得这是浪费了时间。我不是胡言乱语——我只是觉得“没有人能够百死不悔”。

    没有愤怒和悲伤。因为我已经尝试过所有方向,只是都走不通而已。失去希望,于是开始想辞职不干。我觉得自己应该换工作,去做做调酒师或其他,至少研究和测试在啤酒中加点什么不会耗去我数个小时的时间。

    这些都是我在不敲代码时的想法。我开始怀疑生活,怀疑编码,怀疑人生。

    有成效不?好吧,我从来没听任何专家说过“辞职和萎靡不振”可以造就伟大的代码,所以可能并没有成效。

    这就提出了一个问题:我们该如何避免这种没有成效的状态?

    重新发现问题,重新发现你的生产力

    可能你已经行进在这条路上了。那么此时你只要继续就可以了,我可能没有什么新的东西可以告诉你的。

    如果你是新手,那么可能你还不知道如何重新发现生产力。

    下面我要分享的内容将有助于你在编程时以一种健康的方式保持生产力,不至于筋疲力竭。主要包括:

    • 测试不同的解决方案,直到感觉重复

    • 在线寻找开源解决方案

    • 向更有经验的程序员询问

    • 如果一切都失败,那就潇洒放手

    1 – 测试不同的解决方案,直到感觉重复

    在你研究或询问其他开发人员(=浪费他们的时间)之前,你应该尝试使用你现有的知识和思维来制定每一个可能的解决方案。

    显而易见的是,太多的程序员是从询问他人开始的,自己甚至都不曾静下心来分析问题本身。不要成为这样的讨厌鬼,尽可能不要浪费别人的时间。

    先投身于工作,然后再寻求帮助。

    2 – 在线查找开源代码

    当你投入于工作,却没有什么成果的时候,那么下一步你可以尝试开源代码。许多编程人员构建软件,是出于创造解决方案并在线发布以供大家使用的乐趣。有些人发布的代码曾被它们的程序员使用于商业项目。

    GitHub是寻找开源代码的两个主要地方之一。另一个是StackOverflow。

    这些网站的解决方案是采用可重用代码的形式,方便你在项目中实现。

    谨记,使用其他人开发的代码总是有风险的。它可能会以你意想不到的方式改变程序的行为。备份原始代码,这是常识。

    3 – 向更有经验的程序员询问

    你有没有碰到过这样的情况,向其他人求助却发现你甚至不知道自己在问什么?

    在询问任何人之前,你得准备好一些你无法通过网络信息搜索解答的问题。

    明确的问题,才能有明确的解决方案。如果是你自己都描述得云里雾里的问题——那么你只会得到一个云里雾里的回答(并且可能会惹恼他人)。

    如果你周围没有任何开发者可以询问,那么也可以在线查找。你可以在StackOverflow或MSDN社交论坛上询问,或查找特别针对于你所用技术的Slack频道。

    4 – 如果一切都失败,那就潇洒放手

    不要一心钻在死胡同里,实在不行,那就去干点别的事——睡觉,吃东西,等等。

    你觉得这是在逃避工作?那就错了。

    我要告诉你的是,当你最轻松的时候,往往正是解决办法灵机一现的时候,这不是我胡编乱造的,而是有科学的证明。此时你的大脑工作在“发散思维”的模式下,而不是在“集中注意力”的模式下——你可以在这篇文章中了解之间的差异。

    总的来说,这个理念就是要你忘记手头的问题,让你的意识心灵沉浸到其他的事情中。此时,你的潜意识则开始连接要点,朝着顿悟的方向前行。

    我们可以做些什么以便于帮助大脑在发散思维的模式下工作呢?放轻松就好了:

    • 散步(古代哲学家非常习惯于在走路时演讲,因为他们意识到走路有助于思考)

    • 清理办公室或住所(完成后给自己一个奖励)

    • 与朋友约会,和杯咖啡,聊聊八卦(如果你过于关注问题的话,那么建议和不能提供帮助的非编码人员交谈)

    总结

    我在编程和生活两者之间保持了一种健康的平衡。

    无论你是为了兴趣爱好、钱还是改变世界的宏图伟业而选择编程——编程都不应该是你唯一痴迷的东西,否则你会走火入魔。

    最后再说一句,如果你绞尽脑汁,却仍然无法解决问题,那么不妨先放一放。通过潜意识的运作,搞不好突破性的想法就会灵光乍现。

    via:Richard Wellum

    展开全文
  • 课程经过长时间的经验总结,采取合理容易和轻松上手的方式开展教学,再配合企业开发中实际遇到的案例作为练习,相当于直接参与企业开发,技能和经验同步获取。希望学习本课程的学员认真学习每一个课时的视频,跟着...
  • 如何好项目规划和方案设计文档

    万次阅读 多人点赞 2018-07-27 09:49:14
    再强调一下,做什么和怎么做就是手段,既然是手段,就要写得足够具体,具体到有明确的可落地实施的事情,有明确可以衡量的标准,或者针对当前存在的一个具体问题,不要在这个地方又写得像目标,没有明确的可执行的点...

     

    在工作中,很多时候,我们都需要就一个问题提出一个解决方案,这时候,我们很可能需要产出一个文档来供大家讨论,并指导下一步工作计划。

    问题可大可小,形式上是否叫它为一个项目并不重要,重要的是为了解决这个问题,项目规划和方案设计的流程是一致的。就大数据平台构建的语言环境来说,它可以是整个平台体系的搭建方案,也可以是具体某个组件如调度系统的建设,还可以是某个具体的功能点或问题改进比如用户任务脚本的依赖关系分析,系统稳定性的提升等等。

    一篇项目规划和设计文档的好坏,往往决定了一个项目整体的调性和可预期的产出结果。但是,这么重要的文档,真正能写好的同学却并不多,很多同学甚至可能都没有意识到它的重要性,而仅仅是把它当作领导要求的一个软件流程的规范来简单应付,怎么快怎么来。

    事实上,撰写项目规划和设计文档,最重要的不是文档的模版和格式,而是里面的具体内容,它往往需要结合实际客观环境因素来综合考虑,平衡取舍,是一个需要充分脑力活动的工作。尽管如此,在大多数情况下,还是有一些相对通用的指导原则可以帮助我们更好的完成这项工作。

    本文侧重于方案的需求分析到概要设计部分,因为这部分内容通常是最容易被大家忽视,也最需要方法论和“端正的思想”来指导的 ;)而详细设计相关内容,考验更多的是技术的深度,以及如何做到全面周到,我计划在后续文章中另行阐述。

    总体原则和目标:

    首先,需要有明确项目背景,目标,以及核心需求分析

    方案规划设计文档的好坏,几乎完全取决于这一部分内容。但多数同学在这一部分内容身上,往往花费的时间却是最少的,常见的方式,就是“直奔主题”,上来就写具体要做的事

    项目背景和目标

    项目背景不是让你写一堆无关痛痒的铺垫材料。实际上,项目背景的作用是:

    Why?为什么要在这个时候做这个项目?

    换句话说,就是这个项目从产品或业务的角度,最核心的推动力是什么?再换句话说,痛点是什么?

    有痛点自然就有目标,你希望项目最终以什么方式解决问题,能达成什么目标。

    背景和目标的阐述,必须要能够自然合理的推导出下一部分内容:项目的核心需求/功能是什么。

    如果项目背景,目标的描述不能起到这个作用,那这一节内容就没写好,因为项目方案文档就缺乏了根本的出发点,后续的内容都没有了好坏对错判断的基本依据。

    项目核心需求

    项目核心需求和项目目标有什么区别?实际上没有严格的区别,只是对需要解决的问题的概括抽象程度的不同,或者描述角度的不同。

    目标可以理解为希望达到的一个状态,是抽象的,和技术方案无关的偏结果角度的表述方式。

    而项目核心需求,可以理解为了解决背景描述的问题,为了实现那几个目标,进一步推导出来的,在当前系统环境或方案框架体系中:必须要提供的产品功能形态,或者是必须满足的关键特性,又或着是不能违背的约束条件。你也可以理解为用更技术的语言进行细化描述的项目目标。因为目标和背景的不同,可能同一件事推导出来的核心需求也不同。

    这么说比较抽象。举个例子,如果我想构建一个数据交换服务或ETL系统,那么上述各环节的内容可能是(简化的写):

    • 背景 : 当前数据ETL链路极端难用,效率低下,稳定性差,维护代价高,用户抱怨多等等。
    • 目标 : 用户全自助,简单易用;可维护性好;性能高;可靠性好。
    • 核心需求 :比如针对“用户全自助,简单易用”这点(其它目标可以类似分析推理),可能是:
      • 提供统一的,标准化的配置后台:用配置的形式表达ETL业务语意,屏蔽下层实现细节。
      • 提供完善的错误反馈信息/机制:让用户能自助解决使用中遇到的问题。
      • ETL业务流程标准化:将最佳实践沉淀下来,通过配置的方式让用户选择,减少重复工作,降低用户开发的难度,规避使用姿势错误可能造成的问题。

    讲完区别,继续回来讲,这部分内容的要求。很多同学在写这部分方案的时候,很容易把需求和实现手段混为一谈。所以:

    核心需求的重点是:本质上需要提供什么能力,而不是具体实现上要做什么

    换个角度说,核心需求的描述方式是:要做成什么样,是功能目标而不是实现手段。

    在完整的项目文档中,显然目标和手段都需要,但是

    目标必须先于手段,而非相反

    原因也很简单,脱离了目标谈手段是没有意义的,很容易导致方向做偏,使得最终的结果产出背离了项目最初真正的需求出发点。

    实践中,做成什么样和怎么做有时候很难绝对分开。一句话的描述方式可能既包含了目标需求也包含了实现手段。那么,怎么判断这部分内容写得是否满足要求呢。

    • 如果你描述的侧重点只是需求的一种实现方式,而这个需求可能还有更多的其它实现方式,或者即使真的只有一种实现方式,你所描述的内容的也只是因果关系中,间接的因而非直接的果,那么很可能你描述的就只是手段而非目标。
    • 如果看文档的同学看完只知道你要做什么,而不知道做这些是为了什么?是否做这些就足够了,还应该做点别的?是否有别的解决方案,又或者做完了到底有什么用。那么也很可能是因为你把需求和实现手段混为一谈了。
    • 核心需求必须是本质的,一定要实现的功能,它是一个原则,不是工作列表。不要事无巨细,凡是想做的都列在上面,那样反而淡化了项目最根本的诉求。但它也必须足够全面,要能确实解决项目目标中所提出的要求,应该用适当抽象的语言概括一个完整的事项。

    总结一下,核心需求的根本目标是,让参与项目的同学有方向感,能够知道这个项目最终想要通过提供哪些能力,满足哪些约束条件来解决问题,至于怎么实现,具体要做哪些事,那是下一步才需要回答的问题,简单来说:先选择做正确的事,再考虑怎么把事做正确。

    其次,需要对现状和问题进行充分的收集和分析

    这一部分内容,从实际操作的先后顺序来说,未必是第二步,很可能在我们总结前面的背景,目标,核心区需求的时候,就需要加以收集和分析。

    不过,从方案文档的角度来说,放在这里,是为了进一步细化问题,分析目标,核心需求与当前现状的差距在哪里,具体有哪些实际问题需要解决。为后续具体的实现方案,准备必要的输入信息,确定工作的优先级,重要性,项目迭代的步骤等等。

    需要强调的是,现状和问题分析,要围绕前面的核心需求的条目展开,两者是强关联的,不要相互脱节,各讲各的

    这块内容本身没有太特别的地方,就是现在实际情况如何,有什么问题,关键是如何把问题收集完整。

    所以这部分内容,难的是如何发现问题,很多做技术的同学往往容易陷入只关心技术难点,只能看到技术问题的局面中,而实际上,更多的问题往往是整体流程如何设计更加合理的问题,而不是技术方案绝对对错的问题。

    尽管行文上不难,但它的重要性,也往往容易被忽略,很多情况下被简单对待。实际的情况是,很多项目的方案计划往往是在对现状问题相关信息没有充分收集和分析的基础上就做出来的。导致项目方案后期不断调整,或者一期一期的总是在小步迭代,甚至不断推翻重来。而最终使用方真正关心的问题却一直没有得到重视和解决。

    最后,是输出解决方案

    定完需求目标,分析完问题和现状,接下来才是规划具体做什么,怎么做,什么时候做。

    这部分内容,强依托前面的核心需求和问题分析工作,没有做好前面的准备工作,千万不要着急开始动手“规划”方案!!!

    那么具体写的时候有哪些注意事项呢?

    做什么:

    • 做什么和前面项目目标的要求刚好皆然相反,需要输出明确的可执行的事项,而不是模糊的不可执行的要求。
    • 具体做的每一件事情,都要和前面的核心需求和现状问题对应上。如果你发现有些工作,和前面的目标没有任何关联性,那么考虑一下目标是否需要再评估调整,或者这件事情根本就是不重要的。
    • 要做的事项列表,是一个经过归纳思考以后的总结,而不只是一个个零散的事情的随机列表。需要有重点和优先级。如果有必要,以归类,分组等形式结构化的组织相关联的事项。
    • 完整的事项列表,应该是一个和最终目标对应的完整解决方案,而不仅仅只是完成目标工作中的某一个环节。
      • 比如面向用户的终端产品项目,需要包括整个产品的交互逻辑,业务流程的规范设计等等,而不仅仅是对底层系统实现和后台功能点的设计。
      • 这点很多同学也很容易忽略,总觉得功能和架构的实现才是有挑战,需要规划的内容,而产品的形态并没有花心思去琢磨,事后开发前端时才来考虑。实际上后者可能才是真正影响项目成功的关键,也很可能会影响到底层架构的设计和取舍。类比一下,好比一个用户产品都开发完了,才来考虑埋点,数据采集和数据分析的工作,这时候就很被动了。

    怎么做:

    • 前期方案文档,没有必要列出详细的技术方案细节,只需要一个整体的技术方向选型和初步的架构设想。但是,如果是涉及到核心需求能否有效满足的关键的技术点,有可能影响整体的架构或产品实现的,那就有必要就可能的方案的进行详细的评估并得出初步的结论。
    • 无关架构或进度安排的方案细节,没有必要写太多,可以后续再补充。
    • 方案中有不明确的地方,即使没有时间调研,也不要简单的略过不写,要在文档中明确的把问题写出来,给出下一步调研的方向计划等。归根到底,方案文档中,对每一个已知重要的问题,都需要一个明确的结论或者可以后续跟进的计划,以免事后遗漏。

    再强调一下,做什么和怎么做就是手段,既然是手段,就要写得足够具体,具体到有明确的可落地实施的事情,有明确可以衡量的标准,或者针对当前存在的一个具体问题,不要在这个地方又写得像目标,没有明确的可执行的点。

    继续举上文数据交换服务的例子,针对其中的一个核心需求:

    • ETL业务流程标准化:将最佳实践沉淀下来,通过配置的方式让用户选择,减少重复工作,降低用户开发的难度,规避使用姿势错误可能造成的问题。

    这个内容要写具体的要做的事项。以下方式来写可能就是不合格的,因为不够具体,还没有足够思考:

    • 总结最佳实践
    • 生成标准的流程
    • 总结常见的错误

    以下内容可能就更加明确,更加可落地一些:

    • 统一当前增量数据导入的存储,合并,归档方案
    • 将常见合并,去重逻辑标准化,通过配置自动生成任务脚本
    • 制定ODS快照表生命周期管理方案,规范存储路径和命名方式,定期清理过期数据。

    什么时候做,谁来做:

    • 这是做什么和怎么做的进一步延伸,需要强调的是整个项目如何实施的整体步骤计划,而不仅仅是简单的列一下每项工作的人员和排期,
    • 需要分析系统可能的迭代步骤(包括可能的短期应急和长期解决方案),上下游依赖梳理,需要协同进行的工作,最终项目上线时可能的业务迁移,数据迁移,系统集成等等外围工作的安排。

    如果不是工期严格要求,deadline为导向的项目,整体的依赖和步骤往往才是在项目规划阶段需要重点阐述的内容,也是有可能对整体产品的进度,风险产生影响的事项

    而具体工作工期的安排,说实话,多数情况下,反到没有那么重要。如果整体工作和步调没考虑周全,工期排得再科学,再精细,也毫无意义。

    总结一下,什么时候做什么事,最重要的目的,不在于工期的计算,甚至也不是人力资源的安排,而是为了理顺事情依赖关系,控制可能的意外风险,提升项目开发进度的可控性。

    小结

    方案规划设计文档,绝对不是为了满足流程需要凑数的文档,也不是头脑风暴式的简单记录。它的根本目标,抽象来说是:明确问题,圈定范围,确定重点,阐明路径。本质是为了统一认识,控制风险。它应该是一个问题经过思考以后的输出的答案,而不是问题的调查报告,笔记或备忘录。

    它很像一个议论文体裁,事实,分析,结论缺一不可。所以,无论你的方案文档写的多么翔实,如果只是相关内容细节的罗列,只议不论,缺乏抽象总结,还需要阅读文档的同学再去揣摩项目意图,或者看完以后对项目所要做的工作为什么要做,重不重要,要做成什么样都不明确的话。那它就只是一个不合格的半成品,不能对后续的项目开发工作发挥实质的指导和规划作用。

    结论列表

    上面花了大量篇幅展开讨论,目的是说服你接受我的看法。

    如果你只需要明确的结论,那么再总结一下:

    总体原则:

    • 项目方案规划文档的根本目标是统一认识:明确问题,确定重点,阐明路径,控制风险。
    • 文档的撰写方式,是目标和需求先行,围绕出发点,逐步递进展开。
    • 文档的基本要素:背景,目标,核心需求,现状问题分析,关键方案难点解析,总体实施路径,工作事项列表,进度计划安排。

    再细化到一些注意事项:

    • 核心需求,必须是核心的,一定要实现的内容!不能缺,也不能滥。
    • 问题现状,工作事项,必须呼应核心需求,要有明确的相关性,不要无的放矢。
    • 围绕最终目标,输出完整的端到端的解决方案,而不是局部环节的方案。需要从最终产品/功能形态的角度考虑要做的事,而不是仅仅考虑底层技术实现。
    • 事项目标列表,不要仅仅罗列要做什么事,更重要的是说明想要得到的结果,而不仅仅是描述实现手段。
    • 所有工作事项,需要明确思考过实施步骤,重要性和优先级,结合目标和需求,进行抽象归纳,而非简单随机罗列。
    • 要有明确的计划排期,但更重要的是,要完整的分析思考可能的上下游和周边工作依赖。排期只是结果,完整的梳理才是关键。

    两条辅助判断依据:

    • 如果开发同学看完文档,无法根据后续开发过程中遇到的实际情况,调整工作事项和优先级,完善和改进这个文档,那么大概率这个项目方案文档是没有写好的。因为这个文档可能只起到了事项罗列和工作安排的作用,却没有起到指导思考,授人予渔的作用
    • 如果看完文档,这个项目的最终产出你无法预见,你对项目的目标最终能否实现无从判断,那么这个项目方案文档大概率也是没有写好的。因为这个文档自身的归纳总结可能还没做到位,风险和问题可能还没有评估清楚,还需要走一步看一步。

    提示

    写项目方案文档,不是八股文,所以本文的内容并非绝对的教条,你当然可以根据项目的实际情况和复杂程度自行调整,但前提是你真的知道你为什么要这么做,而不仅仅是为了偷懒

    本文多数内容是各种观点,注意事项,结论和目标,具体如何做到这些,每个同学都可以自行思考。当然除了思想和目标端正,每个环节,其实也有一些具体Tips和checklist可供参考。下一次再说,下一次再说吧。。。

    软广

    本文写的各项原则,在我们之前的项目实践上实际都有体现,有兴趣结合实例比对参考的同学,我再厚脸皮再推一下这本书 《大数据平台基础架构指南》

    京东,淘宝,中亚有售,JD购买链接 : https://item.jd.com/29923944547.html ;)


    常按扫描下面的二维码,关注“大数据务虚杂谈”,务虚,我是认真的 ;)

    展开全文
  • 150讲轻松学习Python网络爬虫

    万人学习 2019-05-16 15:30:54
    1、爬虫入手容易,但是深入较难,如何出高效率的爬虫,如何出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据...
  • 动画:面试如何轻松手写链表?

    万次阅读 多人点赞 2019-09-26 08:10:31
    在前边 暑假参加的第一个公司的就让我手写一个双向链表...我们通常链表准备应聘的时候,通常背加上理解,但是过了几天让你。就会陌生了,虽然有点思路。还是模模糊糊,小鹿也有这个记性的“毛病”,“有毛病...
  • 8.5 一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。 #include//8.5 一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。 void input(char s[]) { gets(s); } ...
  • C语言这么厉害,它自身是用什么语言的?

    万次阅读 多人点赞 2019-09-30 00:54:15
    这是来自我的星球的一个提问:“C语言本身用什么语言的?”换个角度来问,其实是:C语言在运行之前,得编译才行,那C语言的编译器从哪里来? 用什么语言来的?如果是用C语...
  • 利用python的turtle库生日祝福

    万次阅读 多人点赞 2019-08-10 20:13:14
    还在简单的生日祝福吗?自从学了python,我们可以更高大上一点,利用python的海龟画图来“画”个生日祝福。 from turtle import * lf=left bd=backward sh=setheading def sheng(x,y): pu() goto(x,y) pd() ...
  • 关于磁盘随机读写与顺序读写

    万次阅读 2019-05-04 10:29:13
    今天看kafka官网的文档,关于性能方面的讨论时,提到了磁盘随机读写和顺序读写性能方面的事,借此机会整理一下。 现在的大数据工具一般都会设计为append only的形式,既文件只能追加,其它的删、改都只能建立在...
  • 深入浅出cache策略

    万次阅读 2018-08-20 16:25:47
    一次(write--once):一次是一种基于写回结合了通的策略,即命中和未命中的处理与写回法基本相同,只是第一次命中时要同时写入主存。这策略主要用于某些处理器的片内cache,例如Pentium处理器的片...
  • 我花了一夜用数据结构给女朋友个H5走迷宫游戏

    万次阅读 多人点赞 2019-09-10 23:27:18
    到深夜了,我按照以往在csdn和公众号着数据结构!这占用了我大量的时间!我的超越妹妹严重缺乏陪伴而 怨气满满! 而女朋友时常埋怨,认为数据结构这么抽象难懂的东西没啥作用,常会问道:天天这玩意,有啥...
  • C++读写锁介绍

    千次阅读 2019-04-13 14:26:08
    但是这时有一个线程b试图去读共享变量 i,发现被锁定了,那么b不得不等到a释放了锁后才能获得锁并读取 i 的值,但是两个读取操作即使是同时发生的,也并不会像操作那样造成竞争,因为它们不修改变量的值。...
  • 计算机专业如何毕业论文-八大技巧

    千次阅读 多人点赞 2020-12-26 15:57:44
    在我们写论文的时候,最头疼的事情就是没有方向,素材,即使找到了几篇技术内容相关的文献资料,因为怕查重也不敢直接的拿来用,最后写来写去就写了几百字,后面自己又写不下去,不知道从何下手,于是又在网上找资料...
  • 好架构师都是代码出来的

    千次阅读 2020-12-19 20:32:00
    阿里CTO程立在访谈中提到,好架构师都是代码出来的,PPT是架构师必备的一个技能。 关于这段访谈的文字版如下: “反正我认为架构师是要代码的。首先的话,好的架构师都是代码出来的。本质上来说,说直白...
  • 【C】C语言文件(包括:文件各种读写方式)

    万次阅读 多人点赞 2018-05-09 09:52:32
    但由于在输入时需要将ASCII码转换为二进制格式,在输出时要将二进制格式转换为字符,花费时间较长,所以在内存与磁盘交换数据频繁的时候,最好不要用这两个函数。   文件定位与文件的随机读/ 在C语言...
  • 写者:其他进程(只写,或既读又写);   规则     允许多个读者同时读取数据;     只有一个写者可以写数据;     写者在写时读者不能读,反之亦然。 /** 实现1: 运用读写锁解决”读者写者问题” 解题思路: ...
  • 以下java代码是我自己的,结果是一样的,就是看起来总是觉得不是很规范。我是用递归的。 package digui; import java.util.Scanner; public class Envolope { public static void main(String[] args) { ...
  • Netty服务如何出数据

    万次阅读 2021-07-30 16:59:48
    上一节,我们一起学习了 Netty 接收新数据过程的源码剖析,我们发现了一个有趣的现象, Netty 的 ByteBuf 竟然也是对 Java 原生 ByteBuffer 的包装。 经过前面的学习,我想你一定迫不及待地想知道 Netty 中出...
  • 为什么我在CSDN坚持了3年多的博客?

    万次阅读 多人点赞 2018-11-04 23:47:48
    后面注册了一个新的号,也就是目前我在更新的号,坚持了3年多。我为什么在CSDN坚持了这么长时间?这篇文章结合我自己的经历,希望能给大家带来一些有用的东西。 1. 我为什么选择CSDN? 现在大家觉得CSDN的主页...
  • 四、操作系统——读者者问题(详解)

    千次阅读 多人点赞 2020-05-18 16:31:12
    进程与进程之间必须互斥的写入数据(因为如果两个进程同时对共享数据中的区域A中的数据进行操作的话,会导致数据错误覆盖的问题) 进程与读进程之间必须互斥的访问共享数据(因为进程与读进程如果同时...
  • 程序员个人技术博客的价值与意义

    万次阅读 多人点赞 2019-11-08 21:31:07
    文章目录什么是博客主要用途博客分类个人博客使用第三方平台个人博客与独立博客的优缺点使用第三方平台个人博客的优点独立博客的优点没博客的原因浪费时间工作太忙,没时间懒于思考,疏于总结怕自己的技术被别人...
  • 开始博客了

    千次阅读 2019-07-11 21:41:46
    文章目录开始博客了1. 感觉没必要2. 突然想了3. 那就开始吧,点啥呢4. 还是慢慢来吧5....开始博客了 1. 感觉没必要 ...6月底突然想了,感觉搞技术10多年了,从开发菜鸟到技术总监,再到现在回到...
  • 读者者问题-者优先参考答案

    万次阅读 2016-06-28 10:07:37
    者优先】在读者、者问题中,如果总有读者进程进行读操作,会造成者进程永远都不能进行操作(读者优先),即所谓的者饿死现象。给出读者、者问题的另一个解决方案:即保证当有一个者进程想时,不...
  • 就象第3点所说的那样,有针对的回答-些重点问题,告知一些重要信息,如自己的姓名,高校名称、所学专业、所获得或即将获得的学位学历、毕业时间(毕业时间不要光年份,最好具体到月,如08年6月)等等。建议正文部分...
  • 事情是这样的,前几天我在刷B站的时候看到一个大佬用训练了一个自动高考作文的AI 链接: https://www.bilibili.com/video/BV1pr4y1w7uM?from=search&seid=3451527309155759796 那我就想既然别人能训练自动...
  • innodb的缓存

    万次阅读 2020-08-16 18:42:46
    innodb的缓存,其设计思想同样是为了减少磁盘的io来提升性能。 对于数据库的来说,有如下两种情况 1. 修改的内容所在页在缓冲池内 会有如下两步操作 直接修改缓冲池中的页,一次内存操作 写入redo log,一次...
  • 一致性

    千次阅读 多人点赞 2019-01-11 12:49:16
    或者是先删除缓存,再更新数据库,其实大家存在很大的争议。目前没有一篇全面的博客,对这几种方案进行解析。于是博主战战兢兢,顶着被大家喷的风险,了这篇文章。   文章结构 本文由以下三个部分组成 ...
  • 程序员简历时的技术词汇拼写规范备忘录!

    万次阅读 多人点赞 2021-10-11 08:35:15
    程序员简历时需要注意的技术词汇规范拼写大全

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,770,907
精华内容 1,108,362
关键字:

又怎么写