Docker初识Docker项目部署的问题:大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题:这些服务会依赖于各种各样的应用,Node.js、Redis、RabbitMQ、MySQL等等,每一个服务的应用它们需要的依赖和函数库有差异,也有可能版本不同,所以依赖关系复杂,容易出现兼容性问题。·依赖关系复杂,容易出现兼容性问题·开发、测试、生产环境有差异Docker与虚拟机的差异:
虚拟机(virtual machine)是在操作系统中模拟硬件设备,然后运行另一个操作系统,比如在Windows 系统里面运行Ubuntu系统,这样就可以运行任意的Ubuntu应用了。
Docker和虚拟机的差异:· docker是一个系统进程;虚拟机是在操作系统中的操作系统;· docker体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般。
镜像和容器镜像就是像照镜子一样。我们一般说的镜像是指给系统作个ghost镜像。这样可以在很短时间,很方便的还原出一个完整的系统来。镜像可以说是一种文件,比如iso,gho都属于镜像文件,镜像文件可以直接刻录到光盘中,也可以用虚拟光驱打开。
镜像( ...
Feign先来看我们以前利用RestTemplate发起远程调用的代码:
存在下面的问题:
•代码可读性差,编程体验不统一
•参数复杂URL难以维护
Feign是一个声明式的http客户端,官方地址:https://github.com/OpenFeign/feign
其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问题。
基于feign远程调用先在order-service引入依赖:
1234<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId></dependency>
在 OrderApplication引入自动装配的开关@EnableFeignClients
然后在 order-service里新建一个接口并编写:
123456@FeignClient("userservice")publ ...
设置店铺营业状态先去我之前写的博客“Redis数据库学习笔记”学习Redis的基本操作。
在config层下创建Redis的配置类,里面编写:
123456789101112131415@Configuration@Slf4jpublic class RedisConfiguration { @Bean public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){ log.info("开始创建redis对象:{}",redisConnectionFactory); RedisTemplate redisTemplate = new RedisTemplate(); //设置redis工厂对象 redisTemplate.setConnectionFactory(redisConnectionFactory); //设置redis序列化器 ...
添加公共通用注解因为接下来的许多接口需要用到create_time,update_time数据库添加语句等,这种会增加代码的重复性,这时这时直接添加一个注释然后添加到Mapper类里面。就是利用AOP进行公共段自动填充技术
先在server模块下创建annotation.AutoFill注解类,里面编写:
12345@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface AutoFill { OperationType value();}
OperationType是一个枚举类,里面有UPDATE,INSERT
然后在在server里面创建aspect.AutoFillAspect类,里面编写:
123456789101112131415@Aspect@Component@Slf4jpublic class AutoFillAspect { @Pointcut("execution(* com.sky.mapper.*.*(.. ...
本篇将使用 python调用chatgpt接口
注册OpenAi账号#随便找一个魔法软件登录OpenAi。地址就算漂亮国或新加坡吧,进入OpenAi官网:Product (openai.com),点击右上方的log in
进入后便可以注册你的 openai账号了,使用下面的Goodgle账号登录,再注册一个谷歌账号,然后按要求写就行。
注意最重要的来了!
电话号码由于国内的号码openai不支持,这时就需要使用外网的虚拟电话号进行接收短信验证码了。使用SMS网站:SMS-Activate是在线接受短信的虚拟号码服务,然后在左边的侧边栏里的搜索框输入openai,再选着一个号码,我选的是印度尼西亚的,只需要10p(0.1美元),但是初始是没有钱的,先注册登录这个网站,然后右上方账户下面有个加号,这里就是充值的地方。
最新的SMS仅支持最低充值2美元,也就是14RMB的样子,准备好钱钱哦~,里面的支付方式比较熟悉的有支付宝。
充值完成后购买一个外网的号码,这时会自动给你跳转到接收短信的页面。
返回刚刚的Openai官网登录界面,这时将过程中不支持国内的号码改成刚刚买的外网号码就可以了。 ...
IT笔记
未读Redis 数据库的存储格式就有点像Map集合,有key-value,一个key指向一个value。
Redis 在 Java Web 主要有两个应用场景:
存储 缓存 用的数据;
需要高速读/写的场合使用它快速读/写;
下载和安装链接: https://pan.baidu.com/s/174vGmyAcUwaIvl4FgXRfnA?pwd=1234 提取码: 1234
解压后文件夹的内容:
然后在当前目录下运行cmd,并输入redis-server.conf redis-windows.conf,就会出现下面的画面
结束redis服务按下 快捷键ctrl+c
**连接redis:**在当前目录再运行一个cmd命令窗,并输入redis-cli.exe -h localhost -p 6379,意思就在在当前计算机ip下运行端口号为6379的redis服务。
更改redis连接密码:此时的redis连接是不需要密码的,这时就需要进入redis.windows.conf文件配置密码,在第443行将requirepass foobared注释去掉并将fooba ...
原文链接:OneDrive的妙用 图/音频/视频床 - wuuconix’s blog
也是最近想在自己网站搞个图床,但是网站内存可能不太支持大量的图片,尤其是视频,这时就需要外用嵌入url进行,我试了下OneDrive播放1080P的视频还是不怎么卡,加载个3秒左右就可以看了。主要是它画质不压缩。而且博客园也不支持上传视频文件得嘛,这时一个外链就很重要。
原文教程:获取OneDrive直链 (mapaler.github.io)
对了现在好像需要魔法了…
详细教程如果单只外链图片直接用博客园的上传图片或者免费图床网址:ImgTP - 免费公共图床
需要上传视频的话就用下面的方法;
注册微软账号并登录到OneDrive:https://onedrive.live.com/,这个网址就是你存储图床的位置,上传你的音视频,普通用户有5GB的免费空间,大一点的40RMB一个月,空间有500GB,但是你忘了可以开小号得嘛,一个号不行就多个号。
上传文件后右键选择嵌入,然后就可以复制你的代码到你的网址上了,但是这种直接嵌入全部代码播放视频会跳转到OneDrive的网站播放,如 ...
项目文件在之前的公司管理系统上增添的….
—事务管理—
事务是一组操作的集合,它是一个不可分割的工作单位,这些操作要么同时成功,要么同时失败。
简单案例:删除部门,同时删除该部门下的员工。
直接在删除部门方法的Service类下添加个删除员工的方法并在EmpMapper里添加删除对应部门员工的方法。
如果想在让处理的事件回滚并报错,比如在DeptService里删除方法里,添加上@Transactional(rollbackFor = Exception.class),这里的rollbackFor指出现什么异常就回滚,这里是所有异常。为了测试就直接在方法里面的删除部门的deptMapper方法下编写:
123if (true){throw new Exception("出差啦..");}
这时候再去删除部门就会报错,并且部门也删除不了
事务传播行为:比如要记录比较重要的操作时,如删除部门,无论成功还是失败都要记录日志。这时就再创建一个数据库用于记录日志。在DeptService删除方法下调用添加日志的方法,然后在DeptLogServ ...
本人4小时速通python,为啥要学python,emmmm…我选的专业要学 。。。早点把它学了上课就可以打瞌睡了
由于java和C这两个我更精通java,所以直接拿Java做对比啦。因为python中不用用’;‘换行,所以就拿’;‘表示python中的换行啦~
>在python中可以不用定义变量类型,比如直接输age=18就行了;布尔类型True和False都要首字母大写
>input输入语法:xxx=input(“请输入:”)默认为String类型,要想定义变量类型在input前面加个括号再输入变量类型,即int(input)。相当于java中
123Scanner input =new Scanner(System.in);System.out.println("请输入:");String input_name=input.nextLine();
可以看出java中很麻烦,所以有句话叫人生苦短我用python….
>创建列表:List=[“hh”,”hpa”,18,3.14],输出列表元素:for i in ...
IT笔记
未读排序查询:select 字段列表 from [表名] order by [字段名1] [asc升序/desc降序,默认值为升序],[字段名2] [排序方式];//字段名1为优先级排序,如果字段名1有相同的,再以字段名2排序
聚合函数:
count
统计数量(一般不选null的列)
max
最大值
min
最小值
sum
总和
avg
平均值
Select 聚合函数(字段名) from 表名;//null值不参与所有聚合函数运算 ! !
分组查询:selcet 字段列表 from [where 分组前条件限定] group by 分组字段名 [having 分组后条件过滤];//分组后查询的字段为聚合函数和分组字段,查询其他字段无意义,执行顺序:where>聚合函数>having
eg:select sex,avg(score),count() from where score>60 student group by sex having count()>1; ...

