首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >杨校老师课堂之Java EE框架实训宠归于好项目开发(二)

杨校老师课堂之Java EE框架实训宠归于好项目开发(二)

作者头像
杨校
发布于 2020-12-16 10:16:18
发布于 2020-12-16 10:16:18
76800
代码可运行
举报
文章被收录于专栏:Java技术分享圈Java技术分享圈
运行总次数:0
代码可运行

1. 编码


1.1 创建程序包名
  • cn.javabs.pet.entity
  • cn.javabs.pet.mapper
  • cn.javabs.pet.service.impl
  • cn.javabs.pet.service
  • cn.javabs.pet.controller
  • cn.javabs.pet.util
  • cn.javabs.pet.test

客户模块:
1.2 创建实体类
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package cn.javabs.entity;

public class Users {
    // 客户编号
    private Integer id;
   // 客户用户名
    private String username;
   // 客户密码
    private String password;
   // 客户名称
    private String name;
   // 客户电话
    private String phone;
   // 客户地址
    private String address;
  
	private String passwordNew;

    public String getPasswordNew() {
		return passwordNew;
	}

	public void setPasswordNew(String passwordNew) {
		this.passwordNew = passwordNew;
	}

	public Integer getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username == null ? null : username.trim();
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password == null ? null : password.trim();
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone == null ? null : phone.trim();
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address == null ? null : address.trim();
    }
}

1.3 创建业务逻辑接口
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public interface UserService {
	 //验证用户密码
	 boolean checkUser(String username, String password);
	 //用户是否存在
	 boolean isExist(String username);
	 //添加
	 boolean add(Users user);
	 //通过id获取
	 Users get(int userId);
	 //通过username获取
	 Users get(String username);
	 //列表
	 List<Users> getList(int page, int rows);
	 //总数
	 long getTotal();
	 //更新
	 boolean update(Users user);
	 //删除
	 boolean delete(Users user);
}

1.4 创建业务逻辑实现类
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package cn.javabs.pet.service;

import java.util.List;

import cn.javabs.pet.entity.Users;
import cn.javabs.pet.mapper.UsersMapper;
import cn.javabs.pet.util.SafeUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;


/**
 * 用户服务
 */
@Service	// 注解为service层spring管理bean
@Transactional	// 注解此类所有方法加入spring事务, 具体设置默认
public class UserService {

	@Autowired		//spring注入类对象
	private UsersMapper userMapper;
	
	/**
	 * 验证用户密码
	 * @param username
	 * @param password
	 * @return
	 */
	public boolean checkUser(String username, String password){
		return userMapper.getByUsernameAndPassword(username, SafeUtil.encode(password)) != null;
	}

	/**
	 * 用户是否存在
	 * @param username
	 * @return
	 */
	public boolean isExist(String username) {
		return userMapper.getByUsername(username) != null;
	}

	/**
	 * 添加
	 * @param user
	 * @return
	 */
	public boolean add(Users user) {
		user.setPassword(SafeUtil.encode(user.getPassword()));
		return userMapper.insert(user) > 0;
	}
	
	/**
	 * 通过id获取
	 * @param userid
	 * @return
	 */
	public Users get(int userid){
		return userMapper.selectById(userid);
	}
	
	/**
	 * 通过username获取
	 * @param username
	 * @return
	 */
	public Users get(String username){
		return userMapper.getByUsername(username);
	}
	
	/**
	 * 列表
	 * @param page
	 * @param rows
	 * @return
	 */
	public List<Users> getList(int page, int rows) {
		return userMapper.getList(rows * (page-1), rows);
	}

	/**
	 * 总数
	 * @return
	 */
	public long getTotal() {
		return userMapper.getTotal();
	}

	/**
	 * 更新
	 * @param user
	 */
	public boolean update(Users user) {
		return userMapper.updateById(user) > 0;
	}

	/**
	 * 删除
	 * @param user
	 */
	public boolean delete(Users user) {
		return userMapper.deleteById(user.getId()) > 0;
	}
}
1.5 创建工具类
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package cn.javabs.pet.util;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.springframework.util.Base64Utils;


/**
 * 安全工具类
 */
public class SafeUtil {
	
	/**
	 * md5加密字符串
	 * @param str
	 * @return
	 */
	public final static String md5(String str){
		MessageDigest messageDigest = null;
		try {
			messageDigest = MessageDigest.getInstance("MD5");
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		messageDigest.update(str.getBytes());
		return Base64Utils.encodeToString(messageDigest.digest());
	}
	
	/**
	 * sha1加密字符串
	 * @param str
	 * @return
	 */
	public final static String sha1(String str){
		MessageDigest messageDigest = null;
		try {
			messageDigest = MessageDigest.getInstance("SHA-1");
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		messageDigest.update(str.getBytes());
		return Base64Utils.encodeToString(messageDigest.digest());
	}

	/**
	 * 使用特定加密范式加密
	 * @param str
	 * @return
	 */
	public final static String encode(String str){
		return md5(sha1(md5(str)));
	}
	
}

1.6 创建数据持久化接口
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package cn.javabs.pet.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import cn.javabs.pet.entity.Users;
import org.springframework.stereotype.Repository;

@Repository
public interface UsersMapper {
    int deleteById(Integer id);

    int insert(Users record);

    int insertSelective(Users record);

    Users selectById(Integer id);

    int updateByIdSelective(Users record);

    int updateById(Users record);    
    
    // 以上为mybatis generator自动生成接口, 具体实现在mapper.xml中
    
    // ------------------------------------------------------------
    
    // 以下方法使用mybatis注解实现
    
	/**
	 * 通过用户名查找用户
	 * @return 无记录返回null
	 */
    @Select("select * from users where username=#{username}")
	public Users getByUsername(String username);
	
	/**
	 * 通过用户名和密码查找
	 * @param username
	 * @param password
	 * @return 无记录返回null
	 */
    @Select("select * from users where username=#{username} and password=#{password}")
	public Users getByUsernameAndPassword(@Param("username") String username, @Param("password") String password);
	
	/**
	 * 获取列表
	 * @param page
	 * @param rows
	 * @return 无记录返回空集合
	 */
    @Select("select * from users order by id desc limit #{begin}, #{size}")
	public List<Users> getList(@Param("begin") int begin, @Param("size") int size);

	/**
	 * 总数
	 * @return
	 */
    @Select("select count(*) from users")
	public long getTotal();
}

1.7 创建控制器
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package cn.javabs.pet.controller;

import java.util.List;
import java.util.Objects;

import javax.annotation.Resource;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import cn.javabs.pet.entity.Goods;
import cn.javabs.pet.entity.Items;
import cn.javabs.pet.entity.Orders;
import cn.javabs.pet.entity.Users;
import cn.javabs.pet.service.GoodService;
import cn.javabs.pet.service.OrderService;
import cn.javabs.pet.service.TypeService;
import cn.javabs.pet.service.UserService;
import cn.javabs.util.SafeUtil;

/**
 * 用户相关接口
 */
@Controller
@RequestMapping("/index")
public class UserController{
	
	private static final String INDENT_KEY = "order";
	
	@Resource
	private UserService userService;
	@Resource
	private OrderService orderService;
	@Resource
	private GoodService goodService;
	@Resource
	private TypeService typeService;

	
	/**
	 * 注册用户
	 * @return
	 */
	@RequestMapping("/register")
	public String register(@RequestParam(required=false, defaultValue="0")int flag, Users user, Model model){
		model.addAttribute("typeList", typeService.getList());
		if(flag==-1) {
			model.addAttribute("flag", 5); // 注册页面
			return "/index/register.jsp";
		}
		if (user.getUsername().isEmpty()) {
			model.addAttribute("msg", "用户名不能为空!");
			return "/index/register.jsp";
		}else if (userService.isExist(user.getUsername())) {
			model.addAttribute("msg", "用户名已存在!");
			return "/index/register.jsp";
		}else {
			String password = user.getPassword();
			userService.add(user);
			user.setPassword(password);
			return "redirect:login?flag=-1"; // 注册成功后转去登录
		}
	}
	
	/**
	 * 用户登录
	 * @return
	 */
	@RequestMapping("/login")
	public String login(@RequestParam(required=false, defaultValue="0")int flag, Users user, HttpSession session, Model model) {
		model.addAttribute("typeList", typeService.getList());
		if(flag==-1) {
			flag = 6; // 登录页面
			return "/index/login.jsp";
		}
		if(userService.checkUser(user.getUsername(), user.getPassword())){
			session.setAttribute("user", userService.get(user.getUsername()));
			return "redirect:index";
		} else {
			model.addAttribute("msg", "用户名或密码错误!");
			return "/index/login.jsp";
		}
	}

	/**
	 * 注销登录
	 * @return
	 */
	@RequestMapping("/logout")
	public String logout(HttpSession session) {
		session.removeAttribute("user");
		session.removeAttribute("order");
		return "/index/login.jsp";
	}
	
	/**
	 * 查看购物车
	 * @return
	 */
	@RequestMapping("/cart")
	public String cart(Model model) {
		model.addAttribute("typeList", typeService.getList());
		return "/index/cart.jsp";
	}
	
	/**
	 * 购买
	 * @return
	 */
	@RequestMapping("/buy")
	public @ResponseBody String buy(int goodid, HttpSession session){
		Goods goods = goodService.get(goodid);
		if (goods .getStock() <= 0) { // 库存不足
			return "empty";
		}
		Orders order = (Orders) session.getAttribute(INDENT_KEY);
		if (order==null) {
			session.setAttribute(INDENT_KEY, orderService.add(goods));
		}else {
			session.setAttribute(INDENT_KEY, orderService.addOrderItem(order, goods));
		}
		return "ok";
	}
	
	/**
	 * 减少
	 */
	@RequestMapping("/lessen")
	public @ResponseBody String lessen(int goodid, HttpSession session){
		Orders order = (Orders) session.getAttribute(INDENT_KEY);
		if (order != null) {
			session.setAttribute(INDENT_KEY, orderService.lessenIndentItem(order, goodService.get(goodid)));
		}
		return "ok";
	}
	
	/**
	 * 删除
	 */
	@RequestMapping("/delete")
	public @ResponseBody String delete(int goodid, HttpSession session){
		Orders order = (Orders) session.getAttribute(INDENT_KEY);
		if (order != null) {
			session.setAttribute(INDENT_KEY, orderService.deleteIndentItem(order, goodService.get(goodid)));
		}
		return "ok";
	}
	
	
	/**
	 * 提交订单
	 * @return
	 */
	@RequestMapping("/save")
	public String save(ServletRequest request, HttpSession session, Model model){
		model.addAttribute("typeList", typeService.getList());
		Users user = (Users) session.getAttribute("user");
		if (user == null) {
			request.setAttribute("msg", "请登录后提交订单!");
			return "/index/login.jsp";
		}
		Orders sessionOrder = (Orders) session.getAttribute(INDENT_KEY);
		if (sessionOrder != null) {
			if (sessionOrder != null) {
				for(Items item : sessionOrder.getItemList()){ // 检测商品库存(防止库存不足)
					Goods product = goodService.get(item.getGoodId());
					if(item.getAmount() > product.getStock()){
						request.setAttribute("msg", "商品 ["+product.getName()+"] 库存不足! 当前库存数量: "+product.getStock());
						return "/index/cart.jsp";
					}
				}
			}
			sessionOrder.setUserId(user.getId());
			sessionOrder.setUser(userService.get(user.getId()));
			int orderid = orderService.save(sessionOrder);	// 保存订单
			session.removeAttribute(INDENT_KEY);	// 清除购物车
			return "redirect:topay?orderid="+orderid;
		}
		request.setAttribute("msg", "处理失败!");
		return "/index/cart.jsp";
	}
	
	/**
	 * 支付页面
	 * @return
	 */
	@RequestMapping("/topay")
	public String topay(int orderid, ServletRequest request, Model model) {
		model.addAttribute("typeList", typeService.getList());
		request.setAttribute("order", orderService.get(orderid));
		return "/index/pay.jsp";
	}
	
	/**
	 * 支付(模拟)
	 * @return
	 */
	@RequestMapping("/pay")
	public String pay(Orders order, Model model) {
		model.addAttribute("typeList", typeService.getList());
		orderService.pay(order);
		return "redirect:payok?orderid="+order.getId();
	}
	
	/**
	 * 支付成功
	 * @return
	 */
	@RequestMapping("/payok")
	public String payok(int orderid, ServletRequest request, Model model) {
		model.addAttribute("typeList", typeService.getList());
		Orders order = orderService.get(orderid);
		int paytype = order.getPaytype();
		if(paytype == Orders.PAYTYPE_WECHAT || paytype == Orders.PAYTYPE_ALIPAY) {
			request.setAttribute("msg", "订单["+orderid+"]支付成功");
		}else {
			request.setAttribute("msg", "订单["+orderid+"]货到付款");
		}
		return "/index/payok.jsp";
	}
	
	/**
	 * 查看订单
	 * @return
	 */
	@RequestMapping("/order")
	public String order(HttpSession session, Model model){
		model.addAttribute("flag", 3);
		model.addAttribute("typeList", typeService.getList());
		Users user = (Users) session.getAttribute("user");
		if (user == null) {
			model.addAttribute("msg", "请登录后查看订单!");
			return "/index/login.jsp";
		}
		List<Orders> orderList = orderService.getListByUserid(user.getId());
		if (orderList!=null && !orderList.isEmpty()) {
			for(Orders order : orderList){
				order.setItemList(orderService.getItemList(order.getId()));
			}
		}
		model.addAttribute("orderList", orderList);
		return "/index/order.jsp";
	}
	
	
	/**
	 * 个人信息
	 * @return
	 */
	@RequestMapping("/my")
	public String my(Users user, HttpSession session, Model model){
		model.addAttribute("flag", 4);
		model.addAttribute("typeList", typeService.getList());
		Users userLogin = (Users) session.getAttribute("user");
		if (userLogin == null) {
			model.addAttribute("msg", "请先登录!");
			return "/index/login.jsp";
		}
		// 进入个人中心
		if (Objects.isNull(user) || Objects.isNull(user.getId())) {
			return "/index/my.jsp";
		}
		Users u = userService.get(user.getId());
		// 修改资料
		u.setName(user.getName());
		u.setPhone(user.getPhone());
		u.setAddress(user.getAddress());
		userService.update(u);  // 更新数据库
		session.setAttribute("user", u); // 更新session
		model.addAttribute("msg", "信息修改成功!");
		// 修改密码
		if(user.getPasswordNew()!=null && !user.getPasswordNew().trim().isEmpty()) {
			if (user.getPassword()!=null && !user.getPassword().trim().isEmpty() 
					&& SafeUtil.encode(user.getPassword()).equals(u.getPassword())) {
				if (user.getPasswordNew()!=null && !user.getPasswordNew().trim().isEmpty()) {
					u.setPassword(SafeUtil.encode(user.getPasswordNew()));
				}
				userService.update(u);  // 更新数据库
				session.setAttribute("user", u); // 更新session
				model.addAttribute("msg", "密码修改成功!");
			}else {
				model.addAttribute("msg", "原密码错误!");
			}
		}
		return "/index/my.jsp";
	}
}

前台页面展示:
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/12/14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
最贵新股没破发,此前弃购7.8个亿,背靠华为的这家半导体公司这么香?
4月22日,苏州纳芯微电子股份有限公司(以下简称“纳芯微”,股票代码:688052)成功于上交所科创板上市,纳芯微本次发行价为230元/股,创造了2022年以来A股新股发行最高价格,也成为A股半导体行业新股发行价历史最高价,公司实际募得资金58.11亿元,超募6.75倍。
数据猿
2022/05/19
4160
最贵新股没破发,此前弃购7.8个亿,背靠华为的这家半导体公司这么香?
今年最大IPO!华虹公司明日申购:拟募资212亿元!
根据华虹公司的公告显示,此次华虹公司公开发行股票数量约为4.08亿股,发行后公司总股本约为17.16亿股,发行价为52元/股,预计募集资金总额为212.03亿元。而华虹公司原计划募资金额约180亿元,最终募资总额实现大幅超募。
芯智讯
2023/08/09
2130
今年最大IPO!华虹公司明日申购:拟募资212亿元!
中国芯片差在哪?这篇讲全了
在半导体这个领域,中国需要挑战的是,西方上百年积累起来的工业体系。中国半导体一直是在冒着敌人的炮火匍匐前进,如今,敌人的炮火越来越凶猛。围追堵截中,谁让我“芯”痛?
钱塘数据
2018/12/29
1.4K0
华为上半年净利暴涨218%!得益于出售荣耀和超聚变的尾款支付及股权投资收益?
今年8月11日,华为公布了2023年上半年经营业绩,实现销售收入3109亿元人民币,同比增长3.1%,净利润率为15.0%,同比提升10个百分点。8月30日,华为在上清所官网披露了2023年半年报报表,曝光了更多细节。
芯智讯
2023/09/08
5730
华为上半年净利暴涨218%!得益于出售荣耀和超聚变的尾款支付及股权投资收益?
2022年半导体材料行业研究报告
半导体材料是一类具备半导体性能(导电能力介于导体与绝缘体之间,电阻率约在1mΩ·cm~1GΩ·cm范围内),一般情况下导电率随温度的升高而提高。半导体材料具有热敏性、光敏性、掺杂性等特点,是用于晶圆制造和后道封装的重要材料,被广泛应用于汽车、照明、家用电器、消费电子、信息通讯等领域的集成电路或各类半导体器件中。
资产信息网
2022/05/05
1.1K0
2022年半导体材料行业研究报告
造芯热潮下的冷思考
伴随着智能手机革命而兴起的移动互联网时代,为我国经济社会发展注入了巨大的活力,同时也使得全国上下对互联网、半导体、集成电路(芯片)等产业的重视程度不断提高。而集成电路是半导体产业的重要组成部分,也是我国半导体产业发展最受关注的焦点。
刘旷
2020/11/03
4230
投资芯片和卖肥皂差不多?那是因为不懂芯片产业! | 镁客网深度
芯片产业的特性决定了它的门槛较高,这也决定了投资公司的门槛。 74岁的尹志尧看起来依然年轻。 这位先后在硅谷英特尔、LAM、应用材料三家公司工作逾20年,继而回国创业的古稀老人依然奋战在研发一线。 2
镁客网
2018/06/20
5793
2021年芯片行业发展研究报告
芯片,有广义和狭义之分,广义芯片包括了集成电路、传感器、分立器件、光电器件产品,狭义芯片单指集成电路。集成电路(Integrated Circuit, IC)或称微电路(Microcircuit)、微芯片(Microchip)、晶片/芯片(Chip)在电子学中是一种将电路(主要包括半导体设备,也包括被动组件等)小型化的方式,并时常制造在半导体晶圆表面上。
资产信息网
2022/04/13
1.9K0
2021年芯片行业发展研究报告
传日系光刻胶大厂断供,国产光刻胶概念股集体大涨!
3月8日消息,今日业内传出消息称,某日本某光刻胶大厂已经执行美国“实体清单”的限制要求,对中国大陆某存储晶圆厂断供了KrF光刻胶。
芯智讯
2023/03/24
6630
传日系光刻胶大厂断供,国产光刻胶概念股集体大涨!
IC是什么
很多人知道IT男,码农。但是不知道IC是啥,IC就是做集成电路芯片的,蓦然回首本翁还是学IC出身的,IC的上一级学科叫微电子学,估计更多人不知道。以前上学的时候就好奇为啥中国的半导体行业牛人很多,比如编写半导体教科书的人很多,但是就是没啥产业,全是国外的。好一点的科研设备都是国外的,用国内的发不了论文。芯片重点缺失落后在两个方面:
用户2760455
2022/06/08
1.2K0
IC是什么
半导体成新资本洼地,国产化浪潮势不可挡
近日,中芯国际成功登陆科创板。按照中芯国际发行价27.46元/股,发行16.86亿股计算,本次的募资金额是462.87亿元,比此前招股书规划的200亿元高出一倍多。
刘旷
2020/07/10
4220
又一家晶圆代工企业IPO,成立4年全球排名第15,盈利要等到2026年
近两年半导体行业掀起上市潮,数百家半导体公司接连登陆资本市场。作为承接上游IC设计、下游封装测试的晶圆代工厂们也站在时代的潮头,继中芯国际A股上市后,又有多家晶圆代工企业递交了IPO申请。
数据猿
2023/03/03
8170
又一家晶圆代工企业IPO,成立4年全球排名第15,盈利要等到2026年
总投资30亿元,张汝京再建光罩厂!
8月19日上午,南湖高新区微电子产业又添一员“猛将”——由中芯国际创始人、青岛恩芯创始人张汝京主导的光罩材料产业链项目签约仪式在浙江嘉兴科技城(南湖高新区)智立方举行。
芯智讯
2022/08/22
6410
总投资30亿元,张汝京再建光罩厂!
中芯国际上市暴涨245%,原来芯片制造才是真正的万金油生意
开盘伊始,中芯国际的股价暴涨到95元,涨幅245.96%,仅仅90分钟就有超360亿元资金成交,成科创板名副其实的“吸金王”。
科技云报道
2022/04/16
5710
中芯国际上市暴涨245%,原来芯片制造才是真正的万金油生意
月产能64.1万片,临港成中国最大晶圆制造基地!
11月23日,由上海临港经济发展(集团)有限公司主办,临港科技、ASPENCORE承办的“2023中国临港国际半导体大会”在上海临港正式召开。在会议上,临港新片区党工委副书记吴晓华、临港集团党委书兼总裁翁恺宁、临港新片区投资促进服务中心主任顾长石等相关领导详细介绍了临港的集成电路产业的发展情况。
芯智讯
2023/11/24
1K0
月产能64.1万片,临港成中国最大晶圆制造基地!
唠唠芯片设计软件EDA,为啥美国禁止华为用美国人的EDA,锁喉
还记得研究生时期,第一次玩全定制芯片版图设计,一个搞物理学的去研究芯片设计,也是摸着石头过河,熬夜学习Cadence,完成作业。没想到最近EDA也要进入大家挣的焦点了。
用户2760455
2022/06/08
1.3K0
唠唠芯片设计软件EDA,为啥美国禁止华为用美国人的EDA,锁喉
日本将限制23项半导体设备出口!对中国半导体产业影响几何?
3月31日消息,据路透社报道,日本政府于当地时间本周五宣布,计划限制23项半导体制造设备的出口。日本政府此举被认为是跟进美国去年10月出台的针对中国的半导体设备出口管制政策。
芯智讯
2023/04/11
1.3K0
日本将限制23项半导体设备出口!对中国半导体产业影响几何?
突破CPU/GPU/FPGA等高端芯片可奖励1000万!反击美方垄断的突围战在深圳打响!
近日,有着“中国硅谷”美誉的深圳发布了《深圳市关于促进半导体与集成电路产业高质量发展的若干措施(征求意见稿)》,传递了怎样的中国芯片打法?
SDNLAB
2022/12/13
6540
突破CPU/GPU/FPGA等高端芯片可奖励1000万!反击美方垄断的突围战在深圳打响!
为配合苹果iPhone订单需求,鸿海宣布明年加倍投资印度制造!
据印度媒体报道称,苹果公司(Apple)供应商鸿海的印度高管于9月18日表示,目标明年在印度雇用的劳工数和投资金额都要增加一倍,显示鸿海配合苹果iPhone订单需求,持续扩张印度制造,并看好当地市场前景。
芯智讯
2023/09/20
1970
为配合苹果iPhone订单需求,鸿海宣布明年加倍投资印度制造!
曾获华为、小米等投资,纵慧芯光VCSEL芯片累计出货量突破1亿颗
8月15日消息,国产VCSEL(垂直腔面发射激光器)厂商纵慧芯光于14日通过官方微信宣布,公司于2023年8月11日完成了总计1亿颗VCSEL芯片的出货,并保持客户现场零失效的记录!这标志着其在VCSEL领域达到了一个新的里程碑。
芯智讯
2023/09/07
3370
曾获华为、小米等投资,纵慧芯光VCSEL芯片累计出货量突破1亿颗
推荐阅读
相关推荐
最贵新股没破发,此前弃购7.8个亿,背靠华为的这家半导体公司这么香?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档