精华内容
下载资源
问答
  • 协议:CC BY-NC-SA 4.0 简单、纯中文的解释,辅以数学、代码和真实世界的示例 应该阅读它 想尽快赶上机器学习潮流的技术人员 想要入门机器学习,并愿意了解技术概念的非技术人员 好奇机器如何思考的任何人 本...

    一、为什么机器学习重要

    原文:Machine Learning for Humans

    作者:Vishal Maini

    译者:飞龙

    协议:CC BY-NC-SA 4.0

    简单、纯中文的解释,辅以数学、代码和真实世界的示例

    谁应该阅读它

    • 想尽快赶上机器学习潮流的技术人员
    • 想要入门机器学习,并愿意了解技术概念的非技术人员
    • 好奇机器如何思考的任何人

    本指南旨在让任何人访问。将讨论概率,统计学,程序设计,线性代数和微积分的基本概念,但从本系列中学到东西,不需要事先了解它们。

    为什么机器学习重要

    人工智能将比本世纪的任何其他创新,更有力地塑造我们的未来。 任何一个不了解它的人都会很快觉得自己正在被淘汰,在一个充满技术的世界里醒来,感觉越来越像魔术。

    这个加速比率已经很惊人了。在过去四十年的几个 AI 的冬季和希望破灭的时期,数据存储和计算机处理能力的快速发展,极大地改变了近几年的竞技。

    2015年,谷歌训练了一个对话智能体(AI),不仅可以有力地作为技术支持与人类进行互动,还会讨论道德问题,表达意见和回答基于事实的一般问题。

    (Vinyals & Le, 2017)

    同一年,DeepMind 开发出了一个智能体,在 49 Atari 游戏中超越了人类级别的表现,仅仅接受像素和游戏得分作为输入。不久之后,在 2016 年,DeepMind 通过发布一种称为 A3C 新的最先进的游戏方法,淘汰了自己的成就。

    而与此同时,阿尔法则击败了围棋中最棒的人类选手之一。在机器首次征服国际象棋后,这是在人类统治的游戏中,二十年以来的一项非凡的成就。许多大师不能理解,机器如何掌握这个古老的中国战略游戏的全面的细微差别和复杂性,其中有 1e170 种可能的棋盘位置(宇宙中只有 1e80 个原子)。

    围棋职业选手李世乭在战败后复查了它与 AlphaGo 的对弈。图片来自 Atlantic

    2017 年 3 月,OpenAI 创建了一个智能体,它发明自己的语言来彼此合作,更有效地实现他们的目标。不久之后,Facebook 成功训练了智能体来谈判甚至说谎。

    就在前几天(截至本文),在 2017 年 8 月 11 日,OpenAI 达到了另一个令人难以置信的里程碑,在在线多人游戏 Dota 2 的 1v1 比赛中,击败了世界顶尖的职业选手。

    YouTube 上查看 TI2017 的完整比赛,由 Dendi(人类)对战 OpenAI(机器)。

    我们的日常技术大部分来自人工智能。 在下次去台湾旅行期间,将相机对准菜单,餐厅的菜单将通过 Google 翻译应用,魔术般地以英文出现。

    谷歌翻译使用卷积神经网络,实时完成饮料菜单上的英文翻译。

    今天,AI 用于为癌症患者设计循证治疗计划,立即分析医学测试结果,立即升级为适当的专家,并为药物发现开展科学研究。

    伦敦的 Benevolent AI(来自“关于我们”页面的截图,2017 年 8 月)的大胆公告。

    执法部门使用视觉识别和自然语言处理,来处理来自身体相机的镜头。火星漫游者“好奇号”甚至利用人工智能以高精确度自动选择值得检验的土壤和岩石样本。

    在日常生活中,在传统上被人类占领的角色中,机器越来越常见。如果下一次你给酒店前台打电话,让它们送上来一些牙膏,然后出现了一个小型家政服务机器人,而不是一个人,真的不要惊讶。

    在本系列中,我们将探讨这些技术背后的核心机器学习理念。 最后,你应该能够在概念层面描述它们的工作原理,并为自己装配工具来开始构建类似的应用。

    语义树:人工智能和机器学习

    一点建议:将知识视为一种语义树是重要的 - 确保你了解基本原则,即树干和大的树枝,然后再进入叶子/细节,否则它们没有可以挂着的地方。 - Elon Musk,Reddit AMA

    机器学习是人工智能的众多子领域之一,有关一种方式,让计算机从经验中学习,来提高它们的思考、规划、决策和行动能力。

    人工智能是智能体的研究,它可以感知周围世界,制定计划,并做出决策以实现其目标。其基础包括数学,逻辑,哲学,概率,语言学,神经科学和决策理论。许多领域都属于在 AI 下面,如计算机视觉,机器人,机器学习和自然语言处理。

    机器学习是人工智能的一个子领域。它的目标是让电脑自己学习。机器的学习算法使其能够识别观测数据中的规律,构建解释世界的模型,并且在没有明确的预编程规则和模型的情况下预测事物。

    AI效应:什么实际上被认定为“人工智能”?

    认定为“AI”的技术的准确标准有点模糊,解释随着时间的推移而变化。AI 标签倾向于描述一些机器,它们执行传统上人类领域中的任务的。有趣的是,一旦电脑弄清楚如何做这些任务之一,人类就倾向于说这不是真正的智慧。 这被称为 AI 效应

    例如,当 IBM 的 Deep Blue 在 1997 年击败世界象棋冠军 Garry Kasparov 时,人们抱怨说它正在使用“暴力”的方法,而不是“真正的”智慧。 正如 Pamela McCorduck 写道,“这是人工智能领域历史的一部分,每当有人想出如何使计算机做某事时 - 玩好象棋,解决简单但相对非正式的问题 - 就有批评者附和, “那不是思考”(McCorduck,2004)。

    也许人们可接受的“人工智能”,有一些特定的固有的难以描述的东西:

    “AI是还没有完成的任何东西。” - 道格拉斯·侯世达

    计算器也算作 AI 吗? 也许通过一些解释是这样。自动驾驶又如何? 现在是的。在将来,也许不是。你的又新又酷的,可以自动生成流程图的聊天机器人创业公司呢? 当然…为什么不事呢?

    强 AI 会永远改变我们的世界;为了了解怎么回事,机器学习是个不错的起始之地

    上述技术是狭义人工智能(ANI)的例子,可以有效地执行狭义的任务。

    同时,我们继续推动人类级别的广义人工智能(AGI)的进步,也称为强人工智能。 AGI的定义是一种人工智能,可以成功地执行人类可以做出的任何智力任务,包括在不确定性下的学习,规划和决策,以自然语言交流,开玩笑,操纵人类,交易股票或重新编程它自己。

    而最后一个是了不起事情。 一旦我们创建了一个可以改进自身的人工智能,它将解锁一个循环的递归自我完善,这可能会导致一些未知的时间段内的智能爆炸,从几十年到一天。

    超智能机器定义为,能够超越任何人的所有智力活动的机器。 由于机器的设计是这些智力活动之一,超智能机器可以设计更好的机器;那么毫无疑问,这将是一场“智能爆炸”,人的智慧将远远落后。因此,只要机器足够温顺,告诉我们如何控制它,第一台超智能机器是人们需要做的最后一个发明。 - I.J. Good, 1965

    你可能听说过这个点被称为奇点。该术语取自出现在黑洞中心的重力奇点,一个无限致密的一维点,在那里我们理解的物理学定律开始打破。

    我们看不见黑洞的事象地平的另一边发生的事情,因为没有光线可以逃脱。同样的,在我们解开了AI的递归改进能力之后,预测会发生什么是不可能的,就像故意设计人类的老鼠可能无法预测人类对自己的世界会做些什么。它会不断帮助他们得到更多的奶酪,像它们原本的打算那样? (图片来自 WIRED

    人类未来研究所最近的一份报告,调查了一组 AI 研究人员,关于 AGI 的时间线,发现“研究人员认为,在45年内的所有任务中,AI 有50%的机会超过人类(Grace 等,2017)。我们亲自与一些理智和合理的 AI 实践者交谈,他们预测的时间线更长(上限是“永不”),而其它人的时间线极其短 - 短短几年。

    图片来自 Kurzweil 的《奇点临近》,2005 年出版。现在,在 2017 年,只有一部分这些海报可以合理地留在墙上。

    超过人类级别的超级人工智能(ASI)的出现,可能是我们物种发生的最好或最坏的事情之一。它以一种对人类友好的方式,承载着规定 AI 想要什么的巨大挑战。

    虽然不可能说未来是什么,但有一件事是肯定的:2017 是开始了解机器如何思考的好时机。为了超越空想哲学的抽象,并智能地制定我们关于 AI 的路线图和政策,我们必须了解机器如何看待世界的细节 - 他们“想要”什么,他们的潜在偏差和失败模式,他们的气质怪癖 - 就像我们学习心理学和神经科学,来了解人类如何学习,决策,行动和感觉。

    AI 的复杂,高风险的问题,需要我们在未来几年的细心关注。 我们有责任以知情和有意的视角来思考这些问题。

    我们如何对抗 AI 的进一步巩固系统偏见的倾向,它们在现有数据集中显而易见?我们应该如何应对世界上最强大的技术人员的,关于人工智能的潜在风险和好处的根本分歧?什么是教授AI系统的行为的,最有希望的技术方法?在一个没有工作的世界中,人类的目的感会怎样?

    机器学习是我们的广义人工智能之旅的核心,同时也将改变每个行业,对日常生活产生巨大的影响。这就是我们认为机器学习值得理解的原因,至少在概念层面 - 我们将这个系列设计为最好的起始之地。

    如何阅读这个系列

    你不一定需要阅读系列的每一页来学到东西。 这里有三个如何完成的建议,具体取决于你的兴趣和时间多少:

    • T 型方式:从头到尾阅读。在你读的时候用你自己的话概括每个部分(参见:费曼技巧);这有助于积极阅读和更强的记忆存留。深入了解与你的兴趣或工作最相关的领域。我们将在每个部分的末尾包含深入探索的资源。

    • 专注方式:直接跳到你最感兴趣的章节,将你的所有脑力集中在那里。

    • 80/20 方式:略读所有东西以便,对一些有趣的高阶概念做一些纾解,然后到此为止。

    关于作者

    好的,我门喝完这杯酒的时候,我门应该把梯度下降搞定。@ The Boozy Cow in Edinburgh

    Vishal 最近在领导创业公司的增长,这是一个利用机器学习来为信用定价,借贷过程自动化和获取用户的贷款平台。他花时间思考创业公司,应用认知科学,道德哲学和人工智能的伦理学。

    Samer 是 UCSD 的计算机科学和工程硕士,以及 Conigo Labs 的联合创始人。在毕业之前,他创立了 TableScribe,这是中小型企业的商业智能工具,并花了两年时间向麦肯锡的 100 强企业提供咨询服务。Samer 曾经在耶鲁大学学习计算机科学与伦理学,政治学和经济学。

    这个系列大部分是在英国十天的旅行中写的,火车,飞机,咖啡馆,酒吧和其他任何地方,我们都可以找到一个干燥的地方来坐。我们的目标是巩固我们对人工智能,机器学习的理解,以及它们之间的融合方式 - 并希望在此过程中创造值得分享的东西。

    现在,无需多说,通过“2.1:监督学习”,让我们立即深入机器学习吧。

    展开全文
  • 书接上文,再回看刚接触Cookie和Session时的博文,真是尴尬至极啊。 1. 四种会话跟踪技术 ① 隐藏表单域 ②URL重写 ③Cookie ④Session 2. 什么是会话跟踪技术 由于客户端和服务器的联系是通过HTTP协议通信的,而...

    会话跟踪技术之Cookie和Session

    书接上文,再回看刚接触Cookie和Session时写的博文,真是尴尬至极啊。

    1. 四种会话跟踪技术
    ① 隐藏表单域
    ②URL重写
    ③Cookie
    ④Session

    2. 什么是会话跟踪技术
    由于客户端和服务器的联系是通过HTTP协议通信的,而HTTP又是“无状态”的协议。所谓“无状态”通俗来说就是在一次请求和响应会话结束之后,客户端和服务器就断开连接了,谁也不认识谁了,再见已是陌生人。当客户在多个页面切换时,每一次都会产生新的会话,但服务器压根就无法分辨是否是同一用户。这种通信方式的缺点和不便可想而知,为了解决这个问题,便来了会话跟踪技术。

    注:本次只对Cookie和Session的区别和联系进行讨论

    3.Cookie和Session
    Cookie是Web服务器发送给客户端的一小段信息,客户端请求时可以读取该信息发送到服务器端,进而进行用户的识别。对于客户端的每次请求,服务器都会将Cookie发送到客户端,在客户端可以进行保存,以便下次使用。
    Session在服务器端会创建一个session对象,产生一个sessionID来标识这个session对象,然后将这个sessionID放入到Cookie中发送到客户端,下一次访问时,sessionID会发送到服务器,在服务器端进行识别不同的用户 。
    4.Session依赖Cookie
    当Cookie被禁用时,Session也会失效(可在浏览器中禁用cookie后观察JSESSIONID的变化)。
    这是为什么呢?
    当用户第一次向服务器发送请求时,服务器会针对这个请求,创建一个session对象,产生一个sessionID来标识这个session对象,然后在响应客户端时在响应头添加’Set-Cookie :JSESSIONID=XXXXXX····’,浏览器收到后,会保存JSESSIONID,之后客户端的每一次请求的请求头都会加上’cookie:JSESSIONID=XXXXXX····‘以识别不同的用户。而当Cookie被禁用之后,客户端无法收到服务器响应过来的’Set-Cookie‘里的信息,Session自然也就失效了,那么如何解决这个问题呢?通过URL重写来解决。
    5.Cookie和Session的区别
    ① cookie数据存放在客户的浏览器上,session数据放在服务器上。
    ② cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。
    ③ session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。
    ④ 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

    参考资源:会话跟踪技术

    展开全文
  • MacBook Pro 只有四个 USB Type-C 接口是否错了?...其实, USB Type-C 接口协议在三年前几个科技巨头公司就参与制定了协议,并答应要在自家的产品上推广它,但都怕一下子在自家产品上升级 USB T...

    MacBook Pro 只有四个 USB Type-C 接口是否错了? 

    一项新技术的诞生总会对已存在的事物造成冲击或影响,如果大家都害怕冲击与影响,那这个世界永远像现在不变就行了,大家都好好的,待在自己的舒适区,社会丝毫没有创新与进步而言。

     

    其实, USB Type-C 接口协议在三年前几个科技巨头公司就参与制定了协议,并答应要在自家的产品上推广它,但谁都怕一下子在自家产品上升级 USB Type-C 接口被消费者骂出翔进而影响产品销量,这时候,苹果公司跳出来了干了这件事,在去年的 MacBook 升级中就已经把 USB Type-A 取消了,好像大家也并没用过多抵触,可能是使用的人少的原因,但是就在刚刚发布的 MacBook Pro 中取消了全部接口,仅仅只有四个 USB Type-C 了,然后大家都莫名高潮了,说「什么苹果智障!不考虑消费者!出门要带一堆转接头!!苹果就是为了赚配件的钱!!新款手机连接不是新款电脑!!我要去买老款的 MacBook Pro !!!库克是个同性恋!!!苹果吃枣药丸!!!」。
     
    好吧,你们赢了。
     
    如果你作为消费者来仔细想想,当然你本来就是消费者,可以正反随便插、想怎么插怎么插,晚上也不用开灯就能插,速度而且快的惊人,这个口用处多的数不清,想怎么用怎么用,你现在会怎么想?反正现在好多 Android 手机已经是 USB Type-C 了。

    FluentScheduler 是什么? 

    Automated job scheduler with fluent interface.

    这是作者在 Github 上的介绍,就是一个定时任务管理器。在 .Net 下类似的有微软的 Timer 、 Quartz.NET 、 FluentScheduler 以及Windows服务等,关于 Quartz.NET 的使用几乎和 Java 下的 Quartz 没什么区别,我之前写过一篇 Spring 使用 Quartz 任务调度定时器 是关于 Quartz 的。 

     定时任务或者说作业调度,可能也只有在你指定一个时间做统计、发邮件或者一些你想完成的业务逻辑时有用,这也是它出现的目的。

    如何使用 FluentScheduler ?

     我是推荐你去作者的 Github 去看看源码或例子,地址: https://github.com/fluentscheduler/FluentScheduler

    当然,这里我用作者的例子做了演示和翻译,保证谁都能看的懂。

    一、安装FluentScheduler程序包
    打开程序包管理控制台,输入Install-Package FluentScheduler即可。步骤:状态栏选择 工具 - 库程序包管理器 - 程序包管理控制台,如下图:

    输入Install-Package FluentScheduler

    二、写代码
    我这里只简单贴一下作者的示例代码,更推荐你去 Github 看,但我随手翻译了一下,或许更容易阅读一些。

    public class Demo : Registry
    {
        public Demo()
        {
            // Schedule an IJob to run at an interval
            // 立即执行每两秒一次的计划任务。(指定一个时间间隔运行,根据自己需求,可以是秒、分、时、天、月、年等。)
            Schedule<MyJob>().ToRunNow().AndEvery(2).Seconds();
    
            // Schedule an IJob to run once, delayed by a specific time interval
            // 延迟一个指定时间间隔执行一次计划任务。(当然,这个间隔依然可以是秒、分、时、天、月、年等。)
            Schedule<MyJob>().ToRunOnceIn(5).Seconds();
    
            // Schedule a simple job to run at a specific time
            // 在一个指定时间执行计划任务(最常用。这里是在每天的下午 1:10 分执行)
            Schedule(() => Trace.WriteLine("It‘s 1:10 PM now.")).ToRunEvery(1).Days().At(13, 10);
    
            Schedule(() => {
    
                // 做你想做的事儿。
                Trace.WriteLine("It‘s 1:10 PM now.");
    
            }).ToRunEvery(1).Days().At(13, 10);
    
            // Schedule a more complex action to run immediately and on an monthly interval
            // 立即执行一个在每月的星期一 3:00 的计划任务(可以看出来这个一个比较复杂点的时间,它意思是它也能做到!)
            Schedule<MyComplexJob>().ToRunNow().AndEvery(1).Months().OnTheFirst(DayOfWeek.Monday).At(3, 0);
    
            // Schedule multiple jobs to be run in a single schedule
            // 在同一个计划中执行两个(多个)任务
            Schedule<MyJob>().AndThen<MyOtherJob>().ToRunNow().AndEvery(5).Minutes();
    
        }
    
    
    }
    
    public class MyJob : IJob
    {
    
        void IJob.Execute()
        {
            Trace.WriteLine("现在时间是:"+DateTime.Now);
        }
    }
    
    public class MyOtherJob : IJob
    {
    
        void IJob.Execute()
        {
            Trace.WriteLine("这是另一个 Job ,现在时间是:" + DateTime.Now);
        }
    }
    
    public class MyComplexJob : IJob
    {
    
        void IJob.Execute()
        {
            Trace.WriteLine("这是比较复杂的 Job ,现在时间是:" + DateTime.Now);
        }
    }
    

      

    三、初始化
    Global.asax中加入一句

    JobManager.Initialize(new Demo());

    上面是简单的使用,其实已经足够了,当然还有更多变态的需求,作者也在文档里写了,比如这个:你想执行一个计划任务,每周一 14:00 运行。但现在是星期一上午 10:00 ,那你的程序应该在今天运行还是在下周星期一?这里用到了 ToRunEvery
    还有并发任务的处理,有兴趣可以去看看。

     总结

    FluentScheduler 是 .Net 下,可以让你轻松实现定时任务的工具,不需要再去写Windows服务了,更重要的是时间设置起来灵活很多,定时任务难点不就是在这么

     

    链接:http://www.cnblogs.com/mafly/p/FluentScheduler.html 

    展开全文
  • 一点儿也不,我这本书的目的就是向你讲解并示范平常就可以用于解决各种各样问题的逆向工程技术。  不过我总是急于求成。也许你以前没有接触过软件逆向工程的概念,我在这里先简要介绍一下。  逆向工程和底层...
  • 清明临近,脚本继续

    2012-03-27 22:48:00
    但这不是今天要谈的重点,今天的重点是我掌握了使用csh编程里从控制台取得参数来进行编程处理的基本技术,事出有因,在linux下用gcc是非常方便的,知道,那么我就萌生了自己个编译gcc的脚本的想法,一通百通...

    截止今天,总体上把14443的typeB的协议完整仔细的看了一遍(我指的是发送格式,以及数据传输的帧格式和命令)。

    下一步可以开始着手来分析着写代码了。

    但这不是今天要谈的重点,今天的重点是我掌握了使用csh编程里从控制台取得参数来进行编程处理的基本技术,事出有因,在linux下用gcc是非常方便的,谁用谁知道,那么我就萌生了自己写个编译gcc的脚本的想法,一通百通,就再次写了一个直接编译verilog文件的脚本。下面上脚本

     1 #! /bin/csh -f
    2 #////
    3 #// SCRIPT NAME : GCC PROCESSED SCRIPT //
    4 #// DATE : Tue Mar 27 21:30:48 CST 2012 //
    5 #// DESCRIPTION : This script purpose is to compile and link c file conveniently //
    6 #////
    7 set top_entity = $1
    8 set file_list = "${argv[*]}"
    9 set var_num = ${#argv}
    10
    11 echo ""
    12 if(${var_num} == 0) then
    13 echo "Error, no file has been given to processed."
    14 exit 2
    15 endif
    16
    17 while ($#argv)
    18 if(!(-e $argv[1])) then
    19 echo "Error, '$argv[1]' file not exist."
    20 exit 2
    21 endif
    22
    23 if("$argv[1]" !~ *.c) then
    24 echo "Error, '$argv[1]' is not a c file."
    25 exit 2
    26 endif
    27
    28 shift
    29 end
    30
    31 if(${var_num} == 1) then
    32 echo "The file '$top_entity' is the top entity, $var_num file has been processed."
    33 else
    34 echo "The first file '$top_entity' is the top entity, $var_num files have been processed."
    35 endif
    36 echo "Result of gcc processed"
    37 echo ""
    38
    39 rm ${top_entity}.out
    40 gcc -Wall ${file_list} -o ${top_entity}.out
    41
    42 echo ""
    43 echo "Job done"


    带有错误报警的脚本,轻松又愉快。下面上编译verilog文件的。

     1 #! /bin/csh -f
    2 #////
    3 #// SCRIPT NAME : NC-VERILOG SIMULATION SCRIPT //
    4 #// DATE : Tue Mar 27 21:35:10 CST 2012 //
    5 #// DESCRIPTION : This script is for handy simulation for the verilog files //
    6 #////
    7 set file_list = "${argv[*]}"
    8 set file_name = ""
    9 set var_num = ${#argv}
    10
    11 echo ""
    12
    13 if(${var_num} == 0) then
    14 echo "Error, no file has been given to processed."
    15 exit 2
    16 endif
    17
    18 while ($#argv)
    19 if(!(-e $argv[1])) then
    20 echo "Error, '$argv[1]' file not exist."
    21 exit 2
    22 endif
    23
    24 if("$argv[1]" !~ *.v) then
    25 echo "Error, '$argv[1]' is not a verilog file."
    26 exit 2
    27 endif
    28
    29 shift
    30 end
    31
    32 echo "File processing..."
    33 echo ""
    34
    35
    36 rm ncverilog.key ncverilog.log INCA_libs -fr
    37 ncverilog +gui +access+rwc +notimingcheck +nospecify ${file_list}


    基本的从命令行取得参数的就不多说一看就懂,其实我花了很多时间在foreach和while上面,就是进行错误报告那里,基本的例程格式给出。

    foreach,好像用法都是和if一起,来判断什么什么,值得注意的是什么时候变量要用“”给包起来。看好了,这里判断的=~是用来判断正则表达式的时候用的,所以此时一定是字符串所以一定要记得加上“”

    1 foreach arg ($argv)
    2 #does it begin with - ?
    3 if ("$arg" =~ -*) then
    4 echo "Argument is an option"
    5 else
    6 echo "Argument is a filename"
    7 endif
    8 end


    而while呢好像不能像c一样写个变量减减什么的(很有可能是我太2了,不会搞),一般都是像这样用

    1 while ($#argv)
    2 if (-f $argv[1]) then
    3 wc -l $argv[1]
    4 else
    5 echo "$argv[1] is not a regular file"
    6 endif
    7 shift
    8 end

    这里的shift和while连用是一种很好的判断输入进来的命令行参量某种逻辑的方式,常常这样用。值得注意的就是if的语法风格,一定记得写上then,不然shell编译器提示的信息你一辈子也不知道自己错在了哪里了。

    if的语法形式有以下这三种形式

    if (expr) then     
        cmds           
    endif              

    if (expr) then
        cmds1       
    else          
        cmds2       
    endif         

    if (expr) then
        cmds1
    else if (expr) then
        cmds2
    else
        cmds3
    endif

    结论就是一定要写then啊!!对错误的处理exit 2就是很简单的报错退出。

    本来萌生了写一个数字信号发生器的想法,就是在一块ROM里面写好一些数,用查找表的形式往外读数就可以了,比如用一块1KX32的ROM就可以,外面包一个controller,做成频率可调的,就OK了。嗯,好像不难的样子,就这么弄

    转载于:https://www.cnblogs.com/poiu-elab/archive/2012/03/27/2420345.html

    展开全文
  • 作者介绍首先说下曹伟-鸣嵩是:曹伟,阿里巴巴-阿里云资深技术专家(P9?),擅长C++、网络编程、中间件、底层协议等领域。 原文链接:...
  • Q: HTTP 是一种没有状态的协议,也就是它并不知道是是访问应用.这里我们把用户看成是客户端,客户端使用用户名还有密码通过了身份验证,不过下回这个客户端再发送请求时候,还得再验证一下.那我们应该怎样解决这样的...
  • CAN介绍

    2019-06-19 22:35:02
    所以为了复习一下知识,特意复习这篇文章(先说明,这篇文章不是我的,我顶多在其中加了自己理解的部分,从师兄给的笔记里面找到的,所以不知道作者是了)。。。。。。。 CAN CAN 是Controller Area Network 的...
  • 流媒体的实现过程思考

    千次阅读 2005-10-14 08:26:00
    很久以前的东西,今天找到,居然忘了去搞.为了对自己的想法保留一份记录,放在这里...--------------------以下是...从文件格式,DS,压缩加密,协议命令,以及各种服务器技术似乎都要涉及.(简单为主,不挣钱的活干,除非
  • 包括:网络设备的安全性、操作系统的安全性、协议软件的安全性、系统安全监视乏力、对病毒和黑客侵袭的抵抗不足、应用服务的安全性等。 (3)物理自然环境恶化 物理自然环境恶化是指网上会展信息系统物理基础的支持...
  • 2️⃣ 作者是? 戳这里 如果文章内容有误欢迎提交PR或者Issue,一旦采用可成为项目Contributor。 拒绝内卷:需要转载可以联系我授权,恶意抄袭我会不惜一切代价维护权益,希望大家一起维护良好的创作环境。 ...
  • 开发WinForm程序的大爷们终于可以灵活的涉足于Web界而不需要搞令人沮丧到要无限次重构直到自己http协议的Asp.net框架。他们来了。 欢迎Flex阵营的朋友投身的到Silverlight3.0 的圈子中,思路一致(不好听的说法...
  • 计算机网络(TCP/IP协议栈) 计网 IP 知识全家桶,45 张图一套带走 ping命令用得这么6,原理知道不?图解一波! 探究:一个数据包在网络中到底是怎么游走的? 硬不硬你说了算!全图解被问千百遍的TCP三次握手和四次...
  • 「冰河技术」文章分类汇总,P8架构师都在看的技术文章!! 这次,我将 【冰河技术】 微信公众号的文章整理出来了,很多细节的点,可能想得不是很完善,大家可以去【冰河技术】公众号获取或者在公众号内回复【冰河】...
  • PCI.EXPRESS系统体系结构标准教材.pdf

    热门讨论 2013-02-17 16:21:16
    本书详细描述的pci express系统的体系结构,以及列举的大量示例,对于理解pci express内容并构思其用途有很大帮助,是软硬件设计人员和技术人员不可多得的参考书籍。 目录: 第一部分 总 览 第1章 体系...
  • 为什么要这本书? 4 电脑病毒真的存在吗? 5 本书的内容 6 关于作者 7 第一章 病毒——数字空间的恐怖分子 8 第一节 数字空间,一种新的生存形式 8 第二节 数字空间的犯罪与安全 9 第三节 一切并不遥远 10 ...
  • 我是? 我就是我啦,请叫我杰哥,毕业于清华大学,在互联网和金融行业奋斗多年,别的优点没有,就是善于学习和总结。 希望能够把之前用到的,未来学到的知识和技巧总结起来,分享给大家。 读书破万卷,下笔如有神...
  • 一个真实的病毒世界

    2011-12-07 12:23:28
    为什么要这本书? 4 电脑病毒真的存在吗? 5 本书的内容 6 关于作者 7 第一章 病毒——数字空间的恐怖分子 8 第一节 数字空间,一种新的生存形式 8 第二节 数字空间的犯罪与安全 9 第三节 一切并不遥远 10 第二章 ...
  • reversing :逆向工程解密

    热门讨论 2012-09-04 11:40:49
    一点儿也不,我这本书的目的就是向你讲解并示范平常就可以用于解决各种各样问题的逆向工程技术。  不过我总是急于求成。也许你以前没有接触过软件逆向工程的概念,我在这里先简要介绍一下。  逆向工程和底层...
  • Reversing:逆向工程揭密

    热门讨论 2010-06-21 17:27:22
    一点儿也不,我这本书的目的就是向你讲解并示范平常就可以用于解决各种各样问题的逆向工程技术。 不过我总是急于求成。也许你以前没有接触过软件逆向工程的概念,我在这里先简要介绍一下。 逆向工程和底层软件 在...
  • java-servlet-api.doc

    2009-10-13 19:34:17
    需要读这份文档 这份文档描述了JavaServletAPI的最新版本2.1版。所以,这本书对于Servlet的开发者及servlet引擎的开发者同样适用。 JavaServletAPI的组成 JavaServletAPI由两个软件包组成:一个是对应HTTP的...
  • 一点儿也不,我这本书的目的就是向你讲解并示范平常就可以用于解决各种各样问题的逆向工程技术。 不过我总是急于求成。也许你以前没有接触过软件逆向工程的概念,我在这里先简要介绍一下。 逆向工程和底层软件 在...
  • asp.net知识库

    2015-06-18 08:45:45
    我是?[C#] 表达式计算引擎 正式发布表达式计算引擎WfcExp V0.9(附源码) 运算表达式类的原理及其实现 #实现的18位身份证格式验证算法 身份证15To18 的算法(C#) 一组 正则表达式 静态构造函数 忽略大小Replace...

空空如也

空空如也

1 2 3 4
收藏数 70
精华内容 28
关键字:

技术协议谁写