Java项目:网上电商系统(java+SSM+mysql+maven+tomcat)
源码获取:博客首页 "资源" 里下载!
一、项目简述
功能:本系统分用户前台和管理员后台。 前台展示+后台管理,前台界面可实现用户登录,用户注 册,商品展示,商品明细展示,用户信息修改,密码修 改,购物车添加,商品购买,商品结算,订单查询,购物 车查询,后台管理可实现商品管理,订单管理,用户管理
二、项目运行
环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)
项目技术: JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等。
后台管理-账户页:
/*** 后台管理-账户页*/
@Controller
public class AccountController extends BaseController{@Resource(name = "adminService")private AdminService adminService;//转到后台管理-账户页-ajax@RequestMapping(value = "admin/account", method = RequestMethod.GET)public String goToPage(HttpSession session, Map<String, Object> map){logger.info("获取管理员信息");Object adminId = checkAdmin(session);if(adminId == null){return "admin/include/loginMessage";}logger.info("获取目前登录的管理员信息,管理员ID:{}",adminId);Admin admin = adminService.get(null,Integer.parseInt(adminId.toString()));map.put("admin",admin);logger.info("转到后台管理-账户页-ajax方式");return "admin/accountManagePage";}//退出当前账号@RequestMapping(value = "admin/account/logout", method = RequestMethod.GET)public String logout(HttpSession session) {Object o = session.getAttribute("adminId");if (o == null) {logger.info("无相关信息,返回管理员登陆页");} else {session.removeAttribute("adminId");session.invalidate();logger.info("登录信息已清除,返回管理员登陆页");}return "redirect:/admin/login";}//管理员头像上传@ResponseBody@RequestMapping(value = "admin/uploadAdminHeadImage", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")public String uploadAdminHeadImage(@RequestParam MultipartFile file, HttpSession session) {String originalFileName = file.getOriginalFilename();logger.info("获取图片原始文件名:{}", originalFileName);assert originalFileName != null;String extension = originalFileName.substring(originalFileName.lastIndexOf('.'));//生成随机名String fileName = UUID.randomUUID() + extension;//获取上传路径String filePath = session.getServletContext().getRealPath("/") + "res/images/item/adminProfilePicture/" + fileName;logger.info("文件上传路径:{}", filePath);JSONObject jsonObject = new JSONObject();try {logger.info("文件上传中...");file.transferTo(new File(filePath));logger.info("文件上传成功!");jsonObject.put("success", true);jsonObject.put("fileName", fileName);} catch (IOException e) {logger.warn("文件上传失败!");e.printStackTrace();jsonObject.put("success", false);}return jsonObject.toJSONString();}//更新管理员信息@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)@ResponseBody@RequestMapping(value = "admin/account/{admin_id}", method = RequestMethod.PUT, produces = "application/json;charset=UTF-8")public String updateAdmin(HttpSession session, @RequestParam String admin_nickname/*管理员昵称*/,@RequestParam(required = false) String admin_password/*管理员当前密码*/,@RequestParam(required = false) String admin_newPassword/*管理员新密码*/,@RequestParam(required = false) String admin_profile_picture_src/*管理员头像路径*/,@PathVariable("admin_id") String admin_id/*管理员编号*/) {logger.info("获取管理员信息");Object adminId = checkAdmin(session);if (adminId == null) {return "admin/include/loginMessage";}JSONObject jsonObject = new JSONObject();Admin putAdmin = new Admin();putAdmin.setAdmin_id(Integer.valueOf(admin_id));putAdmin.setAdmin_nickname(admin_nickname);if (admin_password != null && !"".equals(admin_password) && admin_newPassword != null && !"".equals(admin_newPassword)) {logger.info("获取需要修改的管理员信息");Admin admin = adminService.get(null, Integer.valueOf(adminId.toString()));if (adminService.login(admin.getAdmin_name(), admin_password) != null) {logger.info("原密码正确");putAdmin.setAdmin_password(admin_newPassword);} else {logger.info("原密码错误,返回错误信息");jsonObject.put("success", false);jsonObject.put("message", "原密码输入有误!");return jsonObject.toJSONString();}}if (admin_profile_picture_src != null && !"".equals(admin_profile_picture_src)) {logger.info("管理员头像路径为{}", admin_profile_picture_src);putAdmin.setAdmin_profile_picture_src(admin_profile_picture_src.substring(admin_profile_picture_src.lastIndexOf("/") + 1));}logger.info("更新管理员信息,管理员ID值为:{}", admin_id);Boolean yn = adminService.update(putAdmin);if (yn) {logger.info("更新成功!");jsonObject.put("success", true);session.removeAttribute("adminId");session.invalidate();logger.info("登录信息已清除");} else {jsonObject.put("success", false);logger.warn("更新失败!事务回滚");throw new RuntimeException();}return jsonObject.toJSONString();}
}
后台管理-产品类型页:
/*** 后台管理-产品类型页*/
@Controller
public class CategoryController extends BaseController {@Resource(name = "categoryService")private CategoryService categoryService;@Resource(name = "lastIDService")private LastIDService lastIDService;@Resource(name = "propertyService")private PropertyService propertyService;//转到后台管理-产品类型页-ajax@RequestMapping(value = "admin/category", method = RequestMethod.GET)public String goToPage(HttpSession session, Map<String, Object> map) {logger.info("获取前10条产品类型列表");PageUtil pageUtil = new PageUtil(0, 10);List<Category> categoryList = categoryService.getList(null, pageUtil);map.put("categoryList", categoryList);logger.info("获取产品类型总数量");Integer categoryCount = categoryService.getTotal(null);map.put("categoryCount", categoryCount);logger.info("获取分页信息");pageUtil.setTotal(categoryCount);map.put("pageUtil", pageUtil);logger.info("转到后台管理-分类页-ajax方式");return "admin/categoryManagePage";}//转到后台管理-产品类型详情页-ajax@RequestMapping(value = "admin/category/{cid}", method = RequestMethod.GET)public String goToDetailsPage(HttpSession session, Map<String, Object> map, @PathVariable Integer cid/* 分类ID */) {logger.info("获取category_id为{}的分类信息", cid);Category category = categoryService.get(cid);logger.info("获取分类子信息-属性列表");category.setPropertyList(propertyService.getList(new Property().setProperty_category(category), null));map.put("category", category);logger.info("转到后台管理-分类详情页-ajax方式");return "admin/include/categoryDetails";}//转到后台管理-产品类型添加页-ajax@RequestMapping(value = "admin/category/new", method = RequestMethod.GET)public String goToAddPage(HttpSession session, Map<String, Object> map) {logger.info("转到后台管理-分类添加页-ajax方式");return "admin/include/categoryDetails";}//添加产品类型信息-ajax@ResponseBody@RequestMapping(value = "admin/category", method = RequestMethod.POST, produces = "application/json;charset=utf-8")public String addCategory(@RequestParam String category_name/* 分类名称 */,@RequestParam String category_image_src/* 分类图片路径 */) {JSONObject jsonObject = new JSONObject();logger.info("整合分类信息");Category category = new Category().setCategory_name(category_name).setCategory_image_src(category_image_src.substring(category_image_src.lastIndexOf("/") + 1));logger.info("添加分类信息");boolean yn = categoryService.add(category);if (yn) {int category_id = lastIDService.selectLastID();logger.info("添加成功!,新增分类的ID值为:{}", category_id);jsonObject.put("success", true);jsonObject.put("category_id", category_id);} else {jsonObject.put("success", false);logger.warn("添加失败!事务回滚");throw new RuntimeException();}return jsonObject.toJSONString();}//更新产品类型信息-ajax@ResponseBody@RequestMapping(value = "admin/category/{category_id}", method = RequestMethod.PUT, produces = "application/json;charset=utf-8")public String updateCategory(@RequestParam String category_name/* 分类名称 */,@RequestParam String category_image_src/* 分类图片路径 */,@PathVariable("category_id") Integer category_id/* 分类ID */) {JSONObject jsonObject = new JSONObject();logger.info("整合分类信息");Category category = new Category().setCategory_id(category_id).setCategory_name(category_name).setCategory_image_src(category_image_src.substring(category_image_src.lastIndexOf("/") + 1));logger.info("更新分类信息,分类ID值为:{}", category_id);boolean yn = categoryService.update(category);if (yn) {logger.info("更新成功!");jsonObject.put("success", true);jsonObject.put("category_id", category_id);} else {jsonObject.put("success", false);logger.info("更新失败!事务回滚");throw new RuntimeException();}return jsonObject.toJSONString();}//按条件查询产品类型-ajax@ResponseBody@RequestMapping(value = "admin/category/{index}/{count}", method = RequestMethod.GET, produces = "application/json;charset=utf-8")public String getCategoryBySearch(@RequestParam(required = false) String category_name/* 分类名称 */,@PathVariable Integer index/* 页数 */,@PathVariable Integer count/* 行数 */) throws UnsupportedEncodingException {//移除不必要条件if (category_name != null) {//如果为非空字符串则解决中文乱码:URLDecoder.decode(String,"UTF-8");category_name = "".equals(category_name) ? null : URLDecoder.decode(category_name, "UTF-8");}JSONObject object = new JSONObject();logger.info("按条件获取第{}页的{}条分类", index + 1, count);PageUtil pageUtil = new PageUtil(index, count);List<Category> categoryList = categoryService.getList(category_name, pageUtil);object.put("categoryList", JSONArray.parseArray(JSON.toJSONString(categoryList)));logger.info("按条件获取分类总数量");Integer categoryCount = categoryService.getTotal(category_name);object.put("categoryCount", categoryCount);logger.info("获取分页信息");pageUtil.setTotal(categoryCount);object.put("totalPage", pageUtil.getTotalPage());object.put("pageUtil", pageUtil);return object.toJSONString();}// 上传产品类型图片-ajax@ResponseBody@RequestMapping(value = "admin/uploadCategoryImage", method = RequestMethod.POST, produces = "application/json;charset=utf-8")public String uploadCategoryImage(@RequestParam MultipartFile file, HttpSession session) {String originalFileName = file.getOriginalFilename();logger.info("获取图片原始文件名: {}", originalFileName);String extension = originalFileName.substring(originalFileName.lastIndexOf('.'));String fileName = UUID.randomUUID() + extension;String filePath = session.getServletContext().getRealPath("/") + "res/images/item/categoryPicture/" + fileName;logger.info("文件上传路径:{}", filePath);JSONObject object = new JSONObject();try {logger.info("文件上传中...");file.transferTo(new File(filePath));logger.info("文件上传完成");object.put("success", true);object.put("fileName", fileName);} catch (IOException e) {logger.warn("文件上传失败!");e.printStackTrace();object.put("success", false);}return object.toJSONString();}
}
后台管理-订单页:
/*** 后台管理-订单页*/
@Controller
public class
OrderController extends BaseController{@Resource(name="productOrderService")private ProductOrderService productOrderService;@Resource(name = "addressService")private AddressService addressService;@Resource(name="userService")private UserService userService;@Resource(name = "productOrderItemService")private ProductOrderItemService productOrderItemService;@Resource(name = "productService")private ProductService productService;@Resource(name = "productImageService")private ProductImageService productImageService;@Resource(name = "lastIDService")private LastIDService lastIDService;//转到后台管理-订单页-ajax@RequestMapping(value = "admin/order", method = RequestMethod.GET)public String goToPage(HttpSession session, Map<String, Object> map){logger.info("获取前10条订单列表");PageUtil pageUtil = new PageUtil(0, 10);List<ProductOrder> productOrderList =productOrderService.getList(null,null,new OrderUtil("productOrder_id",true), pageUtil);map.put("productOrderList",productOrderList);logger.info("获取订单总数量");Integer productOrderCount = productOrderService.getTotal(null, null);map.put("productOrderCount", productOrderCount);logger.info("获取分页信息");pageUtil.setTotal(productOrderCount);map.put("pageUtil", pageUtil);logger.info("转到后台管理-订单页-ajax方式");return "admin/orderManagePage";}//转到后台管理-订单详情页-ajax@RequestMapping(value = "admin/order/{oid}", method = RequestMethod.GET)public String goToDetailsPage(HttpSession session, Map<String, Object> map, @PathVariable Integer oid/* 订单ID */) {logger.info("获取order_id为{}的订单信息",oid);ProductOrder order = productOrderService.get(oid);logger.info("获取订单详情-地址信息");Address address = addressService.get(order.getProductOrder_address().getAddress_areaId());Stack<String> addressStack = new Stack<>();//详细地址addressStack.push(order.getProductOrder_detail_address());//最后一级地址addressStack.push(address.getAddress_name() + " ");//如果不是第一级地址,循环拼接地址信息while (!address.getAddress_areaId().equals(address.getAddress_regionId().getAddress_areaId())) {address = addressService.get(address.getAddress_regionId().getAddress_areaId());addressStack.push(address.getAddress_name() + " ");}StringBuilder builder = new StringBuilder();while (!addressStack.empty()) {builder.append(addressStack.pop());}logger.info("订单地址字符串:{}", builder);order.setProductOrder_detail_address(builder.toString());logger.info("获取订单详情-用户信息");order.setProductOrder_user(userService.get(order.getProductOrder_user().getUser_id()));logger.info("获取订单详情-订单项信息");List<ProductOrderItem> productOrderItemList = productOrderItemService.getListByOrderId(oid, null);if (productOrderItemList != null) {logger.info("获取订单详情-订单项对应的产品信息");for (ProductOrderItem productOrderItem : productOrderItemList) {Integer productId = productOrderItem.getProductOrderItem_product().getProduct_id();logger.info("获取产品ID为{}的产品信息", productId);Product product = productService.get(productId);if (product != null) {logger.info("获取产品ID为{}的第一张预览图片信息", productId);product.setSingleProductImageList(productImageService.getList(productId, (byte) 0, new PageUtil(0, 1)));}productOrderItem.setProductOrderItem_product(product);}}order.setProductOrderItemList(productOrderItemList);map.put("order", order);logger.info("转到后台管理-订单详情页-ajax方式");return "admin/include/orderDetails";}//更新订单信息-ajax@ResponseBody@RequestMapping(value = "admin/order/{order_id}", method = RequestMethod.PUT, produces = "application/json;charset=UTF-8")public String updateOrder(@PathVariable("order_id") String order_id) {JSONObject jsonObject = new JSONObject();logger.info("整合订单信息");ProductOrder productOrder = new ProductOrder().setProductOrder_id(Integer.valueOf(order_id)).setProductOrder_status((byte) 2).setProductOrder_delivery_date(new Date());logger.info("更新订单信息,订单ID值为:{}", order_id);boolean yn = productOrderService.update(productOrder);if (yn) {logger.info("更新成功!");jsonObject.put("success", true);} else {logger.info("更新失败!事务回滚");jsonObject.put("success", false);throw new RuntimeException();}jsonObject.put("order_id", order_id);return jsonObject.toJSONString();}//按条件查询订单-ajax@ResponseBody@RequestMapping(value = "admin/order/{index}/{count}", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")public String getOrderBySearch(@RequestParam(required = false) String productOrder_code/* 订单号 */,@RequestParam(required = false) String productOrder_post/* 订单邮政编码 */,@RequestParam(required = false) Byte[] productOrder_status_array/* 订单状态数组 */,@RequestParam(required = false) String orderBy/* 排序字段 */,@RequestParam(required = false,defaultValue = "true") Boolean isDesc/* 是否倒序 */,@PathVariable Integer index/* 页数 */,@PathVariable Integer count/* 行数 */){//移除不必要条件if (productOrder_status_array != null && (productOrder_status_array.length <= 0 || productOrder_status_array.length >=5)) {productOrder_status_array = null;}if (productOrder_code != null){productOrder_code = "".equals(productOrder_code) ? null : productOrder_code;}if(productOrder_post != null){productOrder_post = "".equals(productOrder_post) ? null : productOrder_post;}if (orderBy != null && "".equals(orderBy)) {orderBy = null;}//封装查询条件ProductOrder productOrder = new ProductOrder().setProductOrder_code(productOrder_code).setProductOrder_post(productOrder_post);OrderUtil orderUtil = null;if (orderBy != null) {logger.info("根据{}排序,是否倒序:{}",orderBy,isDesc);orderUtil = new OrderUtil(orderBy, isDesc);} else {orderUtil = new OrderUtil("productOrder_id",true);}JSONObject object = new JSONObject();logger.info("按条件获取第{}页的{}条订单", index + 1, count);PageUtil pageUtil = new PageUtil(index, count);List<ProductOrder> productOrderList = productOrderService.getList(productOrder, productOrder_status_array, orderUtil, pageUtil);object.put("productOrderList", JSONArray.parseArray(JSON.toJSONString(productOrderList)));logger.info("按条件获取订单总数量");Integer productOrderCount = productOrderService.getTotal(productOrder, productOrder_status_array);object.put("productOrderCount", productOrderCount);logger.info("获取分页信息");pageUtil.setTotal(productOrderCount);object.put("totalPage", pageUtil.getTotalPage());object.put("pageUtil", pageUtil);return object.toJSONString();}
}
源码获取:博客首页 "资源" 里下载!
相关文章:

C# SQLiteHelper
1 public class SQLiteHelpers2 {3 /// <summary> 4 /// ConnectionString样例:DatasourceTest.db3;Poolingtrue;FailIfMissingfalse 5 /// </summary> 6 public static string ConnectionStri…

[Git] 拉开发分支的代码报错
Git拉开发分支的代码报错: fatal: The remote end hung up unexpectedly fatal: early EOF fatal: index-pack failed 解决办法: git config --global core.compression -1 转载于:https://www.cnblogs.com/MasterMonkInTemple/p/10754596.html

C++ 通过模版工厂实现 简单反射机制
前言 我们知道Java/Python这种语言能够很好得 支持反射。反射机制 就是一种用户输入的字符串到对应实现方法的映射,比如http接口中 用户传入了url,我们需要调用该url对应的方法/函数对象 从而做出对应的操作。 而C 并没有友好得支持这样的操作…

计算机世界的“十六进制”为什么如此重要
在计算机世界中,十六进制扮演着不可或缺的角色。它以其紧凑的表示形式、与二进制的天然对应关系以及在各个领域的广泛应用,成为了计算机科学中的一把重要工具。总体而言,计算机需要十六进制并非偶然,它是一种为了更好地满足人类理解和处理数据的需求而产生的工具,为计算机科学的发展和应用提供了便利和支持。

面试官:如何实现10亿数据判重?
以 Java 中的 int 为例,来对比观察 BitMap 的优势,在 Java 中,int 类型通常需要 32 位(4 字节*8),而 BitMap 使用 1 位就可以来标识此元素是否存在,所以可以认为 BitMap 占用的空间大小,只有 int 类型的 1/32,所以有大数据量判重时,使用 BitMap 也可以实现。所以数据库去重显然是不行的。而使用集合也是不合适的,因为数据量太大,使用集合会导致内存不够用或内存溢出和 Full GC 频繁等问题,所以此时我们的解决方案通常是采用布隆过滤器来实现判重。

Java项目:校园二手市场系统(java+SSM+mysql+maven+tomcat)
源码获取:博客首页 "资源" 里下载! 一、项目简述( IW文档) 功能:本系统分用户前台和管理员后台。 本系统用例模型有三种,分别是游客、注册用户和系统管 理员。下面分别对这三个角色的功能进行描…

php中$_REQUEST、$_POST、$_GET的区别和联系小结
php中$_REQUEST、$_POST、$_GET的区别和联系小结 作者: 字体:[增加 减小] 类型:转载php中有$_request与$_post、$_get用于接受表单数据,当时他们有何种区别,什么时候用那种最好。1. $_REQUEST php中$_REQUEST可以获取以…

uva 315 (poj 1144 求割点)
题意:给你一张无向图,求割点的个数。 思路:输入稍微处理一下接着直接套模版。 1 #include <iostream>2 #include <cstdio>3 #include <cstring>4 #include <cstdlib>5 #include <cmath>6 #include <algorit…

SQL学习之计算字段的用法与解析
一、计算字段 1、存储在数据库表中的数据一般不是应用程序所需要的格式。大多数情况下,数据表中的数据都需要进行二次处理。下面举几个例子。 (1)、我们需要一个字段同时显示公司名和公司地址,但这两个信息存储在不同表的列中。 (2)、省份、城市、邮政编码存储在不同…

手把手教你 用C++实现一个 可持久化 的http_server
前言 本文介绍一个有趣的 通过C实现的 持久化的http_server demo,这样我们通过http通信之后的数据可以持久化存储,即使server挂了,数据也不会丢失。我们的http_sever 也就能够真正得作为一个后端server了。 本身持久化这个能力是数据库提供…

【SVN多用户开发】代码冲突解决办法
SVN是一款集中式的代码存储工具,可以帮助多个用户协同开发同一应用程序。 但是SVN不能完全代替人工操作,有时也需要程序员自己进行沟通确认有效的代码。 下面就简单的看一下,常见的代码冲突以及解决方法。 总结起来,无非是&#x…

Java项目:在线宠物商店系统(java+SSM+mysql+maven+tomcat)
源码获取:博客首页 "资源" 里下载! 一、项目简述 功能:本系统分用户前台和管理员后台。 系统包括用户的注册登录,狗狗的展示购物车添加以及下 单支付购买,后台有管理员用户,可以操作狗狗的品种&…

字符串中的数字排序
2019独角兽企业重金招聘Python工程师标准>>> public static String getBusiScope(String busiScope){ String regex "\\d{1,2}"; String busiStr""; Pattern pattern Pattern.compile(regex); Matcher matcher pattern.matcher(busiScope…

oo第二单元总结
第二单元总结 第一次作业 一、设计策略 本次作业采用FAFS算法,可直接用输入线程与电梯线程交互,调度器暂时不需要参与,故一共设计三个类三线程:Main类、elevator类及input类,main线程、elevator线程及input线程。main线…

Rocksdb iterator 的 Forward-scan 和 Reverse-scan 的性能差异
前言 最近在读 MyRocks 存储引擎2020年的论文,因为这个存储引擎是在Rocksdb之上进行封装的,并且作为Facebook 内部MySQL的底层引擎,用来解决Innodb的空间利用率低下 和 压缩效率低下的问题。而且MyRocks 在接入他们UDB 之后成功达成了他们的…

Java知多少(29)覆盖和重载
在类继承中,子类可以修改从父类继承来的方法,也就是说子类能创建一个与父类方法有不同功能的方法,但具有相同的名称、返回值类型、参数列表。如果在新类中定义一个方法,其名称、返回值类型和参数列表正好与父类中的相同࿰…

Java项目:清新论坛系统(java+SSM+mysql+maven+tomcat)
源码获取:博客首页 "资源" 里下载! 一、项目简述 功能:本系统分用户前台和管理员后台。 用户前台主要功能有: 用户注册 用户登录 浏览帖子 回复帖子 修改个人资料 管理员后台的功能有: 管理论坛版块 用户管…

JUnit4.11 理论机制 @Theory 完整解读
最近在研究JUnit4,大部分基础技术都是通过百度和JUnit的官方wiki学习的,目前最新的发布版本是4.11,结合代码实践,发现官方wiki的内容或多或少没有更新,Theory理论机制章节情况尤为严重,不知道这章wiki对应的…

树链剖分——线段树区间合并bzoj染色
线段树区间合并就挺麻烦了,再套个树链就更加鬼畜,不过除了代码量大就没什么其他的了。。 一些细节:线段树每个结点用结构体保存,pushup等合并函数改成返回一个结构体,这样好写一些 struct Seg{int lc,rc,tot;Seg(){lcr…

MyRocks: 为facebool 的社交图谱服务的LSM-tree存储引擎
文章目录概览1. UDB 架构2. UDB 表格式3. Rocksdb:针对flash存储优化过的第三方库3.1 Rocksdb架构3.2 为什么选择Rocksdb4. MyRocks / Rocksdb 开发历程4.1 设计目标4.2 性能挑战4.2.1 降低CPU的消耗4.2.2 降低range-scan 的延时消耗4.2.3 磁盘空间和Compaction 的一…

Java项目:精品酒店管理系统(java+SSM+mysql+maven+tomcat)
源码获取:博客首页 "资源" 里下载! 一、项目简述 功能:主要功能主要功能会员管理,住客管理,房间管 理,系统管理,以及一些重要数据的展示导出维护等等; 二、项目运行 环境配置&…

iOS自动布局一
Align: Pin: 转载于:https://www.cnblogs.com/123qw/p/4404167.html

C#实现路由器断开连接,更改公网ip
publicstaticvoidDisconnect(){stringurl "断 线"; stringuri "http://192.168.1.1/userRpm/StatusRpm.htm?Disconnect"System.Web.HttpUtility.UrlEncode(url, System.Text.Encoding.GetEncoding("gb2312")) "&wan1"; str…

Go中的iota
当时在学习Iota这个知识点的时候仅仅是一笔掠过,比如这种 const(aiotab c) 一眼看出他怎么使用的时候就觉得自己已经懂得了 再到后来看到这样的例子 const(a 5*iotab c )以及 const(a 1<<(10*iota)bc ) 第一…

从 SSLTLS 的底层实现来看 网络安全的庞大复杂体系
文章目录前言1. HTTP协议通信的问题1.1 tcpdump 抓取http 请求包1.2 报文分析1.3 HTTP 协议问题2. SSL & TLS 协议的基本介绍和历史演进3. TLS 1.2 实现加密传输的过程3.1 TLS HandShake 协议概览3.2 第一次握手:ClientHello3.3 第二次握手:从Server…

UICollectionView
UICollectionView 多列的UITableView,最简单的形式,类似于iBooks中书架的布局,书架中放着你下载的和购买的电子书。 最简单的UICollectionView是一个GridView,可以多列的方式进行展示。 包含三部分,都是UIView的子类: …

Java项目:课程资源管理+在线考试平台(java+SSH+mysql+maven+tomcat)
源码获取:博客首页 "资源" 里下载! 一、项目简述 功能包括: 管理员可以增删改查教材、教材商、入库教材、用户(用 户包括学生和教师)可以对教材商、教材进行。xcel的导入 导出操作。教师可以领取入库的教材,可以退还教…

python twisted 笔记
2019独角兽企业重金招聘Python工程师标准>>> 1.Twisted框架构建简单的C/S 要写一个基于twisted框架的服务器,你要实现事件处理器,它处理诸如一个新的客户端连接、新的数据到达和客户端连接中断等情况。 在Twisted中,你的事件处理器定义在一个…

决策树J48算法
1. J48原理 2. 举例 3. 总结 1. J48原理 基于从上到下的策略,递归的分治策略,选择某个属性放置在根节点,为每个可能的属性值产生一个分支,将实例分成多个子集,每个子集对应一个根节点的分支,然后在每个分支…

分布式系统 一致性模型的介绍 以及 zookeeper的 “线性一致性“ 讨论
文章目录1. 一致性 概览1.1 分布式系统的 “正确性”1.2 线性一致性(Linearizability)1.3 顺序一致性(Sequential consistency)1.4 因果一致性(Casual consistency)1.5 最终一致性(Eventual consistency)2. Zookeeper 的 “线性一致性” 问题3. 参考一致性算是分布式系统的定位…