展开运算符与rest参数
前言这周在工作中遇到了vue.js中的对象展开运算符的语法,有点没搞懂。现在记录学习一下。这里主要学习一下,ES6的rest参数,展开运算符(对象展开运算符、数组展开运算符、函数展开运算符),感觉它们有点相似。 rest参数 (剩余参数)剩余参数的语法:允许我们将一个不定数量的参数表示为一个数组。 语法: function(a, b, ...theArgs) { // ... } 由于JavaScript函数允许接收任意个参数,于是我们就不得不用arguments来获取所有参数: function foo(a, b) { var i, rest = []; if (arguments.length > 2) { for (i = 2; i<arguments.length; i++) { rest.push(arguments[i]); } } console.log('a = ' + a); console.log('b = ' + b)...
try-with-resources机制
Java7提供了try-with-resources机制,其类似Python中的with语句,将实现了java.lang.AutoCloseable 接口的资源定义在 try 后面的小括号中,不管 try 块是正常结束还是异常结束,这个资源都会被自动关闭。 try 小括号里面的部分称为 try-with-resources 块。 Java 7 的编译器和运行环境支持新的 try-with-resources 语句,称为 ARM 块(Automatic Resource Management) ,自动资源管理。 使用try-with-resources机制的代码如下所示: public static String readFirstLineFromFile(String path) throws IOException { try (BufferedReader reader = new BufferedReader(new FileReader(path))) { return reader.readLine(); } } 在Java7之前,只能...
Git合并特定commits到另一个分支
前言这周遇到一个使用git有点特别的操作。如何从一个分支合并特定的commits到另一个分支。有时候只合并你需要的那些commits,不需要的commits就不合并进去了。平常都很少遇到这样的情况,所以查了一下资料,记录一下。 合并某个分支上的单个commit使用git log或查git log --graph --pretty=oneline --abbrev-commit 查看提交的信息,记住commit id. git checkout [branch-name] 切换到合并的分支 git cherry-pick <commit-id> 把某个commit id提交合并到当前分支 如: dd2e86 - 946992 -9143a9 - a6fd86 - 5a6057 [master] \ 76cada - 62ecb3 - b886a0 [feature] 比如,feature 分支上的commit 62ecb3 非常重要,它含有一个bug的修改,或其他人想访问的内容。无论什么原因,你现在只需要将62ecb3 合并到master,而不合并...
Integer类型的值比较大小
前言这个星期在写代码的时候发现一个问题,这个问题以前我都没有注意过,就是关于Integer类型或int类型的值的比较。 Integer大小比较问题描述一下面演示,我出现的问题: public class DemoApplication { public static void main(String[] args) { Integer code = 530000; City city = City.init(); Integer c_code = city.getCode(); if (c_code == code) { System.out.println("结果:true"); } else { System.out.println("结果:false"); } } static class City { private Integer id; ...
vscode的debug的基本使用
前言最近一直在写vue.js代码,一直想找一款比较好一点的编辑器,用过WebStorm、IDEA、HBuilder、SublimeText3编辑器。刚开始常使用WebStorm,觉得它功能特别强大,但是收费,占用内存有点高。后来我就使用了vscode,它小巧,免费,更少的内存和CPU占用率等等。今天就来简单介绍一下vscode的debug模式的使用。 vscode的debugger环境是分为Chrome和Node的。 如何在Chrome环境下,使用vscode debugger进行代码调试?第一步,我们需要安装插件Debugger For Chrome,因为vscode里面是没有内置调试Chrome的模块的,需要单独安装 第二步,打开vscode调试区域,然后点设置 然后,选Chrome 进入了launch.json文件,修改一下配置 { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attr...
MySQL基本优化
MySQL如何优化表的设计合理化 (符合 3NF) 添加适当索引 (index) [ 四种 : 普通索引 、主键索引、唯一索引unique 、全文索引] SQL语句优化 分表技术 (水平分割 、垂直) 读写 [写: update/delete/add]分离 存储过程 [模块化编程,可以提高速度 ] 对mysql配置优化[配置最大并发数 my.ini, 调整缓存大小] mysql服务器硬件升级 定时的去清除不需要数据 ,定时进行碎片整理(MYISAM) 数据库范式什么是数据库范式为了建立冗余较小、结构合理的数据库,设计时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定范式。 数据库三大范式第一范式:1NF是对属性的原子约束,要求(列)具有原子性,不可再分解。(只要是关系型数据库都满足 1NF) 第二范式:2NF是对记录的唯一性约束,表中的记录是唯一, 就满足2NF, 通常我们设计一个主键来实现,不能包含业务逻辑。 第三范式:3NF是对字段冗余性的约束,它要求字段没有冗余。 没有...
Java8之Lambda表达式
Lambda表达式介绍Lambda表达式Lambda表达式是 Java8 中最重要的新功能之一。使用 Lambda 表达式可以替代只有一个抽象函数的接口实现,告别匿名内部类,代码看起来更简洁易懂。Lambda表达式同时还提升了对集合、框架的迭代、遍历、过滤数据的操作。 Lambda表达式特点1、函数式编程;2、参数类型自动推断;3、代码量少,简洁 Lambda表达式好处1、更简洁的代码;2、更容易的并行 Lambda表达式使用场景任何有函数式接口的地方 Lambda表达式示例1234567891011121314151617181920212223//匿名内部类方式 new Thread(new Runnable() { @Override public void run() { System.out.println("thread run"); } }).start(); //lambda表达式方式 new Thread(() -&...