Node实践总结3——routes

routes

一个传统的网站往往会有许多路径(/,/login,/user),不同的路径对应不同的页面,有不同的处理逻辑,涉及表单的页面往往还会同时存在getpost两种形式的请求,其往往也承担了核心的业务。


routes结构

GET

先摘一段我工程的代码举个例子:

router.get('/', async function (ctx, next) {
  await ctx.render('index', {
    title: 'OA',
    user: ctx.session.user
  });
});
router.get('/reg', async function (ctx, next) {
  await ctx.render('reg', {
    title: 'OA-注册'
  });
});
router.get('/login', async function (ctx, next) {
  await ctx.render('login', {
    title: 'OA-登录'
  });
});
router.get('/logout', async function (ctx, next) {
  ctx.session.user = null;
  return ctx.redirect('/');
});
router.get('/user_app', async function (ctx, next) {
  await ctx.render('user_app', {
    title: 'OA-应用角色管理'
  });
});
router.get('/user_db', async function (ctx, next) {
  await ctx.render('user_db', {
    title: 'OA-数据库角色管理'
  });
});
router.get('/waf_log', async function (ctx, next) {
  var wafLogs = await WafLogs.fetchAll();//从数据库中查询所有的日志信息
  var logs = {};
  for(var i = 0;i < wafLogs.length;i++){
    logs[i] = wafLogs.models[i].attributes;
  }

  await ctx.render('waf_log', {
    title: 'OA-waf日志',
    logs: logs
  });
});

这一部分基本都是简单的get页面的请求,koa使用ctx.render(模板名,{模板需要的变量})做页面渲染,第一个参数指定要使用哪一个模板文件作为返回的页面,第二个参数用于传入变量给jade模板使用。

GET请求时,通常需要服务器返回一个静态页面,所以逻辑都还算比较简单,只需要指定好页面模板和相应的变量即可。

上述例子中,有一个GET /waf_log的route比较特别,这一个get请求需要服务器先查询存放日志的数据库,将日志信息保存成json格式,再由render函数传给模板进行渲染,下面将这一部分前后端的关键代码放在一起对比的看一下。

//后端
router.get('/waf_log', async function (ctx, next) {
  var wafLogs = await WafLogs.fetchAll();//从数据库中查询所有的日志信息
  var logs = {};
  for(var i = 0;i < wafLogs.length;i++){
    logs[i] = wafLogs.models[i].attributes;
  }

  await ctx.render('waf_log', {
    title: 'OA-waf日志',
    logs: logs
  });
});
//前端
doctype html
html
  head
    meta(charset='utf-8')
    title= title
    link(rel='stylesheet' href='http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css')
    link(rel='stylesheet' href='/stylesheets/mycss.css')
    script(src='http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js')
    script(src='http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js')
body
    div.container
      div.row
        ul.list-inline
          li.col-lg-3.nonpadding
            p.content-title WAF日志
          li.col-lg-6.nonpadding
          li.float-right.col-lg-3.nonpadding
            div.input-group
              input#searchBox.form-control(type='text',placeholder='输入关键字,支持模糊查询',required)
              span.input-group-btn
                input.btn.btn-warning.btn-search(type='submit',value='搜索') 
      div#table.row
        table.table
          thead
            tr
              th 序号(id)
              th 时间(time)
              th 用户名(username)
              th 访问的功能(function
              th 访问的URL(url)
              th 参数(param)
              th 操作结果(result)
          tbody
            each log in logs
              tr
              each val in log
                td #{val} 

可以看到后端传给模板两个参数{title: 'OA-waf日志',logs: logs}
模板中title= title,说明前端页面中</code>标签内容是一个变量,值是传入的title参数的值, <br> 模板中<code>tbody</code>下是两个each循环,用于将传入的logs解析出来,动态的生成表格。</p> <p><code>async</code>和<code>await</code>是ES7标准中用于处理异步操作的关键字,<code>async</code>声明的函数A中可以使用<code>await</code>调用别的函数B,并等到函数B返回之后继续执行A剩余的部分。</p> <p><code>ctx</code>是koa2中包装<code>req</code>和<code>res</code>的对象。</p> <p><code>next</code>用于链式操作,指代当前函数的下一个函数,常常通过<code>await next()</code>调用。</p> <hr> <h2 id="post">POST</h2> <p>下面这一部分的routes相对复杂一些:</p> <pre class="prettyprint"><code class=" hljs cs">router.post(<span class="hljs-string">'/reg'</span>, <span class="hljs-keyword">async</span> function (ctx, next) { <span class="hljs-keyword">if</span>(ctx.request.body[<span class="hljs-string">'username'</span>].length > <span class="hljs-number">25</span>) { <span class="hljs-comment">//判断用户名是否过长,数据库设置username字段为varchar(25)</span> <span class="hljs-keyword">await</span> ctx.render(<span class="hljs-string">'reg'</span>, { title: <span class="hljs-string">'OA-注册'</span>, error: <span class="hljs-string">'用户名不得超过25个字符'</span> }); } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(ctx.request.body[<span class="hljs-string">'password2'</span>] !== ctx.request.body[<span class="hljs-string">'password'</span>]) { <span class="hljs-comment">//判断两次密码是否一致</span> console.log(<span class="hljs-string">'两次密码不一致'</span>); <span class="hljs-keyword">await</span> ctx.render(<span class="hljs-string">'reg'</span>, { title: <span class="hljs-string">'OA-注册'</span>, error: <span class="hljs-string">'两次密码不一致'</span> }); } <span class="hljs-keyword">else</span> { <span class="hljs-comment">//判断用户名是否存在</span> <span class="hljs-keyword">var</span> count = <span class="hljs-keyword">await</span> Users.<span class="hljs-keyword">where</span>(<span class="hljs-string">'username'</span>, ctx.request.body[<span class="hljs-string">'username'</span>]).count(<span class="hljs-string">'username'</span>); <span class="hljs-keyword">if</span>(count != <span class="hljs-number">0</span>) { console.log(<span class="hljs-string">'用户名已存在!'</span>); <span class="hljs-keyword">await</span> ctx.render(<span class="hljs-string">'reg'</span>, { title: <span class="hljs-string">'OA-注册'</span>, error: <span class="hljs-string">'用户名已存在'</span> }); } <span class="hljs-keyword">else</span> { <span class="hljs-keyword">var</span> hmac = crypto.createHmac(<span class="hljs-string">'sha256'</span>, <span class="hljs-string">'liuyueyi'</span>); <span class="hljs-keyword">var</span> password = hmac.update(ctx.request.body[<span class="hljs-string">'password'</span>]).digest(<span class="hljs-string">'hex'</span>); console.log(password); console.log(password.length); <span class="hljs-keyword">var</span> newUser = <span class="hljs-keyword">new</span> Users({ username: ctx.request.body[<span class="hljs-string">'username'</span>], password: password }); <span class="hljs-keyword">await</span> newUser.save(); console.log(<span class="hljs-string">'注册成功,可以直接登录!'</span>); ctx.session.user = newUser; <span class="hljs-keyword">await</span> ctx.render(<span class="hljs-string">'reg'</span>, { title: <span class="hljs-string">'OA-注册'</span>, success: <span class="hljs-string">'注册成功,可以直接登录'</span> }); <span class="hljs-keyword">return</span> ctx.redirect(<span class="hljs-string">'/login'</span>); } } }); router.post(<span class="hljs-string">'/login'</span>, <span class="hljs-keyword">async</span> function (ctx, next) { <span class="hljs-comment">//需要判断的逻辑:用户名不存在或者密码错误</span> <span class="hljs-keyword">var</span> count = <span class="hljs-keyword">await</span> Users.<span class="hljs-keyword">where</span>(<span class="hljs-string">'username'</span>, ctx.request.body[<span class="hljs-string">'username'</span>]).count(<span class="hljs-string">'username'</span>); <span class="hljs-keyword">if</span>(count == <span class="hljs-number">0</span>) { console.log(<span class="hljs-string">'用户名不存在!'</span>); <span class="hljs-keyword">await</span> ctx.render(<span class="hljs-string">'login'</span>, { title: <span class="hljs-string">'OA-登录'</span>, error: <span class="hljs-string">'用户名不存在'</span> }); } <span class="hljs-keyword">else</span> { <span class="hljs-keyword">var</span> hmac = crypto.createHmac(<span class="hljs-string">'sha256'</span>, <span class="hljs-string">'liuyueyi'</span>); <span class="hljs-keyword">var</span> password = hmac.update(ctx.request.body[<span class="hljs-string">'password'</span>]).digest(<span class="hljs-string">'hex'</span>); <span class="hljs-keyword">var</span> user = <span class="hljs-keyword">await</span> Users.<span class="hljs-keyword">where</span>(<span class="hljs-string">'username'</span>, ctx.request.body[<span class="hljs-string">'username'</span>]).fetch(); <span class="hljs-keyword">if</span> (user.attributes.password == password) { console.log(<span class="hljs-string">'登陆成功!'</span>+ user.attributes.username); ctx.session.user = user.attributes.username; <span class="hljs-keyword">return</span> ctx.response.redirect(<span class="hljs-string">'/'</span>); } <span class="hljs-keyword">else</span> { console.log(<span class="hljs-string">'密码错误!'</span>); <span class="hljs-keyword">await</span> ctx.render(<span class="hljs-string">'login'</span>, { title: <span class="hljs-string">'OA-登录'</span>, error: <span class="hljs-string">'密码错误'</span> }); } } });</code></pre> <p>这一部分是处理前端post回来的表单数据的逻辑代码。</p> <hr> <h2 id="render和redirect">render和redirect</h2> <p>上面的代码中,页面切换使用到了两种方法</p> <ul> <li>render</li> <li>redirect</li> </ul> <p>二者是有区别的。</p> <p>render用于页面渲染,是将指定的模板通过引擎转换成html之后直接画在当前页面之上,如果render指定的模板和当前页不同,地址栏上可以清晰的看见路径没有变化。 <br> redirect则是用于页面跳转,服务器端的后台可以看到跳转的时候响应码是302,并且地址栏的路径也会变化。</p> <hr> <h2 id="ajax">AJAX</h2> <p>这一部分我之后单独写。</p> <hr> <p>routes代码可以直接写在app.js当中,但是当业务越来越复杂,页面越来越多的时候,app.js会变得很长,从而不易维护,所以正确的做法是将其移到routes路径下,做成一个模块,使用的时候导入到app.js中。</p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1306287336685867008"></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">你可能感兴趣的:(Node.js,node,route)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1902462544417714176.htm" title="kubectl describe pod 命令以及输出详情讲解" target="_blank">kubectl describe pod 命令以及输出详情讲解</a> <span class="text-muted">Moshow郑锴</span> <a class="tag" taget="_blank" href="/search/Cloud/1.htm">Cloud</a><a class="tag" taget="_blank" href="/search/Docker/1.htm">Docker</a><a class="tag" taget="_blank" href="/search/Kubernetes/1.htm">Kubernetes</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a><a class="tag" taget="_blank" href="/search/kubectl/1.htm">kubectl</a><a class="tag" taget="_blank" href="/search/pod/1.htm">pod</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a> <div>kubectldescribepod命令格式kubectldescribepod-n:Pod的名称。-n:指定命名空间,默认是当前命名空间。controlplane~✖kubectldescribepodnewpods-dzmkgName:newpods-dzmkgNamespace:defaultPriority:0ServiceAccount:defaultNode:controlplane/</div> </li> <li><a href="/article/1902435189343186944.htm" title="Linux:kubeadm⽅式部署k8s集群" target="_blank">Linux:kubeadm⽅式部署k8s集群</a> <span class="text-muted">陈婷婷1</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</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/%E5%AE%B9%E5%99%A8/1.htm">容器</a> <div>1.kubeadm创建环境k8s-master192.168.150.11k8s-node1192.168.150.12k8s-node2192.168.150.13三台节点都安装docker#Step1:安装必要的一些系统工具sudoyuminstall-yyum-utilsdevice-mapper-persistent-datalvm2#Step2:添加软件源信息sudoyum-config</div> </li> <li><a href="/article/1902418566444019712.htm" title="在Ubuntu上安装MEAN Stack的4个步骤" target="_blank">在Ubuntu上安装MEAN Stack的4个步骤</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a> <div>在Ubuntu上安装MEANStack的4个步骤为:1.安装MEAN;2.安装MongoDB;3.安装NodeJS,Git和NPM;4.安装剩余的依赖项。什么是MEANStack?平均堆栈一直在很大程度上升高为基于稳健的基于JavaScript的开发堆栈。名称的意思是指其组件;MongoDB,ExpressJS,Angularjs和NodeJS。第1步:安装MEAN对于此安装,我们将在本指南中使用</div> </li> <li><a href="/article/1902411842886627328.htm" title="用旧的手机搭建 MQTT Broker-Node_red" target="_blank">用旧的手机搭建 MQTT Broker-Node_red</a> <span class="text-muted">君零渊</span> <a class="tag" taget="_blank" href="/search/%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">单片机</a> <div>MQTTBroker搭建在Android上搭建MQTT所需工具:termux通过网盘分享的文件:termux-app_v0.118.1+github-debug_armeabi-v7a.apk链接:https://pan.baidu.com/s/1Iii2szXAc02cKVGdP1EuzQ?pwd=fqsc提取码:fqsc在Termux中使用MQTT(MessageQueuingTelemetr</div> </li> <li><a href="/article/1902389896421634048.htm" title="82.RadioButton的选中处理逻辑 C#例子 WPF例子" target="_blank">82.RadioButton的选中处理逻辑 C#例子 WPF例子</a> <span class="text-muted">军训猫猫头</span> <a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</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/wpf/1.htm">wpf</a> <div>privatevoidRadioButton_Click(objectsender,RoutedEventArgse){//确保sender是RadioButton类型if(senderisRadioButtonradioButton&&radioButton.IsChecked==true){//获取RadioButton的内容if(radioButton.Contentisstringcont</div> </li> <li><a href="/article/1902381817533624320.htm" title="【Leetcode】430. 扁平化多级双向链表" target="_blank">【Leetcode】430. 扁平化多级双向链表</a> <span class="text-muted">海绵波波107</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95%E5%92%8Cleetcode/1.htm">算法和leetcode</a><a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/%E9%93%BE%E8%A1%A8/1.htm">链表</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>目录一、题目二、思路2.1解题思路2.2代码尝试2.3疑难问题2.4AI复盘三、解法四、收获4.1心得4.2举一反三一、题目二、思路2.1解题思路2.2代码尝试/*//DefinitionforaNode.classNode{public:intval;Node*prev;Node*next;Node*child;};*/classSolution{public:Node*flatten(Node</div> </li> <li><a href="/article/1902375391536934912.htm" title="Node.js系列(4)--微服务架构实践" target="_blank">Node.js系列(4)--微服务架构实践</a> <span class="text-muted">一进制ᅟᅠ        ‌‍‎‏ </span> <a class="tag" taget="_blank" href="/search/Node.js/1.htm">Node.js</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">微服务</a> <div>Node.js微服务架构实践引言微服务架构已成为构建大规模Node.js应用的主流选择。本文将深入探讨Node.js微服务架构的设计与实现,包括服务拆分、服务治理、通信机制等方面,帮助开发者构建可扩展的微服务系统。微服务架构概述Node.js微服务架构主要包括以下方面:服务拆分:业务领域划分与服务边界服务治理:服务注册、发现与负载均衡通信机制:同步与异步通信方案数据管理:分布式事务与数据一致性可观</div> </li> <li><a href="/article/1902370474885705728.htm" title="java实现二叉树的深度优先遍历" target="_blank">java实现二叉树的深度优先遍历</a> <span class="text-muted">开往1982</span> <a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E4%BC%98%E5%85%88/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/java/1.htm">java</a> <div>深度优先三种遍历方法1.先序遍历2.中序遍历3.后序遍历1.定义树节点(这里我重构了tostring方法)packagecom.data.tree;publicclassNode{intvalue;Nodeleft;Noderight;publicNode(intval){value=val;}@OverridepublicStringtoString(){return"Node[value="+</div> </li> <li><a href="/article/1902358995071463424.htm" title="路由器的配置命令" target="_blank">路由器的配置命令</a> <span class="text-muted">yinyaoqi</span> <a class="tag" taget="_blank" href="/search/%E8%B7%AF%E7%94%B1%E5%99%A8/1.htm">路由器</a><a class="tag" taget="_blank" href="/search/interface/1.htm">interface</a><a class="tag" taget="_blank" href="/search/cisco/1.htm">cisco</a><a class="tag" taget="_blank" href="/search/ios/1.htm">ios</a><a class="tag" taget="_blank" href="/search/network/1.htm">network</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>路由命令十全大补router>enable从用户模式进入特权模式router#disableorexit从特权模式退出到用户模式router#showsessions查看本机上的TELNET会话router#disconnect关闭所有的TELNET会话router#showusers查看本机上的用户router#erasestartup-config删除NVRAM中的配置router#reloa</div> </li> <li><a href="/article/1902354584488177664.htm" title="707. 设计链表 链表的知识复习" target="_blank">707. 设计链表 链表的知识复习</a> <span class="text-muted">U_p_</span> <a class="tag" taget="_blank" href="/search/%E5%8A%9B%E6%89%A3/1.htm">力扣</a><a class="tag" taget="_blank" href="/search/c%2B%2B%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/1.htm">c++基础知识</a><a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/%E9%93%BE%E8%A1%A8/1.htm">链表</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>707.设计链表classMyLinkedList{public:structLinkedNode{intval;LinkedNode*next;LinkedNode(intval):val(val),next(nullptr){}};MyLinkedList(){dummyhead=newLinkedNode(0);size=0;}intget(intindex){if(index=size){</div> </li> <li><a href="/article/1902349581476229120.htm" title="创建在线工具来测量 PDF图纸" target="_blank">创建在线工具来测量 PDF图纸</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a> <div>在线处理PDF文件时,能够直接在浏览器中测量尺寸和内容可以显著提高工作效率。本指南将引导您完成使用ComPDFKit的WebSDK构建在线PDF测量工具的简单过程。先决条件首先,您需要访问我们的“WebSDK指南”页面来检查您是否满足这些要求:Node.js的最新稳定版本。与npm兼容的包管理器。应用许可证密钥如何获取30天免费许可证ComPDFKit为每个人提供30天免费许可证密钥,以测试他们的</div> </li> <li><a href="/article/1902339714057302016.htm" title="前端架构 —— 脚手架的本地调试方法" target="_blank">前端架构 —— 脚手架的本地调试方法</a> <span class="text-muted">mask-li</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>脚手架本地link标准流程链接本地脚手架:cdyour-cli-dirnpmlink在当前node全局依赖中创建一个脚手架并且指向文件目录,而且会创建一个可执行文件链接本地库文件:cdyour-lib-dirnpmlinkcdyour-cli-dirnpmlinkyour-lib取消链接本地库文件:cdyour-lib-dirnpmunlinkcdyour-cli-dirnpmunlinkyour</div> </li> <li><a href="/article/1902336059375677440.htm" title="使用 Vue 2.x + Element UI 搭建后台管理系统详解" target="_blank">使用 Vue 2.x + Element UI 搭建后台管理系统详解</a> <span class="text-muted">不知名靓仔</span> <a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/ui/1.htm">ui</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>引言Vue.js是一个非常流行的前端框架,而ElementUI是基于Vue2.x的一套完整的UI组件库,非常适合用来构建企业级的后台管理系统。本文将详细介绍如何使用Vue2.x和ElementUI来搭建一个后台管理系统,包括项目初始化、路由配置、状态管理、权限验证等关键步骤。vue2后台管理项目源码合集下载地址见最下方1.环境准备确保你的开发环境中已安装Node.js和npm。接下来,我们将使用V</div> </li> <li><a href="/article/1902319537198526464.htm" title="create-react-app创建的项目中设置webpack配置" target="_blank">create-react-app创建的项目中设置webpack配置</a> <span class="text-muted">沃野_juededa</span> <a class="tag" taget="_blank" href="/search/react.js/1.htm">react.js</a><a class="tag" taget="_blank" href="/search/webpack/1.htm">webpack</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>create-react-app创建的项目默认使用的是react-scripts(存在于node_modules文件夹中)来处理开发服务器和构建,它内置了一些webpack相关配置。一般不会暴露出来给开发者,但是在有些情况下我们需要修改下webpack默认配置,如修改outputPath、sourcemap方案等,但由于eject是不可逆的,所以craco插件应运而生,为我们提供了更好的解决方案。</div> </li> <li><a href="/article/1902319284491710464.htm" title="echarts graph搭配lines形成动效关系图" target="_blank">echarts graph搭配lines形成动效关系图</a> <span class="text-muted">沃野_juededa</span> <a class="tag" taget="_blank" href="/search/echarts/1.htm">echarts</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>import*asechartsfrom'echarts';exportdefault{mounted(){this.initChart();},methods:{initChart(){constchart=echarts.init(this.$refs.chart);letdataMap=newMap();constdata={nodes:[{name:'Node1'},{name:'Node</div> </li> <li><a href="/article/1902304273832669184.htm" title="DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例3,TableView15_03导出全部数据示例" target="_blank">DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例3,TableView15_03导出全部数据示例</a> <span class="text-muted">宝码香车</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</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/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a> <div>前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦目录DeepSeek助力Vue3开发:打造丝滑的表格(Table)之添加导出数据功能示例3,TableView15_03导出全部数据示例前言页面效果组件代码代码测试测试代码正常跑通,附其他基本代码编写路由src\router\index.js编写</div> </li> <li><a href="/article/1902294944190623744.htm" title="使用AI python实现将前端angularjs工程转换成vue工程案例" target="_blank">使用AI python实现将前端angularjs工程转换成vue工程案例</a> <span class="text-muted">银行金融科技</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/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/python/1.htm">python</a> <div>以下是一个结合Python和AI技术实现AngularJS到Vue工程迁移的完整案例,包含关键转换策略和代码实现:案例背景目标:将使用AngularJS1.x的电商后台管理系统转换为Vue3工程,主要转换以下部分:模板语法控制器逻辑服务依赖路由配置状态管理原始AngularJS代码片段:javascript//app.jsangular.module('app',['ui.router']).co</div> </li> <li><a href="/article/1902294565814071296.htm" title="【从零开始:如何用Vue3打造响应式个人博客网站】" target="_blank">【从零开始:如何用Vue3打造响应式个人博客网站】</a> <span class="text-muted">小怪兽9699</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/ecmascript/1.htm">ecmascript</a> <div>前言在前端开发领域,Vue.js是一个非常流行且强大的框架。本文将详细介绍如何使用Vue3构建一个完整的响应式个人博客网站。无论你是初学者还是有一定经验的开发者,本文都将为你提供详细的步骤和代码示例。1.环境搭建首先,确保你已经安装了Node.js和npm。然后,全局安装VueCLI:npminstall-g@vue/cli2.项目初始化使用VueCLI创建一个新的Vue项目:vuecreatem</div> </li> <li><a href="/article/1902283087157456896.htm" title="HoRain云--Node.js文件下载服务实战:Express实现安全高效的文件传输" target="_blank">HoRain云--Node.js文件下载服务实战:Express实现安全高效的文件传输</a> <span class="text-muted">HoRain云小助手</span> <a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/express/1.htm">express</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a> <div>HoRain云小助手:个人主页个人专栏:《Linux系列教程》《c语言教程》⛺️生活的理想,就是为了理想的生活!⛳️推荐前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。专栏介绍专栏名称专栏介绍《C语言》本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。《网络协议》本专栏主要是注重从底层来给大家一步步剖析网</div> </li> <li><a href="/article/1902255978359877632.htm" title="linux zk服务 关闭_linux – 如何在Ubuntu上停止ZooKeeper?" target="_blank">linux zk服务 关闭_linux – 如何在Ubuntu上停止ZooKeeper?</a> <span class="text-muted">童广</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/zk%E6%9C%8D%E5%8A%A1/1.htm">zk服务</a><a class="tag" taget="_blank" href="/search/%E5%85%B3%E9%97%AD/1.htm">关闭</a> <div>我按照建议here在ubuntu14.04上安装了zookeeperd:不幸的是,这个过程在某种程度上是不可停止的.我甚至试过杀了-9user@node1:/opt/zookeeper-3.4.6$ps-ef|grepzookeeperzookeep+40081801:07?00:00:00/usr/bin/java-cp/etc/zookeeper/conf:/usr/share/java/jl</div> </li> <li><a href="/article/1902248914531184640.htm" title="docker 安装elasticsearch kibana,设置密码" target="_blank">docker 安装elasticsearch kibana,设置密码</a> <span class="text-muted">biguojun</span> <a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/elasticsearch/1.htm">elasticsearch</a><a class="tag" taget="_blank" href="/search/kibana/1.htm">kibana</a> <div>安装elasticsearchdockerpulldocker.elastic.co/elasticsearch/elasticsearch:7.17.28dockerrun-d--namedocker-es-e"ES_JAVA_OPTS=-Xms512m-Xmx512m"-e"discovery.type=single-node"-vD:\docker\es\data:/usr/share/el</div> </li> <li><a href="/article/1902247906400858112.htm" title="在Ubuntu上安装MEAN Stack的4个步骤" target="_blank">在Ubuntu上安装MEAN Stack的4个步骤</a> <span class="text-muted">Kaede6</span> <a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF%E6%96%87%E7%AB%A0-Linux%E6%9C%8D%E5%8A%A1%E9%83%A8%E7%BD%B2/1.htm">技术文章-Linux服务部署</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>在Ubuntu上安装MEANStack的4个步骤为:1.安装MEAN;2.安装MongoDB;3.安装NodeJS,Git和NPM;4.安装剩余的依赖项。什么是MEANStack?平均堆栈一直在很大程度上升高为基于稳健的基于JavaScript的开发堆栈。名称的意思是指其组件;MongoDB,ExpressJS,Angularjs和NodeJS。第1步:安装MEAN对于此安装,我们将在本指南中使用</div> </li> <li><a href="/article/1902206542762012672.htm" title="如何解决跨域请求的问题(CORS)?" target="_blank">如何解决跨域请求的问题(CORS)?</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/okhttp%E5%89%8D%E7%AB%AF/1.htm">okhttp前端</a> <div>文章目录引言理解CORS2.1CORS基本概念2.2同源策略与跨域分类CORS的核心机制3.1预检请求(PreflightRequest)3.2简单请求服务器端配置CORS4.1关键响应头4.2Node.js(Express)示例4.3其他后端语言配置前端处理CORS请求5.1XMLHttpRequest与FetchAPIXMLHttpRequest示例FetchAPI示例5.2使用第三方库(ax</div> </li> <li><a href="/article/1902201758386548736.htm" title="CAPL系统事件-01 on preStart" target="_blank">CAPL系统事件-01 on preStart</a> <span class="text-muted">正当少年</span> <a class="tag" taget="_blank" href="/search/CAPL/1.htm">CAPL</a><a class="tag" taget="_blank" href="/search/CAPL/1.htm">CAPL</a> <div>在CAPL(CANAccessProgrammingLanguage)中,onpreStart事件是一个特殊的事件处理程序,用于在仿真节点(SimulationNode)启动之前执行特定的初始化操作。这个事件通常用于设置仿真环境的初始状态、初始化变量、配置总线参数等。1.onpreStart事件的基本功能触发时机:在仿真节点启动之前触发。主要用途:初始化变量和信号。配置总线参数(如波特率、通道模式</div> </li> <li><a href="/article/1902193421867610112.htm" title="C或C++中实现数据结构课程中的链表、数组、树和图案例" target="_blank">C或C++中实现数据结构课程中的链表、数组、树和图案例</a> <span class="text-muted">小弟有话说1.0</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/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/c%2B%2B/1.htm">c++</a> <div>1.双向链表(DoublyLinkedList)-----支持双向遍历。C++实现#includestructNode{intdata;Node*prev;Node*next;};classDoublyLinkedList{private:Node*head;public:DoublyLinkedList():head(nullptr){}//在链表末尾插入节点voidappend(intdata</div> </li> <li><a href="/article/1902162011182133248.htm" title="kubernetes部署 etcd 集群" target="_blank">kubernetes部署 etcd 集群</a> <span class="text-muted">weixin_30569033</span> <a class="tag" taget="_blank" href="/search/json/1.htm">json</a> <div>本文档介绍部署一个三节点高可用etcd集群的步骤:etcd集群各节点的名称和IP如下:kube-node0:192.168.111.10kube-node1:192.168.111.11kube-node2:192.168.111.12创建etcd证书和私钥,所有证书和私钥的操作在/etc/kubernetes/ca/目录。这里说下题外话:证书和私钥跟程序本身没有什么特定的关系,只是网络传输时的认</div> </li> <li><a href="/article/1902161631815725056.htm" title="【进阶编程】Roslyn 解析 C# 语法树(Syntax Tree)的节点详解" target="_blank">【进阶编程】Roslyn 解析 C# 语法树(Syntax Tree)的节点详解</a> <span class="text-muted">de之梦-御风</span> <a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF/1.htm">技术</a><a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a><a class="tag" taget="_blank" href="/search/%E8%BF%9B%E9%98%B6%E7%BC%96%E7%A8%8B/1.htm">进阶编程</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a> <div>Roslyn解析C#语法树(SyntaxTree)的节点详解Roslyn解析C#代码后会生成一棵语法树(SyntaxTree),其中每个代码元素(类、方法、变量等)都是一个语法节点(SyntaxNode)。在Roslyn中,语法树的核心结构包括:SyntaxTree(语法树)SyntaxNode(语法节点)SyntaxToken(语法标记,如关键字、标点符号)SyntaxTrivia(额外信息,如</div> </li> <li><a href="/article/1902158099611971584.htm" title="自己用 Node 搭个 DeepSeek 用起来香麻了" target="_blank">自己用 Node 搭个 DeepSeek 用起来香麻了</a> <span class="text-muted">李游Leo</span> <a class="tag" taget="_blank" href="/search/%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/1.htm">环境配置</a><a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B/1.htm">视频教程</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/deep/1.htm">deep</a><a class="tag" taget="_blank" href="/search/%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/1.htm">语言模型</a> <div>不知道大家最近有没有关注DeepSeek,确实是火出圈了,过年串亲戚的大爷大妈们都能聊几句,而且不管是刷短视频,还是逛社交平台,到处都能看到大家在讨论DeepSeek。而且目前这把火还烧到美国去了,整的GPT都要免费了,而且文心外加开源+免费,就连王毅外长念完了诗之后都对外说了,不懂可以去查查deepseek。好家伙,这buff越叠越高啊,那这么好的东西,咱们是不是就要看一看了!!!不研究一下似乎</div> </li> <li><a href="/article/1902153811133263872.htm" title="Node.js 包与 npm 详解:概念、作用及完整使用指南" target="_blank">Node.js 包与 npm 详解:概念、作用及完整使用指南</a> <span class="text-muted">还是鼠鼠</span> <a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/npm/1.htm">npm</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/vscode/1.htm">vscode</a><a class="tag" taget="_blank" href="/search/web/1.htm">web</a> <div>目录1.Node.js包的概念与作用什么是包?包的作用2.npm(NodePackageManager)简介常用npm命令3.创建一个本地Node.js包步骤1:初始化npm项目步骤2:编写index.js步骤3:在另一个项目中使用这个包4.安装和使用第三方npm包安装lodash使用lodash5.全局安装包与命令行工具6.发布自己的npm包创建npm账号发布包7.结论在Node.js中,**包</div> </li> <li><a href="/article/1902150405035454464.htm" title="ES中_cat/nodes返回结果参数的解释以及性能调优指南" target="_blank">ES中_cat/nodes返回结果参数的解释以及性能调优指南</a> <span class="text-muted">Elastic开源社区</span> <a class="tag" taget="_blank" href="/search/elasticsearch/1.htm">elasticsearch</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E8%B0%83%E4%BC%98/1.htm">调优</a><a class="tag" taget="_blank" href="/search/ES/1.htm">ES</a><a class="tag" taget="_blank" href="/search/%E5%85%A8%E6%96%87%E6%A3%80%E7%B4%A2/1.htm">全文检索</a><a class="tag" taget="_blank" href="/search/ES%E8%A7%92%E8%89%B2/1.htm">ES角色</a> <div>文章目录1、Elasticsearch`_cat/nodes?v`字段详解2、常用字段说明3、`node.role`字段详解4、示例输出5、其他可选参数6、总结1、Elasticsearch_cat/nodes?v字段详解在Elasticsearch中,_cat/nodesAPI用于查看集群中所有节点的信息。通过添加?v参数,可以返回带有表头的详细输出,便于理解每个字段的含义。以下是_cat/no</div> </li> <li><a href="/article/109.htm" title="统一思想认识" target="_blank">统一思想认识</a> <span class="text-muted">永夜-极光</span> <a class="tag" taget="_blank" href="/search/%E6%80%9D%E6%83%B3/1.htm">思想</a> <div>1.统一思想认识的基础,才能有的放矢  原因:    总有一种描述事物的方式最贴近本质,最容易让人理解.    如何让教育更轻松,在于找到最适合学生的方式.          难点在于,如何模拟对方的思维基础选择合适的方式.   &</div> </li> <li><a href="/article/236.htm" title="Joda Time使用笔记" target="_blank">Joda Time使用笔记</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/joda+time/1.htm">joda time</a> <div>Joda Time的介绍可以参考这篇文章: http://www.ibm.com/developerworks/cn/java/j-jodatime.html 工作中也常常用到Joda Time,为了避免每次使用都查API,记录一下常用的用法:     /** * DateTime变化(增减) */ @Tes</div> </li> <li><a href="/article/363.htm" title="FileUtils API" target="_blank">FileUtils API</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/FileUtils/1.htm">FileUtils</a><a class="tag" taget="_blank" href="/search/FileUtils+API/1.htm">FileUtils API</a> <div>转载请出自出处:http://eksliang.iteye.com/blog/2217374 一、概述 这是一个Java操作文件的常用库,是Apache对java的IO包的封装,这里面有两个非常核心的类FilenameUtils跟FileUtils,其中FilenameUtils是对文件名操作的封装;FileUtils是文件封装,开发中对文件的操作,几乎都可以在这个框架里面找到。 非常的好用。 </div> </li> <li><a href="/article/490.htm" title="各种新兴技术" target="_blank">各种新兴技术</a> <span class="text-muted">不懂事的小屁孩</span> <a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF/1.htm">技术</a> <div>1:gradle Gradle 是以 Groovy 语言为基础,面向Java应用为主。基于DSL(领域特定语言)语法的自动化构建工具。 现在构建系统常用到maven工具,现在有更容易上手的gradle, 搭建java环境: http://www.ibm.com/developerworks/cn/opensource/os-cn-gradle/ 搭建android环境: http://m</div> </li> <li><a href="/article/617.htm" title="tomcat6的https双向认证" target="_blank">tomcat6的https双向认证</a> <span class="text-muted">酷的飞上天空</span> <a class="tag" taget="_blank" href="/search/tomcat6/1.htm">tomcat6</a> <div>1.生成服务器端证书 keytool -genkey -keyalg RSA -dname "cn=localhost,ou=sango,o=none,l=china,st=beijing,c=cn" -alias server -keypass password -keystore server.jks -storepass password -validity 36</div> </li> <li><a href="/article/744.htm" title="托管虚拟桌面市场势不可挡" target="_blank">托管虚拟桌面市场势不可挡</a> <span class="text-muted">蓝儿唯美</span> <div>用户还需要冗余的数据中心,dinCloud的高级副总裁兼首席营销官Ali Din指出。该公司转售一个MSP可以让用户登录并管理和提供服务的用于DaaS的云自动化控制台,提供服务或者MSP也可以自己来控制。 在某些情况下,MSP会在dinCloud的云服务上进行服务分层,如监控和补丁管理。 MSP的利润空间将根据其参与的程度而有所不同,Din说。 “我们有一些合作伙伴负责将我们推荐给客户作为个</div> </li> <li><a href="/article/871.htm" title="spring学习——xml文件的配置" target="_blank">spring学习——xml文件的配置</a> <span class="text-muted">a-john</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a> <div>在Spring的学习中,对于其xml文件的配置是必不可少的。在Spring的多种装配Bean的方式中,采用XML配置也是最常见的。以下是一个简单的XML配置文件: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.or</div> </li> <li><a href="/article/998.htm" title="HDU 4342 History repeat itself 模拟" target="_blank">HDU 4342 History repeat itself 模拟</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/%E6%A8%A1%E6%8B%9F/1.htm">模拟</a> <div>来源:http://acm.hdu.edu.cn/showproblem.php?pid=4342 题意:首先让求第几个非平方数,然后求从1到该数之间的每个sqrt(i)的下取整的和。 思路:一个简单的模拟题目,但是由于数据范围大,需要用__int64。我们可以首先把平方数筛选出来,假如让求第n个非平方数的话,看n前面有多少个平方数,假设有x个,则第n个非平方数就是n+x。注意两种特殊情况,即</div> </li> <li><a href="/article/1125.htm" title="java中最常用jar包的用途" target="_blank">java中最常用jar包的用途</a> <span class="text-muted">asia007</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>java中最常用jar包的用途 jar包用途axis.jarSOAP引擎包commons-discovery-0.2.jar用来发现、查找和实现可插入式接口,提供一些一般类实例化、单件的生命周期管理的常用方法.jaxrpc.jarAxis运行所需要的组件包saaj.jar创建到端点的点到点连接的方法、创建并处理SOAP消息和附件的方法,以及接收和处理SOAP错误的方法.  w</div> </li> <li><a href="/article/1252.htm" title="ajax获取Struts框架中的json编码异常和Struts中的主控制器异常的解决办法" target="_blank">ajax获取Struts框架中的json编码异常和Struts中的主控制器异常的解决办法</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/json%E7%BC%96%E7%A0%81%E8%BF%94%E5%9B%9E%E5%BC%82%E5%B8%B8/1.htm">json编码返回异常</a> <div>一:ajax获取自定义Struts框架中的json编码  出现以下 问题:       1,强制flush输出  json编码打印在首页 2, 不强制flush js会解析json 打印出来的是错误的jsp页面   却没有跳转到错误页面 3,  ajax中的dataType的json 改为text 会</div> </li> <li><a href="/article/1379.htm" title="JUnit使用的设计模式" target="_blank">JUnit使用的设计模式</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/JUnit/1.htm">JUnit</a> <div>JUnit源代码涉及使用了大量设计模式 1、模板方法模式(Template Method)         定义一个操作中的算法骨架,而将一些步骤延伸到子类中去,使得子类可以不改变一个算法的结构,即可重新定义该算法的某些特定步骤。这里需要复用的是算法的结构,也就是步骤,而步骤的实现可以在子类中完成。   </div> </li> <li><a href="/article/1506.htm" title="Linux常用命令(摘录)" target="_blank">Linux常用命令(摘录)</a> <span class="text-muted">sunjing</span> <a class="tag" taget="_blank" href="/search/crond/1.htm">crond</a><a class="tag" taget="_blank" href="/search/chkconfig/1.htm">chkconfig</a> <div>chkconfig --list   查看linux所有服务 chkconfig --add servicename 添加linux服务 netstat -apn | grep 8080  查看端口占用 env 查看所有环境变量 echo $JAVA_HOME 查看JAVA_HOME环境变量   安装编译器 yum install -y gcc</div> </li> <li><a href="/article/1633.htm" title="【Hadoop一】Hadoop伪集群环境搭建" target="_blank">【Hadoop一】Hadoop伪集群环境搭建</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a> <div> 结合网上多份文档,不断反复的修正hadoop启动和运行过程中出现的问题,终于把Hadoop2.5.2伪分布式安装起来,跑通了wordcount例子。Hadoop的安装复杂性的体现之一是,Hadoop的安装文档非常多,但是能一个文档走下来的少之又少,尤其是Hadoop不同版本的配置差异非常的大。Hadoop2.5.2于前两天发布,但是它的配置跟2.5.0,2.5.1没有分别。 &nb</div> </li> <li><a href="/article/1760.htm" title="Anychart图表系列五之事件监听" target="_blank">Anychart图表系列五之事件监听</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/chart/1.htm">chart</a> <div>创建图表事件监听非常简单:首先是通过addEventListener('监听类型',js监听方法)添加事件监听,然后在js监听方法中定义具体监听逻辑。 以钻取操作为例,当用户点击图表某一个point的时候弹出point的name和value,代码如下: <script> //创建AnyChart var chart = new AnyChart(); //添加钻取操作&quo</div> </li> <li><a href="/article/1887.htm" title="Web前端相关段子" target="_blank">Web前端相关段子</a> <span class="text-muted">braveCS</span> <a class="tag" taget="_blank" href="/search/web%E5%89%8D%E7%AB%AF/1.htm">web前端</a> <div>Web标准:结构、样式和行为分离   使用语义化标签 0)标签的语义:使用有良好语义的标签,能够很好地实现自我解释,方便搜索引擎理解网页结构,抓取重要内容。去样式后也会根据浏览器的默认样式很好的组织网页内容,具有很好的可读性,从而实现对特殊终端的兼容。 1)div和span是没有语义的:只是分别用作块级元素和行内元素的区域分隔符。当页面内标签无法满足设计需求时,才会适当添加div</div> </li> <li><a href="/article/2014.htm" title="编程之美-24点游戏" target="_blank">编程之美-24点游戏</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B9%8B%E7%BE%8E/1.htm">编程之美</a> <div> import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Random; import java.util.Set; public class PointGame { /**编程之美 </div> </li> <li><a href="/article/2141.htm" title="主页面子页面传值总结" target="_blank">主页面子页面传值总结</a> <span class="text-muted">chengxuyuancsdn</span> <a class="tag" taget="_blank" href="/search/%E6%80%BB%E7%BB%93/1.htm">总结</a> <div>1、showModalDialog returnValue是javascript中html的window对象的属性,目的是返回窗口值,当用window.showModalDialog函数打开一个IE的模式窗口时,用于返回窗口的值 主界面 var sonValue=window.showModalDialog("son.jsp"); 子界面 window.retu</div> </li> <li><a href="/article/2268.htm" title="[网络与经济]互联网+的含义" target="_blank">[网络与经济]互联网+的含义</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E4%BA%92%E8%81%94%E7%BD%91%2B/1.htm">互联网+</a> <div>       互联网+后面是一个人的名字 = 网络控制系统       互联网+你的名字 =  网络个人数据库       每日提示:如果人觉得不舒服,千万不要外出到处走动,就呆在床上,玩玩手游,更不能够去开车,现在交通状况不</div> </li> <li><a href="/article/2395.htm" title="oracle 创建视图 with check option" target="_blank">oracle 创建视图 with check option</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/%E8%A7%86%E5%9B%BE/1.htm">视图</a><a class="tag" taget="_blank" href="/search/view/1.htm">view</a><a class="tag" taget="_blank" href="/search/oralce/1.htm">oralce</a> <div>我们来看下面的例子: create or replace view testview as select empno,ename from emp where ename like ‘M%’ with check option; 这里我们创建了一个视图,并使用了with check option来限制了视图。 然后我们来看一下视图包含的结果: select * from testv</div> </li> <li><a href="/article/2522.htm" title="ToastPlugin插件在cordova3.3下使用" target="_blank">ToastPlugin插件在cordova3.3下使用</a> <span class="text-muted">dibov</span> <a class="tag" taget="_blank" href="/search/Cordova/1.htm">Cordova</a> <div>    自己开发的Todos应用,想实现“ 再按一次返回键退出程序 ”的功能,采用网上的ToastPlugins插件,发现代码或文章基本都是老版本,运行问题比较多。折腾了好久才弄好。下面吧基于cordova3.3下的ToastPlugins相关代码共享。       ToastPlugin.java package&nbs</div> </li> <li><a href="/article/2649.htm" title="C语言22个系统函数" target="_blank">C语言22个系统函数</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/function/1.htm">function</a> <div>C语言系统函数一、数学函数下列函数存放在math.h头文件中Double floor(double num) 求出不大于num的最大数。Double fmod(x, y) 求整数x/y的余数。Double frexp(num, exp); double num; int *exp; 将num分为数字部分(尾数)x和 以2位的指数部分n,即num=x*2n,指数n存放在exp指向的变量中,返回x。D</div> </li> <li><a href="/article/2776.htm" title="开发一个类的流程" target="_blank">开发一个类的流程</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91/1.htm">开发</a> <div>本人近日根据自己的开发经验总结了一个类的开发流程。这个流程适用于单独开发的构件,并不适用于对一个项目中的系统对象开发。开发出的类可以存入私人类库,供以后复用。   以下是开发流程: 1. 明确类的功能,抽象出类的大概结构 2. 初步设想类的接口 3. 类名设计(驼峰式命名) 4. 属性设置(权限设置) 判断某些变量是否有必要作为成员属</div> </li> <li><a href="/article/2903.htm" title="java 并发" target="_blank">java 并发</a> <span class="text-muted">shuizhaosi888</span> <a class="tag" taget="_blank" href="/search/java+%E5%B9%B6%E5%8F%91/1.htm">java 并发</a> <div>能够写出高伸缩性的并发是一门艺术   在JAVA SE5中新增了3个包 java.util.concurrent java.util.concurrent.atomic java.util.concurrent.locks 在java的内存模型中,类的实例字段、静态字段和构成数组的对象元素都会被多个线程所共享,局部变量与方法参数都是线程私有的,不会被共享。 </div> </li> <li><a href="/article/3030.htm" title="Spring Security(11)——匿名认证" target="_blank">Spring Security(11)——匿名认证</a> <span class="text-muted">234390216</span> <a class="tag" taget="_blank" href="/search/Spring+Security/1.htm">Spring Security</a><a class="tag" taget="_blank" href="/search/ROLE_ANNOYMOUS/1.htm">ROLE_ANNOYMOUS</a><a class="tag" taget="_blank" href="/search/%E5%8C%BF%E5%90%8D/1.htm">匿名</a> <div>匿名认证 目录 1.1     配置 1.2     AuthenticationTrustResolver          对于匿名访问的用户,Spring Security支持为其建立一个匿名的AnonymousAuthenticat</div> </li> <li><a href="/article/3157.htm" title="NODEJS项目实践0.2[ express,ajax通信...]" target="_blank">NODEJS项目实践0.2[ express,ajax通信...]</a> <span class="text-muted">逐行分析JS源代码</span> <a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a><a class="tag" taget="_blank" href="/search/nodejs/1.htm">nodejs</a><a class="tag" taget="_blank" href="/search/express/1.htm">express</a> <div>  一、前言         通过上节学习,我们已经        ubuntu系统搭建了一个可以访问的nodejs系统,并做了nginx转发。本节原要做web端服务 及 mongodb的存取,但写着写着,web端就</div> </li> <li><a href="/article/3284.htm" title="在Struts2 的Action中怎样获取表单提交上来的多个checkbox的值" target="_blank">在Struts2 的Action中怎样获取表单提交上来的多个checkbox的值</a> <span class="text-muted">lhbthanks</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/struts/1.htm">struts</a><a class="tag" taget="_blank" href="/search/checkbox/1.htm">checkbox</a> <div>第一种方法:获取结果String类型 在 Action 中获得的是一个 String 型数据,每一个被选中的 checkbox 的 value 被拼接在一起,每个值之间以逗号隔开(,)。 所以在 Action 中定义一个跟 checkbox 的 name 同名的属性来接收这些被选中的 checkbox 的 value 即可。 以下是实现的代码: 前台 HTML 代码: </div> </li> <li><a href="/article/3411.htm" title="003.Kafka基本概念" target="_blank">003.Kafka基本概念</a> <span class="text-muted">nweiren</span> <a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a><a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a> <div>Kafka基本概念:Topic、Partition、Message、Producer、Broker、Consumer。 Topic:             消息源(Message)的分类。 Partition:             Topic物理上的分组,一</div> </li> <li><a href="/article/3538.htm" title="Linux环境下安装JDK" target="_blank">Linux环境下安装JDK</a> <span class="text-muted">roadrunners</span> <a class="tag" taget="_blank" href="/search/jdk/1.htm">jdk</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>1、准备工作 创建JDK的安装目录: mkdir -p /usr/java/   下载JDK,找到适合自己系统的JDK版本进行下载: http://www.oracle.com/technetwork/java/javase/downloads/index.html   把JDK安装包下载到/usr/java/目录,然后进行解压: tar -zxvf jre-7</div> </li> <li><a href="/article/3665.htm" title="Linux忘记root密码的解决思路" target="_blank">Linux忘记root密码的解决思路</a> <span class="text-muted">tomcat_oracle</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>1:使用同版本的linux启动系统,chroot到忘记密码的根分区passwd改密码   2:grub启动菜单中加入init=/bin/bash进入系统,不过这时挂载的是只读分区。根据系统的分区情况进一步判断.   3: grub启动菜单中加入 single以单用户进入系统.   4:用以上方法mount到根分区把/etc/passwd中的root密码去除   例如:   ro</div> </li> <li><a href="/article/3792.htm" title="跨浏览器 HTML5 postMessage 方法以及 message 事件模拟实现" target="_blank">跨浏览器 HTML5 postMessage 方法以及 message 事件模拟实现</a> <span class="text-muted">xueyou</span> <a class="tag" taget="_blank" href="/search/jsonp/1.htm">jsonp</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/UI/1.htm">UI</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a> <div>postMessage 是 HTML5 新方法,它可以实现跨域窗口之间通讯。到目前为止,只有 IE8+, Firefox 3, Opera 9, Chrome 3和 Safari 4 支持,而本篇文章主要讲述 postMessage 方法与 message 事件跨浏览器实现。postMessage 方法 JSONP 技术不一样,前者是前端擅长跨域文档数据即时通讯,后者擅长针对跨域服务端数据通讯,p</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>