- 浏览: 91812 次
- 性别:
- 来自: 北京
最新评论
-
pcpig:
如果不能写的话,尝试修改一下配置文件cat /etc/sel ...
samba使用总结 -
pcpig:
简单启动脚本#!/bin/sh
PROJECT="p ...
Tomcat启动参数修改 -
pcpig:
基于ant的项目发布base_dir=`dirname $0` ...
项目发布脚本 -
pcpig:
同事提醒:网络通讯用gzip由于没有文件结构,压缩效果更好 p ...
消息压缩和解压缩 -
pcpig:
上面第一种方法有问题,第二种方法才是正确的。第一种方法,上线后 ...
spring+ibatis批处理解决
文章列表
1、原则: 代码应该尽早提交
提交前提:所提交的代码不会影响其他业务,不会影响其他人的使用。
2、正确的开发流程:策划设计需求--->技术阅读需求文档-->技术同策划沟通,深入理解需求--》
双方确认无误指定研发计划,开始研发--》研发完成后--》测试或策划对功能进行验收--》验收通过,测试发布准许上线通知--》
技术做好上线前的准备,随时准备上线(在不影响其他业务或玩家使用的前提下,尽早提交代码到svn)--》收到上线通知,然后发布功能--》
在外网测试服,备份好数据,更新代码,进行上线测试---》测试无误后,开放正式测试。
开发测试的目的主要测试功能是否按需求实现,游戏性方 ...
背景:pc ip:10.X 测试机ip:1.69 1.70
现象: 10.X可以连接1.69 无法连接1.70 从1.69可以连接1.70
从10.x无ping通1.70
排查过程:先是怀疑防火墙错误,于是停掉70的防火墙
#service iptables stop
发现没用
于是怀疑子网掩码错误
比较69和70的子网掩码,发现的确不同,于是修改子网掩码,重启生效
cat /etc/sysconfig/network-scripts/ifcfg-eth0
...
[root@server-X lua-5.2.2]# make
Please do 'make PLATFORM' where PLATFORM is one of these:
aix ansi bsd freebsd generic linux macosx mingw posix solaris
See doc/readme.html for complete instructions.
安装:make linux install
[root@server-X lua-5.2.2]#
[root@server-X lua-5.2.2]# cd ..
[root@server-X ...
[root@server-69 groovyLearn]# cat helloworld
#!/usr/bin/env groovy
println("Hello world")
for (a in this.args) {
println("Argument: " + a)
}
#groovy helloworld 1 3
Hello world
Argument: 1
Argument: 3
# groovy -e "println 'Hello Bob'"
# grep -i ^groov /usr/ ...
btrace可以对是针对java平台的一个动态追踪工具。简单点说就是可以在不停服务的情况下,对现网数据进行追踪分析和定位。最近为了定位一个jvm进程退出时java进程的运行情况,我学习了下btrace的使用。
例子:分析指定类中方法的调用和返回情况。
代码:
package com.sun.btrace.samples;
import com.sun.btrace.annotations.*;
import static com.sun.btrace.BTraceUtils.*;
/**
* A simple example that demonstrates subtype ...
问题:tomcat在运行过程中会莫名挂掉,表现如被Killed -9,系统中没有任何日志(命令行无Kill指令记录、/var/log/message中无OOM Killer日志、项目本地目录无core dump日志、无java crash日志、应用中记录了eixt操作,日志中没有看到该记录)。不知道大伙儿遇到过这种情况不,有啥建议不?
下面是我排查的情况:
软件环境
$ uname -a
Linux server-224 2.6.32-279.el6.x86_64 #1 SMP Fri Jun 22 12:19:21 UTC 2012 x86_64 x86_64 x86_64 GNU/ ...
linux下一条简单指令就能实现代理:
ssh -qTfnNg -D 7070 user@remote_ip
windows代理软件Bitvise SSH Client
功能:一键安装软件。可以选择要安装的选项(如1 2 3 ),直接回车的话,默认全安装
#!/bin/sh:/bin/bash
export PATH=/usr/bin:/bin:/sbin:/usr/sbin:$PATH
init_env()
{
echo "初始化环境"
#yum install ncurses* gcc+ gcc-c++ openssl* gcc gcc++ cmake
}
install_vim()
{
echo "安装Vim"
}
do_install()
{
...
无线开发时,一方面出于给玩家节省流量的考虑,一方面为了加快网络传输速度,需要对过大的消息进行。消息字节大小小于256的压缩就没有太大意义,建议对大于1k的消息进行压缩处理,具体数据可以根据自己的业务进行设定。
参考java代码如下
/**
* 对消息进行压缩,并返回压缩后的字节数组
*
* @param bodyBuf
* @return
* @throws IOException
*/
private static byte[] compress(IoBuffer bodyBuf) throws IOException {
ByteA ...
log4j热加载的原理网上说的很多,我就不多说了。主要整理一下如何定位目录以及如何设置热加载File f = new File("./log4j.xml");
logger.error("定位工作目录:"+f.getAbsolutePath() + "|" + new Date(f.lastModified()));
String fileName = Loader.getResource("log4j.xml").getFile();
logger.error("通过log4j找到的配置 ...
功能:把指定文件夹(不包括)下的所有东西复制到指定文件夹下。
在产品发布的时候,某些不共享的配置文件可以通过此脚本在项目第一次发布的时候生成。
windows版本(当前目录下resources)
rem @echo off
::cd ../../..
echo cd
set root_dir=%cd%\..\..\..
echo %root_dir%
set toPath=%root_dir%\resources
xcopy /S/Y res_module %toPath%
pause
linux版本
#!/bin/sh:/bin/bash
export PATH ...
原理:两个svn,一个研发svn,用于研发时使用,一个发布svn用于产品发布。实现时把研发svn的内容编译打包,发布到发布svn。
脚本release.sh代码如下
base_dir=`dirname $0`
read_conf(){
dir=`dirname $0`
echo `cat $dir/release.conf |grep "^[^#]"|grep -w $1|tr -s "[\t ]" " "|awk -F"=" '{print $2}'`
}
echo BASEDIR=$base_di ...
tcpdump是linux下非常强大的协议层分析工具,结合它可以对网络通讯进行监控,定位网络相关的bug非常方便,比如:客户端和服务器是否创建了连接,客户端发送了消息,服务器没有解析,还是客户端压根就没有发送消息 。。。。
比如我想监控同指定ip的通讯内容
tcpdump host ip_X -xx 或指定端口的通讯
tcpdump port YY -xx
或监控http协议
tcpdump -A port YY
tcpflow的使用跟tcpdump类似,只是tcpflow会把监控到的消息按文件输出,多一种选择而已。
项目的开发人员找到我说游戏挂掉了。
症状:1、客户端能跟服务器创建连接,但是服务器对收到的消息不进行业务逻辑处理
2、cpu和内存均正常。
本能的觉得出现了死锁。于是jstack查看堆栈信息,没发现死锁。
查看线程状态
# grep "java.lang.Thread.State" 12432.txt | sort | uniq -c
22 java.lang.Thread.State: RUNNABLE
16 java.lang.Thread.State: TIMED_WAITING (on object monito ...
bootstrap = new ServerBootstrap(new NioServerSocketChannelFactory(
Executors.newCachedThreadPool(),
Executors.newCachedThreadPool()));
异常
java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:691)
...