- 博客(128)
- 资源 (1)
- 收藏
- 关注
原创 react-router-dom使用及源码实现
React-router-dom 是专门用于web应用的路由解决方案。1、Router、Link、Route1.1、基本使用首先编写一个简单的示例:import React from "react";import { BrowserRouter as Router, Route, Link} from "react-router-dom";export default function App() { return ( <div className="App"&
2021-09-10 15:49:25
689
原创 useCallback 与 useMemo
useCallback 与 useMemouseCallBack参数:一个内联回调函数依赖项数组返回值:该回调函数的 memoized 版本(可以理解为该回调函数被缓存起来了)只有当依赖项发生改变时,这个回调函数才会重新生成。使用场景举例:如果你需要将一个函数作为props传给子组件,并且子组件内部进行了一些优化,比如判断一下props改变时才重新渲染。那么就可以将这个函数使用 useCallback 进行缓存,传入这个函数的 memoized 版本。当父组件更新时,这个 memo
2021-09-03 19:08:41
541
原创 react-redux使用及源码分析(下)
react-redux使用及源码分析(下)上节主要讲解了 react-redux 在类组件和函数组件中的用法,本节主要分析一下如何自己实现一个 react-redux1、Provider 组件的实现我们发现 react-redux 的 Provider 其实和 react 中的 Context 用法很像,其实 react-redux 就是基于 Context 实现的。Provider 组件的实现很简单:// 1. 创建 context 对象const Context = React.create
2021-09-02 16:23:48
214
原创 create-react-app 打包时去除 console
create-react-app 打包时去除 console在 webpack.config.js 中找到下图代码的位置,添加配置pure_funcs: ['console.log']ps: 需要执行 npm run eject 才能暴露出webpack配置文件如上配置会在打包时将代码中的 console.log 调用都去掉,其他console调用不会去掉参考资料:terser/terser: ???? JavaScript parser, mangler and compressor too
2021-08-31 18:56:48
1038
原创 react-redux使用及源码分析(上)
react-redux使用及源码分析(上)一、为何使用react-redux使用原生 redux,需要在页面中手动获取state和手动触发action,并且还要自己订阅,以便在state发生变化时重新渲染视图。使用react-redux可以将state和触发action的方法,作为props传给组件,并且会自动订阅,props改变就自动渲染视图了。二、如何使用react-redux使用react-redux,有以下几个步骤:1、使用 redux 创建一个 storeimport { creat
2021-08-31 17:55:51
172
原创 create-react-app 配置代理
create-react-app 配置代理1、安装插件 http-proxy-middlewarenpm i http-proxy-middleware2、在 src 目录下新建文件 setupProxy.js 文件// 配置代理 - 用于联调const { createProxyMiddleware } = require('http-proxy-middleware')console.log('PROXY: ', process.env.PROXY_ENV)module.exports
2021-08-27 17:46:09
1322
原创 Cookie、Session、localStorage、SessionStorage 的区别
1)什么是 cookiecookie就是客户端保存用户信息的一种机制,用来记录用户的一些信息web服务器通过在http响应消息头增加Set-Cookie响应头字段将Cookie信息发送给浏览器,浏览器则通过在http请求消息中增加Cookie请求头字段将Cookie回传给web服务器Set-Cookie: "name=value;domain=.domain.com;path=/;expires=Sat, 11 Jun 2019 11:29:42 GMT;HttpOnly;secure"2)什么是
2020-07-12 12:22:22
384
原创 Express使用指南
Express基于 Node.js 平台,一个快速、开放、极简的 Web 开发框架Express提供了一个轻量级模块,把node.js的http功能封装在一个简单易用的接口中。Express也扩展了http模块的功能,能轻松处理路由、响应、cookie和HTTP请求的状态(一) 安装和配置全局安装npm install -g express查看版本express --version使用Express生成器创建一个Express项目全局安装 express-generatornpm i
2020-05-09 16:21:19
1000
原创 iView的Select选择框的选中内容前后有空格
现象如图,选中的内容前后有空格原因代码格式化导致的因为选中内容和 option 标签不在一行,导致选中内容前后产生空格解决方法改为在一行就好了如果对你有帮助,记得点个赞哦~...
2020-03-18 15:34:45
930
原创 IView Form表单 部分重置
在 IView 官网文档中,只给了这个 resetFileds 方法对整个表单进行重置那么如果想要只对某个或某几个表单项进行重置,该怎么办呢?查看IView源码发现它是对整个表单进行遍历来执行重置操作的,所以这个 fields 属性应该就是所有表单项的集合我们打印看一下可以看到这个 fields 属性就是我们所有表单项的集合,其中每个表单项有一个 prop 属性,就是该项的 ke...
2020-03-17 16:50:38
2264
原创 从零搭建express + vue开发环境
往下看之前,先确保你的机器上已经安装过 node,可以用 node -v 来确认下一、express框架和vue框架介绍express框架是一个基于node.js的web应用框架,它能够帮你创建一个从前端到后端功能完整的网站;vue是一个流行的前端框架,它主要是用来构建用户界面的,并且具有组件化,响应式等特点;所以,可以这样理解:express负责后端,vue负责前端,它俩之间使用HTTP...
2020-02-19 14:56:38
7973
8
原创 报错:node-pre-gyp WARN Tried to download(404): https://fsevents-binaries.s3-us-west-2.amazonaws.com
问题描述在用 npm 安装一个第三方插件时,报错node-pre-gyp WARN Tried to download(404): https://fsevents-binaries.s3-us-west-2.amazonaws.com经过查阅资料发现是因为我安装的 node.js 版本太高于是我们可以使用 node 版本管理工具 n 来安装不同版本的 node (ps: 这个工具的名...
2019-11-05 01:10:11
4545
原创 使用htmlUnit抓取同花顺股票数据
网站地址http://q.10jqka.com.cn/请求地址http://q.10jqka.com.cn/index/index/board/all/field/zdf/order/desc/page/4/ajax/1/其中的 page/4 就是页码访问网站 抓取每一页的股票数据private String crawler(String url) { ...
2019-06-15 16:53:14
3674
1
原创 HttpClient 实现酷狗 Top500 音乐下载
使用java的HttpClient实现酷狗音乐Top500歌曲的下载歌单URLhttps://www.kugou.com/yy/rank/home/1-8888.html?from=rank访问这个URL可以看到 22 条歌曲列表,把 1-8888 改成 2-8888 就可以看到下 22 首点一首歌进入播放页,然后打开谷歌浏览器控制台,在页面源码搜索mp3,就可以找到歌曲播放URL...
2019-06-15 16:40:19
1865
原创 SIM900A如何发送HTTP请求(GET、POST)
SIM900A是支持HTTP的,可以用AT指令来发送HTTP请求GET请求的AT指令初始化HTTP服务AT+HTTPINIT设置连接方式和APNAT+SAPBR=3,1,“CONTYPE”,“GPRS”AT+SAPBR=3,1,“APN”,“CMNET”注:其中 CMNET 是移动网 联通电信是其他的设置URLAT+HTTPPARA=“URL”,“www.s...
2019-04-28 14:10:36
2782
4
原创 SIM900A模块与PC如何连接?
SIM900A 模块采用串口(UART)通信,我的 SIM900A 开发板上含有 TTL 接口和 RS232 接口。我们需要将 SIM900A 模块与 PC或单片机进行连接,然后使用标准的 AT 指令对 SIM900A 模块进行控制,实现打电话发短信上网等功能。所以,您要做的是:使用您的控制器(包括单片机、电脑等)连接到 SIM900A 模块的 TTL 接口或是RS232 接口。推荐先用电脑...
2019-04-24 14:23:24
5704
3
原创 模拟登录北京移动
BJ10086访问登录页面GET https://login.10086.cn/html/bj/login.html发送时间戳 timestampGET https://login.10086.cn/loadSendflag.htm?timestamp= HTTP/1.1Referer: https://login.10086.cn/html/bj/iloginnew.ht...
2018-12-06 18:27:34
6829
15
原创 Java面向对象编程之封装
Java面向对象编程之封装在Java中使用class关键字来进行封装和C++一样, Java的class中的成员有属性(成员变量)方法(成员函数)class Person{ private String name; private int age; private char sex; public void setName(String na...
2018-10-26 14:45:46
446
1
原创 Java常用数据类型
Java中常见的数据类型整型byte : 1字节byte b = 127; // -128 ~ +127short : 2字节short s = 32767; // -32768 ~ 32767int : 4字节int i = 2147483647; // -2147483648 ~ 2147483647int i1 = 2_000_000_000; // 加下划线, ...
2018-10-22 15:36:23
711
1
原创 时空复杂度分析
时空复杂度分析数据结构和算法要解决的问题就是让代码运行得更快 , 让存储空间占得更少 , 所以时间和空间复杂度的分析是很重要的 .那么究竟该如何分析 ?大 O 复杂度表示法我们经常会看到 O(1) O(n) O(logn) 这些时空复杂度的表示其实这就是 大 O 复杂度表示法 , 它并不表示代码执行真正需要的时间 , 而是一种随着数据规模增长的趋势 , 其中 n 就是数据规模的大小 ....
2018-10-03 15:31:44
1826
原创 内存泄漏检测
内存泄漏检测什么是内存泄漏?内存泄漏不是指物理内存的消失, 而是失去了对这块内存的控制, 导致内存浪费对于 C/C++ 这种没有垃圾回收机制的语言来说, 我们一般关注两种类型的内存泄漏堆内存泄漏: malloc或new出来的空间没有free/delete系统资源泄漏: 申请的某些系统资源没有调用相关函数释放例如: 文件描述符fd, 套接字socket如何检测内存泄...
2018-09-22 01:08:33
762
原创 最长回文子串
最长的回文子串1. 暴力解法// 1. 暴力解法 // 时间复杂度 O(N^3)// 判断str[i...j]是否是回文串bool isPalindrome(const char *str, int begin, int end){ while (begin <= end) { if (str[begin] == str[end])...
2018-09-16 17:59:12
228
原创 序列的子集
A B 两个有序的序列 判断 B 是否为 A 的子集 例如 : A = [1, 3, 3, 5, 7, 7, 9] B = [1, 3, 5, 7] 则 B 为 A 的子集解法一双重循环 , 判断 B 中的每个元素是否在 A 中出现解法二一次遍历 因为是有序的序列 , 所以可以从两个序列的第一个元素开始比较 如果元素相等 , 下标同时往后 + 1 , 如果 A ...
2018-09-15 23:47:39
478
原创 listen(), connect(), accept() 三者的关系
listen(), connect(), accept() 三者的关系socket 编程流程listen()函数#include &lt;sys/types.h&gt; #include &lt;sys/socket.h&gt;int listen(int sockfd, int backlog);在网络通信中, 客户端通常处于主动的一方, 而服务器...
2018-08-23 17:01:53
7520
原创 重建二叉树
重建二叉树给定一个前序遍历序列和一个中序遍历序列构建一棵二叉树思路:前序的第一个节点一定是 根节点, 根据前序的第一个节点创建根节点找到根节点以后再根据根节点的值去中序序列中找根节点的位置根节点的左边就是左子树, 右边就是右子树然后递归构建左右子树/** * Definition for binary tree * struct TreeNode { * ...
2018-08-13 17:05:21
265
原创 leetcode-56 合并区间
合并区间给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].区间是一个结构体/** * Definition for an interval. * struct Inter...
2018-08-13 15:46:19
460
原创 STL-set
STL-set定义template < class T, // set::key_type/value_type class Compare = less<T>, // set::key_compare/value_compare class Alloc = alloc...
2018-08-13 14:12:10
218
原创 STL-map
STL-mapmap的构造// 1. 默认构造explicit map (const key_compare& comp = key_compare(), const allocator_type& alloc = allocator_type());// 2. 迭代器构造template <class InputIterator...
2018-08-12 20:47:36
220
原创 岛屿问题
岛屿个数问题1 是陆地, 0 是水, 只考虑上下左右四个方向相邻例如:输入:11110110101100000000输出: 1思路: 遍历二维数组, 如果是 1, 就把它上下左右都感染为 2, 岛屿个数 +1遍历完成, 最后返回岛屿个数感染的时候可以用递归class Solution {public: int numIslands(vect...
2018-08-12 16:12:13
4457
原创 static关键字
static关键字static 三大用法静态全局变量静态局部变量静态函数1. 静态全局变量一个进程在内存中的布局如下图所示:其中.text 段 存储进程执行程序的二进制文件.data 段 存储进程中已初始化的全局变量.bss 段 存储进程中未初始化的全局变量将一个全局变量用 static 修饰以后, 它的存储位置并没有什么不同, 还是在 .da...
2018-08-10 18:08:05
190
原创 Linux下编译安装boost库
官网下载 https://dl.bintray.com/boostorg/release/1.67.0/source/boost_1_67_0.tar.gz解压: tar zxvf boost_1_67_0.tar.gz进入目录: cd boost_1_67_0.tar.gz执行命令: ./bootstrap.sh --with-libraries=all --with-tools...
2018-08-08 19:54:27
1724
1
原创 两个链表第一个公共节点
两个链表第一个公共节点方法一 :先让长的链表的指针先走长的之差的步数, 两个再一起走, 如果相遇就是第一个公共节点如果没交点, 就都走到空/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { ...
2018-08-02 11:45:11
261
原创 合并两个有序的链表
合并两个有序的链表输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 1. 递归版本根据上面的图得到 , 先创建一个新的结点 , 然后比较两个链表的第一个节点 , 哪个节点的值小 , 就作为新的头节点 /*struct ListNode { int val; struct ListNode *next; L...
2018-07-31 21:27:44
303
原创 青蛙跳台阶
青蛙跳台阶一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解法一 : 每一个台阶都有两种选择 : 跳或者不跳 第一个台阶必须跳 , 所以只有 n - 1 个台阶需要选择 那么就是 2^(n - 1)class Solution {public: ...
2018-07-31 19:12:49
248
原创 不用加减乘除做加法
不用加减乘除做加法1. 利用自增自减class Solution {public: int Add(int num1, int num2) { if(num1 &gt; 0) { while(num1--) { num2++; }...
2018-07-30 15:05:55
215
原创 静态库和动态库
静态库和动态库程序编译的四个阶段预处理编译汇编链接每个阶段所做的工作1, 预处理 宏替换 , 文件包含 (头文件展开等) , 条件编译 , 去注释 预处理指令是以 # 开头的代码行 gcc -E test.c -o test.i 选项 -E 是让编译器在预处理过后停止编译 选项 -o 是指目标文件 , .i 文件是预处理...
2018-07-28 15:01:08
238
原创 c++ 基础类 string - 深浅拷贝 , 引用计数 , 写时拷贝
string 的深浅拷贝class String{public: // 1. 构造 String(const char *str = " ") :_str(new char[strlen(str)+1]) { strcpy(_str, str); } // 2. 拷贝构造 // s...
2018-07-26 17:07:50
395
原创 Linux - 三组 I/O 复用函数的比较
三组 I/O 复用函数的比较selectpollepollselect/* According to POSIX.1-2001 */#include <sys/select.h>/* According to earlier standards */#include <sys/time.h>#include <sys/types....
2018-07-24 16:15:04
286
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人