从刚学习react到现在有半年时间,对react的hooks写法和class写法都有接触过,基于此想写一篇文章对hooks的设计初衷作简要介绍和总结。文章分为三部分:
hooks设计初衷
与class比较
ahooks库介绍
一、hooks设计初衷
官方文档里面有说明,主要有三个动机
1、在组件之间复用状态逻辑很难
2、复杂组件变得难以理解
3、难以理解的class
第二条动机可以看作第一个问题的结果,由于逻辑复用很难,导致复杂组件的逻辑很混乱,难以理解。所以可以简化为两条动机,进行一一说明
· 逻辑复用
传统class组件逻辑复用有两种方法,高阶组件、render props、mixins(由于mixins会带来命名冲突,隐式依赖等问题,不建议使用)。从一个table请求的例子来讲。 实现一个table组件,分为两部分,一部分是逻辑,另一部分是视图(render函数)。逻辑部分大致分为以下几个关注点
1、异步加载的 loading 2、page 3、pageSize 4、筛选条件切换的时候,要重置 page 到第一页。page/pageSize 变化要重新发起请求 5、组件卸载的时候,要清掉正在进行的网络请求。
如果只复用table组件的渲染函数(即table是纯函数组件,没有生命周期),则每次都要在引用table的class组件里面重新写生命周期函数,逻辑处理部分。如果把生命周期部分放到table组件里面,当想在通用逻辑之外加上自己的逻辑,就会很难实现。此时table就是一个完整的组件,可以通过render props等方法向table组件注入额外的内容,这样会增加复杂度,hooks就是一种更好的逻辑复用方式。
const { tableProps, search, params } = useAntdTable(getTableData, {
defaultPageSize: 5,
form,
});
//自己的逻辑//
hooks可以很好的解决这个问题,自己封装的hooks就像是一个参数,传给组件就可以,也可以复用class的生命周期写法。如果使用hooks来模拟继承,就会更加明白。
但是hooks也不能完全替代高阶组件,render props,需要结合具体情况来判断。
· 难以理解的class
class难以理解,是因为this比较复杂。传统的this问题就不多说,Dan Abramov写的函数式组件和类组件之间的差异就是最核心的问题。
现在有如下两个组件:
class ProfilePage extends React.Component {
showMessage = () => {
alert('Followed ' + this.props.user);
};
handleClick = () => {
setTimeout(this.showMessage, 3000);
};
render() {
return Follow ;
}
}
function ProfilePage(props) {
const showMessage = () => {
alert('Followed ' + props.user);
};
const handleClick = () => {
setTimeout(showMessage, 3000);
};
return (
Follow
);
}
以上两个组件功能相同,延迟3s后打印所关注的user。一个是类组件,一个是函数式组件。如果在3s内props有变化,类组件的user会变化,函数式组件不会变化。这里和新旧数据无关,而是组件不应该混淆实际上真正的user,在某些情况下会遇到这样的问题。关注了A之后不应该随意变为B。如果对类组件进行改写就能得到和函数式组件一样的结果。
class ProfilePage extends React.Component {
render() {
const props = this.props;
const showMessage = () => {
alert('Followed ' + props.user);
};
const handleClick = () => {
setTimeout(showMessage, 3000);
};
return Follow ;
}
}
这样类组件的结果就和函数式组件一样。如果进一步观察,把这个render函数提取出去正是上文的函数式组件,所以hooks一直隐藏在其中。
比较这两种组件可以得出结论
1、函数式组件捕获了渲染所使用的值
2、this永远会改变
捕获渲染所使用的值就是利用了闭包。闭包就是能够读取其他函数内部变量的函数。常见的节流,防抖原理就是闭包,闭包也能作为私有属性使用。
二、与class组件的比较
这里不列举开发上面的具体差异,这些网上也有很多资料,主要列举基础的异同和开发思路比较。这里主要参考官方文档。
1、class里面的生命周期方法目前还没有全部对应到hooks上面,getSnapshotBeforeUpdate,componentDidCatch 以及 getDerivedStateFromError会尽快添加对应的hook。
2、组件内部的任何函数,包括事件处理函数和 effect,都是从它被创建的那次渲染中被「看到」的。这里其实就是闭包,开发里经常会遇到的问题就是过时闭包。
3、类组件面向对象的编程思想,能够获得最大程度的操作权限,对象的所有属性都可以掌控。可以方便进行侵入性操作。
4、函数式组件类似面向过程编程,处理模块为一个个函数,由于hooks的存在使得函数可以拥有副作用,具有面向对象的一些特征。此外函数式可以无缝转换为逻辑流。很自然就联想到流程控制。
5、逻辑复用,hooks和mixin。mixin可以看作一个类,混入的组件都有这个类,可以对这个mixin重写,相当于继承。hooks纯粹的函数逻辑,看作一个参数。
三、ahooks介绍
ahooks是一个开源的hooks库,内置了许多常用的hooks,这里选取几个看一下设计思路。
function useCreation(factory, deps) {
var current = react_1.useRef({
deps: deps,
obj: undefined,
initialized: false
}).current;
if (current.initialized === false || !depsAreSame(current.deps, deps)) {
current.deps = deps;
current.obj = factory();
current.initialized = true;
}
return current.obj;
}
防止重复创建实例,使用useRef作为标志储存,类似单例。
var useDeepCompareEffect = function useDeepCompareEffect(effect, deps) {
var ref = react_1.useRef();
var signalRef = react_1.useRef(0);
if (!depsEqual(deps, ref.current)) {
ref.current = deps;
signalRef.current += 1;
}
react_1.useEffect(effect, [signalRef.current]);
};
深比较useEffect依赖项,3.0版本新增hooks,比较实用。使用useRef储存是否更新
var useSetState = function useSetState(initialState) {
var _a = __read(react_1.useState(initialState), 2),
state = _a[0],
setState = _a[1];
var setMergeState = react_1.useCallback(function (patch) {
setState(function (prevState) {
var newState = utils_1.isFunction(patch) ? patch(prevState) : patch;
return newState ? __assign(__assign({}, prevState), newState) : prevState;
});
}, []);
return [state, setMergeState];
};
自动合并state的hooks,setState是默认不合并的。这里也需要注意要合理使用setState,把所有状态合在一起有时不利于状态抽离,封装hooks。
function useMemoizedFn(fn) {
......
var fnRef = react_1.useRef(fn);
fnRef.current = react_1.useMemo(function () {
return fn;
}, [fn]);
var memoizedFn = react_1.useRef();
if (!memoizedFn.current) {
memoizedFn.current = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return fnRef.current.apply(this, args);
};
}
return memoizedFn.current;
}
代替useCallBack,避免useCallBack重新渲染,进行性能优化。使用ref.current避免引起更新通知
四、总结
以上是hooks的基本介绍,如何使用参考官网完全可以入门。关于hooks设计的深入理解可以查看Dan Abramov的相关博客,里面会深入分析hooks的理念。而ahooks的本质不是魔法,没有高深的内容,却设计非常巧妙,值得借鉴思想。在之后的思考中会关注hooks与class的更新渲染方式。
关于hooks原理和react源码的关系详见后面的文章 :)
参考链接:
https://react.docschina.org/
https://zhuanlan.zhihu.com/p/104126843
https://ahooks.gitee.io/zh-CN/hooks/async
https://overreacted.io/zh-hans/a-complete-guide-to-useeffect/
https://react.docschina.org/blog/2016/07/13/mixins-considered-harmful.html
你可能感兴趣的:(java,python,vue,编程语言,react)
解决ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the ‘ssl‘ module is compiled 问题
兮城以空825
pip requests库 urllib3 v2.0版本
PyCharm解决urllib3v2.0问题,库的安装1.打开File-settings2.找到project:文件名--PythonInterpreter3.-号卸载原urllib3v2.0,以上图片是我已经卸载重新安装好的4.+号安装需要版本urllib35.库的安装也同上述操作
Java——接口
六七_Shmily
java java python 开发语言
在Java中,接口(Interface)是一种特殊的引用类型,用于定义一组方法的规范(即方法签名),而不包含方法的实现。接口是Java实现多态和抽象的重要机制之一。以下是关于Java接口的详细说明:1.接口的定义接口使用interface关键字定义。它可以包含:抽象方法:没有方法体的方法。默认方法(Java8+):使用default关键字定义,可以有方法体。静态方法(Java8+):使用stati
Vue框架介绍
2301_80148369
vue.js 前端 javascript
一、Vue.js的定义Vue.js是一个开源的前端框架,由尤雨溪(EvanYou)于2014年首次发布。它专注于构建用户界面,允许开发者通过声明式的数据绑定和组件化开发模式来构建复杂的单页面应用(SPA)。Vue.js的设计目标是易于上手和灵活集成,既可以作为小型项目的轻量级库使用,也可以扩展为大型项目的完整框架。二、Vue.js的核心特性响应式数据绑定Vue.js通过响应式系统将数据和视图连接起
每日一题之(多态 )三 学习java
座山雕~
学习 java
重要的几句话:(1)一个对象的编译类型和运行类型可以不一致如:Dog类是Anlimal的子类,Animalanimal=newDog();(2)编译类型在定义对象时,就确定了,不能改变。如:一旦创建,Animal就是编译类型,不会在改变Animalanimal=newDog();(3)运行类型是可以改变的如:此时,编译类型仍然是Animal,运行类型就从Dog变成Cat。Animalanimal=
Python 文件&对象&IO
赤胜骄阳
python python java 前端
Python文件&对象&IO基本的I/O函数打印到屏幕读取键盘输入打开和关闭文件open函数File对象的属性close()方法write()方法read()方法文件定位重命名和删除文件rename()方法remove()方法Python里的目录:mkdir()方法chdir()方法rmdir()方法文件、目录相关的方法基本的I/O函数打印到屏幕最简单的输出方法是用print语句,你可以给它传递零
jar、war、pom
JIU_WW
jar java
1.jar定义与用途用途:默认打包类型,生成JAR文件(JavaArchive),适用于普通Java应用或库。场景:开发工具类库(如commons-lang.jar)。构建可执行应用(通过java-jar运行)。关键行为构建流程:执行mvnpackage后,生成target/.jar。包含编译后的.class文件、资源文件(如.properties)和META-INF/MANIFEST.MF。依赖
第五章:工程化实践 - 第一节 - Tailwind CSS 与前端框架的集成
qianmoQ
Tailwind CSS:现代化开发实战指南 css 前端框架 前端
TailwindCSS可以与各种现代前端框架完美配合。本节将详细介绍如何将TailwindCSS集成到React、Vue和Angular等主流框架中,并介绍相关的最佳实践。React集成基础配置#创建React项目npxcreate-react-appmy-app--templatetypescript#安装TailwindCSSnpminstall-Dtailwindcsspostcssauto
快速辨别Vue版本的8个关键方法
wujiada001
前端 vue.js 前端 javascript
全局API创建方式(最明显特征)//Vue3特征import{createApp}from'vue'constapp=createApp(App)app.mount('#app')//Vue2特征importVuefrom'vue'newVue({el:'#app'})组合式API语法//←这是Vue3标志constcount=ref(0)响应式系统差异//Vue3使用ref/reactiveco
Vue的组合式API和选项式API有什么区别
wujiada001
前端 vue.js 前端 javascript
Vue3的组合式API(CompositionAPI)和选项式API(OptionsAPI)是两种不同的组件编写方式,主要区别如下:1.代码组织方式选项式API:按照选项(如data、methods、computed等)组织代码,逻辑分散在不同选项中。exportdefault{data(){return{count:0}},methods:{increment(){this.count++}}}
使用Python实现数组数据转换为Excel表格
嘿何i
python excel pandas 开发语言
在数据分析和处理中,将Python中的数组或列表数据转换为Excel表格是一项常见的任务。本文将详细介绍如何使用Python编程语言和相关库,实现从数组数据到Excel表格的转换过程,包括必要的步骤、代码示例以及实际应用中的注意事项。引言:数组数据到Excel的转换需求在数据科学和工程中,我们经常需要将Python中的数据转换为Excel格式,以便于数据的可视化、共享和进一步分析。Python提供
用python爬网站评论_python爬取携程景点评论信息
weixin_39654352
用python爬网站评论
今天要分析的网站是携程网,获取景点的用户评论,评论信息通过json返回API,页面是这个样子的按下F12之后,F5刷新一下具体需要URLRequest的方式为POST,还需要你提取的哪一页,下面图片显示了页面id,景点id(viewid),pagenum页面数,pagesize页面的项数等等。最基本的GET请求可以直接用post方法response=requests.post("http://ww
【大厂面试题】大疆,最新面试题
扫地僧009
互联网大厂面试题 java 面试 spring
大疆一面(50分钟)开场三连问自我介绍?(自我介绍重点引导面试官想问你的技术栈和项目)对大疆有什么了解?(大家面试的时候,最好提前了解一些公司的业务,不然没话可说就尴尬了呢)为什么选择这个岗位?(先从工作/项目匹配度角度出发,然后再说公司和个人兴趣等原因)Java提供了有哪些支持互斥的工具?工具适用场景特点synchronized简单同步或低竞争环境代码简单,性能经过JVM优化(偏向锁、轻量级锁)
python~http的请求参数中携带map
~kiss~
python python http 开发语言
背景调试httpGET请求的map参数,链路携带参数一直有问题,最终采用如下方式携带map解决user={"demo":"true","info":"王者"}urlencode之后的效果如下所示user=%7B%22demo%22:%22true%22,%22info%22:%22%E7%8E%8B%E8%80%85%22%7D最终http的url如下:http://www.demo.com?us
Introductionto eBPF and BCC Creating powerful instrumentation
AI天才研究院
Python实战 自然语言处理 人工智能 语言模型 编程实践 开发语言 架构设计
作者:禅与计算机程序设计艺术1.简介为什么要写这篇文章?eBPF(extendedBerkeleyPacketFilter)2012年提出的一种虚拟机,可以对Linux内核中的网络数据包进行高级过滤、修改、收集等操作,并且是安全且免费的。BCC(BerkeleyCloudComputingCompiler),是由该团队开发的一套工具链,用于编译、加载并运行eBPF程序。同时,Rust编程语言也成为
python 自动化 将日志添加至测试工程中
小赖同学啊
自动化测试(app pc API)
通往罗马道路千万条,爱干自己才最强。来来来同志们走起!!!让测试工程看起来比较完善于是向里添加了日志,百度一大堆那么我就厉害了没有选择那么怎么添呢!!?importloggingclassloginmanger():defconsel_out(s
协程的基本实现原理详解以及在java中的使用
一个儒雅随和的男子
多线程 java 开发语言
前言接下来是Java中的协程实现。JDK17引入了虚拟线程(Fiber),属于用户态线程,由JVM管理。本文将深度讨论了第三方库如Quasar,Quasar通过字节码增强实现协程,使用Fiber类。并涉及到Kilim等库也是通过字节码生成实现的,以及Kotlin协程的代码示例,通过suspend函数和CoroutineScope管理。详细讲解了NtyCo库的实现,包括上下文切换和调度器。需要注意,
C语言操作符详解
共享家9527
c语言
引言C语言作为一种强大而灵活的编程语言,操作符是其重要组成部分。操作符用于执行各种运算,如算术运算、逻辑运算、比较运算等。深入理解C语言操作符,能帮助开发者编写出高效、准确的代码。算术操作符基本算术操作符-+(加法)、-(减法)、*(乘法)、/(除法)、%(取模)。例如:inta=10,b=3;intsum=a+b;intproduct=a*b;intquotient=a/b;intremaind
Java学习笔记——单元测试,面试必备
m0_64867152
程序员 面试 java 后端
assertEquals(“这是错误信息2”,12,m.getArea(3,4));}}@Test注解的方法每个@Test对应一个方法,这个方法会被识别为一个测试方法一个测试类里面可以有多个@Test,但是每个@Test对应的测试方法只会被执行一次通常我们会在@Test测试方法中使用assertEquals断言语句,来判断方法是否能够正常运行并且输出我们希望的结果assertEquals(“错误信
2025年投身Java培训的可行性分析——基于计算机科学与技术专业的视角
车载诊断工程师-小白
文章 java 开发语言
2025年投身Java培训的可行性分析——基于计算机科学与技术专业的视角2025年投身Java培训的可行性分析引言随着信息技术的快速发展,编程语言的需求和应用领域也在不断变化。Java作为一种广泛应用的编程语言,在企业级应用开发、安卓应用开发、大数据处理等多个领域中占据重要位置。对于计算机科学与技术专业的学生或从业者而言,掌握Java不仅有助于增强个人竞争力,还能拓宽职业发展路径。本文将从市场需求
CellWriteHandler is an interface in EasyExcel, a popular Java library for reading and writing Excel
hshpy
excel
CellWriteHandlerisaninterfaceinEasyExcel,apopularJavalibraryforreadingandwritingExcelfiles.ItisusedtocustomizehowdataiswrittentocellsduringtheExcelexportprocess.PurposeItallowsdeveloperstomodifycellva
华为od机试 - 服务器广播、需要广播的服务器数量(Java & Python& JS & C++ & C )
算法大师
最新华为OD机试 华为 服务器 c++ 华为od机试 javascript 华为OD机试E卷 python
最新华为OD机试真题目录:点击查看目录华为OD面试真题精选:点击立即查看题目描述服务器连接方式包括直接相连,间接连接。A和B直接连接,B和C直接连接,则A和C间接连接。直接连接和间接连接都可以发送广播。给出一个N*N数组,代表N个服务器,matrix[i][j]==1,则代表i和j直接连接;不等于1时,代表i和j不直接连接。matrix[i][i]==1,即
6款Vue后台管理系统模板
前端
收录一些开箱即用、使用简单、界面美观、功能强大的前端框架,帮助我们后端程序员快速提高学习、工作开发效率(注意:排名不分先后,都是十分优秀的开源前端框架和项目)。收录地址:https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2FYSG...vue-element-adminvue-element-admin是一个后台前端解决方案,它基于vu
c++的学习方向该如何选择?
c++
在选择C++学习方向时,需要根据个人的兴趣、职业目标以及市场需求来综合考虑。C++是一门功能强大的编程语言,广泛应用于多个领域,以下是一些常见的学习方向和建议,帮助你更好地选择适合自己的路径:嵌入式开发特点:嵌入式系统通常对性能和资源要求极高,C++的高效性和对硬件的直接控制能力使其成为嵌入式开发的理想选择。应用场景:汽车电子、智能家居、工业自动化、医疗设备等。技能要求:熟悉嵌入式硬件(如单片机、
TypeScript与JavaScript的区别
本文我们要聊一聊TypeScript和JavaScript之间的区别。可能我们已经注意到,TypeScript是JavaScript的超集,那么它到底比JavaScript多了些什么?为什么我们要选择TypeScript,而不仅仅是写普通的JavaScript呢?本文我们就一起看看TypeScript和JavaScript的核心差异,让你对它们有个更加清晰的认识。3.1什么是TypeScript与
教妹学Java(三十八):instanceof 操作符的用法
工程师_axI
java python 开发语言
System.out.println(simpleinstanceofSimple);}}在上面这个例子中,我们使用instanceof判断simple这个引用变量是不是Simple类。输出结果如下所示:true一个子类的对象既是子类也是父类,来看下面这个示例:/**@author微信搜「沉默王二」,回复关键字PDF*/classAnimal{}publicclassDogextendsAnima
DeepSeek革命性整合:零代码实现办公自动化全流程(Excel/PPT/Word+AI开发实战)——小白也能玩转的AI生产力核弹
Leaton Lee
excel powerpoint word deepseek python
关键词:DeepSeek办公自动化、AI生成PPT、Excel智能分析、Word合同助手、Python实战前言:当DeepSeek遇见经典办公三件套,效率爆炸的化学反应该怎么做?你是否还在为这些场景抓狂?凌晨2点对着空白PPT抓耳挠腮在Excel海量数据中迷失方向反复修改合同条款到怀疑人生今天我要揭秘的DeepSeek+经典办公工具组合技,将彻底颠覆你的工作方式!通过本文,你将掌握:✅5分钟生成专
es部署报错找不到tools.jar
Gungnirss
elasticsearch jar 大数据
网上看了很多解决方法都不行,换版本,甚至用es内置的jdk都没解决问题。原因:系统在运行时会去环境变量里找JAVA_HOME,来找到JDK运行JVM,而JVM在运行时会根据classpath的设置来加载类和资源。此时如果你的classpath里面写了,需要加载tools.jar,而在Java高版本中(实测jdk21没有)是没有tools.jar的,因此会导致报错。解决办法:编辑环境变量-系统变量-
【Java 常用注解学习笔记1】——Java 常用注解全解析:从基础到实战
猿享天开
Java开发从入门到精通 java 学习 笔记
Java常用注解全解析:从基础到实战一、引言Java注解(Annotation)是现代化开发中提升代码简洁性、可维护性和与框架集成的重要工具。本文系统化梳理主流框架(Spring、MyBatis-Plus、Swagger等)的核心注解,通过分类解析、代码示例与最佳实践,帮助开发者精准掌握注解的应用场景与技巧。二、Lombok注解1.代码简化注解注解作用示例注意事项@Data生成getter/set
Java 登录框架
zerolbsony
spring boot java 后端
Java框架中常用的几种成熟的token生成框架对比-白露~-博客园SpringBoot整合sa-token,jwt登录及拦截器鉴权Demo_只有在集成sa-token-jwt插件后才可以使用extra扩展参数-CSDN博客推荐一款轻量级权限认证框架Sa-Token,集成JWT和Redis轻松实现认证鉴权_sa-tokenjwt-CSDN博客SpringBoot整合sa-token,jwt登录及拦
业务流程遍历测试:高效揪出隐藏Bug的秘诀!
爱吃 香菜
程序员 职场经验 软件测试 bug 自动化测试 软件测试 功能测试 程序员 职场经验 深度学习
面试求职:「面试试题小程序」,内容涵盖测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)职场经验干货:软件测试工程师简历上如何编写个人信息(一周8个面试)软件测试工程师简历上如何编写专业技能(一周8个面试)软件测
iOS http封装
374016526
ios 服务器交互 http 网络请求
程序开发避免不了与服务器的交互,这里打包了一个自己写的http交互库。希望可以帮到大家。
内置一个basehttp,当我们创建自己的service可以继承实现。
KuroAppBaseHttp *baseHttp = [[KuroAppBaseHttp alloc] init];
[baseHttp setDelegate:self];
[baseHttp
lolcat :一个在 Linux 终端中输出彩虹特效的命令行工具
brotherlamp
linux linux教程 linux视频 linux自学 linux资料
那些相信 Linux 命令行是单调无聊且没有任何乐趣的人们,你们错了,这里有一些有关 Linux 的文章,它们展示着 Linux 是如何的有趣和“淘气” 。
在本文中,我将讨论一个名为“lolcat”的小工具 – 它可以在终端中生成彩虹般的颜色。
何为 lolcat ?
Lolcat 是一个针对 Linux,BSD 和 OSX 平台的工具,它类似于 cat 命令,并为 cat
MongoDB索引管理(1)——[九]
eksliang
mongodb MongoDB管理索引
转载请出自出处:http://eksliang.iteye.com/blog/2178427 一、概述
数据库的索引与书籍的索引类似,有了索引就不需要翻转整本书。数据库的索引跟这个原理一样,首先在索引中找,在索引中找到条目以后,就可以直接跳转到目标文档的位置,从而使查询速度提高几个数据量级。
不使用索引的查询称
Informatica参数及变量
18289753290
Informatica 参数 变量
下面是本人通俗的理解,如有不对之处,希望指正 info参数的设置:在info中用到的参数都在server的专门的配置文件中(最好以parma)结尾 下面的GLOBAl就是全局的,$开头的是系统级变量,$$开头的变量是自定义变量。如果是在session中或者mapping中用到的变量就是局部变量,那就把global换成对应的session或者mapping名字。
[GLOBAL] $Par
python 解析unicode字符串为utf8编码字符串
酷的飞上天空
unicode
php返回的json字符串如果包含中文,则会被转换成\uxx格式的unicode编码字符串返回。
在浏览器中能正常识别这种编码,但是后台程序却不能识别,直接输出显示的是\uxx的字符,并未进行转码。
转换方式如下
>>> import json
>>> q = '{"text":"\u4
Hibernate的总结
永夜-极光
Hibernate
1.hibernate的作用,简化对数据库的编码,使开发人员不必再与复杂的sql语句打交道
做项目大部分都需要用JAVA来链接数据库,比如你要做一个会员注册的 页面,那么 获取到用户填写的 基本信后,你要把这些基本信息存入数据库对应的表中,不用hibernate还有mybatis之类的框架,都不用的话就得用JDBC,也就是JAVA自己的,用这个东西你要写很多的代码,比如保存注册信
SyntaxError: Non-UTF-8 code starting with '\xc4'
随便小屋
python
刚开始看一下Python语言,传说听强大的,但我感觉还是没Java强吧!
写Hello World的时候就遇到一个问题,在Eclipse中写的,代码如下
'''
Created on 2014年10月27日
@author: Logic
'''
print("Hello World!");
运行结果
SyntaxError: Non-UTF-8
学会敬酒礼仪 不做酒席菜鸟
aijuans
菜鸟
俗话说,酒是越喝越厚,但在酒桌上也有很多学问讲究,以下总结了一些酒桌上的你不得不注意的小细节。
细节一:领导相互喝完才轮到自己敬酒。敬酒一定要站起来,双手举杯。
细节二:可以多人敬一人,决不可一人敬多人,除非你是领导。
细节三:自己敬别人,如果不碰杯,自己喝多少可视乎情况而定,比如对方酒量,对方喝酒态度,切不可比对方喝得少,要知道是自己敬人。
细节四:自己敬别人,如果碰杯,一
《创新者的基因》读书笔记
aoyouzi
读书笔记 《创新者的基因》
创新者的基因
创新者的“基因”,即最具创意的企业家具备的五种“发现技能”:联想,观察,实验,发问,建立人脉。
第一部分破坏性创新,从你开始
第一章破坏性创新者的基因
如何获得启示:
发现以下的因素起到了催化剂的作用:(1) -个挑战现状的问题;(2)对某项技术、某个公司或顾客的观察;(3) -次尝试新鲜事物的经验或实验;(4)与某人进行了一次交谈,为他点醒
表单验证技术
百合不是茶
JavaScript DOM对象 String对象 事件
js最主要的功能就是验证表单,下面是我对表单验证的一些理解,贴出来与大家交流交流 ,数显我们要知道表单验证需要的技术点, String对象,事件,函数
一:String对象;通常是对字符串的操作;
1,String的属性;
字符串.length;表示该字符串的长度;
var str= "java"
web.xml配置详解之context-param
bijian1013
java servlet web.xml context-param
一.格式定义:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>contextConfigLocationValue></param-value>
</context-param>
作用:该元
Web系统常见编码漏洞(开发工程师知晓)
Bill_chen
sql PHP Web fckeditor 脚本
1.头号大敌:SQL Injection
原因:程序中对用户输入检查不严格,用户可以提交一段数据库查询代码,根据程序返回的结果,
获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。
本质:
对于输入检查不充分,导致SQL语句将用户提交的非法数据当作语句的一部分来执行。
示例:
String query = "SELECT id FROM users
【MongoDB学习笔记六】MongoDB修改器
bit1129
mongodb
本文首先介绍下MongoDB的基本的增删改查操作,然后,详细介绍MongoDB提供的修改器,以完成各种各样的文档更新操作 MongoDB的主要操作
show dbs 显示当前用户能看到哪些数据库
use foobar 将数据库切换到foobar
show collections 显示当前数据库有哪些集合
db.people.update,update不带参数,可
提高职业素养,做好人生规划
白糖_
人生
培训讲师是成都著名的企业培训讲师,他在讲课中提出的一些观点很新颖,在此我收录了一些分享一下。注:讲师的观点不代表本人的观点,这些东西大家自己揣摩。
1、什么是职业规划:职业规划并不完全代表你到什么阶段要当什么官要拿多少钱,这些都只是梦想。职业规划是清楚的认识自己现在缺什么,这个阶段该学习什么,下个阶段缺什么,又应该怎么去规划学习,这样才算是规划。
国外的网站你都到哪边看?
bozch
技术 网站 国外
学习软件开发技术,如果没有什么英文基础,最好还是看国内的一些技术网站,例如:开源OSchina,csdn,iteye,51cto等等。
个人感觉如果英语基础能力不错的话,可以浏览国外的网站来进行软件技术基础的学习,例如java开发中常用的到的网站有apache.org 里面有apache的很多Projects,springframework.org是spring相关的项目网站,还有几个感觉不错的
编程之美-光影切割问题
bylijinnan
编程之美
package a;
public class DisorderCount {
/**《编程之美》“光影切割问题”
* 主要是两个问题:
* 1.数学公式(设定没有三条以上的直线交于同一点):
* 两条直线最多一个交点,将平面分成了4个区域;
* 三条直线最多三个交点,将平面分成了7个区域;
* 可以推出:N条直线 M个交点,区域数为N+M+1。
关于Web跨站执行脚本概念
chenbowen00
Web 安全 跨站执行脚本
跨站脚本攻击(XSS)是web应用程序中最危险和最常见的安全漏洞之一。安全研究人员发现这个漏洞在最受欢迎的网站,包括谷歌、Facebook、亚马逊、PayPal,和许多其他网站。如果你看看bug赏金计划,大多数报告的问题属于 XSS。为了防止跨站脚本攻击,浏览器也有自己的过滤器,但安全研究人员总是想方设法绕过这些过滤器。这个漏洞是通常用于执行cookie窃取、恶意软件传播,会话劫持,恶意重定向。在
[开源项目与投资]投资开源项目之前需要统计该项目已有的用户数
comsci
开源项目
现在国内和国外,特别是美国那边,突然出现很多开源项目,但是这些项目的用户有多少,有多少忠诚的粉丝,对于投资者来讲,完全是一个未知数,那么要投资开源项目,我们投资者必须准确无误的知道该项目的全部情况,包括项目发起人的情况,项目的维持时间..项目的技术水平,项目的参与者的势力,项目投入产出的效益.....
oracle alert log file(告警日志文件)
daizj
oracle 告警日志文件 alert log file
The alert log is a chronological log of messages and errors, and includes the following items:
All internal errors (ORA-00600), block corruption errors (ORA-01578), and deadlock errors (ORA-00060)
关于 CAS SSO 文章声明
denger
SSO
由于几年前写了几篇 CAS 系列的文章,之后陆续有人参照文章去实现,可都遇到了各种问题,同时经常或多或少的收到不少人的求助。现在这时特此说明几点:
1. 那些文章发表于好几年前了,CAS 已经更新几个很多版本了,由于近年已经没有做该领域方面的事情,所有文章也没有持续更新。
2. 文章只是提供思路,尽管 CAS 版本已经发生变化,但原理和流程仍然一致。最重要的是明白原理,然后
初二上学期难记单词
dcj3sjt126com
english word
lesson 课
traffic 交通
matter 要紧;事物
happy 快乐的,幸福的
second 第二的
idea 主意;想法;意见
mean 意味着
important 重要的,重大的
never 从来,决不
afraid 害怕 的
fifth 第五的
hometown 故乡,家乡
discuss 讨论;议论
east 东方的
agree 同意;赞成
bo
uicollectionview 纯代码布局, 添加头部视图
dcj3sjt126com
Collection
#import <UIKit/UIKit.h>
@interface myHeadView : UICollectionReusableView
{
UILabel *TitleLable;
}
-(void)setTextTitle;
@end
#import "myHeadView.h"
@implementation m
N 位随机数字串的 JAVA 生成实现
FX夜归人
java Math 随机数 Random
/**
* 功能描述 随机数工具类<br />
* @author FengXueYeGuiRen
* 创建时间 2014-7-25<br />
*/
public class RandomUtil {
// 随机数生成器
private static java.util.Random random = new java.util.R
Ehcache(09)——缓存Web页面
234390216
ehcache 页面缓存
页面缓存
目录
1 SimplePageCachingFilter
1.1 calculateKey
1.2 可配置的初始化参数
1.2.1 cach
spring中少用的注解@primary解析
jackyrong
primary
这次看下spring中少见的注解@primary注解,例子
@Component
public class MetalSinger implements Singer{
@Override
public String sing(String lyrics) {
return "I am singing with DIO voice
Java几款性能分析工具的对比
lbwahoo
java
Java几款性能分析工具的对比
摘自:http://my.oschina.net/liux/blog/51800
在给客户的应用程序维护的过程中,我注意到在高负载下的一些性能问题。理论上,增加对应用程序的负载会使性能等比率的下降。然而,我认为性能下降的比率远远高于负载的增加。我也发现,性能可以通过改变应用程序的逻辑来提升,甚至达到极限。为了更详细的了解这一点,我们需要做一些性能
JVM参数配置大全
nickys
jvm 应用服务器
JVM参数配置大全
/usr/local/jdk/bin/java -Dresin.home=/usr/local/resin -server -Xms1800M -Xmx1800M -Xmn300M -Xss512K -XX:PermSize=300M -XX:MaxPermSize=300M -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=5 -
搭建 CentOS 6 服务器(14) - squid、Varnish
rensanning
varnish
(一)squid
安装
# yum install httpd-tools -y
# htpasswd -c -b /etc/squid/passwords squiduser 123456
# yum install squid -y
设置
# cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
# vi /etc/
Spring缓存注解@Cache使用
tom_seed
spring
参考资料
http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-cache/
http://swiftlet.net/archives/774
缓存注解有以下三个:
@Cacheable @CacheEvict @CachePut
dom4j解析XML时出现"java.lang.noclassdeffounderror: org/jaxen/jaxenexception"错误
xp9802
java.lang.NoClassDefFoundError: org/jaxen/JaxenExc
关键字: java.lang.noclassdeffounderror: org/jaxen/jaxenexception
使用dom4j解析XML时,要快速获取某个节点的数据,使用XPath是个不错的方法,dom4j的快速手册里也建议使用这种方式
执行时却抛出以下异常:
Exceptio