fengyue

2012年9月29日 #

tomcat使用jdk1.6启动项目的报错

2011-07-15 12:50 java.lang.ClassFormatError: Illegal class name "[L[Ljava/lang/String;;" in class file根据网上资料看http://fm928.blog.163.com/blog/static/748135201123115355946/

在java服务(tomcat)启动时 增加参数增加参数-Xverify:none

catalina.bat最后
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS%  -Xverify:none    %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

就好了。应为jdk bug

posted @ 2012-09-29 20:25 风悦 阅读(198) | 评论 (0)编辑 收藏

2012年9月9日 #

重温一下黄日华的风采

江湖浪子是由李鼎伦导演拍摄的电视剧。描写「江湖浪子」易水寒(黄日华),生性疏懒,刁钻古惑,不好武功实学,终日只顾招摇撞骗,投机取巧。无意间被牵涉入一宗江湖纠纷里,更被迫学成绝世武功,而误打误撞下更成为多派武学掌门人,令他苦恼不已。 其人又极重义气,尤好打不平,对女性更是无微不至,因此惹下无数孽缘。江湖浪子介绍如下:
http://baike.soso.com/v10518244.htm?ch=ch.bk.uc.mlink

posted @ 2012-09-09 13:07 风悦 阅读(171) | 评论 (0)编辑 收藏

如何优化网站内部链接

网站的内部链接也叫站内链接,它与网站的外部链接刚好相反,网站的内部链接的意思是在同一个网站域名下文章页面、频道页面、首页、Tag等相互之间的链接,这种做法我们也叫它为站内优化,当然这只是站内优化的一部分。v9527影视(http://www.v9527.com/)站长来说说怎么样优化网站内部链接。

  一、如何做好网站内部链接

  做得好的网站的内部链接是像一张蜘蛛网一样的,蜘蛛怎么爬都是畅通无阻的,不会出现那种走到某一个页面没有路的情况。网站的内部链接在文章内最好是以锚文本的方式表现,这样不仅引导蜘蛛爬行,还有利于提高网站权重。

  网站内部链接主要实现方式:

  1、导航:网站的栏目导航应该按照重要度来进行排序。重点要推的栏目链接放置在靠前面。

  2、相似文章、TAG标签等: 在文章内容页列出与其相关的文章、热门的文章、推荐的文章、随机的文章、

  3、面包屑:面包屑是最常见的内链方式,它能够很清楚的表达当前页面的级别。

  二、网站内部链接的作用

  1、加快收录

  利用网站内部链接来引导蜘蛛爬行到那些没有被收录的页面,这样可以提高文章的收录速度.

  2、增加pv值

  我们在每一个文章页面都设置相关阅读内容的模板,这样用户进来网站之后,不需要再去使用搜索引擎搜索内容,而是用我们的相关内容来引导用户点击,从而增加网站PV值,提高网站质量。

  三、网站内部链接给网站带来的好处

  网站的内部链接搭建得好的话,能够传递每一个页面的权重,而且当你的网站文章页面够多时,某个页面获得内部链接越多的,PR值会相对高一点,而且排名往往也是比较好的。

  一些大型平台的收录量都是比较多的,而且网站时间比较久,文章质量很好的,网站内部链接也做得够好,这就造成了现在一些大型平台的长尾词做得很好,如站长类网站:seowhy\A5\落伍者等。

  所以站内优化,其实有一部分工作就是在优化网站的内部链接。因此我们在站内的上花的时间可能有时间比站外还要更多,绝不是一些人所说的那样:“seo就是发外链”。http://www.v9527.com/

posted @ 2012-09-09 12:15 风悦 阅读(179) | 评论 (0)编辑 收藏

2012年8月18日 #

推荐一个视频网站

最近发现一个网站不错,在这里能搜索很多电影网站的高清电影,不用记住多个视频网站网址,也不用播放器就可以看。在这里给大家共享一下:
http://www.v9527.com

posted @ 2012-08-18 15:02 风悦 阅读(133) | 评论 (0)编辑 收藏

2011年11月30日 #

如何动态加载ActiveX控件

我们的开发平台需要用第三方控件(ActiveX)时,一般采用的方法是,先在VC中的插入控件,VC会自动生成操作控件的类,然后创建一个控件,并处理对应的事件。如果控件接口变化,更新控件,需要重复操作且编译才能发布,比较麻烦。显然,动态加载ActiveX控件能解决这个问题。如果做过页面编程就会知道,页面脚本里边可以动态创建控件的。我们的开发平台是否也能动态创建控件呢,答案是肯定的。下面介绍一下如何动态加载ActiveX控件:
1.首先是获取到控件的GUID,可以通过配置。
2.获取控件的方法、事件等属性,方便后面的事件处理
3.采用CWnd::CreateControl创建控件实例,如果是通过脚本调用控件接口,可以将该控件添加到脚本引擎。
   CreateControl原型如下:

   BOOL CreateControl( REFCLSID clsid, LPCTSTR pszWindowName, DWORD dwStyle,
   
const POINT* ppt, const SIZE* psize, CWnd* pParentWnd, UINT nID,
   CFile
* pPersist = NULL, BOOL bStorage = FALSE, BSTR bstrLicKey = NULL );

4.处理控件触发的事件
   重载父窗体的OnCmdMsg函数,处理对应的事件即可,OnCmdMsg原型如下:

    virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
  AFX_CMDHANDLERINFO
* pHandlerInfo);

 

posted @ 2011-11-30 08:51 风悦 阅读(3228) | 评论 (1)编辑 收藏

2011年11月24日 #

memcached应用随笔

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。相信大家对它并不陌生,下面把我最近开发的项目中用到的一个例子分享出来,给大家一起学习。在访问memcached时,通过synchronized实现同步。在需要操作memcached的地方可以很方便地通过类CacheFactory进行。废话少说,直接贴上代码。
 1import org.apache.log4j.BasicConfigurator;
 2import org.apache.log4j.Logger;
 3
 4
 5import com.danga.MemCached.MemCachedClient;
 6import com.danga.MemCached.SockIOPool;
 7
 8
 9/**
10 * memcache工厂类
11 * 
12 * @author fengyue
13 * @date Feb 16, 2011
14 */

15public class CacheFactory {
16private static final Logger logger = Logger.getLogger(CacheFactory.class);
17private static MemCachedClient memcache = null;
18
19
20public static MemCachedClient getCache() {
21if (memcache == null{
22synchronized (CacheFactory.class{
23if (memcache == null)
24getInstance();
25}

26}

27
28
29return memcache;
30}

31
32
33private static void getInstance() {
34try {
35BasicConfigurator.configure();
36String serverI = "10.185.23.17:13000";
37String[] servers = { serverI };
38SockIOPool pool = SockIOPool.getInstance();
39pool.setServers(servers);
40pool.setFailover(true);
41pool.setInitConn(10);
42pool.setMinConn(5);
43pool.setMaxConn(250);
44pool.setMaintSleep(30);
45pool.setNagle(false);
46pool.setSocketTO(3000);
47
48
49pool.initialize();
50memcache = new MemCachedClient();
51memcache.add("test""test1111111111111111111");
52
53
54}
 catch (Exception e) {
55logger.debug("failed to init memcache");
56e.printStackTrace();
57}

58}

59
60
61
62
63public static void main(String[] argvs) {
64//往memcache存入缓存值
65CacheFactory.getCache().set("myloginkey“, "1", new Date(3 * 60 * 60 * 1000));
66//取出值
67CacheFactory.getCache().get("myloginkey");
68//删除
69CacheFactory.getCache().delete("myloginkey");
70return;
71}

72}

posted @ 2011-11-24 14:07 风悦 阅读(1422) | 评论 (0)编辑 收藏

CString不是线程安全的

我们用MFC开发时经常会用到CString类,无可否认,CString类是很好用,但很少人注意到CString类不是线程安全的。一般地,界面编程都是在主线程,很少用到多线程,所以不会遇到什么问题。但是,当我们多个线程同时操作同一个CString类型变量时,就可能会出现内存地址错误,最终导致进程异常退出。内存错误导致的问题也很难调查,通常导致内存错误的地方没有马上报异常,而且在程序的其他地方才捕获异常。
CString类的Debug版本和Release版本不完全一样,Debug版本则直接分配(MFC在Debug版本有内存管理,主要是为了排错,内存泄漏等),CString类在Release版本会使用定长内存管理(CFixedAlloc类),主要管理是4个长度的内存,如下:
1AFX_STATIC CFixedAlloc _afxAlloc64(ROUND4(65*sizeof(TCHAR)+sizeof(CStringData)));
2AFX_STATIC CFixedAlloc _afxAlloc128(ROUND4(129*sizeof(TCHAR)+sizeof(CStringData)));
3AFX_STATIC CFixedAlloc _afxAlloc256(ROUND4(257*sizeof(TCHAR)+sizeof(CStringData)));
4AFX_STATIC CFixedAlloc _afxAlloc512(ROUND4(513*sizeof(TCHAR)+sizeof(CStringData)));
这样做应该是防止内存碎片和提高效率,由于CString类都会重用分配的定长内存,所以一般异常的地方大多数也是在CString操作的地方。有兴趣可以看看CString类的实现。
避免这样的问题最简单的办法就是加锁或者不用CString类。加锁用临界区就可以,实现比较简单,在这里不多说。

posted @ 2011-11-24 10:58 风悦 阅读(2298) | 评论 (5)编辑 收藏

2011年11月23日 #

OGRE资源管理分析

OGRE的文件系统比较复杂,不熟悉的人不知道怎么使用,经常出现找不到资源的问题,在这里简单介绍一下资源路径的设置:
资源路径可以通过程序设置也可以通过配置方式:
配置方式
resources.cfg就是用来配置资源的路径的,内容如下:
# Resource locations to be added to the 'boostrap' path
# This also contains the minimum you need to use the Ogre example framework
[Bootstrap]
Zip=../../Media/packs/OgreCore.zip

# Resource locations to be added to the default path
[General]
FileSystem=../../Media
FileSystem=../../Media/fonts
FileSystem=../../Media/materials/programs
FileSystem=../../Media/materials/scripts
FileSystem=../../Media/materials/textures
FileSystem=../../Media/models
FileSystem=../../Media/overlays
FileSystem=../../Media/particle
FileSystem=../../Media/gui
FileSystem=../../Media/DeferredShadingMedia
Zip=../../Media/packs/cubemap.zip
Zip=../../Media/packs/cubemapsJS.zip
Zip=../../Media/packs/dragon.zip
Zip=../../Media/packs/fresneldemo.zip
Zip=../../Media/packs/ogretestmap.zip
Zip=../../Media/packs/skybox.zip

Bootstrap、General就是资源组名称,FileSystem、Zip就是文件系统类型,表示压缩包还是文件系统。一般我们开发时都是使用文件系统,所以配置对应的路径就可以。OGRE是支持Zip压缩包的,如果要实现自己的压缩包需要实现对应的Archive的子类,实现对应接口就可以。可以参考ZipArchive、ZipArchiveFactory、ZipDataStream实现。

程序方式
其实配置方式最终也是调用程序来设置的,resources.cfg只是指定了ResourceGroupManager::getSingleton().addResourceLocation的参数。
看下面的函数就很清楚了,就是读取resources.cfg,将配置的路径都添加到资源管理,设置完资源组路径,调用ResourceGroupManager::getSingleton().initialiseAllResourceGroups()初始化就可以,后续就可以直接加载资源,很简单吧。

 1   virtual void setupResources(void)
 2    {
 3        // Load resource paths from config file
 4        ConfigFile cf;
 5        cf.load(mResourcePath + "resources.cfg");
 6
 7        // Go through all sections & settings in the file
 8        ConfigFile::SectionIterator seci = cf.getSectionIterator();
 9
10        String secName, typeName, archName;
11        while (seci.hasMoreElements())
12        {
13            secName = seci.peekNextKey();
14            ConfigFile::SettingsMultiMap *settings = seci.getNext();
15            ConfigFile::SettingsMultiMap::iterator i;
16            for (i = settings->begin(); i != settings->end(); ++i)
17            {
18                typeName = i->first;
19                archName = i->second;
20#if OGRE_PLATFORM == OGRE_PLATFORM_APPLE
21                // OS X does not set the working directory relative to the app,
22                // In order to make things portable on OS X we need to provide
23                // the loading with it's own bundle path location
24                ResourceGroupManager::getSingleton().addResourceLocation(
25                    String(macBundlePath() + "/" + archName), typeName, secName);
26#else
27                ResourceGroupManager::getSingleton().addResourceLocation(
28                    archName, typeName, secName);
29#endif
30            }

31        }

32    }


 

posted @ 2011-11-23 11:07 风悦 阅读(1847) | 评论 (0)编辑 收藏

2011年10月11日 #

用RenderMonkey进行shader开发

    以前学习shader都是看书,比较难上手,最近发现要专心学习shader还是用RenderMonkey这样的工具(ATI开发的),学习其中的shader例子就学会了自然就学会了shader编程。RenderMonkey能检查语法和预览,非常方便。不用自己写渲染程序进行预览,省很多力气。
    RenderMoney用法很简单,界面类似VC,看到就会用的,不详细说明。
    目前最新的RenderMonkey版本为1.82,下载链接如下:
    http://developer.amd.com/archive/gpu/rendermonkey/pages/default.aspx
    安装非常简单,不断Next就可以。

posted @ 2011-10-11 10:56 风悦 阅读(524) | 评论 (0)编辑 收藏

2011年8月30日 #

番茄鸡蛋是个好东西!!!

    这几天牙痛,不知道是什么原因,感觉是碰伤过,好像又不是。吃饭碰到牙齿就痛,喝了几天粥。牙痛不是病,痛起来要命。昨天买了消炎药,看到说明书的副作用,不敢吃。今天中午去饭堂吃饭,本来打算喝粥的,但是想起昨天下午没下班肚子就咕咕叫。还是到二楼吃饭,选了比较软的菜,茄子番茄和水蛋。吃的时候,碰到牙齿,还是很痛。吃完了菜,饭几乎没动过。吃完饭回到公司,休息一下。也没怎么睡着,下午上班,感觉用手按牙齿也不痛了,真神奇。网上搜索一下看看是什么原因。
    将自己今天吃的东西搜索了一下:
    鸡蛋:口腔疾病指的是牙龈肿痛、牙周炎、慢性咽炎、溃疡性口疮、口腔溃疡等常见病。虽说不是大病,但也时时折磨人,孰不知身边的鸡蛋就可帮你解除痛苦。
    番茄:防止小儿佝偻病、夜盲症、眼干燥症。富含维生素A,能促进骨骼钙化,对牙齿组织的形成起重要作用,牙根炎、牙病、流鼻血和患出血性疾病的病人多吃番茄,有助于治疗。
    不知道是那个起作用,鸡蛋也有可能是人造蛋,因为昨天我也吃了鸡蛋,没感觉好转。我想估计是番茄起作用。
    是药三分毒,能通过食物治疗治病,既无副作用,又省钱,何乐而不为?
    这是我真正的体会,希望对大家有帮助。

posted @ 2011-08-30 15:13 风悦 阅读(149) | 评论 (0)编辑 收藏

仅列出标题  下一页