随笔-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封号

注:


    ${ipList}
    移除

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);
    
    

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() {
        @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 iBeanFilter = new IBeanFilter() {
        @Override
        public boolean accept(ExchangeCodeXML t) {
            if (t.getLibId().equals(libId)) {
                return true;
            }
            return false;
        }
    };

根据某个字段来查询:

List com.goal.war.data.XMLDataCache.find(Class clazz, IBeanFilter beanFilter)

排序:

        Collections.sort(list, new Comparator() {
            @Override
            public int compare(FundXML o1, FundXML o2) {
                return o1.getId().compareTo(o2.getId());
            }
        });
//发放奖励
    WARE.addToRole()
//扣除道具
    WARE.delFromRole()

Map mapGet = StringUtil.fromJson(hasGet, new TypeToken>(){}.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();
    }

你可能感兴趣的:(随笔-2(实习))