随笔-2(实习)
1. Redis启动多端口,运行多实例
redis默认启动端口 6379
指定多个端口 --port
启动多端口
redis-server --port 6380
redis-server --port 6381
2. 查看redis实例
ps -ef | grep redis
使用实例
redis-cli -p 6380 (-p:指定端口)
关闭实例
redis-cli shutdown
关闭指定端口实例
redis-cli -p 6380 shutdown
3. 任务列表:
redis数据迁移:写一个redisCopyUtil工具类,实现shardedJedis集群数据库迁移功能
优化gm后台白名单功能
增加gm后台黑名单功能
增加玩家ip登录限制
-
白名单优化
点击提交后弹窗提示成功添加白名单
移除角色时提示确定移除或取消
判断输入角色是否已存在并提示 -
黑名单优化:
- 黑名单列表:
移除操作有bug
角色重复√ - 新增黑名单:
强制角色下线功能未实现
更新到游戏服务器有bug
禁言天数输入合法性判断√ - 天数
0 -3 永久 - 黑名单类型
1禁言 2封号
- 黑名单列表:
注:
<c:forEach items="${ipList}" var="ipList">
<td>${ipList}</td>
<td><a href="javascript:void(0)" onclick="rem('')">移除</a></td>
</c:forEach>
forEach循环时一定注意不能忘记items="${ipList}" 中的${}........
bootstrap 下拉框无法显示菜单问题:引入jquery库和bootstrp顺序问题
sitemesh:
- 引入sitemesh
- WEN-INF下:decorators.xml
- web.xml中配置过滤器
linux密码13位
协议sftp
端口22
linux tomcat:/usr/local/tomcat/bin目录下:
-
启动:
./catalina.sh run(日志启动方式)
./startup.sh(普通启动方式)
-
关闭
./shutdown.sh
-
查看tomcat是否关闭:
ps -ef | grep tomcat
-
结束tomcat进程:
kill -9 [PID]
linux mysql:/usr/local/mysql/bin/目录下:
- 启动:
service mysql start
关闭:
service mysql stop
重启:
service mysqld restart
linux下让tomcat以service方式运行 参考博文
linux查看当前服务:
chkconfig --list
linux查看当前进程:
ps -ef | grep tomcat
linux进程后台运行:
nohup ... &
如:nohup ping www.ibm.com &
项目发布时出现classnotfoundexception可能是maven项目包未导入编译路径 参考博文
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger goallog = LoggerFactory.getLogger("logger name");
private static final Logger logger = LoggerFactory.getLogger(SessionManager.class);
<div class="input-group">
<input type="text" class="form-control">
<span class="input-group-btn">
<button class="btn btn-default" type="button">Go!</button>
</span>
</div>
jquery正则表达式验证时间
function verifyTime(time){
var reg = /^(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/;
var str = "#" + time;
var str2 = $(str).val();
var timeArr = str2.split(",");
$.each(timeArr,function(i,value){
if(!reg.test(value)){
alert("时间格式不正确!");
return false;
}
});
}
eclipse快捷键:
- Eclipse查看某个方法被哪些类调用:
ctrl+alt+h
- 快速查找类
ctrl + shift + t
- 查看类被调用:
右键-references-project
- 格式化代码
ctrl+shift+f
- 在当前行下边创建空白
shift+enter
- 自动引入包和删除无用包
ctrl+shift+o:
- 前一个编辑的页面
Alt+←
- 快速显示当前类的继承结构
Ctrl+T
- 全局查找关键字
ctrl + h
异常
Implicit super constructor FatherClass() is undefined. Must explicitly invoke another constructor
错误原因:
子类必须继承父类的构造方法,如果父类构造方法中没有参数传递,那么默认是不写super()继承父类的构造方法的。LinearLayout类的构造方法没有无参数的构造方法,所以,你必须继承父类有参数的构造方法,而有参数的构造方法子类必须继承,所以,你必须写super关键字来继承父类的有参数的构造方法。
/**
* 生成12位或16位不重复的纯数字字符串,前2位为awardLibId,后面十位或14位是随机生成的数字字符串
*
* @return
*/
public static String getRandomString(String awardLibId) {
String codeString;
int i = 0;
while (true) {
//生成12位不重复的纯数字字符串
// String randomStr = RandomStringUtils .randomAlphanumeric(10);
//生成16位不重复的纯数字字符串
String randomStr = RandomStringUtils .randomAlphanumeric(14);
codeString = awardLibId + randomStr;
if (!allCodeList.contains(codeString)) {
break;
}
i++;
if (i > 1000000) {
break;
}
}
return codeString;
}
Linux rz/sz命令:
rz:将本地上传文件到服务器
sz:发送文件到本地
导入sql文件数据:
source /tmp/database.sql;
long型整数转换为int时要注意溢出问题
确认删除操作:
onclick="return confirm('确认删除?')"
直接访问:(项目名+资源名)(非WEB-INF目录下)
http://localhost:8080/bread/user.html
生成兑换码:
com.goal.war.core.tool.CreateAwardTicket
兑换:
com.goal.war.gift.command.GiftBagCommandHandler
需求:
道具信息表-简体用 id=50005 对应 exchangeCodeInfo.xml itemId
更新exchangeCodeInfo.xml
ErrorCode.java变更对应languageInfo.xml配置表
xml itemLibInfo.xml itemInfo.xml descriptionInfo.xml exchangeCodeInfo.xml
xml配置文件:
Object[] requestParams = (Object[]) params.getData();
String roleName = String.valueOf(requestParams[0]);
String bindFriendInviteCode = String.valueOf(requestParams[1]);
异常:参考博文
eclipse使用debug模式启动不起来:
原因:有些未清除的断点可能导致需要加载某个服务时无法通过,从而导致JBoss无法启动,从而debug模式启动不起来
解决办法:清除掉某些断点或全部断点
eclipse清除所有断点:run-->remove all breakpoints
对象排序:
Collections.sort(rankVOs, new Comparator<StarWarRankVO>() {
@Override
public int compare(StarWarRankVO o1, StarWarRankVO o2) {
// return o1.getEloPoint().compareTo(o2.getEloPoint());
Integer count1 = o1.getWarCount();
Integer count2 = o2.getWarCount();
return count1.compareTo(count2);
}
});
Long转为Integer:
先转为String再转为Integer:int aInt = Integer.valueOf(String.valueOf(aLong));
单例模式:
/**
* 懒汉式单例模式-线程安全
* @author Administrator
*
*/
class SingletonLazy{
private SingletonLazy(){
}
private static SingletonLazy instance = null;
// public static synchronized SingletonLazy getInstance(){
// if(instance == null){
// instance = new SingletonLazy();
// }
// return instance;
// }
public static SingletonLazy getInstance(){
if(instance == null){
synchronized (SingletonLazy.class) {
instance = new SingletonLazy();
}
instance = new SingletonLazy();
}
return instance;
}
}
/**
* 饿汉式单例模式-天生就是线程安全的
* @author Administrator
*
*/
class SingletonHungry{
private SingletonHungry(){
}
private static final SingletonHungry instance = new SingletonHungry();
public static SingletonHungry getInstance(){
return instance;
}
}
U盘复制文件不能超过4G:
原因:U盘格式为FAT32,如果为NTFS则没问题
解决办法:先将U盘文件备份,然后格式化U盘,选择NTFS格式,即可复制超过4G文件
.xml 和 .properties配置文件读取方法//TODO
将所有的换行符替换为空格,如\r,\n等:
return str.replaceAll("[\r\n|\n|\r]", " ").trim();
响应数据:
params.getResponse().addParam(datas.toArray());
推送消息到客户端:
void com.goal.war.core.net.message.MessageDispatcher.pushToClient(int responseCommandId, Object data, Long roleId)
客户端参数:
RoleBean roleBean = params.getRoleBean();
String string = params.getData().toString();
匿名内部类:获取符合条件的xml数据
IBeanFilter<ExchangeCodeXML> iBeanFilter = new IBeanFilter<ExchangeCodeXML>() {
@Override
public boolean accept(ExchangeCodeXML t) {
if (t.getLibId().equals(libId)) {
return true;
}
return false;
}
};
根据某个字段来查询:
<ExchangeCodeXML> List<ExchangeCodeXML> com.goal.war.data.XMLDataCache.find(Class<ExchangeCodeXML> clazz, IBeanFilter<ExchangeCodeXML> beanFilter)
排序:
Collections.sort(list, new Comparator<FundXML>() {
@Override
public int compare(FundXML o1, FundXML o2) {
return o1.getId().compareTo(o2.getId());
}
});
//发放奖励
WARE.addToRole()
//扣除道具
WARE.delFromRole()
Map<Integer, Integer> mapGet = StringUtil.fromJson(hasGet, new TypeToken<Map<Integer, Integer>>(){}.getType());
工具类:
org.apache.commons.io.FileUtils
public static String readFileToString(File file, Charset encoding)将文件内容读取为字符串
/**
* 将所有的换行符替换为空格,如\r,\n等
*
* @return 替换后的字符串
*/
public static String removeNewLineChar(String str) {
return str.replaceAll("[\\r\\n|\\n|\\r]", " ").trim();
}