【JAVA基础】JAVA开发注意事项(持续更新)

注意事项

1.如果想要创建一个空的List,并且这个List不会再被添加元素(响应结果返回空数组),可以使用Collections.EMPTY_LIST。

​ 原因:(1)为了防止new出来的ArrayList和LinkedList因为初始容量而导致空间浪费.

​ (2)如果返回值为null,前端还要进行一个null的判断。如果返回一个空数组的话,可以只用一个for循环迭代元素。

2.在网络请求当中涉及到url字符串/参数拼接或者get请求中存在中文参数的情况,需要对拼接的参数进行编码处理。

发送请求时使用URLEncoder,接受请求时使用URLDecoder。

String testString = "abcdefghijk";
        try
        {
            String encoderString = URLEncoder.encode(testString, "utf-8");
            System.out.println(encoderString);
            String decodedString = URLDecoder.decode(encoderString, "utf-8");
            System.out.println(decodedString);
        } catch (UnsupportedEncodingException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

输出:
abcdefghijk%E6%BD%98%E5%AD%A6%E5%86%9B
abcdefghijk
for (int i = 0; i < multipleSelectionParam.size(); i++) {
                if (i == 0) {
                    urlBuilder.append("?" + multipleSelectionParam.get(i).get("key").toString() + "=" + URLEncoder.encode(multipleSelectionParam.get(i).get("value").toString(),"UTF-8"));
                } else {
                    urlBuilder.append("&" + multipleSelectionParam.get(i).get("key").toString() + "=" + URLEncoder.encode(multipleSelectionParam.get(i).get("value").toString(),"UTF-8"));
                }
            }

3.Integer.ValueOf主要作用是将给定的字符串或基本数据类型转换成一个 Integer 对象。

​ 在已存在有转换目标的情况下,推荐使用VauleOf而不是new Integer,因为前者会更好的利用缓存。

​ 基本数据类型没有toString方法,所以基本数据类型转String时使用String.ValueOf()方法。

4uuid为128位二进制,通常是由36个字符,其中4个-

​ 雪花id是一个64位Long

img

第 1 位: 符号位,暂时不用。

第 2~42 位: 共41位,时间戳,单位是毫秒,可以支撑大约69年

第 43~52 位: 共10位,机器ID,最多可容纳1024台机器

第 53~64 位: 共12位,序列号,是自增值,表示同一毫秒内产生的ID,单台机器每毫秒最多可生成4096个订单ID

接入非常简单,不需要搭建服务集群,。代码逻辑非常简单,,同一毫秒内,订单ID的序列号自增。同步锁只作用于本机,机器之间互不影响,每毫秒可以生成四百万个订单ID,非常强悍。

生成规则不是固定的,可以根据自身的业务需求调整。如果你不需要那么大的并发量,可以把机器标识位拆出一部分,当作业务标识位,标识是哪个业务线生成的订单ID。

5.在Spring的IOC容器当中,id和name属性都可以在XML元数据中唯一标识某个Bean实例。通常情况下,id用于定义Bean实例的名称(beanName),而name用于定义Bean实例的别名(aliases)。一个Bean实例可以有多个别名,在name属性中用半角逗号或分号分隔各个别名即可

5.在使用MyBatis时,在xml中写mapper遇到的特殊情况:
(1)在xml中,<和&是非法的,省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯。

在这里插入图片描述

(2)也可以使用两外一种方式进行替换-----------‘<![CDATA[]]>’

  • 大于等于 <![CDATA[ >= ]]>

  • 小于等于 <![CDATA[ <= ]]>

  • 不等于a <![CDATA[ <> ]]>

    大于等于 <![CDATA[ >= ]]>  
    小于等于 <![CDATA[ <= ]]> 
    不等于<![CDATA[ <> ]]>
     
    mapper文件写法: 
    select t.* form tablenme t where t.code <![CDATA[<>]]> 1
    

6.Mysql中事务的隔离级别相关:(readView只在读操作时才会进行判断,但是更新操作时不会进行判断只会进行修改,这就是为什么可重复读隔离级别并不都能完全解决幻读问题的关键)
读已提交和可重复读隔离级别的差异在于:

读已提交会在每次查询时重新生成readview

可重复读在开始事务时创建readview并且在事务之后的操作中都会一直复用。

不懂得看这里(https://www.xiaolincoding.com/mysql/transaction/mvcc.html#%E4%BA%8B%E5%8A%A1%E6%9C%89%E5%93%AA%E4%BA%9B%E7%89%B9%E6%80%A7)写的太TM好了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卑微的小红猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值