Java项目:零食商城系统(java+SSM+jsp+MySQL+EasyUI)
源码获取:博客首页 "资源" 里下载!
系统主要实现的功能有:用户浏览商品、加入商品到购物车、登录注册、提交订单,会员中心修改个人信息、查看订单等。
后台管理员登录后可以分角色添加管理员,不同角色有不同权限,可以管理用户信息、商品信息、订单信息,订单信息可以导出到excel。其中支付是模拟在线支付,从账户余额中扣费的,用户注册后自动设置余额为指定值。
后台相关接口:
/*** 后台相关接口*/
@Controller
@RequestMapping("/admin")
public class AdminController {private static final int rows = 10;@Autowiredprivate AdminService adminService;@Autowiredprivate OrderService orderService;@Autowiredprivate UserService userService;@Autowiredprivate GoodService goodService;@Autowiredprivate TopService topService;@Autowiredprivate TypeService typeService;@Autowiredprivate SkuService skuService;/*** 管理员登录* @return*/@GetMapping("/login")public String log() {return "/admin/login.jsp";}/*** 管理员登录* @return*/@PostMapping("/login")public String login(Admins admin, HttpServletRequest request, HttpSession session) {if (adminService.checkUser(admin.getUsername(), admin.getPassword())) {session.setAttribute("username", admin.getUsername());return "redirect:typeList";}request.setAttribute("msg", "用户名或密码错误!");return "/admin/login.jsp";}/*** 退出* @return*/@RequestMapping("/logout")public String logout(HttpSession session) {session.removeAttribute("admin");return "/admin/login.jsp";}/*** 后台首页* @return*/@RequestMapping("/index")public String index(HttpServletRequest request) {request.setAttribute("msg", "恭喜你! 登录成功了");return "/admin/index.jsp";}/*** 类目列表* * @return*/@RequestMapping("/typeList")public String typeList(HttpServletRequest request) {request.setAttribute("flag", 1);request.setAttribute("typeList", typeService.getList());return "/admin/type_list.jsp";}/*** 类目添加* * @return*/@RequestMapping("/typeAdd")public String typeAdd(HttpServletRequest request) {request.setAttribute("flag", 1);return "/admin/type_add.jsp";}/*** 类目添加* * @return* @throws Exception */@RequestMapping("/typeSave")public String typeSave(Types type, MultipartFile file,@RequestParam(required=false, defaultValue="1") int page) throws Exception {type.setCover(UploadUtil.upload(file));typeService.add(type);return "redirect:typeList?flag=1&page="+page;}/*** 类目更新* * @return*/@RequestMapping("/typeEdit")public String typeEdit(int id, HttpServletRequest request) {request.setAttribute("flag", 1);request.setAttribute("type", typeService.get(id));return "/admin/type_edit.jsp";}/*** 类目更新* * @return* @throws Exception */@RequestMapping("/typeUpdate")public String typeUpdate(Types type, MultipartFile file,@RequestParam(required=false, defaultValue="1") int page) throws Exception {if (Objects.nonNull(file) && !file.isEmpty()) {type.setCover(UploadUtil.upload(file));}typeService.update(type);return "redirect:typeList?flag=1&page="+page;}/*** 类目删除* * @return*/@RequestMapping("/typeDelete")public String typeDelete(Types type, @RequestParam(required=false, defaultValue="1") int page) {typeService.delete(type);return "redirect:typeList?flag=1&page="+page;}/*** sku列表* * @return*/@RequestMapping("/skuList")public String skuList(@RequestParam(required=false, defaultValue="0")byte status, HttpServletRequest request) {request.setAttribute("flag", 2);request.setAttribute("status", status);request.setAttribute("skuList", status>0 ? skuService.getSizeList() : skuService.getColorList());return "/admin/sku_list.jsp";}/*** sku添加* * @return*/@RequestMapping("/skuSave")public String skuSave(String name, int status) {if(status > 0) {skuService.addSize(name);}else {skuService.addColor(name);}return "redirect:skuList?status="+status;}/*** sku删除* * @return*/@RequestMapping("/skuDelete")public String skuDelete(int id, int status) {if(status > 0) {skuService.deleteSize(id);}else {skuService.deleteColor(id);}return "redirect:skuList?status="+status;}/*** 产品列表* * @return*/@RequestMapping("/goodList")public String goodList(@RequestParam(required=false, defaultValue="0")byte status, HttpServletRequest request, @RequestParam(required=false, defaultValue="1") int page) {request.setAttribute("flag", 3);request.setAttribute("page", page);request.setAttribute("status", status);request.setAttribute("goodList", goodService.getList(status, page, rows));request.setAttribute("pageTool", PageUtil.getPageTool(request, goodService.getTotal(status), page, rows));return "/admin/good_list.jsp";}/*** 产品添加* * @return*/@RequestMapping("/goodAdd")public String goodAdd(HttpServletRequest request) {request.setAttribute("flag", 3);request.setAttribute("typeList", typeService.getList());request.setAttribute("colorList", skuService.getColorList());request.setAttribute("sizeList", skuService.getSizeList());return "/admin/good_add.jsp";}/*** 产品添加* * @return* @throws Exception */@RequestMapping("/goodSave")public String goodSave(Goods good, MultipartFile file,@RequestParam(required=false, defaultValue="1") int page) throws Exception {good.setCover(UploadUtil.upload(file));goodService.add(good);return "redirect:goodList?flag=3&page="+page;}/*** 产品更新* * @return*/@RequestMapping("/goodEdit")public String goodEdit(int id, HttpServletRequest request) {request.setAttribute("flag", 3);request.setAttribute("typeList", typeService.getList());request.setAttribute("colorList", skuService.getColorList());request.setAttribute("sizeList", skuService.getSizeList());request.setAttribute("good", goodService.get(id));return "/admin/good_edit.jsp";}/*** 产品更新* * @return* @throws Exception */@RequestMapping("/goodUpdate")public String goodUpdate(Goods good, MultipartFile file, @RequestParam(required=false, defaultValue="1") int page) throws Exception {if (Objects.nonNull(file) && !file.isEmpty()) {good.setCover(UploadUtil.upload(file));}goodService.update(good);return "redirect:goodList?flag=3&page="+page;}/*** 产品删除* * @return*/@RequestMapping("/goodDelete")public String goodDelete(int id, @RequestParam(required=false, defaultValue="1") int page) {goodService.delete(id);return "redirect:goodList?flag=3&page="+page;}/*** 添加推荐* @return*/@RequestMapping("/topSave")public @ResponseBody String topSave(Tops tops, @RequestParam(required=false, defaultValue="0")byte status,@RequestParam(required=false, defaultValue="1") int page) {int id = topService.add(tops);return id > 0 ? "ok" : null;}/*** 删除推荐* @return*/@RequestMapping("/topDelete")public @ResponseBody String topDelete(Tops tops, @RequestParam(required=false, defaultValue="0")byte status,@RequestParam(required=false, defaultValue="1") int page) {boolean flag = topService.delete(tops);return flag ? "ok" : null;}/*** 订单列表* * @return*/@RequestMapping("/orderList")public String orderList(@RequestParam(required=false, defaultValue="0")byte status, HttpServletRequest request,@RequestParam(required=false, defaultValue="1") int page) {request.setAttribute("flag", 4);request.setAttribute("status", status);request.setAttribute("orderList", orderService.getList(status, page, rows));request.setAttribute("pageTool", PageUtil.getPageTool(request, orderService.getTotal(status), page, rows));return "/admin/order_list.jsp";}/*** 订单发货* * @return*/@RequestMapping("/orderDispose")public String orderDispose(int id, byte status,@RequestParam(required=false, defaultValue="1") int page) {orderService.dispose(id);return "redirect:orderList?flag=4&status="+status+"&page="+page;}/*** 订单完成* * @return*/@RequestMapping("/orderFinish")public String orderFinish(int id, byte status,@RequestParam(required=false, defaultValue="1") int page) {orderService.finish(id);return "redirect:orderList?flag=4&status="+status+"&page="+page;}/*** 订单删除* * @return*/@RequestMapping("/orderDelete")public String orderDelete(int id, byte status,@RequestParam(required=false, defaultValue="1") int page) {orderService.delete(id);return "redirect:orderList?flag=4&status="+status+"&page="+page;}/*** 顾客管理* * @return*/@RequestMapping("/userList")public String userList(HttpServletRequest request,@RequestParam(required=false, defaultValue="1") int page) {request.setAttribute("flag", 5);request.setAttribute("userList", userService.getList(page, rows));request.setAttribute("pageTool", PageUtil.getPageTool(request, userService.getTotal(), page, rows));return "/admin/user_list.jsp";}/*** 顾客添加* * @return*/@RequestMapping("/userAdd")public String userAdd(HttpServletRequest request) {request.setAttribute("flag", 5);return "/admin/user_add.jsp";}/*** 顾客添加* * @return*/@RequestMapping("/userSave")public String userSave(Users user, HttpServletRequest request, @RequestParam(required=false, defaultValue="1") int page) {if (userService.isExist(user.getUsername())) {request.setAttribute("msg", "用户名已存在!");return "/admin/user_add.jsp";}userService.add(user);return "redirect:userList?flag=5&page="+page;}/*** 顾客密码重置页面* * @return*/@RequestMapping("/userRe")public String userRe(int id, HttpServletRequest request) {request.setAttribute("flag", 5);request.setAttribute("user", userService.get(id));return "/admin/user_reset.jsp";}/*** 顾客密码重置* * @return*/@RequestMapping("/userReset")public String userReset(Users user, @RequestParam(required=false, defaultValue="1") int page) {String password = SafeUtil.encode(user.getPassword());user = userService.get(user.getId());user.setPassword(password);userService.update(user);return "redirect:userList?page="+page;}/*** 顾客更新* * @return*/@RequestMapping("/userEdit")public String userEdit(int id, HttpServletRequest request) {request.setAttribute("flag", 5);request.setAttribute("user", userService.get(id));return "/admin/user_edit.jsp";}/*** 顾客更新* * @return*/@RequestMapping("/userUpdate")public String userUpdate(Users user, @RequestParam(required=false, defaultValue="1") int page) {userService.update(user);return "redirect:userList?flag=5&page="+page;}/*** 顾客删除* * @return*/@RequestMapping("/userDelete")public String userDelete(Users user, @RequestParam(required=false, defaultValue="1") int page) {userService.delete(user);return "redirect:userList?flag=5&page="+page;}/*** 管理员列表* * @return*/@RequestMapping("/adminList")public String adminList(HttpServletRequest request, @RequestParam(required=false, defaultValue="1") int page) {request.setAttribute("flag", 6);request.setAttribute("adminList", adminService.getList(page, rows));request.setAttribute("pageTool", PageUtil.getPageTool(request, adminService.getTotal(), page, rows));return "/admin/admin_list.jsp";}/*** 管理员添加* * @return*/@RequestMapping("/adminAdd")public String adminAdd(HttpServletRequest request) {request.setAttribute("flag", 6);return "/admin/admin_add.jsp";}/*** 管理员密码重置* * @return*/@RequestMapping("/adminRe")public String adminRe(int id, HttpServletRequest request) {request.setAttribute("flag", 6);request.setAttribute("admin", adminService.get(id));return "/admin/admin_reset.jsp";}/*** 管理员密码重置* * @return*/@RequestMapping("/adminReset")public String adminReset(Admins admin, HttpServletRequest request,@RequestParam(required=false, defaultValue="1") int page) {String password = SafeUtil.encode(admin.getPassword());admin = adminService.get(admin.getId());admin.setPassword(password);adminService.update(admin);return "redirect:adminList?page="+page;}/*** 管理员添加* * @return*/@RequestMapping("/adminSave")public String adminSave(Admins admin, HttpServletRequest request, @RequestParam(required=false, defaultValue="1") int page) {if (adminService.isExist(admin.getUsername())) {request.setAttribute("msg", "用户名已存在!");return "/admin/admin_add.jsp";}adminService.add(admin);return "redirect:adminList?flag=6&page="+page;}/*** 管理员修改* * @return*/@RequestMapping("/adminEdit")public String adminEdit(int id, HttpServletRequest request) {request.setAttribute("flag", 6);request.setAttribute("admin", adminService.get(id));return "/admin/admin_edit.jsp";}/*** 管理员更新* * @return*/@RequestMapping("/adminUpdate")public String adminUpdate(Admins admin, @RequestParam(required=false, defaultValue="1") int page) {admin.setPassword(SafeUtil.encode(admin.getPassword()));adminService.update(admin);return "redirect:adminList?flag=6&page="+page;}/*** 管理员删除* * @return*/@RequestMapping("/adminDelete")public String adminDelete(Admins admin, @RequestParam(required=false, defaultValue="1") int page) {adminService.delete(admin);return "redirect:adminList?flag=6&page="+page;}}
用户相关接口:
/*** 用户相关接口*/
@Controller
@RequestMapping("/index")
public class UserController{@Resourceprivate UserService userService;@Resourceprivate OrderService orderService;@Resourceprivate GoodService goodService;@Resourceprivate TypeService typeService;@Resourceprivate ShopcartService shopcartService;@Resourceprivate SkuService skuService;/*** 用户注册* @return*/@GetMapping("/register")public String reg(Model model) {model.addAttribute("flag", -1); // 注册页面return "/index/register.jsp";}/*** 用户注册* @return*/@PostMapping("/register")public String register(Users user, Model model){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 "/index/index"; // 注册成功后转去登录}}/*** 用户登录* @return*/@GetMapping("/login")public String log() {return "/index/index";}/*** 用户登录* @return*/@PostMapping("/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/index";}if(userService.checkUser(user.getUsername(), user.getPassword())){Users loginUser = userService.get(user.getUsername());session.setAttribute("user", loginUser);// 还原购物车数量session.setAttribute("total", shopcartService.getTotal(loginUser.getId()));return "redirect:index";} else {model.addAttribute("msg", "用户名或密码错误!");return "/index/index";}}/*** 注销登录* @return*/@RequestMapping("/logout")public String logout(HttpSession session) {session.removeAttribute("user");session.removeAttribute("order");return "/index/index";}/*** 查看购物车* @return*/@RequestMapping("/shopcart")public String shopcart(Model model, HttpSession session) {Users user = (Users) session.getAttribute("user");if (user == null) {model.addAttribute("msg", "请先登录!");return "/index/index";}model.addAttribute("typeList", typeService.getList());model.addAttribute("shopcartList", shopcartService.getList(user.getId()));model.addAttribute("totalPrice", shopcartService.getTotalPrice(user.getId()));return "/index/shopcart.jsp";}/*** 购买* @return*/@RequestMapping("/buy")public @ResponseBody int buy(Shopcart shopcart, HttpSession session, Model model){Users user = (Users) session.getAttribute("user");if (user == null) {return -111;}shopcart.setUserId(user.getId());shopcart.setGood(goodService.get(shopcart.getGoodId()));// 验证库存
// int stock = skuService.getStock(shopcart.getGoodId(), shopcart.getColorId(), shopcart.getSizeId());
// if(shopcart.getAmount() > stock) {
// model.addAttribute("msg", "商品 [ " + shopcart.getGood().getName() + " ] 库存不足! 当前库存只有: " + stock);
// }return orderService.save(Arrays.asList(shopcart), user);}/*** 购买* @return*/@RequestMapping("/cart")public @ResponseBody int cart(Shopcart shopcart, HttpSession session, Model model){Users user = (Users) session.getAttribute("user");if (user == null) {return -111;}shopcart.setUserId(user.getId());shopcartService.save(shopcart);int total = shopcartService.getTotal(user.getId());session.setAttribute("total", total);return total;}/*** 添加*/@RequestMapping("/add")public @ResponseBody boolean add(int skuid, HttpSession session){Users user = (Users) session.getAttribute("user");if (user == null) {return false;}return shopcartService.add(skuid);}/*** 减少*/@RequestMapping("/less")public @ResponseBody boolean less(int skuid, HttpSession session){Users user = (Users) session.getAttribute("user");if (user == null) {return false;}return shopcartService.less(skuid);}/*** 删除*/@RequestMapping("/delete")public @ResponseBody boolean delete(int skuid, HttpSession session){Users user = (Users) session.getAttribute("user");if (user == null) {return false;}shopcartService.delete(skuid);session.setAttribute("total", shopcartService.getTotal(user.getId()));return true;}/*** 总金额* @return*/@RequestMapping("/total")public @ResponseBody int total(HttpSession session){Users user = (Users) session.getAttribute("user");if (user == null) {return -111;}return shopcartService.getTotalPrice(user.getId());}/*** 提交订单* @return*/@RequestMapping("/save")public String save(ServletRequest request, HttpSession session, Model model){Users user = (Users) session.getAttribute("user");if (user == null) {model.addAttribute("msg", "请先登录!");return "/index/index";}List<Shopcart> shopcartList = shopcartService.getList(user.getId());if(Objects.isNull(shopcartList) || shopcartList.isEmpty()) {model.addAttribute("msg", "购物车没有商品");return shopcart(model, session);}// 验证库存for(Shopcart cart : shopcartList) {int stock = skuService.getStock(cart.getGoodId(), cart.getColorId(), cart.getSizeId());if(cart.getAmount() > stock) {model.addAttribute("msg", "商品 [ " + cart.getGood().getName() + " ] 库存不足! 当前库存只有: " + stock);return shopcart(model, session);}}int orderid = orderService.save(shopcartList, user);if(orderid > 0) {// 清空购物车session.setAttribute("total", shopcartService.getTotal(user.getId()));// 跳转支付return "redirect:topay?orderid="+orderid;} model.addAttribute("msg", "出了点问题");return shopcart(model, session);}/*** 支付页面* @return*/@RequestMapping("/topay")public String topay(int orderid, ServletRequest request, HttpSession session) {Users user = (Users) session.getAttribute("user");if (user == null) {request.setAttribute("msg", "请先登录!");return "/index/index";}request.setAttribute("typeList", typeService.getList());request.setAttribute("order", orderService.get(orderid));return "/index/pay.jsp";}/*** 支付(模拟)* @return*/@RequestMapping("/pay")public String pay(Orders order, ServletRequest request, HttpSession session) {Users user = (Users) session.getAttribute("user");if (user == null) {request.setAttribute("msg", "请先登录!");return "/index/index";}// 模拟支付orderService.pay(order);request.setAttribute("typeList", typeService.getList());request.setAttribute("order", orderService.get(order.getId()));request.setAttribute("msg", "支付成功! 即将跳转到订单列表");return "/index/pay.jsp";}/*** 查看订单* @return*/@RequestMapping("/order")public String order(HttpSession session, Model model){model.addAttribute("flag", 12);Users user = (Users) session.getAttribute("user");if (user == null) {model.addAttribute("msg", "请登录后查看订单!");return "/index/index";}model.addAttribute("typeList", typeService.getList());model.addAttribute("orderList", orderService.getListByUserid(user.getId()));return "/index/order.jsp";}/*** 个人信息* @return*/@RequestMapping("/my")public String my(HttpSession session, Model model){model.addAttribute("flag", 11);model.addAttribute("typeList", typeService.getList());Users user = (Users) session.getAttribute("user");if (user == null) {model.addAttribute("msg", "请先登录!");return "/index/index";}model.addAttribute("user", user);return "/index/my.jsp";}/*** 修改信息* @return*/@RequestMapping("/updateUser")public String updateUser(Users user, HttpSession session, Model model){model.addAttribute("flag", 11);model.addAttribute("typeList", typeService.getList());Users userLogin = (Users) session.getAttribute("user");if (userLogin == null) {model.addAttribute("msg", "请先登录!");return "/index/index";}// 修改资料Users u = userService.get(userLogin.getId());u.setName(user.getName());u.setPhone(user.getPhone());u.setAddress(user.getAddress());userService.update(u); // 更新数据库session.setAttribute("user", u); // 更新sessionmodel.addAttribute("msg", "信息修改成功!");return "/index/my.jsp";}/*** 修改信息* @return*/@RequestMapping("/updatePassword")public String updatePassword(Users user, HttpSession session, Model model){model.addAttribute("flag", 11);model.addAttribute("typeList", typeService.getList());Users userLogin = (Users) session.getAttribute("user");if (userLogin == null) {model.addAttribute("msg", "请先登录!");return "/index/index";}// 修改密码Users u = userService.get(userLogin.getId());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); // 更新sessionmodel.addAttribute("msg", "密码修改成功!");return "redirect:logout";}else {model.addAttribute("msg", "原密码错误!");}}return "/index/index";}}
前台相关接口:
/*** 前台相关接口*/
@Controller
@RequestMapping("/index")
public class IndexController{private static final int rows = 8; // 默认每页数量@Autowiredprivate TopService topService;@Autowiredprivate GoodService goodService;@Autowiredprivate TypeService typeService;@Autowiredprivate SkuService skuService;/*** 首页* @return*/@RequestMapping("/index")public String index(HttpServletRequest request){request.setAttribute("flag", -1);List<Types> typeList = typeService.getList();request.setAttribute("typeList", typeList);List<Map<String, Object>> dataList = new ArrayList<>();for(Types type : typeList) {Map<String, Object> map = new HashMap<>();map.put("type", type);map.put("goodList", goodService.getListByType(type.getId(), 1, 8)); // 取前8个dataList.add(map);}request.setAttribute("dataList", dataList);return "/index/index.jsp";}/*** 推荐列表* @return*/@RequestMapping("/top")public String tops(int typeid, @RequestParam(required=false, defaultValue="1")int page, HttpServletRequest request) {request.setAttribute("flag", typeid==2 ? 7 : 8);request.setAttribute("typeList", typeService.getList());request.setAttribute("goodList", goodService.getList(typeid, page, rows));request.setAttribute("pageHtml", PageUtil.getPageHtml(request, goodService.getTotal(typeid), page, rows));return "/index/goods.jsp";}/*** 商品列表* @return*/@RequestMapping("/goods")public String goods(int typeid, @RequestParam(required=false, defaultValue="1")int page, HttpServletRequest request){request.setAttribute("flag", typeid);request.setAttribute("typeList", typeService.getList());request.setAttribute("topList", topService.getList(Tops.TYPE_SUPPER, 1, 4));if (typeid > 0) {request.setAttribute("type", typeService.get(typeid));}request.setAttribute("goodList", goodService.getListByType(typeid, page, rows));request.setAttribute("pageHtml", PageUtil.getPageHtml(request, goodService.getTotalByType(typeid), page, rows));return "/index/goods.jsp";}/*** 商品详情* @return*/@RequestMapping("/detail")public String detail(int goodid, HttpServletRequest request){request.setAttribute("typeList", typeService.getList());request.setAttribute("topList", topService.getList(Tops.TYPE_SUPPER, 1, 4));Goods good = goodService.get(goodid);request.setAttribute("good", good);request.setAttribute("type", typeService.get(good.getTypeId()));request.setAttribute("colorList", skuService.getColorList(goodid));request.setAttribute("sizeList", skuService.getSizeList(goodid));return "/index/detail.jsp";}/*** 搜索* @return*/@RequestMapping("/search")public String search(String name, @RequestParam(required=false, defaultValue="1")int page, HttpServletRequest request) {if (Objects.nonNull(name) && !name.trim().isEmpty()) {request.setAttribute("goodList", goodService.getListByName(name, page, rows));request.setAttribute("pageHtml", PageUtil.getPageHtml(request, goodService.getTotalByName(name), page, rows));}request.setAttribute("typeList", typeService.getList());return "/index/goods.jsp";}/*** 查询库存* @param goodid* @param colorid* @param sizeid* @return*/@GetMapping("/stock")public @ResponseBody int stock(int goodid, int colorid, int sizeid) {return skuService.getStock(goodid, colorid, sizeid);}}
源码获取:博客首页 "资源" 里下载!
相关文章:

skiplist 跳表(1)
最近学习中遇到一种新的数据结构,很实用,搬过来学习。 原文地址:skiplist 跳表 为什么选择跳表 目前经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay Tree, Treep等。 想象一下,给…

前端学习笔记系列一:14 vue3.X中alias的配置
第一步: 第二步: // vue.config.js module.exports { configureWebpack: { resolve: { alias: { assets: /assets, components: /components, views: /views, } } }, } 并且,在没有自行配置alias的时候,就已经可以使用inquire(‘…

【转】sed 简明教程
本文转自:http://coolshell.cn/articles/9104.html awk于1977年出生,今年36岁本命年,sed比awk大2-3岁,awk就像林妹妹,sed就是宝玉哥哥了。所以 林妹妹跳了个Topless,他的哥哥sed坐不住了,也一定…

帕斯卡三角形(Pascal's triangle)
// The following code is compiled on VC2005 // #include "stdafx.h" /*-----------------------------------------------下面数值模式称为帕斯卡三角形(Pascals triangle)11 11 2 11 3 3 11 4 6 4 1 ...三角形边界上的数都是1,内部的每个数数是位…

Java项目:高校学生社团活动管理系统(java+springboot+freemark+jpa+mysql)
源码获取:博客首页 "资源" 里下载! 前台: 1、社团信息浏览搜索、社团活动风采、新闻信息浏览搜索。 2、学生注册登录。 3、登录后可自己申请创建社团,也可申请加入其他社团活动。 4、管理自己社团的申请人员。 5个…

linux nfs共享文件
linux文件共享可以有多种方式:samba,nfs,ftp等等 nfs在linux之间效率高些: function nfs(){share_folder"/data1 192.168.0.239(rw,sync,no_root_squash)"yum install nfs-utils rpcbindecho $share_folder >> /etc/exportsexportfs -rv…

我有一个朋友写出了17种触发NPE的代码!避免这些坑
在JUnit4中,使用Mockito框架时,any() 是一个参数匹配器,当与基本数据类型一起使用时,需要使用相应的类型特定的匹配器,例如使用anyInt() 而不是any()。要防范它,不在高超的编码技巧,在细。的可能性,却并不是万能的,比如开发者在使用Optional,不检查是否存在,直接调用Optional.get(),那么会得到一个NoSuchElementException。我有一个朋友,写代码的时候常常遭到NPE背刺,痛定思痛,总结了NPE出没的17个场景,哪一个你还没有遇到过?

黑色星期五Friday the Thirteenth
题目描述 13号又是一个星期五。13号在星期五比在其他日子少吗?为了回答这个问题,写一个程序,要求计算每个月的十三号落在周一到周日的次数。给出N年的一个周期,要求计算1900年1月1日至1900N-1年12月31日中十三号落在周一到周日的次数,N为正整…

帕斯卡三角形与道路问题
苏珊很为难.她步行去学校,路上老是遇到斯廷基.斯廷基:"嘿嘿,苏珊,我可以陪你一起走吗?" 苏珊:"不!请走开."苏珊心想:我有办法了.每天早上我走不同的路线去学校.这样斯廷基就不知道在哪儿找到我了.这张地图表示苏珊的住所和学校之间的所有街道.苏珊去学校…

Java项目:学生信息管理系统(java+SSM+JSP+layui+maven+mysql)
源码获取:博客首页 "资源" 里下载! 一、项目简述 功能包括: 三角色管理: 学生,教师,管理员,在线选课,成绩录入,学生管理,选课管理,教室管理等等。…

Java for LeetCode 067 Add Binary
Given two binary strings, return their sum (also a binary string). For example, a "11" b "1" Return "100". 解题思路: JAVA实现如下: static public String addBinary(String a, String b) {if (a.length() <…

ON DUPLICATE KEY UPDATE 导致mysql自增主键ID跳跃增长
具体解决方案可以根据项目来选择,如果项目不大,可以考虑1和2。如果不考虑高并发问题,可以考虑3。

一起学JDK源码 -- System类
System类是被final修饰的,不能被继承。

python csv模块心得
2019独角兽企业重金招聘Python工程师标准>>> with open(tiger.csv, wb) as csvfile:writer csv.writer(csvfile, quotingcsv.QUOTE_ALL)row [中国, 美国, 台湾, 马来西亚]writer.writerow([unicode(s).encode("utf-8") for s in row]) 转载于:https://m…

全局变量及输出语句
全局变量 是系统已经定义好的变量,主要反映sql数据库的操作状态。 全局变量名称以开头‘ 举例 identity:返回最后插入的标识值 error:返回执行的上一个T_sql语句的错误号 常用的输出语句 print:结果有消息中以文的形式显示 select:…

Nested Mappings
/*hanzhiguang coded at 2009.07.30 1:20*/ // nesting_map.cpp : Defines the entry point for the console application. // /*------------------------------------------------------------------------- 给定自然数n,找出所有不同的有序对i和j,其中 1<j<i<n,使得…

Java项目:CRM客户关系管理系统(java+Springboot+maven+mysql)
源码获取:博客首页 "资源" 里下载! Springboot项目CRM客户关系管理系统: 系统实现了CRM客户关系系统的基本功能,主要有看板(当月参与的业务机会、当月转化情况、将要结束的业务机会等)、业务机会࿰…

linux下occi操作oracle数据库,中文乱码的问题
转载:http://www.linuxidc.com/Linux/2008-02/11238.htm 前几日调通了OCI连接数据库的问题后,用Oracle自带的例子测试了一下,能正常读取数据(都是英文的),就放心了,转去开发别的模块。这几天做数…

tomcat启动时一闪而过的问题
在CMD窗口中输入 cd E:\apache-tomcat-7.0.52\bin 后再输入E:显示进入相应目录E:\apache-tomcat-7.0.52\bin后,再输入startup 后窗口一闪而过,可通过以下步骤进行调试解决:1.检查确认JAVA_HOME配置正确,可以在命令行中输入java显示…

The Long-Term Stability of Ecosystems
The Long-Term Stability of Ecosystems Plant communities assemble themselves flexibly, and their particular structure depends on the specific history of the area. Ecologists use the term “succession”to refer to the changes that happen in plant communities…

big endian little endian
大端(big-endian)和小端(little-endian)<转>2007-12-07 20:36补:x86机是小端(修改分区表时要注意),单片机一般为大端 今天碰一个关于字节顺序的问题,虽然看起来很简单,但一直都没怎么完全明白这个东西,索性就找了下资料,把它弄清楚. 因为现行的…

Java项目:学生考勤管理系统(java+SSM+Poi导出+Easyui+JFreeChart+maven+mysql)
源码获取:博客首页 "资源" 里下载! 这个项目适合SSM框架的初学者(涉及大量增删改查,很适合初学者)以及对Shiro安全框架和Poi技术感兴趣的同学。 项目功能: 用户管理功能(登录、退出登…
【STL源码剖析读书笔记】【第5章】关联式容器之hashtable
1、hashtable在插入、删除、搜寻操作上具有“常数平均时间”的表现,不依赖输入元素的随机性。 2、hashtable通过hashfunction将元素映射到不同的位置,但当不同的元素通过hash function映射到相同的位置时,便产生了“碰撞”问题。解决碰撞问题…

Event自定义事件
//index.html文件<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible"…
byte endian(biglittle endian)
1. 大小端的区别 little endian:把低位字节存放在内存的低位; // big endian: 将低位字节存放在内存的高位; 比如:0x1234,则12 就属于高位字节;34 属于低位字节 假如从地址0x0000 0000开始的一个字节中保存数据0x12345678, 这2中字节序在内存当中存…

鸡啄米vc++2010系列32(标签控件Tab Control 下)
上一节中鸡啄米讲了标签控件知识的上半部分,本节继续讲下半部分。 标签控件的创建 MFC为标签控件的操作提供了CTabCtrl类。 与之前的控件类似,创建标签控件可以在对话框模板中直接拖入Tab Control,也可以使用CTabCtrl类的Create成员函数创建。…

Java项目:网上图书商城系统(java+SSM+Jsp+MySQL+Redis+JWT+Shiro+RabbitMQ+EasyUI)
源码获取:博客首页 "资源" 里下载! 这个项目涉及到Shiro整合JWT、秒杀功能所具备的基本要求(限流、乐观锁、接口隐藏、JMeter高并发测试等等)、消息中间件RabbitMQ的异步邮件通知和死信队列、沙箱支付宝模拟支付等等技术亮点。 项目功能&#…

虚拟机使用镜像文件安装系统
场景说明:指定Linux镜像之后,点击电源开始安装,安装完成之后,卸载ISO,进入BIOS,设置从硬盘启动。vmvare有提供快速安装的方式。当前的安装类似于手动安装,模拟真实的环境操作步骤:1&…

cmd命令简单别木马的蛛丝马迹
一些基本的Windows命令往往可以识别木马的蛛丝马迹,而且在保护网络安全上起到很大的作用。 检测网络连接 如果你怀疑自己的计算机上被别人安装了木马,或者是中了病毒,但是手里没有完善的工具来检测是不是真有这样的事情发生,那可以…

ubuntu常用翻译工具stardict
日常办公应用中,我们经常会碰到一些陌生的外文单词或文章需要翻译,在Windows平台上,可通过很多翻译工具来帮忙解决。当我们转到Ubuntu系统 中办公时,肯定也希望能有一款简单易用、功能强大的翻译工具。 这里给大家推荐Linux平…