vue使用FullCalendar插件实现日历会议预约功能

news2024/12/28 4:05:59

  

目录

1. vue 项目使用npm安装插件 

2. vue 页面代码(直接复制粘贴可用)

3. vue FullCalendar的内置函数以及配置


前言:此案例是用FullCalendar插件做一个会议日程预约功能,此功能可查看自己的日程安排会议信息等...... 

FullCalend

FullCalendar插件官网:FullCalendar - JavaScript Event Calendar

具体的配置内容可以参考:最新FullCalendar中文文档_Helloweba 

  • 效果图(月) 

  • 效果图(周) 

  • 效果图(日) 

1. vue 项目使用npm安装插件 

npm install --save @fullcalendar/vue @fullcalendar/core @fullcalendar/daygrid @fullcalendar/timegrid @fullcalendar/interaction npm install moment

2. vue 页面代码(直接复制粘贴可用)

<template>
	<div class="app-container home">
		<!-- 按钮部分-->
		<div style="margin-bottom: 10px;">
			<el-row>
				<!-- 会议申请按钮-->
				<el-button type="primary" round style="float: left;" @click="toMeetingClick()">申请会议</el-button>
				<!-- 普通查询日期区域-->
				<span style="margin-left: 20px;">
					<span style="margin-right: 0px;">会议开始日期:</span>
					<el-date-picker v-model="queryStartDate" type="date" placeholder="选择日期">
					</el-date-picker>
					<span style="margin-left: 10px;">
						<el-button icon="el-icon-search" @click="quertStart()" circle></el-button>
					</span>
				</span>
				<!-- 高级查询按钮-->
				<el-button type="primary" round style="float: right;" @click="drawer = true">高级查询</el-button>
			</el-row>
		</div>
		<!-- 日程部分-->
		<div style="box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);padding: 10px;">
			<FullCalendar :options="calendarOptions" ref="FullCalendar" />
			<!-- 点击会议弹窗内容 -->
			<div v-if="selectedEvent">
				<el-dialog :close-on-click-modal="true" :visible="this.showDialog" @close="closeDialog()" title="日程详情">
					<h3>{{ this.selectedEvent.title }}</h3>
					<p>开始时间:{{ this.selectedEvent.start }}</p>
					<p>结束时间:{{ this.selectedEvent.end }}</p>
					<p>内容:{{ this.selectedEvent.context }}</p>
					<p>职位:{{ this.selectedEvent.zw }}</p>
					<p>性别:{{ this.selectedEvent.sex }}</p>
					<p>年龄:{{ this.selectedEvent.age }}</p>
				</el-dialog>
			</div>
		</div>
		<!-- 抽屉框部分-->
		<div>
			<el-drawer title="查询条件" :visible.sync="drawer" :with-header="true">
				<span>......</span>
			</el-drawer>
		</div>


	</div>
</template>

<script>
import FullCalendar from '@fullcalendar/vue'
import dayGridPlugin from '@fullcalendar/daygrid'
import timeGridPlugin from '@fullcalendar/timegrid'
import interactionPlugin from '@fullcalendar/interaction'
import moment from 'moment';
		
	export default {
		components: {
			FullCalendar
		},
		name: "schedule",
		data() {
			return {
				//普通查询时间
				queryStartDate: null,
				//日程弹窗开关
				showDialog: false,
				//日程弹窗内容
				selectedEvent: null,
				//抽屉窗开关
				drawer: false,
				//日程内容集合
				meetingArr: [{
						id: 1,
						title: `会议:炎亚纶与汪东城`,
						start: '2023-07-25' + 'T08:00:00',
						end: '2023-07-25' + 'T10:10:00',
						context: '自定义的内容',
						age: 18,
						sex: '男',
						zw: '董事长',
					},
					{
						id: 2,
						title: `会议:蔡徐坤私生子`,
						start: '2023-07-29' + ' 10:00:00',
						end: '2023-07-29' + ' 12:00:00',
					},
					{
						id: 3,
						title: `会议:萧亚轩真的快乐吗?`,
						start: '2023-07-10' + 'T10:00:00',
						end: '2023-07-13' + 'T12:00:00',
					},
					{
						id: 3,
						title: `会议:蔡徐坤私生子1`,
						start: '2023-07-29' + ' 10:00:00',
						end: '2023-07-29' + ' 13:00:00',
					},
					{
						id: 4,
						title: `会议:研发讨论会`,
						start: '2023-08-04' + ' 10:00:00',
						end: '2023-08-04' + ' 13:00:00',
					}
				],
				calendarOptions: {
					// 加载的视图
					plugins: [dayGridPlugin, timeGridPlugin, interactionPlugin],
					// 视图类型 初始显示的视图 视图名称规则 比如dayGridPlugin去掉Plugin 加上Month或者Week或者Day
					initialView: 'timeGridWeek',
					// 语言选项  设置为中文后 部分文本会替换为中文 但是不全面
					locale: 'zh-cn',
					// 配置日历头部
					// 按钮: prev为切换(上)下一月(/周/日)   next today 跳转到今天    
					// 文本: title 年月(YYYY-MM)
					// 按钮: dayGridMonth月 timeGridWeek周 timeGridDay日
					headerToolbar: {
						left: 'prev,next today',
						center: 'title',
						right: 'dayGridMonth,timeGridWeek,timeGridDay',
					},
					// 设置各种按钮的文字  默认是英文的
					buttonText: {
						today: '今天',
						month: '月',
						week: '周',
						day: '日',
						list: '表'
					},
					// 初始就存在的事件【日程内容】
					initialEvents: [],
					// 是否可拖拽
					editable: true,
					// 是否可选择添加
					selectable: true,
					// 选择时触发函数
					select: this.handleDateSelect,
					// 点击事项触发函数
					eventClick: this.handleEventClick,
					// 移动事项或者拓展事项时间触发函数
					eventsSet: this.handleEvents,
					// 全天行 的文本显示内容
					allDayText: '全天',
					// 最小时间
					slotMinTime: '00:00:00',
					// 最大时间
					slotMaxTime: '23:59:59',
					// 是否可以进行(拖动、缩放)修改
					//editable: false
				},

			};
		},
		methods: {
			/* 普通查询方法*/
			quertStart() {
				let calendarApi = this.$refs.FullCalendar.getApi()
				//非空
				if (this.queryStartDate != null) {
					// gotoDate方法是让当前视图跳转到指定日期的位置
					calendarApi.gotoDate(this.queryStartDate)
				} else {
					//跳转到今日
					calendarApi.today()
				}

			},
			/* 获取指定日期范围的所有日程信息 */
			toClick() {
				// 获取 FullCalendar 实例
				const calendar = this.$refs.FullCalendar.getApi();
				// 定义搜索范围的起始和结束时间
				const startDate = moment("2015-06-06");
				const endDate = moment("2028-06-08");
				// 获取日历中的所有事件
				const events = calendar.getEvents();
				// 根据范围条件筛选事件
				const filteredEvents = events.filter(event => {
					// 获取事件的开始时间和结束时间
					const eventStart = moment(event.start);
					const eventEnd = moment(event.end);
					// 判断事件是否在范围内
					return eventStart.isBetween(startDate, endDate, null, '[]') || eventEnd.isBetween(startDate,
						endDate, null, '[]');
				});

				// 处理筛选出的事件
				console.log(filteredEvents);

			},
			/* 点击会议弹窗具体内容*/
			handleEventClick(info) {
				// 获取点击的事件对象
				const event = info.event;
				// 更新选中的事件
				this.selectedEvent = {
					title: event.title,
					start: moment(event.start).format('YYYY-MM-DD HH:mm'),
					end: moment(event.end).format('YYYY-MM-DD HH:mm'),
					zw: event.extendedProps.zw,
					context: event.extendedProps.context,
					age: event.extendedProps.age,
					sex: event.extendedProps.sex
				};
				console.info(info)
				console.info(this.selectedEvent)
				//开启弹窗
				this.showDialog = true
			},
			/* 关闭日程弹窗方法*/
			closeDialog() {
				this.showDialog = false
			},
			/* 申请会议按钮 */
			toMeetingClick() {
				//根据自己的业务进行处理...
			}
		},
		created() {
			//给日程记录初始化
			this.calendarOptions.initialEvents = this.meetingArr
		}
	};
</script>

<style scoped lang="scss">
	/* 修改抽屉样式 */
	::v-deep .el-drawer__header {
		background-color: rgb(245, 245, 245);
		padding: 0px 20px;
		height: 50px;
		color: #000000;
		margin-bottom: 0px;
		//font-weight: bolder;
		font-size: 18px;
	}

	/* ::v-deep .el-drawer {
  background-color: #e3e3e3 !important
} */
	.home {
		blockquote {
			padding: 10px 20px;
			margin: 0 0 20px;
			font-size: 17.5px;
			border-left: 5px solid #eee;
		}

		hr {
			margin-top: 20px;
			margin-bottom: 20px;
			border: 0;
			border-top: 1px solid #eee;
		}

		.col-item {
			margin-bottom: 20px;
		}

		ul {
			padding: 0;
			margin: 0;
		}

		font-family: "open sans",
		"Helvetica Neue",
		Helvetica,
		Arial,
		sans-serif;
		font-size: 13px;
		color: #676a6c;
		overflow-x: hidden;

		ul {
			list-style-type: none;
		}

		h4 {
			margin-top: 0px;
		}

		h2 {
			margin-top: 10px;
			font-size: 26px;
			font-weight: 100;
		}

		p {
			margin-top: 10px;

			b {
				font-weight: 700;
			}
		}

		.update-log {
			ol {
				display: block;
				list-style-type: decimal;
				margin-block-start: 1em;
				margin-block-end: 1em;
				margin-inline-start: 0;
				margin-inline-end: 0;
				padding-inline-start: 40px;
			}
		}
	}
</style>

3. vue FullCalendar的内置函数以及配置项

// 切换到下一月/周/日
this.$refs.FullCalendar.getApi().next()
// 切换到上一月/周/日
this.$refs.FullCalendar.getApi().prev()
// 跳转到今天
this.$refs.FullCalendar.getApi().today()
// 跳转到指定日期  formatData是日期 格式为 yyyy-MM-dd
// 特别注意不要写例如 2021-8-7 必须是 2021-08-07  两位!!!
this.$refs.FullCalendar.getApi().gotoDate(formatData)
// 获得当前视图起始位置的日期
this.$refs.FullCalendar.getApi().getDate()
// 获得当前视图  里面有一些参数
this.$refs.FullCalendar.getApi().view
// 当前视图的类型
this.$refs.FullCalendar.getApi().view.type 
// 当前显示的事件(日程)的开始时
this.$refs.FullCalendar.getApi().view.activeStart
// 当前显示的事件(日程)的结束时
this.$refs.FullCalendar.getApi().view.activeEnd
// 这个应该是当前显示内容区域的日历引用 因为通过他可以获得内置的函数 (我也不确定 反正我是这么用的)
this.$refs.FullCalendar.getApi().view.calendar
// 获得当前所显示的所有事件(日程)
this.$refs.FullCalendar.getApi().view.calendar.getEvents()
// 向日历中添加事项
this.$refs.FullCalendar.getApi().view.calendar.addEvent({
  id: 1,
  title: `事项xx`,
  start: '2021-10-01' + ' 13:00:00',
  end: '2021-10-01' + ' 17:00:00',
  // 修改背景颜色
  backgroundColor:'#d8377a',
  // 修改边框颜色
  borderColor:'#d8377a',
})
  • 获取指定日期范围的所有日程信息 
// 获取 FullCalendar 实例
const calendar = this.$refs.FullCalendar.getApi();
// 定义搜索范围的起始和结束时间
const startDate = moment("2015-06-06");
const endDate = moment("2028-06-08");
// 获取日历中的所有事件
const events = calendar.getEvents();
// 根据范围条件筛选事件
const filteredEvents = events.filter(event => {
// 获取事件的开始时间和结束时间
const eventStart = moment(event.start);
const eventEnd = moment(event.end);
// 判断事件是否在范围内
return eventStart.isBetween(startDate, endDate, null, '[]') || eventEnd.isBetween(startDate,endDate, null, '[]');});
// 处理筛选出的事件
console.log(filteredEvents);
  • 对于需要重新刷新当前显示日历中的事件(日程)时
// 是需要先清除 当前显示的各个eventSource(事件源) 就是事件(日程)
this.$refs.FullCalendar.getApi().view.calendar.getEvents().forEach(eventSource => {
   eventSource.remove()
})
// 在将自己需要的内容加入  
// 如果是只添加一个事件其他不动的话就不需要清除
  • 其他一些基本的日历设置  (可参考里面的属性怎么设置使用第一版
data() {
    let that = this
    return {
      createEventId: 0,
      calendarOptions: {
        plugins: [dayGridPlugin,timeGridPlugin,interactionPlugin],
        // 视图类型
        initialView: 'timeGridWeek',
        // 语言选项
        locale:'zh-cn',
        // 设置各种默认按钮的文字 没使用自定义按钮 并且 不需要在按钮添加自己的代码就直接用这个改一下显示文字就行
        buttonText:{
          today:'今天',
          month:'月',
          week:'周',
          day:'日',
          list:'表'
        },
        // 自定义头部按钮 因为要加一些自己的内容   自带的按钮未找到回调函数
        customButtons:{
          prevBack: {
            text: '后退',
            click: function(data) {
              that.$refs.FullCalendar.getApi().prev()
              // 自动一些内容
            }
          },
          prevGo: {
            text: '前进',
            click: function(data) {
              that.$refs.FullCalendar.getApi().next()
              // 自动一些内容
            }
          },
          ToToday: {
            text: '今天',
            click: function(data) {
              that.$refs.FullCalendar.getApi().today()
              // 自动一些内容
            }
          },
        },
        // 头部显示的功能 自定义按钮就显示在这
        headerToolbar: {
          left: 'prevBack,prevGo ToToday',
          center: 'title',
          right: 'dayGridMonth,timeGridWeek',
        },
        // 初始化的事件
        initialEvents: [],
        // 是否可拖拽
        // editable: true,
        // 是否可选择添加
        // selectable: true,
        selectMirror: true,
        dayMaxEvents: true,
        weekends: true,
        // 选择时触发函数
        select: this.handleDateSelect,
        // 点击事件触发函数
        eventClick: this.handleEventClick,
        // 移动到事件上触发函数
        eventMouseEnter:this.handleEventMouseover,
        // 移动事件或者拓展事件时间触发函数
        eventsSet: this.handleEvents,
        // 全天行 的文本显示内容
        allDayText: '全天',
        // 是否显示全天
        allDaySlot: true,
        // 最小时间
        slotMinTime:'06:00:00',
        // 最大时间
        slotMaxTime:'21:00:00',
      },
    }
  },
  • 其他一些基本的日历设置  (可参考里面的属性怎么设置使用第二版
data() {
    return {
      calendarOptions: {
        // 引入的插件
        plugins: [dayGridPlugin, timeGridPlugin, interactionPlugin],
        // 日历头部按钮位置
        headerToolbar: {
          left: "prev,next today",
          center: "title",
          right: "dayGridMonth, timeGridWeek, timeGridDay",
        },
        // 日历头部按钮中文转换
        buttonText: {
          today: "今天",
          month: "月",
          week: "周",
          day: "天",
        },
        customButtons: {
          prev: {
            text: "上个月",
            click: () => {
              this.prev();
            },
          },
          next: {
            text: "下个月",
            click: () => {
              this.next();
            },
          },
          today: {
            text: "今天",
            click: () => {
              this.today();
            },
          },
        },
        locale: "zh-ch", // 切换语言,当前为中文
        firstDay: "1", // 设置一周中显示的第一天是周几,周日是0,周一是1,以此类推
        weekNumbers: true,
        weekNumberCalculation: "ISO", // 与firstDay配套使用
        weekNumberContent: this.weekNumberContent,
        eventColor: "#3d8eec", // 全部日历日程背景色
        timeGridEventMinHeight: "20", // 设置事件的最小高度
        aspectRatio: "1.5", // 设置日历单元格宽高比
        displayEventTime: true, // 是否显示事件时间
        allDaySlot: false, // 周、日视图时,all-day不显示
        allDayDefault: false,
        editable: true, //是否允许修改事件
        selectable: true,
        eventLimit: true, // 设置月日程,与all-day slot 的最大显示数量,超过的通过弹窗展示
        eventTimeFormat: {
          hour: "2-digit",
          minute: "2-digit",
          second: "2-digit",
          hour12: false,
        },
        slotLabelFormat: {
          hour: "2-digit",
          minute: "2-digit",
          second: "2-digit",
          meridiem: false,
          hour12: false, // 设置时间为24小时制
        },
        events: [], // 日程数组
        // 事件
        editable: true, // 是否可以进行(拖动、缩放)修改
        eventStartEditable: true, // Event日程开始时间可以改变,默认为true,若为false,则表示开始结束时间范围不能拉伸,只能拖拽
        eventDurationEditable: true, // Event日程的开始结束时间距离是否可以改变,默认为true,若为false,则表示开始结束时间范围不能拉伸,只能拖拽
        selectable: true, // 是否可以选中日历格
        selectMirror: true,
        selectMinDistance: 0, // 选中日历格的最小距离
        weekends: true,
        navLinks: true, // 天链接
        selectHelper: false,
        selectEventOverlap: false, // 相同时间段的多个日程视觉上是否允许重叠,默认为true,允许
        dayMaxEvents: true,
        dateClick: this.handleDateClick, // 日期点击
        eventsSet: this.handleEvents, // 事件点击
        eventClick: this.handleEventClick, // 日程点击信息展示
        eventDrop: this.handleEventDrop, // 日程拖动事件
        eventResize: this.eventResize, // 日程缩放事件
      },
      condition: [],
      dialogShow: false,
      rules: {
        title: { required: true, message: "请填写标题", trigger: "blur" },
        times: [
          { required: true, message: "请选择起始结束时间", trigger: "blur" },
        ],
        task_type: { required: true, message: "请选择工段", trigger: "blur" },
      },
      BusinessModel: {
        id: null,
        title: null,
        start_time: null,
        end_time: null,
        remark: null,
        times: [],
        task_type: null
      },
      dialogTitle : null,
      productTaskType: {},
    };
  }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/835879.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国产化车载智能座舱方案引领新时代

车载智能座舱是一项集成了多种技术的复杂工程&#xff0c;包括大量的硬件设备、大数据分析、实时交互、用户体验和技术创新研发等。由于涉及的技术领域繁多&#xff0c;智能座舱技术在实际应用中面临很多技术壁垒&#xff0c;如硬件性能、互联互通、集成性、数据采集、存储、处…

Flink正常消费一段时间后,大量反压,看着像卡住了,但又没有报错。

文章目录 前言一、原因分析二、解决方案 前言 前面我也有提到&#xff0c;发现flink运行一段时间后&#xff0c;不再继续消费的问题。这个问题困扰了我非常久&#xff0c;一开始也很迷茫。又因为比较忙&#xff0c;所以一直没有时间能够去寻找答案&#xff0c;只是通过每天重启…

智慧医院该啥样?白皮书给你答案

注意&#xff1a;案例数据均为虚拟数据 随着云计算、大数据、物联网、区块链、新一代互联网通信等新技术的不断发展,“新基建”的不断升级,新医改的不断深化,智慧医院成为我国医院现代化建设的重要发展方向。 党的十八大以来&#xff0c;数字经济更是上升为国家战略&#xff…

运动式蓝牙耳机哪种好、口碑最好的运动蓝牙耳机

为了保持身体健康&#xff0c;许多人在闲暇时选择进行一些日常运动。其中&#xff0c;很多人喜欢在运动时戴上耳机&#xff0c;让身体随着音乐的节奏运动&#xff0c;希望能够增强运动效果。正因如此&#xff0c;市场上涌现了许多优秀的运动耳机品牌&#xff0c;它们推出了一系…

人脸识别场景下Faiss大规模向量检测性能测试评估分析

在前面的两篇博文中&#xff0c;主要是考虑基于之前以往的人脸识别项目经历结合最近使用到的faiss来构建更加高效的检索系统&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 《基于facenetfaiss开发构建人脸识别系统》 Facenet算法的优点&#xff1a;高准确率&#…

MQTT协议详解「概念、特性、版本及作用」

MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输&#xff09;是ISO标准下基于发布/订阅方式的轻量级消息协议。MQTT通常使用TCP / IP&#xff08;传输控制协议/Internet协议&#xff09;作为其传输&#xff0c;但也可以使用其他双向传输。MQ…

vue、uniapp直传阿里云文档

前端实现文件上传到oss&#xff08;阿里云&#xff09;适用于vue、react、uni-app&#xff0c;获取视频第一帧图片 用户获取oss配置信息将文件上传到阿里云&#xff0c;保证了安全性和减轻服务器负担。一般文件资源很多直接上传到服务器会加重服务器负担此时可以选择上传到oss&…

【C++】开源:sqlite3数据库配置使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍sqlite3数据库配置使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下…

【Autolayout自动布局介绍 Objective-C语言】

一、好,我们开始介绍Autolayout 1.什么事Autolayout 好,那么,接下来,我们介绍一下这个Autolayout Autolayout,就是“自动布局” 那么,自动布局,它就是专门用来做UI界面的 那么,UI界面,我们为了适应不同屏幕,要进行自动布局, 所以要使用Autolayout 这个Autolayou…

物理机是什么?有什么优势?可以上堡垒机吗?

你知道物理机是什么&#xff1f;有什么优势&#xff1f;可以上堡垒机吗&#xff1f;今天我们就来简单聊聊。 物理机是什么&#xff1f; 物理机是相对于虚拟机而言的对实体计算机的称呼。物理机提供给虚拟机以硬件环境&#xff0c;有时也称为“寄主”或“宿主”。 物理机有什么…

C# Blazor 学习笔记(11):路由跳转和信息传值

文章目录 前言路由跳转测试用例路由传参/路由约束 前言 Blazor对路由跳转进行了封装。 ASP.NET Core Blazor 路由和导航 NavigationManager 类 本文的主要内容就是全局的跳转 路由跳转 路由跳转就要用到NavigationManager 类。 其实最常用的还是NavigateTo这个跳转函数 测…

AVI怎么转换成MP4格式?教你几种方法轻松转换

MP4格式具有广泛的兼容性&#xff0c;可以在大多数设备和平台上播放。无论是电脑、手机、平板还是电视&#xff0c;都可以播放MP4格式的视频&#xff0c;而且在不同的操作系统和浏览器上也能够正常播放。AVI格式的视频就不一定能这样&#xff0c;因此将AVI转成MP4格式会方便很多…

HCIP静态路由实验

实验要求为&#xff1a; 1、R6为isp&#xff0c;接口IP地址均为公有地址&#xff1b;该设备只能配置IP地址&#xff0c;之后不能进行任何配置&#xff1b; 2、R1-R5为局域网&#xff0c;私有IP地址192.168.1.0/24&#xff0c;请合理分配&#xff1b; 3、所有路由器上环回&…

RF手机天线仿真介绍(二):孔径调谐和阻抗调谐

目录 简介孔径调谐阻抗调谐孔径调谐组件选择分析 简介 由于手机运行所需的频段、功能和模式的数量不断增加&#xff0c;现代手机的 RF 前端 (RFFE) 设计也日益复杂。需要采用更多天线&#xff0c;使用载波聚合 (CA)、4x4 MIMO、Wi-Fi MIMO 和新的宽带 5G 频段来提供更高的数据…

wireshark简单使用(一)

前两天为同事处理交换机故障&#xff0c;接触到wireshark使用&#xff0c;意识到这个工具对于工程师来说&#xff0c;查询报文还是必须的&#xff0c;了解基本的使用。 于是接触到一些视频&#xff0c;开始自学。 第一步 查询本机IP地址 cmd---ipconfig 查看本机IP地址和网关…

【IDEA】常用插件清单

【IDEA】常用插件清单 arthas ideaCodeium: AI Autocomplete for xxxCommit-MessageGenerateAllSetterMaven HelperMybatisPlusOne Dark themePDF ViewerRainbow BracketsRestfulToolSequenceDiagramSonarLintTranslation arthas idea 快捷生成arthas命令 Codeium: AI Autoc…

Agent:OpenAI的下一步,亚马逊云科技站在第5层

什么是Agent&#xff1f;在大模型语境下&#xff0c;可以理解成能自主理解、规划、执行复杂任务的系统。Agent也将成为新的起点&#xff0c;成为各行各业构建新一代AI应用必不可少的组成部分。 对此&#xff0c;初创公司Seednapse AI创始人提出构建AI应用的五层基石理论&#…

redis原理 8:有备无患 —— 主从同步

很多企业都没有使用到 Redis 的集群&#xff0c;但是至少都做了主从。有了主从&#xff0c;当 master 挂掉的时候&#xff0c;运维让从库过来接管&#xff0c;服务就可以继续&#xff0c;否则 master 需要经过数据恢复和重启的过程&#xff0c;这就可能会拖很长的时间&#xff…

中国农村程序员学习了【正则表达式入门】购买大平层,开上帕拉梅拉,迎娶白富美出任CEO走上人生巅峰

文章目录 正则表达式使用测试方法匹配文字字符串同时用多种模式匹配文字字符串匹配时忽略大小写提取匹配项全局匹配用通配符匹配任何内容将单个字符与多种可能性匹配匹配字母表中的字母匹配字母表中的数字和字母匹配单个未指定的字符匹配出现一次或多次的字符匹配出现零次或多次…

AQS源码分析

AbstractQueueSynchronizer简称AQS&#xff08;抽象的队列同步器&#xff09;&#xff0c;是重量级基础框架以及JUC体系的基石&#xff0c;主要用于解决锁分配给谁的问题。 AQS入门级理论知识 整体就是一个抽象的FIFO队列来完成线程获取资源排队的工作&#xff0c;并通过一个in…