毕业设计跟的导师是研究计算机理论的,花了三个月学习符号逻辑,试图优化一个回答集程序的求解器(Answer set solver).比起眼花缭乱的前端框架和热闹的社区讨论,符号逻辑就是一个挺小众的数学领域.一讲到逻辑程序就会涉及一大堆的概念 ,伴随一大堆数理逻辑的符号,令有兴趣的新手望而却步.此篇博文可以说是导师的博士论文的一篇读后感,一篇回答集编程的发展史,一篇回答集程序入门简介.详见<提高ASP效率的若干途径及在服务机器人上的应用>. 1.人工智能学派 一些传统人工智能的研究者认为,(人工)…
本文内容 异步编程类型 异步编程模型(APM) 参考资料 首先澄清,异步编程模式(Asynchronous Programming Patterns)与异步编程模型(Asynchronous Programming Model,APM),它们的中文翻译只差一个字,英文名称差在最后一个单词,一个是 Pattern,一个是 Model.模型 Model 比 模式 Pattern 更具体.前者是一个统称,比后者含义要广,前者包含三个模型,而 APM 只是它其中一个而已. 个人理解,异步编程模型(APM…
面向协议编程(Protocol Oriented Programming,简称POP) 是Swift的一种编程范式,Apple于2015年WWDC踢出 在Swift的标准库中,能见到大量POP的影子 同时,Swift也是一门面向对象的编程语言(Objec Oriented Programming,简称OOP) 在Swift开发中,OOP和POP是相辅相成的,任何一方并不能取代另一方 P- OP能弥补OOP一些设计上的不足 回顾OOP OOP的三大特性:封装.继承.多态 继承的经典使用场合: 当多…
受 F# 中的管道运算符和 C# 中的 LINQ 语法,管道式编程为 C# 提供了更加灵活性的功能性编程.通过使用 扩展函数 可以将多个功能连接起来构建成一个管道. 前言 在 C# 编程中,管道式编程(Pipeline Style programming)其实存在已久,最明显的就是我们经常使用的 LINQ.在进入 DotNetCore 世界后, 这种编程方式就更加明显,比如各种中间件的使用.通过使用这种编程方式,大大提高了代码的可维护性,优化了的业务的组合方式. 管道式编程具有如下优点: 创建一…
JavaScript 为网站添加状态,这些状态可能是校验或者更复杂的行为像拖拽终止功能或者是异步的请求webserver (aka Ajax). 在过去的那些年里, JavaScript libraries变得越来越流行. 如果你面对着很多的工作计划,一个很明确的道理就是在网站变得越来越复杂的情况下每次修改‘轮子“肯定让你不爽.当然我们把类库放到一边,聚焦于 JavaScript的语法,对你最有价值的东西是在你编写 JavaScript你要明确你使用的是那种”编程模式“. 下面主要介绍几个jav…
原文:Teach Yourself Programming in Ten Years作者:郭晓刚翻译:郭晓刚(foosleeper@163.net)最后修订日期:2004-3-192005-01-12增加了新的译本链接. 本中文译本得到了Peter Norvig的许可. 为什么每个人都急不可耐? 走进任何一家书店,你会看见<Teach Yourself Java in 7 Days>(7天Java无师自通)的旁边是一长排看不到尽头的类似书籍,它们要教会你Visual Basic.Windows…
最近在做在线架构的实现,在线架构和离线架构近线架构最大的区别是服务质量(SLA,Service Level Agreement,SLA 99.99代表10K的请求最多一次失败或者超时)和延时.而离线架构在意的是吞吐,SLA的不会那么严苛,比如99.9.离线架构一般要有流控,以控制用户发送请求的速度.以免多于服务端处理能力的请求造成大量的数据在buffer或者队列里堆积,造成大量的超时.在线架构不可能有流控了,你不能限制用户的请求.因此在线架构对于弹性扩容有很高的要求,在大量请求到来时自动扩展后台…
本文内容 实例 引入 原始方法 装饰者模式 JDK 动态代理和 cglib 代理 直接使用 AOP 框架--AspectWerkz 最近跳槽了,新公司使用了 AOP 相关的技术,于是查点资料,复习一下.之前,多少知道点,但没怎么在实际项目中使用过~ 下载 demo 实例 引入 package com.cap.aop;   public interface ICalculator { public double add(double num1, double num2) throws Except…
一千个读者,一千个哈姆雷特.对于面对对象编程,书上都会告诉我们它有三个基本特性,封装,继承,多态,但谈起对这三点的见解,又是仁者见仁智者见智,感觉还是得多去编程中体验把 . 面向对象编程(OOP, Object Oriented Programming)是一种编写程序的方法,旨在提升开发大型程序的效率,使程序易于维护 . 面向对象编程是一种基于以下思路的程序设计方法:将关注点置于对象(Object)本身,对象的构成要素包含对象的行为及操作,以此为基础进行编程.这种方法使程序易于复用,软件的生产效…
1. 进程和线程 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者.传统的 Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程.现在,多线程技术已经被许多操作系统所支 持,包括Windows/NT,当然,也包括Linux. 为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什么的系统应该选用多线程?我们首先必须回答这些问题. 使用多线程的理由之一是和…