Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

LinkedHashMap源码详解

LinkedHashMap源码详解

序言本来是不打算先讲map的,但是随着对set集合的认识,发现如果不先搞懂各种map,是无法理解set的。因为set集合很多的底层就是用map来存储的。比如HashSet就是用HashMap,LinkedHashSet就是用LinkedHashMap。所以打算把map讲完把。一、LinkedHashMap先来说说它的特点,然后在一一通过分析源码来验证其实现原理1、能够保证插入元素的顺序。深入一点讲,有两种迭代元素的方式,一种是按照插入元素时的顺序迭代,比如...
Java类加载基本过程

Java类加载基本过程

基本过程:根据类的全限定名称加载定义类的二进制字节流。将字节流代表的静态存储结构转化为方法区的运行时数据结构内存中生成一个代表这个类的java.lang.Class对象,作为方法去这个类的各种数据访问入口数组类本身不通过类加载器创建,由Java虚拟机直接创建,数组类的元素类型由类加载器加载。数组类的元素类型:数组去掉所有维度后的类型,文件格式验证:0xCAFEBABY 魔数开头;主次版本号当前虚拟机可处理;常量类型;索引执行类型;utf8编码数据类型,元数...
Android中Activity的四大启动模式实例讲解

Android中Activity的四大启动模式实例讲解

作为Android四大组件之一,Activity可以说是最基本也是最常见的组件,它提供了一个显示界面,从而实现与用户的交互,作为初学者,必须熟练掌握。今天我们就来通过实验演示,来帮助大家理解Activity的四大启动模式。演示效果如下:第一步:实验前准备,相关配置文件以及Activity的建立(1)AndroidMainfest.xml配置文件 1 <?xml version="1.0" encoding="utf-8"?> 2 <man...
Linux字符设备驱动框架笔记

Linux字符设备驱动框架笔记

字符设备是Linux三大设备之一(另外两种是块设备,网络设备),字符设备就是字节流形式通讯的I/O设备,绝大部分设备都是字符设备,常见的字符设备包括鼠标、键盘、显示器、串口等等,当我们执行ls -l /dev的时候,就能看到大量的设备文件,c就是字符设备,b就是块设备,网络设备没有对应的设备文件。编写一个外部模块的字符设备驱动,除了要实现编写一个模块所需要的代码之外,还需要编写作为一个字符设备的代码。驱动模型Linux一切皆文件,那么作为一个设备文件,它的...
Java 的设计模式之一装饰者模式

Java 的设计模式之一装饰者模式

刚开始接触装饰者的设计模式,感觉挺难理解的,不够后来花了一个晚上的时间,终于有头绪了装饰者设计模式:如果想对已经存在的对象进行装饰,那么就定义一个类,在类中对已经有的对象进行功能的增强或添加另外的行为,这个类就叫装饰者类。被修饰的类叫被装饰者类,是已经存在有的功能。在装饰者类之间又可以互相装饰特点: 1.装饰类通过构造方法来接收被装饰者的对象,调用它里面的功能或行为 2. 基于对被装饰对象的功能进行扩展,提供更强大的功能Java中的IO流是...
Java中Eclipse的使用

Java中Eclipse的使用

Eclipse是跨平台的自由集成开发环境(IDE),初衷主要为Java语言的定制。第一次使用就喜欢上了它。它可以帮我们导入包,而不需要我们导入,有很多快捷键提供我们使用,方便节省时间;最值得我喜欢的是胜任了在同一个软件可以进行编写、编译环境和运行环境的集成等等,而且它是开源代码刚开始进入界面的时候,设置工作空间,就是代码的存储路径创建第一个程序:1.Fille 2.New à project --- > java --- > ja...
函数式中的 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容器中持久化。...
<< 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 >>