cosyer's Blog

Blog


  • 首页

  • 友链

  • 留言板

  • 归档

  • 关于

  • 搜索
6月
23
更新于
6月23
2020
工具

windows安装mysql

发表于 2020-06-23 | 热度 ℃
| 字数统计: 468 (字) | 阅读时长: 2 (分钟)

安装包下载

  • 下载地址:https://dev.mysql.com/downloads/mysql/

  • Mysql国内镜像:http://mirrors.sohu.com/mysql/MySQL-8.0/

下载完成后,选择一个磁盘内放置并解压。

设置环境变量

  1. 变量名:MYSQL_HOME
  2. 变量值:E:\mysql5.7.23
  3. path里添加:%MYSQL_HOME%\bin

初始化设置

创建data Uploads文件夹

my.init文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[mysqld]
port=3306
character_set_server=utf8
basedir=E:\mysql5.7.23
datadir=E:\mysql5.7.23\data
server-id=1
sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
lower_case_table_names=1
innodb_file_per_table = 1
log_timestamps=SYSTEM

log-error = error.log
slow_query_log = 1
slow_query_log_file = slow.log
long_query_time = 5
log-bin = binlog
binlog_format = row
expire_logs_days = 15
log_bin_trust_function_creators = 1
secure-file-priv=E:\mysql5.7.23\Uploads

[client]
default-character-set=utf8

阅读全文 »
6月
02
更新于
6月02
2020
JS

redux状态传播

发表于 2018-06-21 | 热度 ℃
| 字数统计: 1,168 (字) | 阅读时长: 5 (分钟)

Redux三大概念

Redux 是JavaScript状态容器,提供可预测化的状态管理

action 普通的JS对象描述发生什么

reducer 只是一个接收 state 和 action,并返回新的 state 的函数

Store — 数据存储中心,同时连接着Actions和Views(React Components)。

  1. Store需要负责接收Views传来的Action
  2. 然后,根据Action.type和Action.payload对Store里的数据进行修改
  3. 最后,Store还需要通知Views,数据有改变,Views便去获取最新的Store数据,通过setState进行重新渲染组件(re-render)。

三大原则

  1. 单一数据源

整个应用的 state 被储存在一棵 object tree 中,并且这个 object tree 只存在于唯一一个 store 中。和根级的reducer,拆成多个reducer而不是多个store。

  1. State 是只读的

唯一改变 state 的方法就是触发 action,action 是一个用于描述已发生事件的普通对象。

  1. 使用纯函数来执行修改

为了描述 action 如何改变 state tree ,你需要编写 reducers。传递数据 payload规范。

当 state 变化时需要返回全新的对象,而不是修改传入的参数。


阅读全文 »
6月
02
更新于
6月02
2020
工具

Hybrid混合方案

发表于 2020-06-01 | 热度 ℃
| 字数统计: 1,732 (字) | 阅读时长: 6 (分钟)

随着 Web技术 和 移动设备 的快速发展,在各家大厂中,Hybrid 技术已经成为一种最主流最不可取代的架构方案之一。一套好的 Hybrid 架构方案能让 App 既能拥有极致的体验和性能,同时也能拥有Web技术灵活的开发模式、跨平台能力以及热更新机制。因此,相关的 Hybrid 领域人才也是十分的吃香,精通Hybrid 技术和相关的实战经验,也是面试中一项大大的加分项。

混合方案简析

Hybrid App,俗称 混合应用,即混合了 Native技术 与 Web技术 进行开发的移动应用。现在比较流行的混合方案主要有三种,主要是在UI渲染机制上的不同:

Webview UI

通过 JSBridge 完成 H5 与 Native 的双向通讯,并 基于 Webview 进行页面的渲染;

优势: 简单易用,架构门槛/成本较低,适用性与灵活性极强;
Webview 性能局限,在复杂页面中,表现远不如原生页面;

Native UI

通过 JSBridge 赋予 H5 原生能力,并进一步将 JS 生成的虚拟节点树(Virtual DOM)传递至 Native 层,并使用 原生系统渲染。

优势: 用户体验基本接近原生,且能发挥 Web技术 开发灵活与易更新的特性;
上手/改造门槛较高,最好需要掌握一定程度的客户端技术。相比于常规Web开发,需要更高的开发调试、问题排查成本;

小程序

通过更加定制化的 JSBridge,赋予了 Web 更大的权限,并使用双 WebView 双线程的模式隔离了 JS逻辑 与 UI渲染,形成了特殊的开发模式,加强了 H5 与 Native 混合程度,属于第一种方案的优化版本;

优势: 用户体验好于常规 Webview 方案,且通常依托的平台也能提供更为友好的开发调试体验以及功能;
劣势: 需要依托于特定的平台的规范限定

阅读全文 »
6月
02
更新于
6月02
2020
JS

switch的块级作用域

发表于 2019-03-10 | 热度 ℃
| 字数统计: 406 (字) | 阅读时长: 2 (分钟)

ES6 或 TS 引入了块级作用域,通过let和const、class等可以定义块级作用域里的变量,块级作用域内的变量不存在变量提升,且存在暂时性死区(在代码块内,使用let或const声明变量前该变量都是不可改变的)。常见的if语句,for循环的循环体内都可以定义块级变量。那么switch语句中的块级作用域是什么呢? 先给出结论:

switch语句中的块级作用域,在整个switch语句中,而不是对于每一个case生成一个独立的块级作用域。


阅读全文 »
5月
26
更新于
5月26
2020
知识

面试问题集锦

发表于 2020-05-12 | 热度 ℃
| 字数统计: 6,791 (字) | 阅读时长: 23 (分钟)

请做一下自我介绍

回答提示: 一般人回答这个问题过于平常,只说姓名、年龄、工作经验,这些在简历上都有。其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,要突出积极的个性和做事的能力,说的合情合理企业才会相信。

你最大的优点是什么?

回答提示: 沉着冷静、条理清楚、立场坚定、乐于助人等,加上例子如:我在XX经过一到两年的培训及项目实战,加上实习工作,我想我适合这份工作。

说说你最大的缺点?

回答提示: 这个问题企业问的概率很大,通常不希望听到直接回答的缺点是什么等,如果求职者说自己小心眼、非常懒、工作效率低,企业肯定不会录用你。要从自己的优点说起,中间加一些小缺点,最后再把问答转回到优点上,突出优点的部分。


阅读全文 »
5月
18
更新于
5月18
2020
JS

如何在 create-react-app 中使用 CSS Modules

发表于 2020-05-18 | 热度 ℃
| 字数统计: 957 (字) | 阅读时长: 4 (分钟)

先简单了解下什么是 CSS Modules

A CSS Module is a CSS file in which all class names and animation names are scoped locally by default

简单点说 CSS Module 是具有局部作用域的 css 文件。既然提到了局部作用域,那么肯定有全局作用域,在 create-react-app 中,我们引入 css 文件通常为以下形式:

1
2
3
4
/* index.css */
.color {
color: red;
}
1
2
3
4
5
6
7
/* index.tsx */
import React, { Component } from 'react'
import './index.css'

export default class Index extends Component {
// ...
}

阅读全文 »
5月
17
更新于
5月17
2020
Node

大文件分片上传优化

发表于 2020-05-17 | 热度 ℃
| 字数统计: 2,014 (字) | 阅读时长: 9 (分钟)

在开发过程中,会遇到在网站上传 100 MB 以上的文件经常失败,重试也要等老半天。那么应该怎么做才能快速上传,就算失败了再次发送也能从上次中断的地方继续上传呢?

整体思路

第一步是结合项目背景,调研比较优化的解决方案。 文件上传失败是老生常谈的问题,常用方案是将一个大文件切片成多个小文件,并行请求接口进行上传,所有请求得到响应后,在服务器端合并所有的分片文件。当分片上传失败,可以在重新上传时进行判断,只上传上次失败的部分,减少用户的等待时间,缓解服务器压力。这就是分片上传文件。

流程图如下: upload-flow


阅读全文 »
5月
14
更新于
5月14
2020
工具

如何使用 markdown 语法写博客

发表于 2018-04-07 | 热度 ℃
| 字数统计: 344 (字) | 阅读时长: 1 (分钟)
Markdown

标题1

标题2

斜体 粗体 粗斜体
删除线 下划线文本

  1. I
  2. Love
  3. You
  • 点
  • Foo
  • Bar

阅读全文 »
5月
13
更新于
5月13
2020
JS

React Refs揭密

发表于 2019-02-17 | 热度 ℃
| 字数统计: 1,198 (字) | 阅读时长: 5 (分钟)

什么是Ref

React的官方介绍是这样的:

In the typical React dataflow, props are the only way that parent components interact with their children. To modify a child, you re-render it with new props. However, there are a few cases where you need to imperatively modify a child outside of the typical dataflow. The child to be modified could be an instance of a React component, or it could be a DOM element. For both of these cases, React provides an escape hatch.

其中提到了这几个概念:

在典型的React数据流理念中,父组件跟子组件的交互都是通过传递属性(properties)实现的。如果父组件需要修改子组件,只需要将新的属性传递给子组件,由子组件来实现具体的绘制逻辑。

在特殊的情况下,如果你需要命令式(imperatively)的修改子组件,React也提供了应急的处理办法–Ref。

Ref 既支持修改DOM元素,也支持修改自定义的组件。


阅读全文 »
5月
08
更新于
5月08
2020
JS

正则总结

发表于 2018-10-14 | 热度 ℃
| 字数统计: 3,817 (字) | 阅读时长: 15 (分钟)

正则表达式脱离语言,和数据结构与算法一样,作为程序员的软技能。目前存在的问题:不受重视 优点:

  • 显著的提升代码质量
  • 灵活多变
  • 强大的数据校验支持
1
2
3
4
var regex1 = /cosyer/g;
var regex2 = new RegExp('cosyer', 'g');
var regex3 = new RegExp(/cosyer/, 'g');
var regex4 = new RegExp(/cosyer/g);

其中的模式(pattern)部分可以是任何简单或复杂的正则表达式,可以包含字符类、限定符、分组、 向前查找以及反向引用。每个正则表达式都可带有一或多个标志(flags),用以标明正则表达式的行为。 正则表达式的匹配模式支持下列 3 个标志。

  • g:表示全局(global)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即停止;
  • i:表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写;
  • m:表示多行(multiline)模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项。

新增的修饰符:

  • u: Unicode模式。用来处理Unicode大于 \uFFFF的单个字符(超过\uFFFF会被程序员解析为两个字符)
  • y: 粘连模式。和g一样作为全局匹配,区别是g的下一次匹配不要求位置,但是y下一次匹配要求紧跟这这次匹配项之后
  • s: dotAll模式。正则表达式中点(.)作为匹配(除换行符\n,回车符\r,行分隔符,段分隔符)任意单个字符,支持点(.)真正匹配所有单个字符

两种使用方式

1
2
var a1 = /\+d/g; // 字面形式
var a2 = new RegExp('\\+d','g') // 构造函数

在JavaScript中建议使用字面形式的正则表达式,因为不需要担心字符串中的转义字符。比如上面示例代码中字面形式使用\d而构造函数使用的是\d;

1
2
3
var text = "aaa "; 
var pattern1 = /\s$/; //匹配字符串末尾的空格
pattern1.exec(text);

阅读全文 »
1…101112…16
陈宇(cosyer)

陈宇(cosyer)

不去做的话永远也做不到。

159 日志
10 分类
51 标签
RSS
GitHub Twitter E-Mail FB Page
推荐阅读
  • Callmesoul
  • JsTips
  • Personal Site
  • Resume
© 2021 陈宇(cosyer)
终于等到你(UV):   |   欢迎再来(PV):
Blog总字数: 312.5k字
苏ICP备17005342号-1