基于springboot+Vue的二手物品交易的设计与实现

作者: Mr顺 | 某大厂全栈开发工程师 | CSDN新星计划导师 | Java领域优质创作者
技术栈: SpringBoot, JavaWeb, 数据库等。精通Java、微信小程序开发。

项目亮点:

  • 完整可运行: 提供可直接部署运行的SpringBoot项目源码。
  • 学习/毕设利器: 非常适合Java学习、毕业设计项目参考。
  • 配套齐全: 包含数据库脚本与详细文档,方便理解与二次开发。
  • 涵盖技术广: 涉及JavaWeb、SSM、SpringBoot等主流技术。

我能提供:

  • 项目源码/文档获取: 免费提供完整项目资源。
  • 技术支持: 程序开发、技术解答、代码讲解。
  • 其他Java项目: 提供JavaWeb、SSM、SpringBoot等多种项目参考。

✨ 获取方式:三连私信我 “拍卖系统” 免费领取完整源码 + 数据库,注意关键词:免费、完整 ✨

文章目录

  • 基于springboot+Vue的二手物品交易的设计与实现
    • 摘 要
        • 1.1 课题背景
        • 1.2 课题意义
        • 1.3 研究内容
      • 1. 用户服务接口模块
      • 2. 用户服务实现模块
      • 3. JWT令牌管理模块
      • 4. 安全配置模块
      • 5. JWT过滤器模块
      • 6. 用户认证服务模块
      • 7. 自定义异常模块
      • 商家管理
      • 商品管理
      • 商品
      • 结 论
      • 致 谢


摘 要

如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统二手物品交易信息管理难度大,容错率低,管理人员处理数据费工费时,所以专门为解决这个难题开发了一个二手物品交易管理系统,可以解决许多问题。
二手物品交易管理系统按照操作主体分为管理员和用户。管理员的功能包括收货地址管理、购物车管理、字典管理、公告管理、商家管理、商品管理、用户咨询管理、商品收藏管理、商品评价管理、商品订单管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。
二手物品交易管理系统可以提高二手物品交易信息管理问题的解决效率,优化二手物品交易信息处理流程,保证二手物品交易信息数据的安全,它是一个非常可靠,非常安全的应用程序。

1.1 课题背景

互联网的兴起深刻重塑了人类社会的运作模式,极大地提升了信息流通效率并拓展了生活与精神空间。在互联网普及前,地域限制严重阻碍了思想交流,信息传递高度依赖时效低、可靠性差的人工方式(如驿站、信鸽),制约了社会发展水平。如今,计算机与互联网技术已成为社会运转的核心基础设施,深刻融入各行各业,从内部管理信息化到外部市场数据分析,其支撑作用不可或缺。

在此背景下,二手物品交易市场的繁荣对高效、规范的管理工具提出了迫切需求。传统手工或半手工管理方式难以应对日益增长的商品信息量和交易复杂度。本课题旨在设计并实现一个二手物品交易管理系统,通过数字化、自动化手段,为管理人员赋能,提升信息处理速度、规范业务流程,最终提高管理效率和效益。

1.2 课题意义

传统纸质化管理模式效率低下、易出错且难以扩展:信息记录、统计、流转高度依赖人工重复操作,耗费大量人力和时间资源;人员管理成本高,存在信息丢失、统计偏差、协同困难等风险。

计算机技术的发展为信息管理提供了革命性的解决方案。本课题研发的二手物品交易管理系统具有多重显著优势:

效率跃升: 实现信息的快速录入、处理、查询与统计,大幅缩短业务周期。
流程规范: 固化标准业务流程,减少人为随意性,保障交易公平与合规。
信息可靠: 数字化存储保障数据完整性和一致性,自动化备份机制提升信息安全性。
资源节约: 显著降低人工操作强度和错误率,优化人力资源配置。
该系统从人力成本、处理效率、信息可靠性及安全性等多个维度,全面超越传统管理模式,是提升二手交易市场运营水平的关键工具。

1.3 研究内容

本文围绕二手物品交易管理系统的设计与实现,展开系统化研究,主要内容结构如下:

第1章:绪论 - 阐述研究背景,分析二手交易管理现状与痛点,明确开发本系统的必要性与应用价值。
第2章:相关技术与环境 - 介绍系统开发所采用的关键技术栈、框架以及运行支撑环境。
第3章:系统分析 - 进行系统可行性(经济、技术、操作)分析,明确性能目标,梳理核心业务流程,定义系统功能需求。
第4章:系统设计 - 完成系统整体功能模块划分与结构设计,进行数据库概念模型(E-R图)与物理表结构设计。
第5章:系统实现与展示 - 阐述各功能模块的具体编码实现过程,并提供关键用户界面截图进行展示说明。
第6章:系统测试 - 制定测试方案,对系统功能、性能及安全性进行检测,验证系统是否达到预期目标。

在这里插入图片描述

1. 用户服务接口模块

/*** 用户服务接口定义*/
public interface UserService {// 用户注册UserDTO register(UserRegisterDTO registerDTO);// 用户登录String login(UserLoginDTO loginDTO);// 用户登出void logout(String token);// 获取用户信息UserDTO getUserInfo(Long userId);
}

2. 用户服务实现模块

/*** 用户服务实现类*/
@Service
public class UserServiceImpl implements UserService {private final UserRepository userRepository;private final PasswordEncoder passwordEncoder;private final JwtTokenProvider jwtTokenProvider;private final RedisTemplate<String, String> redisTemplate;@Autowiredpublic UserServiceImpl(UserRepository userRepository, PasswordEncoder passwordEncoder,JwtTokenProvider jwtTokenProvider,RedisTemplate<String, String> redisTemplate) {this.userRepository = userRepository;this.passwordEncoder = passwordEncoder;this.jwtTokenProvider = jwtTokenProvider;this.redisTemplate = redisTemplate;}@Override@Transactionalpublic UserDTO register(UserRegisterDTO registerDTO) {// 验证用户名唯一性if (userRepository.existsByUsername(registerDTO.getUsername())) {throw new BusinessException("用户名已存在");}// 验证邮箱唯一性if (userRepository.existsByEmail(registerDTO.getEmail())) {throw new BusinessException("邮箱已被注册");}// 密码加密处理String encodedPassword = passwordEncoder.encode(registerDTO.getPassword());// 创建用户实体User user = new User();user.setUsername(registerDTO.getUsername());user.setPassword(encodedPassword);user.setEmail(registerDTO.getEmail());user.setNickname(registerDTO.getNickname());user.setStatus(UserStatus.ACTIVE);user.setCreatedAt(LocalDateTime.now());// 保存到数据库User savedUser = userRepository.save(user);// 返回DTO对象return UserDTO.builder().id(savedUser.getId()).username(savedUser.getUsername()).email(savedUser.getEmail()).nickname(savedUser.getNickname()).build();}@Overridepublic String login(UserLoginDTO loginDTO) {// 根据用户名查找用户User user = userRepository.findByUsername(loginDTO.getUsername()).orElseThrow(() -> new AuthenticationException("用户名或密码错误"));// 验证密码if (!passwordEncoder.matches(loginDTO.getPassword(), user.getPassword())) {throw new AuthenticationException("用户名或密码错误");}// 验证用户状态if (user.getStatus() != UserStatus.ACTIVE) {throw new BusinessException("账户已被禁用,请联系管理员");}// 生成JWT令牌String token = jwtTokenProvider.generateToken(user);// 存储到Redis (token:userId)redisTemplate.opsForValue().set(token, user.getId().toString(), 7, TimeUnit.DAYS);return token;}@Overridepublic void logout(String token) {// 从Redis中删除token实现登出redisTemplate.delete(token);}@Overridepublic UserDTO getUserInfo(Long userId) {// 根据ID查询用户信息User user = userRepository.findById(userId).orElseThrow(() -> new ResourceNotFoundException("用户不存在"));return UserDTO.builder().id(user.getId()).username(user.getUsername()).email(user.getEmail()).nickname(user.getNickname()).avatar(user.getAvatar()).build();}
}

3. JWT令牌管理模块

/*** JWT令牌提供者*/
@Component
public class JwtTokenProvider {@Value("${jwt.secret}")private String jwtSecret;@Value("${jwt.expiration}")private long jwtExpirationInMs;// 生成JWT令牌public String generateToken(User user) {Date now = new Date();Date expiryDate = new Date(now.getTime() + jwtExpirationInMs);return Jwts.builder().setSubject(Long.toString(user.getId())).setIssuedAt(new Date()).setExpiration(expiryDate).signWith(SignatureAlgorithm.HS512, jwtSecret).compact();}// 从令牌中获取用户IDpublic Long getUserIdFromJWT(String token) {Claims claims = Jwts.parser().setSigningKey(jwtSecret).parseClaimsJws(token).getBody();return Long.parseLong(claims.getSubject());}
}

4. 安全配置模块

/*** Spring Security安全配置*/
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Autowiredprivate JwtTokenProvider tokenProvider;@Autowiredprivate CustomUserDetailsService customUserDetailsService;@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.userDetailsService(customUserDetailsService).passwordEncoder(passwordEncoder());}@Beanpublic PasswordEncoder passwordEncoder() {return new BCryptPasswordEncoder();}@Bean@Overridepublic AuthenticationManager authenticationManagerBean() throws Exception {return super.authenticationManagerBean();}@Overrideprotected void configure(HttpSecurity http) throws Exception {http.cors().and().csrf().disable().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().authorizeRequests().antMatchers("/api/auth/**").permitAll().antMatchers("/api/public/**").permitAll().anyRequest().authenticated().and().apply(new JwtConfigurer(tokenProvider));}
}

5. JWT过滤器模块

/*** JWT认证过滤器*/
public class JwtTokenFilter extends OncePerRequestFilter {private final JwtTokenProvider tokenProvider;private final CustomUserDetailsService userDetailsService;public JwtTokenFilter(JwtTokenProvider tokenProvider, CustomUserDetailsService userDetailsService) {this.tokenProvider = tokenProvider;this.userDetailsService = userDetailsService;}@Overrideprotected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {try {String token = getJwtFromRequest(request);if (StringUtils.hasText(token) && tokenProvider.validateToken(token)) {Long userId = tokenProvider.getUserIdFromJWT(token);UserDetails userDetails = userDetailsService.loadUserById(userId);UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));SecurityContextHolder.getContext().setAuthentication(authentication);}} catch (Exception ex) {logger.error("无法设置用户认证", ex);}filterChain.doFilter(request, response);}// 从请求头提取JWT令牌private String getJwtFromRequest(HttpServletRequest request) {String bearerToken = request.getHeader("Authorization");if (StringUtils.hasText(bearerToken) && bearerToken.startsWith("Bearer ")) {return bearerToken.substring(7);}return null;}
}

6. 用户认证服务模块

/*** 自定义用户详情服务*/
@Service
public class CustomUserDetailsService implements UserDetailsService {private final UserRepository userRepository;@Autowiredpublic CustomUserDetailsService(UserRepository userRepository) {this.userRepository = userRepository;}@Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {User user = userRepository.findByUsername(username).orElseThrow(() -> new UsernameNotFoundException("用户未找到: " + username));return UserPrincipal.create(user);}// 根据ID加载用户public UserDetails loadUserById(Long id) {User user = userRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException("用户未找到", "id", id));return UserPrincipal.create(user);}
}/*** 用户认证主体*/
public class UserPrincipal implements UserDetails {private Long id;private String username;private String password;private Collection<? extends GrantedAuthority> authorities;public UserPrincipal(Long id, String username, String password, Collection<? extends GrantedAuthority> authorities) {this.id = id;this.username = username;this.password = password;this.authorities = authorities;}// 创建用户主体public static UserPrincipal create(User user) {List<GrantedAuthority> authorities = Collections.singletonList(new SimpleGrantedAuthority("ROLE_" + user.getRole().name()));return new UserPrincipal(user.getId(),user.getUsername(),user.getPassword(),authorities);}// 实现UserDetails接口@Overridepublic Collection<? extends GrantedAuthority> getAuthorities() {return authorities;}@Overridepublic String getPassword() {return password;}@Overridepublic String getUsername() {return username;}@Overridepublic boolean isAccountNonExpired() {return true;}@Overridepublic boolean isAccountNonLocked() {return true;}@Overridepublic boolean isCredentialsNonExpired() {return true;}@Overridepublic boolean isEnabled() {return true;}public Long getId() {return id;}
}

7. 自定义异常模块

/*** 业务逻辑异常*/
public class BusinessException extends RuntimeException {public BusinessException(String message) {super(message);}
}/*** 认证相关异常*/
public class AuthenticationException extends RuntimeException {public AuthenticationException(String message) {super(message);}
}/*** 资源未找到异常*/
public class ResourceNotFoundException extends RuntimeException {public ResourceNotFoundException(String message) {super(message);}public ResourceNotFoundException(String resourceName, String fieldName, Object fieldValue) {super(String.format("%s 未找到 %s : '%s'", resourceName, fieldName, fieldValue));}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
等等

商家管理

在这里插入图片描述

商品管理

在这里插入图片描述

商品

在这里插入图片描述

结 论

基于计算机专业背景所掌握的开发知识,我对开发既定课题的二手物品交易管理系统,在功能需求分析、模块划分、数据库选型与设计、编程语言选择、界面布局与设计等方面,已具备清晰的思路框架。通过整合现有理论知识并辅以网络技术资源,我能够确保在系统开发后期完成配套文档的编写工作。

在系统开发过程中,我面临了若干挑战,包括:模块划分不够细致、数据库表结构设计存在疑虑,以及对某些开发技术的深层理解尚需加强。针对这些问题,我积极利用网络资源和学院图书馆寻求解决方案。例如,在功能定义阶段,我通过分析大量同类系统源码,结合本项目需求进行综合考量,最终提炼并设计了契合本系统的核心功能模块。在数据库设计方面,我通过查阅文献资料并参考成熟系统的表结构,根据本系统的具体需求完成了配套的数据表设计。对于技术实现难点(主要集中在数据的增删改查操作),我投入了大量时间进行代码调试与适配,将可复用的基础代码进行修改和集成,并通过测试验证,最终构建出一个能够解决用户实际问题的完整系统。

该系统目前存在的主要不足在于:部分代码冗余度较高,有待进一步优化以提高可维护性;同时,对于用户的误操作行为,系统缺乏及时有效的错误反馈机制,用户体验有待提升。

系统开发完成后,我依据学院规范要求撰写了配套文档,详细阐述了系统的分析、设计与实现过程,以便于他人理解。尽管在文档排版方面因不常使用办公软件而耗费较多时间,但通过持续学习排版技巧和反复修改,最终在规定时间内完成了定稿。

整个毕业项目的实践,使我收获颇丰。正是通过主动学习、积极寻求解决方案,才得以提交一份完整的作品。这不仅深化了我的专业知识,更锻炼了我独立解决问题的方法和能力。

致 谢

大学开放包容的管理模式,赋予了我平衡学习与实践的自由。课堂之外,参与社会实践、图书馆阅读、社团活动以及与来自五湖四海的同学交流,不仅丰富了我的知识储备,也使我性格愈发开朗,愉快地度过了宝贵的四年时光。毕业在即,离别难免,但这也是人生成长必经的阶段。

回首大学生活,深感专业知识和实践能力都得到了显著提升。这一切离不开专业老师们的辛勤教导,是他们传授了扎实的知识,锻炼了我的实操能力,在此深表谢意。

特别感谢我的论文指导老师。在毕业设计期间,导师以其深厚的专业素养,给予了我全面而细致的指导。针对我的不足之处,总能推荐合适的参考资料,帮助我克服开发中的困难,提升了我的综合能力。

同时,衷心感谢我的室友和同班同学们。在毕业设计任务下达后,我们经常交流进展、探讨问题、相互鼓励。这份陪伴极大地缓解了我项目过程中的焦虑情绪。

最后,我要向承载我四年青春的美丽校园致以最深的谢意。能在如此优美的环境中学习成长,我感到无比幸福。衷心祝愿母校在全体师生的共同努力下,日益发展壮大,环境更加美好!

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

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

相关文章

腾讯云轻量服务器创建快照免费API接口教程

接口简介 该API用于腾讯云轻量服务器系统盘快照创建&#xff0c;无需关机即可自动删除旧快照并创建新快照。特点包括&#xff1a; 不占用腾讯云快照配额支持自动备份策略适用于定时备份任务仅支持系统盘快照&#xff08;云硬盘需调用专用接口&#xff09; ​请求地址​ https…

C++中的智能指针(1):unique_ptr

一、背景普通指针是指向某块内存区域地址的变量。如果一个指针指向的是一块动态分配的内存区域&#xff0c;那么即使这个指针变量离开了所在的作用域&#xff0c;这块内存区域也不会被自动销毁。动态分配的内存不进行释放则会导致内存泄漏。如果一个指针指向的是一块已经被释放…

HTTPS安全机制:从加密到证书全解析

目录 1.HTTPS是什么 2.加密是什么 3.HTTPS的加密过程 3.1对称加密 3.2非对称加密 4.引入证书 4.1"中间人"攻击 4.2 引入证书机制 4.3 理解数据签名 4.4 非对称加密 对称加密 证书认证 5.常见问题 5.1 Fiddler等抓包工具&#xff0c;为啥能解析HTTPS的数据…

2024年深度学习技术主要发展分析

摘要&#xff1a;深度学习作为人工智能领域的战略级技术&#xff0c;在2024年持续取得突破性进展&#xff0c;持续重构现代战争规则&#xff0c;成为大国军事智能化竞争的核心角力点。对2024年深度学习技术热门领域的主要发展进行了综合评述。研究了深度学习技术的发展现状&…

Swift 枚举:深入理解与高效使用

Swift 枚举:深入理解与高效使用 引言 Swift 枚举(Enum)是 Swift 编程语言中的一种基本数据类型,它允许我们将一组相关的值组合在一起。枚举在 Swift 中有着广泛的应用,从简单的数据分类到复杂的业务逻辑处理,枚举都能发挥巨大的作用。本文将深入探讨 Swift 枚举的原理、…

从大模型到云游戏,国鑫SY8108G-G4如何化身“全能AI引擎”?

当大模型参数量突破万亿级&#xff0c;传统服务器在散热枷锁与扩展瓶颈前举步维艰。国鑫全新推出的 SY8108G-G4 8U8卡AI服务器 &#xff0c;以颠覆性架构支持8张600W GPU全速并行&#xff0c;结合CPU-GPU直连、冗余电源和弹性扩展三大优势&#xff0c;为AI训练、生成式创作、数…

在多个DHCP服务器的网络环境中选择指定的DHCP服务

问题 学校有两个网络&#xff0c;我电脑网线插在同一个交换机的同一个接口上&#xff0c;有时候获取的是172.27开头的IP&#xff0c;有时候获取的是192.168开头的IP。 通常第一次开机获取的是172.27的IP&#xff0c;插拔网线或重启网络接口后会变为192.168的IP。 两个网络各有…

【Nginx】实测Nginx增加第三方主动式健康检查模块

一、环境说明系统版本&#xff1a;CentOS 7.9内核版本&#xff1a;3.10.0-1160.119.1Nginx版本&#xff1a;1.26.3第三方检测模块及版本&#xff1a;nginx_upstream_check_module&#xff08;v0.4.0&#xff0c;兼容nginx 1.20&#xff09;二、nginx安装部署2.1 下载检测模块目…

pytest中mark的使用

在pytest中&#xff0c;mark&#xff08;标记&#xff09;是用于对测试用例进行分类、筛选或附加元数据的重要功能。以下是其核心使用方法&#xff1a; 1. ‌基本标记定义与使用‌ ‌注册标记‌&#xff1a;在pytest.ini中预先定义标记&#xff08;避免运行时警告&#xff09;&…

STM32N6--NPU简单介绍

关键词&#xff1a;STM32N6、生物神经元、神经网络处理单元&#xff08;NPU&#xff09;、数据流处理 参考链接&#xff1a; RM0486 Reference manual STM32N647/657xx Arm-based 32-bit MCUsST_中文论坛【资料合集】STM32N6超全资料合集&#xff08;定期更新&#xff09;B站_…

一款开源免费、通用的 WPF 主题控件包

前言 今天大姚给大家分享一款开源免费&#xff08;MIT License&#xff09;、通用的 WPF 主题控件包&#xff1a;Rubyer WPF。 WPF介绍 WPF是一个强大的桌面应用程序框架&#xff0c;用于构建具有丰富用户界面的 Windows 应用。它提供了灵活的布局、数据绑定、样式和模板、动…

windows安装python环境以及对应编辑器的详细流程

windows安装python环境以及对应编辑器的详细流程 一、安装 Python 环境 步骤 1&#xff1a;下载 Python 安装包 访问 Python 官网&#xff1a;https://www.python.org/downloads/windows/选择最新稳定版本&#xff08;如 Python 3.12.x&#xff09;&#xff0c;点击 Download W…

高保真组件库:下拉多选

制作一个高保真的下拉多选需要具备多种交互事件。 拖拽一个文本框并命名为“下拉文本输入框”和一个向下的箭头组合在一起,外观上看起来是下拉组件。为了美观调整一些边框颜色、圆角、文字左边距等。 拖拽一个矩形作为下拉选项的容器,启动阴影xy都为0 制作下拉选项:拖拽一个…

sqli-labs靶场通关笔记:第1-4关 联合注入

第1关&#xff1a;单引号闭合1.这是第1关的界面&#xff0c;让我们以id作为参数输入&#xff0c;方式为数值&#xff0c;这里输入?id1看一下。2.显示了id1的用户名和密码。分析&#xff1a;在sql注入漏洞中&#xff0c;第一步是要寻找注入点&#xff0c;即可以输入参数的地方&…

和服腰封改造:3种解构主义造型的东方美学新解

和服腰封改造&#xff1a;3种解构主义造型的东方美学新解在东京原宿的小巷里&#xff0c;一场关于和服腰封的"温柔革命"正在悄然发生。年轻设计师们将传统宽腰带拆解重构&#xff0c;创造出既保留东方神韵又充满当代气息的造型艺术。正如一位新锐设计师所说&#xff…

什么是强化学习(RL)--3

如果reward大多数情况下都是0&#xff0c;只有少数是很大的值。这种情况下就是稀疏reward的问题。比如你要教机械手臂拴螺丝&#xff0c;只有最后把螺丝栓进去才可以&#xff0c;其余机械手臂的位置都不可以。额外的reward帮agent学习。reward shaping射击游戏cs,这个游戏中&am…

彩虹云商城全解源码系统|人工客服系统

核心升级亮点 人工客服系统&#xff1a;新增智能工单在线IM双模式多端同步&#xff1a;PCH5小程序APP四端数据实时互通支付升级&#xff1a;支持数字人民币收款安全加固&#xff1a;内置Web应用防火墙(WAF) 部署教程 ▶ B站视频教程 包含&#xff1a; 宝塔环境配置&#xf…

川翔云电脑:突破硬件极限,重构设计生产力范式

一、硬核配置&#xff1a;显存与算力的双重革命川翔云电脑提供从 RTX 2080 Ti 到 RTX 4090 Plus 的全系列 GPU 机型&#xff0c;其中旗舰级 4090 Plus 单卡配备48GB 超大显存&#xff0c;较传统 4090 显存翻倍&#xff0c;可流畅加载 1200 万面数的超复杂模型&#xff08;如《黑…

深入解析 TCP 连接状态与进程挂起、恢复与关闭

文章目录深入解析 TCP 连接状态与进程挂起、恢复与关闭一、TCP 连接的各种状态1. **LISTEN**&#xff08;监听&#xff09;2. **SYN_SENT**&#xff08;SYN 已发送&#xff09;3. **SYN_RECEIVED**&#xff08;SYN 已接收&#xff09;4. **ESTABLISHED**&#xff08;已建立&…

在mac m1基于llama.cpp运行deepseek

lama.cpp是一个高效的机器学习推理库&#xff0c;目标是在各种硬件上实现LLM推断&#xff0c;保持最小设置和最先进性能。llama.cpp支持1.5位、2位、3位、4位、5位、6位和8位整数量化&#xff0c;通过ARM NEON、Accelerate和Metal支持Apple芯片&#xff0c;使得在MAC M1处理器上…