首页
学习
活动
专区
圈层
工具
发布

clojure基础入门(一)

最近在看storm的源码,就学习分享下clojure语法。...阅读目录: 概述 变量 运算符 流程控制 总结 概述 clojure是一种运行在JVM上的Lisp方言,属于函数式编程范式,它和java可以方便的互相调用,这样开发的程序可以很好的结合java和clojure...欢迎进入clojure的世界。  ? 变量 Clojure中的变量可以def关键字来声明:  ? clojure数据类型是弱类型,对应java中的object,然后通过变量名直接调用。...这里有三层嵌套,首先(= age 18)来判断返回是否等于18,作为if判断该返回哪个字符串的依据,再根据if确定的字符串作为函数的返回值。...clojure中(lisp习惯)有个规定:对于判断功能的函数,函数名后面都有一个“?”号。所以只要看到后面带问号的函数名,就知道这一定是一个判断语句。 user=> (fn?

1.7K30

Storm创始人Nathan Marz:反馈即一切

所谓“学习”,并非单纯了解这门语言的语法,而是掌握它的习惯用法,并用学到的语言写出切实的应用。对我而言,学习Clojure,让我在使用所有其他语言编程时也都大获提高。...这一点对我的职业生涯帮助巨大,让我有机缘广交能人,又能通过在会议上演讲周游世界。 《程序员》:哪个人对你的影响最大? Nathan:从哲学角度讲,对我影响最大的人非Carl Sagan莫属。...此外,我还有丰富的Hadoop经验,晓畅它的设计缺陷,我将这些经验都用在了Storm的设计上,令它更坚韧。...基于Lisp的动态特性,使我总能将Clojure塑造成符合最佳抽象的状态。假如没有Clojure,Storm倒不会有什么不同,但实现过程将痛苦得多。...Nathan:我之所以使用Emacs,是因为它是最理想的Clojure编程环境(它们都有Lisp的渊源)。我惊讶于一款工具在提供如此强大功能的同时,还能如此灵活地随心定制。

97140
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java扩展Nginx之一:你好,nginx-clojure

    nginx的功能 然而,打开官方的开发文档,画风如下: nginx的自定义模块使用C语言开发的,然而,欣宸只是个精通CRUD的Java程序员啊 幸好有了nginx-clojure模块,它支持使用Java...对Nginx进行功能扩展: 至此,聪明的您应该猜到《Java扩展Nginx》系列的核心内容了:学习nginx-clojure模块,从入门到精通,解锁Clojure的强大能力,通过丰富的实战与大家一起掌握用...nginx-clojure模块中被运行 nginx-clojure的最新版本是v0.5.2,官网地址是:https://nginx-clojure.github.io 对nginx-clojure的介绍就到这里吧...,接下来实战为主 实战功能介绍 尽管nginx-clojure支持很多功能,但本篇以了解为主,还是经典的Hello world,更多精彩内容留给《Java扩展Nginx》系列后面的文章 今天的实战,效果如下图...下载地址:https://sourceforge.net/projects/nginx-clojure/files/ ,如下图红框,我这里选择的是最新的0.5.2版本: 解压nginx包 下载完毕后

    71320

    Java扩展Nginx之二:编译nginx-clojure源码

    ,这是个编译好的nginx可执行文件,开箱即用,当时我们还用命令查看过nginx版本是1.18.0,如下图: 直接使用nginx-clojure官方编译好的安装包,虽然好处是简单省事儿,但同样带来一些致命问题...,导致咱们不敢将其用于生产环境,其实相信聪明的您已经想到了: 如果nginx1.18.0被曝出有安全问题,需要升级到更高版本,咋办?...寄希望于nginx-clojure官方推出更高nginx版本的包吗?...本篇概览 本篇的主题十分明确,就是编译源码和安装,所以整体上由以下几部分组成: 准备环境 编译安装操作 验证功能 本次实战,所用nginx源码的版本是1.21.6,nginx-clojure源码的版本是...至此,完整的nginx和nginx-clojure已经安装完成,接下来验证是否可用 验证 既然是验证nginx-clojure是否可用,简简单单就好,就用前文的Hello World功能吧 前文的jar

    44020

    (cljsrun-at (JSVM. :browser) 命名空间就这么简单)

    ) ;; 使用时需要指定成员所属的命名空间的别名 (data/diff 1 2) 4.重命名注入的成员 (ns my-project.core (:require [clojure.data :refer...重置clojure内置的symbol  我们知道默认情况下会自动注入cljs.core的成员到当前命名空间中,因此我们可以直接使用+、-等函数。....*  cljs的好处就是可以直接使用与宿主环境无关的clj代码,所以我们可以直接引入clojure.string、clojure.data等命名空间,但有时不免会记错或新版本提供了更贴地气(针对特定宿主优化过...)的版本,那是不是就要改成cljs的版本呢?...而且当我们修改源码后,需要通过(require 命名空间 :reload)来重置并重新加载这个命名空间,不带:reload的话新修改的功能将不会生效哦!

    90050

    clojure基础入门(一)

    最近在看storm的源码,就学习分享下clojure语法。...阅读目录: 概述 变量 运算符 流程控制 总结 概述 clojure是一种运行在JVM上的Lisp方言,属于函数式编程范式,它和java可以方便的互相调用,这样开发的程序可以很好的结合java和clojure...欢迎进入clojure的世界。  ? 变量 Clojure中的变量可以def关键字来声明:  ? clojure数据类型是弱类型,对应java中的object,然后通过变量名直接调用。...这里有三层嵌套,首先(= age 18)来判断返回是否等于18,作为if判断该返回哪个字符串的依据,再根据if确定的字符串作为函数的返回值。...clojure中(lisp习惯)有个规定:对于判断功能的函数,函数名后面都有一个“?”号。所以只要看到后面带问号的函数名,就知道这一定是一个判断语句。 user=> (fn?

    1.4K40

    关于Python的那点吐槽

    但是当时在维护的时候我习惯用vim,之前的代码不知道用什么写的,我习惯用4个空格,之前的同事可能习惯用tab键,于是灾难就发生了,从vim里面看,完全看不出那些是空格那些是tab,后来我直接使用替换将所有...强制缩进还有一点就是函数代码一旦很长,嵌套稍微深一点,从维护上看完全看不出来哪块是哪个语句块的东西,而且它不支持{},一般根据{}可以很方便的判断。...,事先好像不知道它适应与哪个版本,这也是不同Python版本不兼容带来的,还有像python-opencv python3-opencv,既然有的能根据Python版本来正确安装,为什么有的不行,非得指定的那么详细...最后再说一句 吐槽了这么多,我并不是要完全否定Python,不得不说Python是一门非常简单实用的语言,而且社区强大,拥有各种功能的第三方库,说句夸张的,除了生孩子,Python能做任何事情。...当然这些问题只是我对Python的理解不够,我也只限于实用它,而没有做到熟练或者精通的地步,这些问题可能在一些更Pythoner的程序员手中根本不是问题。

    97330

    前端 vs 后端:哪一个适合你?

    职业满足感 如果你选择成为一名开发人员是因为你想获得职业满足感,并做一些你喜欢的事情,那么我的建议是,当你开始时,前后端都要做。同时涉猎前端和后端,这样你就能感受到你更喜欢的是什么。这么做会很辛苦吗?...2019 年 StackOverflow 调查了最受欢迎的语言。 前后端通吃的另一个好处是,你可以了解它们之间是如何协同工作的。无论你决定在未来关注哪个方面,这都非常有用。...此外,尝试找出市场上最需要哪种类型的开发人员。 我不知道前端和后端哪个工资更高,但有一些调查试图回答这个问题。...全球 Clojure $90k Go $80k Python $63k Swift $59k JavaScript $56k HTML/CSS $55k 美国 Scala $143k Clojure $139k...后端似乎给了我更多的机会。 最后,我不是一个非常注重视觉或艺术的人。有些人可以看看网页,然后想办法把它放在什么地方。我从来都不擅长这个,所以后端让我更自然、更舒服。

    1.6K20

    Clojure 开发那些事

    Clojure —— 新世纪的 Lisp 方言,相信大多数同学多多少少都听过,毕竟有个杀手级应用 Storm,但是真正去写 Clojure 的同学估计不多,国内也罕见哪个公司招 Clojure 程序员。...这一点非常重要,估计也是为什么 Clojure 较其他 Lisp 方言更流行的原因。...这一点也让 Clojure 在生产环境中使用变得可能,比如 http-clj 就是对 Apache HttpComponents 的包装,更符合 Clojure 使用习惯而已。...第三方类库的选择 由于 Clojure 语言定位就是个寄宿语言,所以无论是 Web 框架,还是数据库连接池,Clojure 里都有与 Java 版相对应包装类库,大家不必担心要使用某个功能,而没有相应库的问题...等各种参数,也可能是我个人的理解能力比较差,不过这里介绍一个非常实用并且适用于所有语言的方法,那就是看这个项目的test,test 里面核心的功能肯定会涉及到,然后照猫画虎就可以了。

    1.8K20

    React从入门到放弃,一个关于网页速度的故事

    我在我的新工作中尝试了 React,并在 Clojure 主题的峰会(Clojure Cup 2013)期间发现 CLJS 和 React 简直是天作之合。React 为什么这么好呢?...千万别让我碰那些莫名其妙的 JS,jQuery 根本就不存在代码封装。哪个处理器在哪里绑定,用来做什么?很难说这是一个好的基础库!...这使得 web app 成为新用户的主要入口。这意味着它的主要目标是为新用户快速渲染页面,因为想要更多功能的老用户现在都在移动 app 上了。而 TTI(响应时间)在这里变得更加重要。...:) 有趣的是,在对 TwinSpark 进行了一个月的尝试之后,Intercooler 的作者宣布它在做一个没有 jQuery 的现代版本:htmx。它有非常好的扩展点,而且可能会增加批处理......React 对前者优化,而对于后者来说是非常讨厌的。 TwinSpark 方案在大部分情况下对用户更友好:更少的 JavaScript,更少的抖动,更常见的类似 HTML 的行为。

    1.1K20

    对于大型 Clojure 项目,如何进行有效的代码组织和模块划分以提高可维护性?

    按照功能或模块划分命名空间,可以避免命名冲突和代码混乱。 使用文件和文件夹:将每个命名空间的代码放在单独的文件中,然后将文件组织成文件夹层次结构。...模块化设计:将大型项目划分为小的独立模块,每个模块负责特定的功能或子系统。模块间使用清晰的接口和协议进行通信,以降低耦合度。这样可以使每个模块更容易测试、调试和替换,同时也更易于理解和维护。...使用合适的数据结构:选择合适的数据结构来组织和管理数据。Clojure 提供了丰富的数据结构,如向量、哈希映射和集合等。根据数据的特性,选择合适的数据结构可以提高代码的性能和可维护性。...使用工具和库:利用 Clojure 的丰富生态系统,使用合适的工具和库来简化开发和维护过程。...总之,通过合理的代码组织和模块划分,结合函数式编程原则和合适的工具,可以提高大型 Clojure 项目的可维护性和可读性。

    12910

    Java扩展Nginx之四:远程调试

    ,一起来体验个实用的功能,此能力定会让爱学习的您大呼过瘾,它就是广大java程序员在日常开发和定位问题过程中常用的神技:远程调试; 看变量、看堆栈,不论阅读代码还是定位问题,打断点都是我们最值得信赖的手段...,当您的代码运行在nginx-clojure模块中的时候,如果能像tomcat那样远程打断点,单步调试,会大幅度提高工作效率 远程断点的效果如下图所示,通过IDEA的Remote JVM Debug功能远程连接到...,先在代码上打断点,然后执行远程连接,顺利的话会看到红框3中的连接成功提示: 至此,远程调试功能已经准备好,可以使用了 验证 在postman上再发一次请求,IDEA上立即进入断点状态,如下图: 如果想看堆栈中的代码...,可以操作如下图: 此刻,NginxClojureRT.java已经被下载下来,可以更仔细的阅读和研究nginx-clojure了: 至此,nginx-clojure的远程调试功能演示完毕,各位java...学习和使用nginx-clojure的信心是否更强了呢?

    82310

    Clojure与LispClojure与Lisp

    Lisp 是一种编程语言,以表达性和功能强大著称,但人们通常认为它不太适合应用于一般情况。Clojure 是一种运行在 Java™ 平台上的 Lisp 方言,它的出现彻底改变了这一现状。...域指定语言(Domain Specific Languages ) 不仅 简单,而且更一般化--lisp程序往往是按照 "自下而上" 的开发方式写成的....Lisp是一种以表达性和功能强大著称的编程语言,但人们通常认为它不太适合应用于一般情况,而Clojure的出现彻底改变了这一现状。...如今,在任何具备 Java 虚拟机的地方,都可以使用 Lisp 的强大功能。 Clojure 是一种函数式编程语言 它囊括了函数式编程的所有精华: 避免了不稳定状态、递归、更高阶的函数等。...不可变减少了心智的负担,降低了多线程编程的难度,纯函数也更利于测试和调试。

    2.1K30

    centos7时区设置如何修改

    centos7的时区设置如何去修改?因为CentOS是免费的、开源的、可以重新分发的开源操作系统并且是Linux发行版之一,在云服务器行业内非常受用户欢迎。   ...centos已经发行了很多个版本,云服务器一般安装centos哪个版本合适?   ...1、CentOS 7属于新发行的版本了,安全性相对之前有所提升,并且包括一些漏洞如openssh等都有进行全面的修复;该版本镜像源的支持比较优秀。   ...3、如果只是想搭建个人博客,又或者简单的网站,那使用CentOS 7或者CentOS 6都可以,但是建议使用新版本,可以体验并学习新功能。   ...,这里肯定得使用CentOS 7版本   另外,不论是想在云服务器内装哪个版本,还是看用户自己想用哪个版本又或者习惯用哪个版本就安装哪个版本。

    66210

    如何在Ubuntu 14.04上部署Clojure Web应用程序

    没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。...您的服务器上具有sudo访问权限的非root用户帐户,您可以按照这些说明进行设置 第一步 - 创建和打包示例Clojure应用程序 第一步是使用git抓取示例Clojure项目进行部署。...cd /var/www/do-clojure-web/app/ 在生产环境中,应用程序的版本号将随每次更新而更改。您不希望每次都发生更新系统配置。...要防止这种情况,请为当前运行的应用程序版本创建符号链接。您将在接下来的步骤中引用符号链接。...第三步 - 配置Supervisor以运行Clojure应用程序 这有几个选项作为服务来管理应用程序。你在这里使用的选项叫做Supervisor ; 它比简单的脚本更容易管理,更通用。

    1.6K00

    在使用Git时你应该这样提交代码

    前言 目前大部分公司都在使用 Git 作为版本控制,每个程序员每天都要进行代码的提交。...因此我们需要规范我们的代码提交来避免这种情况。同时良好的提交规范也有助于我们生成清晰的 ChangeLog,更利于同事之间的协作。 ❝如果你想成为知名开源项目的贡献者更要规范自己的代码提交。 2....] ❝更严格的项目可能提交要求使用英文描述,特别是国际化的开源项目。...scope(可选) 用来表明本次提交影响的范围,方便快速定位。你可以写明影响的是哪个模块(通常是模块名称)或者是哪个层(数据层、服务层、还是视图层)。...body(可选) 就是比较详细描述本次提交涉及的条目,罗列代码功能,这里胖哥习惯用markdown的列表语法,也就是用中划线换行隔开条目。当然body不是必选的,如果subject能够描述清楚的话。

    1.6K20
    领券