React Hooks+Umi+TypeScript+Dva开发体验
345 次阅读 · 读完需要 23 分钟
4
前端时间,接触了hooks,研究了一段时间后感觉使用起来十分方便,正好公司开了一个新的小项目,正好使用hooks来实践一下。
技术选型
1.为什么选择umi
在之前的文章中我也介绍过umi的优点,在使用过umi后,感觉自己的开发效率有很大的提升。umi的路由使用起来实在是让我爱不释手,详细的我就不过多介绍了,有兴趣的可以去看我之前的文章。
2.为什么选择TypeScript
TypeScript 是 Microsoft 开发和维护的一种面向对象的编程语言。它是 JavaScript 的超集,包含了 JavaScript 的所有元素,可以载入 JavaScript 代码运行,并扩展了 JavaScript 的语法。在使用TypeScript编程时,它能帮助你在写代码的过程中考虑到各种类型上的问题,避免代码运行时出现的意想不到的错误。使用了TypeScript可以增强你代码的健壮性,特别是大型项目的开发中,某些小小的改动都有可能对你的项目造成严重的后果。
3.为什么选择Dva
其实使用React Hooks的目的就是为了去redux,那我为什么还会使用基于redux-soga封装的dva呢?原因就在于hooks虽然很方便,但如果是一些很复杂的状态需要去管理,这时候使用hooks就会有点儿费劲了。所以这时候结合dva来解决这种特别复杂的状态管理是很方便的,原生的redux使用起来稍微有点儿麻烦,dva用起来很简单,很爽,这就是我选择dva的原因。
4.为什么选择React Hooks
这个是这篇文章的重点了,你在react开发过程中有没有遇见这三个问题。
(一) 在组件组件复用状态逻辑很难
React 没有提供将可复用性行为“附加”到组件的途径(例如,把组件连接到 store)。如果你使用过 React 一段时间,你也许会熟悉一些解决此类问题的方案,比如 render props 和 高阶组件。但是这类方案需要重新组织你的组件结构,这可能会很麻烦,使你的代码难以理解。如果你在 React DevTools 中观察过 React 应用,你会发现由 providers,consumers,高阶组件,render props 等其他抽象层组成的组件会形成“嵌套地狱”。尽管我们可以在 DevTools 过滤掉它们,但这说明了一个更深层次的问题:React 需要为共享状态逻辑提供更好的原生途径。
(二) 复杂的组件变得难以理解
我们经常维护一些组件,组件起初很简单,但是逐渐会被状态逻辑和副作用充斥。每个生命周期常常包含一些不相关的逻辑。例如,组件常常在 componentDidMount 和 componentDidUpdate 中获取数据。但是,同一个 componentDidMount 中可能也包含很多其它的逻辑,如设置事件监听,而之后需在 componentWillUnmount 中清除。相互关联且需要对照修改的代码被进行了拆分,而完全不相关的代码却在同一个方法中组合在一起。如此很容易产生 bug,并且导致逻辑不一致。在多数情况下,不可能将组件拆分为更小的粒度,因为状态逻辑无处不在。这也给测试带来了一定挑战。同时,这也是很多人将 React 与状态管理库结合使用的原因之一。但是,这往往会引入了很多抽象概念,需要你在不同的文件之间来回切换,使得复用变得更加困难。
(三) 难以理解的class
除了代码复用和代码管理会遇到困难外,class 是学习 React 的一大屏障。你必须去理解 JavaScript 中 this 的工作方式,这与其他语言存在巨大差异。还不能忘记绑定事件处理器。没有稳定的语法提案,这些代码非常冗余。大家可以很好地理解 props,state 和自顶向下的数据流,但对 class 却一筹莫展。即便在有经验的 React 开发者之间,对于函数组件与 class 组件的差异也存在分歧,甚至还要区分两种组件的使用场景。
如果你也被这三种问题所困扰,这时候接触hooks,你会发现打开了新世界的大门。从面向对象编程转为函数式编程,我感觉释放了自己,写代码变得又爽又飞快。
项目搭建
因为使用了umi,所以该项目也是用umi来搭建的,具体方法可查看之前文章。选择ts版本,然后根据自己编程习惯,配置一下tslint规则就ok了。这里要注意一件重要的事情,升级react和react-dom的版本为16.8.0以上,因为umi脚手架搭建的项目react版本为16.7.0,而16.8.0是react正式支持hook的版本。
Hooks使用
1.useState
首先我们来看一下官方的代码。
import React, { useState } from 'react';
function Example() {
// 声明一个新的叫做 “count” 的 state 变量
const [count, setCount] = useState(0);
return (
You clicked {count} times
setCount(count + 1)}>
Click me
);
}
使用起来十分简单,函数式编程让你不用再继承Component,直接定义一个变量就行,可以给这个变量看做你之前写react中state的一个值。使用Hooks之后你不用再调用setState来更改state中的值,可以使用你自己定义的更改方法,上面代码中就是使用setCount来更改count的值,是不是很方便?
怎么在hooks中使用TypeScript?
如果你使用Component来编写你的组件,你需要通过interface来定义你state中值的类型,使用Hooks,你只需要这样:
const [count, setCount] = useState(0)
2.useEffect
Effect Hook 可以让你在函数组件中执行副作用操作,下面是官方代码。
import React, { useState, useEffect } from 'react';
function Example() {
const [count, setCount] = useState(0);
// Similar to componentDidMount and componentDidUpdate:
useEffect(() => {
// Update the document title using the browser API
document.title = `You clicked ${count} times`;
});
return (
You clicked {count} times
setCount(count + 1)}>
Click me
);
}
这段代码中使用了useEffect,可以让你在屏幕中显示你点击的次数。useEffect最大的好处我认为就是去生命周期钩子函数了,使用之后你不用再使用任何生命周期钩子函数,这一点来看是不是就特别爽?useEffect为什么会实现去生命周期钩子的作用呢?你可以在函数中写一个console.log,查看控制台后你便会发现控制台会一直打印你的console.log,所以useEffect会在组件的生命周期中一直被调用,我们在使用的时候可以告诉useEffect什么时候才会被调用来进行性能优化。比如上面代码我们可以这样修改:
useEffect(() => {
// Update the document title using the browser API
document.title = `You clicked ${count} times`;
},[count])
这样修改后useEffect会在count的值发生改变后才被调用。
怎么清除在useEffect中调用的函数?
在开发过程中我们可能会使用到定时器,而异步队列中的定时器在组件被销毁后也会继续执行,这样便会造成内存泄漏,在Component中我们会调用componentWillUnmount函数来清除定时器,在useEffect中我们该怎么办呢?
import React, { useState, useEffect } from 'react'
import moment from 'moment'
export default function () {
const [nowTime, setNowTime] = useState(moment().format('YYYY年MM月DD日 ddd HH:mm'))
useEffect(() => {
const timer = setInterval(() => {
setNowTime(moment().format('YYYY年MM月DD日 ddd HH:mm:ss'))
}, 1000);
return () => {
clearInterval(timer);
}
},[nowTime])
return (
<>{nowTime}>
)
}
上面代码就是一段很简单的显示当前时间的代码,我们可以通过return函数在组件销毁的时候清除useEffect中的定时器
使用Hooks来编写一个表格组件
从后端获取数据,然后在表格中渲染应该是很常见的一个功能了,下面我们来看一下使用Hooks之后怎么写这种组件
import React, { useState, useEffect } from 'react'
import { Table } from 'antd'
export default function () {
const [tableData, setTableData] = useState([])
const [page, setPage] = useState(1)
const [pageSize, setPageSize] = useState(15)
const [count, setCount] = useState(0)
const [loading,setLoading] = useState(true)
useEffect(() => {
fetch('www.baidu.com').then( function(data) {
if(data) {
setTableData(data.result)
setCount(data.count)
setLoading(false)
}
})
},[page,pageSize])
const onChangePage = (pageNumber: any) => setPage(pageNumber)
const onChangePageSize = (value: number) => setPageSize(value)
const columns = [
{
title: 'ID',
dataIndex: 'id'
},
{
title: '姓名',
dataIndex: 'name'
},
{
title: '电话',
dataIndex: 'tel',
},
{
title: '性别',
dataIndex: 'gender',
},
{
title: '年龄',
dataIndex: 'age',
},
]
return (
<>
(i + '')}
columns={columns}
loading={loading}
dataSource={tableData.length ? tableData : []}
pagination={false}
style={{ marginTop: 10 }}
size="small"
/>
搜索到{props.count}条数据
共{Math.ceil(count / pageSize)}页
10条/页
15条/页
20条/页
30条/页
>
)
}
这样就写完一个功能完善的表格组件了,回想一下你之前是用Component面向对象编程时怎么写的,再看一下用Hooks函数式编程的代码是不是简单很多?赶紧来试试hooks吧,会让你有写代码停不下来的感觉。
你可能感兴趣的:(创业)
Chainlink 2022 年秋季黑客松获奖项目介绍
Chainlink资讯
Chainlink 预言机 黑客松 区块链 web3
Chainlink2022年秋季黑客马拉松已于12月7日结束,从本次黑客马拉松的数据中,可以清楚地看到,Web3创业者们正在以惊人的速度速度创新。本次Chainlink黑客马拉松吸引了来自全球各地团队的10,000多个参赛者报名,最终提交浪超过380个项目,这两项数据均打破了过去的记录。Chainlink提供了30多个小时的开发教程,让新一代的开发者能够开始在区块链和Oracle基础设施之上构建自
人形机器人,自动驾驶“老炮”创业第二站
洞见新研社
科技 人工智能
造一台人形机器人,或许正在成为2025年最炙手可热的事情。从去年第四季度开始,伴随着大模型应用的深入,具身智能概念被点燃,其中最鲜明的一个特点是,大量自动驾驶大佬的转行加入。随便说几个比较有分量的,智驾芯片上市公司地平线创始成员、副总裁、前软件平台产品线总裁余轶南(博士)联手理想汽车前智能驾驶产品总监赵哲伦成立具身智能领域初创公司维他动力;百度集团资深副总裁、CEO助理、原百度智能驾驶事业群组(I
1024基金会发起人冯雷受邀参与国家自然科学基金会《数智时代创新驱动创业理论建构与实践对话》
人工智能
11月15日,由国家自然科学基金委员会管理科学部主办,自然科学基金项目“创新驱动创业的重大理论与实践问题研究”项目组、浙大管理学院联合承办的“数智时代创新驱动创业理论建构与实践对话”会议在浙江杭州圆满落幕。大会的圆桌会议「与实践对话」环节以其深度的话题讨论、内容的前瞻性、与话题的精彩性吸引了各界的目光。1024基金会发起人冯雷受邀出席,和其他行业专家共同探讨数智时代创新驱动创业的现实问题与实践需求
20 条实用的创业实战指南:初创项目如何提升竞争力?
人工智能
作者:LmrankHan,AllianceDao核心贡献者编译:J1N,TechubNews我最近在SolanaBreakpoint上发表了主题演讲,目的是在有限的时间内为加密货币项目创始人提供尽可能多有价值的信息。我的演讲反响很好,所以我想花点时间详细整理阐述一下,让人们可以快速从中获得收益。从解决小问题开始从解决小问题或设计一个小的领域开始。而不是一开始就瞄准一个庞大的市场,创始人应该专注于解
华为发展历程:战略转型与分析
常耀斌
网络
纵观30多年的发展历程,在创始人任正非及创业团队奋力牵引下,全体员工共同奋斗,华为实现了从“一无所有”到“三分天下”、从“积极跟随者”到“行业领先者”的跨越式发展。华为在业务战略上经历了数次变革,分别是从农村到城市,从国内市场走向全球化,从B2B市场向B2b、B2C市场及云管端一体化转型变革。另外,自2019年起,华为遭受M国不断加码的政策打压。华为的发展历程可以划分为五个阶段:一是,创业初期(1
程序员创业公司的技术栈选择与性能优化
AI天才研究院
ChatGPT AI大模型企业级应用开发实战 大数据AI人工智能 大厂Offer收割机 面试题 简历 程序员读书 硅基计算 碳基计算 认知计算 生物计算 深度学习 神经网络 大数据 AIGC AGI LLM Java Python 架构设计 Agent 程序员实现财富自由
《程序员创业公司的技术栈选择与性能优化》概述本文旨在探讨程序员创业公司在选择技术栈和进行性能优化方面的策略与实践。随着技术的不断进步和市场的快速变化,技术栈的选择和优化成为创业公司成功的关键因素。正确的技术栈选择不仅能够提升系统的性能和可扩展性,还能降低开发成本和维护难度。关键词技术栈选择性能优化创业公司云计算数据库微服务人工智能区块链边缘计算摘要本文首先分析了技术栈选择的重要性以及创业公司在技术
ProcessOn入选AI年度榜单《2024 AIGC赋能行业创新引领者》
ProcessOn官方账号
processon 人工智能 AIGC
2024年12月26日至27日,由中国产业海外发展协会指导、极新主办、前海香港科技青年之家与粤港澳大湾区青年创新创业中心联合主办的「重度垂直·2024极新AIGC峰会」在深圳、香港两地隆重举行,ProcessOn因在AI绘图解决方案方面的出色能力,荣登「2024AGI独角兽TOP50」和「2024AIGC赋能行业创新引领者」榜单,得到了各行各业的持续关注。2024AGI独角兽TOP50荣誉海报20
网络创业理论与实践(网络通识)
17是个小小菜
网络通识 大数据
网络创业优势什么是网络创业【单选题】facebook的创始人是()。A、马克·扎克伯格B、雷军C、马云D、埃隆·马斯克我的答案:A【多选题】互联网创业的表现形式有()。A、电子商务B、移动互联网创业C、自媒体创业D、劳务技术创业网E、自营网站我的答案:ABCDE【判断题】全球创业教父认为创业不仅仅是对机会的识别和把握。()我的答案:×互联网冲击引发的社会变革【单选题】不是中国经济发展的三大马车是(
2025美赛数学建模B题思路+模型+代码(1.24更新),备战2025美赛
灿灿数模分号
数学建模
2025美赛数学建模B题思路+模型+代码(1.24更新),备战2025美赛,见文末名片一、比赛准备1、心态准备(1)重视美赛a、含金量:美赛有O奖(特等奖),加分上限与国赛一等奖相同;美赛有的学校认定为A类,比如清华大学、武汉大学等,有的认定为B类;b、实力:对大部分的大一大二的同学来说,专业知识积累还不够,手里的项目还不成熟,参加创新创业类的比赛实力有限,拿奖比较困难,因此,像美赛、国赛等学科类
DeepSeek:极致的中国技术理想
X_taiyang18
AI与机器学习 人工智能
揭秘DeepSeek:一个更极致的中国技术理想主义故事划重点中国的大模型创业公司DeepSeek因其创新的MLA架构和DeepSeekMoESparse结构,使推理成本降低至每百万token仅1块钱,引发中国大模型价格战。与其他大公司烧钱补贴不同,DeepSeek是有利润的,背后是DeepSeek对模型架构的全面创新。DeepSeek创始人梁文锋认为,中国的大模型创业者除应用创新外,也可以加入到全
喜报!积鼎科技荣获“2024上海最具投资潜力50佳创业企业”称号
积鼎科技-多相流在线
国产工业软件 科技 CFD 流体仿真 多相流
在近日举行的外滩金融•上海国际股权投资论坛上,备受瞩目的“2024上海最具投资潜力50佳创业企业”榜单正式揭晓。积鼎科技成功入选50佳榜单,展现了强劲的发展潜力和投资价值。本次活动是在市经济信息化委指导下,中小企业办、市中小企业服务中心、市投资促进服务中心联合上海国际股权协会等三家行业协会共同组织开展了“2024上海最具投资潜力50佳创业企业”评选。10月中旬评选正式启动,百余家企业经过专家评委团
李开复的理性选择:AI代码生成工具时代,初创公司如何避免盲目坚持?
前端
近日,零一万物创始人李开复对公司调整和转型做出了回应,引发了业内广泛关注。他强调“今年是商业化的决胜之年”,并选择与阿里云合作,将部分团队并入阿里云的“产业大模型联合实验室”。这引发了我们对初创公司发展策略,特别是如何在AI代码生成工具等高成本领域进行理性选择的思考。李开复的经验,为我们提供了宝贵的借鉴。李开复指出,初创公司第一年的打法未必适用于第二年,调整和转型是创业的必然。他坦言,大模型预训练
李开复与零一万物:AI创业的务实之道,以及AI写代码工具的崛起
前端
2025年伊始,AI领域便掀起一阵波澜。零一万物,这家备受瞩目的AI公司,其人员变动和业务拆分引发了广泛关注。李开复,这位在AI领域深耕多年的资深人士,对此做出了回应,其核心观点值得我们深思:在AI领域,盲目追求规模并非最佳策略。这不仅关乎零一万物,也为众多AI初创公司提供了宝贵的经验。李开复观点解读:理性决策,而非盲目扩张李开复认为,初创公司“负担不起”超大模型的预训练。这“负担不起”并非仅仅指
深入了解Text2SQL开源项目(Chat2DB、SQL Chat 、Wren AI 、Vanna)
m0_74823983
开源 sql 人工智能
深入了解Text2SQL开源项目(Chat2DB、SQLChat、WrenAI、Vanna)前言1.Chat2DB2.SQLChat3.WrenAI4.Vanna前言在数据驱动决策的时代,将自然语言查询转化为结构化查询语言(SQL)的能力变得日益重要。无论是小型创业公司还是大型企业,都希望能够更轻松地从海量的数据中挖掘出有价值的见解。然而,对于那些不熟悉SQL或者数据库架构的用户来说,直接编写复杂
「AI 中国」榜单揭晓,OpenBayes贝式计算入选「大模型最具潜力创业企业 TOP 10」
日前,「AI中国」机器之心2024年度评选正式揭晓,OpenBayes贝式计算有幸入选「大模型最具潜力创业企业TOP10」。作为专业的人工智能媒体与产业服务平台,机器之心于2017年发布了AI榜单「SyncedMachineIntelligenceAwards」,在随后的时间里,伴随AI的跨越式发展,机器之心的年度评选也逐渐成为了产业风向标之一,覆盖的领域、范围更加广泛,维度更加细化。机器之心20
跻身全球高成长企业之列:涛思数据斩获“2024 胡润全球猎豹企业”殊荣
tdengine数据库
近日,胡润百富在广州南沙举办了“2024胡润全球猎豹企业大会”,正式发布《2024胡润全球猎豹企业榜》。这份榜单汇聚了全球成立于2000年之后、未来五年内最有可能达到十亿美元独角兽级估值的高成长企业。作为全球创业企业发展的风向标,“胡润全球猎豹企业榜”反映了各行业的创新力量和未来潜力。今年,全球共有928家企业上榜,中国以304家企业位居榜单第二,仅次于美国的359家。榜单显示,这些“猎豹企业”平
【产品思维09讲】点线面体:产品经理和人生选择中的战略思维
Qingzong_MA
职场小白进阶篇 职场和发展
在许多关于成功与失败的讨论中,很多人认为,努力是最重要的因素。我们在学校学到的知识、职场中的技能、创业时的坚持,都给了我们“努力能改变命运”的信念。然而,在现实中,我们常常发现:同样的努力,不同的背景和选择,带来的回报却截然不同。正如我们在“相亲”过程中看到的,不是每个人都能通过一次闪耀的展示获得理想的伴侣,长期关系更重要的是稳定的点而非一时的光辉。而在做产品决策时,也不是所有的努力都能转化为成功
【懒加载数据 Objective-C语言】
清风清晨
Objective-C objective-c cocoa ios
一、咱们就开始进行懒加载1.懒加载发现,每一个字典,是不是就是四个键值对组成的:1)answer:String,中国合伙人,2)icon:String,movie_zghhr,3)title:String,创业励志电影,4)options:Array,21items前三个都是String类型,最后是不是Array类型,所以我们要先建一个模型,是不是来表示它这个东西啊,2.我们首先把这个项目,给它起
OpenAI前CTO最隐秘AI创业:没名字没方向,挖走OpenAI高管,10位顶尖人才投奔
量子位
关注前沿科技量子位公司名字没有,产品方向未定。OpenAI前CTO创业几个月,却已经有10位顶尖研究员和工程师投奔。且分别来自OpenAI、谷歌、Anthropic这几个巨头。其中包括OpenAI特别项目负责人JonathanLachman。随后,OpenAI发言人也证实了Lachman的离职。去年九月,Mira离开OpenAI被曝AGI创业,一个月后就吸金超1亿美元。不过目前,该公司仍处于非常早
涛思数据荣登“2024 胡润全球猎豹企业榜”
涛思数据(TDengine)
涛思数据 大数据
近日,胡润百富在广州南沙举办了“2024胡润全球猎豹企业大会”,正式发布《2024胡润全球猎豹企业榜》。这份榜单汇聚了全球成立于2000年之后、未来五年内最有可能达到十亿美元独角兽级估值的高成长企业。作为全球创业企业发展的风向标,“胡润全球猎豹企业榜”反映了各行业的创新力量和未来潜力。今年,全球共有928家企业上榜,中国以304家企业位居榜单第二,仅次于美国的359家。榜单显示,这些“猎豹企业”平
勇气的力量:敢于迈出第一步
css
很多时候,我们因为缺乏勇气而错过很多机会。比如有人想要学习一门新技能,但因为害怕失败而不敢迈出第一步。然而,当我们鼓起勇气开始学习时,就会发现其实并没有想象中的那么困难。有一位年轻人想要创业,他担心资金不足、市场竞争等问题而不敢行动。在经过一段时间的思想斗争后,他终于鼓起勇气开始创业。虽然过程中遇到了一些困难,但他的勇气让他不断克服困难前行。勇气能让我们勇敢地去追求自己的梦想,创造属于自己的生活。
冬天短期的暴利小生意有哪些?那些小生意适合新手做?
一起高省
短期生意不失为创业的一个商机,不过短期生意的商机是转瞬即逝的,而且这类生意也很难作为长期的生意去做,那冬天短期暴利小生意查看更多关于短期暴利小生意的文章有哪些呢?给大家先推荐一个2023年风口项目吧,真很不错的项目,全程零投资,当做副业来做真的很稳定,不管你什么阶层的人,或多或少都网购吧?你们知道网购是可以拿提成,拿返利,拿分佣的吗?你们知道很多优惠券群里面,天天群主和管理发一些商品吗?他们其实在
教育
用心灵温暖心灵
@陈春丽长期学习班冯倩。今天一早就听到说高职合并,取消中专教育的教育信息。感觉是虽然知道,再听还是吓一跳。国家重视职业教育为何还要取消中专技术学校的教育?再听高中就要进行技术教育了,一部分人学习好继续努力学习考大学,一部分人在高中就可以进行职业教育接受职业教育了还要中专技术教育学校干什么呢!a有些职业教育学校转型升级快,不是孩子上完给找工作,而是学校帮孩子创业,我觉得是不错的方向!新闻新你得实时更
钟表可以回到起点却已不是昨天
凉小夏
人生的路很长,但是我们只能前进不能后退就像钟表,可以回到起点,却已时过境迁,永远也找不到那个过去的昨天。因我们总是会对过去有着很多留恋不舍和怀念,会时常回头看看走过的脚印,时常想起过去的美好时光,时常想到那些悲伤和不如意。今天的到来时钟不可阻止,历史的记录,原人生最宝贵的不是金钱,不是地位,而是时间。拥有时间就等于拥有一切,因为拥有时间,我们不怕囊中羞涩,因为拥有时间我们不惮创业无门,因为拥有时间
为什么你总是对下属不满意?
ZhaoWu1050
【ZhaoWu的听课笔记】大多数公司,都存在两种问题。我创业四年,更是体会深切。这两种问题就是:老板经常不满意下属的表现;下属总是不知道老板想要什么;虽然这两种问题普遍存在,其实解决方法并不复杂。这节课,我们再聊聊第一个问题:为什么老板经常不满意下属表现?其实,这背后也是一条管理常识。管理学家德鲁克先生早就说过:管理者的任务,不是去改变人。*来自《卓有成效的管理者》只是大多数老板和我一样,都是一边
《相面天师》第二百七十章 血书
先峰老师
跟着儿子进到房间后,李云峰不满的说道:“宋老年龄都那么大了,我说你小子就不会好好和别人说话?”就是不冲着老爷子的财富地位,那年龄也值得年轻人尊重的啊,知道李尚鸿秉性的人不会说什么,但不知道的还以为老李家没家教呢。“爸,想让人尊敬,可不是件容易的事,那老头创业之初,手上没少沾血,我凭什么尊重他啊?”李尚鸿撇了撇嘴,他虽然不知道宋世豪的发家史,但是从宋世豪早年的面相中能看得出来,这老头也不是个善茬。只
2019 上海原创女装工作室创业一年 感悟 焦虑中带有恐慌感
女装设计师茜公子__
时间过的太快,跟不上脚步,真不想虚度光阴,2019开春立下的FLAG,至今一条没实现!想去✈️,每每看到世界那么大,也想去看看。就像是在诉说着我的心声,再看看日益缩水的钱袋,恨自己能力有限……想去的地方太多,被现实绊住脚步,要先生存立足,才能有所谓的诗和远方……我是80的尾巴,2018年6月果断辞了工作近8年的公司,当时也是思想斗争长达几个月,断了自己的后路,当时就想再工作几年又能怎么样?锁住了自
7月结束了
摸不着的小鱼
这日子快得让人看不见、摸不着,也是真的太快了点吧!一眨眼我已经辞去第二份工作两个多月了!在这两个月里真的是做了好多好多事,有自己小试牛刀的“创业”,也有辛酸在家带娃的三个周……时间带不走的永远看不见,时间能带走的都是我们所见所闻的东西……前一个月感觉都是在荒废时间吧,也没有找到自己的定位,一次又一次的更替和改变,我越发觉得自己不清楚自己所要的东西是什么了?后面一个多月的时间里就是磨练耐心了,全程带
129/365 给宝贝的第23封信:《道德经》第四章:道冲
珍珠能量站
亲爱的宝贝:今天周六,我在外学习,听几位创业讲师讲授创业的相关知识,一天共4个老师讲解了7个小时。之前线上培训了40个小时,听了这么多,我还是觉得只是窥见皮毛。可见任何一个领域,都可以深入下去,有无穷无尽的细节值得研究。但是任何一件事,也可以用一句话总结。比如“道可道,非常道”创业,我理解的核心是:创立一个业务,通过调配资源,满足用户的需要。至于创立什么样的业务?调配哪些资源?满足用户什么需要?如
靠写文章能赚钱么 如何通过写作赚钱 写文章怎么赚钱
优惠券高省
如何通过写作赚钱?最近这段时间,在网上搜兼职的时候,我发现很多人不在谈做自媒体赚钱,为什么呢?我想是普通人想做,根本不能赚钱!了解过写作的人,应该很多人都能看到网上各种各样的推文,什么“月入三千的我是怎么靠写作月入三万的?”,还有“一个公众号,月入几万,靠的是啥?”等等一系列写作相关的文章。给大家推荐一个适合任何人可做的线上副业项目,属于0投资创业项目,使用智能手机就可以做,兼职专职都可以,这个软
[黑洞与暗粒子]没有光的世界
comsci
无论是相对论还是其它现代物理学,都显然有个缺陷,那就是必须有光才能够计算
但是,我相信,在我们的世界和宇宙平面中,肯定存在没有光的世界....
那么,在没有光的世界,光子和其它粒子的规律无法被应用和考察,那么以光速为核心的
&nbs
jQuery Lazy Load 图片延迟加载
aijuans
jquery
基于 jQuery 的图片延迟加载插件,在用户滚动页面到图片之后才进行加载。
对于有较多的图片的网页,使用图片延迟加载,能有效的提高页面加载速度。
版本:
jQuery v1.4.4+
jQuery Lazy Load v1.7.2
注意事项:
需要真正实现图片延迟加载,必须将真实图片地址写在 data-original 属性中。若 src
使用Jodd的优点
Kai_Ge
jodd
1. 简化和统一 controller ,抛弃 extends SimpleFormController ,统一使用 implements Controller 的方式。
2. 简化 JSP 页面的 bind, 不需要一个字段一个字段的绑定。
3. 对 bean 没有任何要求,可以使用任意的 bean 做为 formBean。
使用方法简介
jpa Query转hibernate Query
120153216
Hibernate
public List<Map> getMapList(String hql,
Map map) {
org.hibernate.Query jpaQuery = entityManager.createQuery(hql);
if (null != map) {
for (String parameter : map.keySet()) {
jp
Django_Python3添加MySQL/MariaDB支持
2002wmj
mariaDB
现状
首先,
[email protected] 中默认的引擎为 django.db.backends.mysql 。但是在Python3中如果这样写的话,会发现 django.db.backends.mysql 依赖 MySQLdb[5] ,而 MySQLdb 又不兼容 Python3 于是要找一种新的方式来继续使用MySQL。 MySQL官方的方案
首先据MySQL文档[3]说,自从MySQL
在SQLSERVER中查找消耗IO最多的SQL
357029540
SQL Server
返回做IO数目最多的50条语句以及它们的执行计划。
select top 50
(total_logical_reads/execution_count) as avg_logical_reads,
(total_logical_writes/execution_count) as avg_logical_writes,
(tot
spring UnChecked 异常 官方定义!
7454103
spring
如果你接触过spring的 事物管理!那么你必须明白 spring的 非捕获异常! 即 unchecked 异常! 因为 spring 默认这类异常事物自动回滚!!
public static boolean isCheckedException(Throwable ex)
{
return !(ex instanceof RuntimeExcep
mongoDB 入门指南、示例
adminjun
java mongodb 操作
一、准备工作
1、 下载mongoDB
下载地址:http://www.mongodb.org/downloads
选择合适你的版本
相关文档:http://www.mongodb.org/display/DOCS/Tutorial
2、 安装mongoDB
A、 不解压模式:
将下载下来的mongoDB-xxx.zip打开,找到bin目录,运行mongod.exe就可以启动服务,默
CUDA 5 Release Candidate Now Available
aijuans
CUDA
The CUDA 5 Release Candidate is now available at http://developer.nvidia.com/<wbr></wbr>cuda/cuda-pre-production. Now applicable to a broader set of algorithms, CUDA 5 has advanced fe
Essential Studio for WinRT网格控件测评
Axiba
JavaScript html5
Essential Studio for WinRT界面控件包含了商业平板应用程序开发中所需的所有控件,如市场上运行速度最快的grid 和chart、地图、RDL报表查看器、丰富的文本查看器及图表等等。同时,该控件还包含了一组独特的库,用于从WinRT应用程序中生成Excel、Word以及PDF格式的文件。此文将对其另外一个强大的控件——网格控件进行专门的测评详述。
网格控件功能
1、
java 获取windows系统安装的证书或证书链
bewithme
windows
有时需要获取windows系统安装的证书或证书链,比如说你要通过证书来创建java的密钥库 。
有关证书链的解释可以查看此处 。
public static void main(String[] args) {
SunMSCAPI providerMSCAPI = new SunMSCAPI();
S
NoSQL数据库之Redis数据库管理(set类型和zset类型)
bijian1013
redis 数据库 NoSQL
4.sets类型
Set是集合,它是string类型的无序集合。set是通过hash table实现的,添加、删除和查找的复杂度都是O(1)。对集合我们可以取并集、交集、差集。通过这些操作我们可以实现sns中的好友推荐和blog的tag功能。
sadd:向名称为key的set中添加元
异常捕获何时用Exception,何时用Throwable
bingyingao
用Exception的情况
try {
//可能发生空指针、数组溢出等异常
} catch (Exception e) {
 
【Kafka四】Kakfa伪分布式安装
bit1129
kafka
在http://bit1129.iteye.com/blog/2174791一文中,实现了单Kafka服务器的安装,在Kafka中,每个Kafka服务器称为一个broker。本文简单介绍下,在单机环境下Kafka的伪分布式安装和测试验证 1. 安装步骤
Kafka伪分布式安装的思路跟Zookeeper的伪分布式安装思路完全一样,不过比Zookeeper稍微简单些(不
Project Euler
bookjovi
haskell
Project Euler是个数学问题求解网站,网站设计的很有意思,有很多problem,在未提交正确答案前不能查看problem的overview,也不能查看关于problem的discussion thread,只能看到现在problem已经被多少人解决了,人数越多往往代表问题越容易。
看看problem 1吧:
Add all the natural num
Java-Collections Framework学习与总结-ArrayDeque
BrokenDreams
Collections
表、栈和队列是三种基本的数据结构,前面总结的ArrayList和LinkedList可以作为任意一种数据结构来使用,当然由于实现方式的不同,操作的效率也会不同。
这篇要看一下java.util.ArrayDeque。从命名上看
读《研磨设计模式》-代码笔记-装饰模式-Decorator
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.Fi
Maven学习(一)
chenyu19891124
Maven私服
学习一门技术和工具总得花费一段时间,5月底6月初自己学习了一些工具,maven+Hudson+nexus的搭建,对于maven以前只是听说,顺便再自己的电脑上搭建了一个maven环境,但是完全不了解maven这一强大的构建工具,还有ant也是一个构建工具,但ant就没有maven那么的简单方便,其实简单点说maven是一个运用命令行就能完成构建,测试,打包,发布一系列功
[原创]JWFD工作流引擎设计----节点匹配搜索算法(用于初步解决条件异步汇聚问题) 补充
comsci
算法 工作 PHP 搜索引擎 嵌入式
本文主要介绍在JWFD工作流引擎设计中遇到的一个实际问题的解决方案,请参考我的博文"带条件选择的并行汇聚路由问题"中图例A2描述的情况(http://comsci.iteye.com/blog/339756),我现在把我对图例A2的一个解决方案公布出来,请大家多指点
节点匹配搜索算法(用于解决标准对称流程图条件汇聚点运行控制参数的算法)
需要解决的问题:已知分支
Linux中用shell获取昨天、明天或多天前的日期
daizj
linux shell 上几年 昨天 获取上几个月
在Linux中可以通过date命令获取昨天、明天、上个月、下个月、上一年和下一年
# 获取昨天
date -d 'yesterday' # 或 date -d 'last day'
# 获取明天
date -d 'tomorrow' # 或 date -d 'next day'
# 获取上个月
date -d 'last month'
#
我所理解的云计算
dongwei_6688
云计算
在刚开始接触到一个概念时,人们往往都会去探寻这个概念的含义,以达到对其有一个感性的认知,在Wikipedia上关于“云计算”是这么定义的,它说:
Cloud computing is a phrase used to describe a variety of computing co
YII CMenu配置
dcj3sjt126com
yii
Adding id and class names to CMenu
We use the id and htmlOptions to accomplish this. Watch.
//in your view
$this->widget('zii.widgets.CMenu', array(
'id'=>'myMenu',
'items'=>$this-&g
设计模式之静态代理与动态代理
come_for_dream
设计模式
静态代理与动态代理
代理模式是java开发中用到的相对比较多的设计模式,其中的思想就是主业务和相关业务分离。所谓的代理设计就是指由一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理。比如我们在进行删除操作的时候需要检验一下用户是否登陆,我们可以删除看成主业务,而把检验用户是否登陆看成其相关业务
【转】理解Javascript 系列
gcc2ge
JavaScript
理解Javascript_13_执行模型详解
摘要: 在《理解Javascript_12_执行模型浅析》一文中,我们初步的了解了执行上下文与作用域的概念,那么这一篇将深入分析执行上下文的构建过程,了解执行上下文、函数对象、作用域三者之间的关系。函数执行环境简单的代码:当调用say方法时,第一步是创建其执行环境,在创建执行环境的过程中,会按照定义的先后顺序完成一系列操作:1.首先会创建一个
Subsets II
hcx2013
set
Given a collection of integers that might contain duplicates, nums, return all possible subsets.
Note:
Elements in a subset must be in non-descending order.
The solution set must not conta
Spring4.1新特性——Spring缓存框架增强
jinnianshilongnian
spring4
目录
Spring4.1新特性——综述
Spring4.1新特性——Spring核心部分及其他
Spring4.1新特性——Spring缓存框架增强
Spring4.1新特性——异步调用和事件机制的异常处理
Spring4.1新特性——数据库集成测试脚本初始化
Spring4.1新特性——Spring MVC增强
Spring4.1新特性——页面自动化测试框架Spring MVC T
shell嵌套expect执行命令
liyonghui160com
一直都想把expect的操作写到bash脚本里,这样就不用我再写两个脚本来执行了,搞了一下午终于有点小成就,给大家看看吧.
系统:centos 5.x
1.先安装expect
yum -y install expect
2.脚本内容:
cat auto_svn.sh
#!/bin/bash
Linux实用命令整理
pda158
linux
0. 基本命令 linux 基本命令整理
1. 压缩 解压 tar -zcvf a.tar.gz a #把a压缩成a.tar.gz tar -zxvf a.tar.gz #把a.tar.gz解压成a
2. vim小结 2.1 vim替换 :m,ns/word_1/word_2/gc  
独立开发人员通向成功的29个小贴士
shoothao
独立开发
概述:本文收集了关于独立开发人员通向成功需要注意的一些东西,对于具体的每个贴士的注解有兴趣的朋友可以查看下面标注的原文地址。
明白你从事独立开发的原因和目的。
保持坚持制定计划的好习惯。
万事开头难,第一份订单是关键。
培养多元化业务技能。
提供卓越的服务和品质。
谨小慎微。
营销是必备技能。
学会组织,有条理的工作才是最有效率的。
“独立
JAVA中堆栈和内存分配原理
uule
java
1、栈、堆
1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)3. 堆:存放所有new出来的对象。4. 静态域:存放静态成员(static定义的)5. 常量池:存放字符串常量和基本类型常量(public static f