<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Bloodwolf的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wangpingfang</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wangpingfang]]></copyright><item><title><![CDATA[编译tomcat native]]></title><link>https://blog.youkuaiyun.com/wangpingfang/article/details/67633706</link><guid>https://blog.youkuaiyun.com/wangpingfang/article/details/67633706</guid><author>wangpingfang</author><pubDate>Tue, 28 Mar 2017 11:21:16 +0800</pubDate><description><![CDATA[1    准备
tomcat-native依赖apr, openssl和jdk。
 
下载oracle jdk，在linux下使用如下命令，下载：
wget --no-check-certificate --no-cookies--header "Cookie: oraclelicense=accept-securebackup-cookie"

http://download.ora]]></description><category></category></item><item><title><![CDATA[JNI内存泄露处理方法汇总]]></title><link>https://blog.youkuaiyun.com/wangpingfang/article/details/53945479</link><guid>https://blog.youkuaiyun.com/wangpingfang/article/details/53945479</guid><author>wangpingfang</author><pubDate>Fri, 30 Dec 2016 18:05:16 +0800</pubDate><description><![CDATA[在c++中new的对象，如果不返回java，必须用release掉，否则内存泄露。包括NewStringUTF，NewObject。如果返回java不必release，java会自己回收。
jstring jstr = env->NewStringUTF((*p).sess_id);
   ...
env->DeleteLocalRef( jstr);

jobject jobj = env->]]></description><category></category></item><item><title><![CDATA[同一台机器下多个github账号应用不同的SSH配置]]></title><link>https://blog.youkuaiyun.com/wangpingfang/article/details/53117087</link><guid>https://blog.youkuaiyun.com/wangpingfang/article/details/53117087</guid><author>wangpingfang</author><pubDate>Thu, 10 Nov 2016 16:32:51 +0800</pubDate><description><![CDATA[应用场景
作为一个使用mac+github的开发人员，除了上班期间使用公司账号提交代码，业余时间也会用自己的账号写一些感兴趣的小项目。


默认情况下，Mac下只会支持一个github的ssh配置，当你向另一个账号的项目push时，git会使用默认的账号进行权限验证，结果
就是没法在同一个Mac机器下共存多个github账号。那如何做到这些呢？


创建不同的公钥
参考githu]]></description><category></category></item><item><title><![CDATA[深入理解Java和MySQL乱码问题]]></title><link>https://blog.youkuaiyun.com/wangpingfang/article/details/37072923</link><guid>https://blog.youkuaiyun.com/wangpingfang/article/details/37072923</guid><author>wangpingfang</author><pubDate>Sat, 05 Jul 2014 19:27:46 +0800</pubDate><description><![CDATA[做Java Web开发很容易遇到乱码问题，这个问题出现的原因不外乎两个：网络传输数据使用的编码与java编码不一致；java编码与数据库编码不一致。如果是第一个原因导致的乱码，问题相对较简单，并且修正之后通过热部署就可以解决问题；如果是第二个原因导致的问题，那么影响就比较严重，很有可能这些数据就永久丢失了。笔者最近在开发一个手游服务器时，就遇到了第二个原因导致的乱码问题，为了解决这个问题，当时费了很大的功夫深入研究了JDBC和MySQL的编码原理。想想，这个过程还是很耗时间和精力的，因此我决定把我的经历和理]]></description><category></category></item><item><title><![CDATA[自旋锁与互斥锁之抉择]]></title><link>https://blog.youkuaiyun.com/wangpingfang/article/details/24705925</link><guid>https://blog.youkuaiyun.com/wangpingfang/article/details/24705925</guid><author>wangpingfang</author><pubDate>Tue, 29 Apr 2014 12:11:00 +0800</pubDate><description><![CDATA[自旋锁和互斥锁是多线程编程中的两个重要概念。他们都能用来锁定一些共享资源，以阻止影响数据一致性的并发访问。但是他们之间确实存在区别，那么这些区别是什么？
1    理论
理论上，当一个线程试图获取一个被锁定的互斥锁时，该操作会失败然后该线程会进入睡眠，这样就能马上让另一个线程运行。当持有互斥锁的线程释放该锁之后，进入睡眠状态的线程就会被唤醒。但是，当一个线程试图获取一个自旋锁而没有成功时，该线]]></description><category></category></item><item><title><![CDATA[Apache Tomcat SSL配置]]></title><link>https://blog.youkuaiyun.com/wangpingfang/article/details/23858119</link><guid>https://blog.youkuaiyun.com/wangpingfang/article/details/23858119</guid><author>wangpingfang</author><pubDate>Wed, 16 Apr 2014 16:49:43 +0800</pubDate><description><![CDATA[ApacheTomcat SSL配置
1     创建OpenSSL自签名证书
1.1    概述
本节简单地展示了SSL的实现原理和证书在整个SSL过程中扮演的角色。
 
普通的WEB以非加密的形式传输数据。这意味着任何人都能够通过嗅探器窥测到所有的数据。显然，这是一个问题，特别是对安全和隐私有高要求的数据，例如：信用卡数据和银行事务数据。安全套接层用于加密WEB服务器和WEB客户端（]]></description><category></category></item><item><title><![CDATA[cocos2d-x-2.2 for windows phone 8 CocosDenshion存在内存泄露问题]]></title><link>https://blog.youkuaiyun.com/wangpingfang/article/details/16954183</link><guid>https://blog.youkuaiyun.com/wangpingfang/article/details/16954183</guid><author>wangpingfang</author><pubDate>Mon, 25 Nov 2013 23:51:53 +0800</pubDate><description><![CDATA[最近把IOS和Android平台的cocos2d-x游戏移植到wp8平台，切几次场景之后，app就直接奔溃了，当时一直以为是angleproject导致的问题（angleproject确实有问题，使用它你纹理所占的内存量会翻倍），所以一开始就一直在找纹理的问题，经过几次检查之后，发现所有的纹理资源均已经释放，后来发现内存每次增长的量跟背景音乐文件的大小相同，所以就把目光集中到了CocosDensh]]></description><category></category></item><item><title><![CDATA[怎样以少于1000行代码写一个视频播放器-将电影文件中的视频帧存储为BMP图片]]></title><link>https://blog.youkuaiyun.com/wangpingfang/article/details/8197724</link><guid>https://blog.youkuaiyun.com/wangpingfang/article/details/8197724</guid><author>wangpingfang</author><pubDate>Mon, 19 Nov 2012 00:53:07 +0800</pubDate><description><![CDATA[怎样以少于1000行代码写一个视频播放器-将电影文件中的视频帧存储为BMP图片
源代码：tutorial01.cpp
编译好的libav库：libav.zip

1      概述
电影文件都包含一些基本组件。首先，电影文件本身称之为一个容器（container），容器的类型决定了文件中信息的组织方式。例如：AVI和Quicktime就是容器类型。其次，电影文件由一个流（streams）]]></description><category></category></item><item><title><![CDATA[怎样以少于1000行代码写一个视频播放器-引言]]></title><link>https://blog.youkuaiyun.com/wangpingfang/article/details/8192789</link><guid>https://blog.youkuaiyun.com/wangpingfang/article/details/8192789</guid><author>wangpingfang</author><pubDate>Sat, 17 Nov 2012 00:42:44 +0800</pubDate><description><![CDATA[<!--
@page
	{margin:2cm}
p
	{margin-bottom:0.21cm}
-->



怎样以少于1000行代码写一个视频播放器-引言
libav/ffmpeg是一个功能强大的视频库，使用它你不仅可以创建视频应用，甚至还可以创建通用的视频工具。ffmpeg替你完成了视频处理中解码、编码、muxing和demuxing等所有复杂的工作，从而使得你可以轻]]></description><category></category></item><item><title><![CDATA[MySQL Error Number:2003的解决办法]]></title><link>https://blog.youkuaiyun.com/wangpingfang/article/details/8187263</link><guid>https://blog.youkuaiyun.com/wangpingfang/article/details/8187263</guid><author>wangpingfang</author><pubDate>Thu, 15 Nov 2012 15:57:23 +0800</pubDate><description><![CDATA[一年前由于项目需求，在自己的机器上安装了一个MySQL数据库，当时MySQL Query Browser和MySQL Administrator客户端是可以连接到数据库的。但是今天当我使用MySQL Query Browser连接数据库时，客户端报告如下错误：“Could not connect to the specific instance MySQL Error Number 2003，Ca]]></description><category></category></item><item><title><![CDATA[VC++控制台应用程序下使用GDI在内存中画图]]></title><link>https://blog.youkuaiyun.com/wangpingfang/article/details/8148612</link><guid>https://blog.youkuaiyun.com/wangpingfang/article/details/8148612</guid><author>wangpingfang</author><pubDate>Mon, 05 Nov 2012 13:55:48 +0800</pubDate><description><![CDATA[控制台应用程序下使用GDI在内存中画图
1      背景
以前写MFC应用程序的时候，就接触到GDI了。只不过那个时候，Visual Studio已经帮你生成了MFC应用的基本框架，在Visual Studio生成的View文件里，存在一个方法::OnDraw(CDC* /*pDC*/)，Visual Studio会添加注释“// TODO: 在此处为本机数据添加绘制代码”，即是说，请在此处]]></description><category></category></item><item><title><![CDATA[使用Qt在内存中画图]]></title><link>https://blog.youkuaiyun.com/wangpingfang/article/details/8141635</link><guid>https://blog.youkuaiyun.com/wangpingfang/article/details/8141635</guid><author>wangpingfang</author><pubDate>Fri, 02 Nov 2012 17:41:22 +0800</pubDate><description><![CDATA[使用Qt在内存中画图
对于大多数Qt应用，我们在QWidget的paintEvent方法中创建和构造一个QPainter画图，或者在QGLWidget中的paintGL使用OpenGL函数画图，这是最常见的使用方式，并且基本能够满足应用需求。但是这把画图操作限制在了某一个方法之中，考虑一个这样的场景：客户想生成某个字体的字符图片，并把这些图片保存起来。在这个应用场景下，完全没有必要创建一个GUI]]></description><category></category></item><item><title><![CDATA[手把手教你在Windows下使用MinGW编译libav]]></title><link>https://blog.youkuaiyun.com/wangpingfang/article/details/8133622</link><guid>https://blog.youkuaiyun.com/wangpingfang/article/details/8133622</guid><author>wangpingfang</author><pubDate>Wed, 31 Oct 2012 17:58:31 +0800</pubDate><description><![CDATA[手把手教你在Windows下使用MinGW编译libav 
libav是在Linux下使用纯c语言开发的，不可避免的，libav源码使用了一些gcc的特性，那么在Windows下很难使用VC编译，但是使用MinGW编译却简单多了，下面我将根据自己的经历逐步介绍使用MinGW编译libav的过程以及在此过程中遇到的问题及其解决方法。
1      安装MinGW编译环境
1.1    安装Mi]]></description><category></category></item><item><title><![CDATA[B树的java源码实现]]></title><link>https://blog.youkuaiyun.com/wangpingfang/article/details/7426943</link><guid>https://blog.youkuaiyun.com/wangpingfang/article/details/7426943</guid><author>wangpingfang</author><pubDate>Thu, 05 Apr 2012 00:31:49 +0800</pubDate><description><![CDATA[B树是为磁盘或其他直接存取辅助存储设置而设计的一种平衡查找树。其能够有效降低磁盘I/O操作次数。许多数据库系统使用B树或B树的变形来储存信息。清明节这几天闲来无事，参考《算法导论》第二版第十八章的思想使用java语言实现了一颗简单的B树，在此跟大家分享下，就当是抛砖引玉，欢迎大家跟我讨论。

package com.discover;

import java.util.ArrayList;]]></description><category></category></item><item><title><![CDATA[Java SE 6 Hotspot [TM] 虚拟机垃圾回收调优]]></title><link>https://blog.youkuaiyun.com/wangpingfang/article/details/7196244</link><guid>https://blog.youkuaiyun.com/wangpingfang/article/details/7196244</guid><author>wangpingfang</author><pubDate>Thu, 12 Jan 2012 14:41:09 +0800</pubDate><description><![CDATA[译者注：这段时间由于项目性能不佳需要对Java的垃圾回收进行调优，在网上找到了该文的翻译版http://wangxu.me/blog/p/209，阅读过程发现该翻译版中错别字较多，并且很多地方翻译得不够准确，于是我就阅读了英文原版。考虑到有很多人不习惯读英文版，因此我在之前翻译版的基础上进行了重新翻译，并对照原文审校了多次，以期在符合中文阅读习惯的同时能够更加忠实于原文。翻译这篇文章花费了我将近7]]></description><category></category></item><item><title><![CDATA[搭建Python的Eclipse开发环境之创建一个新项目]]></title><link>https://blog.youkuaiyun.com/wangpingfang/article/details/7181646</link><guid>https://blog.youkuaiyun.com/wangpingfang/article/details/7181646</guid><author>wangpingfang</author><pubDate>Fri, 06 Jan 2012 16:13:50 +0800</pubDate><description><![CDATA[创建一个Python工程
配置好解释器后，就可以创建工程了。
打开Eclipse，打开菜单‘file > new > project > PyDev > PyDev project'，如下图所示：


Project name：项目名称

Project contents：该项目所在目录

Project type：该项目所用的解释器类型

Grammar version：用]]></description><category></category></item><item><title><![CDATA[搭建Python的Eclipse开发环境之配置解释器]]></title><link>https://blog.youkuaiyun.com/wangpingfang/article/details/7181559</link><guid>https://blog.youkuaiyun.com/wangpingfang/article/details/7181559</guid><author>wangpingfang</author><pubDate>Fri, 06 Jan 2012 15:56:09 +0800</pubDate><description><![CDATA[配置解释器
安装完PyDev插件之后，接下来需要配置Python，Jython或IronPython的解释器，按如下步骤进行：


打开：window > preferences > PyDev > Interpreter - (Python/Jython/IronPython)。选择你已安装的解释器（python.exe，jython.jar或ipy.exe）。选择将置于SYSTEM P]]></description><category></category></item><item><title><![CDATA[搭建Python的Eclipse开发环境之安装PyDev插件]]></title><link>https://blog.youkuaiyun.com/wangpingfang/article/details/7181223</link><guid>https://blog.youkuaiyun.com/wangpingfang/article/details/7181223</guid><author>wangpingfang</author><pubDate>Fri, 06 Jan 2012 15:30:00 +0800</pubDate><description><![CDATA[使用update site安装pydev插件
注意：该安装指南针对eclipse 3.5和3.6
点击菜单‘Help > Install New Software...'，打开Eclipse更新管理器。
 
如下图所示加入update site（下一小节给出了可用的update site列表）:


可用的update sites
 Main:

http://pydev.or]]></description><category></category></item><item><title><![CDATA[Java中带复选框的树（Java CheckBox Tree）的实现和应用]]></title><link>https://blog.youkuaiyun.com/wangpingfang/article/details/7174540</link><guid>https://blog.youkuaiyun.com/wangpingfang/article/details/7174540</guid><author>wangpingfang</author><pubDate>Wed, 04 Jan 2012 13:57:54 +0800</pubDate><description><![CDATA[在使用Java Swing开发UI程序时，很有可能会遇到使用带复选框的树的需求，但是Java Swing并没有提供这个组件，因此如果你有这个需求，你就得自己动手实现带复选框的树。
CheckBoxTree与JTree在两个层面上存在差异：


在模型层上，CheckBoxTree的每个结点需要一个成员来保存其是否被选中，但是JTree的结点则不需要。在视图层上，CheckBoxTree的每]]></description><category></category></item><item><title><![CDATA[引人深思的java面试题]]></title><link>https://blog.youkuaiyun.com/wangpingfang/article/details/7174023</link><guid>https://blog.youkuaiyun.com/wangpingfang/article/details/7174023</guid><author>wangpingfang</author><pubDate>Wed, 04 Jan 2012 09:43:21 +0800</pubDate><description><![CDATA[1. 使用 JDBC 时一般会有一句 Class.forName("xxx.xxx.xxx.xxx"); 的代码，问一下这句代码有什么作用？这行代码需要在每次获取 Connection 时都需要写么？
或：1. 为什么 JDBC 规范称从 javax.sql.DataSource 对象是获取连接的首选方法（javax.sql.DataSource 的 API 文档上有说），而不是从 java.s]]></description><category></category></item></channel></rss>