- 博客(51)
- 收藏
- 关注
原创 浅显易懂的Java函数式教学
写在最前 本篇文章由笔者对函数式长时间使用及归纳而来,作为典型的Java猿,学习函数式时中间走了很多弯路,在此将相关经验总结归纳,帮助有需要的小伙伴过坑~; 阅读时,建议先把匿名类、lambda等碎片知识放一放,我们尽量以函数式观点出发学习,这对知识体系的整体架构是至关重要的;一、函数式接口的概念 函数式接口被定义为有且仅有一个抽象方法的接...
2020-04-03 00:04:24
710
原创 Maven通俗讲解
Maven通俗讲解 也许是本人不才,初识Maven时,被各种不明所以的教程搞得一头雾水,而在后来的使用中,我发现Maven大部分功能没有想象的那么困难。 本片文章面向Maven初学者,希望能让其以最快的速度了解Maven并享受到它所带来的一系列好处。[一个简单的问题] 在进行讲解前,先提问一个简单的问题。 假如你正在Eclipse下开发两个Java项目,
2015-04-12 13:08:04
42635
20
原创 编程错误实例的剖析[3]Map的keySet遍历
“Java中到底是Map依赖Set还是Set依赖Map?”初学Java时曾经被老师考过的一个基础问题,在自己的数学印象里,集合的结构要比映射的结构简单;但实际上,Java的Set确实依赖Map实现的,在HashSet的源码中,存在着一个Map成员。这样一个基础的问题成了本次错误的根源。本次的情况及其简单,在并发的情况下,存在着一个共享的Hashtable一个线程使用keySet
2015-01-09 14:21:21
1407
原创 将JNI库打包入jar文件
将JNI库打包入jar文件 在Java开发时,我们有时候会接触到很多本地库,这样在对项目打包的时候我们不得不面临一个选择:要么将库文件与包好的jar文件放在一起;要么将库文件包入jar。 将一个不大的项目包成一个jar有诸多发布优势,本次将分享一个将JNI包入jar的方法。[实现思路] 将JNI库(dll、so等)包入jar后,我
2014-12-23 11:32:52
8870
原创 LuaJava学习笔记[2]使用Lua控制Java对象
LuaJava学习笔记-使用Lua控制Java对象本次介绍了一个使用Lua控制Java类的方法,对于传入的Java类对象,使用Lua脚本控制其调用序列。
2014-11-26 11:01:17
2792
原创 编程错误实例的剖析[2]内部非静态类的反射
内部非静态类的反射尽管在之前的学习中,对各种内部类的全限定名有着完善的总结,但今天还是栽了跟头。本次的案例是这样的,在试图对一个空参构造的内部类进行反射时,出现了错误……
2014-11-10 10:57:26
632
原创 LuaJava学习笔记[1]初探Lua
最近也是面试了不少天津地区的游戏开发公司,发现Lua脚本在开发中备受青睐,而且这方面缺口好像还比较大,用人很紧。虽然投的都是服务器开发岗,但几乎每一次都被问及“你会Lua吗?”这样的问题,大有让我承担此类工作的意向。也许真的让某位前辈说中了“你真是个点歪技能树的好例子……”。 在好好审视这个脚本之前,我对它的理解仅限于“一种高效率的脚本语言”这样简单的层次,并且对“胶水语言”这个
2014-11-06 12:28:50
971
原创 OpenCV学习笔记[5]FLANN特征匹配
OpenCV学习笔记:FLANN特征匹配本次给出FLANN特征匹配的Java实现。特征匹配记录下目标图像与待匹配图像的特征点(KeyPoint),并根据特征点集合构造特征量(descriptor),对这个特征量进行比较、筛选,最终得到一个匹配点的映射集合。我们也可以根据这个集合的大小来衡量两幅图片的匹配程度。
2014-11-05 15:59:03
7245
3
原创 OpenCV学习笔记[4]模板匹配
OpenCV学习笔记:模板匹配 Java version模板匹配,通俗的讲,提供原始图片与其中的一部分,找出该部分在原始图片中的位置,它存在诸多限制,对模板的转置与缩放会严重影响匹配结果,但容许一定的失真。尽管官方教程非常详细,但除了人脸识别的Demo和一套doc外,没有其他Java实例,教程中详细的实例都由C语言编写,我在测试的过程中会将对应部分按照OOP形式重写为Java模块,并在学习笔记中贴出。
2014-11-05 09:00:14
4830
1
原创 OpenCV学习笔记[3]Java Demo人脸识别
OpenCV学习笔记:Java Demo人脸识别通过对OpenCV的初步了解,我发现图像识别的很多问题都可以用它方便的解决,本次将是一个来自官方的人脸识别的实例,我们提供图像,使用内置的匹配模式与算法,得到图像中的人脸位置,这与在腾讯空间中流行的图片识别过程类似。
2014-11-04 16:55:31
7559
1
原创 OpenCV学习笔记[2]Eclipse下的环境搭建
老实说,感觉这篇文章并没有什么技术含量,但还是决定记录下来学习的过程,一是保证学习笔记的记录完整性,二是在调试过程中有一些值得注意的小坑,三是能写一些在学习过程的感悟,总之整体过程上并不是枯燥无味的。[准备工作] Eclipse +JDK + OpenCV库 JDK与Eclipse不必多说,OpenCV库可以到其官网上下载,我下载的是2.4.9那个版本,
2014-11-04 16:00:53
1232
原创 OpenCV学习笔记[1]初探OpenCV
OpenCV学习笔记:初探OpenCV即使在菜鸟时期,大型开源库OpenCV的名字笔者也是听说过的,在初步学习之前,我对这套库的理解仅仅限于“一组图像处理API”这样简单的层次。最近有了点时间,在阅读完官方的介绍后我发现我完全想错了,这个库所提供的功能更像是某种“视觉”,CV是计算机视觉的缩写也是后来才发现的,想想自己也真是呆的可以。如果让我概况,OpenCV库可以大致分为两个部分,一个是
2014-11-04 11:21:26
1017
原创 JOAL学习笔记 第八课 OggVorbis格式流
JOAL学习笔记 第八课 OggVorbis格式流由于本次课程中原文作者并未给出完整的代码片,也并未给出解码器的实现,因此我在这里把我已经调通的测试代码贴出来。先贴出一张图,这样能让大家对整个实现的体系有所了解……
2014-10-29 11:28:46
1675
翻译 [译文]JOAL教程 第八课 OggVorbis格式流
[译文]JOAL教程 第八课 OggVorbis格式流听说过Ogg吗?它并不仅仅是一个好玩的声音格式名字。它的出现可以算是自MP3格式(也是一种常用的音乐格式)出现以来音频压缩界中发生的最大事件了。也许,在某一天,它将取代MP3而成为压缩音频的主流标准。它真的比MP3要好吗?这个问题有些难以回答,它在某些社群中引起了巨大争论。关于压缩率与声音质量取舍的争论是如此之多以至于我们无法通篇浏览。我个人不对哪一个更好发表任何见解。我认为对这两种压缩格式的论据都存在争议,不值一提 。但对我来讲,现实就是这样:Ogg
2014-10-29 11:24:57
1205
1
原创 JOAL学习笔记 第七课 多普勒效应
JOAL学习笔记 由于是概念介绍文章,没有提供实例,这里给出一个我的测试用例,它是在第一课的基础上修改的。 下面是本次值得注意的地方 在第一章开始时,我就对声源与听众速度的设定感到疑惑,即使设定了速度,也需要人为地加和来改变位置(例如第二课中关于淡出的内容),那么这个问题在本节中找到了答案,“速度”参数实际上改变的是声音频率,而非位置。 文末提及的两个常数参数,“介
2014-10-23 10:56:30
1045
翻译 [译文]JOAL教程 第七课 多普勒效应
[译文]JOAL教程第七课多普勒效应本文是DevMaster.net(http://devmaster.net/)的OpenAL教程对应的JOAL版本。C语言版原文作者为JesseMaurais真实世界当中的声学我知道,让大家复习高中学习的物理知识是非常无聊的,但还是迁就一下吧。多普勒效应对于某些人来讲是一个非常复杂的概念,但它确实是一个合乎逻辑的过程,当你深究下去后会觉得里面有些内容很有意思。为了理解多普勒效应,我们首先需要正确的理解“声音”到底是什么。大体上讲,声音是你的大脑对空气中传过来
2014-10-23 10:12:26
1643
翻译 [译文]JOAL教程 第六课 高级加载方式与错误处理
[译文]JOAL教程第六课 高级加载方式与错误处理本文是DevMaster.net(http://devmaster.net/)的OpenAL教程对应的JOAL版本。C语言版原文作者为JesseMaurais直到现在,我们一直在做很简单的事情,它们不需要以精确的方式来完成。这样编写代码的原因是为了让大家学起来更简单而不必考虑程序的健壮性。然而,我们很快会接触一些高级的东西,所以需要点时间来学习更为完善的程序编写方法。我们即将学习一个重要的部分:以更先进的方式处理错误。之后,还会加以提及加载音频数据的更
2014-10-20 17:09:47
733
原创 JOAL学习笔记 第五课 多声源共享缓冲区
JOAL学习笔记 先是例行的连续代码页…之后是一些值得注意的问题首先,本节课有较多音频,如果不想自己准备,可以在这里下载到原版:http://jogamp.org/git/?p=joal-demos.git;a=tree;f=src/java/demos/data 不知道读者怎么想,这次的程序看起来就像某种机翻,如果C语言转Java能机翻的话……,可能使用的JDK非
2014-10-20 09:19:42
783
翻译 [译文]JOAL教程 第五课 多声源共享缓冲区
[译文]JOAL教程第五课 多声源共享缓冲区本文是DevMaster.net(http://devmaster.net/)的OpenAL教程对应的JOAL版本。C语言版原文作者为JesseMaurais本次将会向大家展示在多个声源间共享缓冲区的方法。这个过程整体下来显得非常自然且合乎逻辑,它是如此地简单以至于你们当中的有些人已经自己掌握了。如果你是其中一位,那么你可以跳过本次教程了。但对于那些特别渴望着获得全部信息的人来讲,我当然会把这部分知识毫无保留的交给你,你会发现其中还是有很多乐趣的。顺带一提
2014-10-20 09:10:31
737
原创 JOAL学习笔记 第四课 进一步了解ALC
JOAL学习笔记 先是例行的连续代码页,由于本节并没有提供实例,所以提供一个简单的测试程序。之后是一些值得注意的问题 由于本节并没有提供实例,仅仅对Alc的基础API进行了简单讲解,所以问题不是很多,不过在笔者调试的结果与教程有些出入。 不知道是不是由于前一阵折腾ASIO驱动弄的,使用DirectSound3D会找不到设备。使用null后运行结果如下:
2014-10-19 17:27:45
927
翻译 [译文]JOAL教程 第四课 进一步了解ALC
[译文]JOAL教程第四课 进一步了解ALC本文是DevMaster.net(http://devmaster.net/)的OpenAL教程对应的JOAL版本。C语言版原文作者为JesseMaurais到目前为止,我们遇到的一切复杂问题都交给了Alut来解决,例如处理音频设备等。Alut提供了这些非常不错的功能,但是聪明的编码者总是希望了解它到底做了些什么,我们有时也许会希望直接对ALC进行调用,在这篇教程中我们将一探Alc层并详细了解如何自己处理音频设备
2014-10-19 17:14:02
771
原创 JOAL学习笔记 第三课 多声源播放
JOAL学习笔记 先是例行的连续代码页…之后是一些值得注意的问题 本次的调试可以说是最为顺利的一次。在音频的选择上,GUN1\2可以选择一些短暂的音频如游戏音效,笔者用爆炸音效测试的效果非常好(注意单声道!)。在实例程序中,只给出了10秒的播放时间,大家可以将这个数字调大点或干脆死循环。 教程的后面提到了一些混音的内容,笔者以前也做过基本的数字混音处理,将以前的
2014-10-19 10:46:17
739
翻译 [译文]JOAL教程 第三课 多声源播放
第三课 多声源本文是DevMaster.net(http://devmaster.net/)的OpenAL教程对应的JOAL版本。C语言版原文作者为JesseMaurais本期教程将教会大家如何同时播放多个音频。在很多激烈的游戏当中包含有各种各样的元素,在它们被触发时往往伴随着各类音效,这实现起来并不困难,处理多路音频与处理单路音频的方法极为相似。
2014-10-19 10:19:10
820
翻译 [译文]JOAL教程 第二课 循环与淡出
第二课 循环与淡出本文是DevMaster.net(http://devmaster.net/)的OpenAL教程对应的JOAL版本。C语言版原文作者为JesseMaurais希望上一课对你来说有点用,本次将会是一个简单、快速的教程,当然它也难不到哪去。
2014-10-19 10:10:38
891
原创 JOAL学习笔记 第二课 循环与淡出
JOAL学习笔记 先是例行的连续代码页import java.nio.ByteBuffer;import com.jogamp.openal.AL;import com.jogamp.openal.ALC;import com.jogamp.openal.ALFactory;import com.jogamp.openal.util.ALut;public class Loo
2014-10-19 09:59:13
879
原创 JOAL学习笔记 第一课 单一固定声源
JOAL学习笔记 最近一直在弄数字音频处理的一些东西,在网上检索到了OpenAL的相关资料,粗略阅读后感觉这个API还是很有魅力的,但JOAL教程的汉化版大多为低质量机翻,不太适合学习,于是决定自己翻译一下。 第一次尝试翻译英文技术原文,自己也就是六级水平,采用人脑为主词典为辅的方式。不期待有多高的翻译质量,只希望译文至少能够让读者连贯地读完并对其意义正确理解。在翻译完每一节时
2014-10-18 17:44:00
1011
翻译 [译文]JOAL教程 第一课 单一固定声源
本文是DevMaster.net(http://devmaster.net/)的OpenAL教程对应的JOAL版本。C语言版原文作者为JesseMaurais 欢迎来到令人激动的OpenAL世界!OpenAL目前仍在不断成长,仍有一大批后续API没有达到它的全部潜能。这其中最主要的原因是由于某些声卡仍然不支持硬件加速。然而,OpenAL项目的主要贡献者、同时也是最大的声卡生产商之一的Creative Labs公司,已经承诺在不久的将来全面支持声卡的硬件加速。
2014-10-18 16:59:54
1362
原创 Java Chaos Game 噪声游戏两则
Java Chaos Game噪声游戏两则[简介]最近一直在读《深奥的简洁》,里面有一章介绍了几种使用噪声产生分形图的方法,感觉很有意思,于是尝试使用计算机模拟了一下,效果还不错(噪声法比传统迭代法在编程上好实现一些,后来发现这类算法还不少,搜索chaos game可以找到更多)。本篇程序源文件及其依赖jar包可以到这里GitHub下载。[Sierpinski三角形的噪声产生法]
2014-10-15 16:39:36
1298
原创 [GEiv]第七章:着色器 高效的GPU渲染方案
本章介绍着色器的基本知识以及Geiv下对其提供的支持接口,并以“渐变高斯模糊”为线索进行实例的演示讲解。[背景信息][计算机中央处理器的局限性]在大学的“数字图像处理”课程中,老师讲解了高斯模糊的基本算法,并使用C#进行了基本实现。高斯模糊,简单地说,就是使用高斯权重模板对图像的每一个像素进行再计算、填充,以达到模糊的效果。在课程中,对于给定的模板与模糊度系数,对一副800X6
2014-10-09 09:17:57
2929
原创 [GEiv]第六章:粒子特效 绚丽的火焰与爆炸
粒子特效-绚丽的火焰与爆炸本章节主要介绍粒子特效设计的方法论,其中有相当的知识量是平台无关的;在本文中会以“爆炸”这个实际的例子为线索,进行详细的设计讲解,并最终使用GEiv实现它。[为什么要使用”粒子”] 实现粒子特效的首要目的,是对一些环境效果进行模拟仿真,常见的环境效果,例如火焰、爆炸、雨、雪、雾等,都是无数微小的粒子以某些规律共同作用的结果。而对于计算机来讲,虽
2014-09-24 15:18:41
1885
原创 Eclipse下Javassist正确使用方法
Eclipse下Javassist正确使用方法 这两天看到Hibernate的代理部分,第一反应是底层使用了反射,针对用户实体生成了代理类,后来反应过来了,反射没有任何可以产生新类的能力,也就顺理成章地找到了Javassist。 在网上搜索到的大部分教程,都是针对Javassist的API进行一番讲解,但是最后,往往没有一个加载过程,而笔者模仿这些教程进行类的加
2014-09-16 16:29:10
2146
原创 [GEiv]第五章:个体集群 虚假的分配与释放
第五章:个体集群虚假的分配与释放这篇文章主要对“个体集群”思想和对应于引擎的工具类进行介绍。[个体集群思想]个体集群:将大量的、具有相似性质的事物进行某种行为上的抽象和统一管理,例如射击游戏中的弹幕,或是一个粒子特效中使用的上千粒子。[个体集群的必要性]个体集群的概念,产生自Java堆分配的特点,了解Java的您一定明白,相比于可用free方法精确释放堆区内存的C语言不同,
2014-09-16 15:26:15
955
原创 [GEiv]第四章:图元详解(二) 实用方法
第四章:图元详解(二)实用方法这篇文章主要对图元中的实用方法进行一系列介绍。[实用方法]在图元的方法当中,除去变换图形的视觉样式之外,还提供了一系列实用方法,它们会在您的开发过程中提供额外支持。[面积函数] getSquare方法可以返回一个封闭多边形的面积。例子:public static void main(String[] args) {
2014-09-16 15:06:27
513
原创 [GEiv]第四章:图元详解(一) 文字详解
第四章:图元详解(一)文字详解这篇文章主要对图元中生成文字的方法进行详细讲解。[再论文字]在前几个章节中,我们主要讨论了图元的基本绘制方法,其中文字部分只是粗略地讲解了一下,那么本节将会进行进一步讲解。文字,其本质意义上不属于图形(或者说属于比较复杂的、不易于抽象的图形),因此在Opengl中,若想生成文字,必须先生成文字图像,再将图像转化为纹理,绑定到图形上。[几种文字的
2014-09-16 14:27:59
1077
原创 [GEiv]第三章:输入接口 所谓“控制感”
第三章:输入接口所谓“控制感”这篇文章主要介绍使用输入接口对图元进行控制。[游戏当中的输入分类]1. 主动检索式,在Serial中检测按键的状态,作出不同的反应,这个适用于控制要求及时、快速的情况,例如控制游戏角色等。2. 被动驱动,类似于AWT的事件回调,用于控制要求频度不高,但往往是单次调用的过程,例如游戏菜单的控制。二者谁也无法替代谁,使用回调控制角色,会
2014-09-15 18:32:20
569
原创 [GEiv]第二章:动态绘制 让画面动起来
这篇文章主要介绍图元动画的基本实现。[画面、动画与游戏]在上一章节中,主要讲解了静态绘制的诸多方法。这些API终究是对OPENGL API的简单封装,这离游戏制作尚有一段距离。什么是动画呢?动画是一系列画面的有序播放,当播放速度快于人眼视觉暂留时,我们便误以为画面中的物体在移动了,对于视频、动画来讲,这个播放速度大于24帧时,已经达到了不错的效果。什么又是游戏呢?游戏是在玩家交互过
2014-09-15 15:30:07
940
1
原创 [GEiv]第一章:静态绘制(三) 转置、尺度变换与混合通道
静态绘制(三) 转置、缩放与混合通道这篇文章主要介绍图元旋转、缩放与混合通道变换。[转置变换] 图元的转置变换极其简单使用setAngle(float angle);或setTheta(float theta)即可设置角度变换。该变换满足的是左手定则,以Y轴负向为0点,进行顺时针角度设置。Angle使用角度制、Theta使用弧度制。例子:UESI UES
2014-09-15 14:19:23
643
原创 [Geiv]第一章:静态绘制(二) 图元的位置变换
这篇文章主要介绍图元位置变换方法。[位置变换]:再次提醒:默认分辨率为800X600,这里使用的图形单位以分辨率为准,而非OpenGl上下文式的坐标,这点请注意。我们继续使用上节中的例子:public static voidmain(String[] args) { UESI UES = new R(); Obj rect
2014-09-15 13:58:37
805
原创 [GEiv]第一章:静态绘制(一) 图元与基本图形
第一章:静态绘制(一)图元与基本图形绘制从这篇文章开始,进行引擎功能的详细讲解,第一章主要讲解静态绘制的基本API,这是制作动画的基础部分。[图元][class: geivcore.enginedata.obj.Obj]]我承认Obj这个名字不是很好,这是历史原因造成的。Obj是图元类,任何展示在屏幕上的图像都由Obj实现,任何对图像的变换操作由ObjAPI来完成,一个图元中容纳若
2014-09-14 19:31:59
881
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人