Other

LeetCode 1905. Count Sub Islands

原题链接在这里:https://leetcode.com/problems/count-sub-islands/ 题目: You are given two m x n binary matrices grid1 and grid2 containing only 0's (representing water) and 1's (representing land). An island is a group of 1's connected 4-directionally (horizontal or vertical). Any cells outside of the grid are considered water cells. An island in grid2 is considered a sub-island if there is an island in grid1 that contains all the cells that make up this island in grid2.

LeetCode 0113 Path Sum II

原题传送门 1. 题目描述 2. Solution 1、思路分析 先序遍历(根、左、右)。 2、代码实现 package Q0199.Q0113PathSumII; import DataStructure.TreeNode; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; /* a typical backtracking problem. */ public class Solution { public List<List<Integer>> pathSum(TreeNode root, int targetSum) { List<List<Integer>> paths = new ArrayList<>(); List<Integer> path = new LinkedList<>(); findPaths(root, targetSum, path, paths); return paths; } private void findPaths(TreeNode root, int targetSum, List<Integer> path, List<List<Integer>> paths) { if (root == null) return; path.add(root.val); if (root.

单例实现汇总

1. 启动时加载 1.1 - static new 1.2 - static class new2. 延迟加载 2.1 - synchronized 2.2 - 双重锁检查 + volatile 2.3 - Java9中引入AtomicReference3. 枚举实现 public class SingletonDemo { //1. 启动时加载 // 1.1 - static new // 1.2 - static class new //2. 延迟加载 // 2.1 - synchronized // 2.2 - 双重锁检查 + volatile // 2.3 - Java9中引入AtomicReference //3. 枚举实现 public static void main(String[] args) { System.out.println(SingletonV11.getInstance() == SingletonV11.getInstance()); System.out.println(SingletonV12.getInstance() == SingletonV12.

动态代理

前言 23种设计模式中有一种叫代理模式。 Spring的核心=IOC+AOP IOC的底层工厂解耦合 AOP的底层使用的就是动态代理  动态代理 代码模拟动态代理 目标对象(明星): 原始对象 代理对象(明星的经纪人):帮助原始对象的对象,一般用于在不改变原始对象的前提下,在原始对象的基础上增加新的功能。  

0516 教材与步骤及进度

关于英语学习的近期总结 1.教材 教材,我认为以会议内容为主;不管是内容,词汇,表达,都是以实战为主. 这种内容最贴近你的要求. 关于知心英语,其实,也不错,但是,可以稍微晚一点. 二.步骤 收集文档---->文章分析---->单词学习----->听力学习----->中转英的表达学习 学习的目的,就是要完全学会里面的所有单词. 同时,通过慢速听力,把里面的句子完全听懂. 其次,通过翻译,你转化完中文;你要把句式转化为你的表达方式.. 三.进度 整个5月,前半个月,基本上完成了3篇文章的学习. 一方面,的确是基础太差,需要积累的东西太多. 另外一方面,你要提高学习时的专注力. 下一次计划.. 本月,你至少应该再完成4篇文章. 两个会议,一个专业立崎,一个专业TI文章.

21201634-赵修培

一.前言 本学期开始接触java到现在已经有10周时间,在这十周之间里,我已经学习了很多关于面向对象的知识,做了老师布置给我的习题,其中包括Pta图形类设计的题目,链表功能的实现,期中考试题目,以及课后自学内容。 二.学习总结 1.作业总结 1.PTA图形设计7-1---7-4 (1)7-1 代码: import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; import static java.lang.Math.sqrt; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String line = scanner.nextLine().trim(); double[] mainDouble; double sum; if(!Tf(line)){ System.out.println(Wrong Format); } else { if(!points(line)){ System.out.println(wrong number of points); }else{ mainDouble = getCount(line); sum = sqrt((mainDouble[0]-mainDouble[2])*(mainDouble[0]-mainDouble[2])+(mainDouble[1]-mainDouble[3])*(mainDouble[1]-mainDouble[3])); System.out.println(sum); } } } public static boolean Tf(String line){ String Str=([\\+|-]?([0]|([1-9]((\\d)?)+))(\\.\\d+)?\\,([+\\-]?([0]|([1-9]((\\d)?)+)))(\\.\\d+)?(\\s([+\\-]?([0]|([1-9]((\\d)?)+)))(\\.\\d+)?\\,([+\\-]?([0]|([1-9]((\\d)?)+)))(\\.\\d+)?)+); return line.

页面中 URL

JavaWeb基本格式; Controller 页面 + 请求域 > 浏览器页面 URL > Controller 页面 + 请求域 > 浏览器页面 ...........  当前页面从服务器返回到浏览器时经过的Controller  根据光标位置找到页面发向后台的Controller请求 Controller ---> 页面 (URL)---> Controller ---> 页面 Referer : 第一次页面发送的URL 

shell脚本学习总结

简介 本文会全面介绍shell脚本的基础知识。 脚本格式 要把shell命令放到一个“脚本”当中,有一个要求:脚本的第一行必须写成类似这样的格式: #!/bin/bash bash是一个shell解释器,用来解释shell命令。 我们先来写一个最简单的shell脚本,文件命名为1.sh: #!/bin/bash echo hello! 如果我们的系统使用的是其他的解释器,就要将/bin/bash修改成相应的名字。 注意:脚本文件默认是没有执行权限的,想执行这个脚本必须给它添加权限: zzc@zzc-virtual-machine:~/share/example$ ./1.sh -bash: ./1.sh: 权限不够 zzc@zzc-virtual-machine:~/share/example$ chmod +x 1.sh zzc@zzc-virtual-machine:~/share/example$ ./1.sh hello! 变量 shell脚本语言是一种弱类型语言,在脚本当中使用变量不需要也无法指定变量的“类型”。 默认状态下,shell脚本的变量都是字符串,即一连串的单词列表。 (1)变量的定义和赋值 myname=hello kitty 注意:赋值号两边没有空格;在shell脚本中,任何时候给变量赋值,赋值号两边一定不能有空格。 另外,变量名也有类似于C语言那样的规定:只能包含英文字母和数字,且不能以数字开头。 (2)变量的引用 在变量前面加上一个美元符号,表示对变量进行引用: $myname zzc@zzc-virtual-machine:~/share/example$ myname=hello kitty zzc@zzc-virtual-machine:~/share/example$ echo $myname hello kitty (3)变量的种类 shell脚本中有如下几种变量。 普通的用户自定义变量,如上面的myname 系统预定义好的环境变量,如PATH 命令行变量,如 $#、$*。 如何查看系统的环境变量? 可以输入以下命令: zzc@zzc-virtual-machine:~/share/example$ env SHELL=/bin/bash WINDOWID=8388615 QT_ACCESSIBILITY=1 COLORTERM=truecolor XDG_CONFIG_DIRS=/etc/xdg/xdg-ukui:/etc/xdg XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0 GTK_IM_MODULE=fcitx LANGUAGE=zh_CN:en_US:en QT_AUTO_SCRENN_SET_FACTOR=0 ...... 如何设置环境变量? 以PATH为例,如果想要将其修改为dir/,可以这么做:

存储器管理——覆盖与交换

覆盖技术:将程序分为多个段(多个模块)。常用的段常驻内存,不常用的段在需要时调入内存。内存中分为一个“固定区”和若干个“覆盖区”。需要常驻内存的段放在“固定区”中,调入后就不再调出(除非运行结束)。不常用的段放在“覆盖区”,需要用到时调入内存,用不到时调出内存。 不可同时被访问的程序段共享同一个覆盖区 必须由程序员声明覆盖结构,操作系统完成自动覆盖。 缺点:对用户不透明,增加了用户编程负担。 覆盖技术只用于早期的操作系统中,现在己成为历史。 交换技术:内存空间紧张时,系统将内存中某些进程暂时换出外存,把外存中某些己具备运行条件的进程换入内存(进程在内存与磁盘间动态调度)暂时换出外存等待的进程状态为挂起状态,挂起态又可以进一步细分为就绪挂起、阻塞挂起两种状态 1.应该在外存(磁盘)的什么位置保存被换出的进程? 2.什么时候应该交换? 3.应该换出哪些进程? 1.具有对换功能的操作系统中,通常把磁盘空间分为文件区和对换区两部分。文件区主要用于存放文件,主要追求存储空间的利用率,因此对文件区空间的管理采用离散分配方式;对换区空间只占磁盘空间的小部分,被换出的进程数据就存放在对换区。由于对换的速度直接影响到系统的整体速度,因此对换区空间的管理主要追求换入换出速度,因此通常对换区采用连续分配方式(学过文件管理章节后即可理解)。总之,对换区的IO速度比文件区的更快。 2.交换通常在许多进程运行且内存吃紧时进行,而系统负荷降低就暂停。例如:在发现许多进程运行时经常发生缺页,就说明内存紧张,此时可以换出一些进程;如果缺页率明显下降,就可以暂停换出。 3.可优先换出阻塞进程;可换出优先级低的进程;为了防止优先级低的进程在被调入内存后很快又被换出,有的系统还会考虑进程在内存的驻留时可 (注意:PCB会常驻内存,不会被换出外存) 覆盖与交挨的区别:覆盖是在同一个程序或进程中的,交换是在不同进程(或作业)之间的

LeetCode 98 Validate Binary Search Tree DFS

Given the root of a binary tree, determine if it is a valid binary search tree (BST). A valid BST is defined as follows: The left subtree of a node contains only nodes with keys less than the node's key. The right subtree of a node contains only nodes with keys greater than the node's key. Both the left and right subtrees must also be binary search trees. Solution \(BST\) 满足对于中序遍历,得到的节点值为递增序列。所以先中序遍历以后,检查序列是否严格递增即可: