背景: 在使用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
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
装配是什么? 创建应用对象之间协作关系的行为通常称为装配(wiring),这也是DI的本质。 我们必须要告诉Spring要创建哪些bean并且如何将其装配在一起。 Spring提供了三种主要的装配机制: 在XML中进行显式配置 在Java中进行显式配置 隐式的bean发现机制和自动装配 Spring的配置风格是可以互相搭配的,但应尽可能地使用自动配置的机制,因其使用起来要方便的多,显式配置越少越好。显式配置越少,代码就越容易维护。而基于Java和XML相比,JavaConfig的安全性比XML要好,并且功能更强大。 所以我们先来看Spring的自动化配置。 自动化装配Bean——便利 Spring从两个角度来实现自动化装配: 组件扫描(component scanning):Spring会自动发现应用上下文中所创建的Bean。 自动装配 (autowiring):Spring自动满足Bean之间的依赖。 组件扫描和自动装配组合在一起就能使我们的显式配置降低到最少。 为了 继续阅读 >>


贺含悦 18/05/07 22:06:34
如果DispatcherServlet拦截“/”,即拦截了所有的请求,对*.js,*.jpg等静态资源的访问也就被拦截了。但如果DispatcherServlet只拦截*.do这样的URL,就不存在访问不到静态资源的问题。 通过下面几种方式可以正常访问静态文件,不要找不到静态文件报404。 方法一:利用Tomcat的defaultServlet来处理静态文件 在web.xml里添加如下配置 <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.pn 继续阅读 >>


李猛 18/05/04 17:18:12
Spring MVC基于MVC模式(模型(Model)-视图(View)-控制器(Controller))实现,能够帮助你构建像Spring框架那样灵活和松耦合的Web应用程序。 核心类与接口 DispatcherServlet 前置控制器 HandlerMapping 处理器映射 Controller 控制器 ViewResolver 视图解析器 View 视图处理 Spring MVC的请求流向 当用户在浏览器中点击链接或提交表单的时候,就会产生HttpRequest。 请求首先会来到DispatcherServlet,DispatcherServlet会查询一个或多个处理器映射来确定将该请求发给哪一个控制器,根据请求所携带的URL信息来进行决策。如果没有找到合适的控制器,通过defaultHandler返回Response给浏览器。 在对应的控制器中,控制器开始处理请求、创建模型数据并将模型数据打包并标示出用于渲染输出的View名称,接着把模型和视图名发送回Dispatc 继续阅读 >>


李猛 18/04/27 23:12:09
注:本文中的部分内容摘抄自他人博客,如有侵权,请联系我,侵删~ 本篇博客主要讲述 synchronized 关键字的实现原理以及 JDK 1.6 后对 synchronized 的种种优化。synchronized 的使用不再赘述。 博主目前依旧存在的疑惑 请在阅读完此篇博客之后,帮助博主回答这三个问题: 多线程争夺 Monitor 的具体过程是怎样的?是根据 ObjectMonitor 中的 _count 值判断当前 Monitor 是否被锁定吗? JVM 如果检测到在单线程环境下执行同步代码(StringBuffer),是会进行锁消除呢,还是会使用偏向锁? 对于偏向锁的撤销过程及膨胀过程,博主只是在一些博客的基础上给出了自己的理解!不权威,建议阅读源码,博主对这部分知识的讲解持怀疑态度,如果在阅读的过程中发现博主对偏向锁的撤销与膨胀理解有误,请指出,感激不尽~(网上基本上没有从源码角度分析的,对于偏向锁撤销与升级的详细过程也是众说纷纭) 引言 我们先来看一份代码: 继续阅读 >>


董恒毅 18/04/27 11:38:27
在c++的STL中有函数可以直接对数组元素进行全排列,即next_permutation和pre_permutation,这两个函数都可以实现全排列,只是排列的顺序不同,next_permutation作用为向后排序,而pre_permutation作用为向前排序。 需要头文件#include <algorithm> 示例 #include <iostream> #include <algorithm> using namespace std; int main() { int nums[10]; for( int i = 0; i < 10; i++ ) { nums[i] = i + 1; } int n; cin >> n; do { for( int i = 0; i < n; i++ ) { cout << 继续阅读 >>


王良 18/04/24 22:50:15
前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家 一个清晰的剖析。 当然,相同的文章在网上也出现过一些了,但我总感觉这些文章不是很容易阅读,大段大段的代码,没有图片,没有详细的说明,没有比较,没有举一反三。不利于学习和阅读,所以这是我想写下这篇文章的原因。也希望大家多给我提意见。 言归正传,让我们一起进入虚函数的世界。 虚函数表 对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的 继续阅读 >>


楚东方 18/04/24 11:59:24