自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (1)
  • 收藏
  • 关注

原创 手把手教你在Windows下使用MinGW编译libav

手把手教你在Windows下使用MinGW编译libav libav是在Linux下使用纯c语言开发的,不可避免的,libav源码使用了一些gcc的特性,那么在Windows下很难使用VC编译,但是使用MinGW编译却简单多了,下面我将根据自己的经历逐步介绍使用MinGW编译libav的过程以及在此过程中遇到的问题及其解决方法。1      安装MinGW编译环境1.1    安装Mi

2012-10-31 17:58:31 10311 2

原创 Java中带复选框的树(Java CheckBox Tree)的实现和应用

在使用Java Swing开发UI程序时,很有可能会遇到使用带复选框的树的需求,但是Java Swing并没有提供这个组件,因此如果你有这个需求,你就得自己动手实现带复选框的树。CheckBoxTree与JTree在两个层面上存在差异:在模型层上,CheckBoxTree的每个结点需要一个成员来保存其是否被选中,但是JTree的结点则不需要。在视图层上,CheckBoxTree的每

2012-01-04 13:57:54 18104 58

原创 编译tomcat native

1    准备tomcat-native依赖apr, openssl和jdk。 下载oracle jdk,在linux下使用如下命令,下载:wget --no-check-certificate --no-cookies--header "Cookie: oraclelicense=accept-securebackup-cookie"http://download.ora

2017-03-28 11:21:16 1361

转载 JNI内存泄露处理方法汇总

在c++中new的对象,如果不返回java,必须用release掉,否则内存泄露。包括NewStringUTF,NewObject。如果返回java不必release,java会自己回收。jstring jstr = env->NewStringUTF((*p).sess_id); ...env->DeleteLocalRef( jstr);jobject jobj = env->

2016-12-30 18:05:16 12745 2

原创 同一台机器下多个github账号应用不同的SSH配置

应用场景作为一个使用mac+github的开发人员,除了上班期间使用公司账号提交代码,业余时间也会用自己的账号写一些感兴趣的小项目。默认情况下,Mac下只会支持一个github的ssh配置,当你向另一个账号的项目push时,git会使用默认的账号进行权限验证,结果就是没法在同一个Mac机器下共存多个github账号。那如何做到这些呢?创建不同的公钥参考githu

2016-11-10 16:32:51 3190

原创 深入理解Java和MySQL乱码问题

做Java Web开发很容易遇到乱码问题,这个问题出现的原因不外乎两个:网络传输数据使用的编码与java编码不一致;java编码与数据库编码不一致。如果是第一个原因导致的乱码,问题相对较简单,并且修正之后通过热部署就可以解决问题;如果是第二个原因导致的问题,那么影响就比较严重,很有可能这些数据就永久丢失了。笔者最近在开发一个手游服务器时,就遇到了第二个原因导致的乱码问题,为了解决这个问题,当时费了很大的功夫深入研究了JDBC和MySQL的编码原理。想想,这个过程还是很耗时间和精力的,因此我决定把我的经历和理

2014-07-05 19:27:46 1100

翻译 自旋锁与互斥锁之抉择

自旋锁和互斥锁是多线程编程中的两个重要概念。他们都能用来锁定一些共享资源,以阻止影响数据一致性的并发访问。但是他们之间确实存在区别,那么这些区别是什么?1    理论理论上,当一个线程试图获取一个被锁定的互斥锁时,该操作会失败然后该线程会进入睡眠,这样就能马上让另一个线程运行。当持有互斥锁的线程释放该锁之后,进入睡眠状态的线程就会被唤醒。但是,当一个线程试图获取一个自旋锁而没有成功时,该线

2014-04-29 12:11:00 2006 1

原创 Apache Tomcat SSL配置

ApacheTomcat SSL配置1     创建OpenSSL自签名证书1.1    概述本节简单地展示了SSL的实现原理和证书在整个SSL过程中扮演的角色。 普通的WEB以非加密的形式传输数据。这意味着任何人都能够通过嗅探器窥测到所有的数据。显然,这是一个问题,特别是对安全和隐私有高要求的数据,例如:信用卡数据和银行事务数据。安全套接层用于加密WEB服务器和WEB客户端(

2014-04-16 16:49:43 1620

原创 cocos2d-x-2.2 for windows phone 8 CocosDenshion存在内存泄露问题

最近把IOS和Android平台的cocos2d-x游戏移植到wp8平台,切几次场景之后,app就直接奔溃了,当时一直以为是angleproject导致的问题(angleproject确实有问题,使用它你纹理所占的内存量会翻倍),所以一开始就一直在找纹理的问题,经过几次检查之后,发现所有的纹理资源均已经释放,后来发现内存每次增长的量跟背景音乐文件的大小相同,所以就把目光集中到了CocosDensh

2013-11-25 23:51:53 3561 18

原创 怎样以少于1000行代码写一个视频播放器-将电影文件中的视频帧存储为BMP图片

怎样以少于1000行代码写一个视频播放器-将电影文件中的视频帧存储为BMP图片源代码:tutorial01.cpp编译好的libav库:libav.zip1      概述电影文件都包含一些基本组件。首先,电影文件本身称之为一个容器(container),容器的类型决定了文件中信息的组织方式。例如:AVI和Quicktime就是容器类型。其次,电影文件由一个流(streams)

2012-11-19 00:53:07 3864 2

翻译 怎样以少于1000行代码写一个视频播放器-引言

<!--@page {margin:2cm}p {margin-bottom:0.21cm}-->怎样以少于1000行代码写一个视频播放器-引言libav/ffmpeg是一个功能强大的视频库,使用它你不仅可以创建视频应用,甚至还可以创建通用的视频工具。ffmpeg替你完成了视频处理中解码、编码、muxing和demuxing等所有复杂的工作,从而使得你可以轻

2012-11-17 00:42:44 3691 2

转载 MySQL Error Number:2003的解决办法

一年前由于项目需求,在自己的机器上安装了一个MySQL数据库,当时MySQL Query Browser和MySQL Administrator客户端是可以连接到数据库的。但是今天当我使用MySQL Query Browser连接数据库时,客户端报告如下错误:“Could not connect to the specific instance MySQL Error Number 2003,Ca

2012-11-15 15:57:23 6613

原创 VC++控制台应用程序下使用GDI在内存中画图

控制台应用程序下使用GDI在内存中画图1      背景以前写MFC应用程序的时候,就接触到GDI了。只不过那个时候,Visual Studio已经帮你生成了MFC应用的基本框架,在Visual Studio生成的View文件里,存在一个方法::OnDraw(CDC* /*pDC*/),Visual Studio会添加注释“// TODO: 在此处为本机数据添加绘制代码”,即是说,请在此处

2012-11-05 13:55:48 2536

原创 使用Qt在内存中画图

使用Qt在内存中画图对于大多数Qt应用,我们在QWidget的paintEvent方法中创建和构造一个QPainter画图,或者在QGLWidget中的paintGL使用OpenGL函数画图,这是最常见的使用方式,并且基本能够满足应用需求。但是这把画图操作限制在了某一个方法之中,考虑一个这样的场景:客户想生成某个字体的字符图片,并把这些图片保存起来。在这个应用场景下,完全没有必要创建一个GUI

2012-11-02 17:41:22 4346

原创 B树的java源码实现

B树是为磁盘或其他直接存取辅助存储设置而设计的一种平衡查找树。其能够有效降低磁盘I/O操作次数。许多数据库系统使用B树或B树的变形来储存信息。清明节这几天闲来无事,参考《算法导论》第二版第十八章的思想使用java语言实现了一颗简单的B树,在此跟大家分享下,就当是抛砖引玉,欢迎大家跟我讨论。package com.discover;import java.util.ArrayList;

2012-04-05 00:31:49 7461 16

翻译 Java SE 6 Hotspot [TM] 虚拟机垃圾回收调优

译者注:这段时间由于项目性能不佳需要对Java的垃圾回收进行调优,在网上找到了该文的翻译版http://wangxu.me/blog/p/209,阅读过程发现该翻译版中错别字较多,并且很多地方翻译得不够准确,于是我就阅读了英文原版。考虑到有很多人不习惯读英文版,因此我在之前翻译版的基础上进行了重新翻译,并对照原文审校了多次,以期在符合中文阅读习惯的同时能够更加忠实于原文。翻译这篇文章花费了我将近7

2012-01-12 14:41:09 2955

翻译 搭建Python的Eclipse开发环境之创建一个新项目

创建一个Python工程配置好解释器后,就可以创建工程了。打开Eclipse,打开菜单‘file > new > project > PyDev > PyDev project',如下图所示:Project name:项目名称Project contents:该项目所在目录Project type:该项目所用的解释器类型Grammar version:用

2012-01-06 16:13:50 2559

翻译 搭建Python的Eclipse开发环境之配置解释器

配置解释器安装完PyDev插件之后,接下来需要配置Python,Jython或IronPython的解释器,按如下步骤进行:打开:window > preferences > PyDev > Interpreter - (Python/Jython/IronPython)。选择你已安装的解释器(python.exe,jython.jar或ipy.exe)。选择将置于SYSTEM P

2012-01-06 15:56:09 1981

翻译 搭建Python的Eclipse开发环境之安装PyDev插件

使用update site安装pydev插件注意:该安装指南针对eclipse 3.5和3.6点击菜单‘Help > Install New Software...',打开Eclipse更新管理器。 如下图所示加入update site(下一小节给出了可用的update site列表):可用的update sites Main:http://pydev.or

2012-01-06 15:30:00 6405

转载 引人深思的java面试题

1. 使用 JDBC 时一般会有一句 Class.forName("xxx.xxx.xxx.xxx"); 的代码,问一下这句代码有什么作用?这行代码需要在每次获取 Connection 时都需要写么?或:1. 为什么 JDBC 规范称从 javax.sql.DataSource 对象是获取连接的首选方法(javax.sql.DataSource 的 API 文档上有说),而不是从 java.s

2012-01-04 09:43:21 980

转载 编码20年的老程序员分享所积累的20条编程经验

从11岁时,我就一直在编程,并且一直都很喜欢技术和编程。这些年来,我积累了一些艰难又容易的经验。作为一名程序员,你或许还没这些经验,但我会把它们献给那些想从中学到更多的朋友。我会持续更新这些经验,我可能还会有更多的感想,但就我这20年来看,我想下面这个列表中基本不需要增添额外的东西了。下面就是我至今最难忘的经验。1. 估算解决问题所需要的时间。不要怕,承认吧!我曾见过一些程序员为了

2012-01-01 20:54:44 619

转载 2012年开发者该做的11件事

2011年即将结束,2012正在靠近。你是否在专业领域给自己设定2012的目标?不管你的答案如何,我相信下面列出的11条建议里面总有一两条适合你。1.使用Twitter——如果你是一名程序员,如果你还没有使用Twitter,你就out了。不是说你有多少粉丝,而是在Twitter上你可以更快的得到问题的答案,获取你关注的话题的最新资讯。 (作者没有考虑到天朝的程序员们)2.经常阅读S

2011-12-31 12:52:25 617 2

原创 使用QSet遇到的编译错误

今天下午写了如下一段代码:QSet pointSet;pointSet.insert(QPoint());编译后却得到一个编译错误:error C2665: 'qHash' : none of the 16 overloads could convert all the argument types1>        include/qtcore/../../src/core

2011-03-09 18:00:00 1677

原创 开心网 2011 校园招聘笔试题

开心网 2011 校园招聘 笔试题

2011-01-13 16:00:00 1664

翻译 GLSL教程 OpenGL Setup for GLSL 清理

前一小节展示了函数,用于将着色器对象与着色器程序相关联。相对地,也存在一个函数,用于删除着色器对象和着色器程序的关联。 在OpenGL2.0中,该函数是: void glDetachShader(GLuint program, GLuint shader);Parameter: program - The program to detach from. shader - The shader to detach. 在ARB扩展中,该函数如下:void gl

2010-12-27 16:03:00 1218

翻译 GLSL教程 OpenGL Setup for GLSL 故障排除:the InfoLog

调试着色器是很困难的。至今还没有printf,可能永远不会有,但是今后可能会出现具有调试能力的开发工具。目前你可以使用一些技巧来调试着色器。OpenGL还提供了更多的函数用于检验你的代码是否编译、链接成功。 在OpenGL2.0中,使用如下函数可以查询编译步骤的状态: void glGetShaderiv(GLuint object, GLenum type, int *param);Parameters: object - 指向对象的句柄. 着色器或者程序 type -

2010-12-27 12:08:00 1637

翻译 GLSL教程 OpenGL Setup for GLSL 创建着色器程序

下图展示了创建着色器程序并使之运行的必要步骤: 第一步:创建程序容器对象。用于此目的的函数返回一个指向程序容器对象的句柄。 在OpenGL 2.0中,该函数是: GLuint glCreateProgram(void); 如果使用ARB扩展,该函数是:GLhandleARB glCreateProgramObjectARB(void); 你可以根据自己的需要,创建足够多的着色器程序。一旦开始渲染,你可以在渲染单个帧的过程中,从一个着色器程序切换到另一个另一个着色器程序,你甚至

2010-12-22 17:42:00 2493

翻译 GLSL教程 OpenGL Setup for GLSL 创建着色器

下图展示了创建一个着色器的必要步骤: 第一步:创建着色器容器对象。用于此目的的函数返回一个指向着色器容器对象的句柄。 在OpenGL 2.0中,该函数是: GLuint glCreateShader(GLenum shaderType); Parameter: shaderType - GL_VERTEX_SHADER or GL_FRAGMENT_SHADER. 在ARB扩展中,该函数是:GLhandleARB glCreateShaderObj

2010-12-22 16:54:00 1794 1

翻译 GLSL教程 OpenGL Setup for GLSL 综述

本节OpenGL Setup for GLSL假定你已经有了一个顶点着色器和一个片段着色器,并且你想在OpenGL应用程序中使用它们。如果还不会自己编写着色器,你可以从Internet上得到很多的着色器。不妨访问下橙宝书的站点。着色器开发工具Shader Designer和Render Monkey也有大量的着色器例子。 在OpenGL中设置着色器应用的流程类似于编写一个C程序。每个着色器类似于一个C模块,就像在C语言中一样,每个着色器都必须单独编译。然后,这些将这些编译好的着色器链接到一个程序中。 本

2010-12-22 16:15:00 1469

原创 EMC 2011 校园招聘 笔试题

EMC 2011 校园招聘 笔试题

2010-12-22 14:40:00 4255

翻译 GLSL教程 图形管线 片段处理器

片段处理器负责运行片段着色器。顶点着色器负责的操作包括: 为每个像素计算颜色和纹理坐标 纹理应用(应用纹理) 雾计算 计算法线(如果你想对每个像素应用光照) 本单元的输入为之前阶段计算得到的插值如顶点位置,颜色和法线等。 顶点着色器会为每个顶点计算这些值。现在我们在处理图元中的片段,因此需要插值。 和顶点处理器一样,当你编写了一个片段着色器,它将替代对应的所有固定功能。因此让片段着色器执行纹理操作,然后将雾操作留给固定功能管线是不可能的。程序员必须编写应用需要的所有效果。

2010-12-21 17:49:00 2003

翻译 GLSL教程 图形管线 顶点处理器

顶点处理器负责运行顶点着色器。顶点着色器的输入为顶点数据,也就是它的位置、颜色和法线等,这取决于OpenGL应用程序的发送。 下面的OpenGL代码为每个顶点向顶点处理器发送了一个颜色和一个顶点位置信息。 glBegin(...);     glColor3f(0.2,0.4,0.6);     glVertex3f(-1.0,1.0,2.0);     glColor3f(0.2,0.4,0.8);     glVertex3f(1.0,-1.0,2.0);

2010-12-21 17:24:00 1668

翻译 GLSL教程 介绍

本教程讲授如何使用GLSL进行着色器编程。着色器是一个热门话题,3D游戏表明有效地使用着色器可以取得非凡的效果。本教程的目的就是带领大家走入着色器世界。虽然本教程对规范有所介绍,但是如果你想了解更多权威的知识,我们推荐你阅读OpenGL2.0和GLSL的官方规范。因为理解本教程的某些部分需要OpenGL编程的知识,所以本教程假定你已经熟悉OpenGL编程。GLSL即GL着色语言,简称为gl

2010-12-21 15:21:00 2208

翻译 GLSL教程 图形管线 管线概观

下图是图形管线的一系列处理阶段以及数据在这些处理阶段流动的简化图。虽然非常简单,但是用于展示着色器编程的一些重要概念足够了。本小节展示了OpenGL图形管线的固定功能。注意本管线只是一个抽象,不可能在所有的步骤上都满足任一特定实现。 顶点变换 在这里,顶点是一个属性集合,如它的空间位置、颜色、法线、纹理坐标等等。本阶段的输入是孤立的顶点属性。由本阶段的固定功能执行的操作有: 顶点位置变换 每个顶点的光照计算 纹理坐标生成和变换 图元装配和光栅化 本阶段的输入为经过变换

2010-12-21 07:45:00 1275

原创 生成点法线(Generating Vertex Normal)-应用版

上一篇博文《生成点法线 》首先从理论的角度描述了点法线的含义,接着给出了一个生成点法线的标准算法,最后基于标准算法进行了一些改进。 如果你不喜欢读长篇的理论来了解知识;如果你比较喜欢通过一个Demo来了解知识;如果你对点法线的生成比较感兴趣。那么本文就是为你而写的。 本文组织如下:首先给出生成点法线的步骤;接着给出一个三角网格模型格式;最后基于该网格模型格式,给出一个生成点法线的函数。 点法线生成步骤: 1 生成面法线 2 对顶点数据进行预处理,使得通过给定的顶点就可以索引到其所在的

2010-12-18 22:04:00 1579

翻译 生成点法线(Generating Vertex Normals)

计算 生成 顶点 法线 计算 calculate generate vertex normal

2010-12-18 17:34:00 4763

原创 0-1背包问题

0-1背包问题是这样的:有一个贼在偷窃一家商店时发现有n件物品;第i件物品值value[i]元,重weight[i]斤,假设此处value[i]和weight[i]都是整数。他希望带走的东西越值钱越好,但他的背包中至多只能装下W斤的东西,W为一整数。应该带走哪几样东西?(这个问题之所以称为0-1背包问题,是因为每件物品或被带走,或被留下;小偷不能只带走某个物品的一部分或带走两次以上的同一物品。)

2010-09-21 23:47:00 1339 2

原创 只考加法的面试题——将一个正整数表示成连续的自然数序列之和

我们知道:1+2 = 3;4+5 = 9;2+3+4 = 9。等式的左边都是两个以上连续的自然数相加,那么是不是所有的整数都可以写成这样的形式呢?稍微考虑一下,我们发现,4和8等数不能写成这样的形式。问题1:写一个程序,对于一个64位的正整数,输出它所有可能的连续自然数(两个以上)之和的算式。问题2:大家在测试上面的程序的过程中,肯定会注意到有一些数字不能表达为一系列连续的

2010-09-18 23:27:00 3590 1

翻译 BitTorrent协议规范(BitTorrent Protocol Specification)之Peer Wire协议(Peer Wire Protocol)-第四部分

Peer wire protocol (TCP)概述peer(端)协议使片(piece)的交换变得容易,片的描述请参考元信息文件。注意:原来的规范在描述peer协议时,也使用术语piece“(片)”,但是这不同于元信息文件里面的术语“piece(片)”,由于这个原因,在本规范中,将使用术语“块(block)”来描述peers(端)之间交换的数据。一个客户端(client)必须维持其

2009-06-06 20:10:00 4039 4

翻译 BitTorrent协议规范(BitTorrent Protocol Specification)之Tracker HTTP/HTTPS Protocol-第三部分

Tracker HTTP/HTTPS Protocol Tracker是一个响应HTTP GET请求的HTTP/HTTPS服务。这个请求包含来自客户端的度量信息,这些信息能够帮助Tracker全面地统计torrent。Tracker的响应包含一个peers列表,这个列表能够帮助客户端加入到torrent中。Base URL由元数据文件(即以.torrent为后缀的文件)中定义的announce

2009-05-22 19:35:00 3520 6

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除