Java
文章平均质量分 67
juanzi
这个作者很懒,什么都没留下…
展开
-
Java线程中yield与join方法的区别
摘要:Java多线程一直是一个很热点的问题,它的敏感性在于它的复杂性和两面性,用的好事半功倍,用的不好,则事倍功半。在Java的多线程应用中,理解其中的关键方法是非常重要的。 在各种各样的线程中,Java虚拟机必须实现一个有优先权的、基于优先级的调度程序。这意味着Java程序中的每一个线程被分配到一定的优先权,使用定义好的范围内的一个正整数表示。优先级可以被开发者改变。即使线转载 2015-03-25 22:59:50 · 641 阅读 · 0 评论 -
游戏服务器开发需要学习的技术
原文:http://www.youxijishu.com/blogs/4.html一,游戏服务器编程语言的选择 所谓的游戏服务器编程语言其实有很多,基本上任何一种语言都可以作为游戏服务器的编程语言。这需要根据自己游戏的类型和要求加以选择。比如C++,Java ,Erlang,go等等。目前我用过的只有C++和Java.但是以Java为主。所以接下来就以自己的经验,谈谈以Java为转载 2015-05-01 20:19:27 · 1748 阅读 · 0 评论 -
游戏主程序亲述游戏职场生涯
作为游戏开发中不可缺少的一个环节,游戏程序人员一直作为幕后英雄存在。大家对程序员都不陌生,那么做游戏程序员和其他的软件程序员有什么样的区别呢?要从事游戏程序的开发需要从业者具备什么样的素质呢?本期,我们邀请到巨人网络《龙魂》游戏主程序周昌贵,让他带领我们去感受游戏程序员的酸甜苦辣。职场明星:周昌贵 年龄:28岁 从业经历:2005年毕业于四川大学计算机学院计转载 2015-05-01 20:20:21 · 791 阅读 · 0 评论 -
游戏中缓存的设计(二)--内存缓存的实现
一般游戏中的缓存架构为:内存—分布式缓存(redis,memcache)。这里的内存缓存需要我们自己实现。一,缓存需要考虑的几个问题1,缓存的总大小2,达到缓存最大值时的删除策略3,缓存的过期处理,防止冗余的数据占用过多的内存。二,详细实现1,缓存的总大小 因为内存的大小是有限的,所以缓存的数量必须有一最大值,当缓存达到这个最大值时,必须考虑转载 2015-05-15 20:32:02 · 1857 阅读 · 0 评论 -
Redis在游戏开发中的应用
原文:http://www.youxijishu.com/blogs/3.htmlRedis是一个新兴的NoSql数据缓存组件,与memcache类似,但是功能却比memcache多一些。首先,Redis和memcache都是基于内存的,所以读取和写入速度都非常快。但是memcache只支持简单的key-value数据的存储方式,而Redis对key-value ,hash,list,se转载 2015-05-16 09:28:26 · 527 阅读 · 0 评论 -
游戏上线前需要注意的一些技术问题
在开发环境下,由于对各种资源的使用不多,我们在调试或运行的时候也不会出现问题,而在正式环境下,由于用户量比较大,资源占用较多,会出现很多意外的问题。比如连接数大,TCP连接不上,数据库连接被占完等。下面把我遇到的问题总结一下,希望对遇到类似问题的朋友有所帮助。一,Linux最大连接数的限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,转载 2015-06-22 18:33:53 · 519 阅读 · 0 评论 -
自己写Java NIO服务器实例
我一直想学习如何用Java写一个非阻塞IO服务器,但无法从网上找到一个满足要求的服务器。我找到了这个示例,但仍然没能解决我的问题。还可以选择Apache MINA框架。但我的要求相对简单,MINA对我来说还稍微有点复杂。所以在MINA和一些教程(参见这篇和这篇)的帮助下,我自己写了一个非阻塞IO服务器。我的代码可以从这里下载。这只是个示例代码,如果需要可以随意修改它。这个示例由一个抽象转载 2015-06-22 18:55:29 · 605 阅读 · 0 评论 -
读取文件或超大文件的几种方式
在游戏服务器的开发过程中,有很多地方需要读取文件,比如:服务器配置文件,日志文件。有的文件小,有的文件大。针对这些操作,我们需要采取不同的策略。直接上代码package com.test; import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.F转载 2015-06-22 18:41:13 · 641 阅读 · 0 评论 -
查看Linux游戏服务器运行性能
在游戏服务器运行的过程中,可能会出现任何我们想不到的问题。最常见的就是cpu或内存莫名的占用很高。这个时候我们就需要追踪引起这个问题的原因。Linux自带的一些命令可以很好的帮助我们解决问题。一,查看Linux上游戏服务器运行情况 有时候我们需要了解游戏服务器的运行情况,CPU的占用率是一个非常重要的参考指标。在Linux上,我们可以使用top命令,显示当前Linux系统的一转载 2015-06-22 19:00:44 · 484 阅读 · 0 评论 -
Linux安装MySQL-5.6.24-1.linux_glibc2.5.x86_64.rpm-bundle.tar
一,下载mysql:http://dev.mysql.com/downloads/mysql/;打开页面之后,在Select Platform:下选择linux Generic,如果没有出现Linux的选项,请换一个浏览器试试。我用的谷歌版本不可以,换一个别的浏览器就行了,如果还是不行,需要换一个翻墙的浏览器。二,下载完后解压缩并放到安装文件夹下:12转载 2015-04-28 20:32:29 · 6879 阅读 · 0 评论 -
游戏服务器JVM调优(Java)
JVM的堆的内存, 是通过下面面两个参数控制的 : -Xms 最小堆的大小, 也就是当你的虚拟机启动后, 就会分配这么大的堆内存给你 -Xmx 是最大堆的大小 当最小堆占满后,会尝试进行GC,如果GC之后还不能得到足够的内存(GC未必会收集到所有当前可用内存),分配新的对象,那么就会扩展堆,如果-Xmx设置的太小,扩展堆就会失败,导致OutOfMemoryError错误提示。实际转载 2015-04-28 20:27:58 · 763 阅读 · 0 评论 -
使用ThreadMXBean类来编程检测死锁
摘要:所谓死锁: 是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。那么在写java程序的时候,死锁是否要检测到呢,答案是肯定的。 所谓死锁: 是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻转载 2015-03-31 22:49:09 · 1409 阅读 · 0 评论 -
几种任务调试的java实现方法与比较
摘要:在游戏开中有一些任务调试需要程序实现处理,任务调度是指基于给定时间点,或给定时间间隔或者给定执行次数自动执行任务。本文由浅入深介绍三种任务调度的 Java 实现 在游戏开中有一些任务调试需要程序实现处理,任务调度是指基于给定时间点,或给定时间间隔或者给定执行次数自动执行任务。本文由浅入深介绍三种任务调度的 Java 实现: • Timer •转载 2015-03-31 22:53:12 · 828 阅读 · 0 评论 -
Java 并发与线程池应用
摘要:Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,CompletionService,Future,Callable等。并发编程的一种编程方式是把任务拆分为一些列的小任务,即Runnable,然后在提交给一个Executor执行,以提高逻辑处理的速度。转载 2015-04-01 18:04:46 · 345 阅读 · 0 评论 -
游戏服务器中的日志处理方式之一
在游戏开发的过程中,我们需要记录一些日志,以便以后了解游戏运行的情况,以及根据日志发现并处理游戏中的突发情况。一,游戏日志可以分为以下几种:1) 系统日志2) 用户操作日志3) 异常日志,即错误日志系统日志 系统日志一般描述的是服务器日常运行的状态。比如启动是否成功,每天统计一下内存的占用量,CPU的使用量等信息。用于查检服务器运转载 2015-04-18 22:56:08 · 1223 阅读 · 0 评论 -
Netty游戏前后台通信协议分析
给大家推荐一个网站:http://blog.csdn.net/youxijishu/article/details/44938751通信协议分析一,Socket传输方式 TCP(transport control protocol,传输控制协议)是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务器端)都要有一一成对的socket,因此,发送端为转载 2015-04-18 23:05:35 · 2241 阅读 · 0 评论 -
游戏Socket编程需要知道的几个要点
1,建立SocketSocket socket = new Socket(); try{ socket.connect(SocketAddress endpoint,int timeout); }catch(SocketTimeOutException e){ ... do with timeOut... }catch(Ot转载 2015-04-11 17:25:02 · 533 阅读 · 0 评论 -
不要总想避免锁,正确认识使用锁:Lock和synchronized
给大家推荐一个网站:游戏开发网:http://www.youxijishu.com,微信订阅号:youxijishu.每天推送一篇技术文章。多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 Thread 类,可以用它来构建、启动和操纵线程,Java 语言包括了跨线转载 2015-04-16 21:57:58 · 480 阅读 · 0 评论 -
一种高性能网络游戏服务器架构设计
给大家推荐一个网站:给大家推荐一个网站:http://blog.csdn.net/youxijishu/article/details/44938751网络游戏的结构分为客户端与服务器端,客户端采用2D绘制引擎或者3D绘制引擎绘制游戏世界的实时画面,服务器端则负责响应所有客户端的连接请求和游戏逻辑处理,并控制所有客户端的游戏画面绘制。客户端与服务器通过网络数据包交互完成每一步游戏逻辑,转载 2015-04-28 20:25:23 · 731 阅读 · 0 评论 -
游戏行业的人工智能设计(二):路径搜寻和感知
在上一篇文章(第一部分)中,我们讨论了如何管理智能代理可能作出的基本决策——因为人工智能 (AI) 研究涉及到使用人工智能的实体。 在本文中,我为游戏男主角(或怪物或任何类型的游戏实体)作出的决策提供了一些背景。 智能代理需要确定游戏领域的兴趣点,然后明确如何达到目标。 最后,本文还将介绍如何优化这些方法并提供管理它们的方法,以说明多线程。 本文非常接近真正的人工智能 (AI)。 所有智转载 2015-08-08 23:18:49 · 884 阅读 · 0 评论