递归还是迭代?递归可以让很多算法有良好的可读性,但在某些情况下效率却低下.newLISP有很多的迭代构造器和高阶函数,比如flat或者系统自带的XML函数,其内部使用递归.大部分情况下,没有必要自己定义递归算法。.有时,非递归解决方案可以更快、更节省系统资源。.;classicrecursion;slowandresourcehungry(define(fibn)(if(
查找某个时间点范围内改动的文件
weixin_33841722
常常因为磁盘空间不足的原因,须要删除旧文件,因此希望有一个函数,可以查找到某个时间点之前的文件,并删除之。用newLISP来实现的话,须要相似这种功能:(define(location-file-based-on-modified-timedir-pathfrom-secondsto-secondsfile-op)(unless(directory?dir-path)(throw-error(st
查找某个时间点范围内修改的文件
csfreebird
#文件处理
经常由于磁盘空间不足的原因,需要删除旧文件,因此希望有一个函数,能够查找到某个时间点之前的文件,并删除之。用newLISP来实现的话,需要类似这样的功能:(define(location-file-based-on-modified-timedir-pathfrom-secondsto-secondsfile-op)(unless(directory?dir-path)(throw-error(s
windows7 安装Emacs 24
csfreebird
#EmacsonWindows
最近因为需要开发windows上的产品,又回到windows上来,因为要写newlisp脚本,还是emacs用起来比较方便。下面介绍一下安装最新版本的emacs的步骤,1.从http://core.ring.gr.jp/pub/GNU/emacs/windows/下载文件emacs-24.3-bin-i386.zip2.解压后放在自己的用户目录下,比如我的位置:C:\Users\shu6889.C
crontab演出newLISP脚本设置环境变量
weixin_33755554
今天遇到一个问题。执行在终端newLISP文字,一切正常,搬去crontab在将无法正常工作。即使crontab-e命令是在同一个用户执行。还是有问题。因为newLISP脚本使用hive和hadoop。它预计发行环境变量。所以第一次使用newLISPshell执行(env)命令,将当前环境变量记录到文件evn.lsp中。然后在newLISP脚本中载入之。以下是env.lsp文件部分内容:(set'
crontab中运行newLISP脚本的环境变量设置
csfreebird
#系统管理
今天遇到一个问题,在终端里运行newLISP脚本,一切正常,移动到crontab中就不行。即便crontab-e命令运行在同一个用户下,还是有问题。由于newLISP脚本要用到hive和hadoop,估计是环境变量的问题。所以先用newLISPshell运行(env)命令,将当前环境变量记录到文件evn.lsp中。然后在newLISP脚本中加载之。下面是env.lsp文件部分内容:(set'loc
Linux 网络抓包
iteye_9368
调试网络程序时,通常需要抓包分析。Linux下的tcpdump就很好。Ubuntu下默认已经安装。下面先举个实际的例子.比如我有一个C++程序监听本地端口8889,另一个newlisp程序通过TCP和其通信。首先可以检查一下有几个网络接口。root@dean-GA-MA790XT-UD4P:~#tcpdump-D1.eth02.any(Pseudo-devicethatcapturesonalli
3.模块化编码 (newLISP 代码模式 v.10.6.2)
newlisp
程序的构建当你编写的程序越来越大或者多人在同一代码库协作开发时,将代码划分成不同的模块是很有必要的.newLISP中使用context来创建模块,也就是命名空间.命名空间将各个模块之间的词法隔离开.这样各模块可以拥有相同名字的变量而不会发生冲突.通常,每个文件都有一个context来组织模块.可能一个模块文件包含数据库访问代码.;database.lsp;(context'db)(define(u
4. 局部变量 (newLISP 代码模式 v.10.6.2)
newlisp
循环函数中的局部变量所有的循环函数都使用局部变量,比如doargs,dolist,dostring,dotimes,dotree和for.在循环执行期间,每次循环都给变量赋予不同的值.但在离开循环函数后,变量将恢复其原来的值。let,define,和lambda是另一种声明局部变量的方法:用let,letn,local和letex声明局部变量let是一种常见的在代码块中申明局部变量的方法.(def
newlisp quick sort增强
sheismylife
NewLisp
增加一个函数extract作为参数,可以通过extract提取list某个元素的某个属性然后进行比较,而不是假定list中的每个元素都是简单的symbol,并且可以比较。这样就可以允许用在实际工作中。;;@argextractisafunctiontoextractvaluefromobjecttocomparewithkey
(define(quick-sort-exstartendextrac
newlisp实现quick sort
sheismylife
NewLisp
实现的时候要注意,如果将一个list传给函数,在函数内部修改后,不会改变函数外的list。因此采用了变通的方法,将list作为全局变量,函数递归时不传递list为参数。实现代码如下:sort.lsp文件(setqvalues'())
(define(quick-sortstartend)
(if(>=startend)
(begin
;;(println"return")
)
(begin
(l
newLISP运行scp命令并打印进度
sheismylife
scpNewLisp
如果在终端直接运行scp命令,会看到类似的输出scptrain.htmlroot@your-host:/path/of/your/folder
train.html100%149KB149.4KB/s00:00如果用newlisp的exec运行这个命令,得到的结果却是()如何获得上面的输出?train.html100%149KB149.4KB/s00:00首先要获得scp的输出,参考这个:http
newlisp debugger
debugger
写了很多newlsip程序,一直都是用println 来打印,查找问题。
但是随着程序越来越多,debug就变得越来越重要。今天在实现自己的TEA算法时,就需要调试newlips程序。
启动debugger很简单,只需要在newlisp会话中调用:
(trace true)
然后加载自己的lsp文件,调用函数,就可以进行调试了。
不过为了方便,还可以用(d
用newlisp管理windows下的nginx
windows
我写了一个nginx.lsp文件,可以通过传递参数来进行Nginx进程管理。
使用方法
1. 从nginx站点下载windows版本的程序,加压后,将newlisp.lsp文件复制到该目录。
2. 确保windows的system32目录下有newlisp.exe程序。
3. 运行程序, 目前支持5个参数
newlisp nginx.lsp start|stop|moni
Ubuntu 14.04 编译newLISP 10.6.0
ubuntu
1. 确保安装了gcc4.8.2
2. 安装须要的库:
apt-get install libreadline6 libreadline6-dev
3. 下载并解压newLISP源码,这个不多说了,去newlisp.org网站下载。 放到/usr/src文件夹下
wget http://www.newlisp.org/downloads/newlisp-10.6.0.tgz
newlisp 注释生成文档
lisp
最近写了一个newlisp_armory库,用来实现一些newlisp自身不支持的操作。比如跨windows和ubuntu的目录拷贝功能等。
自己用的时候,发现没有API reference文档参考,很不方便。于是学习了如何用注释生成文档。
在Ubuntu环境下,首先要下载newlispdoc程序的源码:http://newlisp.org/syntax.cgi?code/newlispdoc
Visual Studio 2012 编译C++显示cl命令
2012
为了用newlisp来实现VC编译,以便用我的Emacs开发VC程序,而不需要再打开VS 2012, 需要自己实现命令行的编译。我不需要nmake,因为我想直接了解VC编译器,以便今后更好的驾驭它。
首先要获得VC编译的cl命令行,方法是右键点击工程,点击Properties菜单,在打开的对话框中,选择C/C++ General菜单,然后将Supress Startup Banner改为No。
查找某个时间点范围内改动的文件
文件
常常因为磁盘空间不足的原因,须要删除旧文件,因此希望有一个函数,可以查找到某个时间点之前的文件,并删除之。
用newLISP来实现的话,须要相似这种功能:
(define (location-file-based-on-modified-time dir-path from-seconds to-seconds file-op)
(unless (directory? dir-pa
改进的newlisp编译脚本,只需要配置
lisp
前面有一篇Say bye to CMake and Makefile我开始用自己编写的newlisp脚本替代CMake,今天对前面的进行改进。
改进部分是:
1. newlisp armory模块的引入和初始化 部分可以重用
2. 将头文件所在目录,cpp或者cc文件所在目录以及依赖库名称等 作为配置单独抽出来,可以根据不同的项目进行配置
现在看改过后的代码:
rebui
newlisp的lambda表达式
lambda
lambda表达式指的是一个匿名函数,可以将之作为参数传递给map等容器,然后被容器内部调用之。
newlisp的官方文档在这里:http://www.newlisp.org/downloads/manual_frame.html
参考lambda一节,说其和fn相同,fn是其更方便的简写。下面的两个例子分别使用了lambda和fn,效果完全一样。它们都对map中的list做了加法操作。
&
newlsip 检查磁盘分区使用情况
new
主要还是用df -k这个命令,然后将输出结果全部逐行解析,最后调用REST API,发送给服务器保存。
参考代码:
#!/usr/bin/newlisp
(set 'cur-path "/opt/detector")
(load (append cur-path "/config.lsp"))
(define (add-log
Jenkins build失败条件
Jenkins
在Jenkins 项目写了很多剧本。有时候,我发现脚本失败,但Jenkins运行成功。
Jenkins无论是通过退出代码0比量build成功。
因此,newLISP在。您可以使用(exit)对于成功。(exit 1)它表示失败。
这样就须要添加一些脚本的推断,比方:
(unless (HDFS:test-file export-folder)
(begin
(printl
newLISP — 交互式教程
银月光海
这份文档于2006年5月被RickHanson(
[email protected])做了一些修正和更新后被转换成html文档。2008年12月被L.M更新到v.10.0版本.版权所有JohnW.Small2004。你可以到newLISP官方网站 www.newLISP.org 下载和安装这门语言。关于这个教程的任何意见和问题请发邮件到
[email protected]。中文版翻译时,newL
newLISP® 代码模式
银月光海
newLISP® 代码模式Version2012February14thnewLISP v.10.4.0Copyright©2012LutzMueller, www.nuevatec.com.Allrightsreserved.Chinesetranslationscopyright©2012 shortstory黄登(winger) Permissionisgrantedtocopy,distr
使用NewLisp设计Key-Value数据库系统
句龙胤
数据库lispkey-valueNewLisp
Lisp是一个很好的语言,最强大的就是其S-表达式,可以说是Lisp能活到今天的唯一一个原因。其次就是函数为基本类型和后来的闭包。当然Lisp也有很大的缺点,即:一般的设计师难以避免Lisp的缺点。Lisp有很多方言,很多子系列,可以说百花齐放,也可以说是散沙一盘。这就是Lisp的优点之一,同时也是其缺点之一,但是这些缺点主要是用Lisp的人造成的,而之所以会这样,是因为Lisp太容易滥用了(其缺
在NewLisp中实现匿名函数的递归
句龙胤
匿名函数递归lambdalispNewLisp
匿名函数在很多语言中的表现形式大概如下:(lambda (n)
(* (+ n 1) (- n 1)))只有参数列表和函数体,而没有名字。在大部分情况下没问题,但是一旦需要用到递归的话,就有点麻烦了,因为不知道如何去递归的调用一个匿名函数。在学术界中有一些解决这个问题的办法,其中一个就是Y组合子,但是那个太繁琐,而且难以通过宏自动将一个lambda变成可递归形式,没什么好处。根据历史经验,目前
用Hadoop Streaming技术集成newLISP脚本
超人学院
hadoophdfs
本文example6环境和之前的Hadoop1.x不同,是在Hadoop2.x环境下测试。功能和前面的日志处理程序一样。第一个newLISP脚本,起到mapper的作用,在stdin中读取文本数据,将did作为key,value为1,然后将结果输出到stdout第二个newLISP脚本,起到reducer的作用,在stdin中读取,key是dic,values是所有的value,简单对value求
newLISP数据拟合
阿尔萨斯
lisp
有时候需要拟合数据,比如某周五的数据因故无法生成, 可以用下面的算法简单拟合。
计算前两周的周四,周五的环比(邻比), 两个邻比求平均后加1, 乘以 周四的数据,得到周五的数据。
用newLISP实现代码很简单:
参考下面的示例:
#!/usr/bin/newlisp
(define (adjacent-div a b)
(div (sub b a) a))
(define
算法 单链的创建与删除
换个号韩国红果果
c算法
先创建结构体
struct student {
int data;
//int tag;//标记这是第几个
struct student *next;
};
// addone 用于将一个数插入已从小到大排好序的链中
struct student *addone(struct student *h,int x){
if(h==NULL) //??????
《大型网站系统与Java中间件实践》第2章读后感
白糖_
java中间件
断断续续花了两天时间试读了《大型网站系统与Java中间件实践》的第2章,这章总述了从一个小型单机构建的网站发展到大型网站的演化过程---整个过程会遇到很多困难,但每一个屏障都会有解决方案,最终就是依靠这些个解决方案汇聚到一起组成了一个健壮稳定高效的大型系统。
看完整章内容,
zeus持久层spring事务单元测试
deng520159
javaDAOspringjdbc
今天把zeus事务单元测试放出来,让大家指出他的毛病,
1.ZeusTransactionTest.java 单元测试
package com.dengliang.zeus.webdemo.test;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import
Rss 订阅 开发
周凡杨
htmlxml订阅rss规范
RSS是 Really Simple Syndication的缩写(对rss2.0而言,是这三个词的缩写,对rss1.0而言则是RDF Site Summary的缩写,1.0与2.0走的是两个体系)。
RSS
分页查询实现
g21121
分页查询
在查询列表时我们常常会用到分页,分页的好处就是减少数据交换,每次查询一定数量减少数据库压力等等。
按实现形式分前台分页和服务器分页:
前台分页就是一次查询出所有记录,在页面中用js进行虚拟分页,这种形式在数据量较小时优势比较明显,一次加载就不必再访问服务器了,但当数据量较大时会对页面造成压力,传输速度也会大幅下降。
服务器分页就是每次请求相同数量记录,按一定规则排序,每次取一定序号直接的数据
spring jms异步消息处理
510888780
jms
spring JMS对于异步消息处理基本上只需配置下就能进行高效的处理。其核心就是消息侦听器容器,常用的类就是DefaultMessageListenerContainer。该容器可配置侦听器的并发数量,以及配合MessageListenerAdapter使用消息驱动POJO进行消息处理。且消息驱动POJO是放入TaskExecutor中进行处理,进一步提高性能,减少侦听器的阻塞。具体配置如下:
highCharts柱状图
布衣凌宇
hightCharts柱图
第一步:导入 exporting.js,grid.js,highcharts.js;第二步:写controller
@Controller@RequestMapping(value="${adminPath}/statistick")public class StatistickController { private UserServi
我的spring学习笔记2-IoC(反向控制 依赖注入)
aijuans
springmvcSpring 教程spring3 教程Spring 入门
IoC(反向控制 依赖注入)这是Spring提出来了,这也是Spring一大特色。这里我不用多说,我们看Spring教程就可以了解。当然我们不用Spring也可以用IoC,下面我将介绍不用Spring的IoC。
IoC不是框架,她是java的技术,如今大多数轻量级的容器都会用到IoC技术。这里我就用一个例子来说明:
如:程序中有 Mysql.calss 、Oracle.class 、SqlSe
TLS java简单实现
antlove
javasslkeystoretlssecure
1. SSLServer.java
package ssl;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.security.KeyStore;
import
Zip解压压缩文件
百合不是茶
Zip格式解压Zip流的使用文件解压
ZIP文件的解压缩实质上就是从输入流中读取数据。Java.util.zip包提供了类ZipInputStream来读取ZIP文件,下面的代码段创建了一个输入流来读取ZIP格式的文件;
ZipInputStream in = new ZipInputStream(new FileInputStream(zipFileName));
&n
underscore.js 学习(一)
bijian1013
JavaScriptunderscore
工作中需要用到underscore.js,发现这是一个包括了很多基本功能函数的js库,里面有很多实用的函数。而且它没有扩展 javascript的原生对象。主要涉及对Collection、Object、Array、Function的操作。 学
java jvm常用命令工具——jstatd命令(Java Statistics Monitoring Daemon)
bijian1013
javajvmjstatd
1.介绍
jstatd是一个基于RMI(Remove Method Invocation)的服务程序,它用于监控基于HotSpot的JVM中资源的创建及销毁,并且提供了一个远程接口允许远程的监控工具连接到本地的JVM执行命令。
jstatd是基于RMI的,所以在运行jstatd的服务
【Spring框架三】Spring常用注解之Transactional
bit1129
transactional
Spring可以通过注解@Transactional来为业务逻辑层的方法(调用DAO完成持久化动作)添加事务能力,如下是@Transactional注解的定义:
/*
* Copyright 2002-2010 the original author or authors.
*
* Licensed under the Apache License, Version
我(程序员)的前进方向
bitray
程序员
作为一个普通的程序员,我一直游走在java语言中,java也确实让我有了很多的体会.不过随着学习的深入,java语言的新技术产生的越来越多,从最初期的javase,我逐渐开始转变到ssh,ssi,这种主流的码农,.过了几天为了解决新问题,webservice的大旗也被我祭出来了,又过了些日子jms架构的activemq也开始必须学习了.再后来开始了一系列技术学习,osgi,restful.....
nginx lua开发经验总结
ronin47
使用nginx lua已经两三个月了,项目接开发完毕了,这几天准备上线并且跟高德地图对接。回顾下来lua在项目中占得必中还是比较大的,跟PHP的占比差不多持平了,因此在开发中遇到一些问题备忘一下 1:content_by_lua中代码容量有限制,一般不要写太多代码,正常编写代码一般在100行左右(具体容量没有细心测哈哈,在4kb左右),如果超出了则重启nginx的时候会报 too long pa
java-66-用递归颠倒一个栈。例如输入栈{1,2,3,4,5},1在栈顶。颠倒之后的栈为{5,4,3,2,1},5处在栈顶
bylijinnan
java
import java.util.Stack;
public class ReverseStackRecursive {
/**
* Q 66.颠倒栈。
* 题目:用递归颠倒一个栈。例如输入栈{1,2,3,4,5},1在栈顶。
* 颠倒之后的栈为{5,4,3,2,1},5处在栈顶。
*1. Pop the top element
*2. Revers
正确理解Linux内存占用过高的问题
cfyme
linux
Linux开机后,使用top命令查看,4G物理内存发现已使用的多大3.2G,占用率高达80%以上:
Mem: 3889836k total, 3341868k used, 547968k free, 286044k buffers
Swap: 6127608k total,&nb
[JWFD开源工作流]当前流程引擎设计的一个急需解决的问题
comsci
工作流
当我们的流程引擎进入IRC阶段的时候,当循环反馈模型出现之后,每次循环都会导致一大堆节点内存数据残留在系统内存中,循环的次数越多,这些残留数据将导致系统内存溢出,并使得引擎崩溃。。。。。。
而解决办法就是利用汇编语言或者其它系统编程语言,在引擎运行时,把这些残留数据清除掉。
自定义类的equals函数
dai_lm
equals
仅作笔记使用
public class VectorQueue {
private final Vector<VectorItem> queue;
private class VectorItem {
private final Object item;
private final int quantity;
public VectorI
Linux下安装R语言
datageek
R语言 linux
命令如下:sudo gedit /etc/apt/sources.list1、deb http://mirrors.ustc.edu.cn/CRAN/bin/linux/ubuntu/ precise/ 2、deb http://dk.archive.ubuntu.com/ubuntu hardy universesudo apt-key adv --keyserver ke
如何修改mysql 并发数(连接数)最大值
dcj3sjt126com
mysql
MySQL的连接数最大值跟MySQL没关系,主要看系统和业务逻辑了
方法一:进入MYSQL安装目录 打开MYSQL配置文件 my.ini 或 my.cnf查找 max_connections=100 修改为 max_connections=1000 服务里重起MYSQL即可
方法二:MySQL的最大连接数默认是100客户端登录:mysql -uusername -ppass
单一功能原则
dcj3sjt126com
面向对象的程序设计软件设计编程原则
单一功能原则[
编辑]
SOLID 原则
单一功能原则
开闭原则
Liskov代换原则
接口隔离原则
依赖反转原则
查
论
编
在面向对象编程领域中,单一功能原则(Single responsibility principle)规定每个类都应该有
POJO、VO和JavaBean区别和联系
fanmingxing
VOPOJOjavabean
POJO和JavaBean是我们常见的两个关键字,一般容易混淆,POJO全称是Plain Ordinary Java Object / Plain Old Java Object,中文可以翻译成:普通Java类,具有一部分getter/setter方法的那种类就可以称作POJO,但是JavaBean则比POJO复杂很多,JavaBean是一种组件技术,就好像你做了一个扳子,而这个扳子会在很多地方被
SpringSecurity3.X--LDAP:AD配置
hanqunfeng
SpringSecurity
前面介绍过基于本地数据库验证的方式,参考http://hanqunfeng.iteye.com/blog/1155226,这里说一下如何修改为使用AD进行身份验证【只对用户名和密码进行验证,权限依旧存储在本地数据库中】。
将配置文件中的如下部分删除:
<!-- 认证管理器,使用自定义的UserDetailsService,并对密码采用md5加密-->
mac mysql 修改密码
IXHONG
mysql
$ sudo /usr/local/mysql/bin/mysqld_safe –user=root & //启动MySQL(也可以通过偏好设置面板来启动)$ sudo /usr/local/mysql/bin/mysqladmin -uroot password yourpassword //设置MySQL密码(注意,这是第一次MySQL密码为空的时候的设置命令,如果是修改密码,还需在-
设计模式--抽象工厂模式
kerryg
设计模式
抽象工厂模式:
工厂模式有一个问题就是,类的创建依赖于工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则。我们采用抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。
总结:这个模式的好处就是,如果想增加一个功能,就需要做一个实现类,
评"高中女生军训期跳楼”
nannan408
首先,先抛出我的观点,各位看官少点砖头。那就是,中国的差异化教育必须做起来。
孔圣人有云:有教无类。不同类型的人,都应该有对应的教育方法。目前中国的一体化教育,不知道已经扼杀了多少创造性人才。我们出不了爱迪生,出不了爱因斯坦,很大原因,是我们的培养思路错了,我们是第一要“顺从”。如果不顺从,我们的学校,就会用各种方法,罚站,罚写作业,各种罚。军
scala如何读取和写入文件内容?
qindongliang1922
javajvmscala
直接看如下代码:
package file
import java.io.RandomAccessFile
import java.nio.charset.Charset
import scala.io.Source
import scala.reflect.io.{File, Path}
/**
* Created by qindongliang on 2015/
C语言算法之百元买百鸡
qiufeihu
c算法
中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱买百鸡问题”,鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁,母,雏各几何?
代码如下:
#include <stdio.h>
int main()
{
int cock,hen,chick; /*定义变量为基本整型*/
for(coc
Hadoop集群安全性:Hadoop中Namenode单点故障的解决方案及详细介绍AvatarNode
wyz2009107220
NameNode
正如大家所知,NameNode在Hadoop系统中存在单点故障问题,这个对于标榜高可用性的Hadoop来说一直是个软肋。本文讨论一下为了解决这个问题而存在的几个solution。
1. Secondary NameNode
原理:Secondary NN会定期的从NN中读取editlog,与自己存储的Image进行合并形成新的metadata image
优点:Hadoop较早的版本都自带,