每日总结Day6(不知道能坚持多久)


12.4

力扣9:20-11:50

1038. 从二叉搜索树到更大和树中等


  1. 反中序秒了
class Solution {
int sum = 0;
public TreeNode bstToGst(TreeNode root) {
if (root == null) return null;
bstToGst(root.right);
sum += root.val;
root.val = sum;
bstToGst(root.left);
return root;
}
}



× 718. 最长重复子数组 中等


  1. 没想到用二维的dp
class Solution {
public int findLength(int[] nums1, int[] nums2) {
//dp[i][j] :以nums1[i - 1]为结尾的A,和以nums2[i - 1]为结尾的B
//的最长重复子数组长度为dp[i][j]
int n = nums1.length;
int m = nums2.length;
int[][] dp = new int[n + 1][m + 1];
int res = 0;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (nums1[i - 1] == nums2[j - 1]) {
dp[i][j] = dp[i - 1][j - 1] + 1;
if (dp[i][j] > res) res = dp[i][j];
}
}
}
return res;
}
}



1143. 最长公共子序列 中等


  1. 比上一道多一个对不相等的dpij进行一个赋值
  2. text[i-1] 和text[j-1]要是不相等的话,是对dp[i-i] [j] dp[i] [j-1]进行一个取最大的操作
class Solution {
public int longestCommonSubsequence(String text1, String text2) {
int[][] dp = new int[text1.length() + 1][text2.length() + 1];
for (int i = 1; i <= text1.length(); i++) {
for (int j = 1; j <= text2.length(); j++) {
if (text1.charAt(i - 1) == text2.charAt(j - 1)) {
dp[i][j] = dp[i - 1][j - 1] + 1;
} else {
dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
}
}
}
return dp[text1.length()][text2.length()];
}
}


× 1035. 不相交的线 中等


  1. 上一道套了个壳子,没看出来



53. 最大子数组和中等


  1. 一维的dp 也可以 用贪心的思想




聚合搜索学习3:00-6:30




面试题7:40-8:10

数据库事务和其ACID特性


  1. 数据库事务:数据库的一系列操作操作序列,这些操作序列作为一个不可分割的最小执行单元,要么全部成功执行,要么全部不执行,即:如果有一个操作未执行成功,那么所有以前执行的操作也全部回滚
  2. ACID
  3. 原子性(A):事务作为最小执行单元,不可分割,作为一个原子操作,要么全部执行,要么全部回滚。
  4. 一致性(C):⼀致性是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。这是说数据库 事务不能破坏关系数据的完整性以及业务逻辑上的⼀致性。
  5. 简单来说:数据库的一致性就是数据库的数据都是正确,事务的一致性,就是事务执行前后数据库中的数据都是正确的没有错误,如果发送错误会回滚到执行事务之前的状态。
  6. 隔离性:事务与事务之间的执行是相互隔离的,互不影响
  7. 持久性:事务执行成功之后,会更改数据库,不会回滚,即:永久地修改了,即便系统出现故障也无法更改
  8. 隔离级别
  9. 读未提交:解决了更新丢失,但还是可能会出现脏读
  10. 读已提交:解决了更新丢失和脏读问题
  11. 可重复读取:解决了更新丢失、脏读、不可重复读、但是还会出现幻
  12. 可序化:解决了更新丢失、脏读、不可重复读、幻读(虚读
  13. 脏读、幻读、可重复读
  14. 脏读:一个事务读取另外一个事务还没有提交的数据。
  15. 幻读(读少了):指在一个事务内两次读取同一条件的数据,两次读取的数据总量不同。
  16. 不可重复读(读错了):指在一个事务内,多次读同一条件的数据,数据总量相同但数据的内容发生了改变。


设计模式8:10-9:40

工厂方法模式


  1. 目新的需求:客户在点披萨时,可以点不同口味的披萨,比如 北京的奶酪 pizza、北京的胡椒 pizza 或 者是伦敦的奶酪 pizza、伦敦的胡椒 pizza
  2. 工厂方法模式解决:使用简单工厂模式,创建不同的简单工厂类,比如 BJPizzaSimpleFactory、LDPizzaSimpleFactory 等等.从当前 这个案例来说,也是可以的,但是考虑到项目的规模,以及软件的可维护性、可扩展性并不是特别好
  3. 工厂方法模式定义:定义了一个创建对象的抽象方法,将创建对象的具体过程下沉给子类,由子类决定要实例化的类。工厂方法模式将对象的实例 化推迟到子类
  4. 工厂方法模式实现:将披萨项目的实例化功能抽象成抽象方法,在不同的口味点餐子类中具体实现
public abstract class OrderPizza {
//定义一个抽象方法,createPizza , 让各个工厂子类自己实现
abstract Pizza createPizza(String orderType);
// 构造器
public OrderPizza() {
Pizza pizza = null;
String orderType; // 订购披萨的类型
do {
orderType = getType();
pizza = createPizza(orderType); //抽象方法,由工厂子类完成
//输出 pizza 制作过程
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();
} while (true);
}
}
  1. 类图




抽象工厂模式


  1. 抽象工厂模式:定义了一个 interface 用于创建相关或有依赖关系的对象簇,而无需指明具体的类
  2. .抽象工厂模式可以将简单工厂模式和工厂方法模式进行整合。
  3. 从设计层面看,抽象工厂模式就是对简单工厂模式的改进(或者称为进一步的抽象)。
  4. 将工厂抽象成两层,AbsFactory(抽象工厂) 和 具体实现的工厂子类。程序员可以根据创建对象类型使用对应 的工厂子类。这样将单个的简单工厂类变成了工厂簇,更利于代码的维护和扩展


类图



锻炼10:00-11:10


  1. 跑步4km 6:30配速
  2. 俯卧撑30*4
  3. 仰卧起坐20*1
  4. 引体向上6*2



每日总结


昨天晚上睡觉没睡好,半夜被呼噜打醒了,一天的状态都不是很好,今天早点休息。

昨天的计划都差不多完成了,多开了一个项目来做,希望今晚能休息好,明天得多学一点,今天进度有点不太行,主要还是状态不好,开困了,而且有点容易走神呜呜。

锻炼之后身体真的能给你反馈,现在一天做一百个俯卧撑第二天都没有什么压力了,还是得多锻炼呀,3月份开始锻炼以来,身体真的进步很多,所以大伙还是得多锻炼奥,然后最近开始做做仰卧起坐,肚子上肉太多了,先做一段时间再说哈哈

还有那个头戴耳机真的今天带着破防了有点,可能我头太大的原因,呆久了有点难受,买了个有线的明天就好了


明日计划

  1. 力扣
  2. 设计模式(至少学两种)
  3. 聚合搜索学习
  4. 面试题*1 ||2 看情况
  5. 锻炼


0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
EWAN
下载 APP