Welcome 微信登录

首页 / 操作系统 / Linux

函数式中的 currying

函数式中的 currying

currying 是函数式语言中经常遇到的一个概念,翻译成 柯里化,不是库里化。currying 指的是将接收多个参数的函数变换成接收一个单一参数,并且返回接收余下的参数而且返回结果的新函数的技术。说起来比较拗口,直接看下面的代码。defadd(x: Int, y: Int): Int = x + y//call addadd(1, 2)add(3, 4)但是如果我们使用 currying 的写法,那么可以将两个参数分开,接收第一个参数(x),然后返回一个...
随机非参数学习算法,第 1 部分: 随机决策树基本方法和理论探讨

随机非参数学习算法,第 1 部分: 随机决策树基本方法和理论探讨

大多数机器学习算法的计算复杂度都是随着数据量或者维度呈线性增长,这是大规模机器学习的一大挑战。本文将介绍随机决策树算法的基本方法,并从理论层面粗略的探讨了为什么随机决策树具有学习能力。引言大数据给机器学习带来了挑战,效率成为大规模机器学习的关键问题。 随着互联网和移动互联网的发展,人类社会产生的数据越来越多。根据新摩尔定律,数据的规模每 5 年增长 10 倍。除了数据量本身的增长外,数据的维度也越来越高。数据规模的快速增长,给机器学习创造了更大价值的机会。...
随机非参数学习算法,第 2 部分: 随机决策树的实现和效果

随机非参数学习算法,第 2 部分: 随机决策树的实现和效果

大多数机器学习算法的计算复杂度都是随着数据量或者维度呈线性增长,这是大规模机器学习的一大挑战。上一篇文章介绍了随机决策树算法的基本方法,并从理论层面粗略的探讨了为什么随机决策树具有学习能力。本篇文章我们将着重介绍随机决策树的算法实现,算法的复杂度和实验结果中展示的精度和效率。算法实现随机决策树的基本方法上篇文章已经介绍了,这一方法并不复杂,没有什么高深的东西。但在实现过程中,还是有许多注意的问题。我们这里仅讨论一棵树的构造算法,多棵树仅是需要多次执行这一个...
轻量级大规模机器学习算法库Fregata开源:快速,无需调参

轻量级大规模机器学习算法库Fregata开源:快速,无需调参

一. 大规模机器学习的挑战随着互联网,移动互联网的兴起,可以获取的数据变得越来越多,也越来越丰富。数据资源的丰富,给机器学习带来了越来越多,越来越大创造价值的机会。 机器学习在计算广告,推荐系统这些价值上千亿美元的应用中起到的作用越来越大,创造的价值也越来越大。但是越来越大的数据规模也给机器学习带来了很多挑战。最大的挑战就是庞大的数据量使得对计算资源的需求也急剧增长。首先经典的机器学习算法其计算量基本上都是与训练数据条数或者特征数量呈二次方甚至是三次方关系...
Java 异常分类及统一处理

Java 异常分类及统一处理

一、异常分类Java异常分为”检查”和”非检查”两类,”检查”二字的意思是,代码编译时,编译器会去Check一下有没有进行异常处理(捕获或向上抛),对于归类为需要检查的异常,若没处理,编译就过不去。初学的时候,常常想为啥异常要这样分类处理? 后来明白了些,异常不过两种:主观和客观,一个大多数情况下可以避免,一个大多数情况下无法避免。像NullPointerException这类异常,大...
用Java语言实现事件委托模式

用Java语言实现事件委托模式

事件委托模式是一个比较常用的设计模式,但是Java语言本身没有对其做一定的封装,因此实现起来有一定难度(了解原理后很简单),相比之下.NET就容易了很多。身为一个Java爱好者,怎么向这样一个小困难低头,但是上网搜索,却没发现相关解决方案,得,自己来做一个封装吧。其实结合例子更好,那么我就用一个小例子来引出这种设计模式。一个班级,有两类学生,A类:不学习,玩,但是玩的东西不一样,有的是做游戏,与的是看电视(有点不合理)B类:放哨的学生,专门看老师的动向,如...
Java实现LRU缓存

Java实现LRU缓存

1.CacheCache对于代码系统的加速与优化具有极大的作用,对于码农来说是一个很熟悉的概念。可以说,你在内存中new 了一个一段空间(比方说数组,list)存放一些冗余的结果数据,并利用这些数据完成了以空间换时间的优化目的,你就已经使用了cache。 有服务级的缓存框架,如memcache,Redis等。其实,很多时候,我们在自己同一个服务内,或者单个进程内也需要缓存,例如,lucene就对搜索做了缓存,而无须依赖外界。那么,我们如何实现我们自己的缓存...
Spring 整合 Quartz 实现动态定时任务

Spring 整合 Quartz 实现动态定时任务

最近项目中需要用到定时任务的功能,虽然spring 也自带了一个轻量级的定时任务实现,但感觉不够灵活,功能也不够强大。在考虑之后,决定整合更为专业的Quartz来实现定时任务功能。普通定时任务首先,当然是添加依赖的jar文件,我的项目是maven管理的,以下的我项目的依赖:<dependencies><dependency><groupId>org.springframework</groupId><a...
《软件设计模式与体系结构》学习笔记:软件设计模式概论

《软件设计模式与体系结构》学习笔记:软件设计模式概论

软件设计模式的概念软件设计模式是对软件设计经验的总结,是对软件设计中反复出现的设计问题的已被验证的成功解决之道。大量的软件设计模式都是之前从事软件设计开发的前人经过大量的实践而摸索出来的,用于帮助后来者快速高效且高质从事软件开发的。高等学校软件工程系列教材:软件设计模式与体系结构PDF 下载见 http://www.linuxidc.com/Linux/2016-12/138397.htm软件设计模式的要素软件设计模式一般会包含四个基本要素:模式名称:此种...
JDK1.7 ConcurrentHashMap 源码浅析

JDK1.7 ConcurrentHashMap 源码浅析

概述ConcurrentHashMap是HashMap的线程安全版本,使用了分段加锁的方案,在高并发时有比较好的性能。本文分析JDK1.7中ConcurrentHashMap的实现。正文ConcurrentHashMap概述HashMap不是线程安全的,要实现线程安全除非加锁,但这样性能很低。ConcurrentHashMap把整个HashMap数组分成了若干个Segment,每个Segment里有一个数组。添加一个Key时,需要先根据hash值计算出其所...
Java中的关键字 transient

Java中的关键字 transient

阅读目录先解释下Java中的对象序列化关于transient关键字举个例子参考资料先解释下Java中的对象序列化在讨论transient之前,有必要先搞清楚Java中序列化的含义;Java中对象的序列化指的是将对象转换成以字节序列的形式来表示,这些字节序列包含了对象的数据和信息,一个序列化后的对象可以被写到数据库或文件中,也可用于网络传输,一般当我们使用缓存cache(内存空间不够有可能会本地存储到硬盘)或远程调用rpc(网络传输)的时候,经常需要让我们的...
Java开发代码性能优化总结

Java开发代码性能优化总结

代码优化,可能说起来一些人觉得没用.可是我觉得应该平时开发过程中,就尽量要求自己,养成良好习惯,一个个小的优化点,积攒起来绝对是有大幅度效率提升的。好了,将平时看到用到总结的分享给大家。代码优化的目标:减小代码体积提高整个系统的运行效率代码细节优化尽量指定类,方法的final修饰符带有final修饰的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的.为类指定final修饰符可以...
Java 持久化和序列化的简单理解

Java 持久化和序列化的简单理解

1.对象的持久化(Persistence)对象持久化就是让对象的生存期超越使用对象的程序的运行期。将对象存储在可持久保存的存储介质上,在实际应用中,运用相应的对象持久化框架,将业务数据以对象的方式保存在数据库中,如比较早的Hibernate。在一定周期内保持不变就是持久化,持久化是针对时间来说的。数据库中的数据就是持久化了的数据,只要你不去删除或修改。比如在IE浏览器中一次Session会话中Session对象变量也是不变的,是Session容器中持久化。...
Linux应用程序开发示例:LED灯定时闪烁

Linux应用程序开发示例:LED灯定时闪烁

Linux应用程序开发示例:LED灯定时闪烁一、开发平台:beaglebone black二、应用层代码:??先建立文件目录?下面给出代码:三、编译代码?四、运行代码?可以观察到led灯在不断的闪烁。五、分析下面进入/sys/class/gpio目录下观察?我们可以知道,基本上Linux对gpio口的操作都位于这个文件目录下。这个文件可以设置高低电平、输入输出、边沿检测、以及数值等。这个应该是linux定义的标准驱动接口文件。本文永久更新链接地址:http...
C#设计模式-中介者模式

C#设计模式-中介者模式

在现实生活中,有很多中介者模式的身影,例如QQ游戏平台,聊天室、QQ群和短信平台,这些都是中介者模式在现实生活中的应用,下面就具体分享下我对中介者模式的理解。一、 中介者(Mediator)模式从生活中的例子可以看出,不论是QQ游戏还是QQ群,它们都是充当一个中间平台,QQ用户可以登录这个中间平台与其他QQ用户进行交流,如果没有这些中间平台,我们如果想与朋友进行聊天的话,可能就需要当面才可以了。电话、短信也同样是一个中间平台,有了这个中间平台,每个用户都不...
C#设计模式-迭代器模式

C#设计模式-迭代器模式

一、 迭代器(Iterator)模式迭代器是针对集合对象而生的,对于集合对象而言,必然涉及到集合元素的添加删除操作,同时也肯定支持遍历集合元素的操作,我们此时可以把遍历操作也放在集合对象中,但这样的话,集合对象就承担太多的责任了,面向对象设计原则中有一条是单一职责原则,所以我们要尽可能地分离这些职责,用不同的类去承担不同的职责。迭代器模式就是用迭代器类来承担遍历集合元素的职责。迭代器模式提供了一种方法顺序访问一个聚合对象(理解为集合对象)中各个元素,而又无...
C#设计模式-模板方法模式

C#设计模式-模板方法模式

提到模板,大家肯定不免想到生活中的“简历模板”、“论文模板”、“Word中模版文件”等,在现实生活中,模板的概念就是——有一个规定的格式,然后每个人都可以根据自己的需求或情况去更新它,例如简历模板,下载下来的简历模板的格式都是相同的,然而我们下载下来简历模板之后我们可以根据自己的情况填充不同的内容要完成属于自己的简历。在设计模式中,模板方法模式中模板和生活中模板...
C#设计模式-代理模式

C#设计模式-代理模式

在软件开发过程中,有些对象有时候会由于网络或其他的障碍,以至于不能够或者不能直接访问到这些对象,如果直接访问对象给系统带来不必要的复杂性,这时候可以在客户端和目标对象之间增加一层中间层,让代理对象代替目标对象,然后客户端只需要访问代理对象,由代理对象去帮我们去请求目标对象并返回结果给客户端,这样的一个解决思路就是今天要介绍的代理模式。一、 代理(Proxy)模式代理模式按照使用目的可以分为以下几种:远程(Remote)代理:为一个位于不同的地址空间的对象提...
C#设计模式-享元模式

C#设计模式-享元模式

在软件开发过程,如果我们需要重复使用某个对象的时候,如果我们重复地使用new创建这个对象的话,这样我们在内存就需要多次地去申请内存空间了,这样可能会出现内存使用越来越多的情况,这样的问题是非常严重,然而享元模式可以解决这个问题,下面具体看看享元模式是如何去解决这个问题的。一、 享元(Flyweight)模式在前面说了,享元模式可以解决上面的问题了,在介绍享元模式之前,让我们先要分析下如果去解决上面那个问题,上面的问题就是重复创建了同一个对象,如果让我们去解...
<< 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 >>