日积月累、沉淀自己

1、实体类中时间类型LocalDateTime,查询的时候Mybatis报错
解决:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.21</version>
</dependency>

​ 将数据库连接池Druid设置为1.1.21版本及以上

2、MybatisPlus忽略实体类中的非数据库字段,JPA忽略实体类中的非数据库字段、Hibernate忽略实体类中的非数据库字段

​ 解决:

Mybatis Plus忽略映射字段时可以在实体类属性上使用以下注解:

    @TableFiled(exist = false):表示该属性不为数据库表字段,但又是必须使用的
    @TableFiled(exist = true):表示该属性为数据库表字段。

    在实体类的属性上面加上这个注解后,此字段就不会映射数据库了
    @TableFiled(exist = false)
    private Position position

Spring data jpa 或 Hibernate//数据库不存在的这个字段
    @Transient
    private String test;

3、寒哥的日志

​ trace ID + P6SPY

4、@Autowired和@Resource之间的区别

@Autowired 可用于:构造函数、成员变量、Setter方法
@Autowired@Resource之间的区别

@Autowired默认是按照类型装配注入的,默认情况下它要求依赖对象必须存在(可以设置它required属性为false)。

@Resource默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入。

5、windows版nginx重启命令

nginx -s reload

6、搞一个属于自己的代码生成器

7、JSR303 数据校验

8、@EqualsAndHashCode

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

/**
 * @title: HashCodeTest
 * @Author MeiYang
 * @Date: 2022/12/23 14:53
 * @Version 1.0
 */
public class HashCodeTest {
    public static void main(String[] args) {
        Cat cat1 = new Cat("黑色", "鲁鲁", 2);
        Cat cat2 = new Cat("白色", "鲁鲁", 2);

        System.out.println(cat1.equals(cat2)); //true  callSuper = false
        System.out.println(cat1.equals(cat2)); //false callSuper = true
    }
}
@Data
@NoArgsConstructor
@AllArgsConstructor
class Animal {
    private String color;
}

@Data
@EqualsAndHashCode(callSuper = false) //排除父类字段
class Cat extends Animal {
    //@EqualsAndHashCode(callSuper = true) //不排除父类字段
    private String name;
    private Integer age;

    public Cat(String color, String name, Integer age) {
        super(color);
        this.name = name;
        this.age = age;
    }
}

9、事务回滚

​ @Transactional(rollbackFor = Exception.class)

序列化的最主要目的就是传递和保存对象,保存对象的完整性和可传递性

在Java中,为什么不允许从静态方法中访问非静态变量

​ 1、静态变量属于类本身,在类加载的时候就会分配内存,可以通过类名直接访问。

​ 2、非静态变量属于类的对象,只有在类的对象产生时,才会分配内存,通过类的实例去访问。

​ 3、静态方法也属于类本身,但是此时没有类的实例,内存中没有非静态变量,所以无法调用。

在Java中,什么时候用重载,什么时候用重写?

​ 1、重载是多态的集中体现,在类中,要以统一的方式处理不同类型数据的时候用重载。

​ 2、重写的使用是建立在继承关系上的,子类在继承父类的基础上,增加新的功能,可以用重写。

​ 3、简单总结:

​ 重载是多样性,重写是增强剂。

​ 目的是提高程序的多样性和健壮性,以适配不同场景使用时,使用重载进行扩展。

​ 目的是在不修改原方法及源代码的基础上对方法进行扩展或增强时,使用重写。

​ 你想吃一碗面,我给你提供了拉面,炒面,刀削面,担担面供你选择,这是重载。

​ 你想吃一碗面,我不但给你端来了面,还给你加了青菜,加了鸡蛋,这个是重写。

HashMap和Hashtable有什么区别?

​ 1、HashMap是线程不安全的,HashTable是线程安全的

​ 2、HashMap中允许键和值为null,HashTable不允许

​ 3、HashMap的默认容器是16,为2倍扩容,HashTable默认是11,为2倍+1扩容

队列和栈是什么?有什么区别?

​ 1、队列先进先出,栈先进后出

​ 2、遍历数据速度不同

​ 栈只能从头部取数据,也就最先放入的需要遍历整个栈最后才能取出来,而且在遍历数据的时候还得为数据开辟临时空间,保持数据在遍历前的一致性。

​ 队列则不同,他基于地址指针进行遍历,而且可以从头或尾部开始遍历,但不能同时遍历,无需开辟临时空间,因为在遍历的过程中不影响数据结构,速度要快得多。

docker运行项目的基础命令

nohup java -jar XXX.jar &       运行项目
ps -aux | grep jee项目名
docker ps 
docker ps -a
docker images
docker load < xx.tar
docker start xxx
docker restart xxx

nginx -s reload

Windows环境下Redis启动命令

​ redis-server redis.windows.conf

SVN上传格式

​ versionID-timestamp:description

fmjob-lot-config-1.0.1-SNAPSHOT-202301101117: 
1.删除Controller

获取当前数据库版本

//MySQL, mysql -v
select version();
//Oracle
select * from v$version();

连接不同的数据库

  datasource:
    dynamic:
      #设置默认的数据源或者数据源组,默认值即为master
      primary: master
      #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
      strict: false
      datasource:
      	master111:
          url: jdbc:p6spy:oracle:thin:@10.217.1.88:1521:orcl
          username: FMCODE_YUN
          password: 123456
          driver-class-name: com.p6spy.engine.spy.P6SpyDriver
        master:
          type: com.alibaba.druid.pool.DruidDataSource
          username: "root"
          password: "root"
          url: jdbc:p6spy:mysql://10.217.1.88:3306/hcms_db?characterEncoding=utf-8&useSSL=false&allowMultiQueries=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Chongqing
          driver-class-name: com.p6spy.engine.spy.P6SpyDriver
        slave_1:
          type: com.alibaba.druid.pool.DruidDataSource
          url: jdbc:p6spy:mysql://10.217.1.88:3306/wms_db?characterEncoding=utf-8&useSSL=false&allowMultiQueries=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Chongqing
          username: root
          password: root
          driver-class-name: com.p6spy.engine.spy.P6SpyDriver
//搭配使用
@Mapper
@DS("master")
public interface UserMapper extends BaseMapper<User> {
}

大肥猫整理

lambda.like(StringUtils.hasText(sysOrgVO.getName()) SysOrg::getName sysOrgVO.getName());

//后端取多个值的时候拼接
    @PostMapping("/roleConfirm/{pId}/{personId}")
    @ResponseBody
    @ApiOperation("用户确认绑定角色")
    public Result roleConfirm (@PathVariable Integer pId
 @PathVariable Integer personId){
        
        
请求头参数拼接是 /{personId}/{userId} 后端接收参数使用的是 @PathVariable
@PathVariable 是从 GetMapping/PostMapping/等这些里面 取拼接的参数

请求头参数拼接是 ?personId = 2 & userId = 3 后端接收参数使用的是 @RequestParam
@RequestParam 是要传给我的参数
    
    
 StringNotBlank  其余全部是NotNull
    
 

​ 创建实体类的时候,要加上 @EqualsAndHashCode(callSuper = true)

​ 对两张表进行的修改或删除或添加操作,要在IMPl中加上事务注解 @Transactional(rollbackFor = Exception.class)

事务四大特征(ACID)
原子性(A):要么都成功,要么都失败
一致性©:事务前后的数据完整性要保证一致,开始1000块钱,后面转账结束了,也得是1000块钱
隔离性(I):事务A和事务B之间具有隔离性
持久性(D):是事务的保证,事务终结的标志(内存的数据持久到硬盘文件中)

这个链接讲解的各个消息队列不错
https://baijiahao.baidu.com/s?id=1708982953211904704&wfr=spider&for=pc

Java八种基本数据类型总结

序号数据类型大小/字节封装类默认值可表示数据范围
1byte1Byte0-128~127
2short2Short0-32768~32767
3int4Integer0-2147483648~2147483647
4long8Long0
5float(单精度)4Float0.0
6double(双精度)8Double0.0
7char2Char
8boolean1Booleanfalsetrue或false

包装类的默认值都为:null

== 是判断两个人是不是住同一个地址

equals是判断同一个地址里住的人是不是同一个

包装类型间的判断应该用equals而不是 ==

redis的五大类型 set zset String hash list

Redis
RDB:把当前数据生成快照保存在硬盘上
AOF:记录每次对数据的操作到硬盘上

SpringBoot读取配置文件
@value 不推荐这种方式
@configurationproperties 读取并与bean绑定
@propertySource

新建 就绪 运行 阻塞 消亡

核心线程数 最大线程数   存活时间 时间单位 队列 线程工厂 拒绝策略
 
悲观锁:synchronized 和 lock为代表,一个线程拿到锁执行任务,
    其他线程原地等待,等他执行完再去抢,过程就是从运行到阻塞,
    再从阻塞到唤醒,涉及上下文切换,影响性能,

乐观锁:AtomicInteger 如果一个线程拿到锁,那么其他线程不会停歇的去
    获取,知道成功。 线程一直运行,不需要阻塞,不涉及上下文切换
        需要多核CPU支持。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值