摘要: 1). 从官网上下载Redis的压缩包 2). 将压缩包解压到 某个指定的文件目录中 tar -xzvf redis-4.0.9.tar.gz /xx/xx/xx_dir 3).使用 gcc 进行二进制文件的编译 make 4).将Redis安装到 /usr/local/redis 目录中去 这里需 阅读全文
posted @ 2019-07-04 14:53 豆豆飞 阅读(843) 评论(0) 推荐(0)
摘要: 基本命令 包括SET , GET , INCR , DEL , EXPIRE , TTL SET server:name "10" GET server:name INCR server:name DEL server:name INCR server:name #Redis提供INCR操作,是因为 阅读全文
posted @ 2019-07-04 14:53 豆豆飞 阅读(147) 评论(0) 推荐(0)
摘要: Redis支持的数据类型 String List Set Sorted Set Hashes Bit array HyperLogLog Binary-safe strings : Redis的键是二进制安全的,可以使用任何的二进制序列作为键. 比如"foo"这样的字符串,甚至是JPEG文件的二进制 阅读全文
posted @ 2019-07-04 14:53 豆豆飞 阅读(487) 评论(0) 推荐(0)
摘要: 1.SQL语句优化的一般步骤 1).了解各种SQL的执行频率 客户端连接成功后,可以通过SHOW [SESSION | GLOBAL] STATUS 命令来查看服务器状态信息; 也可以在操作系统上使用 mysqladmin extended-status 命令获得这些消息. SESSION : 表示 阅读全文
posted @ 2019-07-04 14:52 豆豆飞 阅读(169) 评论(0) 推荐(0)
摘要: 1.SQL Mode解决的问题: a.通过设置SQL Mode , 可以完成不同严格程度的数据校验,有效地保障数据准确性. b.通过设置SQL Mode 为ANSI模式,来保证大多数SQL符合标准的SQL语法,应用在不同数据库之间迁移时,对业务SQL进行的修改较小. 2.MySQL SQL Mode 阅读全文
posted @ 2019-07-04 14:51 豆豆飞 阅读(141) 评论(0) 推荐(0)
摘要: 1.正则表达式的使用 ^ 在字符串开始处进行匹配 $ 在字符串末尾处进行匹配 . 匹配任意单个字符,包括换行符 [...] 匹配出括号内的任意字符 [^...] 匹配不出括号内的任意字符 a* 匹配零个或多个a(包括空串) a+ 匹配1个或多个a(不包括空串) a? 匹配1个或0个a a1|a2 匹 阅读全文
posted @ 2019-07-04 14:51 豆豆飞 阅读(135) 评论(0) 推荐(0)
摘要: SQL中的安全问题 1.SQL注入 demo1: SELECT * FROM user WHERE username = ? AND password = ? ; http://127.0.0.1/injection/user.do?username=angel' or '1=1 http://12 阅读全文
posted @ 2019-07-04 14:50 豆豆飞 阅读(568) 评论(0) 推荐(0)
摘要: MySQL支持的锁定 : a.表级锁定 : MyISAM 和 MEMORY b.页级锁定 : BDB c.行级锁定 : InnoDB 默认情况下,表锁和行锁都是自动获得的,不需要额外命令. 有些情况下,用户需要明确地进行锁表或者进行事务的控制,确保事务的完整性. 1.LOCK TABLES 和 UN 阅读全文
posted @ 2019-07-04 14:13 豆豆飞 阅读(177) 评论(0) 推荐(0)
摘要: 触发器是与表有关的数据库对象,在满足条件时触发,并执行触发器中定义的语句集合. 触发器可以协助应用在数据库端确保数据的完整性. 1.创建触发器 CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH RO 阅读全文
posted @ 2019-07-04 14:08 豆豆飞 阅读(135) 评论(0) 推荐(0)
摘要: 存储过程和函数 存储过程和函数是事先经过编译并存储在数据库中的一段SQL语句的集合. 调用存储过程和函数可以简化应用开发人员的工作,减少数据在数据库和应用服务器之间的传输,提高数据处理的效率. 存储过程和函数的区别在于: 函数必须有返回值,而存储过程没有. 存储过程的参数可以使用 IN,OUT,IN 阅读全文
posted @ 2019-07-04 14:03 豆豆飞 阅读(213) 评论(0) 推荐(0)
摘要: 视图概述 视图View是一种虚拟存在的表.行和列数据来自自定义视图的查询中使用的表,在使用视图时动态生成. 视图的优势: 简单:用户不需要关心后面对应的表的结构,关联条件和筛选条件.对用户来说事已经过滤筛选好的复合条件的结果集. -- 那应该就是相当于Java中的接口了. 安全:使用视图的用户只能访 阅读全文
posted @ 2019-07-04 14:02 豆豆飞 阅读(155) 评论(0) 推荐(0)
摘要: 索引概述 每种存储引擎对每个表至少支持16个索引,总索引长度至少256字节. MyISAM和InnoDB的表默认创建BTREE索引.MEMORY引擎默认使用HASH索引,但也支持BTREE MySQL目前不支持函数索引,但支持前缀索引. MyISAM支持的前缀索引最大长度为1000字节;InnoDB 阅读全文
posted @ 2019-07-04 13:45 豆豆飞 阅读(319) 评论(0) 推荐(0)
摘要: 查询当前默认存储引擎 SHOW VARIABLES LIKE 'table_type' ; 查询当前数据库支持的引擎有哪些 : SHOW ENGINES \G -- 推荐这种 , 显示更多信息 SHOW VARIABLES LIKE 'have%' ; 建表时指定存储引擎 CREATE TABLE 阅读全文
posted @ 2019-07-04 13:44 豆豆飞 阅读(118) 评论(0) 推荐(0)
摘要: 字符集的选择 1.数据库方面最流行的是UTF-8 2.如果只考虑支持汉字,那么使用GBK,毕竟GBK下,每个汉字只占用2个字节,而UTF-8需要3个字节. 3.如果需要做大量的字符运算,如比较/排序等,选择 定长字符集 比较好. 4.如果所有客户端程序都支持相同的字符集,优先选择该字符集.避免因字符 阅读全文
posted @ 2019-07-04 13:44 豆豆飞 阅读(140) 评论(0) 推荐(0)
摘要: 算数运算符 + - * / DIV % MOD 比较运算符 = <> != <=>(安全等于,NULL<=>NULL返回1) < <= > >= BETWEEN IN 'IS NULL' 'IS NOT NULL' LIKE REGEXP RLIKE 逻辑运算符 NOT ! AND && OR || 阅读全文
posted @ 2019-07-04 13:43 豆豆飞 阅读(97) 评论(0) 推荐(0)
摘要: 常用函数 1.字符串函数 CONCAT(str1,str2,..,strN) 将str1,str2..strN 拼接成一个字符串,当这里有任何一个为NULL,则拼接结果为NULL INSERT(str, idx,len,tarStr) 将字符串str从 idx 位置开始,len个字符长度的子串替换为 阅读全文
posted @ 2019-07-04 13:43 豆豆飞 阅读(111) 评论(0) 推荐(0)
摘要: 数据类型的选择 1.CHAR与VARCHAR 存储/检索的方式不同. CHAR是固定长度,而VARCHAR是可变长度 非SQLMode下,超过指定长度,会做截取操作.SQLMode模式下,会报错 'adcdefgh'插入到CHAR(4)和VARCHAR(4)中,前者需要4字节,后者需要5字节,结果都 阅读全文
posted @ 2019-07-04 13:40 豆豆飞 阅读(166) 评论(0) 推荐(0)
摘要: MySQL支持的数据类型 1.数值类型: a.整数类型 TINYINT 1字节 有符号(-128~127); 无符号(0~255) SMALLINT 2字节 有符号(-32768~32767); 无符号(0~65535) MEDIUMINT 3字节 INT , INTEGER 4字节 BIGINT 阅读全文
posted @ 2019-07-04 13:39 豆豆飞 阅读(163) 评论(0) 推荐(0)
摘要: 注: 语句用 ; 或 \g \G 表示结束 . 建库语句 : CREATE DATABASE db_name ; 查询有哪些库 : SHOW DATABASES ; 选中/使用库 : USE db_name ; 查询该库中有哪些表 : SHOW TABLES ; 删除库 : DROP DATABAS 阅读全文
posted @ 2019-07-04 13:38 豆豆飞 阅读(162) 评论(0) 推荐(0)
摘要: 1.插入记录 基本语法 : INSERT INTO tbl_name (col_name ,col_name1,..,col_nameN) VALUES (val1,val2,…,valN) ; 对于可空字段/非空但用默认值字段/自增字段 可以不在insert后的字段列表中出现,对应的值分别为NUL 阅读全文
posted @ 2019-07-04 13:38 豆豆飞 阅读(154) 评论(0) 推荐(0)
摘要: (一) AOP的几种实现机制 1.静态代理 缺点 : 不灵活. 原因 : 需要其他编译器预编译,再织入到系统中,方可使用. 2.动态代理 缺点 : a.性能 比 静态代理 稍逊. 随着jvm的发展 , 差距越来越小 . b.模块类需要实现接口 . 动态代理只对接口有效 . 3.动态字节码增强 缺点 阅读全文
posted @ 2019-07-04 13:37 豆豆飞 阅读(224) 评论(0) 推荐(0)
摘要: 1.非线程安全 main线程更新ready址 , ReaderThread 线程持续检测ready状态 ,直到ready为true. 正常来讲,程序会输出42 ;但也有可能输出0 , 甚至可能程序复发终止。 输出0: @NotSafeThread public class NoVisibility 阅读全文
posted @ 2019-07-04 13:36 豆豆飞 阅读(156) 评论(0) 推荐(0)
摘要: 1.非线程安全 懒加载 ,是非线程安全的。 当做一个线程刚非空判断时,另一个线程也进入非空判断,则导致两个线程都创建了一个ExpensiveObject对象。违背预期。 @NotThreadSafe public class LazyInitRace { private ExpensiveObjec 阅读全文
posted @ 2019-07-04 13:35 豆豆飞 阅读(531) 评论(0) 推荐(0)
摘要: 1.安装Homebrew (未测试 ,因为本来自带了) ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install); 2.安装nodejs brew install node 3.安 阅读全文
posted @ 2019-07-04 13:34 豆豆飞 阅读(131) 评论(0) 推荐(0)
摘要: CSS 1.position 属性 对元素进行定位. absolute 相对于 非static类型的position 的 第一个(临近的) 父元素 进行定位. relative 相对于 正常文档流的位置进行定位. 可以简单理解为 相对于自己本身 进行偏移量定位. 例如,"position:relat 阅读全文
posted @ 2019-07-04 13:33 豆豆飞 阅读(127) 评论(0) 推荐(0)
摘要: 在指定范围内,生成随机整数 公式: Math.floor(Math.random * delta + minNum); // 返回 minNum ~ maxNum (maxNum = minNum + delta -1) 之间的正整数 -- 包含两侧边界值 关键点是 delta的正确设置 比如 : 阅读全文
posted @ 2019-07-04 13:31 豆豆飞 阅读(492) 评论(0) 推荐(0)
摘要: 看例子就行了,废话不多说! async function checkStatus(name){ return new Promise((resolve,reject) => { var that = this; this.timer = setTimeout(()=>{ // clearTimeou 阅读全文
posted @ 2019-07-04 13:31 豆豆飞 阅读(5085) 评论(0) 推荐(1)
摘要: js中只有 实现继承, 没有接口继承. 1.使用原型实现继承 构造函数,对象实例 中都有指向 原型对象的指针 但是构造函数实例和对象实例二者并没有直接联系(除了对象实例是用构造函数new出来这一点) 试想,当类型A的原型对象 是其它类型(比如B类型)的 对象实例(b) 的时候 那么A的prototy 阅读全文
posted @ 2019-07-04 13:30 豆豆飞 阅读(131) 评论(0) 推荐(0)
摘要: 正则表达式 (全局) 与 迭代的 配合: var text = 'console.log(person.name);'; var regex = /(\w*so\w*)/g; var matches ; var result = []; while ( matches = regex.exec( t 阅读全文
posted @ 2019-07-04 13:29 豆豆飞 阅读(126) 评论(0) 推荐(0)
摘要: 对象的属性 分为 : 数据属性 以及 访问器属性. 1.数据属性 1.1 数据属性的特性 对象的每个普通属性都有四个特性 : [ [ Configurable ] ] , [ [ Enumerable ] ] , [ [ Writable ] ] , [ [ Value ] ] 前三个的默认值都是t 阅读全文
posted @ 2019-07-04 13:22 豆豆飞 阅读(372) 评论(0) 推荐(0)
摘要: 对象的创建 1. Object() 构造函数 var foo = new Object(); 2. 对象字面量 var foo = {name:"name",age:17}; 以上两种方式 的缺点是: 在创建多个对象时, 会产生大量的重复代码. 3. 工厂模式 将公共的部分提取出来 , 用来创建相似 阅读全文
posted @ 2019-07-04 13:21 豆豆飞 阅读(243) 评论(0) 推荐(0)
摘要: 注意 : arguments.caller , arguments.callee 这些在严格模式下会报错. 1. callee 的使用 经典阶乘函数 : function factorial(num){ if(num <= 1) return 1 ; else return num * factor 阅读全文
posted @ 2019-07-04 13:20 豆豆飞 阅读(178) 评论(0) 推荐(0)
摘要: 检查基本数据类型时 , 使用 typeof 检测引用数据类型时 , 使用 instanceof 在检查 函数/正则表达式 的时候 , typeof 返回 function 阅读全文
posted @ 2019-07-04 13:20 豆豆飞 阅读(181) 评论(0) 推荐(0)
摘要: 函数表达式 函数又两种定义方式: ①.函数声明 它有个特性叫 函数声明提升.可以把这个声明放到最后面,前面调用不会报错. var ret = abc(); function abc(){return "abc";} ②.就是本页重点说的 函数表达式 它不具有所谓的"提升",所以一定先定义好,再在下面 阅读全文
posted @ 2019-07-04 13:19 豆豆飞 阅读(414) 评论(0) 推荐(0)
摘要: Q : 参数 到底是 按值传递 还是 按引用传递 ? A : 按值传递 例子 : // 这里用一个经典的 引用类型传递到函数参数中 , 来佐证是按值传递的 function setName(object){ object.name = 'name changed'; // ①添加name属性 obj 阅读全文
posted @ 2019-07-04 13:18 豆豆飞 阅读(129) 评论(0) 推荐(0)
摘要: 1.定义变量 let a).块作用域 , 不同于var的函数作用域 b).不可以重复定义同一个变量名 注: {} + let 组合使用, 可以替代以前的封闭空间 : (function(){})(); const a).常量赋值 :需要立即初始化 且 初始化后不可以修改。 b).和let一样 , 不 阅读全文
posted @ 2019-07-04 13:16 豆豆飞 阅读(125) 评论(0) 推荐(0)
摘要: 概述 :主要的十个新特性 Default Parameters(默认参数) in ES6 Template Literals (模板文本)in ES6 Multi-line Strings (多行字符串)in ES6 Destructuring Assignment (解构赋值)in ES6 Enh 阅读全文
posted @ 2019-07-04 13:15 豆豆飞 阅读(108) 评论(0) 推荐(0)
摘要: 创建项目根目录 切换到根目录下 , 并执行 npm init , 所有选项都默认即可. 安装 webpack webpack-cli vue vue-loader 添加项目结构 添加webpack配置文件 添加构建脚本 "build":"webpack —config ./xxx/webpack.x 阅读全文
posted @ 2019-07-04 13:14 豆豆飞 阅读(285) 评论(0) 推荐(0)
摘要: 可以使用Vue.directive( dir_name , {} ) 来定义全局自定义指令 也可以使用 directives{ dir_name : {} } 来定义局部自定义指令 钩子函数 : bind 只调用一次, 当指令第一次绑定在元素上时. 用来做一次性初始化操作. inserted 当绑定 阅读全文
posted @ 2019-07-04 13:13 豆豆飞 阅读(3805) 评论(0) 推荐(0)
摘要: 生命周期 beforeCreate : 数据观测 和 初始化事件还未开始 created : 完成数据观测 , 属性和方法运算 , 初始化事件 , $el属性还没有显示出来 beforeMount : render函数 首次被调用. 完成了 编译模板 , data中数据 结合 模板 生成了html虚 阅读全文
posted @ 2019-07-04 13:12 豆豆飞 阅读(1608) 评论(0) 推荐(0)
摘要: 初级 : 将二维数组 变成 一维数组 方式一 : 使用 js api (function(){ let origin = [1,2,[3,4],5]; let convert = origin.flat(); console.log(convert); // display [1,2,3,4,5] 阅读全文
posted @ 2019-07-04 11:49 豆豆飞 阅读(3849) 评论(0) 推荐(2)