ARTS挑战第十一周

1.Algorithm

1.1 回文数

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:
你能不将整数转为字符串来解决这个问题吗?

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

1.1.1 第一种 String.charAt()

将数字转为字符串,
方便使用String.charAt(i)方法获取字符串的首位和末位进行比较

class Solution {
    public boolean isPalindrome(int x) {
        if(x < 0 || (x % 10 == 0 && x != 0)) {
            return false;
        }
        String str = String.valueOf(x);
        int j = 0;
        int i = str.length() - 1;
        while(i >= str.length() / 2) {
            if(str.charAt(i) != str.charAt(j))
                return false;
            i--;
            j++;
        }
        return true;
    }
}

1.1.2 第二种 StringBuilder.reverse()

直接使用StringBuilder.reverse()方法
String是不可变的,所以没有该方法
该方法的实现是将首尾元素调换即可

class Solution {
    public boolean isPalindrome(int x) {
        if(x < 0 || (x % 10 ==0 && x != 0)) return false;
        StringBuffer str = new StringBuffer(String.valueOf(x));
        return str.reverse().toString().equals(String.valueOf(x));
    }
}

1.1.3 第三种 直接求数字的首尾值

和第一种方案思路一样哎

class Solution {
    public static boolean isPalindrome(int x) {
        if (x < 0 || (x % 10 == 0 && x != 0)) {
            return false;
        }

        int temp = 1;
        while (x / temp >= 10) {
            temp *= 10;
        }

        while (x > 0) {
            if (x / temp != x % 10) return false;
            x = x % temp /10;
            temp /= 100;
        }
        return true;
    }
}

121 100

1.1.4 第四种 反转length/2 到length-1之间的数(√)

使用数字左移反转数字:
newNum = newNum*10 + oleNum%/10
oldNum /= 10

如果是奇数121, x = 1; num = 12;
如果是偶数1221 x = 12; num = 12;

class Solution {
    public boolean isPalindrome(int x) {
        if(x < 0 || (x / 10 ==0 && x != 0)) {
            return false;
        }
		int num = 0;
		while(x > num) {
			num = num * 10 + x % 10;
			x /= 10;
		}
		return num == x || num == x/10;
    }
}

2.Review

MyBatis Generator
小段的概述性语句可以理解,大段的解释文字看着就头大。。。

3.Tip

3.1 log4net的配置

log4net不能自动删除过期日志

<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
  <!--如果Flie的值为目录,那么文件则是DatePattern的格式,否则只有这一个文件-->
  <param name="File" value="log//log.txt"/>
  <param name="DatePattern" value="'log-'yyyyMMdd'.txt'"/>
  
  <!-- 线程安全配置-->
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
  <!-- 追加-->
  <param name="AppendToFile" value="true" />
  
  <!--以下三个是同一组设置 设置Size模式;还有Date模式和混合模式-->
  <param name="RollingStyle" value="Size"/>
  <!-- 每天生成几个文件-->
  <param name="maxSizeRollBackups" value="1" />
  <!-- 每个文件大小-->
  <param name="maximumFileSize" value="20MB" />

  <param name="StaticLogFileName" value="false" />
  <Encoding value="UTF-8" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger  - %message%newline" />
  </layout>
</appender>

3.2 使用一个域名对应两个IP做负载均衡

session设置:

<sessionState 
	cookieless="UseCookies" 
	mode="StateServer" 
	stateConnectionString="tcpip=127.0.0.1:42424" 
	timeout="2880" />

在测试中,该设置方式生效,session确实存在很久;
但是在生产环境中session有时候存在时间很短
怀疑是过一段时间通过DNS解析域名时,IP地址指向了另一台服务器
将ip地址指向同一台服务器


参考session设置:

4.Share

4.1 mybatis逆向工程

参考:mybatis.generator官网
准备:jar包来源:maven仓库

  1. generator依赖包:mybatis-generator-core-1.3.7.jar
  2. mysql链接依赖包:
  3. 配置文件 generatorConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
	<!-- 数据库驱动jar地址 -->
  <classPathEntry location="mysql-connector-java-5.1.47.jar" />
	<!-- 数据库链接信息 -->
  <context id="DB2Tables" targetRuntime="MyBatis3">
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
        connectionURL="jdbc:mysql://ip:port/xuanshangling"
        userId="root"
        password="wangchunfan123">
    </jdbcConnection>

    <javaTypeResolver >
      <property name="forceBigDecimals" value="false" />
    </javaTypeResolver>

    <javaModelGenerator targetPackage="test.model" targetProject="../src">
      <property name="enableSubPackages" value="true" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>

    <sqlMapGenerator targetPackage="test.xml"  targetProject="../src">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>

    <javaClientGenerator type="XMLMAPPER" targetPackage="test.dao"  targetProject="../src">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>

    <table tableName= "users" domainObjectName="User" ></table>

  </context>
</generatorConfiguration>

在generator.jar目录下运行命令

 java -jar mybatis-generator-core-1.3.7.jar -configfile ..\generatorConfig.xml -overwrite

生成内容如下:
目录结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值