友链朋友圈

原型模式

定义 原型模式时指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象,属于创建型模式 应用场景 类初始化消耗资源较多 new产生的一个对象需要非常繁琐的过程(数据准备、访问权限等) 构造函数比较复杂 循环体中生成大量对象时 优点 性能优良,Java自带的原型模式是基于内存二进制流的拷贝,比直接new一个对象性能上提升了许多 可以使用深克隆方式保存对象的状态,使用原型模式将对象复制一份并将其状态保存起来,简化了创建过程 缺点 必须配备克隆(或者可拷贝)方法 当对已有类进行改造的时候,需要修改代码,违反了开闭原则。 深拷贝、浅拷贝需要运用得当 克隆破坏单例模式 如果我们克隆的目标对象是单例的对象,深克隆就会破坏单例。 解决办法:可以禁止深克隆。要么你的单例类不实现Cloneable接口;要么我们重写 clone()方法,在clone方法中返回单例对象即可

avatar 龙儿之家 发表于 2022年04月26日 15:12:44

单例模式

定义 确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点 饿汉式单例 优点:执行效率高、性能高、没有融合的锁 缺点:某些情况下,可能会造成内存浪费 常规写法 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 { hungrySingleton = new HungryStaticSingleton(); } private HungryStaticSingleton() { } public static HungryStaticSingleton getInstance() { return hungrySingleton; }} 懒汉式单例 常规写法 优点:节省了内存,线程安全 缺点:性能低 public class LazySimpleSingletion { private static LazySimpleSingletion instance; private LazySimpleSingletion(){} public sy...

avatar 龙儿之家 发表于 2022年04月26日 14:44:05

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文件创建对应目录文件 pwdmkdir datamkdir confll 4、编写Redis的配置文件 在conf目录下创建redis.conf文件,文件内容如下: # Redis configuration file example.## Note that in order to read the configuration file, Redis must be# started with the file path as first argument:## ./redis-server /path/to/redis.conf# Note on units: when memory size is needed, it is possible to specify# it in the usual form of 1k 5GB 4M and so forth:## 1k => 1000 bytes# 1kb => 1024 bytes# 1m => 1000000...

avatar 龙儿之家 发表于 2022年04月24日 16:53:43

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/mysql - ./init:/docker-entrypoint-initdb.d/ ports: - 50010:3306 restart: always 3、创建目录文件 根据docker-compose.yml文件创建对应目录文件 4、编写MySQL的配置文件 在conf目录下创建my.cnf文件,文件内容如下: [mysqld]lower_case_table_names=1innodb_force_recovery = 0log-bin=/var/lib/mysql/mysql-binbinlog-format=ROWserver_id=1 5、启动MySQL容器 docker-compose up -d 6、远程连接验证结果

avatar 龙儿之家 发表于 2022年04月24日 15:57:49

用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:/etc/nginx/nginx.conf #配置文件 - ./conf.d:/etc/nginx/conf.d #配置文件 - ./logs:/var/log/nginx #日志 ports: - 80:80 - 443:443 restart: always 4、创建目录以及nginx配置文件 根据docker-compose.yml建立文件目录,并编写相关文件 目录: conf/nginx.conf: user nginx;worker_processes auto;error_log /var/log/nginx/error.lo...

avatar 龙儿之家 发表于 2022年04月24日 15:36:52

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/local/bin/docker-compose 2、授予权限 sudo chmod +x /usr/local/bin/docker-composesudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose 3、验证 docker-compose --version 输入命令后,出现版本号,则为安装成功

avatar 龙儿之家 发表于 2022年04月24日 15:12:03

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-utilsyum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo 阿里软件源: 3、安装docker yum install docker-ce docker-ce-cli containerd.io 命令输入后,中途出现下面的内容,输入y,然后按回车确认 中途出现下面的内容,输入y,然后按回车确认 4、更改docker仓库地址,用Docker中国区官方替换掉,要不之后拉取镜像速度太慢了 vi /etc/docker/daemon.json daemon.json内容: { "registry-mirrors": ["https://registry.docker-cn.com"]} 5、启动docker systemctl s...

avatar 龙儿之家 发表于 2022年04月24日 13:59:34

力扣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了。 接下来我们考虑循环内部的逻辑,如果一个子串可以满足子串重复多次组成当前的字符串,那么按 照子串的长度分割,每一部分都是相同的。接下来就是重点了!!!重点!!!怎么判断这些部分 都相同?? 假设满足条件: s = "abdfs" parent = s1+s2+s3+s4+....sn(s1...sn都是s) 根据上面的字符串以及子串作说明 可以分为两步判断: s1和sn相同 s2s3s4...sn和s1s2s3....s(n-1)相同 2中s2=s1,s3=s2.....sn=s(n-1),这样一来s1,s2,s3....sn就都相同了 {% tabs categories%} class Solution { public boolean repeatedSubstringPattern(St...

avatar 龙儿之家 发表于 2022年04月18日 15:53:15

力扣204:计数质数

今天遇到一个有趣的题目,求小于给定非负整数的质数的数量 原题链接:力扣204. 计数质数 题目 给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。 示例 1: 输入:n = 10输出:4解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。 示例 2: 输入:n = 0输出:0 示例 3: 输入:n = 1输出:0 提示: 0 <= n <= 5 * 106 Related Topics 数组 数学 枚举 数论 个人解法 思路: 这题我最开始想的比较简单,直接从0开始遍历到给定数字,遍历过程中判断是否是质数 java代码如下: class Solution { public int countPrimes(int n) { if (n <= 2) { return 0; } int count = 1; for (int i = 3; i < n; i++) { if (isPrime(i)) { count++; } } return count; } /** * 判断是否是质数 * * @param num 数字 * @return true:质数、false:不是质数 */ private boolean isPrime(int num) { if (num < 2) { return false; } if (num == 2) { return true; } for (int i ...

avatar 龙儿之家 发表于 2022年04月12日 11:04:35

库存周转分析

概述 模型概念

avatar Eurkon 发表于 2022年04月01日 10:00:00