背景: 在使用React进行前端页面的开发,使用antd的Input组件时,本想利用onChange事件的event.target.value获取正在修改的值,但是一直报错为空,下面是控制台的报错信息: This synthetic event is reused for performance reasons. If you’re seeing this, you’re accessing the property target on a released/nullified synthetic event. This is set to null. If you must keep the original synthetic event around, use event.persist(). See https://fb.me/react-event-pooling for more information. 解决方法: 在操作event之前,先写如下语句: e.persist 继续阅读 >>


朱新全 18/05/11 20:46:08
提问: 1.为什么要搞出四种,用原先使用的那种不可以吗? 答:因为强制类型转换时是具有一定的风险的,这种风险包括(精度的损失 ,派生类与基类的一些转换关系) 而且根据风险程度的不同导致的 bug 也会不同 ,再加上存在许多种类型之间的转换 , 所以C++选择将其分为四种 。 2.这样分类之后又有什么好处呐? 答:关于这个问题,让我们来设想一个场景。假如你现在知道你的bug 是因为指针类型之间的转换所导致的 ,那你现在就必须得定位它/它们 ,如果还用以前的那种方式,就会找到许多无关于这次需求的东西,如果使用C++的这种方式,你只需要去找所对应的 _cast 就行了 。很方便吧 :) 四种强制类型转换:static_cast , interpret_cast ,const_cast和 dynamic_cast (1)static_cast <1>适用:用来进行比较“自然”和低风险的转换 。比如:整型与实数,字符型之间的转换 <2>不适用:不同类型指针, 继续阅读 >>


刘生玺 18/05/10 15:47:29
在C++11中,callable object 包括传统C函数,C++成员函数,函数对象(实现了()运算符的类的实例),lambda表达式(特殊函数对象)共4种。程序设计,特别是程序库设计时,经常需要涉及到回调,如果针对每种不同的callable object单独进行声明类型,代码将会非常散乱,也不灵活。如下示例: #include <iostream> #include <functional> using namespace std; // 传统C函数 int c_function(int a, int b) { return a + b; } // 函数对象 class Functor { public: int operator()(int a, int b) { return a + b; } }; int main(int argc, 继续阅读 >>


刘生玺 18/05/10 13:33:39
关于堆的一些知识点回顾 堆是一个完全二叉树 完全二叉树即是:若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。 堆满足两个性质: 堆的每一个父节点数值都大于(或小于)其子节点,堆的每个左子树和右子树也是一个堆。 堆分为最小堆和最大堆。最大堆就是每个父节点的数值要大于孩子节点,最小堆就是每个父节点的数值要小于孩子节点。排序要求从小到大的话,我们需要建立最大堆,反之建立最小堆。 堆的存储一般用数组来实现。假如父节点的数组下标为i的话,那么其左右节点的下标分别为:(2*i+1)和 (2*i+2)。如果孩子节点的下标为j的话,那么其父节点的下标为(j-1)/2。 完全二叉树中,假如有n个元素,那么在堆中最后一个父节点位置为(n/2-1)。 算法思想 建立堆 调整堆 交换堆顶元素和堆的最后一个元素 假如现在有一个数组a[8]={100,33,3,7,11,6,8,5};首先我们要建立完全二叉树,通过 继续阅读 >>


胡佳露 18/05/09 23:52:56
桶排序 第一次了解桶排序的时候,是在C语言课本的一个题目。题目大概意思是要将三万个学生的成绩进行排名,分数从0分到100分。桶排序的时间复杂度时O(M+N)。所以就可以申请一个大小为100的为int类型的数组,然后将数组初始化为0,再将数组的下标看作为分数,把数组元素中存储的数值对应着获得该分数的人数,这样分数就自己在数组中有了排名,最后再用循环依次输出,只是输出的时候要看该分数有多少人获得,就重复输出多少次。 实现代码如下 #include<stdio.h> int main() { int score; int a[100]; /*初始化数组 */ for(int i=0; i<100; i++) { a[i] = 0; } /*输入学生成绩,加入有十个人的成绩*/ for(int i=0; i<10; i++) { scanf("%d",&sco 继续阅读 >>


胡佳露 18/05/08 17:00:42
最近得知凤凰os,给自己平板也装了个这个系统,感觉蛮不错的,系统的tty1有root权限,但是安装的apk却没有root权限,直接安装super su提示su文件被占用,原因是系统自带的su文件动手脚了,只能给tty1用,我们的解决方法就是下载官方的su文件。遂寻找解决办法,参考网络,方法如下: 1. 去官网下载zip包。解压到本地。假定解压到了/sdcard/Download/su/ 2. 按alt+F1进入系统终端 3. cd /system/xbin 4. mv su su.bak 5. cp /sdcard/Download/su/x86/su.pie su 如果是x64架构就复制x64目录下的 6. su --install 7. su --daemon 8. alt+F7切换会GUI,在su/common/,目录中安装supersu.apk 9. 打开supersu.apk点击确定更新su文件 10. 选择常规 11. 重启系统 获取root权限教程完毕 继续阅读 >>


李余通 18/05/08 10:55:55
前言 小组2018年的免试题的五位出题人是:小组16级成员刘付杰、李猛、时宇辰、王良、娄泽豪。(此处应有掌声若干秒) 本人虽然参与了出题,但是我对其他关卡知之甚少,于是好奇的我在免试题上线了之后,与大家一起开始了破关之旅。以下以我作为第一视角所写而成的“免试题攻略”,若有错漏,还请多多包涵,与我在评论区进行交流。 第一关 目前微信推送中第一关的入口已经下线,想要挑战的同学可以点击这里的入口进行挑战。 打开本关的入口链接,首先我们看到了一大段英文,根据我们在线翻译级别的英语技术,大约意思是我们要不要继续下去: 第一直觉我们肯定选择【Yes!】,不过这一页还有别的信息吗?经过一番尝试,无论是叛逆的选择【No..】或者做其他操作,都没有其他有用的信息。于是我们选择【Yes!】进入第二个页面: 首先最引人瞩目的显然就是中间的看不清楚的字,还有下面“FUJIE”五个字母构成的目前看来意义不明的动画。中间看不清楚的字可以通过选择的方式选中复制出来看: 晓伴君王犹未起, 阻避钧衡过十年。 纳降 继续阅读 >>


娄泽豪 18/05/07 23:14:59
友元 一般来说,类内的私有数据是对外不可见的,但在有些情况下,我们需要在类外对该类的私有数据进行访问,这就需要用到一种新技术——友元(friend),即在声明前添加关键字friend。 友元关系是单向的,即如果A是B的友元,但B不一定是A的友元; 友元关系无传递性,即如果A是B的友元,B是C的友元,但A不一定是C的友元。 1. 友元函数 友元函数是指某些非类成员函数,但可以访问类内的私有数据。 #include <iostream> using namespace std; class A { private: int data; public: A() : data(1) {} friend void show( const A& t ); //添加friend定义友元函数 }; /* 友元函数在类外声明时不加friend */ void show( const A& t ) { cout << 继续阅读 >>


王良 18/05/07 22:34:40
MVC是什么? 在讲SpringMVC之前我们先来看一下什么是MVC模式~ MVC:MVC是一种设计模式 MVC的原理图: 分析: M-Model 模型(完成业务逻辑:有javaBean构成,service+dao+entity) V-View 视图(做界面的展示:jsp,html……) C-Controller 控制器(接收请求—>调用模型—>根据结果派发页面) Spring MVC是什么?   SpringMVC是一个MVC的开源框架,SpringMVC=Struts2+Spring,SpringMVC就相当于是Struts2加上Spring的整合,但是这里有一个疑惑就是,SpringMVC和Spring是什么样的关系呢?这个在百度百科上有一个很好的解释:意思是说,SpringMVC是Spring的一个后续产品,其实就是Spring在原有基础上,又提供了web应用的MVC模块,可以简单的把SpringMVC理解为是Spring的一个模块(类似AOP,IOC这样的 继续阅读 >>


贺含悦 18/05/07 22:08:20
在软件开发中,散布于应用中多处的功能被称为横切关注点。通常来讲,这些横切关注点从概念上是与应用的业务逻辑相分离的。把这些横切关注点与业务逻辑相分离正是面向切面编程所要解决的问题。 前面我们介绍了如何使用依赖注入管理和配置我们的应用对象。依赖注入有助于应用对象之间的解耦,而AOP可以实现横切关注点与它们所影响的对象之间的解耦。 下面我们就来看Spring是如何实现切面的,先从AOP的基础知识开始~ 一、什么是面向切面编程? 在之前的Java开发中,如果要重用通用功能,最常见的面向对象技术是继承或委托。但是,如果整个应用中都使用相同的基类,继承往往会导致一个脆弱的对象体系,而使用委托可能需要对委托对象进行复杂的调用。 现在,切面提供了取代继承和委托的另一种可选方案,而且在很多场景下更清晰简洁。在使用面向切面编程时,我们仍然在一个地方定义通用功能,但是可以通过声明的方式定义这个功能要以何种方式在何处应用,而无需修改受影响的类。 横切关注点可以被模块化为特殊的类,这些类被称为切面。 定义A 继续阅读 >>


贺含悦 18/05/07 22:08:04