`
jin8000608172
  • 浏览: 142414 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

互联网数功能位,表扩展(flagBit,feature)

阅读更多
<select id="queryRegThreeDaysNotCharge" parameterType="map" resultMap="BaseResultMap">
		SELECT id FROM member m
		where m.register_time >= to_date(concat(to_char(sysdate-3,'yyyy-mm-dd'),' 11:00:00'),'yyyy-mm-dd hh24:mi:ss')
		<![CDATA[
			and m.register_time < to_date(concat(to_char(sysdate-2,'yyyy-mm-dd'),' 11:00:00'),'yyyy-mm-dd hh24:mi:ss')
		]]> 
		and  BITAND(m.flag_bit,${memberFlagBit}) = 0
	</select>

<update id="addMemberFlagBit" parameterType="map">
        update member set flag_bit = (flag_bit + ${flagBit}) - bitand(flag_bit, ${flagBit}) where id = #{memberId}
    </update>
    <update id="clearMemberFlagBit" parameterType="map">
        update member set flag_bit = bitand(flag_bit, ${flagBit}) where id = #{memberId}
    </update>


引用
package com.xxx.dao.domain;

public interface ExtensionFeatures {
	String getFeatures();

	void setFeatures(String features);

	int getFeaturesVersion();

	void setupFeature(String columnName, String value);

	void setupFeature(String columnName, Object value);

	void removeFeature(String columnName);

	String getFeature(String columnName);

	<T> T getFeature(String columnName, Class<T> clz);
}



package com.xxx.dao.domain;

public interface ExtensionFlagBit {
	long getFlagBit();

	/**
	 * flagBit的乐观锁字段,最好要有对应的数据表字段,要不代码/sql配置写得很麻烦。
	 * 
	 * 假设flagVersion没有数据表字段,而是用flagBit的旧值作为乐观锁:
	 * DO中有flagVersion存放从数据库刚取出时的值,
	 * 那就要setFlagBit()后手动调用setFlageVersion(),在setFlagBit()里隐藏地调用setFlagVersion()是不好的
	 * 或着mybatis中resultMap要配置多一行将同字段内容放进两个setter中。
	 * 
	 * 如果取单条要手动调用setFlagVersion(),在取出是列表时,要在manager中手动加个循环手动setFlagVersion()
	 * 
	 * 即使在mybatis中resultMap配置了多一行将同字段内容放进两个setter中,因为都是用自身的值作乐观锁,
	 * 处理不了超高频率并发交替改变这个bit的情形。
	 * 彩票行业比一些行业在这里多了一个乐观锁字段,因为我们行业会在"跟单"这业务领域在同一记录上的并发比较常见。
	 * 
	 */
	int getFlagVersion();
}



package com.xxx.dao.domain;

/**
 * <ul>
 * <li>某个设置如果不用于where条件,选用flagBit和feature都行</li>
 * <li>如果用于where条件,选用flagBit,用于where条件时用bitand()/bitor()/bitxor()函数</li>
 * <li>如果是值选取比较少,比如1~4,可以选用flagBit,或4个bit内的组合能比较对应</li>
 * <li>如果值的范围可能比较扩充,可用json表达的features</li>
 * </ul>
 * 
 * @author zhoufeng
 *
 */
public interface ExtensionField extends ExtensionFlagBit, ExtensionFeatures {

}



package com.xxxpiao.common.entity.member;

import java.util.Calendar;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Transient;

import org.hibernate.annotations.Type;

import com.xxx.dao.domain.ExtensionField;
import com.xxx.dao.domain.HasLoadedAttach;
import com.xxx.dao.util.HasLoadedAttachUtil;
import com.xxx.member.common.constant.MemberHasLoadedAttachBit;
import com.xxxpiao.common.entity.BaseEntity;
import com.xxxpiao.common.entity.enumerated.BindBankType;
import com.xxxpiao.common.entity.enumerated.CertType;
import com.xxxpiao.common.entity.enumerated.MemberStatus;
import com.xxxpiao.common.entity.enumerated.SellClient;
import com.xxxpiao.common.entity.enumerated.Sex;
import com.xxxpiao.common.entity.enumerated.ThirdType;
import com.xxxpiao.common.service.vo.RegisterType;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.Feature;
import com.alibaba.fastjson.serializer.SerializerFeature;

/**
 * 网站客户
 * 
 * @author yaya
 * 
 */
@Entity
@org.hibernate.annotations.Entity(dynamicUpdate = true)
@SequenceGenerator(name = "SEQ_MEMBER", sequenceName = "SEQ_MEMBER", allocationSize = 1, initialValue = 1)
public class Member extends BaseEntity implements HasLoadedAttach, ExtensionField {
	private static final long serialVersionUID = 6014921986862506261L;

	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_MEMBER")
	private Long id;

	@Column(nullable = false, unique = true)
	private String account;

	/** 昵称(屏蔽手机号,默认跟帐户名相同) */
	@Column(nullable = false)
	private String nickname;

	@Column(nullable = false)
	private String password;

	/** 联系电话 */
	@Column(name = "phone")
	private String phone;

	/** 电邮地址 */
	private String email;

	/** 用户状态 (0-正常,1-关闭) */
	@Enumerated
	@Column(nullable = false)
	private MemberStatus status = MemberStatus.ENABLE;

	/** 注册时间 */
	@Column(nullable = false)
	private Calendar registerTime;

	/** 来源客户端 */
	@Enumerated
	@Column(nullable = false)
	private SellClient sellClient;

	/** 市场渠道 */
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "sell_channel", nullable = false)
	private MemberMarketChannel sellChannel;

	/** 证件类型 (0-身份证,1-军官证 ,2-护照) */
	@Enumerated
	private CertType certType;

	/** 证件号码 */
	private String certNo;

	/** */
	private Calendar lastLoginTime;

	/** */
	private String name;

	/** */
	private Calendar birthday;

	/** 性别 (0-男,1-女) */
	@Enumerated
	private Sex sex;

	/** 用户所在地区 */
	private Long areaId;

	/** IM */
	private String im;

	/** 提款银行ID */
	private Long bankId;

	/** 开户行全称 */
	private String bankName;

	/** 银行帐号 */
	private String bankCardNo;

	/** 消费级别 */
	private int userLevel = 0;

	/** 头衔 */
	private String title;

	/** 推荐人 */
	private String recoMember;

	/** 用户资料完整度(0-快速注册,1-完整注册) */
	@Column(name = "INFO_FULL_STATUS")
	private int infoFullStatus;

	@Type(type = "thirdType")
	private ThirdType thirdType = ThirdType.LOCAL;

	/** 用户在第三方系统的标识,如在支付宝的标识,一般会在共享注册时设置 */
	private String thirdId;
	
	/** 用户是本站注册的,但通过第三方绑定登陆的,有这个信息*/
	private MemberThirdLogin thirdLogin;
	
	/** 注册类型,暂时不保存到数据库中 */
	@Transient
	private RegisterType registerType;

	/** 用户绑定类型 */
	@Type(type = "bindBankType")
	private BindBankType bindBankType = BindBankType.NORMAL;

	/** 用户绑定银行卡信息 **/
	private String bindBankInfo;

	/** 会员信息更新时间 */
	private Calendar updateTime = Calendar.getInstance();

	/** 用户提款手机号码绑定 */
	private String getMoneyPhone;
	/**
	 * 出生月日
	 */
	private String birthdayMmdd;
	
	@Transient
	private long attachBit;

	private Long flagBit = 0L;

	private Integer flagVersion = 0;

	private JSONObject features = new JSONObject();

	private Integer featuresVersion = 0;

	public Member() {

	}

	public Member(Long id) {
		this.id = id;
	}

	/**
	 * 快速注册用户构造方法
	 * 
	 * @param account
	 * @param password
	 * @param sellClient
	 * @param sellChannel
	 */
	public Member(String account, String password, SellClient sellClient, MemberMarketChannel sellChannel) {
		this.account = account;
		this.nickname = account;
		this.password = password;
		this.registerTime = Calendar.getInstance();
		this.sellClient = sellClient;
		this.sellChannel = sellChannel;
	}

	public Member(String account, String password) {
		this.account = account;
		this.password = password;
	}
	
	@Override
	public Long getId() {
		return id;
	}

	public String getAccount() {
		return account;
	}

	public void setAccount(String account) {
		this.account = account;
	}

	public String getNickname() {
		return nickname;
	}

	public void setNickname(String nickname) {
		this.nickname = nickname;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public MemberStatus getStatus() {
		return status;
	}

	public void setStatus(MemberStatus status) {
		this.status = status;
	}

	public Calendar getRegisterTime() {
		return registerTime;
	}

	public void setRegisterTime(Calendar registerTime) {
		this.registerTime = registerTime;
	}

	public SellClient getSellClient() {
		return sellClient;
	}

	public void setSellClient(SellClient sellClient) {
		this.sellClient = sellClient;
	}

	public MemberMarketChannel getSellChannel() {
		return sellChannel;
	}

	public void setSellChannel(MemberMarketChannel sellChannel) {
		this.sellChannel = sellChannel;
		addAttachFlag(MemberHasLoadedAttachBit.sellChannel);
	}

	public void setSellChannelId(Long sellChannel) {
		this.sellChannel = new MemberMarketChannel(sellChannel);
		removeAttachFlag(MemberHasLoadedAttachBit.sellChannel);
	}

	public CertType getCertType() {
		return certType;
	}

	public void setCertType(CertType certType) {
		this.certType = certType;
	}

	public String getCertNo() {
		return certNo;
	}

	public void setCertNo(String certNo) {
		this.certNo = certNo;
	}

	public Calendar getLastLoginTime() {
		return lastLoginTime;
	}

	public void setLastLoginTime(Calendar lastLoginTime) {
		this.lastLoginTime = lastLoginTime;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		if(name!=null){
			this.name = name.trim();
		}else{
			this.name = null;
		}
	}

	public Calendar getBirthday() {
		return birthday;
	}

	public void setBirthday(Calendar birthday) {
		this.birthday = birthday;
	}

	public Sex getSex() {
		return sex;
	}

	public void setSex(Sex sex) {
		this.sex = sex;
	}

	public Long getAreaId() {
		return areaId;
	}

	public void setAreaId(Long areaId) {
		this.areaId = areaId;
	}

	public String getIm() {
		return im;
	}

	public void setIm(String im) {
		this.im = im;
	}

	public Long getBankId() {
		return bankId;
	}

	public void setBankId(Long bankId) {
		this.bankId = bankId;
	}

	public String getBankName() {
		return bankName;
	}

	public void setBankName(String bankName) {
		this.bankName = bankName;
	}

	public String getBankCardNo() {
		return bankCardNo;
	}

	public void setBankCardNo(String bankCardNo) {
		this.bankCardNo = bankCardNo;
	}

	public int getUserLevel() {
		return userLevel;
	}

	public void setUserLevel(int userLevel) {
		this.userLevel = userLevel;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getRecoMember() {
		return recoMember;
	}

	public void setRecoMember(String recoMember) {
		this.recoMember = recoMember;
	}

	public int getInfoFullStatus() {
		if(this.name!=null && this.name.length()>0 &&
				this.phone!=null && this.phone.length()>0 &&
				this.certNo!=null && this.certNo.length()>0){
			return 1;//完善资料
		}
		return infoFullStatus;
	}

	public void setInfoFullStatus(int infoFullStatus) {
		this.infoFullStatus = infoFullStatus;
	}

	public String getThirdId() {
		return thirdId;
	}

	public void setThirdId(String thirdId) {
		this.thirdId = thirdId;
	}
	
	public MemberThirdLogin getThirdLogin() {
		return thirdLogin;
	}

	public void setThirdLogin(MemberThirdLogin thirdLogin) {
		this.thirdLogin = thirdLogin;
		this.addAttachFlag(MemberHasLoadedAttachBit.thirdLogin);
	}

	public void setId(Long id) {
		this.id = id;
	}

	public ThirdType getThirdType() {
		return thirdType;
	}

	public void setThirdType(ThirdType thirdType) {
		this.thirdType = thirdType;
	}

	public RegisterType getRegisterType() {
		return registerType;
	}

	public void setRegisterType(RegisterType registerType) {
		this.registerType = registerType;
	}

	public BindBankType getBindBankType() {
		return bindBankType;
	}

	public void setBindBankType(BindBankType bindBankType) {
		this.bindBankType = bindBankType;
	}

	public String getBindBankInfo() {
		return bindBankInfo;
	}

	public void setBindBankInfo(String bindBankInfo) {
		this.bindBankInfo = bindBankInfo;
	}

	public Calendar getUpdateTime() {
		return updateTime;
	}

	public void setUpdateTime(Calendar updateTime) {
		this.updateTime = updateTime;
	}

	public String getGetMoneyPhone() {
		return getMoneyPhone;
	}

	public void setGetMoneyPhone(String getMoneyPhone) {
		this.getMoneyPhone = getMoneyPhone;
	}
	
	@Override
	public boolean hasAttachLoaded(long bitForPart) {
		return HasLoadedAttachUtil.hasAttachLoaded(attachBit, bitForPart);
	}

	private void removeAttachFlag(long flagBit) {
		this.attachBit &= flagBit ^ Long.MAX_VALUE;
	}

	private void addAttachFlag(long flagBit) {
		this.attachBit |= flagBit;
	}

	@Override
	public long getFlagBit() {
		return this.flagBit == null ? 0 : flagBit;
	}

	@Override
	public int getFlagVersion() {
		return this.flagVersion == null ? 0 : flagVersion;
	}

	@Override
	public String getFeatures() {
		return JSON.toJSONString(features,SerializerFeature.UseISO8601DateFormat);
	}

	@Override
	public int getFeaturesVersion() {
		return this.featuresVersion == null ? 0 : featuresVersion;
	}

	@Override
	public void setupFeature(String columnName, String value) {
		features.put(columnName, value);
	}

	@Override
	public void setupFeature(String columnName, Object value) {
		features.put(columnName, value);
	}

	@Override
	public void removeFeature(String columnName) {
		features.remove(columnName);
	}

	@Override
	public String getFeature(String columnName) {
		return features.getString(columnName);
	}

	@Override
	public <T> T getFeature(String columnName, Class<T> clz) {
		return features.getObject(columnName, clz);
	}

	public void addFlagBit(Long flagBit) {
		this.flagBit |= flagBit.longValue();
	}
	public void removeFlagBit(long flagBit) {
		this.flagBit &= flagBit ^ Long.MAX_VALUE;
	}
	public void setFlagBit(Long flagBit) {
		this.flagBit = flagBit == null ? 0 : flagBit;
	}

	public void setFeatures(String features) {
		this.features = JSONObject.parseObject(features,Feature.AllowISO8601DateFormat);
	}

	public void setFlagVersion(Integer flagVersion) {
		this.flagVersion = flagVersion == null ? 0 : flagVersion;
	}

	public void setFeaturesVersion(Integer featuresVersion) {
		this.featuresVersion = featuresVersion == null ? 0 : featuresVersion;
	}

	public String getBirthdayMmdd() {
		return birthdayMmdd;
	}

	public void setBirthdayMmdd(String birthdayMmdd) {
		this.birthdayMmdd = birthdayMmdd;
	}
	
}



引用
http://blog.csdn.net/hengyunabc/article/details/34623957
  • 大小: 191.4 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    新版Android开发教程.rar

    • Windows XP (32-bit) or Vista (32- or 64-bit) • Mac OS X 10.4.8 or later (x86 only) • Linux (tested on Linux Ubuntu Dapper Drake) Supported Supported Supported Supported Development Development ...

    北京交通大学 901 软件工程 2020 年真题.pdf

    北京交通大学 901 软件工程 2020 年真题.pdf

    《基于YOLOv8的3D打印缺陷检测系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    【2025最新Java面试宝典】 ElasticSearch面试题(31道含答案)

    【2025最新Java面试宝典】 ElasticSearch面试题(31道含答案)

    基于PySide6开发的Office文本批量替换工具

    基于PySide6开发的Office文本批量替换工具,可对办公文档进行脱敏处理。

    《基于YOLOv8的宠物行为分析系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    苏苏源码-springboot454-昆仑科技文献系统(编号:100011323).zip

    标题SpringBoot在昆仑科技文献系统中的应用研究AI更换标题第1章引言介绍SpringBoot框架在昆仑科技文献系统中的研究背景、意义、现状以及论文的方法和创新点。1.1研究背景与意义分析SpringBoot框架在文献系统领域的应用价值。1.2国内外研究现状综述SpringBoot框架在文献系统中的应用情况和发展趋势。1.3论文方法与创新点阐述本文采用的研究方法和创新点。第2章SpringBoot框架概述详细介绍SpringBoot框架的基本概念、核心特性和优势。2.1SpringBoot简介概述SpringBoot的定义、发展历程和基本特点。2.2核心组件与工作原理解释SpringBoot的核心组件及其工作原理。2.3SpringBoot的优势分析SpringBoot框架相比其他框架的优势。第3章昆仑科技文献系统分析对昆仑科技文献系统进行详细的需求分析和功能设计。3.1系统需求分析明确昆仑科技文献系统的功能需求和性能需求。3.2系统功能设计根据需求分析结果,设计昆仑科技文献系统的功能模块。3.3数据库设计设计满足系统需求的数据库结构。第4章SpringBoot在昆仑科技文献系统

    2024日本美妆市场洞察报告-大数跨境.pdf

    2024日本美妆市场洞察报告-大数跨境

    《基于YOLOv8的工厂安全巡检系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    金融数据整合_Jetpack_MVVM_投资参考_辅助决策A_1742860628.zip

    app开发

    数据库技术:MySQL安装、配置与安全管理指南

    内容概要:本文全面介绍了MySQL数据库系统的安装、配置、管理及优化。首先概述了MySQL的历史和发展,强调其开源、跨平台、高性能等特点。接下来详细讲解了在Windows和Linux平台上安装MySQL的具体步骤,包括下载安装包、配置服务和环境变量等。此外,还涵盖了MySQL的初始化配置,如设置root密码、创建数据库和调整配置文件。针对MySQL的安全性,讨论了用户权限管理、防火墙配置等方面。最后,探讨了性能优化的方法,包括调整性能参数、使用监控工具和优化查询等。 适合人群:数据库管理员、运维工程师、开发人员,尤其是那些希望深入了解MySQL安装、配置和优化的人群。 使用场景及目标:①帮助用户快速掌握MySQL的安装和配置流程;②指导用户进行有效的MySQL安全管理;③提供性能优化技巧,以提高数据库的响应速度和稳定性。 其他说明:本文不仅提供了理论知识,还附带了大量的实际操作示例,方便读者理解和实践。

    《基于YOLOv8的书法作品分析系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    基于springboot框架的大学生智能消费记账系统的设计与实现(完整Java源码+数据库sql文件+项目文档+Java项目编程实战+编程练手好项目).zip

    摘 要 I Abstract II 目 录 III 第一章 课题背景及研究内容 1 1.1 课题背景 1 1.2 开发目的和意义 1 1.3 论文研究内容 1 第二章 相关技术 3 2.1 B/S结构 3 2.2 MySQL数据库 3 第三章 系统分析 5 3.1可行性分析 5 3.1.1时间可行性 5 3.1.2 经济可行性 5 3.1.3 操作可行性 5 3.1.4 技术可行性 5 3.1.5 法律可行性 5 3.2系统流程分析 6 3.3系统功能需求分析 7 3.4 系统非功能需求分析 7 第四章 系统设计 9 4.1 总体功能 9 4.2 系统模块设计 9 4.3 数据库设计 10 4.3.1 数据库设计 10 4.3.2 数据库E-R 图 10 4.3.3 数据库表设计 11 第五章 系统实现 13 5.1 管理员功能模块的实现 13 5.1.1 用户列表 13 5.1.2 预算信息管理 13 5.1.3 预算类型管理 14 第六章 系统测试 15 6.1软件测试 15 6.2测试环境 16 6.3 测试用例 16 6.3.1 用户登录测试 16 6.4.2 添

    uniapp基础框架,可直接使用

    uniapp基础框架,可直接使用

    《基于YOLOv8的体育赞助监测系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    《基于YOLOv8的钢材表面裂纹检测系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    电商技术_WordPress_UniApp_积分商城_微信小_1742855265.zip

    电商技术_WordPress_UniApp_积分商城_微信小_1742855265.zip

    2024年中国房地产市场展望报告-第一太平戴维斯.pdf

    2024年中国房地产市场展望报告-第一太平戴维斯

    一个在springboot项目部署在docker中的实例

    docker 一个在springboot项目部署在docker中的实例.

    《基于YOLOv8的篮球训练辅助系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

Global site tag (gtag.js) - Google Analytics