记一次装机过程(Ubuntu、Windows10) 老婆使用的电脑系统(Windows 10)坏了,会一直卡在登录页面,登录成功之后又返回登录页面,陷入死循环。于是,修好电脑的重担就落在了笔者的头上。笔者脑子一热,直接装了一个 Ubuntu 系统(装机过程省略,网上很多教程),然后又吭哧吭哧地安装了微信和QQ,但是用起来非常不得劲,微信还好,除了UI偏小没啥大问题,但是 QQ 就丑爆了~迫不得已,只好重新安装 Windows 系统,磨难正式开始~~...
从零开始搭建一个电商网站——需求分析 目录概述功能详情商品管理功能顾客管理功能订单管理功能订单状态流转概述本系列文章是为了记录搭建一个电商网站所学到的知识点。采用的技术栈为:Node.js (Koa)MySQL本项目是为了练手,所以并不会包含电商平台的所有功能。本项目包含的功能如下:商品管理功能:商品属性管理、商品价格管理、商品库存管理顾客管理功能:新增顾客、修改顾客信息、查看顾客信息订单管理功能:新增销售单、新增退货/退款单、订单详情功能详情商品管理功能#RequirementDescription
设计模式——观察者模式 一、适用场景观察者模式,适用于有多个模块存在的,并且模块之间存在相互依赖或者相互通信的情况。使用观察者模式,可以降低耦合度,便于后期程序的扩展和维护。二、实现原理观察者模式是怎样做到模块间松散耦合,并且又不影响相互协作的呢?答案就是“观察者(observer)”。在JavaScript中,观察者是一个对象,该对象暴露3个函数给外部,分别是 publish() 、subscribe() 、unsubs
JavaScript基础知识——事件的基础知识 本博客分三部分来阐述事件:DOM事件流、事件处理程序、事件对象。一、DOM事件流“DOM2级事件”规定的事件流包括三个阶段:事件捕获阶段、处于目标阶段和事件冒泡阶段。首先发生的是事件捕获,为截获事件提供了机会。然后是实际的目标接收到事件。最后一个阶段是冒泡阶段,可以在这个阶段对事件做出响应。(一)事件捕获阶段,document对象首先接收到事件,然后事件沿着DOM树一次往下,一直传播到事件的实际目标
JavaScript基础知识——apply、call、bind JavaScript中有三个神奇的方法/函数,它们是apply()、call()、bind()。下面来讲讲它们有什么用。一、apply() 和 call()call()方法和apply()方法的作用相同,都是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值。他们的区别在于接收的参数不同。apply()方法:接收的第一个参数是对象,即作用域;第二个参数可以是一个参数数组,也可以是一个
JavaScript基础知识——函数的 arguments 和 this JavaScript的函数有两个特殊的对象属性,arguments 和 this。arguments对象该对象是一个类数组对象,包含了所有的传入函数的参数。如,定义了如下函数:function fun(param1,param2) { return param1 + param2;}不论为这个函数传入多少实参,js解释器都不会报错,因为实际上,ECMAScript 中的参数在内部是用一个数
JavaScript基础知识——数组遍历的方法 js中的数组,有5种遍历的方法,它们的入参都是函数,它们的作用如下所示: 1)every:返回值是boolean值,当数组中的所有项都满足某个条件时,返回true,否则返回false。如:var numbers = [0,1,2,3,4,5,6];var result = numbers.every(function (item,index,array) { return item >
Vue.js组件——标签页组件 按照《Vue.js实战》的指导,制作了一个标签页的组件,并按照课后练习的要求,添加了一个小功能: 给pane组件新增一个prop:closable的布尔值,支持是否关闭这个pane,如果开启,tabs上会增加一个关闭按钮,可以关闭对应的标签。 做这个练习的时候,主要有两个关键点:1)如何根据closable的值来动态显示/隐藏关闭按钮解决第一个关键点时,我一开始使用了v-show,如下所示(下面
Vue.js组件——slot杂记 懒得再写一遍,直接把我的笔记截图放上来了。截图的内容其实是自己写的测试代码最后的效果,下面把测试代码贴出来:<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>Vue 组件slot</title> <script src="../js/vue.min.js"></script>
Vue.js组件——组件的基础知识 这篇博客记录本人的学习的Vue.js框架组件的一些基础知识,记录的可能有点混乱。 如果有朋友想验证,可以直接copy代码,然后下载一个vue.min.js文件即可。 直接上代码:<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>Vue 组件</title> <script
Vue.js组件——组件通信小demo 直接上图:最近在学习Vue.js组件的相关知识,其中组件通信的内容让我很惊叹,所以做了个小demo放到博客上。 这个demo中,使用了三种组件通信的方式,分别是中央事件总线bus、父链、子组件索引。(ps:关于props通信见我另一篇博客Vue.js组件——组件的基础知识) 下面是代码:<!DOCTYPE html><html> <head> <meta charset
JavaScript基础知识——作用域 function-level scope跟Java等编程语言不同,JavaScript的作用域是function-level scope的,即只有function才能限定作用域,花括号{}并没有什么卵用。如下,if语句外部的打印语句,依然会输出2:var x = 1;console.log(x); // 1if (true) { var x = 2; console.log(x)
Vue.JS实战:简单的购物车(二) 功能概述在之前的购物车基础上,新增了一些功能,如下: (1)新增了商品类别,同类的商品永远聚集在一块; (2)增加了商品类别筛选,可以选择显示/不显示某个(或多个)类别的商品; (3)新增了方法checkQuanxuan(),当复选框没有全部选中时,全选框会保持未选中状态,反之亦然。代码分享代码同样包含三个部分,分别是HTML、JS、CSS。因为这次只修改了HTML和JS,所以只贴HTML和J
Vue.JS实战:简单的购物车 好吧,我转了前端了,开始更新前端框架Vue.JS的相关博客。功能概述学习了Vue.JS的一些基础知识,现在利用指令、数据绑定这些基础知识开发一个简单的购物车功能。功能要点如下: (1)展示商品的名称、单价和数量; (2)商品的数量可以增加和减少; (3)购物车的总价要实时更新,即数量发生变动,总价也要相应的改变; (4)商品可以从购物车中移除; (5)具有选择功能,只计算选中的商品的总价。
学习SpringMVC——上传文件 文件上传也是Web项目中经常用到的功能。今天这篇博客就来讲讲SpringMVC的文件上传功能如何实现。一、需要的jar包文件上传功能需要两个jar包:commons-fileupload和commons-io,如下图。 二、配置Java bean为实现文件上传,需要配置multipart类型解析器,如下:<bean id="multipartResolver" class="org.springf