React 之元素与组件的区别

从问题出发

我被问过这样一个问题:

想要实现一个 useTitle 方法,具体使用示例如下:

function Header() {
    const [Title, changeTitle] = useTitle();
    return (
        
changeTitle('new title')}> </div> ) }</code></pre> <p>但在编写 <code>useTitle</code> 代码的时候却出了问题:</p> <pre><code class="javascript">function TitleComponent({title}) { return <div>{title}</div> } function useTitle() { const [title, changeTitle] = useState('default title'); const Element = React.createElement(TitleComponent, {title}); return [Element.type, changeTitle]; }</code></pre> <p>这段代码直接报错,连渲染都渲染不出来,如果是你,该如何修改这段代码呢?</p> <h2>元素与组件</h2> <p>其实这就是一个很典型的元素与组件如何区分和使用的问题。</p> <h3>元素</h3> <p>我们先看 React <a href="https://link.segmentfault.com/?enc=AGzvd9pLlVGAtzvisefR3Q%3D%3D.ddCtX0KTXOD4KL2AYG3sVI94j8sG6dzNlISh5rg3C%2F72TiyS0qG41obme%2FRM5baMPZejn6l%2Fg2vZxdj0ftNvMw%3D%3D" rel="nofollow">官方文档中对 React 元素的介绍</a>:</p> <p>Babel 会把 JSX 转译成一个名为 <code>React.createElement()</code> 函数调用。以下两种示例代码完全等效:</p> <pre><code class="javascript">const element = <h1 className="greeting">Hello, world!</h1>; const element = React.createElement( 'h1', {className: 'greeting'}, 'Hello, world!' );</code></pre> <p><code>React.createElement()</code> 会预先执行一些检查,以帮助你编写无错代码,但实际上它创建了一个这样的对象:</p> <pre><code class="javascript">// 注意:这是简化过的结构 const element = { type: 'h1', props: { className: 'greeting', children: 'Hello, world!' } };</code></pre> <p>这些对象被称为 “React 元素”。它们描述了你希望在屏幕上看到的内容。</p> <p>你看,React 元素其实就是指我们日常编写的 JSX 代码,它会被 Babel 转义为一个函数调用,最终得到的结果是一个描述 DOM 结构的对象,它的数据结构本质是一个 JS 对象。</p> <p>在 JSX 中,我们是可以嵌入表达式的,就比如:</p> <pre><code class="javascript">const name = 'Josh Perez'; const element = <h1>Hello, {name}</h1>;</code></pre> <p>所以如果我们要使用一个 React 元素,那我们应该使用嵌入表达式这种方式:</p> <pre><code class="javascript">const name = <span>Josh Perez</span>; const element = <h1>Hello, {name}</h1>;</code></pre> <h3>组件</h3> <p>那组件呢?组件有两种,函数组件和 class 组件:</p> <pre><code class="javascript">// 函数组件 function Welcome(props) { return <h1>Hello, {props.name}</h1>; } // class 组件 class Welcome extends React.Component { render() { return <h1>Hello, {this.props.name}</h1>; } }</code></pre> <p>那如何使用组件呢?</p> <pre><code class="javascript">const element = <Welcome name="Sara" />;</code></pre> <p>对于组件,我们要使用类似于 HTML 标签的方式进行调用,Babel 会将其转译为一个函数调用</p> <pre><code class="javascript">const element = React.createElement(Welcome, { name: "Sara" });</code></pre> <p>所以你看,组件的数据结构本质是一个函数或者类,当你使用元素标签的方式进行调用时,函数或者类会被执行,最终返回一个 React 元素。</p> <h2>问题如何解决</h2> <p>尽管这些内容都来自于 React 官方文档,但如果你能清晰的了解到 React 元素和组件的差别,你已经可以解决开头的问题了。至少有两种方式可以解决,一种是返回 React 元素,一种是返回 React 组件</p> <p>第一种我们返回 React 元素:</p> <pre><code class="javascript">const root = ReactDOM.createRoot(document.getElementById('root')); function Header() { const [Title, changeTitle] = useTitle(); // 这里因为返回的是 React 元素,所以我们使用 {} 的方式嵌入表达式 return ( <div onClick={() => changeTitle('new title')}> {Title} </div> ) } function TitleComponent({title}) { return <div>{title}</div> } function useTitle() { const [title, changeTitle] = useState('default title'); // createElement 返回的是 React 元素 const Element = React.createElement(TitleComponent, {title}); return [Element, changeTitle]; } root.render(<Header />);</code></pre> <p>第二种我们返回 React 组件:</p> <pre><code class="javascript"> const root = ReactDOM.createRoot(document.getElementById('root')); function Header() { const [Title, changeTitle] = useTitle(); // 因为返回的是 React 组件,所以我们使用元素标签的方式调用 return ( <div onClick={() => changeTitle('new title')}> <Title /> </div> ) } function TitleComponent({title}) { return <div>{title}</div> } function useTitle() { const [title, changeTitle] = useState('default title'); // 这里我们构建了一个函数组件 const returnComponent = () => { return <TitleComponent title={title} /> } // 这里我们直接将组件返回出去 return [returnComponent, changeTitle]; } root.render(<Header />);</code></pre> <h2>自定义内容</h2> <p>有的时候我们需要给组件传入一个自定义内容。</p> <p>举个例子,我们实现了一个 Modal 组件,有确定按钮,有取消按钮,但 Modal 展示的内容为了更加灵活,我们提供了一个 props 属性,用户可以自定义一个组件传入其中,用户提供什么,Modal 就展示什么,Modal 相当于一个容器,那么,我们该怎么实现这个功能呢?</p> <h3>第一种实现方式</h3> <p>以下是第一种实现方式:</p> <pre><code class="jsx">function Modal({content}) { return ( <div> {content} <button>确定</button> <button>取消</button> </div> ) } function CustomContent({text}) { return <div>{text}</div> } <Modal content={<CustomContent text="content" />} /></code></pre> <p>根据前面的知识,我们可以知道,<code>content</code> 属性这里传入的其实是一个 React 元素,所以 Modal 组件的内部是用 <code>{}</code> 进行渲染。</p> <h3>第二种实现方式</h3> <p>但第一种方式,并不总能解决需求。有的时候,我们可能会用到组件内部的值。</p> <p>就比如一个倒计时组件 <code>Timer</code>,依然提供了一个属性 <code>content</code>,用于自定义时间的展示样式,时间由 <code>Timer</code> 组件内部处理,展示样式则完全由用户自定义,在这种时候,我们就可以选择传入一个组件:</p> <pre><code class="javascript">function Timer({content: Content}) { const [time, changeTime] = useState('0'); useEffect(() => { setTimeout(() => { changeTime((new Date).toLocaleTimeString()) }, 1000) }, [time]) return ( <div> <Content time={time} /> </div> ) } function CustomContent({time}) { return <div style={{border: '1px solid #ccc'}}>{time}</div> } <Timer content={CustomContent} /></code></pre> <p>在这个示例中,我们可以看到 <code>content</code> 属性传入的是一个 React 组件 CustomContent,而 CustomContent 组件会被传入 time 属性,我们正是基于这个约定进行的 CustomContent 组件的开发。</p> <p>而 Timer 组件内部,因为传入的是组件,所以使用的是 <code><Content time={time}/></code>进行的渲染。</p> <h3>第三种实现方式</h3> <p>在面对第二种实现方式的需求时,除了上面这种实现方式,还有一种称为 <code>render props</code> 的技巧,比第二种方式更常见一些,我们依然以 Timer 组件为例:</p> <pre><code class="javascript">function Timer({renderContent}) { const [time, changeTime] = useState('0'); useEffect(() => { setTimeout(() => { changeTime((new Date).toLocaleTimeString()) }, 1000) }, [time]) // 这里直接调用传入的 renderContent 函数 return ( <div> {renderContent(time)} </div> ) } function CustomContent({time}) { return <div style={{border: '1px solid #ccc'}}>{time}</div> } root.render(<Timer renderContent={(time) => { return <CustomContent time={time} /> }} />);</code></pre> <p>鉴于我们传入的是一个函数,我们把 <code>content</code> 属性名改为了 <code>renderContent</code>,其实叫什么都可以。</p> <p><code>renderContent</code> 传入了一个函数,该函数接收 <code>time</code> 作为参数,返回一个 React 元素,而在 <code>Timer</code> 内部,我们直接执行了 renderContent 函数,并传入内部处理好的 time 参数,由此实现了用户使用组件内部值自定义渲染内容。</p> <p>多说一句,除了放到属性里,我们也可以放到 children 里,是一样的:</p> <pre><code class="javascript">function Timer({children}) { // ... return ( <div> {children(time)} </div> ) } <Timer> {(time) => { return <CustomContent time={time} /> }} </Timer></code></pre> <p>我们可以视情况选择合适的传入方法。</p> <h2>React 系列</h2> <p>讲解 React 源码、React API 背后的实现机制,React 最佳实践、React 的发展与历史等,预计 50 篇左右,欢迎关注</p> <p>如果喜欢或者有所启发,欢迎 star,对作者也是一种鼓励。</p> </article> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1598890545474732032"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(React 之元素与组件的区别)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1882615968442675200.htm" title="贪心算法" target="_blank">贪心算法</a> <span class="text-muted">DeeGLMath</span> <a class="tag" taget="_blank" href="/search/ACM%E7%AE%97%E6%B3%95/1.htm">ACM算法</a><a class="tag" taget="_blank" href="/search/%E8%B4%AA%E5%BF%83%E7%AE%97%E6%B3%95/1.htm">贪心算法</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>文章目录贪心算法及练习题1.爱与愁的心痛2.凌乱的yyy/线段覆盖3.[NOIP2004提高组]合并果子/[USACO06NOV]FenceRepairG4.[NOIP2010普及组]接水问题5.[THUPC2017]玩游戏6.考验7.[JOI2020Final]JJOOII2贪心算法及练习题简介:贪心算法(英语:greedyalgorithm),是用计算机来模拟一个“贪心”的人做出决策的过程。这</div> </li> <li><a href="/article/1882615715798773760.htm" title="Vue2.0——组件动态加载 <keep-alive>" target="_blank">Vue2.0——组件动态加载 <keep-alive></a> <span class="text-muted">致可乐</span> <a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>文章目录一、动态切换组件1.使用组件标签component的is属性来动态切换组件2.使用keep-alive缓存之前的状态一、动态切换组件1.使用组件标签component的is属性来动态切换组件Keep.vue:在它里面挂载两个页面组件keepOne,keepTwokeepOnekeepTwo<</div> </li> <li><a href="/article/1882612566291705856.htm" title="js第一次笔记" target="_blank">js第一次笔记</a> <span class="text-muted">chen_zhi_yu</span> <a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>JavaScript显示方案JavaScript能够以不同方式“显示”数据:使用window.alert()写入警告框使用document.write()写入HTML输出使用innerHTML写入HTML元素使用console.log()写入浏览器控制台JavaScript关键词JavaScript语句常常通过某个关键词来标识需要执行的JavaScript动作。下面的表格列出了一部分将在教程中学到</div> </li> <li><a href="/article/1882611933937463296.htm" title="深入浅出之注意力机制(YOLO)" target="_blank">深入浅出之注意力机制(YOLO)</a> <span class="text-muted">浩瀚之水_csdn</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/1.htm">深度学习基础知识</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B/1.htm">深度学习目标检测</a><a class="tag" taget="_blank" href="/search/YOLO%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B%E4%B8%93%E6%A0%8F/1.htm">YOLO目标检测专栏</a><a class="tag" taget="_blank" href="/search/YOLO/1.htm">YOLO</a> <div>一、基本概念注意力机制(AttentionMechanism)源于对人类视觉的研究。在认知科学中,由于信息处理的瓶颈,人类会选择性地关注所有信息的一部分,同时忽略其他可见的信息,这种机制被称为注意力机制。它主要有两个方面:一是决定需要关注输入的哪部分,二是分配有限的信息处理资源给重要的部分。该机制可以应用于任何类型的输入,而不管其形状如何。在计算能力有限的情况下,注意力机制是解决信息超载问题的主要</div> </li> <li><a href="/article/1882608025185873920.htm" title="Android Service 启动流程" target="_blank">Android Service 启动流程</a> <span class="text-muted">&岁月不待人&</span> <a class="tag" taget="_blank" href="/search/Android/1.htm">Android</a><a class="tag" taget="_blank" href="/search/%E6%96%B0%E8%AE%A4%E7%9F%A5/1.htm">新认知</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>在早些年学习Android的时候,对Service有过总结,但是主要是如何去使用,注意事项,startService和bindService的区别。AndroidService_publicintonstartcommand(intentintent,intflags-CSDN博客但是今天从源码来总结下framework层的启动流程大致是什么样的。一、startService()平时,在我们的ac</div> </li> <li><a href="/article/1882608025735327744.htm" title="pandas介绍" target="_blank">pandas介绍</a> <span class="text-muted">June �</span> <a class="tag" taget="_blank" href="/search/%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">可视化</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a> <div>本文的主要内容是基于中国大学mooc(慕课)中的“Python数据分析与可视化”课程进行整理和总结。pandas是python第三方库,是基于Numpy的一种工具,经常与numpy与matplotlib一起使用,该工具是为了解决数据分析任务而创建的。Pandas纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。它是</div> </li> <li><a href="/article/1882606636225327104.htm" title="探索React前端框架:JavaScript技巧与最佳实践" target="_blank">探索React前端框架:JavaScript技巧与最佳实践</a> <span class="text-muted">自由翱翔碧海蓝</span> <a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/react.js/1.htm">react.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E6%A1%86%E6%9E%B6/1.htm">前端框架</a><a class="tag" taget="_blank" href="/search/js/1.htm">js</a> <div>React是一个广泛使用的JavaScript前端框架,它提供了一种组件化的开发模式,使得构建交互式用户界面变得更加简单和高效。在本文中,我们将深入探讨React框架的一些关键技巧和最佳实践,同时提供相应的源代码示例。合理使用函数组件和类组件React提供了两种主要的组件类型:函数组件和类组件。函数组件是纯粹的JavaScript函数,而类组件则是通过继承React.Component类创建的。在</div> </li> <li><a href="/article/1882606384072159232.htm" title="2025.1.22笔记map/multimap" target="_blank">2025.1.22笔记map/multimap</a> <span class="text-muted">zzzzzjy_123</span> <a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>2025.1.22笔记map/multimap一.map的定义1.头文件#include2.定义map;3.对组容器pairpair可以存储两个元素,也被称作“对组”pair主要的两个成员变量是first和second,first和second可以是任意类型,也可以是自定义的struct类型1.定义pairp;2.函数列表first()访问对组的第一个元素。secend()访问对组的第二个元素。m</div> </li> <li><a href="/article/1882605879707103232.htm" title="ESPIDF开发ESP32学习笔记【经典蓝牙与BLE】_esp32蓝牙串口库是经典蓝牙还是ble蓝牙" target="_blank">ESPIDF开发ESP32学习笔记【经典蓝牙与BLE】_esp32蓝牙串口库是经典蓝牙还是ble蓝牙</a> <span class="text-muted">2401_87556590</span> <a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>泛指支持蓝牙协议在4.0以下的模块,一般用于数据量比较大的传输。经典蓝牙模块可再细分为:传统蓝牙模块和高速蓝牙模块。传统蓝牙模块在2004年推出,主要代表是支持蓝牙2.1协议的模块,在智能手机爆发的时期得到广泛支持。高速蓝牙模块在2009年推出,速率提高到约24Mbps,是传统蓝牙模块的八倍。低功耗蓝牙模块(BLE)指支持蓝牙协议4.0或更高的模块,也称为BLE模块(BluetoothLowEne</div> </li> <li><a href="/article/1882603863119294464.htm" title="15 分布式锁和分布式session" target="_blank">15 分布式锁和分布式session</a> <span class="text-muted">40岁的系统架构师</span> <a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a><a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/1.htm">系统架构</a> <div>在java中一个进程里面使用synchronized在new出来对象头信息中加锁,如果是静态方法中在加载的类信息中加锁(我们在锁的原理中讲过)。如果使用lock加锁可以自己指定。这些都是在同一个进程空间中的操作。如果在分布式环境中由于程序不在一个进程空间,就没办法使用这些原子性的元素中加锁,我们需要在不同的进程空间中找原子性的元素。这就是分布式锁基于数据库的分布式锁该方式通过数据库的唯一索引来实现</div> </li> <li><a href="/article/1882602855412592640.htm" title="【分布式日志篇】从工具选型到实战部署:全面解析日志采集与管理路径" target="_blank">【分布式日志篇】从工具选型到实战部署:全面解析日志采集与管理路径</a> <span class="text-muted">网罗开发</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E5%AE%9E%E6%88%98/1.htm">实战</a><a class="tag" taget="_blank" href="/search/java%E9%9B%86/1.htm">java集</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a> <div>网罗开发(小红书、快手、视频号同名)  大家好,我是展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、HarmonyOS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。图书作者:《ESP32-C3物联网工程开发实战》图书作者:《SwiftUI入门,进阶与实战》超级个体:CO</div> </li> <li><a href="/article/1882602351513104384.htm" title="分布式与微服务:构建现代应用的关键架构" target="_blank">分布式与微服务:构建现代应用的关键架构</a> <span class="text-muted">喜欢猪猪</span> <a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>一、背景知识(一)计算机系统架构的演变在计算机发展的早期阶段,大多数系统是单机架构,即所有的应用程序、数据存储和处理都在一台计算机上完成。然而,随着业务需求的增长和用户数量的不断攀升,单机系统面临着诸多挑战,如性能瓶颈、资源限制以及可靠性问题。为了应对这些挑战,分布式系统应运而生。分布式系统将应用程序和数据分散到多个计算机节点上,通过网络连接进行协作,共同完成任务。(二)微服务的兴起微服务架构是在</div> </li> <li><a href="/article/1882601343256948736.htm" title="<keep-alive> <component ></component> </keep-alive>缓存的组件实现组件,实现组件切换时每次都执行指定方法" target="_blank"><keep-alive> <component ></component> </keep-alive>缓存的组件实现组件,实现组件切换时每次都执行指定方法</a> <span class="text-muted">柠檬花开_</span> <a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98/1.htm">缓存</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/active/1.htm">active</a><a class="tag" taget="_blank" href="/search/component/1.htm">component</a> <div>缓存的组件实现组件切换时子组件每次都执行指定的方法//父组件data(){return{currentRouter:''}}components:{//计算维度CalculationDimension:()=>import('../procurementPlanConfig/calculationDimension.vue'),//价格损失配置PriceLossSetting:()=>import</div> </li> <li><a href="/article/1882600586130550784.htm" title="搭建springcloud脚手架" target="_blank">搭建springcloud脚手架</a> <span class="text-muted">zzyh123456</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/cloud/1.htm">cloud</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>搭建SpringCloud脚手架通常意味着创建一个包含多个SpringBoot项目(作为微服务)以及必要的SpringCloud组件(如服务注册与发现、配置中心、API网关等)的基础框架,以便快速启动和扩展微服务架构的应用。以下是一个简化的步骤,用于搭建SpringCloud脚手架:1.环境准备确保你的开发环境已经安装了JDK、Maven(或Gradle)、以及一个IDE(如IntelliJIDE</div> </li> <li><a href="/article/1882599955357560832.htm" title="如何理解Linux的根目录?与widows系统盘有何区别?" target="_blank">如何理解Linux的根目录?与widows系统盘有何区别?</a> <span class="text-muted">学堂在线</span> <a class="tag" taget="_blank" href="/search/Linux%E7%B3%BB%E7%BB%9F/1.htm">Linux系统</a><a class="tag" taget="_blank" href="/search/windows%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/1.htm">windows操作系统</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a> <div>文章目录Linux根目录1.Linux根目录的理解2.根目录空间大小限制Linux根目录与Windows系统盘(通常指C盘)对比:1.目录结构和组织方式2.文件系统特点3.系统启动和运行机制4.空间管理方式Linux根目录`1.Linux根目录的理解定义:在Linux系统中,根目录(用符号“/”表示)是整个文件系统的最顶层目录。它是所有其他目录和文件的起点。就像一棵大树的树根一样,所有的分支(其他</div> </li> <li><a href="/article/1882599828991569920.htm" title="驾驭MySQL性能优化利器:八大工具助您告别低效SQL" target="_blank">驾驭MySQL性能优化利器:八大工具助您告别低效SQL</a> <span class="text-muted">墨瑾轩</span> <a class="tag" taget="_blank" href="/search/%E4%B8%80%E8%B5%B7%E5%AD%A6%E5%AD%A6%E6%95%B0%E6%8D%AE%E5%BA%93%E3%80%90%E4%B8%80%E3%80%91/1.htm">一起学学数据库【一】</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a> <div>已列出工具的使用说明:1.mysqltuner.pl安装与使用:下载最新版本的mysqltuner.pl脚本(通常通过wget或curl命令获取)。为脚本赋予执行权限(chmod+xmysqltuner.pl)。运行脚本,提供MySQL服务器的用户名、密码以及端口号(如有必要)。示例:Code./mysqltuner.pl--user=root--password=your_password--h</div> </li> <li><a href="/article/1882599576830013440.htm" title="[Vue]防止路由重复跳转" target="_blank">[Vue]防止路由重复跳转</a> <span class="text-muted">July twelve</span> <a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>[Vue]防止路由重复跳转//获取当前路由的原始路径(包括重定向的处理)constcurrentPath=this.$route.redirectedFrom||this.$route.path;//判断目标路径是否与当前路径相同if(currentPath!==item.url){this.$router.push({path:item.url});}else{console.log('目标页面</div> </li> <li><a href="/article/1882598821247119360.htm" title="【Flink 实战系列】Flink CDC 实时同步 Mysql 全量加增量数据到 Hudi" target="_blank">【Flink 实战系列】Flink CDC 实时同步 Mysql 全量加增量数据到 Hudi</a> <span class="text-muted">JasonLee实时计算</span> <a class="tag" taget="_blank" href="/search/Flink/1.htm">Flink</a><a class="tag" taget="_blank" href="/search/%E5%AE%9E%E6%88%98%E7%B3%BB%E5%88%97/1.htm">实战系列</a><a class="tag" taget="_blank" href="/search/hbase/1.htm">hbase</a><a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a> <div>【Flink实战系列】FlinkCDC实时同步Mysql全量加增量数据到Hudi前言FlinkCDC是基于Flink开发的变化数据获取组件(Changedatacapture),简单的说就是来捕获变更的数据,ApacheHudi是一个数据湖平台,又支持对数据做增删改查操作,所以FlinkCDC可以很好的和Hudi结合起来,打造实时数仓,实时湖仓一体的架构,下面就来演示一下同步的过程。环境组件版本F</div> </li> <li><a href="/article/1882597686134239232.htm" title="FACEBOOK改名META,元宇宙救不了FACEBOOK" target="_blank">FACEBOOK改名META,元宇宙救不了FACEBOOK</a> <span class="text-muted">公众号:肉眼品世界</span> <a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E8%BD%AF/1.htm">微软</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/1.htm">编程语言</a><a class="tag" taget="_blank" href="/search/%E5%8C%BA%E5%9D%97%E9%93%BE/1.htm">区块链</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>肉眼品世界导读:没错,看标题你就会发现这里又是不同的观点,正如此,我相信即便是这个公众号,以及由此而散开的花是值得期待的;这不仅打开一扇技术的窗,更打开一扇人生的窗口读懂中国互联网,读懂商业模式请关注微信公众号“肉眼品世界”(ID:find_world_fine),深度价值体系传递FACEBOOK的更名与愿景今天facebook在Connect2021的开幕会上,宣布公司更名为meta,正式进入M</div> </li> <li><a href="/article/1882597306423898112.htm" title="深入解析 GZIP 压缩传输:优化网络性能的利器" target="_blank">深入解析 GZIP 压缩传输:优化网络性能的利器</a> <span class="text-muted">码农阿豪@新空间代码工作室</span> <a class="tag" taget="_blank" href="/search/%E5%A5%BD%E2%80%9C%E7%89%A9%E2%80%9D%E5%88%86%E4%BA%AB/1.htm">好“物”分享</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>个人名片作者简介:java领域优质创作者个人主页:码农阿豪工作室:新空间代码工作室(提供各种软件服务)个人邮箱:[2435024119@qq.com]个人微信:15279484656个人导航网站:www.forff.top座右铭:总有人要赢。为什么不能是我呢?专栏导航:码农阿豪系列专栏导航面试专栏:收集了java相关高频面试题,面试实战总结️Spring5系列专栏:整理了Spring5重要知识点与</div> </li> <li><a href="/article/1882596676158418944.htm" title="[4-3-2].Redis笔记" target="_blank">[4-3-2].Redis笔记</a> <span class="text-muted">1.01^1000</span> <a class="tag" taget="_blank" href="/search/%E4%B8%83/1.htm">七</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E9%97%B4%E4%BB%B6/1.htm">中间件</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>后端学习大纲第1步:Redis初识[0401].第01节:Redis初识[0402].第02节:Redis配置文件第2步:搭建单点环境[0403].第03节:在Linux环境中搭建Redis6.2.8环境[0404].第04节:在Linux环境中搭建Redis7.0.0环境(与6.2.8过程类似)第3步:Redis开发操作:3.1.数据类型介绍:[0409].第09节:Redis中的键(KEY)常</div> </li> <li><a href="/article/1882596298121605120.htm" title="Web 性能入门指南-2.4 理解和改进累积布局偏移 (CLS)" target="_blank">Web 性能入门指南-2.4 理解和改进累积布局偏移 (CLS)</a> <span class="text-muted">前端后花园</span> <a class="tag" taget="_blank" href="/search/Web%E6%80%A7%E8%83%BD%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97/1.htm">Web性能入门指南</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/Web%E6%80%A7%E8%83%BD/1.htm">Web性能</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E7%9B%91%E6%8E%A7/1.htm">性能监控</a><a class="tag" taget="_blank" href="/search/chrome/1.htm">chrome</a> <div>累积布局偏移量衡量页面的视觉稳定性。人性化的定义是,CLS可帮助您了解页面给浏览者带来不顺畅、不愉快体验的可能性。CLS是一种基于公式的指标,它考虑了网页的视觉内容在视口内的移动量,以及这些视觉元素移动的距离。CLS可以通过合成和RUM来衡量。Google建议您的网页的CLS分数不超过0.1。什么因素导致CLS恶化?累积布局偏移的好处之一是,它让我们跳出通常的基于时间的指标的思维,而是让我们思考未</div> </li> <li><a href="/article/1882596171856277504.htm" title="JavaScript语法特性篇-动态导入 import()" target="_blank">JavaScript语法特性篇-动态导入 import()</a> <span class="text-muted">前端后花园</span> <a class="tag" taget="_blank" href="/search/JS%E5%AD%A6%E4%B9%A0%E8%B5%84%E6%96%99/1.htm">JS学习资料</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E5%AF%BC%E5%85%A5/1.htm">动态导入</a><a class="tag" taget="_blank" href="/search/%E9%9D%99%E6%80%81%E5%AF%BC%E5%85%A5/1.htm">静态导入</a><a class="tag" taget="_blank" href="/search/import/1.htm">import</a> <div>1、基本使用import()语法,通常被称为动态导入,是一个类似函数的表达式,它允许异步和动态地将ECMAScript模块加载到一个可能不是模块的环境中。与声明式的导入相对应,动态导入只在需要时进行计算,并且允许更大的语法灵活性。简单来说,使用import()语法,你可以在运行时(而不是在编译时)决定要导入哪个模块,并且这种导入是异步的,不会阻塞代码的执行。awaitimport('/module</div> </li> <li><a href="/article/1882595919656972288.htm" title="Spring 框架基础:IOC 与 AOP 原理剖析及面试要点" target="_blank">Spring 框架基础:IOC 与 AOP 原理剖析及面试要点</a> <span class="text-muted">翻晒时光</span> <a class="tag" taget="_blank" href="/search/Java%E6%98%A5%E6%8B%9B%E9%9D%A2%E8%AF%95%E6%8C%87%E5%8D%97/1.htm">Java春招面试指南</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>在上一篇中,我们深入探讨了Java反射机制,了解了它在运行时动态操作类和对象的强大能力。而今天,我们将进入Spring框架的世界。Spring框架作为Java企业级开发中最流行的框架之一,极大地简化了企业级应用的开发过程。对于春招面试而言,Spring框架的基础知识是重点考察内容,其中控制反转(IOC)和面向切面编程(AOP)是Spring框架的核心思想,下面我们来详细了解。一、控制反转(IOC)</div> </li> <li><a href="/article/1882595413127655424.htm" title="swiper移入暂停_用Swiper插件实现无缝轮播的品牌展示,鼠标移动停止,鼠标移出无缝移动视觉效果..." target="_blank">swiper移入暂停_用Swiper插件实现无缝轮播的品牌展示,鼠标移动停止,鼠标移出无缝移动视觉效果...</a> <span class="text-muted">weixin_39726971</span> <a class="tag" taget="_blank" href="/search/swiper%E7%A7%BB%E5%85%A5%E6%9A%82%E5%81%9C/1.htm">swiper移入暂停</a> <div>正常操作,正常分析,大家好,我是D1n910。文章关键词:技术前端JQuery入门滚动文章前言:公司要求做官网呀呀呀,其中有一部分设计是要求我们最亲爱的品牌商的LOGO能够在底部无缝轮播,鼠标移上去就停下来。效果如下:一、使用插件介绍1、使用的框架是JQuery,因为讲究快速、兼容、展示,所以没有用vue、react之类的看起来高大上的框架。2、使用的是优秀的轮播插件Swiper3.0版(实际上S</div> </li> <li><a href="/article/1882594650447998976.htm" title="MyBatis性能调优——优化SQL查询和分页查询速度" target="_blank">MyBatis性能调优——优化SQL查询和分页查询速度</a> <span class="text-muted">AI天才研究院</span> <a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AEAI%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">大数据AI人工智能</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86/1.htm">自然语言处理</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/1.htm">语言模型</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E5%AE%9E%E8%B7%B5/1.htm">编程实践</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/1.htm">架构设计</a> <div>作者:禅与计算机程序设计艺术1.简介1.0什么是MyBatis?MyBatis是MyBatisSQLMapperFramework的简称,是一个Java框架,用于存取数据库中的数据。MyBatis将sql映射到java对象上,并将对象映射成sql,最终实现对关系数据库进行持久化操作。MyBatis使用xml或注解的方式来配置映射关系,并通过xml文件或注解来生成mybatis核心配置文件mybat</div> </li> <li><a href="/article/1882594146607230976.htm" title="linux 权限的设置与查看 chmod 与 ls -l 等相关命令" target="_blank">linux 权限的设置与查看 chmod 与 ls -l 等相关命令</a> <span class="text-muted">drebander</span> <a class="tag" taget="_blank" href="/search/%E8%84%9A%E6%9C%AC/1.htm">脚本</a> <div>本文为转载文章出处:http://blog.csdn.net/sinchb/article/details/11746427本文着重介绍与Linux文件权限相关等问题,比如用户与用户组,文件权限,文件默认权限和文件特殊权限等。Linux为什么需要那么多的权限限制呢?其实这些都是为了“安全起见”啊!如果你的Linux系统里存了你给心上人写的情书,或者是某亚洲岛国的动作大片,你总不希望谁都可以翻翻看吧</div> </li> <li><a href="/article/1882593138363658240.htm" title="使用Zapier Natural Language Actions与LangChain集成实现自动化工作流" target="_blank">使用Zapier Natural Language Actions与LangChain集成实现自动化工作流</a> <span class="text-muted">srudfktuffk</span> <a class="tag" taget="_blank" href="/search/langchain/1.htm">langchain</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96/1.htm">自动化</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>技术背景介绍ZapierNaturalLanguageActions(NLA)提供了一种通过自然语言接口访问Zapier平台上5000多个应用和20000多个操作的方法。通过NLA,你可以将自然语言翻译成具体的API调用并获取简化的输出。这使得在复杂的多应用环境中进行自动化操作变得更加轻松。然而需要注意的是,ZapierNLA将在2023年11月17日停用。核心原理解析NLA的核心思想是通过类似O</div> </li> <li><a href="/article/1882592000704835584.htm" title="数据结构与算法分析:专题内容——人工智能中的寻路3之广度优先搜索(代码详解)" target="_blank">数据结构与算法分析:专题内容——人工智能中的寻路3之广度优先搜索(代码详解)</a> <span class="text-muted">梅见十柒</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95%E5%88%86%E6%9E%90/1.htm">数据结构与算法分析</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/%E5%B9%BF%E5%BA%A6%E4%BC%98%E5%85%88/1.htm">广度优先</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>一、前言广度优先搜索尝试在不重复访问状态的情况下,寻找到一条最短路径。广度优先搜索保证如果存在一条到目标状态的路径,那么找到的肯定是最短路径。事实上,深度优先搜索和广度优先搜索的唯一不同就是广度优先搜索使用队列来保存开放集,而深度优先搜索使用栈。每次迭代时,广度优先搜索从队列头拿出一个未访问的状态,然后从这个状态开始,计算后继状态。如果达到了目标状态,那么搜索结束。任何已经在闭合集中的后继状态将会</div> </li> <li><a href="/article/1882591117992587264.htm" title="Google广告数据分析与优化总结" target="_blank">Google广告数据分析与优化总结</a> <span class="text-muted">奔跑的栀子</span> <a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E5%B9%BF%E5%91%8A/1.htm">计算广告</a><a class="tag" taget="_blank" href="/search/%E5%B9%BF%E5%91%8A/1.htm">广告</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E5%B9%BF%E5%91%8A/1.htm">计算广告</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">数据可视化</a><a class="tag" taget="_blank" href="/search/google/1.htm">google</a> <div>一、概述广告优化师虽属于广告行业,但在实际的优化过程中无不考验着优化师的数据分析能力。不同的计划在不同时期情况不一样,具体的优化应当以当时的状态跟所处情形来进行,因此对于这个行业来讲没有百分之百奏效的优化方式,广告优化师能做的就是根据自己的经验分析和判断可能是什么原因导致了计划出现问题,以及通过尝试去改变效果不好的现状。以下是我曾经优化比较成功的案例之一,下面将分日期对计划所处的状态、猜测结果出现</div> </li> <li><a href="/article/116.htm" title="ViewController添加button按钮解析。(翻译)" target="_blank">ViewController添加button按钮解析。(翻译)</a> <span class="text-muted">张亚雄</span> <a class="tag" taget="_blank" href="/search/c/1.htm">c</a> <div><div class="it610-blog-content-contain" style="font-size: 14px"></div>//  ViewController.m //  Reservation software // //  Created by 张亚雄 on 15/6/2. </div> </li> <li><a href="/article/243.htm" title="mongoDB 简单的增删改查" target="_blank">mongoDB 简单的增删改查</a> <span class="text-muted">开窍的石头</span> <a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a> <div>   在上一篇文章中我们已经讲了mongodb怎么安装和数据库/表的创建。在这里我们讲mongoDB的数据库操作       在mongo中对于不存在的表当你用db.表名 他会自动统计 下边用到的user是表明,db代表的是数据库       添加(insert): </div> </li> <li><a href="/article/370.htm" title="log4j配置" target="_blank">log4j配置</a> <span class="text-muted">0624chenhong</span> <a class="tag" taget="_blank" href="/search/log4j/1.htm">log4j</a> <div>1) 新建java项目 2) 导入jar包,项目右击,properties—java build path—libraries—Add External jar,加入log4j.jar包。 3) 新建一个类com.hand.Log4jTest package com.hand; import org.apache.log4j.Logger; public class </div> </li> <li><a href="/article/497.htm" title="多点触摸(图片缩放为例)" target="_blank">多点触摸(图片缩放为例)</a> <span class="text-muted">不懂事的小屁孩</span> <a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%82%B9%E8%A7%A6%E6%91%B8/1.htm">多点触摸</a> <div>多点触摸的事件跟单点是大同小异的,上个图片缩放的代码,供大家参考一下 import android.app.Activity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener</div> </li> <li><a href="/article/624.htm" title="有关浏览器窗口宽度高度几个值的解析" target="_blank">有关浏览器窗口宽度高度几个值的解析</a> <span class="text-muted">换个号韩国红果果</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a> <div>1 元素的 offsetWidth 包括border padding  content  整体的宽度。 clientWidth  只包括内容区 padding 不包括border。 clientLeft =  offsetWidth -clientWidth  即这个元素border的值 offsetLeft  若无已定位的包裹元素</div> </li> <li><a href="/article/751.htm" title="数据库产品巡礼:IBM DB2概览" target="_blank">数据库产品巡礼:IBM DB2概览</a> <span class="text-muted">蓝儿唯美</span> <a class="tag" taget="_blank" href="/search/db2/1.htm">db2</a> <div>IBM DB2是一个支持了NoSQL功能的关系数据库管理系统,其包含了对XML,图像存储和Java脚本对象表示(JSON)的支持。DB2可被各种类型的企 业使用,它提供了一个数据平台,同时支持事务和分析操作,通过提供持续的数据流来保持事务工作流和分析操作的高效性。 DB2支持的操作系统 DB2可应用于以下三个主要的平台:   工作站,DB2可在Linus、Unix、Windo</div> </li> <li><a href="/article/878.htm" title="java笔记5" target="_blank">java笔记5</a> <span class="text-muted">a-john</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>控制执行流程: 1,true和false    利用条件表达式的真或假来决定执行路径。例:(a==b)。它利用条件操作符“==”来判断a值是否等于b值,返回true或false。java不允许我们将一个数字作为布尔值使用,虽然这在C和C++里是允许的。如果想在布尔测试中使用一个非布尔值,那么首先必须用一个条件表达式将其转化成布尔值,例如if(a!=0)。 2,if-els</div> </li> <li><a href="/article/1005.htm" title="Web开发常用手册汇总" target="_blank">Web开发常用手册汇总</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a> <div>一门技术,如果没有好的参考手册指导,很难普及大众。这其实就是为什么很多技术,非常好,却得不到普遍运用的原因。 正如我们学习一门技术,过程大概是这个样子: ①我们日常工作中,遇到了问题,困难。寻找解决方案,即寻找新的技术; ②为什么要学习这门技术?这门技术是不是很好的解决了我们遇到的难题,困惑。这个问题,非常重要,我们不是为了学习技术而学习技术,而是为了更好的处理我们遇到的问题,才需要学习新的</div> </li> <li><a href="/article/1132.htm" title="今天帮助人解决的一个sql问题" target="_blank">今天帮助人解决的一个sql问题</a> <span class="text-muted">asialee</span> <a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a> <div>            今天有个人问了一个问题,如下: type     AD      value          A  </div> </li> <li><a href="/article/1259.htm" title="意图对象传递数据" target="_blank">意图对象传递数据</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E6%84%8F%E5%9B%BEIntent/1.htm">意图Intent</a><a class="tag" taget="_blank" href="/search/Bundle%E5%AF%B9%E8%B1%A1%E6%95%B0%E6%8D%AE%E7%9A%84%E4%BC%A0%E9%80%92/1.htm">Bundle对象数据的传递</a> <div>学习意图将数据传递给目标活动; 初学者需要好好研究的       1,将下面的代码添加到main.xml中    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http:/</div> </li> <li><a href="/article/1386.htm" title="oracle查询锁表解锁语句" target="_blank">oracle查询锁表解锁语句</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/object/1.htm">object</a><a class="tag" taget="_blank" href="/search/session/1.htm">session</a><a class="tag" taget="_blank" href="/search/kill/1.htm">kill</a> <div>一.查询锁定的表 如下语句,都可以查询锁定的表 语句一: select a.sid, a.serial#, p.spid, c.object_name, b.session_id, b.oracle_username, b.os_user_name from v$process p, v$s</div> </li> <li><a href="/article/1513.htm" title="mac osx 10.10 下安装 mysql 5.6 二进制文件[tar.gz]" target="_blank">mac osx 10.10 下安装 mysql 5.6 二进制文件[tar.gz]</a> <span class="text-muted">征客丶</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/osx/1.htm">osx</a> <div>场景:在 mac osx 10.10 下安装 mysql 5.6 的二进制文件。 环境:mac osx 10.10、mysql 5.6 的二进制文件 步骤:[所有目录请从根“/”目录开始取,以免层级弄错导致找不到目录] 1、下载 mysql 5.6 的二进制文件,下载目录下面称之为 mysql5.6SourceDir; 下载地址:http://dev.mysql.com/downl</div> </li> <li><a href="/article/1640.htm" title="分布式系统与框架" target="_blank">分布式系统与框架</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a> <div>RPC框架 Dubbo 什么是Dubbo   Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。其核心部分包含:    远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。    集群容错: 提供基于接</div> </li> <li><a href="/article/1767.htm" title="那些令人蛋痛的专业术语" target="_blank">那些令人蛋痛的专业术语</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/SSO/1.htm">SSO</a><a class="tag" taget="_blank" href="/search/IOC/1.htm">IOC</a> <div> spring 【控制反转(IOC)/依赖注入(DI)】: 由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。 简单的说:对象的创建又容器(比如spring容器)来执行,程序里不直接new对象。 Web 【单点登录(SSO)】:SSO的定义是在多个应用系统中,用户</div> </li> <li><a href="/article/1894.htm" title="《给大忙人看的java8》摘抄" target="_blank">《给大忙人看的java8》摘抄</a> <span class="text-muted">braveCS</span> <a class="tag" taget="_blank" href="/search/java8/1.htm">java8</a> <div>函数式接口:只包含一个抽象方法的接口 lambda表达式:是一段可以传递的代码       你最好将一个lambda表达式想象成一个函数,而不是一个对象,并记住它可以被转换为一个函数式接口。 事实上,函数式接口的转换是你在Java中使用lambda表达式能做的唯一一件事。   方法引用:又是要传递给其他代码的操作已经有实现的方法了,这时可以使</div> </li> <li><a href="/article/2021.htm" title="编程之美-计算字符串的相似度" target="_blank">编程之美-计算字符串的相似度</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B9%8B%E7%BE%8E/1.htm">编程之美</a> <div> public class StringDistance { /** * 编程之美 计算字符串的相似度 * 我们定义一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为: * 1.修改一个字符(如把“a”替换为“b”); * 2.增加一个字符(如把“abdd”变为“aebdd”); * 3.删除一个字符(如把“travelling”变为“trav</div> </li> <li><a href="/article/2148.htm" title="上传、下载压缩图片" target="_blank">上传、下载压缩图片</a> <span class="text-muted">chengxuyuancsdn</span> <a class="tag" taget="_blank" href="/search/%E4%B8%8B%E8%BD%BD/1.htm">下载</a> <div>/** * * @param uploadImage --本地路径(tomacat路径) * @param serverDir --服务器路径 * @param imageType --文件或图片类型 * 此方法可以上传文件或图片.txt,.jpg,.gif等 */ public void upload(String uploadImage,Str</div> </li> <li><a href="/article/2275.htm" title="bellman-ford(贝尔曼-福特)算法" target="_blank">bellman-ford(贝尔曼-福特)算法</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/F%23/1.htm">F#</a> <div>Bellman-Ford算法(根据发明者 Richard Bellman 和 Lester Ford 命名)是求解单源最短路径问题的一种算法。单源点的最短路径问题是指:给定一个加权有向图G和源点s,对于图G中的任意一点v,求从s到v的最短路径。有时候这种算法也被称为 Moore-Bellman-Ford 算法,因为 Edward F. Moore zu 也为这个算法的发展做出了贡献。 与迪科</div> </li> <li><a href="/article/2402.htm" title="oracle ASM中ASM_POWER_LIMIT参数" target="_blank">oracle ASM中ASM_POWER_LIMIT参数</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/ASM/1.htm">ASM</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/ASM_POWER_LIMIT/1.htm">ASM_POWER_LIMIT</a><a class="tag" taget="_blank" href="/search/%E7%A3%81%E7%9B%98%E5%B9%B3%E8%A1%A1/1.htm">磁盘平衡</a> <div>ASM_POWER_LIMIT 该初始化参数用于指定ASM例程平衡磁盘所用的最大权值,其数值范围为0~11,默认值为1。该初始化参数是动态参数,可以使用ALTER  SESSION或ALTER  SYSTEM命令进行修改。示例如下: SQL>ALTER  SESSION  SET   Asm_power_limit=2; </div> </li> <li><a href="/article/2529.htm" title="高级排序:快速排序" target="_blank">高级排序:快速排序</a> <span class="text-muted">dieslrae</span> <a class="tag" taget="_blank" href="/search/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F/1.htm">快速排序</a> <div> public void quickSort(int[] array){ this.quickSort(array, 0, array.length - 1); } public void quickSort(int[] array,int left,int right){ if(right - left <= 0</div> </li> <li><a href="/article/2656.htm" title="C语言学习六指针_何谓变量的地址 一个指针变量到底占几个字节" target="_blank">C语言学习六指针_何谓变量的地址 一个指针变量到底占几个字节</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/C%E8%AF%AD%E8%A8%80/1.htm">C语言</a> <div># include <stdio.h> int main(void) { /* 1、一个变量的地址只用第一个字节表示 2、虽然他只使用了第一个字节表示,但是他本身指针变量类型就可以确定出他指向的指针变量占几个字节了 3、他都只存了第一个字节地址,为什么只需要存一个字节的地址,却占了4个字节,虽然只有一个字节, 但是这些字节比较多,所以编号就比较大, </div> </li> <li><a href="/article/2783.htm" title="phpize使用方法" target="_blank">phpize使用方法</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a> <div>phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块,下面介绍一个它的使用方法,需要的朋友可以参考下 安装(fastcgi模式)的时候,常常有这样一句命令: 代码如下: /usr/local/webserver/php/bin/phpize   一、phpize是干嘛的? phpize是什么? phpize是用来扩展php扩展模块的,通过phpi</div> </li> <li><a href="/article/2910.htm" title="Java虚拟机学习 - 对象引用强度" target="_blank">Java虚拟机学习 - 对象引用强度</a> <span class="text-muted">shuizhaosi888</span> <a class="tag" taget="_blank" href="/search/JAVA%E8%99%9A%E6%8B%9F%E6%9C%BA/1.htm">JAVA虚拟机</a> <div> 本文原文链接:http://blog.csdn.net/java2000_wl/article/details/8090276 转载请注明出处! 无论是通过计数算法判断对象的引用数量,还是通过根搜索算法判断对象引用链是否可达,判定对象是否存活都与“引用”相关。 引用主要分为 :强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Wea</div> </li> <li><a href="/article/3037.htm" title=".NET Framework 3.5 Service Pack 1(完整软件包)下载地址" target="_blank">.NET Framework 3.5 Service Pack 1(完整软件包)下载地址</a> <span class="text-muted">happyqing</span> <a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a><a class="tag" taget="_blank" href="/search/%E4%B8%8B%E8%BD%BD/1.htm">下载</a><a class="tag" taget="_blank" href="/search/framework/1.htm">framework</a> <div>  Microsoft .NET Framework 3.5 Service Pack 1(完整软件包)  http://www.microsoft.com/zh-cn/download/details.aspx?id=25150 Microsoft .NET Framework 3.5 Service Pack 1 是一个累积更新,包含很多基于 .NET Framewo</div> </li> <li><a href="/article/3164.htm" title="JAVA定时器的使用" target="_blank">JAVA定时器的使用</a> <span class="text-muted">jingjing0907</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/timer/1.htm">timer</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B/1.htm">线程</a><a class="tag" taget="_blank" href="/search/%E5%AE%9A%E6%97%B6%E5%99%A8/1.htm">定时器</a> <div>1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。 对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。 privatejava.util.Timer timer; timer = newTimer(true); timer.schedule( newjava.util.TimerTask() { public void run() </div> </li> <li><a href="/article/3291.htm" title="Webbench" target="_blank">Webbench</a> <span class="text-muted">流浪鱼</span> <a class="tag" taget="_blank" href="/search/webbench/1.htm">webbench</a> <div>首页下载地址 http://home.tiscali.cz/~cz210552/webbench.html Webbench是知名的网站压力测试工具,它是由Lionbridge公司(http://www.lionbridge.com)开发。 Webbench能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况。webbench的标准测试可以向我们展示服务器的两项内容:每秒钟相</div> </li> <li><a href="/article/3418.htm" title="第11章 动画效果(中)" target="_blank">第11章 动画效果(中)</a> <span class="text-muted">onestopweb</span> <a class="tag" taget="_blank" href="/search/%E5%8A%A8%E7%94%BB/1.htm">动画</a> <div>index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/</div> </li> <li><a href="/article/3545.htm" title="windows下制作bat启动脚本." target="_blank">windows下制作bat启动脚本.</a> <span class="text-muted">sanyecao2314</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/cmd/1.htm">cmd</a><a class="tag" taget="_blank" href="/search/%E8%84%9A%E6%9C%AC/1.htm">脚本</a><a class="tag" taget="_blank" href="/search/bat/1.htm">bat</a> <div>java -classpath C:\dwjj\commons-dbcp.jar;C:\dwjj\commons-pool.jar;C:\dwjj\log4j-1.2.16.jar;C:\dwjj\poi-3.9-20121203.jar;C:\dwjj\sqljdbc4.jar;C:\dwjj\voucherimp.jar com.citsamex.core.startup.MainStart </div> </li> <li><a href="/article/3672.htm" title="Java进行RSA加解密的例子" target="_blank">Java进行RSA加解密的例子</a> <span class="text-muted">tomcat_oracle</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>加密是保证数据安全的手段之一。加密是将纯文本数据转换为难以理解的密文;解密是将密文转换回纯文本。   数据的加解密属于密码学的范畴。通常,加密和解密都需要使用一些秘密信息,这些秘密信息叫做密钥,将纯文本转为密文或者转回的时候都要用到这些密钥。   对称加密指的是发送者和接收者共用同一个密钥的加解密方法。   非对称加密(又称公钥加密)指的是需要一个私有密钥一个公开密钥,两个不同的密钥的</div> </li> <li><a href="/article/3799.htm" title="Android_ViewStub" target="_blank">Android_ViewStub</a> <span class="text-muted">阿尔萨斯</span> <a class="tag" taget="_blank" href="/search/ViewStub/1.htm">ViewStub</a> <div>public final class ViewStub extends View java.lang.Object android.view.View android.view.ViewStub 类摘要: ViewStub 是一个隐藏的,不占用内存空间的视图对象,它可以在运行时延迟加载布局资源文件。当 ViewSt</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>