1.页面的跳转携带参数的问题
我的页面很多都会进行页面的跳转,而下一个页面的信息都是跟上页面相关联的,及时我跳转的页面所需要的信息,在跳转前的页面都是存在的,所以我第一个想的方法就是在跳转路由的时候,通过传参的方式,进行数据的传递,所以我是用了location中的state来存储我传的数据.
const data=record;
const path = {
pathname:'/person/releaseDetial',
state:{data},
这样传递的数据,我直接在新的页面通过this.props.history.location中把他取出来,这样传递数据,虽然确实可以在新的页面拿到并且进行渲染,但是问题是,如果进行刷新,我的数据将会丢失,只能返回上一页,重新进入.所以这里的修改,采用拼接URL的方式.因为刷新不会改变的是路由的地址,所以我们采用跳转路由通过拼接URL的方式,然后通过解析路由,在新页面进行数据的请求.
const {id}=record;
than.props.dispatch(routerRedux.push({
pathname:`/person/druginfo/edit/${id}`,
}))
router.js里面配置路由使这么写
'/person/druginfo/:type/:id':{
component:dynamicWrapper(app, ['personrelease'], ()=>import('../routes/Person/PersonRelease/ReleaseInfo')), },
在新的页面进行解析路由,拿到我们需要的id,然后在本页面进行数据请求
const pathToRegexp=require('path-to-regexp');
const match=pathToRegexp('/person/druginfo/:type/:id').exec(this.props.history.location.pathname)
this.props.dispatch({
type:'persondrug/getBase',
payload:{idCard:match[2],
},
});
2.父子组件之间的信息交流
子调父
父组件一般是向子组件传递数据,然后子组件拿到数据进行自己页面的一个渲染,但是更多时候,我们需要将一些函数一起传给子组件,比如:弹出一个Modal进行数据的填写,然后关闭Model的这个操作我们需要父组件来控制,但是这个确定按钮又是在子组件里面.这时候我们就需要将此类的函数向子组件传递.还有一种函数叫做回调函数,父组件什么时候需要传递回调函数给子组件呢,当父组件需要子组件的一些数据的时候,比如我们填好数据,点击确定的时候将填写好的数据返回给父组件,最终由父组件向后台发送请求.
父控子
首先得明确一个问题,作为子组件一般我们不会再给他绑定model,因为我们遵守React的一个思想,就是一个Container,其余都是用作展示组件的component。而所谓的展示组件,就是他只接受数据和函数,而不进行相关的处理
① 父组件如何给子组件传值和函数
②子组件如何返回数据给父组件
③如果我需要通过父组件来控制子组件的某些功能,怎么才能使用子组件的函数
父传子代码如下
在父组件我们要给子组件传递一个函数,用ref来绑定子组件
parentprops:{
title:'新增其他人员',
isVisible:false,
list:{},
name:'',
handleCancel:()=>
{
this.props.dispatch({
type:'otherpeople/changeVisibal',
payload:{isVisible:false},
})
},
onRef:(ref)=>{
this.ModalForm=ref
},
seachIdCard:(idCard)=>
{
this.props.dispatch({
type:'otherpeople/getBase',
payload:{
idCard,
},
});
},
onRef :(ref) => {
this.ModalForm = ref
},
然后在子组建的componentDidMount里面绑定this
componentDidMount(){
this.props.parentprops.onRef(this)
}
然后就在父组件里调用子组件的函数
用法如下:
this.ModalForm.check()
3异步加载的antd Tree组件,设置了 defaultExpandAll 为true但是不起作用
应该是类似value和defaultValue的相似问题,而这个里defaultExpandAllRows
就是像defaultValue那样 只在第一次渲染的时候起作用
而很多时候我们的数据初始是空的
4.DatePick
// 限制可选日期范围为,今天以前的日期不可选(今天仍可选)
disabledDate={
function disabledDate(current) {
// Can not select days before today
return current && current.isBefore(moment(Date.now()).add(-1,'day'));
}
}
开始日期,结束日期
style={{width:'100%' }} format="YYYY-MM-DD"
disabledDate={currentDate =>
getFieldValue('validToDate') &&
moment(getFieldValue('validToDate')).isBefore(currentDate,'day')
}/>
style={{width:'100%' }} format={dateFormat} disabledDate={currentDate =>
getFieldValue('validFromDate') &&
moment(getFieldValue('validFromDate')).isAfter(currentDate,'day')
}/>
5.关于回传数据(lov,select等等组件)
const {form } =this.props;
从lov的点击事件获取数据后如要放到表单中,某些字段需要初始化一下(getFieldDecorator)再setFieldsValue,否则会报警告
setFieldsValue
if (data) {
form.getFieldDecorator('materialId');
form.setFieldsValue({
nameZh: data.nameZh,
nameEn: data.nameEn,
materialTypeCode: data.materialTypeCode,
materialId: data.materialId,
});
}
6.Modal中的 initialValue
1.当我们第一次点开Modal的时候, FormItem会得到一个initialValue,但是这个值只在组件挂载的时候执行了一次, 当我们再次打开Modal窗口的时候并不会更新。
好了发现问题所在了, 接下来就是解决了~
解决方法:
Modal窗口我们都有应用一个Visible来控制是否显示, 我们只要利用这个值得变化就可以实现Modal组件的重新挂载了。
{
Visible&&
}
7.Table组件rowSelection方法
在
组件中有 rowSelection={rowSelection} 方法,可以让Table的第一列成为联动的选择框。
API中说到通过 rowSelection.selectedRowKeys 来控制选中项。比较坑的是,selectedRowKeys 控制的只是dataSource当前的顺序编号。
一定要加上rowKey={record => record.id},唯一标识每一行的字段(可组合),且 selectedRowKeys 存的就是id才能正常显示勾选状态。后来经过多次调试发现很多BUG都跟一个参数有关,不然会导致联动的选择框状态异常。
onSelectChange(selectedRowKeys,selectedRows) {
const {handelSelectRow}=this.props;
handelSelectRow(selectedRows);
this.setState({
selectedRowKeys:selectedRows.map(r=>r.num),
});
}
rowSelection={{
selectedRowKeys,
onChange:this.onSelectChange,
}}
columns={columns}
dataSource={dataSource}
bordered
loading={loading}
scroll={{x:1600}}
pagination={pagination}
onChange={page=>onSearch(page)}
rowKey="num"
8.select下拉选择器点击时带出多个数据
通常的select选择器会点击函数onSelect上只会带出key和value,当是由于客户需求,点击时需要带出其他数据。
我用dataRef={数据集合}把数据放到节点上。很多其他类似的情况都可以这么干。
queryFuzzyData({requestUrl,data}).then(result=>{
if(currentValue===value&&result) {
constres=[];
result.content.forEach(r=>{
res.push({
materialId:r.materialId,
nameZh:r.nameZh,
materialTypeCode:r.materialTypeCode,
salesUnit:r.packSize,
});
});
callback(res);
}
});
const options=data.map(d=>{d.nameZh});
showSearch
value={value}
defaultActiveFirstOption={false}
showArrow={showArrow}
filterOption={filterOption}
onSearch={this.handleSearch}
onChange={this.handleChange}
onSelect={onSelect}
notFoundContent={null}
>
{options}
handelSelect(data,option) {
const{form}=this.props;
const{dataref}=option.props;
if(dataref) {
form.getFieldDecorator('materialId');
form.setFieldsValue({
nameZh:dataref.nameZh,
materialTypeCode:dataref.materialTypeCode,
materialId:dataref.materialId,
salesUnit:dataref.salesUnit,
skuNum:dataref.skuNum,
});
}
}
9.正确使用setState
react官方文档中这样介绍setState的
setState() does not immediately mutate this.state but creates a pending state transition. Accessing this.state after calling this method can potentially return the existing value.
setState不会立即修改this.state,也就是说我们在调用setState的后,立即访问this.state是不能取得最新的this.state的值的。这样在一些特殊需求的时候可能会出现问题。但是我们可以通过使用setState回调函数的形式来使下面的代码拿到最新的this.state的值。
updateState({target}) {
this.setState(prevState=>{
const updatedUser={...prevState.user, [target.name]:target.value};// 使用先前的state来构建新的state的值
doSomething(updatedUser);
return{user:updatedUser};
});
}
10.React-router-dom 路由切换时,如何触发 componentDidMount?
描述:
在react 项目中我们获取远程数据总是会放在 componentDidMount 里面做的。但是这样的话只有在组件初始化的时候才会调用。
而有些路由类似于:
然后我们有一些 用于跳转的
。。。componentDidMount(){const{ match,handleAjaxItem } =this.props; handleAjaxItem(match.params.id); } render(){const{ item } =this.props;return(
) }
首次进入页面例如 detail/123 的时候是没问题,但往后切换到 detail/456 ,就不再走componentDidMount 了
解决方案有两个:
1.componentWillReceiveProps,每次在这个函数做this.props和nextProps的相等判断然后就可以调用想要调用的方法啦,但是(好像官网不推荐这么干了)
2.问题的本质是为我们这两个路由页面对应的都是一个detail组件,只要用key将组件加以区分,这样react 就会知道这不是‘同一个组件’,于是会重新初始化,componentDidMount当然会再走一遍。我的方法是用函数把组件包装一下
例如
// 这是正常的导出组件
exportdefaultDetail;
// 用函数包装一下变成这样
exportdefaultfunction(props) {
return
}
你可能感兴趣的:(使用react开发的经验总结(持续更新))
双指针-接雨水
Vacant Seat
java 数据结构 算法
接雨水给定n个非负整数表示每个宽度为1的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。输入:整型数组输出:整型变量思路:一层一层的计算水量,会超出时间限制按列求,分为三种情况,当前列与左右两边最大的列的较小值进行比较,只有当前列小于较小值,当前列才会接到水.也会超出时间限制动态规划,不需要每次都求出左边和右边的最大值,可以将最大值存储到两个数组之中,就可以解决时间复杂度的问题双指针,在第
Webpack 基础入门
懒羊羊我小弟
前端工程化 webpack rust 前端 es6 node.js
一、Webpack是什么Webpack是一款现代JavaScript应用程序的静态模块打包工具。在Web开发中,我们的项目会包含各种类型的文件,如JavaScript、CSS、图片等。Webpack可以将这些文件打包成一个或多个文件,以便在浏览器中高效加载。它就像是一个超级管家,把项目中的各种资源整理打包,让它们能更好地协同工作。二、为什么要使用Webpack代码拆分:可以将代码拆分成多个块,实现
Ubuntu 安装 OpenCV (C++)
LegendBIT
程序开发--基本工具 ubuntu opencv c++
版本详情:Ubuntu:22.04+5.15.0-133-genericgcc:11.4.0g++:11.4.0OpenCV:4.7.01.卸载OpenCV进入原先编译opencv的build目录,在该目录下打开终端,执行以下代码(如果build已经删除了,可以重新编译一遍该版本的opencv,然后在最后一步执行sudomakeuninstall)sudomakeuninstallcd..sudo
Hive中文乱码解决方法
快乐骑行^_^
大数据 大数据平台二次开发
Hive中文乱码解决方法一、Hive中文乱码原因二、Hive中文乱码解决方法三、修改hive配置文件四、再次查看表信息,中文注释正常一、Hive中文乱码原因hive的元数据是由mysql管理的,mysql默认编码是latin1,中文存储进去容易乱码,所以最好把mysql的编码改成utf-8二、Hive中文乱码解决方法需要把相应注释的地方的字符集由latin1改成utf-8,用到注释的就三个地方,表
鸿蒙应用开发系列 EX篇:HarmonyOS应用开发者基础认证
李小白杂货铺
斜杠人生 harmonyos 华为 鸿蒙系统应用开发者基础认证 鸿蒙应用开发 鸿蒙系统应用开发
文章目录系列文章背景认证考试题库参考注意:题库会不定时的进行具备调整甚至整体轮换,此为2024.5月版本注意:题库中题目的选项每次都会随机顺序,请参考内容判断题单选题多选题系列文章鸿蒙应用开发系列篇一:鸿蒙系统概述鸿蒙应用开发系列篇二:鸿蒙系统开发工具与环境鸿蒙应用开发系列篇三:ArkTS语言鸿蒙应用开发系列篇四:鸿蒙系统应用开发基础鸿蒙应用开发系列篇五:鸿蒙系统高级开发技术鸿蒙应用开发系列篇六:
Nginx 如何实现请求的缓存过期策略?
zengson_g
Nginx nginx 缓存 运维 服务器 网络
关注博主️带你畅游技术世界,不错过每一次成长机会!文章目录Nginx如何实现请求的缓存过期策略?一、缓存的重要性与基本概念二、Nginx缓存过期策略的原理三、设置Nginx缓存过期时间四、基于变量的动态缓存过期策略五、使用第三方模块增强缓存功能六、缓存的更新与失效机制七、缓存命中率与性能监控八、实际应用中的注意事项Nginx如何实现请求的缓存过期策略?在当今快节奏的互联网世界中,网站和应用的性能优
Elasticsearch详解
久梦歌行
elasticsearch jenkins 大数据
Elasticsearch是什么Elasticsearch是使用Lucene为基础建立的开源可用全文搜索引擎,它可以快速地储存、搜索和分析海量数据Elasticsearch的特点和传统的关系数据库对比关系型数据库查询性能,数据量超过百万级千万级之后下降厉害,本质是索引的算法效率不行,B+树算法不如倒排索引算法高效。关系型数据库索引最左原则限制,查询条件字段不能任意组合,否则索引失效,相反Elast
【HarmonyOS之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(四) -> 常见组件(二) -> tabs
枫叶丹4
HarmonyOS 前端 javascript 开发语言 harmonyos 华为 华为云
目录1->创建Tabs2->设置Tabs方向3->设置样式4->显示页签索引5->场景示例1->创建Tabs在pages/index目录下的hml文件中创建一个Tabs组件。item1item2content1content2/*test.css*/.container{flex-direction:column;justify-content:center;align-items:center;
数据结构2.2:顺序表的实现
weixin_43979650
数据结构
实现一个顺序表函数classSequencelist():def__init__(self):self.SeqList=[]defCreatSequenceList(self):print('***********************')print('*请输入数据后按回车键确认,若想结束按“#”')print('***********************')Element=input("清
python Kivy SDL2报错: Unable to load image
岁月缱绻浮半生
pythonKivySDL2报错:Unabletoloadimage国内玩kivy的真的很少,教程也少。断断续续弄了两天,终于弄好了首先看一下我的报错[INFO][Logger]RecordloginC:\Users\AlucaRd\.kivy\logs\kivy_20-12-15_11.txt[INFO][deps]Successfullyimported"kivy_deps.gstreamer
【Java线程中断】线程中断后为什么要调用interrupt()?
星星点点洲
Java java
我们在处理中断异常时InterruptedException,往往会调用Thread.currentThread().interrupt(),你知道这么做的目的和用处吗?这是Java多线程编程中一个重要的实践,主要原因有以下:interrupt为了继续传递中断信号1.恢复中断状态当线程在阻塞方法(如sleep()、wait()、join())中被中断时,JVM会做两件事:抛出Interrupted
在CentOS7上部署Memcached高性能内存缓存对象
weixin_34138377
概述Memcached是一套开源的高性能分布式内存对象缓存系统,它将所有的数据都存储在内存中,因为在内存中会统一维护一张巨大的Hash表,所以支持任意存储类型的数据。Memcached是典型的C/S架构,因此需要安装Memcached服务端与MemcachedAPI客户端。Memcached服务端是用C语言编写的,而MemcachedAPI客户端可以用任何语言来编写。常用典型架构如图所示:当Web
html放大镜效果代码,原生JS实现的放大镜效果实例代码
看热闹不嫌事大菌
html放大镜效果代码
js放大镜效果*{margin:0px;padding:0px;border:none;list-style:none;}#box{margin:80pxauto;width:352px;}#boxp{width:350px;height:350px;border:1pxsolid#ddd;margin-bottom:5px;}#boxpimg{width:350px;height:350px;}
1、Android概述
守望178
Android
安卓(Android)是一种基于Linux的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。Android操作系统最初由AndyRubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以
Android开发笔记: 5种对话框案例
程序猿的杂货店
Android开发笔记 android开发笔记 PopupWindow AlertDialog ProgressDialog
5种android对话框1弹出普通对话框---系统更新2自定义对话框--用户登录3时间选择对话框--时间对话框4进度条对话框--信息加载..5popuWindow对话框下载地址:http://download.csdn.net/download/taoerit/99651421弹出普通对话框---系统更新//弹出普通对话框publicvoidshowNormalDialog(Viewv){Aler
Maven 构建分发包与依赖管理
drebander
Maven maven java
Maven是Java开发中广泛使用的构建和依赖管理工具,它不仅能帮助开发者高效地构建项目,还提供了强大的依赖管理和版本控制功能。通过Maven,你可以轻松地构建并发布JAR、WAR等分发包,并管理不同版本的依赖。本文将讲解如何使用Maven构建并发布JAR/WAR包,以及如何管理不同的发布版本,包括如何配置发布仓库、版本号管理和依赖范围。1.Maven构建分发包(JAR/WAR)1.1JAR包构建
Maven 中的 Artifact 与 GroupId:定义与使用
drebander
Maven maven java
1.什么是Maven的Artifact和GroupId?在Maven中,Artifact和GroupId是构建和管理项目依赖的核心概念,它们用来唯一标识一个Maven项目或库。理解这两个概念对于管理Maven项目的依赖关系、构建过程和版本控制至关重要。Artifact和GroupId结合构成了Maven依赖的唯一标识符,通常被称为坐标(Coordinate)。2.GroupId:组织标识符2.1G
DeepSeek 脱单秘籍,速看!
工程师焱记
AIGC deepseek
今天是2025-02-14,也就是情人节当天,不如用AI来脱单,说干就干。以下内容为deepseek给出的建议:形象管理:第一印象决胜法则外在提升:快速打理发型、搭配简约有质感的服装(如浅色系毛衣+大衣)。女生可化淡妆突出气色,男生保持面部清爽,避免邋遢。细节加分:喷淡香水(如柑橘调或木质香),携带小巧伴手礼(如巧克力或书签)以备见面时赠予对方。高效沟通:打破尴尬的黄金技巧幽默破冰:“听说今天全城
听书项目(一)
screamn
SpringCloud Java开发 Java开发 项目记录
内容来源尚硅谷知识星球,精选项目,只记录开发中的优点功能,并不涉及侵权问题,若有侵权联系作者删除。项目背景随着智能手机和高速互联网的普及,人们开始寻求更便捷的方式来获取信息和娱乐。有声书的出现使得人们可以在旅途中、跑步时、做家务时等各种场景下,以更加灵活的方式享受阅读。在过去,有声书主要是由专业的演员朗读,制作成录音带或CD。但随着数字化媒体的发展,听书软件应运而生,为用户提供了更多选择,包括自助
成功解决 python+kivy的raise Exception(‘SDL2: Unable to load image‘) Unable to get a Window, abort.
projectnone2019
python 开发语言 后端
运行python+kivy一个小程序出错,代码如下:fromkivy.appimportAppfromkivy.uix.floatlayoutimportFloatLayoutclassSizeFloat(FloatLayout):def__init__(self,**kwargs):super().__init__(**kwargs)classSizeApp(App):defbuild(self
栈和stack
刃神太酷啦
蓝桥杯C++组 C++ 数据结构
栈和stack栈是一种访问受限的线性表进栈和出栈时记得检查空间还有没有longlongint最大能存的数是2^63-1如何用逆波兰表达式求结果(一般用栈):1.遇到数,直接进栈2.遇到操作符,弹出两个栈顶元素,计算之后,再放入栈中
pytorch环境配置过程中遇到的那些坑
枕绵
pytorch 人工智能 python conda
基本命令查看conda版本conda--version查看conda环境配置condaconfig--show创建虚拟环境condacreate-nenvNamepython=3.8查看虚拟环境的个数详情condaenvlist激活虚拟环境condaactivateenvName删除虚拟环境condaremove--nameenvName--all下载pytorchpip3installtorch
Windows环境下es8的集群部署
想养一只萨摩耶~
Elasticsearch elasticsearch 大数据 服务器
原创文章:Windows环境下es8的集群部署–编程屋目录1相关概念1.1单机集群1.2集群Cluster1.3节点Node2Windows下部署2.1节点node-10012.2节点node-10022.3节点node-10031相关概念1.1单机集群单台Elasticsearch服务器提供服务,往往都有最大的负载能力,超过这个阀值,服务器新能就会大大降低不可用,所以生产环境中,一般都是运行在指
Windows 字体导入到 Docker 指定容器
程序员老王wd
docker 容器 运维
以下是将Windows字体导入到Docker指定容器的详细操作步骤:1.准备工作确认字体文件:在Windows系统中,字体文件通常位于C:\Windows\Fonts目录下。你可以选择需要导入的字体文件,常见的字体文件格式有.ttf(TrueType字体)和.otf(OpenType字体)。确保Docker环境正常:要保证Docker已经正确安装并且正在运行,同时你知道目标容器的名称或ID。2.复
模型/视图编程
潦潦
Qt qt 开发语言
1.MVC包含模型(Model表示数据)、视图(View用户界面)、控制器(Controller界面对用户输入的反应方式)三部分,Qt中还引入了委托(Delegate,又称代理)来对用户输入进行灵活处理,使用它可以定制数据的渲染和编辑方式。QAbstractItemModel是模型的抽象基类TheQAbstractItemModelclassprovidestheabstractinterface
validation 实现参数校验
程序员老王wd
java
简述在Java中,参数校验是非常重要的,因为它可以确保方法或函数在执行时接收到的参数是合法的,有效的,从而提高代码的健壮性和安全性。参数校验可以防止无效的输入导致的异常或错误,同时也能减少因为无效参数导致的安全漏洞Java中的参数校验可以通过手动编写校验逻辑来实现,但这样会增加代码的复杂度和重复性。为了简化参数校验的实现,可以使用ValidationAPI,它是JavaEE平台的一部分,提供了一套
Fink与Hadoop的简介以及联系
Bugkillers
hadoop 大数据 分布式
Fink和Hadoop是两个常用于大数据处理的开源工具,它们可以搭配使用以构建高效的数据处理系统。一、Fink和Hadoop的关系Fink:1、Fink是一个分布式流处理框架,专注于实时数据处理。它支持高吞吐、低延迟的流处理,适用于实时分析、事件驱动应用等场景。2、Fink提供精确一次(exactly-once)语义,确保数据处理的准确性。Hadoop:1、Hadoop是一个分布式存储和批处理框架
Maven 私服配置
zoobuzas
linux maven
Maven私服配置上传将项目发布到私服,修改settings.xml文件,配置连接私服的用户和密码。此用户名和密码用于私服校验,因为私服需要知道上传的账号和密码是否和私服中的账号和密码一致。releases连接发布版本项目仓库snapshots连接测试版本项目仓库releasesadminadmin123snapshotsadminadmin123thirdpartyadminadmin123第二
Android中kotlin的Map简单使用方法
RandomWrite
android kotlin Map使用方法
在Kotlin中,Map是一种特殊类型的集合,用于存储键值对。使用Map可以方便地通过键来检索和存储值。1.创建Map使用mapOf函数创建不可变的Map。可以通过两种方式初始化键值对:使用to函数或Pair对象。例如:valmap=mapOf("Tom"to18,"Jerry"to12,"Jack"to20)//或者valmap2=mapOf(Pair("Tom",18),Pair
rpm:使用实例
mzhan017
云平台运维 rpm
文章目录rpm源测试命令查看releasenote帮助redhat提供的源目录查看编译选项查看软件运行的配置文件建议查看当前软件的帮助文档都有哪些安装错误12安装32bitrpm安装老版本强制安装设置安装目录查询文件查看依赖关系安装rpm到特定目录安装rpm到特定目录2--root校验rpm的文件是否正确rpm2cpio查询rpmname查询文件权限错误错误Unabletochangerootdi
解读Servlet原理篇二---GenericServlet与HttpServlet
周凡杨
java HttpServlet 源理 GenericService 源码
在上一篇《解读Servlet原理篇一》中提到,要实现javax.servlet.Servlet接口(即写自己的Servlet应用),你可以写一个继承自javax.servlet.GenericServletr的generic Servlet ,也可以写一个继承自java.servlet.http.HttpServlet的HTTP Servlet(这就是为什么我们自定义的Servlet通常是exte
MySQL性能优化
bijian1013
数据库 mysql
性能优化是通过某些有效的方法来提高MySQL的运行速度,减少占用的磁盘空间。性能优化包含很多方面,例如优化查询速度,优化更新速度和优化MySQL服务器等。本文介绍方法的主要有:
a.优化查询
b.优化数据库结构
ThreadPool定时重试
dai_lm
java ThreadPool thread timer timertask
项目需要当某事件触发时,执行http请求任务,失败时需要有重试机制,并根据失败次数的增加,重试间隔也相应增加,任务可能并发。
由于是耗时任务,首先考虑的就是用线程来实现,并且为了节约资源,因而选择线程池。
为了解决不定间隔的重试,选择Timer和TimerTask来完成
package threadpool;
public class ThreadPoolTest {
Oracle 查看数据库的连接情况
周凡杨
sql oracle 连接
首先要说的是,不同版本数据库提供的系统表会有不同,你可以根据数据字典查看该版本数据库所提供的表。
select * from dict where table_name like '%SESSION%';
就可以查出一些表,然后根据这些表就可以获得会话信息
select sid,serial#,status,username,schemaname,osuser,terminal,ma
类的继承
朱辉辉33
java
类的继承可以提高代码的重用行,减少冗余代码;还能提高代码的扩展性。Java继承的关键字是extends
格式:public class 类名(子类)extends 类名(父类){ }
子类可以继承到父类所有的属性和普通方法,但不能继承构造方法。且子类可以直接使用父类的public和
protected属性,但要使用private属性仍需通过调用。
子类的方法可以重写,但必须和父类的返回值类
android 悬浮窗特效
肆无忌惮_
android
最近在开发项目的时候需要做一个悬浮层的动画,类似于支付宝掉钱动画。但是区别在于,需求是浮出一个窗口,之后边缩放边位移至屏幕右下角标签处。效果图如下:
一开始考虑用自定义View来做。后来发现开线程让其移动很卡,ListView+动画也没法精确定位到目标点。
后来想利用Dialog的dismiss动画来完成。
自定义一个Dialog后,在styl
hadoop伪分布式搭建
林鹤霄
hadoop
要修改4个文件 1: vim hadoop-env.sh 第九行 2: vim core-site.xml <configuration> &n
gdb调试命令
aigo
gdb
原文:http://blog.csdn.net/hanchaoman/article/details/5517362
一、GDB常用命令简介
r run 运行.程序还没有运行前使用 c cuntinue 
Socket编程的HelloWorld实例
alleni123
socket
public class Client
{
public static void main(String[] args)
{
Client c=new Client();
c.receiveMessage();
}
public void receiveMessage(){
Socket s=null;
BufferedRea
线程同步和异步
百合不是茶
线程同步 异步
多线程和同步 : 如进程、线程同步,可理解为进程或线程A和B一块配合,A执行到一定程度时要依靠B的某个结果,于是停下来,示意B运行;B依言执行,再将结果给A;A再继续操作。 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回,同时其它线程也不能调用这个方法
多线程和异步:多线程可以做不同的事情,涉及到线程通知
&
JSP中文乱码分析
bijian1013
java jsp 中文乱码
在JSP的开发过程中,经常出现中文乱码的问题。
首先了解一下Java中文问题的由来:
Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦。原因主要有两方面,
js实现页面跳转重定向的几种方式
bijian1013
JavaScript 重定向
js实现页面跳转重定向有如下几种方式:
一.window.location.href
<script language="javascript"type="text/javascript">
window.location.href="http://www.baidu.c
【Struts2三】Struts2 Action转发类型
bit1129
struts2
在【Struts2一】 Struts Hello World http://bit1129.iteye.com/blog/2109365中配置了一个简单的Action,配置如下
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configurat
【HBase十一】Java API操作HBase
bit1129
hbase
Admin类的主要方法注释:
1. 创建表
/**
* Creates a new table. Synchronous operation.
*
* @param desc table descriptor for table
* @throws IllegalArgumentException if the table name is res
nginx gzip
ronin47
nginx gzip
Nginx GZip 压缩
Nginx GZip 模块文档详见:http://wiki.nginx.org/HttpGzipModule
常用配置片段如下:
gzip on; gzip_comp_level 2; # 压缩比例,比例越大,压缩时间越长。默认是1 gzip_types text/css text/javascript; # 哪些文件可以被压缩 gzip_disable &q
java-7.微软亚院之编程判断俩个链表是否相交 给出俩个单向链表的头指针,比如 h1 , h2 ,判断这俩个链表是否相交
bylijinnan
java
public class LinkListTest {
/**
* we deal with two main missions:
*
* A.
* 1.we create two joined-List(both have no loop)
* 2.whether list1 and list2 join
* 3.print the join
Spring源码学习-JdbcTemplate batchUpdate批量操作
bylijinnan
java spring
Spring JdbcTemplate的batch操作最后还是利用了JDBC提供的方法,Spring只是做了一下改造和封装
JDBC的batch操作:
String sql = "INSERT INTO CUSTOMER " +
"(CUST_ID, NAME, AGE) VALUES (?, ?, ?)";
[JWFD开源工作流]大规模拓扑矩阵存储结构最新进展
comsci
工作流
生成和创建类已经完成,构造一个100万个元素的矩阵模型,存储空间只有11M大,请大家参考我在博客园上面的文档"构造下一代工作流存储结构的尝试",更加相信的设计和代码将陆续推出.........
竞争对手的能力也很强.......,我相信..你们一定能够先于我们推出大规模拓扑扫描和分析系统的....
base64编码和url编码
cuityang
base64 url
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
web应用集群Session保持
dalan_123
session
关于使用 memcached 或redis 存储 session ,以及使用 terracotta 服务器共享。建议使用 redis,不仅仅因为它可以将缓存的内容持久化,还因为它支持的单个对象比较大,而且数据类型丰富,不只是缓存 session,还可以做其他用途,一举几得啊。1、使用 filter 方法存储这种方法比较推荐,因为它的服务器使用范围比较多,不仅限于tomcat ,而且实现的原理比较简
Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式']
dcj3sjt126com
数据库
public function getMinLimit () { $sql = "..."; $result = yii::app()->db->createCo
solr StatsComponent(聚合统计)
eksliang
solr聚合查询 solr stats
StatsComponent
转载请出自出处:http://eksliang.iteye.com/blog/2169134
http://eksliang.iteye.com/ 一、概述
Solr可以利用StatsComponent 实现数据库的聚合统计查询,也就是min、max、avg、count、sum的功能
二、参数
百度一道面试题
greemranqq
位运算 百度面试 寻找奇数算法 bitmap 算法
那天看朋友提了一个百度面试的题目:怎么找出{1,1,2,3,3,4,4,4,5,5,5,5} 找出出现次数为奇数的数字.
我这里复制的是原话,当然顺序是不一定的,很多拿到题目第一反应就是用map,当然可以解决,但是效率不高。
还有人觉得应该用算法xxx,我是没想到用啥算法好...!
还有觉得应该先排序...
还有觉
Spring之在开发中使用SpringJDBC
ihuning
spring
在实际开发中使用SpringJDBC有两种方式:
1. 在Dao中添加属性JdbcTemplate并用Spring注入;
JdbcTemplate类被设计成为线程安全的,所以可以在IOC 容器中声明它的单个实例,并将这个实例注入到所有的 DAO 实例中。JdbcTemplate也利用了Java 1.5 的特定(自动装箱,泛型,可变长度
JSON API 1.0 核心开发者自述 | 你所不知道的那些技术细节
justjavac
json
2013年5月,Yehuda Katz 完成了JSON API(英文,中文) 技术规范的初稿。事情就发生在 RailsConf 之后,在那次会议上他和 Steve Klabnik 就 JSON 雏形的技术细节相聊甚欢。在沟通单一 Rails 服务器库—— ActiveModel::Serializers 和单一 JavaScript 客户端库——&
网站项目建设流程概述
macroli
工作
一.概念
网站项目管理就是根据特定的规范、在预算范围内、按时完成的网站开发任务。
二.需求分析
项目立项
我们接到客户的业务咨询,经过双方不断的接洽和了解,并通过基本的可行性讨论够,初步达成制作协议,这时就需要将项目立项。较好的做法是成立一个专门的项目小组,小组成员包括:项目经理,网页设计,程序员,测试员,编辑/文档等必须人员。项目实行项目经理制。
客户的需求说明书
第一步是需
AngularJs 三目运算 表达式判断
qiaolevip
每天进步一点点 学习永无止境 众观千象 AngularJS
事件回顾:由于需要修改同一个模板,里面包含2个不同的内容,第一个里面使用的时间差和第二个里面名称不一样,其他过滤器,内容都大同小异。希望杜绝If这样比较傻的来判断if-show or not,继续追究其源码。
var b = "{{",
a = "}}";
this.startSymbol = function(a) {
Spark算子:统计RDD分区中的元素及数量
superlxw1234
spark spark算子 Spark RDD分区元素
关键字:Spark算子、Spark RDD分区、Spark RDD分区元素数量
Spark RDD是被分区的,在生成RDD时候,一般可以指定分区的数量,如果不指定分区数量,当RDD从集合创建时候,则默认为该程序所分配到的资源的CPU核数,如果是从HDFS文件创建,默认为文件的Block数。
可以利用RDD的mapPartitionsWithInd
Spring 3.2.x将于2016年12月31日停止支持
wiselyman
Spring 3
Spring 团队公布在2016年12月31日停止对Spring Framework 3.2.x(包含tomcat 6.x)的支持。在此之前spring团队将持续发布3.2.x的维护版本。
请大家及时准备及时升级到Spring
fis纯前端解决方案fis-pure
zccst
JavaScript
作者:zccst
FIS通过插件扩展可以完美的支持模块化的前端开发方案,我们通过FIS的二次封装能力,封装了一个功能完备的纯前端模块化方案pure。
1,fis-pure的安装
$ fis install -g fis-pure
$ pure -v
0.1.4
2,下载demo到本地
git clone https://github.com/hefangshi/f