工作常用设计模式
1 Map+函数式接口方法1.1 场景在工作中, 经常会遇到大量条件判断的情况, 因此一般使用策略模式来定义各种业务行为但缺点也明显:
如果 if-else的判断情况很多,那么对应的具体策略实现类也会很多,每种行为都要重新定义类来实现
没法俯视整个分派的业务逻辑
1.2 Map+函数式接口方法使用用上了Java8的新特性lambda表达式
判断条件放在key中
对应的业务逻辑放在value中
这样子写的好处是非常直观,能直接看到判断条件对应的业务逻辑
需求:根据资源类型resourceType和不同的入参规则, 来返回不同的业务编码
1234567891011121314151617181920212223242526272829303132333435 @Service public class QueryGrantTypeService { @Autowired private GrantTypeService grantTypeService; private Map<String, Function< ...
设计模式笔记
1 设计模式笔记1.1 介绍
文章
日期
00-设计模式简介
2023年5月1日
01-单例模式
2023年5月2日
02-工厂模式
2023年5月3日
02-工厂模式进阶
2023年5月5日
03-原型模式
2023年5月4日
04-建造者模式
2023年5月6日
05-适配器模式
2023年5月7日
06-桥接模式
2023年5月8日
07-装饰者模式
2023年5月9日
08-组合模式
2023年5月10日
09-外观模式
2023年5月11日
10-享元模式
2023年5月12日
11-代理模式
2023年5月13日
12-模板模式
2023年5月14日
13-命令模式
2023年5月15日
14-访问者模式
2023年5月16日
15-迭代器模式
2023年5月17日
16-观察者模式
2023年5月18日
17-中介者模式
2023年5月19日
18-备忘录模式
2023年5月20日
19-解释器模式
2023年5月21日
20-状态模式
2023年5月22日
21-策略模式
...
Shell-基本操作
Shell概述 Shell是一个命令解释器,它接收应用程序/用户命令,然后调用操作系统内核。
Shell是一个功能强大的编程语言,易编写、易调试、灵活性强。
Linux提供的Shelll解析器有
1cat /etc/shells
bash和sh的关系
12345cd /binll | grep bash[root@lys bin]# echo $SHELL/bin/bash
Shell 脚本入门(1) 脚本格式
脚本以#!/bin/bash开头 (指定解析器)
(2)第一个Shell脚本 helloworld.sh
123456touch helloworld.shvim helloworld.sh# 内容# !/bin/bashecho "hellow world"
(3) 脚本的常用执行方式
bash或sh + 脚本的相对路径或绝对路径 (不用赋予脚本+x权限)(重新开了一个进程执行bash命令)
12sh ./helloworld.shbash ./helloworld.sh
采用输入脚本的绝对 ...
Shell-实用脚本1
超级实用的shell脚本100例(一)1. 编写 helloworld 脚本
123#!/bin/bashecho "hello world"
2. 通过位置变量创建 Linux 系统账户及密码
1234#!/bin/bash#$1 是执行脚本的第一个参数,$2 是执行脚本的第二个参数useradd "$1"echo "$2" | passwd ‐‐stdin "$1"
3. 每周 5 使用 tar 命令备份/var/log 下的所有日志文件
123456#vim /root/logbak.sh#编写备份脚本,备份后的文件名包含日期标签,防止后面的备份将前面的备份数据覆盖#注意 date 命令需要使用反引号括起来,反引号在键盘<tab>键上面tar -czf log-`date +%Y%m%d`.tar.gz /var/log# crontab ‐e #编写计划任务,执行备份脚本0 ...
Shell-实用脚本2
超级实用的shell脚本100例(二)21. 使用 expect 工具自动交互密码远程其他主机安装 httpd 软件
123456789101112131415161718192021#!/bin/bash#删除~/.ssh/known_hosts 后,ssh 远程任何主机都会询问是否确认要连接该主机rm ‐rf ~/.ssh/known_hostsexpect <<EOFspawn ssh 192.168.4.254expect "yes/no" {send "yes\r"}#根据自己的实际情况将密码修改为真实的密码字串expect "password" {send "密码\r"}expect "#" {send "yum ‐y install httpd\r"}expect "#" {send "exit\r"& ...
Linux命令总结
基本操作命令首先先来几个热键,非常方便,一定要记住
Tab按键—命令补齐功能
Ctrl+c按键—停掉正在运行的程序
Ctrl+d按键—相当于exit,退出
Ctrl+l按键—清屏
-
关机和重启关机命令:shutdown在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。
正确的关机流程为:sync > shutdown > reboot > halt
例如你可以运行如下命令关机:
sync 将数据由内存同步到硬盘中。shutdown 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:shutdown –h 10 ‘This server will shutdown after 10 mins’ 这个命令告诉大家,计算机将在10分钟后关机,并且会显示在登陆用户的当前屏幕中。shutdown –h now 立马关机
123456789101112shutdown –h 20:25 系统会在今天20:25关机 shutdown –h +10 十分钟后关机 ...
Midjourney 新手快速起步指南
使用 Midjourney 首先需要创建Discord账号,Midjourney和Discord的关系就像小程序和微信的关系一样。国内网络无法直接访问Discord,这就需要你家网络会“魔法”(梯子)。
Midjourney是什么?用一句话概括:用文字描述来生成图像的AI工具。
如何快速使用Midjourney生成AI图片Step1: 下载注册不下载也没有关系,通过Midjourney进去也会需要你进行Discord
Midjouney 没有自己的客户端,搭载在Discord上,所以需要注册使用 Discord
Discord 简单来说,是个供社区玩家交流的地方,号称为”永远在线的聊天室“。更多信息查看:**Here**
下载链接: https://discord.com/download
Step2: 加入Midjourney
进入 www.midjourney.com 网页,选择 join the Beta
或者直接进入 Midjourney Discord
## Step3: 加入新手频道
左侧栏找到 newbies-# channel
Step4: 如 ...
ChatGPT-接口调用
一、简介1、什么是OpenAI
OpenAI是一个非营利研究公司,致力于研究人工智能领域。他们的GPT模型可用于生成基于文本的图像,包括自然语言描述的图像、语音转换为图像等。
在本文中,我们将使用OpenAI的API来生成文字描述
二、相关技术介绍1、深度学习模型
深度学习是一种基于人工神经网络,对数据进行建模和学习的机器学习方法。
它的主要优势在于,可以对大量的复杂数据进行训练和学习,以实现有意义的预测和决策。在图像生成方面,深度学习模型被广泛应用。
2、GAN模型
GAN(Generative Adversarial Networks)是一种深度学习模型,它由生成器和判别器两部分组成。判别器用于判断输入的数据是否真实,生成器用于生成尽可能逼真的数据。这种模型可以用于图像生成、视频生成、文本生成等领域。
3、TensorFlow框架
TensorFlow是谷歌开源的深度学习框架,它提供了丰富的工具和API,可以帮助开发人员更轻松地实现深度学习模型。在本文中,我们将使用TensorFlow框架来训练和部署我们的模型。
2、搭建OpenAI API环境要开始使用OpenAI AP ...
ChatGPT-免费部署
前言
需要有github账户,进行对开源项目进行Fork
需要有[魔法]上网
Fork chatgpt-vercel 到自己的github
打开网址:https://github.com/ourongxing/chatgpt-vercel (需要魔法上网)
点击右上角的Fork按钮,如下图
点击create fork,如下图
chatgpt-vercel 托管到vercel平台
打开网址:https://vercel.com/
需要你把github账户关联到vercel平台
进入后,点击 Add new,选择project如下图
进行搜索chatgpt-vercel,提示没搜索到,进行登录
登录后,选择chatgpt-vercel,保存
进行import
获取chatgpt apikey 网址:https://platform.openai.com/
点击由上角头像,点击Manage Account->API Keys->Create New Secret Key, 然后复制下来保存备用。这里请注意, 显示过一次的key,不会以任何形式再次显示, ...
后端开发四种层式结构
B树 / B+树:关系型数据库核心存储结构(mysql、mogodb)
时间轮:海量定时任务检测(linux、skynet、kafka)
跳表:高并发有序存储(lucune、redis、rocksdb)
LSM-Tree:更高性能以及更高空间利用率的数据存储结构(rocksdb)
一、B树和B+树MySQL数据库的索引的数据结构主要是Hash表或B+树.
先引入问题, 数据库索引为什么使用树结构存储?因为树的查询效率高, 而且可以保持有序. 二叉树的时间复杂度是O(logN), 查找和比较次数都是最小的, 但是并没有使用二叉树作为索引的数据结构.
没有使用二叉树的原因是因为磁盘IO, 数据库引擎是存储在磁盘上的, 当数据量比较大的时候, 索引的大小可能有几个G甚至更多. 当我们利用索引查询的时候, 不可能将整个索引全部加载到内存中去, 只能逐一加载每一个磁盘页, 这里的磁盘页对应的索引树的节点.
B树在计算机科学中,B树是一种自平衡的树,能够保持数据有序。这种数据结构能够让查找数据、顺序访问、插入数据及删除的动作,都在对数量级的时间复杂度内完成。B树,其实是一颗特殊的二 ...