项目中日历管理学习使用
一些项目中会有日历或日期设置,最基本的会显示工作日,休息日,节假日等等,下面就是基于项目中的日历管理功能,要显示工作日,休息日,节假日
效果图
获取国家法定节假日工具类
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}]}
]
相关文章:

项目中日历管理学习使用
一些项目中会有日历或日期设置,最基本的会显示工作日,休息日,节假日等等,下面就是基于项目中的日历管理功能,要显示工作日,休息日,节假日 效果图 获取国家法定节假日工具类 public class Holi…...

【单片机】使用AD2S1210旋变芯片读取转子位置和速度
历时十天的反复调试,终于跑通了。只能说第一次做这种小工程确实缺乏经验,跟书本上学的还是有些出入。做下记录,方便后面来查看。 0. 实验要求 基于STM32单片机,使用AD2S1210旋变芯片读取电机转子位置和速度。 硬件设施&#x…...

EasyExcel实现导出图片到excel
pom依赖: <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.0</version> </dependency> 实体类: package com.aicut.monitor.vo;import com.aicut.monit…...

Cybellum—信息安全测试工具
产品概述 由于软件和数据在汽车上的使用越来越多,汽车越来越“智能化”,汽车行业面临着重大的信息安全挑战。2021年8月,ISO/SAE 21434正式发布,标准中对汽车的信息安全提出了规范化的要求,汽车信息安全不容忽视。 Cyb…...

六、Kotlin 类型进阶
1. 类的构造器 & init 代码块 1.1 主构造器 & 副构造器在使用时的注意事项 & 注解 JvmOverloads 推荐在类定义时为类提供一个主构造器; 在为类提供了主构造器的情况下,当再定义其他的副构造器时,要求副构造器必须调用到主构造器…...
Chrome 浏览器插件 runtime 字段解析
运行时 runtime 使用 chrome.runtime API 检索 Service Worker,返回有关 manifest.json 的详细信息监听和响应应用或扩展程序生命周期中的事件还可以使用此 API 将网址的相对路径转换为完整的一个 URL 一、权限 Runtime API 上的大多数方法都不需要任何权限 但是…...

七分钟交友匿名聊天室源码
多人在线聊天交友工具,无需注册即可畅所欲言!你也可以放心讲述自己的故事,说出自己的秘密,因为谁也不知道对方是谁。 运行说明: 安装依赖项:npm install 启动:node app.js 运行:直接…...

Aleo项目详细介绍-一个兼顾隐私和可编程性的隐私公链
Aleo上线在即,整理一篇项目的详细介绍,喜欢的收藏。有计划做aleo节点的可交流。 一、项目简介 Aleo 最初是在 2016 年构思的,旨在研究可编程零知识。公司由 Howard Wu、Michael Beller、Collin Chin 和 Raymond Chu 于 2019 年正式成立。 …...

qt学习:实战 http请求获取qq的吉凶
目录 利用的api是 聚合数据 的qq号码测吉凶 编程步骤 配置ui界面 添加头文件,定义网络管理者和http响应槽函数 在界面的构造函数里创建管理者对象,关联http响应槽函数 实现按钮点击事件 实现槽函数 效果 利用的api是 聚合数据 的qq号码测吉凶 先…...

【NodeJS JS】动态加载字体的各方式及注意事项;
首先加载字体这个需求基本只存在于非系统字体,系统已有字体不需要加载即可直接使用; 方案1:创建 style 标签,写入 font-face{font-family: xxx;src: url(xxx)} 等相关字体样式;将style标签添加到body里;方…...

每次请求sessionid变化【SpringBoot+Vue】
引言:花了一晚上的时间,终于把问题解决了,一开始后端做完后,用apifox所有接口测试都是可以的,但当前端跑起来后发现接收不到后端的数据。 当我写完前后端,主页面和获取当前页面信息接口后,配置了cros注解 CrossOrigin…...

勤学苦练“prompts“,如沐春风“CodeArts Snap“
前言 CodeArts Snap 上手一段时间了,对编程很有帮助。但是,感觉代码编写的不尽人意。 我因此也感到困惑,想要一份完整的 CodeArts Snap 手册看看。 就在我感觉仿佛"独自彷徨在这条悠长、悠长又寂寥的雨巷"时,我听了大…...
springboot(ssm线上医院挂号系统 在线挂号预约系统Java系统
springboot(ssm线上医院挂号系统 在线挂号预约系统Java系统 开发语言:Java 框架:springboot(可改ssm) vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7&a…...

万界星空科技可视化数据大屏的作用
随着科技的不断发展和进步,当前各种数据化的设备也是如同雨后春笋般冒了出来,并且其可以说是给我们带来了极大的便利的。在这其中,数据大屏就是非常具有代表性的一个例子。 数据大屏的主要作用包括: 数据分析:数据大屏…...

5月22日比特币披萨日,今天你吃披萨了吗?
比特币披萨日 1. Laszlo Hanyecz2. 最贵披萨诞生记3. 梭哈买披萨4. 未完待续 2010年5月22日,美国佛罗里达州的程序员Laszlo Hanyecz(拉兹洛哈涅克斯)用10000个比特币购买了棒约翰(Papa Johns)比萨店一个价值25美元的奶…...

内网穿透、远程桌面、VPN的理解
最近在研究内网穿透的相关技术,然后回想起一些相关的技术,比如说要远程桌面公司的电脑,VPN连入内网等。然后想着在此处记录一下,各个的区别,这个纯粹是从技术层面的理解,此处不详细解释怎么去实现或者用什么…...
如何发布自己的npm包,详细流程
发布自己的npm包需要遵循以下具体流程: 创建npm账号:打开浏览器,访问npm官网,注册一个npm账号。 创建项目文件夹并进入:在本地创建一个项目文件夹,并使用终端进入该文件夹。 初始化包信息管理文件&#x…...

【书生·浦语大模型实战】“PDF阅读小助手”学习笔记
1 参考资料 《新版本Lmdeploy量化手册与评测》 2 项目资料 项目主页:【tcexeexe / pdf阅读小助手】 3 模型运行测试 在InternStudio平台中选择A100 (1/4)的配置,镜像选择Cuda11.7-conda,可以选择已有的开发机langchain; 3.1…...

用ChatGPT写申请文书写进常春藤联盟?
一年前,ChatGPT 的发布引发了教育工作者的恐慌。现在,各大学正值大学申请季,担心学生会利用人工智能工具伪造入学论文。但是,聊天机器人创作的论文足以骗过大学招生顾问吗? ChatGPT简介 ChatGPT,全称聊天生…...
uni-app导航栏自定义“返回按钮”多种方法设置原生返回
方法一、 导航栏返回按钮事件 onBackPress监听页面返回,返回 event = {from:backbutton、 navigateBack} ,backbutton 表示来源是左上角返回按钮或 android 返回键;navigateBack表示来源是 uni.navigateBack;详见app、H5、支付宝小程序onBackPress() { this.back1(); …...

业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
Leetcode33( 搜索旋转排序数组)
题目表述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...

UE5 音效系统
一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类,将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix,将上述三个类翻入其中,通过它管理每个音乐…...