- Default Parameters(默认参数) in ES6
- Template Literals (模板文本)in ES6
- Multi-line Strings (多行字符串)in ES6
- Destructuring Assignment (解构赋值)in ES6
- Enhanced Object Literals (增强的对象文本)in ES6
- Arrow Functions (箭头函数)in ES6
- Promises in ES6
- Block-Scoped Constructs Let and Const(块作用域构造 Let and Const)
- Classes(类) in ES6
- Modules(模块) in ES6
- ES7 的 Array.prototype.includes()
- ES8 的 async/await 、String padding: padStart()和padEnd() 、 Object.values()
- ES9 的 Rest/Spread 属性、for await of、 Promise.finally()
- ES10 的 Array.prototype.flat() 、 Array.prototype.flatMap() 、String的 trimStart() trimEnd()
- ES11 的 Promise.allSettled 、空值处理及可选链
- ES12 Promise.any()
- JS 数组 API
- 防抖和节流
- 全屏 js
- Javascript 获取数组中最大和最小值
- js 精度计算
- js 的微任务和宏任务
- js 深浅拷贝
- 纯前端解析 excel
- js 中的异步
- js 中的循环删除
- 判断两对象是否相等(别用 === )
- JS 获取指定字符的前/后值
复杂视图情况下提升渲染性能,因为虚拟DOM+Diff算法可以精准找到DOM树变更的地方,减少DOM的操作(重排重绘)
- 揭秘Vue中的Virtual Dom
- simple-virtual-dom
- snabbdom
- snabbdom核心
1. init()设置模块.创建patch()函数
2. 使用h()函数创建JavaScript对象(Vnode)描述真实DOM
3. patch()比较新旧两个Vnode
4. 把变化的内容更新到真实DOM树
- shouldComponentUpdate、PureComponent、React.memo(避免不必要的渲染)
- 使用 React Fragments 避免额外标记
- 懒加载组件(react中使用到了Suspense和 lazy组件实现代码拆分功能)
- dom节点唯一key
- 15 分钟学会 Immutable
- immer —— 提高React开发效率的神器
- 避免使用内联函数(使用内联函数,则每次调用render函数时都会创建一个新的函数实例)
- React.memo() 和 useMemo() 的主要区别
React.memo() 是一个高阶组件,我们可以使用它来包装我们不想重新渲染的组件,除非其中的 props 发生变化。
useMemo() 是一个 React Hook,我们可以使用它在组件中包装函数。我们可以使用它来确保该函数中的值仅在其依赖项之一发生变化时才重新计算。
- 父组件向子组件通信
- 子组件向父组件通信
- 跨级组件之间通信 context
- 非嵌套组件间通信
- Redux
install events依赖
npm install events --save
使用
import { EventEmitter } from 'events';
export default new EventEmitter();
- AntD 对 request.js 的封装
- 对 AntD model 的封装
- Ant Design Pro 内存溢出(out of memory)
- Ant Design table 组件分页 pagination
- Ant Design Table 组件 defaultExpandAllRows={true}不起作用
- Ant Design modal 的 destroyOnClose 属性-关闭时销毁 Modal 里的子元素
- Ant Design modal 的 afterClose 属性-modal 完全关闭后的回调
- 获取文字省略提示
- 为 AntD pro 配置多个环境
- 一个页面多个 form 会相互影响
- form 表单中设置 initialValue 注意
- React context 高阶运用(父子孙组件传值)
- AntD Tabs 标签页如何切换标签时立即更新标签内 content 内容(而不是带有缓存内容不改变)
- 函数式异步请求(request 等)返回的 Promise 对象怎样获取其中的值
- antd 文件上传下载
- antd +dva 实现动态获取树形数据表格
- antd BUG 记录日志
- AntD 官方推荐社区精选组件
- 实现 antd 的 modal 组件可以拖拽的功能(dragm)
- React components foundation of ant.design(antd 底层基础组件)
- antd-multi-cascader(级联组件)
- echarts-for-react
- rsuite-A suite of React components
- |react-virtualized|react-virtualized | 用于大列表和表格数据的渲染
- react-pdf(Create PDF files using React)
- Styled Components
- ali-react-table(阿里出品-现代化的高性能 React 表格组件)
- 公民身份号码正确性判定及程序实现
- form 表单删除空字符串
- form 表单转换对象元素数组为字符串
- js 判空函数
- 树形结构数据删除空的子级节点
- Ant Design table 组件分页 pagination
- 百分数与小数互相转换
- 金钱格式化三位分
- 随机生成 16 位
- AntD 对 request.js 的封装
- 对 AntD model 的封装
- js 去除空格 12 种方法
- JavaScript 常用工具方法封装
- screenfull(全屏插件)
- react-qmap(一个对腾讯 web 地图简单封装的 React 组件)
- react-amap(基于 React 封装的高德地图组件)
- animate.css(css 动画库)
- JsBarcode(前端 JavaScript 条形码生成解决方案)
- react-barcode(在 React 中生成条形码)
- qrcode.react(A React component to generate QR codes)
- react-particles-js(用来实现登录页背景的粒子效果)
- sockette(一个漂亮的 websocket 包装器,能够在断开后自动重连)
install
$ npm install --save sockette
Usage
const Sockette = require('sockette');
const ws = new Sockette('ws://localhost:3000', {
timeout: 5e3,
maxAttempts: 10,
onopen: e => console.log('Connected!', e),
onmessage: e => console.log('Received:', e),
onreconnect: e => console.log('Reconnecting...', e),
onmaximum: e => console.log('Stop Attempting!', e),
onclose: e => console.log('Closed!', e),
onerror: e => console.log('Error:', e)
});
ws.send('Hello, world!');
ws.json({type: 'ping'});
ws.close(); // graceful shutdown
// Reconnect 10s later
setTimeout(ws.reconnect, 10e3);
- Mybatis generator mapper 文件重新生成不会覆盖原文件
- springboot 服务器部署
- springboot 集成 druid
- Spring Boot 最常用的 3 种读取 properties 配置文件中数据的方法:
- Java 开启线程方式(用于启动应用程序)
阿里代码规约检测(GitHub:https://github.com/alibaba/p3c)
- maven-pom 文件详解
- Apache Maven Assembly Plugin
- maven-assembly-plugin 入门指南
- maven-assembly-plugin 的详细使用
- 利用 assembly 插件分环境打包配置文件
- org.polago.maven.plugins---合并多个配置文件至一个文件
- maven-remote-resources-pluginmaven 多项目资源共享
mysql> select version();
+------------+
| version() |
+------------+
| 5.7.21-log |
+------------+
1 row in set (18.09 sec)
CREATE TRIGGER `T` BEFORE INSERT ON `srm_source_list_line_copy1`
FOR EACH ROW begin
set new.srm_source_list_num=concat('IMH',lpad(((SELECT substring(srm_source_list_num,4,10) from srm_source_list_line_copy1 where srm_source_list_num=(select srm_source_list_num from srm_source_list_line_copy1 order by srm_source_list_num desc limit 1))+1),10,0));
end;
UPDATE srm_purchase_info_record_line_copy1 SET
created_date = NOW(),last_edited_date = NOW(),tenant_code = '10000028',
state = 'DRAFT',
material_category_code = '08',
material_category_id = '2FE07A4C-9190-11EA-A7EB-0242C0A84404',
material_category_name ='生产性物资',
purchase_info_remark = '历史数据',
id = UUID(),
project_category_code = case record_type_code when '0' Then '0' when '2' Then 'K' when '3' Then 'L' end;
INSERT INTO user2(`u_id`,`name`) SELECT `id`,`name` FROM user;
UPDATE srm_source_list_line SET
srm_source_list_item_num = CONCAT('000',srm_source_list_item_num,0) WHERE LENGTH(srm_source_list_item_num) = 1;
UPDATE srm_source_list_line SET
srm_source_list_item_num = CONCAT('00',srm_source_list_item_num,0) WHERE LENGTH(srm_source_list_item_num) = 2;
ALTER table baf_sap_material_group_map_purchase_group ADD INDEX business_unit(business_unit);
- MID()函数 - 用于得到一个字符串的一部分 这个函数被 MySQL 支持,但不被 MS SQL Server 和 Oracle 支持。在 SQL Server, Oracle 数据库中,我们可以使用 SQL SUBSTRING 函数或者 SQL SUBSTR 函数作为替代。
SELECT MID(ColumnName, Start [, Length]) FROM TableName;
mysql> SELECT MID('NowaMagic', 5, 5); -Magic
show processlist;
杀死进程 kill id
SELECT
COLUMN_NAME 字段名称,
COLUMN_TYPE 数据类型,
IF(IS_NULLABLE='NO','是','否') AS '必填',
COLUMN_COMMENT 注释
FROM
INFORMATION_SCHEMA.COLUMNS
where
-- Finance为数据库名称,到时候只需要修改成你要导出表结构的数据库即可
table_schema ='srm_wa'
AND
-- user为表名,到时候换成你要导出的表的名称
-- 如果不写的话,默认会查询出所有表中的数据,这样可能就分不清到底哪些字段是哪张表中的了
table_name = 'srm_calibration_head_info'
查询表所有信息
select * from INFORMATION_SCHEMA.COLUMNS where table_schema = "srm_wa" and table_name = "srm_calibration_head_info";
SELECT
COLUMN_NAME 字段,
DATA_TYPE 类型,
CHARACTER_MAXIMUM_LENGTH 长度,
COLUMN_COMMENT 注释,
column_key 索引,
EXTRA 外键
FROM
INFORMATION_SCHEMA.COLUMNS
where
-- Finance为数据库名称,到时候只需要修改成你要导出表结构的数据库即可
table_schema ='srm_wa'
AND
-- user为表名,到时候换成你要导出的表的名称
-- 如果不写的话,默认会查询出所有表中的数据,这样可能就分不清到底哪些字段是哪张表中的了
table_name = 'srm_calibration_head_info';