力扣6057. 统计值等于子树平均值的节点数
力扣周赛292–第二题
6057. 统计值等于子树平均值的节点数
题目
给你一棵二叉树的根节点 root ,找出并返回满足要求的节点数,要求节点的值等于其 子树 中值的 平均值 。
注意:
n 个元素的平均值可以由 n 个元素 求和 然后再除以 n ,并 向下舍入 到最近的整数。
root 的 子树 由 root 和它的所有后代组成。
示例 1:
输入:root = [4,8,5,0,1,null,6]
输出:5
解释:
对值为 4 的节点:子树的平均值 (4 + 8 + 5 + 0 + 1 + 6) / 6 = 24 / 6 = 4 。
对值为 5 的节点:子树的平均值 (5 + 6) / 2 = 11 / 2 = 5 。
对值为 0 的节点:子树的平均值 0 / 1 = 0 。
对值为 1 的节点:子树的平均值 1 / 1 = 1 。
对值为 6 的节点:子树的平均值 6 / 1 = 6 。
示例 2:
输入:root = [1]
输出:1
解释:对值为 1 的节点:子树的平均值 1 / ...
力扣2264. 字符串中最大的 3 位相同数字
力扣周赛292–第一题
2264. 字符串中最大的 3 位相同数字
题目
给你一个字符串 num ,表示一个大整数。如果一个整数满足下述所有条件,则认为该整数是一个 优质整数 :
该整数是 num 的一个长度为 3 的 子字符串 。
该整数由唯一一个数字重复 3 次组成。
以字符串形式返回 最大的优质整数 。如果不存在满足要求的整数,则返回一个空字符串 "" 。
注意:
子字符串 是字符串中的一个连续字符序列。
num 或优质整数中可能存在 前导零 。
示例 1:
输入:num = "6777133339"
输出:"777"
解释:num 中存在两个优质整数:"777" 和 "333" 。
"777" 是最大的那个,所以返回 "777" 。
示例 2:
输入:num = "2300019"
输出:"000"
解释:"000" 是唯一一个优质整数。
示例 3:
输入:num = "42352338"
输出:""
解释:不存在长度为 3 且仅由一个唯一数字组成的整数。因此,不存 ...
RKE方式安装k8s集群和Dashboard
前言
需要在电脑上安装好VirtualBox和Vagrant
构建3台虚拟机
1、编写Vagrantfile文件
内容如下:
Vagrant.configure("2") do |config|
config.vm.box_check_update = false
config.vm.provider 'virtualbox' do |vb|
vb.customize [ "guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 1000 ]
end
$num_instances = 3
# curl https://discovery.etcd.io/new?size=3
(1..$num_instances).each do |i|
...
PhpStorm自动上传修改的内容到服务器
前言
今天,在修改WordPress时,发现利用宝塔的在线编辑好麻烦,找到方法,确无法直接跳过去,于是乎,我把代码下载到本地了,本来想着利用编辑器来修改就可以跳转了,没想到呀,PhpStorm给了我一个大惊喜,原来它只要配置好久可以直接在本地修改,WordPress刷新就可以直接看到效果。
接下来,我就详细的说明一下配置的步骤
配置步骤
1、设置连接
打开File–>Setting
左侧Build,Execution,Deployment–>Deployment,然后右侧加号添加配置选择SFTP
弹出的窗口内输入配置的名称,可随意输入,方便记住就好
点击红框的位置添加ssh连接
在弹出的窗口点击 加号,右边配置
点击OK后,ssh会自动添加上,同时再把IP加入到下面的红框内
2、设置文件映射关系
点击mapping,将服务器上项目的根目录添加到Deployment Path中,如果点击OK
3、设置自动上传
在PhpStorm中依次点击Tool–>Deployment–>Options…
在弹出的窗口中,将红框下拉框设置成第二个,之后只要按Ctr ...
设计模式总结与对比(作业)
1、设计模式的初衷是什么?有哪些设计原则?
开闭原则
依赖倒置原则
单一职责原则
接口隔离原则
迪米特原则
里氏替换原则
合成复用原则
2、列举至少4种单例模式被破坏的场景并给出解决方案
多线程
解决办法:
改写DCL双重锁的写法
使用静态内部类的写法
指令重排
解决办法:加volite关键字
克隆
解决办法:在单例对象中重写clone()方法
反序列化
解决方案:反序列化的时候重新readResolve()方法,将返回值设置为单例对象
反射
解决方法:
在构造方法中检查单例对象,如果已构建则抛出异常
将单例的实现方式改为枚举式单例
3、一句话总结单例模式、原型模式、建造者模式、代理模式、策略模式和责任链模式
单例模式:世界上只有一个Tom
原型模式:拔一根猴毛,吹出千万个
建造者模式:高配中配与低配,相选哪配就哪配
代理模式:没有资源没有时间,得找媒婆来帮忙
策略模式:条条大路通北京,具体哪条你来定
责任链模式:各人自扫门前雪,莫管他人瓦上霜
建造者模式
定义
建造者模式是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
特征:用户只需指定需要建造的类型就可以获得对象,建造过程及细节不需要了解
属于创建型模式
设计中四个角色
产品(Product):要创建的产品类对象
建造者抽象(Builder):建造者的抽象类,规范产品对象的各个组成部分的构建,一般由子类实现具体的建造过程
建造者(ConcreBuilder):具体的Builder类,根据不同的业务逻辑,具体化对象的各个组成部分的创建
调用者(Director):调用具体的建造者,来创建对象的各个部分,在指导者中不涉及具体产品的信息,只负责保证对象各部分完整创建或按某种顺序创建
适用场景
相同的方法,不同的执行顺序,产生不同的结果时
多个部件或零件,都可以装配到一个对象中,但是产生的结果又不同时
产品类非常复杂,或者产品类中的调用顺序不同产生不同的作用
当初始化一个对象特别复杂,参数多,而且很多参数都具有默认值时
优点
封装性好,创建和使用分离
拓展性好,建造类之间独立、一定程度上解耦
缺点
产生多余的Builder对象
产品内部发生变化,建造者 ...
原型模式
定义
原型模式时指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象,属于创建型模式
应用场景
类初始化消耗资源较多
new产生的一个对象需要非常繁琐的过程(数据准备、访问权限等)
构造函数比较复杂
循环体中生成大量对象时
优点
性能优良,Java自带的原型模式是基于内存二进制流的拷贝,比直接new一个对象性能上提升了许多
可以使用深克隆方式保存对象的状态,使用原型模式将对象复制一份并将其状态保存起来,简化了创建过程
缺点
必须配备克隆(或者可拷贝)方法
当对已有类进行改造的时候,需要修改代码,违反了开闭原则。
深拷贝、浅拷贝需要运用得当
克隆破坏单例模式
如果我们克隆的目标对象是单例的对象,深克隆就会破坏单例。
解决办法:可以禁止深克隆。要么你的单例类不实现Cloneable接口;要么我们重写
clone()方法,在clone方法中返回单例对象即可
单例模式
定义
确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点
饿汉式单例
优点:执行效率高、性能高、没有融合的锁
缺点:某些情况下,可能会造成内存浪费
常规写法
public class HungrySingleton {
private static final HungrySingleton hungrySingleton = new HungrySingleton();
private HungrySingleton() {
}
public static HungrySingleton getInstance() {
return hungrySingleton;
}
}
利用静态代码块的写法
public class HungryStaticSingleton {
private static final HungryStaticSingleton hungrySingleton;
static {
...
docker-compose安装Redis
1、拉取镜像
执行下面的命令拉取redis的docker镜像
docker pull redis
2、编写docker-compose.yml文件
内容如下:
version: '3'
services:
redis:
restart: always
image: redis
container_name: redis
ports:
- 50020:6379
environment:
TZ: Asia/Shanghai
volumes:
- ./data:/data
- ./conf/redis.conf:/etc/redis.conf
privileged: true
3、创建目录文件
根据docker-compose.yml文件创建对应目录文件
pwd
mkdir data
mkdir conf
ll
4、编写Redis的配置文件
在conf目录下创建redis.conf文件,文件内容如 ...
docker-compose安装MySQL
docker中安装MySQL
本教程以MySQL5.7版本为例编写,如需其他版本,可自行前往docker hub网站查找对应的镜像,安装可能回和本教程有一定出入,清自行处理。
如遇问题也可以在评论中回复,本人会尽快给与回复
1、拉取镜像
docker pull mysql:5.7
2、编写docker-compose.yml文件
内容如下:
version: '3'
services:
mysql:
container_name: mysql
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=此处为root密码自行设置
- TZ=Asia/Shanghai
volumes:
- ./conf:/etc/mysql
- ./data:/var/lib/ ...
用docker-compose安装nginx
docker中安装nginx
1、查找nginx镜像
通过Docker Hub网站查询nginx镜像,选择下面的官方镜像
2、下载镜像
3.1页面点进去后在右上方有docker拉取命令
docker pull nginx
3、编写docker-compose.yml
docker-compose.yml内容如下:
version: '3'
services:
nginx:
container_name: nginx #生成的容器名
image: nginx:latest #镜像
environment:
- TZ=Asia/Shanghai #时间
volumes:
- ./html:/usr/share/nginx/html #nginx静态页位置
- ./conf/nginx.conf:/ ...
docker-compose安装
docker-compose安装
按照官方来即可,docker-compose安装文档
按照自己的系统来安装:
1、下载docker-compose
下面两个二选一,建议国内源,速度快
官方:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
国内源:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr ...
docker安装
安装docker
这部分基本就是按照docker官网的来,centos安装docker文档
1、卸载旧版本docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2、设置docker软件源
下面官网软件源和阿里软件源二选一,个人建议用阿里的,国内的速度快
官网软件源 :速度慢,可以考虑阿里的
yum install -y yum-utils
yum-config-manager \
--add-repo \
https://download.doc ...
力扣459:重复的子字符串
今天刷力扣发现一道有趣的题,这道题目很普通,但是解法确可以偷懒
原题链接:力扣459:重复的子字符串
题目
给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。
示例 1:
输入: s = "abab"
输出: true
解释: 可由子串 "ab" 重复两次构成。
示例 2:
输入: s = "aba"
输出: false
示例 3:
输入: s = "abcabcabcabc"
输出: true
解释: 可由子串 "abc" 重复四次构成。 (或子串 "abcabc" 重复两次构成。)
提示:
1 <= s.length <= 104
s 由小写英文字母组成
Related Topics字符串字符串匹配
个人解法
想法:既然要判断字符串是否由一个子串重复多次构成,那么如果结果是肯定的,这个字符串的长
度一定能够整除子串的长度。
所以我首先做一个循环,找到可能作为子串重复的字符串,在其基础上判断是否满足,循环结束
后都没有找到满足的,那么结果肯定就是false了。
接下来我们 ...
力扣204:计数质数
今天遇到一个有趣的题目,求小于给定非负整数的质数的数量
原题链接:力扣204. 计数质数
题目
给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。
示例 1:
输入:n = 10
输出:4
解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。
示例 2:
输入:n = 0
输出:0
示例 3:
输入:n = 1
输出:0
提示:
0






