- 博客(10)
- 资源 (2)
- 收藏
- 关注
原创 Windows 配置 OpenGL 开发环境
启动Visual Studio(假设为2019版本)。创建一个新的C++空项目。在界面顶部中心,菜单栏下方有两个相邻的下拉菜单。选择x64。先在Debug模式下(然后在Release模式下)进入“项目属性”并进行以下更改。在“VC++目录”下(也可能写成“C/C++”),单击“常规”,然后在“包含目录”中添加你之前创建的include文件夹。在“链接器”下,有以下两个更改:单击“常规”,然后在“附加库目录”下添加先前创建的lib文件夹。
2024-09-05 13:54:58
1299
原创 Android 平台 OpenGL 环境搭建的两种方法及示例
static float triangleCoords[] = { // 按逆时针方向顺序// 设置颜色// 初始化顶点字节缓冲区// (每个浮点数占用4个字节)均同上。
2024-07-26 19:55:07
1960
2
原创 JNI 语法
全称Java Native Interface,主要用于在Java代码中调用非Java代码,以此绕过Java的内存管理和解决Java的性能问题。
2020-09-01 22:49:04
22136
原创 Java 局部匿名内部类是否会持有外部类的引用
5:调用Demo$DemoRunnable类的init方法(即参数为Demo的构造方法),将Demo对象作为了参数传递进来。发现生成的类只有一个构造器,参数就是Demo类型,而且保存到内部类本身的this$0字段中。4:aload_0指令将外部类Demo的this对象压栈。用javac命令生成字节码文件,根目录下生成两个文件。以下的分析方法和上面类似,这里给出简化过程。,查看反编译后的代码,根目录下生成两个文件。根目录下生成两个文件。根目录下生成两个文件。
2020-08-19 01:13:24
2011
原创 流媒体协议介绍
类似苹果公司的HTTP Live Streaming(HLS)方案,MPEG-DASH会将内容分解成一系列小型的基于HTTP的文件片段,每个片段包含很短长度的可播放内容,而内容总长度可能长达数小时(例如电影或体育赛事直播)。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。自适应流解决方案的标准化是为向市场提供信心,使该解决方案可以用于通用部署,抗衡类似但更专有的解决方案,如微软Smooth Streaming与Adobe的HDS。
2020-08-17 01:35:04
1791
原创 如何将 ORM 框架封装为通用的 BaseDao
最近开发的项目中需要使用到ORM框架,但是我并不想针对每一个具体业务写一个Dao,对于通用的CRUD功能,我想试着通过一个BaseDao解决问题,这里涉及到一个关键问题是:如何在编译时获取泛型的实际类型?后来通过抽象类解决了这个问题。
2020-08-13 01:46:35
949
1
原创 响应式编程在 Android 中的应用
响应式编程是一种基于异步数据流概念的编程模式。数据流就像一条河:它可以被观测,被过滤,被操作,或者为新的消费者与另外一条流合并为一条新的流。响应式编程的一个关键概念是事件。事件可以被等待,可以触发过程,也可以触发其它事件。事件是唯一的以合适的方式将我们的现实世界映射到我们的软件中:如果屋里太热了我们就打开一扇窗户。同样的,当我们更改电子表(变化的传播)中的一些数值时,我们需要更新整个表格或者我们的机器人碰到墙时会转弯(响应事件)。
2020-08-13 01:46:20
7010
1
原创 利用 AspectJ 实现 Android 端非侵入式埋点
最近在项目中遇到通过埋点对用户行为进行收集的需求,由于项目运行在局域网,而且有一些很细化的需求,比较几种技术方案之后,选择了通过AspectJ进行埋点。本文主要介绍笔者对学习和使用AspectJ的总结。AOP编程在进行用户行为统计是是一种非常可靠的解决方案,避免了直接在业务代码中进行埋点,而AOP编程的应用还不仅于此,它在性能监控,数据采集等方面也有着广泛的应用,后续将继续研究,并整理发布。AspectJ是一个很强大的用于AOP编程的库,使用AspectJ关键在于掌握它的pointcut的语法,
2020-08-13 01:46:02
5031
1
原创 集合在迭代过程中能否添加、删除或修改元素
modCount表示集合的元素被修改的次数,每次增加或删除一个元素的时候,modCount都会加一,而expectedModCount用于记录在集合遍历之前的modCount,检查这两者是否相等就是为了检查集合在迭代遍历的过程中有没有被修改,如果被修改了,就会在运行时抛出ConcurrentModificationException这个RuntimeException,以提醒开发者集合已经被修改。第一种使用for循环进行遍历时内部使用的就是集合本身的遍历方法,这里不做讨论。2.使用 foreach 遍历。
2020-08-13 01:45:47
7307
1
原创 多线程下的单例模式
用来检查实例是否被创建的代码是线程同步的,也就是说此代码块在同一时刻只能被一个线程执行,但是同步锁(locking)只有在实例没被创建的情况下才起作用。如果单例实例已经被创建了,那么任何线程都能用非同步的方式获取当前的实例,而无需经过线程锁的同步过程,避免了不必要的延迟。如果发生这种情况,第一个线程会首先使用新构造器实例化单例对象,同时第二个线程也会检查单例实例是否为空,由于第一个线程还没完成单例对象的实例化操作,所以第二个线程会发现这个实例是空的,也会开始实例化单例对象。可以通过以下两种方式来实现。
2020-07-06 20:25:25
426
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人