2021/03/01   

Windows  MySQL  

0 环境检查Windows上运行MySQL需要安装Microsoft Visual C++ 2013 Redistributable(x64) 点击下载C++2013,推荐x86和x64都安装 1 下载MySQL下载地址:https://dev.mysql.com/downloads/mysql/8.0.html Select Operating System默认即可 点击Windows (x86, 64-bit), ZIP Archive后面的Download按钮 不需要登录,直接点击No thanks, just start my download.下载安装包 2 解压将下载的zip包进行解压,将解压后的文件夹移动到想要安装的位置 这里以安装在C:\development\为例,并重命名文件夹为mysql8,移动后的目录结构如下 3 新建日志文件夹 重要!!! 在mysql8目录下新建一个log文件夹,用于存储日志文件 4 配置mysql.ini文件在mysql8目录下新建my.ini文件 复制以下内容到my.ini文件内 [mysql] # 客户端默认字符集 default-ch

000

 2021/03/01

Windows  MySQL  

单独安装教程: Windows安装MySQL5.7Windows安装MySQL8.0 0 需求说明Windows上已经安装了一个MySQL,需要再安装一个MySQL PS:这里以先安装MySQL5.7,再安装MySQL8.0为例 1 安装MySQL5.7完全按照单独安装教程执行,或者也可以按照下面的说明进行修改 2 安装MySQL8.0部分按照单独安装教程执行,遇到如下步骤时注意修改 配置my.ini文件:端口号修改为3307或者其他不冲突的端口环境变量:跳过,不进行配置注册服务: 以管理员打开cmd后,先进入到MySQL8的bin目录下,即:cd C:\development\mysql8\bin安装服务脚本需要添加默认配置文件路径,且mysqld需要添加当前路径,即:.\mysqld install mysql8 --defaults-file="C:\development\mysql8\my.ini"检查注册表,ImagePath值应当如下:C:\development\mysql8\bin\mysqld --defaults-file=C:\develop

000

 2021/02/26

Java  

本文档整理自视频教程:尚硅谷_Java8新特性 个人整理示例代码: GitHub:https://github.com/Max-Qiu/demo/tree/main/demo-Java8-StreamGitee:https://gitee.com/Max-Qiu/demo/tree/main/demo-Java8-Stream 基本介绍Stream是Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API对集合数据进行操作,就类似于使用SQL执行的数据库查询。也可以使用Stream API来并行执行操作。简而言之,Stream API提供了一种高效且易于使用的处理数据的方式。 注意事项: Stream 自己不会存储元素。Stream 不会改变源对象。相反,他们会返回一个持有结果的新Stream。Stream 操作是延迟执行的。这意味着他们会等到需要结果的时候才执行。 使用步骤 创建Stream:一个数据源(如:集合、数组),获取一个流中间操作:一个中间操作链,对数据源的数据进行处理终止操作(终端操作):

100

 2021/02/25

Java  

本文档整理自视频教程:尚硅谷_Java8新特性 个人整理示例代码: GitHub:https://github.com/Max-Qiu/demo/tree/main/demo-Java8-LambdaGitee:https://gitee.com/Max-Qiu/demo/tree/main/demo-Java8-Lambda 函数式接口简介 只包含一个抽象方法的接口,称为函数式接口。在任意函数式接口上使用@FunctionalInterface注解,这样做可以检查它是否是一个函数式接口,同时javadoc也会包含一条声明,说明这个接口是一个函数式接口。可以通过Lambda表达式来创建该接口的对象。(若Lambda表达式抛出一个受检异常,那么该异常需要在目标接口的抽象方法上进行声明)。 示例 示例1:一般 @FunctionalInterface public interface MyNumber { Integer getValue(Integer num); } 示例2:使用泛型 @FunctionalInterface public interface MyFun<

100

 2021/02/08

Java  

推荐阅读:漫画设计模式:什么是 “职责链模式” ? 情景介绍学校OA系统的采购审批项目:采购员采购教学器材 如果金额小于等于 5000,由教学主任审批(0 <= x <= 5000)如果金额小于等于 50000,由院长审批(5000 < x <= 50000)如果金额大于 50000,由校长审批(50000 < x ) 请设计程序完成采购审批项目 传统方案PS:代码略 传统方式是:接收到一个采购请求后,根据采购金额来调用对应的审批人完成审批。传统方式的问题分析:客户端这里会使用到分支判断(比如switch)来对不同的采购请求处理,这样就存在如下问题 如果各个级别的人员审批金额发生变化,在客户端的也需要变化客户端必须明确的知道有多少个审批级别和访问这样对一个采购请求进行处理和审批人就存在强耦合关系,不利于代码的扩展和维护 解决方案 -> 职责链模式 职责链模式 Chain of Responsibility Pattern 基本介绍 职责链模式又叫责任链模式,为请求创建了一个接收者对象的链(简单示意图)。这种模式对请求的发送者和接收者进行解耦。职责链模

100

 2021/02/08

Java  

推荐阅读:还在使用if else写代码?试试 “策略模式” 吧! PS:尚硅谷的教程并未涉及到if...else的问题,只在总结时说到了 情景介绍编写鸭子项目,具体要求如下: 有各种鸭子,比如野鸭、水鸭、玩具鸭等鸭子有各种行为,比如叫、飞行等显示鸭子的信息 传统方式 UML类图 代码实现 /** * 抽象鸭子 */ public abstract class Duck { /** * 显示鸭子信息 */ public abstract void display(); public void quack() { System.out.println("鸭子嘎嘎叫~~"); } public void swim() { System.out.println("鸭子会游泳~~"); } public void fly() { System.out.println("鸭子会飞翔~~~"); } } /

200

 2021/02/08

Java  

状态模式 State Pattern 基本介绍 主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换。当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类 UML类图与角色 Context:环境角色,用于维护 State 实例,这个实例定义当前状态State:抽象状态角色,定义一个接口封装与 Context 的一个特点接口相关行为ConcreteState:具体的状态角色,每个子类实现一个与 Context 的一个状态相关行为 示例 情景介绍 请编写程序完成 APP 抽奖活动 具体要求如下 假如每参加一次这个活动要扣除用户 50 积分(积分细节可以忽略,仅关注状态),中奖概率是 10%奖品数量固定,抽完就不能抽奖活动有四个状态: 普通状态、准备抽奖、领取奖品和活动结束活动的四个状态转换关系图如下: UML类图 代码实现 /** * 状态抽象类 */ public abstract class State { /** * 扣除积分 */ public abstract vo

100

 2021/02/07

Java  

解释器模式 Interpreter Pattern 基本介绍 在编译原理中,一个算术表达式通过词法分析器形成词法单元,而后这些词法单元再通过语法分析器构建语法分析树,最终形成一颗抽象的语法分析树。这里的词法分析器和语法分析器都可以看做是解释器。解释器模式(Interpreter Pattern):是指给定一个语言(表达式),定义它的文法的一种表示,并定义一个解释器,使用该解释器来解释语言中的句子(表达式) 应用场景 应用可以将一个需要解释执行的语言中的句子表示为一个抽象语法树一些重复出现的问题可以用一种简单的语言来表达一个简单语法需要解释的场景。这样的例子比如编译器、运算表达式计算、正则表达式、机器人等 UML类图与角色 Context:是环境角色,含有解释器之外的全局信息。AbstractExpression:抽象表达式,声明一个抽象的解释操作,这个方法为抽象语法树中所有的节点所共享TerminalExpression:为终结符表达式,实现与文法中的终结符相关的解释操作NonTerminalExpression:为非终结符表达式,为文法中的非终结符实现解释操作说明:输入 Contex

000

 2021/02/07

Java  

备忘录模式 Memento Pattern 简介 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。可以这样理解备忘录模式:现实生活中的备忘录是用来记录某些要去做的事情,或者是记录已经达成的共同意见的事情,以防忘记了。而在软件层面,备忘录模式有着相同的含义,备忘录对象主要用来记录一个对象的某种状态,或者某些数据,当要做回退时,可以从备忘录对象里获取原来的数据进行恢复操作。 UML类图与角色 Originator:对象(需要保存状态的对象)Memento:备忘录对象,负责保存记录,即 Originator 内部状态Caretaker:守护者对象,负责保存多个备忘录对象,使用集合管理,提高效率说明:如果希望保存多个 Originator 对象的不同时间的状态,只需要要 HashMap 示例典型示例/** * 要被记录的对象 */ @Getter @Setter public class Originator { /** * 状态信息 */ private String state;

000

 2021/02/07

Java  

中介模式 Mediator Pattern 简介 用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式属于行为型模式,使代码易于维护。比如 MVC 模式,C(Controller 控制器)是 M(Model 模型)和 V(View 视图)的中介者,在前后端交互时起到了中间人的作用 UML类图与角色 Mediator:就是抽象中介者,定义了同事对象到中介者对象的接口Colleague:是抽象同事类ConcreteMediator:具体的中介者对象,实现抽象方法,他需要知道所有的具体的同事类,即以一个集合来管理HashMap,并接受某个同事对象消息,完成相应的任务ConcreteColleague:具体的同事类,会有很多,每个同事只知道自己的行为,而不了解其他同事类的行为(方法),但是他们都依赖中介者对象 示例 情景介绍 智能家庭项目: 智能家庭包括各种设备,闹钟、咖啡机、电视机、窗帘等主人要看电视时,各个设备可以协同工作,自动完成看电视的准备工作,比如流程为:闹铃响起->咖啡机开始做咖啡->

000

L A B E L