aloneload的博客

精于工、匠于心、品于行


  • 首页

  • 标签

  • 分类

  • 归档

  • 关于

  • 搜索

jdk常用工具类

发表于 2018-07-02 | 分类于 编程语言 |
Java里面给一个类的操作工具惯用的设计是给这个类后缀加s(Object->Objects,Array->Arrays,collection->collections)Objects1234567891011121314151617181920212223242526//比较两个对象是否相等(首先比较内存地址,然后比较a.equals(b),只要符合其中之一返回true)public static boolean equals(Object a, Object b);//深度比较两个对象是否相等(首先比较内存地址,相同返回true;如果传入的是数组,则比较数组内的对应下标值是否相同)public static boolean deepEquals(Object a, Object b);//返回对象的hashCode,若传入的为null,返回0public static int hashCode(Object o);//返回传入可变参数的所有值的hashCode的总和(这里说总和有点牵强,具体参考Arrays.hashCode()方法)public static in ...
阅读全文 »

Java积极使用optional替代null

发表于 2018-07-02 | 分类于 编程语言 |
Java中有值类型和引用类型,null是引用类型的默认值,是对于不确定指针的建模,正常情况下,堆中的对象解引用调用,当声明的变量不指向任何堆中的对象时,此时调用任何方法都将引发过NullPointerException,因此在Java对象调用时,理论上必须要判断此对象为空(12345678910111213141516171819### Optional的方法 |方法|描述||-|-||empty |返回一个空的 Optional 实例||filter|如果值存在并且满足提供的词,就返回包含该值的 Optional 对象;否则返回一个空的 Optional 对象||flatMap| 如果值存在,就对该值执行提供的 mapping函数调用,返回一个 Optional 类型的值,否则就返 回一个空的Optional 对象 |get| 如果该值存在,将该值用 Optional 封装返回,否则出一个 NoSuchElementException 异常 ||ifPresent| 如果值存在,就执行使用该值的方法调用,否则什么也不做| |isPresent| 如果值存在就返回 true,否则返回 ...
阅读全文 »

深入并发

发表于 2018-05-29 | 分类于 编程语言 |
并发编程模型的分类执行体:可以是线程也可以是协程,执行代码的承载体1. 共享内存:执行体之间通过写-读内存中的公共状态来隐式进行通信 1. 消息传递:执行体间必须通过明确的发送消息来显式进行通信 顺序一致性内存模型是一个理论参考模型 ,处理器内存模型是硬件级的内存模型,JMM是一个语言级的内存模型顺序一致性内存模型1. 一个线程中的所有操作必须按照程序的顺序来执行 1. (不管程序是否同步)所有线程都只能看到一个单一的操作执行顺序 在顺序一致性模型中,所有操作完全按程序的顺序串行执行处理器内存模型 涉及术语:Socket|Processor,core,HT超线程,DRAM,SRAM对应上图对号入座MESI协议:解决内存可见性重排序在计算机中,软件技术和硬件技术有一个共同的目标:在不改变程序执行结果的前提下,尽可能的开发并行度1. 编译器优化 1. 指令级并行 1. 内存重排序(现代的处理器都会允许对写-读操作重排序) 对于1,JMM的编译器重排序规则会禁止特定类型的编译器重排序,对于2,3属于处理器重排序,JMM通过内存屏障指令来禁止特定类型的处理器重排。对于3,`a=1;b=2`如 ...
阅读全文 »

机器学习与深度学习

发表于 2018-05-17 | 分类于 大数据 |
备注123456#加载图片import matplotlib.image as mpimgimgArray = mpimg.imread('xxx.png')显示图片import matplotlib.pyplot as plt plt.imshow(x_train[2])
阅读全文 »

基于keras认识深度学习

发表于 2018-05-17 | 分类于 人工智能 |
为什么选择编程友好:在学习深度学习原理过程中,最好自己代码实践,keras极度适合初学者,能快速实验安装Anaconda 和 Jupyter notebook已成为数据分析的标准环境anaconda安装jupyter notebook安装keras安装ps:直接导入环境配置文件,命令conda env update -f=keras_environment.yml定义模型Sequential()模型123model = Sequential()model.add(Dense(32, input_shape=(784,)))model.add(Activation('relu'))Functional()模型123a = Input(shape=(32,))b = Dense(32)(a)model = Model(inputs=a, outputs=b)编译模型1model.compile(optimizer='sgd', loss='mse')必须传入损失函数和优化算法训练模型1history = model.fit(X, ...
阅读全文 »

透过《头号玩家》看未来世界

发表于 2018-05-07 | 分类于 其他 |
人类从众多动物中胜出,靠的是虚构的故事来组织大规模协作。想要破解人类的未来,必须先破解这种虚构的力量。狩猎时代倾向泛灵论,就在于人能否存活,取决于周遭动物,因此各种图腾成了协作的虚构。农业时代,人类脱离与动物天择的规则,有神论渐渐占据主导,寄希望于各种神灵负责风调雨顺。随着科技对自然法则的认识,现代人文主义崛起,认为人应该跟随自己的内心,做自己喜欢的事。随着大数据人工智能的崛起,发现这种人类独有的情感也是一种算法,通过基因以及化学物质就可以控制心灵,自已意志其实是生物体自身算法演化的结果,于是未来的人会通过基因检测,心理测试以及各种能够趋利避害的手段改造自身。整个世界将被算法所掌控,人只在未来世界中提供数据作为算法的来源。于是急需找到一种人类存活的意义,AR的出现也许是一种新的虚构力量。《头号玩家》剧情无疑设置在未来。属于人类由自由意志转向虚拟现实的过度时期,除了做出对未来的预测外,还承载着现在人文主义的观点。人工智能的发展,必将撇下进化及其缓慢有性生殖,正如有性生殖撇下无性生殖一样,现在硅这种物种突变速度明显胜过碳基的生命,也许如我们不关心花草树木的想法一样,未来硅晶片物种将人类体验 ...
阅读全文 »

异步和多线程

发表于 2018-05-07 | 分类于 编程语言 |
编程语言模型思考之异步和多线程各种类型的编程语言在解决特定领域问题上具有独有的编程模型,例如异步模型和多线程模型,语言最初设计者考虑哪种模型至关重要目的:不管哪种模型,其目的是为了程序的运行可持续性,也就是多任务执行解决方案。不能因为某些任务一直阻塞,而其资源(主要CPU)处于不工作状态,因此衡量一个语言的优劣,大部分评论文章针对是否充分利用处理器,以及对于编程人员在该模型上编程的易用性两种模型的比较异步模型:不论是操作系统还是语言运行库所提供的异步模型,为了不阻塞程序运行,对于一些耗时不确定的响应比较长时的操作可注册一个回调,为了管理这些回调处理完后的通知,一般语言运行库(比如js)提供事件编程模型,或者操作系统(异步IO)直接支持,其背后原理是行事件的任务所在进程或线程提供调度策略,轮询频率以及任务优先级都交由事件调度完成。因为这种情况下不会阻塞,所以理论上一个逻辑控制流(一个cpu核充分利用)足已,而且对于资源的访问由于是单个的顺序访问,因此很适合对于资源操作建模,不如js对于dom的操作,java swing对于UI的双事件机制,redis对于内存的控制。其缺点是代码层面的可读 ...
阅读全文 »

go语言介绍

发表于 2018-05-07 | 分类于 编程语言 |
go语言特性介绍go是一门支持并发编程和内存垃圾回收的编译型静态类型语言go是以软件工程为目的的语言设计,同大多数通用型编程语言相比,清晰简洁高效清晰的依赖关系清晰的语法清晰的语义偏向组合而不是继承编程模型(垃圾回收、并发)的简单性易于为它编写工具(gotool/gofmt/godoc/gofix)依赖处理在编译阶段,将未被使用的依赖视为错误import 导入代码而不是整个库,清晰依赖关系要比代码重用重要语法命名语法就是编程语言的用户界面首字母大写:名字对于包使用者可见其余:名字对于包使用者不可见并发不要通过共享内存来通信,要通过通信来共享内存要组合,不要继承面向对象支持:允许添加方法到任意类型,没有类型体系接口组合错误if和return处理错误1234f, err := os.Open(fileName)if err != nil { return err}工具gofmt 格式化代码gofix 重构包与导入导出每个 Go 程序都是由包构成的程序从 main 包开始运行按照约定,包名与导入路径的最后一个元素一致-使用分组导入语句是更好的形式1234import ...
阅读全文 »

java多线程

发表于 2018-05-07 | 分类于 编程语言 |
多任务多任务:操作系统可以同时运行多个任务。进程:指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体。线程:线程是进程中的一个实体,作为系统调度和分派的基本单位。解决方案:1.启动多个进程2.启动多个线程3.多进程+多线程如何调度进程和线程,完全由操作系统决定,程序自己不能决定什么时候执行,执行多长时间。计算密集型 vs. IO密集型计算密集型任务的特点是要进行大量的计算,消耗CPU资源,,全靠CPU的运算能力。这种计算密集型任务虽然也可以用多任务完成,但是任务越多,花在任务切换的时间就越多,CPU执行任务的效率就越低,所以,要最高效地利用CPU,计算密集型任务同时进行的数量应当等于CPU的核心数。第二种任务的类型是IO密集型,涉及到网络、磁盘IO的任务都是IO密集型任务,这类任务的特点是CPU消耗很少,任务的大部分时间都在等待IO操作完成(因为IO的速度远远低于CPU和内存的速度)。对于IO密集型任务,任务越多,CPU效率越高,但也有一个限度。常见的大部分任务都是IO密集型任务,比如Web应用。IO密集型任务执行期间,99 ...
阅读全文 »

keras命令速记

发表于 2018-05-07 | 分类于 笔记速记 |
准备安装anaconda-12345678conda create -n py3 python=3 activate py3deactivate py3conda install packgenameconda install tensorflowconda install keras tensorboard --logdir=/full_path_to_your_logs callbacks=[TensorBoard(log_dir='./log_dir')]
阅读全文 »
1234
aloneload

aloneload

面向对象思想,设计模式,数据结构与算法,网络编程,JVM运行机制,多线程开发,分布式开发,Java,go,数据库设计和调优,机器学习、深度学习等AI相关

32 日志
10 分类
28 标签
GitHub CSDN
© 2017 — 2019 aloneload
本站访客数 人次 本站总访问量 次