项目中日历管理学习使用

一些项目中会有日历或日期设置,最基本的会显示工作日,休息日,节假日等等,下面就是基于项目中的日历管理功能,要显示工作日,休息日,节假日

效果图

在这里插入图片描述

获取国家法定节假日工具类

public class HolidayUtils {private static Logger logger = LoggerFactory.getLogger(HolidayUtils.class);public static Map<String,Map<String,OtherData>> monthToHolidayDate = new ConcurrentHashMap<>(12);public static Map<String,OtherData> dateToOtherData = new ConcurrentHashMap<>(12);public static void main(String[] args) {System.out.println(getAllHoliday(2024));}/*** 获取周末和节假日** @param year* @return*/public static List<String> getAllHoliday(int year) {// 获取所有的周末Set<String> allWeekend = getAllWeekend(year);// http://timor.tech/api/holiday api文档地址Map apiHoliday = getApiHoliday(year);Integer code = (Integer) apiHoliday.get("code");if (code != 0) {return null;}Map<String, Map<String, Object>> holiday = (Map<String, Map<String, Object>>) apiHoliday.get("holiday");Set<String> strings = holiday.keySet();for (String str : strings) {Map<String, Object> stringObjectMap = holiday.get(str);Integer wage = (Integer) stringObjectMap.get("wage");String date = (String) stringObjectMap.get("date");//筛选掉补班if (wage.equals(1)) {allWeekend.remove(date);} else {allWeekend.add(date);}int monthByDate = CalendarUtils.getMonthByDate(CalendarUtils.parseDateStrToDate(date, "yyyy-MM-dd"));if (!monthToHolidayDate.containsKey(monthByDate)){monthToHolidayDate.put(monthByDate+"",new HashMap<>());}Map<String, OtherData> dateToOtherData = monthToHolidayDate.get(monthByDate);if (dateToOtherData == null) dateToOtherData = new HashMap<>();if (!dateToOtherData.containsKey(date)){OtherData otherData = new OtherData();otherData.putAll(stringObjectMap);dateToOtherData.put(date,otherData);dateToOtherData.put(date,otherData);}}List<String> result = new ArrayList<>(allWeekend);result = result.stream().sorted().collect(Collectors.toList());return result;}/*** 获取节假日不含周末** @param year* @return*/private static Map getApiHoliday(int year) {String url = "http://timor.tech/api/holiday/year/" + year;String rsa = HttpUtil.get(url);logger.info("rsa:{}",rsa);Map map = JsonConverter.jsonStrToObject(rsa, Map.class);return map;}/*** 获取周末  月从0开始** @param year* @return*/public static Set<String> getAllWeekend(int year) {Set<String> dateList = new HashSet<>();SimpleDateFormat simdf = new SimpleDateFormat("yyyy-MM-dd");Calendar calendar = new GregorianCalendar(year, 0, 1);Calendar endCalendar = new GregorianCalendar(year, 11, 31);while (true) {int weekday = calendar.get(Calendar.DAY_OF_WEEK);if (weekday == 1 || weekday == 7) {dateList.add(simdf.format(calendar.getTime()));}calendar.add(Calendar.DATE, 1);if (calendar.getTimeInMillis() >= endCalendar.getTimeInMillis()) {break;}}return dateList;}public static Map<String,OtherData> getHolidayByMonth(String month,Date date){if (monthToHolidayDate == null) return new HashMap<>();if (StringUtils.isNotBlank(month)){month = CalendarUtils.getMonthByDate(date) + "";Map<String, OtherData> dateToOtherData = monthToHolidayDate.get(month);if (dateToOtherData == null) dateToOtherData = new HashMap<>();return dateToOtherData;}return new HashMap<>();}public static OtherData getHolidayByDate(Date date){String month = CalendarUtils.getMonthByDate(date) + "";Map<String, OtherData> dateToOtherData = monthToHolidayDate.get(month);if (dateToOtherData == null || dateToOtherData.size() == 0) return null;String dateStr = CalendarUtils.toString(date, "yyyy-MM-dd");OtherData otherData = dateToOtherData.get(dateStr);if (otherData != null && otherData.obtainVal("wage",Integer.class) != null&& 1 == otherData.obtainVal("wage",Integer.class)){return null;}return otherData;}public static String isHoliday(Date date){String month = CalendarUtils.getMonthByDate(date) + "";Map<String, OtherData> dateToOtherData = monthToHolidayDate.get(month);if (dateToOtherData == null || dateToOtherData.size() == 0) return null;String dateStr = CalendarUtils.toString(date, "yyyy-MM-dd");OtherData otherData = dateToOtherData.get(dateStr);if (otherData == null) return null;if (otherData != null && otherData.obtainVal("wage",Integer.class) != null&& 1 == otherData.obtainVal("wage",Integer.class)){return DateRec.DATE_TYPE_WORK;}return DateRec.DATE_TYPE_HOLIDAY;}}

返回的JSON数据格式

{"code": 0,"holiday": {"01-01": {"holiday": true,"name": "元旦","wage": 3,"date": "2024-01-01","rest": 1},"02-04": {"holiday": false,"name": "春节前补班","wage": 1,"after": false,"target": "春节","date": "2024-02-04","rest": 9},"02-10": {"holiday": true,"name": "初一","wage": 3,"date": "2024-02-10","rest": 15},"02-11": {"holiday": true,"name": "初二","wage": 3,"date": "2024-02-11","rest": 1},"02-12": {"holiday": true,"name": "初三","wage": 3,"date": "2024-02-12"},"02-13": {"holiday": true,"name": "初四","wage": 2,"date": "2024-02-13"},"02-14": {"holiday": true,"name": "初五","wage": 2,"date": "2024-02-14"},"02-15": {"holiday": true,"name": "初六","wage": 2,"date": "2024-02-15"},"02-16": {"holiday": true,"name": "初七","wage": 2,"date": "2024-02-16"},"02-17": {"holiday": true,"name": "初八","wage": 2,"date": "2024-02-17"},"02-18": {"holiday": false,"name": "春节后补班","wage": 1,"after": true,"target": "春节","date": "2024-02-18"},"04-04": {"holiday": true,"name": "清明节","wage": 3,"date": "2024-04-04","rest": 46},"04-05": {"holiday": true,"name": "清明节","wage": 2,"date": "2024-04-05"},"04-06": {"holiday": true,"name": "清明节","wage": 2,"date": "2024-04-06"},"04-07": {"holiday": false,"name": "清明节后补班","wage": 1,"target": "清明节","after": true,"date": "2024-04-07"},"04-28": {"holiday": false,"name": "劳动节前补班","wage": 1,"target": "劳动节","after": false,"date": "2024-04-28"},"05-01": {"holiday": true,"name": "劳动节","wage": 3,"date": "2024-05-01"},"05-02": {"holiday": true,"name": "劳动节","wage": 2,"date": "2024-05-02","rest": 1},"05-03": {"holiday": true,"name": "劳动节","wage": 3,"date": "2024-05-03"},"05-04": {"holiday": true,"name": "劳动节","wage": 3,"date": "2024-05-04"},"05-05": {"holiday": true,"name": "劳动节","wage": 3,"date": "2024-05-05"},"05-11": {"holiday": false,"name": "劳动节后补班","after": true,"wage": 1,"target": "劳动节","date": "2024-05-11"},"06-08": {"holiday": true,"name": "端午节","wage": 2,"date": "2024-06-08"},"06-09": {"holiday": true,"name": "端午节","wage": 2,"date": "2024-06-09"},"06-10": {"holiday": true,"name": "端午节","wage": 3,"date": "2024-06-10"},"09-14": {"holiday": false,"name": "中秋节前补班","after": false,"wage": 1,"target": "中秋节","date": "2024-09-14","rest": 96},"09-15": {"holiday": true,"name": "中秋节","wage": 2,"date": "2024-09-15","rest": 97},"09-16": {"holiday": true,"name": "中秋节","wage": 2,"date": "2024-09-16"},"09-17": {"holiday": true,"name": "中秋节","wage": 3,"date": "2024-09-17"},"09-29": {"holiday": false,"name": "国庆节前补班","after": false,"wage": 1,"target": "国庆节","date": "2024-09-29"},"10-01": {"holiday": true,"name": "国庆节","wage": 3,"date": "2024-10-01"},"10-02": {"holiday": true,"name": "国庆节","wage": 3,"date": "2024-10-02","rest": 1},"10-03": {"holiday": true,"name": "国庆节","wage": 3,"date": "2024-10-03"},"10-04": {"holiday": true,"name": "国庆节","wage": 2,"date": "2024-10-04"},"10-05": {"holiday": true,"name": "国庆节","wage": 2,"date": "2024-10-05"},"10-06": {"holiday": true,"name": "国庆节","wage": 2,"date": "2024-10-06","rest": 1},"10-07": {"holiday": true,"name": "国庆节","wage": 2,"date": "2024-10-07","rest": 1},"10-12": {"holiday": false,"after": true,"wage": 1,"name": "国庆节后补班","target": "国庆节","date": "2024-10-12"}}
}

实体模型

@Entity
@Table(name = "t_daterec",indexes={@Index(name="idx_t_daterec1",columnList="dateType"),@Index(name="idx_t_daterec2",columnList="dateTime")}
)
public class DateRec extends ExBizEntity {public static final String DATE_TYPE_WORK = "work";public static final String DATE_TYPE_WEEKEND = "weekend";public static final String DATE_TYPE_HOLIDAY = "holiday";@Column(length=20,nullable=false)private String dateType;//日历类型private Date dateTime;//日期public String getDateType() {return dateType;}public Date getDateTime() {return dateTime;}public DateRec() {}public DateRec(String id,String dateType, Date dateRTime) {this.id = id;this.dateType = dateType;this.dateTime = dateTime;}
}
@Entity
@Table(name = "t_holiday",indexes={@Index(name="idx_t_holiday1",columnList="holidayDate")}
)
public class Holiday extends ExBizEntity{private Date holidayDate;public Holiday() {}public Holiday(Date holidayDate) {this.holidayDate = holidayDate;}public Date getHolidayDate() {return holidayDate;}
}

超类

@MappedSuperclass
public abstract class ExBizEntity extends ValueObjectEntity {@Type(type="com.xysd.common.utils.hibernateType.MyCustomJsonType")private OtherData exAttr = new OtherData();//额外属性mappublic OtherData getExAttr() {return exAttr;}protected ExBizEntity(){super();}protected ExBizEntity(Map<String, Object> exAttr) {super();this.getNotNullExAttrWithUpdate().putAll(exAttr);}//获取非空扩展属性private OtherData getNotNullExAttrWithUpdate() {if(this.exAttr == null) this.exAttr = new OtherData();return this.exAttr;}public void clearExAttr(){this.exAttr = null;}//更新扩展属性public void updateExAttr(Map<String, Object> exAttr){this.getNotNullExAttrWithUpdate().clear();if(exAttr==null) {this.exAttr = null;return;}this.addAttrs(exAttr);}//添加扩展属性public void addAttr(String key, Object value){if(StringUtils.isBlank(key)) return;if(value==null) {this.getNotNullExAttrWithUpdate().remove(key);}else {this.getNotNullExAttrWithUpdate().put(key, value);}}//添加扩展属性public void addAttrs(Map<String, Object> exAttr){if(exAttr==null) return;for (Map.Entry<String,Object> e : exAttr.entrySet()) {this.addAttr(e.getKey(), e.getValue());}}//获取指定类型的对象@Transientpublic <T> T getAttr(String key) {if(this.exAttr==null) return null;return this.exAttr.obtainVal(key);}//获取指定类型的对象@Transientpublic <T> T getAttr(String key, Class<T> valClass) {if(this.exAttr==null) return null;return this.exAttr.obtainVal(key, valClass);}//获取指定转换类型的对象@Transientpublic <T> T getAttr(String key, TypeReference<T> valTypeRef) {if(this.exAttr==null) return null;return this.exAttr.obtainVal(key, valTypeRef);}}
@MappedSuperclass
public abstract class ValueObjectEntity extends IEntity{public static String SYSCODE_CAD="cad";//系统编码-cad:cad接口protected Date createTime = new Date();//创建时间@Type(type = "org.hibernate.type.NumericBooleanType")protected boolean history=false;@Column(length=40)protected String createIp;//创建时的ipprotected int valid=1;//有效性protected Date lastUpdateDate = new Date();//最后更新时间@Column(length=10)protected String syscode=SYSCODE_HDXF; //数据系统编码public Date getCreateTime() {return createTime;}public boolean isHistory() {return history;}public String getCreateIp() {return createIp;}public int getValid() {return valid;}public Date getLastUpdateDate() {return lastUpdateDate;}public String getSyscode() {return syscode;}protected ValueObjectEntity() {super();}@Transientpublic boolean isValidEntity(){return this.getValid()==1;}public void updateValid(int valid){this.valid = valid;}}
@MappedSuperclass
public abstract class IEntity {@Id@Column(length=100)@GeneratedValue(generator="uuidkey")@GenericGenerator(name="uuidkey", strategy = "com.xysd.common.utils.BaseIDGenerator")protected String id;public String getId() {return this.id;}/*** 对比俩个实体是否是同一个*/public boolean compareObject(IEntity other) {return other != null && new EqualsBuilder().append(this.id, other.getId()).isEquals();}}
public class BaseIDGenerator implements IdentifierGenerator {private static AutoIncrementIdUtil autoIncrementIdUtil;public static void registAutoIncrementIdUtil(AutoIncrementIdUtil autoIncrementIdUtil){BaseIDGenerator.autoIncrementIdUtil = autoIncrementIdUtil;}@Overridepublic Serializable generate(SharedSessionContractImplementor arg0,Object o) throws HibernateException {if(o instanceof NeedAutoIncrementId){NeedAutoIncrementId entity = (NeedAutoIncrementId) o;String id = entity.obtainId();if(!StringUtils.isEmpty(id)){entity.initId(id);}else {id = autoIncrementIdUtil.getId(entity.getClass().getSimpleName(), entity.obtainParentId(),entity.obtainLength(), entity.obtainSeparator());entity.initId(id);}return id;}if(o instanceof IEntity){//允许自己指定IDIEntity be = (IEntity)o;if(StringUtils.isNotBlank(be.getId())){return be.getId();}}return Utils.getUUID("");}
}

接口

@ApiOperation(value="日历管理查看",httpMethod="GET")@ApiImplicitParams({@ApiImplicitParam(name="year",value="年份",required=true),@ApiImplicitParam(name="month",value="月份",required=true)})@RequestMapping(value = "/dates/list", method = RequestMethod.GET)public String getDates(@RequestParam int year, @RequestParam int month, HttpServletRequest hreq) {String weeks = myService.getDates(year,month);return weeks;}}

Service服务及封装数据

@Service
public class MyService {@Autowiredprivate DateRecRepositoryHibernate dateRecRepositoryHibernate;@PostConstructpublic void init(){//加载国家法定节假日HolidayUtils.getAllHoliday(CalendarUtils.getCurrentYear());Map<String, OtherData> dateToOtherData = HolidayUtils.dateToOtherData;List<Holiday> holidays = this.dateRecRepositoryHibernate.getHolidays();if (CollectionUtils.isNotEmpty(holidays)) {for (Holiday holiday : holidays) {HolidayUtils.dateToOtherData.put(CalendarUtils.toString(holiday.getHolidayDate(), "yyyy-MM-dd"), holiday.getExAttr());}} else {for (Map.Entry<String, OtherData> entry : dateToOtherData.entrySet()) {Holiday h = new Holiday(CalendarUtils.parseDateStrToDate(entry.getKey(), "yyyy-MM-dd"));h.addAttrs(entry.getValue());this.dateRecRepositoryHibernate.createOrUpdateHoliday(h);}}}public String getDates(int year, int month) {//要返回前端展示使用List<WeekDTO> weeks = new ArrayList<WeekDTO>();//获取year年month月的第一天Date monthBegin = CalendarUtils.getMonthBeginByYearAndMonth(year, month);//获取year年month月的最后一天Date monthEnd = CalendarUtils.getMonthEndByYearAndMonth(year, month);WeekValObj wo = CalendarUtils.getWeekValObjByDateOfYear(monthBegin);//获取year年month月的第一天是这一年中第几周int weekNumOfMonthBegin = wo.getWeek();//selectYear就是yearint selectedYear = wo.getYear();Map<String, DateDTO> allDates = new HashMap<String, DateDTO>();List<String> dates = new ArrayList<String>();int weekNum = 7;for (int k = 0; k < weekNum; k++) {//获取selectyear年总共有几周int maxWeekOfYear = CalendarUtils.getMaxWeekCountByYear(selectedYear);//获取selectedYear年第weekNumOfMonthBegin周的第一天日期Date weekBegin = CalendarUtils.getWeekBeginByYearAndWeek(selectedYear, weekNumOfMonthBegin);List<DateDTO> weekDates = new ArrayList<DateDTO>();if (weekBegin == null) {//如果没有获取到 则默认为year+1年的第一周的第一天日期weekBegin = CalendarUtils.getWeekBeginByYearAndWeek(year + 1, 1);}if (weekBegin != null && weekBegin.getTime() < monthEnd.getTime()) {for (int i = 0; i < 7; i++) {//开始取第weekNumOfMonthBegin周的第i天Date d = DateUtils.addDays(weekBegin, i);String type = null;if (StringUtils.isNotBlank(HolidayUtils.isHoliday(d))) {type = HolidayUtils.isHoliday(d);} else {type = DateRec.DATE_TYPE_WORK;if (i >= 5) {type = DateRec.DATE_TYPE_WEEKEND;}}//是否要展示boolean display = d.getTime() >= monthBegin.getTime() && d.getTime() <= monthEnd.getTime();String dateStr = CalendarUtils.toString(d, "yyyy-MM-dd");DateDTO dateDTO = new DateDTO(dateStr, type, display);weekDates.add(dateDTO);allDates.put(dateDTO.getDate(), dateDTO);}weeks.add(new WeekDTO(year, weekNumOfMonthBegin, weekDates));}if (weekNumOfMonthBegin >= maxWeekOfYear) {selectedYear++;weekNumOfMonthBegin = 1;} else {weekNumOfMonthBegin++;}}dates.addAll(allDates.keySet());Map<String, Object> params = new HashMap<>();params.put("dates", dates);List<DateRec> existedDateRecs = this.dateRecRepositoryHibernate.getDateRecBy(params);for (DateRec drec : existedDateRecs) {//已存在的DateDTO dto = allDates.remove(drec.getId());if (dto != null) {dto.setDateType(drec.getDateType());}}for (DateDTO dto : allDates.values()) {//需要创建的DateRec drec = new DateRec(dto.getDate(),dto.getDateType(), CalendarUtils.parseDateStrToDate(dto.getDate(), "yyyy-MM-dd"));this.dateRecRepositoryHibernate.createOrUpdateDateRec(drec);}return JsonConverter.toJsonStr(weeks);}}

数据基础层

@Repository
public class DateRecRepositoryHibernate extends JpaHibernateRepository {public void createOrUpdateDateRec(DateRec dateRec){this.getSession().saveOrUpdate(dateRec);}public List<DateRec> getDateRecBy(Map<String,Object> params){StringBuffer sql = new StringBuffer();sql.append(" select id from t_daterec where valid = 1 ");if (params.get("ids") != null){sql.append(" and id in (:ids) ");}if (params.get("dates") != null){sql.append(" and date in (:dates) ");}if (params.get("dateTypes") != null){sql.append(" and date_type in (:dateTypes) ");}List<String> ids = this.createSQLQueryByMapParams(sql.toString(), params).list();if (CollectionUtils.isEmpty(ids)) return new ArrayList<>();List<DateRec> recs = this.findByOrderedIds(DateRec.class, ids);if (recs == null) return new ArrayList<>();return recs;}public void createOrUpdateHoliday(Holiday holiday){this.getSession().saveOrUpdate(holiday);}public List<Holiday> getHolidays(){String sql = "select d from " + Holiday.class.getName() + " d where d.holidayDate >= : begin and d.holidayDate <= :end ";List<Holiday> list = this.createHQLQueryByMapParams(Holiday.class, sql, Utils.buildMap("begin", CalendarUtils.getCurrentYearBeginDate(), "end", CalendarUtils.getCurrentYearEndDate())).list();if (list == null) list = new ArrayList<>();return list;}
}

请求返回值

[{"year": 2024,"weekNum": 5,"dates": [{"date": "2024-01-29","dateType": "work","display": false},{"date": "2024-01-30","dateType": "work","display": false},{"date": "2024-01-31","dateType": "work","display": false},{"date": "2024-02-01","dateType": "work","display": true},{"date": "2024-02-02","dateType": "work","display": true},{"date": "2024-02-03","dateType": "weekend","display": true},{"date": "2024-02-04","dateType": "weekend","display": true}]},{"year": 2024,"weekNum": 6,"dates": [{"date": "2024-02-05","dateType": "work","display": true},{"date": "2024-02-06","dateType": "work","display": true},{"date": "2024-02-07","dateType": "work","display": true},{"date": "2024-02-08","dateType": "work","display": true},{"date": "2024-02-09","dateType": "work","display": true},{"date": "2024-02-10","dateType": "weekend","display": true},{"date": "2024-02-11","dateType": "weekend","display": true}]},{"year": 2024,"weekNum": 7,"dates": [{"date": "2024-02-12","dateType": "work","display": true},{"date": "2024-02-13","dateType": "work","display": true},{"date": "2024-02-14","dateType": "work","display": true},{"date": "2024-02-15","dateType": "work","display": true},{"date": "2024-02-16","dateType": "work","display": true},{"date": "2024-02-17","dateType": "weekend","display": true},{"date": "2024-02-18","dateType": "weekend","display": true}]},{"year": 2024,"weekNum": 8,"dates": [{"date": "2024-02-19","dateType": "work","display": true},{"date": "2024-02-20","dateType": "work","display": true},{"date": "2024-02-21","dateType": "work","display": true},{"date": "2024-02-22","dateType": "work","display": true},{"date": "2024-02-23","dateType": "work","display": true},{"date": "2024-02-24","dateType": "weekend","display": true},{"date": "2024-02-25","dateType": "weekend","display": true}]},{"year": 2024,"weekNum": 9,"dates": [{"date": "2024-02-26","dateType": "work","display": true},{"date": "2024-02-27","dateType": "work","display": true},{"date": "2024-02-28","dateType": "work","display": true},{"date": "2024-02-29","dateType": "work","display": true},{"date": "2024-03-01","dateType": "work","display": false},{"date": "2024-03-02","dateType": "weekend","display": false},{"date": "2024-03-03","dateType": "weekend","display": false}]}
]

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

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

相关文章

项目中遇到通过域名访问服务提示 Service name unknow

目录 项目中遇到通过域名访问服务提示 Service name unknow 1.问题描述2.问题原因3.解决思路4.解决方案文章所属专区 项目问题解决 1.问题描述 在CentOS 系统环境下 项目中遇到通过域名访问服务提示 Service name unknow,但是 网络是连通的 通过ping 和telnet都能够验证。 …

【江科大】STM32:外部中断(Extern Interrupt)

文章目录 EXTI&#xff08;Extern Interrupt&#xff09;外部中断EXIT的基本结构EXIT框图 旋转编码器简介库函数&#xff1a;对射式红外传感器计次&#xff1a;代码展示&#xff1a;旋转编码器计次注意&#xff1a; EXTI&#xff08;Extern Interrupt&#xff09;外部中断 功能…

STM32标准库开发—W25Q64详细介绍

W25Q64简介 Flash编程原理都是只能将1写为0&#xff0c;而不能将0写成1.所以在Flash编程之前&#xff0c;必须将对应的块擦除&#xff0c;而擦除的过程就是将所有位都写为1的过程&#xff0c;块内的所有字节变为0xFF.因此可以说&#xff0c;编程是将相应位写0的过程&#xff0c…

Codewave学习体验分享:低代码开发世界的黑马

前言 Codewave平台介绍 CodeWave智能低代码开发平台基于网易自研拥有大规模参数和深度学习能力的智能模型底座产品架构,为企业级应用提供更加智能化研发的软件生产方式,IT人员可以轻易实现从“智能生成”到“可视化拖拽调整”的全栈低代码应用搭建,让复杂应用开发更加高效,加快…

Flink生产环境相关问题

1. FlinkKafka保证精确一次消费相关问题&#xff1f; Fink的检查点和恢复机制和可以重置读位置的source连接器结合使用&#xff0c;比如kafka&#xff0c;可以保证应用程序不会丢失数据。尽管如此&#xff0c;应用程序可能会发出两次计算结果&#xff0c;因为从上一次检查点恢…

Azure Private endpoint DNS 记录是如何解析的

Private endpoint 从本质上来说是Azure 服务在Azure 虚拟网络中安插的一张带私有地址的网卡。 举例来说如果Storage account在没有绑定private endpoint之前&#xff0c;查询Storage account的DNS记录会是如下情况&#xff1a; Seq Name …

Java 字符串 06 练习-字符串拼接、反转、金额转换(黑马)

代码&#xff1a; //import java.util.Scanner; public class practice{public static void main(String[] args) {int arr [] {1,2,3,4};String str arrToString(arr);System.out.println(str);}public static String arrToString(int [] arr){if(arrnull){return "&q…

(27)Linux信号的产生核心转储---初步认识信号

一、信号入门 1. 生活角度的信号 你在网上买了很多件商品&#xff0c;再等待不同商品快递的到来。但即便快递没有到来&#xff0c;你也知道快递来临时&#xff0c; 你该怎么处理快递。也就是你能“识别快递”当快递员到了你楼下&#xff0c;你也收到快递到来的通知&#xff0…

docker 体验怀旧游戏(魂斗罗等)

docker run --restart always -p 8081:80 --name fc-games -d registry.cn-hangzhou.aliyuncs.com/bystart/fc-games:latest ip:8081访问 jsnes: js制作了一个网页版的NES模拟&#xff0c;可以在网页上玩fc游戏 (gitee.com)

git用法总结

以gitee为例&#xff0c;GitHub也可参考本文 创建远程仓库 在自己的gitee主页 创建本地仓库 在文件夹下&#xff0c;右键→git bash here git init添加gitignore vi .gitignoregitignore里的内容根据自己实际情况设置&#xff0c;这里举个例子 # #开头的是注释 # Prer…

MiniTab的单值的变量控制图——I-MR 控制图分析

单值的变量控制图分为&#xff1a;I-MR 控制图、Z-MR 控制图、单值控制图、移动极差控制图4种。 I-MR 控制图 功能菜单请选择&#xff1a;统计>控制图>单值的变量控制图>I-MR。 使用 I-MR 控制图 可以在拥有连续数据且这些数据是不属于子组的单个观测值的情况下监视…

HarmonyOS漫谈---套壳安卓还是套壳苹果?HarmonyOS更像谁?

2020年以前华为手机的操作系统是EMUI,这个是在Android基础上扩展而来的,版本和android几乎一致,和市面上其它android手机厂家搭载的系统并无本质不同 2019年5月16日,美国针对华为发起了第一轮制裁。8月华为发布了HarmonyOS1.0,此时还只是主要在IOT设备上使用,智慧屏成为…

探索 DevOps 中的自动化技术

DevOps 是一种强调开发与 IT 运营之间合作的软件开发范式&#xff0c;主要依靠自动化来优化流程、提高生产力并确保及时、可靠的软件交付。以下是对 DevOps 不可或缺的关键自动化技术的探索&#xff1a; 1.持续集成/持续部署&#xff08;CI/CD&#xff09; 在 DevOps 领域&…

恒创科技:香港服务器内存不足有哪些原因?

内存是服务器中非常重要的组件之一&#xff0c;它直接影响服务器的运行速度和稳定性。然而&#xff0c;在使用香港服务器的过程中&#xff0c;有时候会出现内存不足的情况&#xff0c;导致服务器性能下降&#xff0c;甚至出现宕机等问题。那么&#xff0c;香港服务器内存不足的…

css设置不可点击

文章目录 一、前言二、MDN三、使用四、注意五、总结六、最后 一、前言 在网页开发中&#xff0c;经常会遇到一种情况&#xff0c;就是需要将某个元素的点击事件屏蔽&#xff0c;使其在用户点击时没有任何反应。这时候&#xff0c;我们可以通过CSS的pointer-events属性设置为no…

视频编码器行业研究:预计到2028年全球市场规模将达到180.92亿元

随着AI技术向视频产业生产、传输和消费环节的渗透&#xff0c;AI技术在视频分析中的应用逐渐常态化&#xff0c;智能视频衍生而出。智能视频的多元应用重塑了视频产业链&#xff0c;视频处理技术根据不同的视频应用多维迸发&#xff0c;视频编解码技术与AI技术的结合具有共性和…

【开源】基于JAVA语言的公司货物订单管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 客户管理模块2.2 商品维护模块2.3 供应商管理模块2.4 订单管理模块 三、系统展示四、核心代码4.1 查询供应商信息4.2 新增商品信息4.3 查询客户信息4.4 新增订单信息4.5 添加跟进子订单 五、免责说明 一、摘要 1.1 项目…

find命令 – 根据路径和条件搜索指定文件

linux-find find命令通常进行的是从根目录&#xff08;/&#xff09;开始的全盘搜索&#xff0c;有别于whereis、which、locate等有条件或部分文件的搜索。对于服务器负载较高的情况&#xff0c;建议不要在高峰时期使用find命令的模糊搜索&#xff0c;这会相对消耗较多的系统资…

【代码随想录-数组】有序数组的平方

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

【STM32】STM32学习笔记-BKP备份寄存器和RTC实时时钟(42)

00. 目录 文章目录 00. 目录01. BKP简介02. BKP特性03. BKP基本结构04. RTC简介05. RTC主要特性06. RTC框图07. RTC基本结构08. 硬件电路09. RTC操作注意事项10. 附录 01. BKP简介 备份寄存器是42个16位的寄存器&#xff0c;可用来存储84个字节的用户应用程序数据。他们处在备…