突袭HTML5之WebGL 3D概述

WebGL开启了网页3D渲染的新时代,它允许在canvas中直接渲染3D的内容,而不借助任何插件。WebGL同canvas 2D的API一样,都是通过脚本操纵对象,所以步骤也是基本相似:准备工作上下文,准备数据,在canvas中绘制对象并渲染。与2D不同的就是3D涉及的知识更多了,例如世界、光线、纹理、相机、矩阵等专业知识。WebGL有一个很好的中文教程,就是下面使用参考中的第一个链接,所以这里不再班门弄斧,后面的内容只是简单的总结一下学习的内容。

浏览器的支持

由于微软有自己的图形发展计划,一直不支持WebGL,所以IE目前除了安装插件外,是无法运行WebGL的。其他的主流浏览器如Chrome、FireFox、Safari、Opera等,都装上最新的版本就可以了。除了浏览器要装最新的外,还要保证显卡的驱动也是最新的。
装上这些以后,可以打开浏览器,输入下面的网址验证一下浏览器对WebGL的支持情况:http://webglreport.sourceforge.net/。

在正常安装以上浏览器之后还是不能运行WebGL,那你可以强制开启WebGL支持试一试。开启方法如下:

Chrome浏览器

我们需要为Chrome加入一些启动参数,以下具体操作步骤以Windows操作系统为例:找到Chrome浏览器的快捷方式,右键点击快捷方式,选择属性;在目标框内,chrome.exe后面的引号后面,加入以下内容:

--enable-webgl --ignore-gpu-blacklist --allow-file-access-from-files

点击确定后关闭Chrome,然后用此快捷方式启动Chrome浏览器。

几个参数的含义如下:

--enable-webgl的意思是开启WebGL支持;

--ignore-gpu-blacklist的意思是忽略GPU黑名单,也就是说有一些显卡GPU因为过于陈旧等原因,不建议运行WebGL,这个参数可以让浏览器忽略这个黑名单,强制运行WebGL;

--allow-file-access-from-files的意思是允许从本地载入资源,如果你不是WebGL的开发者,不需要开发调试WebGL,只是想要看一下WebGL的Demo,那你可以不添加这个参数。

Firefox浏览器

Firefox的用户请在浏览器的地址栏输入“about:config”,回车,然后在过滤器(filter)中搜索“webgl”,将webgl.force-enabled设置为true;将webgl.disabled设置为false;在过滤器(filter)中搜索“security.fileuri.strict_origin_policy”,将security.fileuri.strict_origin_policy设置为false;然后关闭目前开启的所有Firefox窗口,重新启动Firefox。

前两个设置是强制开启WebGL支持,最后一个security.fileuri.strict_origin_policy的设置是允许从本地载入资源,如果你不是WebGL的开发者,不需要开发调试WebGL,只是想要看一下WebGL的Demo,那你可以不设置此项。

Safari浏览器

在菜单中找到“属性”→“高级”,选中“显示开发菜单”,然后到“开发”菜单,选中“开启WebGL”。

开发步骤

下面的代码只是简单总结一下相关的概念,它来源于参考中的中文教程,涉及较多的3D方面的知识。感兴趣的同学直接可以跳到实用参考中的中文教程中学习,比我这里讲解的要详细和准确的多。凑热闹的同学简单看看就可以了,不用深究每一行代码的含义。

准备工作

这个不用说了,就是在页面上添加一个canvas元素作为渲染的容器。例如:

 

  
    Your browser doesn't appear to support the HTML5 canvas element.
  

下面就是正式开始写脚本的时候了,首先看一下程序入口以及整体结构:

 
function start() {
    var canvas = document.getElementById("glcanvas");  
    initGL(canvas);        
    initShaders();        
    initBuffers(); 
       
    gl.clearColor(0.0, 0.0, 0.0, 1.0);        
    gl.enable(gl.DEPTH_TEST); 
       
    drawScene();    
} 

这里的几个方法代表了典型的WebGL的绘制步骤:

步骤一:初始化WebGL工作环境 - initGL

这个方法的代码如下:

 
var gl;    
function initGL(canvas) {  
  gl=null;      
  try {
    // Try to grab the standard context. If it fails, fallback to experimental.
    gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
  }
  catch(e) {}

  // If we don't have a GL context, give up now
  if (!gl) {
    alert("Unable to initialize WebGL. Your browser may not support it.");
  }
} 

这个方法很简单,就是获取WebGL的绘制环境,需要把参数"webgl"传给canvas.getContext方法就行了,但是由于目前WebGL的标准没有最终定型,所以实验阶段用的参数都是"experimental-webgl"。当然你直接去调用canvas.getContext("experimental-webgl")也是可以的,等标准定下以后,你再修改一个代码。

步骤二:初始化着色器Shaders - initShaders

着色器Shader概念比较简单,说白了就是显卡运算指令。构造3D场景需要进行大量的颜色、位置等等信息的计算,如果这些计算由软件执行的话,速度会很慢。所以把这些运算让显卡去计算,速度就很快;如何去执行这些计算,就是由着色器指定的。着色器代码是用一种叫做GLSL的着色器语言编写的,这个我们不去讲述这个语言了。

着色器可以在html中定义,在代码中使用。当然了你在程序中用一个字符串去定义着色器也是一样的。

下面先看定义的部分:

 

这里有两个着色器:面着色器和顶点着色器。

关于这两个着色器,这里有必要说明一下,计算机中的3D模型基本都是由点结合三角面片去描述的,顶点着色器就是去处理这些点的数据,而面着色器就是通过插值的方式,去处理三角面片上点的数据。

上面定义的顶点着色器就定义了顶点的位置和颜色计算方式;而面着色器定义了插值点的颜色计算方式。实际的应用场景中,还会涉及到在着色器中处理光线等效果。

定义了着色器,在程序中就可以查找到它们并可以去使用:

 
    var shaderProgram;

    function initShaders() {
        var fragmentShader = getShader(gl, "shader-fs");
        var vertexShader = getShader(gl, "shader-vs");

        shaderProgram = gl.createProgram();
        gl.attachShader(shaderProgram, vertexShader);
        gl.attachShader(shaderProgram, fragmentShader);
        gl.linkProgram(shaderProgram);

        if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {
            alert("Could not initialise shaders");
        }

        gl.useProgram(shaderProgram);

        shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition");
        gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute);

        shaderProgram.vertexColorAttribute = gl.getAttribLocation(shaderProgram, "aVertexColor");
        gl.enableVertexAttribArray(shaderProgram.vertexColorAttribute);

        shaderProgram.pMatrixUniform = gl.getUniformLocation(shaderProgram, "uPMatrix");
        shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix");
    }

着色器是有了,但是怎么让显卡去执行,Program就是这种桥梁,它是WebGL原生的二进制码,它的作用基本上就是让显卡运行着色器代码去渲染指定的模型数据。
这里还用到一个辅助方法getShader,这个方法就是遍历html文档,查找着色器的定义,拿到定义后创建着色器,这里就不细说了:

 
function getShader(gl, id) {
    var shaderScript, theSource, currentChild, shader;
    
    shaderScript = document.getElementById(id);    
    if (!shaderScript) {
        return null;
    }
    
    theSource = "";
    currentChild = shaderScript.firstChild;    
    while(currentChild) {
        if (currentChild.nodeType == currentChild.TEXT_NODE) {
            theSource += currentChild.textContent;
        }
        
        currentChild = currentChild.nextSibling;
    }
    if (shaderScript.type == "x-shader/x-fragment") {
      shader = gl.createShader(gl.FRAGMENT_SHADER);
    } else if (shaderScript.type == "x-shader/x-vertex") {
      shader = gl.createShader(gl.VERTEX_SHADER);
    } else {
     // Unknown shader type
     return null;
    }
   gl.shaderSource(shader, theSource);
    
   // Compile the shader program
   gl.compileShader(shader);  
    
   // See if it compiled successfully
   if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {  
      alert("An error occurred compiling the shaders: " + gl.getShaderInfoLog(shader));  
      return null;  
   }
    
   return shader;
} 

步骤三:创建/加载模型数据 - initBuffers

这些小例子中,模型数据基本都是直接生成的,实际的程序中,这些数据应该都是从模型加载得到的:

 
    var triangleVertexPositionBuffer;
    var triangleVertexColorBuffer;

    function initBuffers() {
        triangleVertexPositionBuffer = gl.createBuffer();
        gl.bindBuffer(gl.ARRAY_BUFFER, triangleVertexPositionBuffer);
        var vertices = [
             0.0,  1.0,  0.0,
            -1.0, -1.0,  0.0,
             1.0, -1.0,  0.0
        ];
        gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);
        triangleVertexPositionBuffer.itemSize = 3;
        triangleVertexPositionBuffer.numItems = 3;

        triangleVertexColorBuffer = gl.createBuffer();
        gl.bindBuffer(gl.ARRAY_BUFFER, triangleVertexColorBuffer);
        var colors = [
            1.0, 0.0, 0.0, 1.0,
            0.0, 1.0, 0.0, 1.0,
            0.0, 0.0, 1.0, 1.0
        ];
        gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(colors), gl.STATIC_DRAW);
        triangleVertexColorBuffer.itemSize = 4;
        triangleVertexColorBuffer.numItems = 3;
    } 

上面这段代码创建了三角形的顶点和顶点的颜色数据并放在缓冲区中。

步骤四:渲染 - drawScene

准备好了数据以后,交给WebGL去渲染就好了,这里调用的是gl.drawArrays方法。看代码:

 
    function drawScene() {
        gl.viewport(0, 0, gl.viewportWidth, gl.viewportHeight);
        gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);

        pMatrix = okMat4Proj(45.0, gl.viewportWidth / gl.viewportHeight, 0.1, 100.0);
        mvMatrix = okMat4Trans(-1.5, 0.0, -7.0);

        gl.bindBuffer(gl.ARRAY_BUFFER, triangleVertexPositionBuffer);
        gl.vertexAttribPointer(shaderProgram.vertexPositionAttribute, triangleVertexPositionBuffer.itemSize,
  gl.FLOAT, false, 0, 0);

        gl.bindBuffer(gl.ARRAY_BUFFER, triangleVertexColorBuffer);
        gl.vertexAttribPointer(shaderProgram.vertexColorAttribute, triangleVertexColorBuffer.itemSize, 
gl.FLOAT, false, 0, 0);

        setMatrixUniforms();
        gl.drawArrays(gl.TRIANGLES, 0, triangleVertexPositionBuffer.numItems);
    } 

这个函数首先设置了3D世界的背景为黑色,然后设置投影矩阵,设置待绘制对象的位置,然后根据缓冲中的顶点和颜色数据,绘制对象。这里还有一些生成投影矩阵和模型视图矩形的辅助方法(使用了Oak3D图形库中的矩阵辅助方法)与主题关系不大,这里就不详细解释了。

基本上流程就是这么多了,更复杂的纹理,光线等都是在这些基础上加入一些WegGL的特性实现的,这个请参看后面的中文教程,里面有详细的例子。

怎么样?使用原生的WebGL开发是一种什么感受?不仅需要有深厚的3D知识,还需要知道各种实现细节。WebGL这样做是为了灵活的适应各种应用场景,但是对于大多数像我这样非专业人士来说,很多细节是不需要知道的。这样就催生了各种辅助开发的类库,例如这节用到的Oak3D库(为了演示WebGL开发,例子中只用到了矩阵辅助方法)。下一节会介绍一个用的比较多的Three.js图形库。

前面我们看到了使用原生的WebGL API开发是多么的累,正因为如此,大量的WebGL框架被开发出来。使用这些框架,你可以快速创建需要的3D场景。这些框架不同程度的封装了创建3D场景的各种要素,例如场景,相机、模型、光照、材质等等;使用这些封装起来的对象,就可以很简单的创建需要的3D场景,这样你就只需要把更多精力放在逻辑方面就可以了。

目前并没有哪一个具有能压倒其他框架的优势,选择什么样的框,还是看个人喜好吧,不过选择框架的时候,个人觉得还是多看看框架最后的更新时间,选择稳定更新的框架能让你始终能使用上最新的特性,使你的程序稳定性更好。

下面的例子就使用了Three.js框架进行开发。

Three.js是一个比较全面的开源框架,它良好的封装的3D场景的各种要素。你可以用它来很容易的去创建摄像机,模型,光照,材质等等。你还可以选择不同的渲染器,Three.js提供了多种渲染方式,你可以选择使用canvas来渲染,也可以使用WebGL或者SVG来进行渲染。

此外,Three.js可以加载很多格式的3D文件,你的模型文件可以来自Blender,Maya,Chinema4D,3DMax等等。而且内置了比较基础的东西:(球体)Spheres, (飞机)Planes, (立方体) Cubes, (圆柱体)Cylinders。Three.js创建这些物体会非常的容易。

好了,不废话了,直接看代码:

 


 
  threeJSDemo title>
  <meta charset="utf-8">
  <style>
   body
   {
    margin:0px;
    background-color:#B0B0B0;
    overload:hidden;
   }
  </style>
 </head>
 <body>
  <script src="Three.js">script>
  <script>
   var camera,scene,renderer;
   var mesh;
   init();
   animate();
   
   function init(){
    scene = new THREE.Scene();
    camera = new THREE.PerspectiveCamera(70,window.innerWidth / window.innerHeight,1,1000);
    camera.position.z = 400;
    scene.add(camera);   
    geometry = new THREE.CubeGeometry(200,200,200);
    material = new THREE.MeshBasicMaterial( { color: 0xff0000, wireframe: true } );
    mesh = new THREE.Mesh(geometry,material);
    scene.add(mesh);
    renderer = new THREE.WebGLRenderer();
    renderer.setSize(window.innerWidth,window.innerHeight);
    document.body.appendChild(renderer.domElement);
   }  

   function animate() {
    requestAnimationFrame( animate );
    mesh.rotation.x += 0.05;
    mesh.rotation.y += 0.05;
    renderer.render( scene, camera );
   }
   </script>   
 </body>
</html> </pre> </td> 
         </tr> 
        </tbody> 
       </table><p class="artcon">这个是全部的代码,相对于前面使用WebGL的API的代码,这个简直就是太简单了。</p> <p class="artcon">代码很直观,就那么几步:</p> <p class="artcon">1. 创建场景scene。</p> <p class="artcon">2. 创建摄像机camera。</p> <p class="artcon">3. 创建/加载模型geometry。</p> <p class="artcon">4. 加载材质material。</p> <p class="artcon">5. 渲染模型对象mesh(是由geometry和material组成)。</p> <p class="artcon">6. 启用动画。</p> <p class="artcon">这是每个框架都提供的功能,使用不同的框架除了函数的名称可能不同以外,这些步骤基本都是一样的。下面的参考中列出了很多的框架学习文档,大家可以选几种学习一下。</p> <p class="artcon">针对模型数据,我还想说一点,因为JSON短小精悍,所以比较适合网络传输。未来它可能成为最适合WebGL的模型数据格式,所以很多的框架都开始支持JSON格式的模型数据。</p> </td> 
     </tr> 
    </tbody> 
   </table> 
   <table border="0" align="center"> 
    <tbody> 
     <tr> 
      <td width="34%" height="30"> </td> 
      <td height="30"> </td> 
      <td width="34%" height="30"> </td> 
     </tr> 
     <tr> 
      <td class="lettit" width="34%" height="30">相关文章</td> 
      <td class="lettit" height="30">相关文档</td> 
      <td class="lettit" width="34%" height="30">相关课程</td> 
     </tr> 
     <tr> 
      <td width="34%" height="25"> 
       <hr width="80%"></td> 
      <td width="34%" height="25"> 
       <hr width="80%"></td> 
      <td width="34%" height="25"> 
       <hr width="80%"></td> 
     </tr> 
     <tr> 
      <td width="34%" height="127"> 
       <table> 
        <tbody> 
         <tr> 
          <td width="386" height="25">深度解析:清理烂代码</td> 
         </tr> 
         <tr> 
          <td height="25">如何编写出拥抱变化的代码</td> 
         </tr> 
         <tr> 
          <td height="25">重构-使代码更简洁优美</td> 
         </tr> 
         <tr> 
          <td height="25">团队项目开发"编码规范"系列文章</td> 
         </tr> 
        </tbody> 
       </table></td> 
      <td height="127"> 
       <table> 
        <tbody> 
         <tr> 
          <td width="386" height="25">重构-改善既有代码的设计</td> 
         </tr> 
         <tr> 
          <td height="25">软件重构v2</td> 
         </tr> 
         <tr> 
          <td height="25">代码整洁之道</td> 
         </tr> 
         <tr> 
          <td height="25">高质量编程规范</td> 
         </tr> 
        </tbody> 
       </table></td> 
      <td width="34%" height="127"> </td> 
     </tr> 
    </tbody> 
   </table> 
  </div> 
  <p>转载于:https://www.cnblogs.com/justTheOne-bin/p/3664344.html</p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1714039075553488896"></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">你可能感兴趣的:(json,操作系统)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1891250136911245312.htm"
                           title="Linux中的文件描述符" target="_blank">Linux中的文件描述符</a>
                        <span class="text-muted">王十二er</span>
<a class="tag" taget="_blank" href="/search/Linux%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80/1.htm">Linux编程基础</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/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>这里写目录标题Linux中的文件描述符常见的文件描述符文件描述符的操作重定向输入重定向文件描述符的分配规则文件描述符的特殊情况文件描述符的使用示例文件描述符的管理总结Linux中的文件描述符在Linux和其他类Unix操作系统中,文件描述符(FileDescriptor,FD)是一个非负整数,用于表示正在被进程访问的文件或I/O资源。每个进程都有一张文件描述符表,用于跟踪进程打开的文件和I/O资源</div>
                    </li>
                    <li><a href="/article/1891233371451879424.htm"
                           title="如何在微信小程序中使用 Lottie 动画" target="_blank">如何在微信小程序中使用 Lottie 动画</a>
                        <span class="text-muted">木觞清</span>
<a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">微信小程序</a><a class="tag" taget="_blank" href="/search/%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">小程序</a>
                        <div>Lottie是一种非常流行的动画格式,它是通过JSON文件描述动画,允许你在网页和移动应用中嵌入复杂的动画效果。通过Lottie动画,开发者可以非常方便地实现高质量的动画效果,而不需要手动编写大量的图形代码。微信小程序也支持使用Lottie动画,本文将详细介绍如何在微信小程序中集成和使用Lottie动画。1.安装和配置Lottie库在微信小程序中,想要使用Lottie动画,首先需要引入Lottie</div>
                    </li>
                    <li><a href="/article/1891221765925957632.htm"
                           title="最新 京东E卡 滑块 分析" target="_blank">最新 京东E卡 滑块 分析</a>
                        <span class="text-muted">2766958292</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/go/1.htm">go</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E4%BA%AC%E4%B8%9C/1.htm">京东</a><a class="tag" taget="_blank" href="/search/E%E5%8D%A1/1.htm">E卡</a><a class="tag" taget="_blank" href="/search/%E4%BA%AC%E4%B8%9CE%E5%8D%A1/1.htm">京东E卡</a><a class="tag" taget="_blank" href="/search/%E4%BA%AC%E4%B8%9C%E6%BB%91%E5%9D%97/1.htm">京东滑块</a>
                        <div>声明:本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!逆向分析response=session.post(url,headers=headers,params=params)sid=response.json()['data']cp=execjs.compile(open('jd.j</div>
                    </li>
                    <li><a href="/article/1891180158484803584.htm"
                           title="Apache JMeter 快速入门【图文详情】" target="_blank">Apache JMeter 快速入门【图文详情】</a>
                        <span class="text-muted">甘蓝聊Java</span>
<a class="tag" taget="_blank" href="/search/%E3%80%90%E6%9B%B4%E6%96%B0%E4%B8%AD...%E3%80%91%E9%A1%B9%E7%9B%AE%E4%B8%AD%E7%9A%84%E9%82%A3%E4%BA%9B%E4%BA%8B/1.htm">【更新中...】项目中的那些事</a><a class="tag" taget="_blank" href="/search/apache/1.htm">apache</a><a class="tag" taget="_blank" href="/search/jmeter/1.htm">jmeter</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/1.htm">性能测试</a><a class="tag" taget="_blank" href="/search/%E5%8E%8B%E5%8A%9B%E6%B5%8B%E8%AF%95/1.htm">压力测试</a>
                        <div>文章目录ApacheJMeter简介安装ApacheJMeter入门Demo-测试HTTP接口第1步:创建线程组,模拟并发用户第2步:添加HTTPRequest采样器提供HTTP接口创建HTTPRequest采样器创建JSON断言第3步:添加Listener第4步:运行第5步:查看运行结果更多介绍参考本文目标:快速了解ApacheJMeter,并实现一个简单的HTTP接口的性能测试。官网:http</div>
                    </li>
                    <li><a href="/article/1891155201344204800.htm"
                           title="MongoDB入门与实践" target="_blank">MongoDB入门与实践</a>
                        <span class="text-muted">风中凌乱的猿</span>
<a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>MongoDB是一个NoSQL数据库,它采用文档模型来存储数据,具有高性能、易扩展、灵活的特点。以下是MongoDB的入门指南和一些基本的实践示例,帮助你开始使用MongoDB。1.安装和基本配置安装MongoDB具体安装方法取决于你的操作系统。以Ubuntu为例,可以通过以下命令安装MongoDB:sudoaptupdatesudoaptinstall-ymongodb启动MongoDB安装完成</div>
                    </li>
                    <li><a href="/article/1891149778264322048.htm"
                           title="dapp链上合约算力LP质押项目挖矿系统开发流程详细/源码版" target="_blank">dapp链上合约算力LP质押项目挖矿系统开发流程详细/源码版</a>
                        <span class="text-muted">2301_78234743</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>dapp链上合约算力LP质押项目挖矿系统开发流程详细/源码版开发一个DApp(去中心化应用)链上合约算力LP质押项目挖矿系统需要考虑到智能合约的设计、用户滴滴三面自我介绍写一道题讲下操作系统进程管理操作系统内存管理工作和学生生活有什么区别上段实习学到了什么,难点许愿淘天OC!刚面完hr面,万能的牛客,让过吧Dapp/swap只涨不跌智能合约项目系统开发功能步骤/源码开发DApp/Swap的"只涨不</div>
                    </li>
                    <li><a href="/article/1891143599966449664.htm"
                           title="【vLLM 学习】安装" target="_blank">【vLLM 学习】安装</a>
                        <span class="text-muted"></span>

                        <div>vLLM是一款专为大语言模型推理加速而设计的框架,实现了KV缓存内存几乎零浪费,解决了内存管理瓶颈问题。更多vLLM中文文档及教程可访问→https://vllm.hyper.ai/vLLM是一个Python库,包含预编译的C++和CUDA(12.1)二进制文件。依赖环境操作系统:LinuxPython:3.8-3.12GPU:计算能力7.0或更高(例如V100、T4、RTX20xx、A100、L</div>
                    </li>
                    <li><a href="/article/1891138936043008000.htm"
                           title="基于deepseek api和openweather 天气API实现Function Calling技术讲解" target="_blank">基于deepseek api和openweather 天气API实现Function Calling技术讲解</a>
                        <span class="text-muted">匹马夕阳</span>
<a class="tag" taget="_blank" href="/search/AI%E6%8A%80%E6%9C%AF/1.htm">AI技术</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>以下是一个结合DeepSeekAPI和OpenWeatherAPI的完整FunctionCalling示例,包含意图识别、API调用和结果整合:importrequestsimportjsonimportos#配置API密钥(从环境变量获取)DEEPSEEK_API_KEY=os.getenv("DEEPSEEK_API_KEY")OPENWEATHER_API_KEY=os.getenv("OP</div>
                    </li>
                    <li><a href="/article/1891138683864674304.htm"
                           title="从0开始的操作系统手搓教程 4:做好准备,跳到加载器(Loader)" target="_blank">从0开始的操作系统手搓教程 4:做好准备,跳到加载器(Loader)</a>
                        <span class="text-muted">charlie114514191</span>
<a class="tag" taget="_blank" href="/search/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E7%9A%84%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E6%95%99%E7%A8%8B/1.htm">从0开始的操作系统教程</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E6%B1%87%E7%BC%96/1.htm">汇编</a><a class="tag" taget="_blank" href="/search/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/1.htm">操作系统</a><a class="tag" taget="_blank" href="/search/%E6%89%8B%E6%90%93%E6%95%99%E7%A8%8B/1.htm">手搓教程</a><a class="tag" taget="_blank" href="/search/bochs/1.htm">bochs</a><a class="tag" taget="_blank" href="/search/%E8%B0%83%E8%AF%95/1.htm">调试</a><a class="tag" taget="_blank" href="/search/MBR/1.htm">MBR</a>
                        <div>目录为什么要加载Loader,Loader是干什么的?上菜!NASM的预处理语句%include包含其他文件%define定义一个常量%macro来定义一个代码宏进一步说明常见的NASM的常见的语法和指令进一步理解我们的实模式关于NASM中对于-I指令的使用办法关于bochs的高级调试手段步入正轨:对硬盘进行系统编程系统编程中对硬盘编程的办法对硬盘进行编程最后一瞥添加一个Loader.S作为测试修</div>
                    </li>
                    <li><a href="/article/1891138557456740352.htm"
                           title="从0开始的操作系统手搓教程 附二——调试我们的操作系统(bochs调试小记)" target="_blank">从0开始的操作系统手搓教程 附二——调试我们的操作系统(bochs调试小记)</a>
                        <span class="text-muted">charlie114514191</span>
<a class="tag" taget="_blank" href="/search/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E7%9A%84%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E6%95%99%E7%A8%8B/1.htm">从0开始的操作系统教程</a><a class="tag" taget="_blank" href="/search/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/1.htm">操作系统</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%9E%B6%E6%9E%84/1.htm">计算机架构</a><a class="tag" taget="_blank" href="/search/bochs/1.htm">bochs</a><a class="tag" taget="_blank" href="/search/%E8%B0%83%E8%AF%95/1.htm">调试</a>
                        <div>目录我们可以调试OS的什么理解bochs调试的单位内存尺度查看内存内容disasm作为反汇编指令查看我们正在执行的内容打断点showint查看中断info其他指令我们当然要学习如何使用bochs来调试我们的操作系统。毕竟伴随代码量的增大,出错的概率自然也会直线的上升。我们可以调试OS的什么我们可以查看页表,查看GDT,IDT等后面我们编写操作系统会使用到的数据结构可以看到当前线程流的栈的数据可以反</div>
                    </li>
                    <li><a href="/article/1891136665125187584.htm"
                           title="wow64.dll文件丢失或损坏?5种方法帮你快速修复,简单易懂" target="_blank">wow64.dll文件丢失或损坏?5种方法帮你快速修复,简单易懂</a>
                        <span class="text-muted">mian401</span>
<a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a>
                        <div>wow64.dll是Windows操作系统中的一个重要动态链接库文件,主要用于支持32位应用程序在64位系统上运行。它充当着32位和64位系统之间的桥梁,确保32位程序能够正常调用系统资源。wow64.dll文件缺失或损坏会有什么后果?当wow64.dll文件出现问题时,可能会导致以下情况:无法运行32位应用程序,并弹出错误提示,例如“找不到wow64.dll”或“wow64.dll丢失”。系统运</div>
                    </li>
                    <li><a href="/article/1891130234363768832.htm"
                           title=".Net 7 新编译器 ILC 简析" target="_blank">.Net 7 新编译器 ILC 简析</a>
                        <span class="text-muted">dotNET跨平台</span>
<a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a>
                        <div>楔子:这个新编译器的全称是ILCompiler。是之前CoreRT项目合并过来的,在.Net7成熟,并且可以产业化应用。本质:ILC编译器的本质除了构建CLR的所拥有的主要功能,还包含了对LLVM这种意图取代GCC编译器的操作,对于LLVM主要是用来Win,Linux,Macos三种不同的操作系统的目标文件而所做的封装。一.CLR的主要功能:1.构建内存模型,比如MethodTable,EECla</div>
                    </li>
                    <li><a href="/article/1891124437206495232.htm"
                           title="Linux(WSL/Ubuntu)vscode配置C++调试环境与相关问题" target="_blank">Linux(WSL/Ubuntu)vscode配置C++调试环境与相关问题</a>
                        <span class="text-muted">力行128</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/vscode/1.htm">vscode</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a>
                        <div>步骤:先cmake编译得到可执行的二进制文件,将生成的二进制文件添加到launch.json的"program":处。可用的json文件如下,根据自己程序更改:tasks.json(编译器构建设置)launch.json(调试器设置)c_cpp_properties.json(编译器路径和IntelliSense设置)1.launch.json注:需要将可执行文件填到launch的program处</div>
                    </li>
                    <li><a href="/article/1891121033616879616.htm"
                           title="网络安全入门信息收集与漏洞扫描(二)" target="_blank">网络安全入门信息收集与漏洞扫描(二)</a>
                        <span class="text-muted">挣扎与觉醒中的技术人</span>
<a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%E5%85%A5%E9%97%A8%E5%8F%8A%E5%AE%9E%E6%88%98/1.htm">网络安全入门及实战</a><a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E4%BA%BA%E7%94%9F/1.htm">程序人生</a>
                        <div>主动信息收集1Nmap扫描端口与服务(1)Nmap是什么?定义:网络探测工具,用于扫描开放端口、识别服务及操作系统。典型用途:发现目标存活主机(ping扫描)。识别开放端口和运行的服务(如SSH、HTTP、数据库)。探测操作系统类型(Windows/Linux)。(2)基础扫描命令快速扫描常用端口:nmap-sV-T4192.168.1.100#-sV探测服务版本,-T4加速扫描示例输出:PORT</div>
                    </li>
                    <li><a href="/article/1891116867653791744.htm"
                           title="阅读笔记:x86系统调用入门" target="_blank">阅读笔记:x86系统调用入门</a>
                        <span class="text-muted">yayong</span>
<a class="tag" taget="_blank" href="/search/Solaris/1.htm">Solaris</a><a class="tag" taget="_blank" href="/search/x86/1.htm">x86</a><a class="tag" taget="_blank" href="/search/solaris/1.htm">solaris</a><a class="tag" taget="_blank" href="/search/system/1.htm">system</a><a class="tag" taget="_blank" href="/search/preprocessor/1.htm">preprocessor</a><a class="tag" taget="_blank" href="/search/makefile/1.htm">makefile</a><a class="tag" taget="_blank" href="/search/wrapper/1.htm">wrapper</a>
                        <div>阅读笔记:x86系统调用入门原作者:RussBlaine原文来自:http://blogs.sun.com/roller/page/rab译注者:BadcoffeeEmail:blog.oliver@gmail.comBlog:http://blog.csdn.net/yayong2005年7月按:要开始学习像操作系统这样复杂的东东是一个令人头痛的问题。为了帮助新学者理清头绪,这里我们将讨论Sol</div>
                    </li>
                    <li><a href="/article/1891115228079386624.htm"
                           title="李志军老师操作系统实验" target="_blank">李志军老师操作系统实验</a>
                        <span class="text-muted">JHFeng_white&black</span>
<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>李志军老师操作系统实验_环境搭建准备工作宿主机:macOSMonterey12.2.1虚拟机:我选择的虚拟机是vmwarefusionpro(之前用的是免费版本的vmwarefusion,但是安装了ubuntu后发现始终安装不了vmwaretools)ubuntu18.04.6,这里附上我的网盘链接链接:https://pan.baidu.com/s/1bHpi-PWaqJSUAM_7BXPaLQ</div>
                    </li>
                    <li><a href="/article/1891103748890095616.htm"
                           title="解决“此卷不包含可识别的文件系统”问题,数据恢复有妙招!" target="_blank">解决“此卷不包含可识别的文件系统”问题,数据恢复有妙招!</a>
                        <span class="text-muted">Konkakou</span>
<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%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
                        <div>遭遇“此卷不包含可识别的文件系统”的困境当您试图访问某个存储设备时,如果系统提示“此卷不包含可识别的文件系统”,那么您可能正面临一个棘手的问题。这种情况通常发生在硬盘、U盘、SD卡等存储设备中,意味着存储设备中的文件系统已经损坏或无法被操作系统识别。面对这样的困境,如何找回宝贵的数据成为了当务之急。深入分析“此卷不包含可识别的文件系统”的原因造成“此卷不包含可识别的文件系统”问题的原因可能有很多。</div>
                    </li>
                    <li><a href="/article/1891103243744899072.htm"
                           title="建筑物损坏程度分割数据集labelme格式2816张5类别" target="_blank">建筑物损坏程度分割数据集labelme格式2816张5类别</a>
                        <span class="text-muted">FL1623863129</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E9%9B%86/1.htm">数据集</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a>
                        <div>数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件)图片数量(jpg文件个数):2816标注数量(json文件个数):2816标注类别数:5标注类别名称:["minor-damage","destroyed","un-classified","major-damage","no-damage"]每个类别标注的框数:minor-damagecount=1371</div>
                    </li>
                    <li><a href="/article/1891094547786690560.htm"
                           title="计算机一级wpsoffice知识点,计算机一级考试WPSOffice考试大纲" target="_blank">计算机一级wpsoffice知识点,计算机一级考试WPSOffice考试大纲</a>
                        <span class="text-muted">weixin_39747293</span>

                        <div>◆基本要求1.具有使用微型计算机的基础知识(包括计算机病毒的防治常识)。2.了解微型计算机系统的组成和各组成部分的功能。3.了解操作系统的基本功能和作用,掌握Windows的基本操作和应用。4.了解文字处理的基本知识,掌握文字处理软件“金山文字2003”的基本操作和应用,熟练掌握一种汉字(键盘)输入方法。5.了解电子表格软件的基本知识,掌握电子表格软件“金山表格2003”的基本操作和应用。6.了解</div>
                    </li>
                    <li><a href="/article/1891091015947841536.htm"
                           title="根据deepseek模型微调训练自动驾驶模型及数据集的思路" target="_blank">根据deepseek模型微调训练自动驾驶模型及数据集的思路</a>
                        <span class="text-muted">ywfwyht</span>
<a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E9%A9%BE%E9%A9%B6/1.htm">自动驾驶</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/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%87%AA%E5%8A%A8%E9%A9%BE%E9%A9%B6/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/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a>
                        <div>以下是使用DeepSeek模型微调训练自动驾驶模型的详细步骤和代码示例。本流程假设你已有自动驾驶领域的数据集(如驾驶指令、传感器数据等),并基于PyTorch框架实现。Step1:环境准备#安装依赖库pipinstalltorchtransformersdatasetsnumpypandasStep2:数据准备假设数据集格式为JSON,包含输入文本(传感器/场景描述)和输出控制指令://data/</div>
                    </li>
                    <li><a href="/article/1891089498368962560.htm"
                           title="使用 MySQL 从 JSON 字符串提取数据" target="_blank">使用 MySQL 从 JSON 字符串提取数据</a>
                        <span class="text-muted">m0_66323401</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/1.htm">学习路线</a><a class="tag" taget="_blank" href="/search/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4/1.htm">阿里巴巴</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/json/1.htm">json</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a>
                        <div>使用MySQL从JSON字符串提取数据在现代数据库管理中,JSON格式因其灵活性而广泛使用。然而,当数据存储在JSON中时,我们经常需要将其转换为更易于处理的格式。本篇文章将通过一个具体的SQL查询示例,展示如何从存储在MySQL中的JSON字符串提取数据并重新格式化。1.背景知识JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器</div>
                    </li>
                    <li><a href="/article/1891078660161597440.htm"
                           title="Python 第三方库 PyQt5 的安装" target="_blank">Python 第三方库 PyQt5 的安装</a>
                        <span class="text-muted">狐凄</span>
<a class="tag" taget="_blank" href="/search/%E5%AE%9E%E4%BE%8B/1.htm">实例</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/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>
                        <div>目录前言PyQt5安装不同操作系统PyQt5安装一、Windows系统二、macOS系统三、Linux系统(以Ubuntu为例)安装PyQt5可能会遇到的问题一、环境相关问题二、依赖问题三、网络问题四、安装工具问题五、运行时问题六、环境配置问题七、安装源问题八、检查错误信息九、运行时错误十、尝试不同的安装方法问题解决环境相关问题一、Python版本兼容性问题二、操作系统特定问题三、依赖库问题四、环</div>
                    </li>
                    <li><a href="/article/1891073240051281920.htm"
                           title="如何使用Java来编译运行C文件(一)" target="_blank">如何使用Java来编译运行C文件(一)</a>
                        <span class="text-muted">FunriLy</span>
<a class="tag" taget="_blank" href="/search/%E5%9C%A8%E7%BA%BF%E7%BC%96%E8%AF%91/1.htm">在线编译</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%A0%81%E5%86%9C/1.htm">码农</a><a class="tag" taget="_blank" href="/search/cmd/1.htm">cmd</a>
                        <div>如何使用Java来编译运行C文件(一)前言码农的小日子过得好好的,指导老师一个兴起要求搞一个自己的在线编译网站,我们这种做小弟的只能老老实实地去搞。还好刚刚结束了考试与比赛,因为各种原因导致原定于寒假开工的项目延迟到下学期了,刚好趁这段空闲的时间来搞一搞。其实,自己感觉搞这个的话也挺好玩的~前期技术准备部分1.调用cmd编译C文件先说明一下,我的操作系统是Win10,Linux环境下会有所不同;而</div>
                    </li>
                    <li><a href="/article/1891072862001885184.htm"
                           title="国产编辑器EverEdit - 二进制模式下观察Window/Linux/MacOs换行符差异" target="_blank">国产编辑器EverEdit - 二进制模式下观察Window/Linux/MacOs换行符差异</a>
                        <span class="text-muted">彩虹小黑馬</span>
<a class="tag" taget="_blank" href="/search/%E5%A6%99%E7%94%A8%E7%BC%96%E8%BE%91%E5%99%A8/1.htm">妙用编辑器</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E8%BE%91%E5%99%A8/1.htm">编辑器</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/macos/1.htm">macos</a><a class="tag" taget="_blank" href="/search/EverEdit/1.htm">EverEdit</a><a class="tag" taget="_blank" href="/search/EmEditor/1.htm">EmEditor</a><a class="tag" taget="_blank" href="/search/Notepad/1.htm">Notepad</a>
                        <div>1换行符格式1.1应用场景  稍微了解计算机历史的人都知道,计算机3大操作系统:Windows、Linux/Unix、MacOS,这3大系统对文本换行的定义各不相同,且互不相让,导致在文件的兼容性方面存在一些问题,比如它们对换行的定义:Windows:回车符(CR)+换行符(LF)Linux/Unix:换行符(LF)MacOS:回车符(CR)在Windows上编写的代码,默认使用CR+LF表示换行</div>
                    </li>
                    <li><a href="/article/1891036805206175744.htm"
                           title="LibreOffice转换word文档" target="_blank">LibreOffice转换word文档</a>
                        <span class="text-muted">DreamBoy_W.W.Y</span>
<a class="tag" taget="_blank" href="/search/%E7%9F%A5%E8%AF%86%E5%9B%BE%E8%B0%B1/1.htm">知识图谱</a><a class="tag" taget="_blank" href="/search/word/1.htm">word</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>目录一、前言二、LibreOffice转换的核心代码三、转换后的Pdf提取解析情况一、前言    对于word文档,这里介绍一种解析文本、提取图片的方式。具体技术方案:LibreOffice将docx转换为pdf+再pdfplumber按页提取文本。该方案说明:    LibreOffice是一个跨平台的开源办公套件,支持Linux、Windows和macOS操作系统。目前为止,LibreOffi</div>
                    </li>
                    <li><a href="/article/1891032136526393344.htm"
                           title="AWS上基于Llama 3模型检测Amazon Redshift里文本数据的语法和语义错误的设计方案" target="_blank">AWS上基于Llama 3模型检测Amazon Redshift里文本数据的语法和语义错误的设计方案</a>
                        <span class="text-muted">weixin_30777913</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E4%BB%93%E5%BA%93/1.htm">数据仓库</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a><a class="tag" taget="_blank" href="/search/aws/1.htm">aws</a><a class="tag" taget="_blank" href="/search/llama/1.htm">llama</a>
                        <div>一、技术栈选型核心服务:AmazonRedshift:存储原始文本和检测结果AmazonBedrock:托管Llama370B模型AWSLambda:无服务计算(Python运行时)AmazonS3:中间数据存储AWSStepFunctions:工作流编排辅助工具:psycopg2:RedshiftPython连接器boto3:AWSSDKforPythonPandas:数据批处理JSONSche</div>
                    </li>
                    <li><a href="/article/1891030370376282112.htm"
                           title="django上传文件" target="_blank">django上传文件</a>
                        <span class="text-muted">大得369</span>
<a class="tag" taget="_blank" href="/search/django/1.htm">django</a><a class="tag" taget="_blank" href="/search/sqlite/1.htm">sqlite</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>1、settings.py配置#静态文件配置STATIC_URL='/static/'STATICFILES_DIRS=[BASE_DIR/'static',]上传文件#定义一个视图函数,该函数接收一个request参数fromdjango.shortcutsimportrender#必备引入importjsonfromdjango.views.decorators.httpimportrequi</div>
                    </li>
                    <li><a href="/article/1891022805235986432.htm"
                           title="云桌面主流架构解析与应用场景分析" target="_blank">云桌面主流架构解析与应用场景分析</a>
                        <span class="text-muted">一休哥助手</span>
<a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a>
                        <div>引言随着云计算、大数据和虚拟化技术的快速发展,云桌面作为一种高效、安全、便捷的办公方式,逐渐被企业、教育和政府等多个领域广泛采用。云桌面通过虚拟化技术将计算资源集中管理,并将桌面操作系统、应用程序和数据存储在云端。用户通过终端设备访问云桌面,从而实现随时随地的灵活办公。云桌面架构的设计是其性能、安全性和用户体验的关键因素。目前主流的云桌面架构有多种类型,包括集中式架构、分布式架构、混合式架构等。本</div>
                    </li>
                    <li><a href="/article/1891010950241251328.htm"
                           title="【计算机网络知识 之 OSI七层模型及tcp/ip模型】" target="_blank">【计算机网络知识 之 OSI七层模型及tcp/ip模型】</a>
                        <span class="text-muted">皮卡丘的blue</span>
<a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E7%9F%A5%E8%AF%86/1.htm">计算机网络知识</a><a class="tag" taget="_blank" href="/search/tcp%2Fip/1.htm">tcp/ip</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a>
                        <div>文章目录前言OSI七层模型TCP/IP协议族数据封装、解封装过程每一层的数据格式设备与层的对应关系各层间的通信总结前言环境准备:linux操作系统VMwareWorkstation16.xCentos7OSI七层模型国际标准化组织(InternationalStandardOrganization,ISO),于1984年颁布了开放系统互联(OpenSystemInterconnection,OSI</div>
                    </li>
                    <li><a href="/article/1891002508151681024.htm"
                           title="Linux网络:协议分层/OSI七层模型" target="_blank">Linux网络:协议分层/OSI七层模型</a>
                        <span class="text-muted">C+五条</span>
<a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>一、协议"协议"是一种约定。计算机之间的传输媒介是光信号和电信号.通过"频率"和"强弱"来表示0和1这样的信息.要想传递各种不同的信息,就需要约定好双方的数据格式。计算机生产厂商有很多;计算机操作系统,也有很多;计算机网络硬件设备,还是有很多;如何让这些不同厂商之间生产的计算机能够相互顺畅的通信?就需要有人站出来,约定一个共同的标准,大家都来遵守,这就是网络协议;二、OSI七层模型OSI(Open</div>
                    </li>
                                <li><a href="/article/110.htm"
                                       title="强大的销售团队背后 竟然是大数据分析的身影" target="_blank">强大的销售团队背后 竟然是大数据分析的身影</a>
                                    <span class="text-muted">蓝儿唯美</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a>
                                    <div>Mark Roberge是HubSpot的首席财务官,在招聘销售职位时使用了大量数据分析。但是科技并没有挤走直觉。 
大家都知道数理学家实际上已经渗透到了各行各业。这些热衷数据的人们通过处理数据理解商业流程的各个方面,以重组弱点,增强优势。 
Mark Roberge是美国HubSpot公司的首席财务官,HubSpot公司在构架集客营销现象方面出过一份力——因此他也是一位数理学家。他使用数据分析 </div>
                                </li>
                                <li><a href="/article/237.htm"
                                       title="Haproxy+Keepalived高可用双机单活" target="_blank">Haproxy+Keepalived高可用双机单活</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1/1.htm">负载均衡</a><a class="tag" taget="_blank" href="/search/keepalived/1.htm">keepalived</a><a class="tag" taget="_blank" href="/search/haproxy/1.htm">haproxy</a><a class="tag" taget="_blank" href="/search/%E9%AB%98%E5%8F%AF%E7%94%A8/1.htm">高可用</a>
                                    <div>我们的应用MyApp不支持集群,但要求双机单活(两台机器:master和slave): 
1.正常情况下,只有master启动MyApp并提供服务 
2.当master发生故障时,slave自动启动本机的MyApp,同时虚拟IP漂移至slave,保持对外提供服务的IP和端口不变 
 
F5据说也能满足上面的需求,但F5的通常用法都是双机双活,单活的话还没研究过 
 
 
服务器资源 
 
10.7</div>
                                </li>
                                <li><a href="/article/364.htm"
                                       title="eclipse编辑器中文乱码问题解决" target="_blank">eclipse编辑器中文乱码问题解决</a>
                                    <span class="text-muted">0624chenhong</span>
<a class="tag" taget="_blank" href="/search/eclipse%E4%B9%B1%E7%A0%81/1.htm">eclipse乱码</a>
                                    <div>使用Eclipse编辑文件经常出现中文乱码或者文件中有中文不能保存的问题,Eclipse提供了灵活的设置文件编码格式的选项,我们可以通过设置编码 格式解决乱码问题。在Eclipse可以从几个层面设置编码格式:Workspace、Project、Content Type、File 
本文以Eclipse 3.3(英文)为例加以说明: 
1. 设置Workspace的编码格式: 
Windows-&g</div>
                                </li>
                                <li><a href="/article/491.htm"
                                       title="基础篇--resources资源" target="_blank">基础篇--resources资源</a>
                                    <span class="text-muted">不懂事的小屁孩</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                                    <div>最近一直在做java开发,偶尔敲点android代码,突然发现有些基础给忘记了,今天用半天时间温顾一下resources的资源。 
 
String.xml    字符串资源   涉及国际化问题  

http://www.2cto.com/kf/201302/190394.html   
 
string-array</div>
                                </li>
                                <li><a href="/article/618.htm"
                                       title="接上篇补上window平台自动上传证书文件的批处理问卷" target="_blank">接上篇补上window平台自动上传证书文件的批处理问卷</a>
                                    <span class="text-muted">酷的飞上天空</span>
<a class="tag" taget="_blank" href="/search/window/1.htm">window</a>
                                    <div>  
@echo off
: host=服务器证书域名或ip,需要和部署时服务器的域名或ip一致  ou=公司名称, o=公司名称
set host=localhost      
set ou=localhost        
set o=localhost         
set password=123456
set validity=3650

set salias=s</div>
                                </li>
                                <li><a href="/article/745.htm"
                                       title="企业物联网大潮涌动:如何做好准备?" target="_blank">企业物联网大潮涌动:如何做好准备?</a>
                                    <span class="text-muted">蓝儿唯美</span>
<a class="tag" taget="_blank" href="/search/%E4%BC%81%E4%B8%9A/1.htm">企业</a>
                                    <div>物联网的可能性也许是无限的。要找出架构师可以做好准备的领域然后利用日益连接的世界。 
尽管物联网(IoT)还很新,企业架构师现在也应该为一个连接更加紧密的未来做好计划,而不是跟上闸门被打开后的集成挑战。“问题不在于物联网正在进入哪些领域,而是哪些地方物联网没有在企业推进,” Gartner研究总监Mike Walker说。 
Gartner预测到2020年物联网设备安装量将达260亿,这些设备在全</div>
                                </li>
                                <li><a href="/article/872.htm"
                                       title="spring学习——数据库(mybatis持久化框架配置)" target="_blank">spring学习——数据库(mybatis持久化框架配置)</a>
                                    <span class="text-muted">a-john</span>
<a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a>
                                    <div>Spring提供了一组数据访问框架,集成了多种数据访问技术。无论是JDBC,iBATIS(mybatis)还是Hibernate,Spring都能够帮助消除持久化代码中单调枯燥的数据访问逻辑。可以依赖Spring来处理底层的数据访问。 
mybatis是一种Spring持久化框架,要使用mybatis,就要做好相应的配置: 
1,配置数据源。有很多数据源可以选择,如:DBCP,JDBC,aliba</div>
                                </li>
                                <li><a href="/article/999.htm"
                                       title="Java静态代理、动态代理实例" target="_blank">Java静态代理、动态代理实例</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/Java%E9%9D%99%E6%80%81%E4%BB%A3%E7%90%86/1.htm">Java静态代理</a>
                                    <div>  
采用Java代理模式,代理类通过调用委托类对象的方法,来提供特定的服务。委托类需要实现一个业务接口,代理类返回委托类的实例接口对象。 
按照代理类的创建时期,可以分为:静态代理和动态代理。 
所谓静态代理: 指程序员创建好代理类,编译时直接生成代理类的字节码文件。 
所谓动态代理: 在程序运行时,通过反射机制动态生成代理类。 
  
一、静态代理类实例: 
1、Serivce.ja</div>
                                </li>
                                <li><a href="/article/1126.htm"
                                       title="Struts1与Struts2的12点区别" target="_blank">Struts1与Struts2的12点区别</a>
                                    <span class="text-muted">asia007</span>
<a class="tag" taget="_blank" href="/search/Struts1%E4%B8%8EStruts2/1.htm">Struts1与Struts2</a>
                                    <div>1) 在Action实现类方面的对比:Struts 1要求Action类继承一个抽象基类;Struts 1的一个具体问题是使用抽象类编程而不是接口。Struts 2 Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制的服务成为可能。Struts 2提供一个ActionSupport基类去实现常用的接口。即使Action接口不是必须实现的,只有一个包含execute方法的P</div>
                                </li>
                                <li><a href="/article/1253.htm"
                                       title="初学者要多看看帮助文档 不要用js来写Jquery的代码" target="_blank">初学者要多看看帮助文档 不要用js来写Jquery的代码</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/js/1.htm">js</a>
                                    <div>解析json数据的时候需要将解析的数据写到文本框中,  出现了用js来写Jquery代码的问题; 
  
1, JQuery的赋值  有问题 
   代码如下: data.username 表示的是:  网易 
  
         $("#use</div>
                                </li>
                                <li><a href="/article/1380.htm"
                                       title="经理怎么和员工搞好关系和信任" target="_blank">经理怎么和员工搞好关系和信任</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/%E5%9B%A2%E9%98%9F/1.htm">团队</a><a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/1.htm">项目管理</a><a class="tag" taget="_blank" href="/search/%E7%AE%A1%E7%90%86/1.htm">管理</a>
                                    <div>        产品经理应该有坚实的专业基础,这里的基础包括产品方向和产品策略的把握,包括设计,也包括对技术的理解和见识,对运营和市场的敏感,以及良好的沟通和协作能力。换言之,既然是产品经理,整个产品的方方面面都应该能摸得出门道。这也不懂那也不懂,如何让人信服?如何让自己懂?就是不断学习,不仅仅从书本中,更从平时和各种角色的沟通</div>
                                </li>
                                <li><a href="/article/1507.htm"
                                       title="如何为rich:tree不同类型节点设置右键菜单" target="_blank">如何为rich:tree不同类型节点设置右键菜单</a>
                                    <span class="text-muted">sunjing</span>
<a class="tag" taget="_blank" href="/search/contextMenu/1.htm">contextMenu</a><a class="tag" taget="_blank" href="/search/tree/1.htm">tree</a><a class="tag" taget="_blank" href="/search/Richfaces/1.htm">Richfaces</a>
                                    <div>组合使用target和targetSelector就可以啦,如下: <rich:tree id="ruleTree" value="#{treeAction.ruleTree}" var="node" nodeType="#{node.type}"
    selectionChangeListener=&qu</div>
                                </li>
                                <li><a href="/article/1634.htm"
                                       title="【Redis二】Redis2.8.17搭建主从复制环境" target="_blank">【Redis二】Redis2.8.17搭建主从复制环境</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a>
                                    <div>开始使用Redis2.8.17 
Redis第一篇在Redis2.4.5上搭建主从复制环境,对它的主从复制的工作机制,真正的惊呆了。不知道Redis2.8.17的主从复制机制是怎样的,Redis到了2.4.5这个版本,主从复制还做成那样,Impossible is nothing! 本篇把主从复制环境再搭一遍看看效果,这次在Unbuntu上用官方支持的版本。   Ubuntu上安装Red</div>
                                </li>
                                <li><a href="/article/1761.htm"
                                       title="JSONObject转换JSON--将Date转换为指定格式" target="_blank">JSONObject转换JSON--将Date转换为指定格式</a>
                                    <span class="text-muted">白糖_</span>
<a class="tag" taget="_blank" href="/search/JSONObject/1.htm">JSONObject</a>
                                    <div>项目中,经常会用JSONObject插件将JavaBean或List<JavaBean>转换为JSON格式的字符串,而JavaBean的属性有时候会有java.util.Date这个类型的时间对象,这时JSONObject默认会将Date属性转换成这样的格式: 
  
{"nanos":0,"time":-27076233600000,</div>
                                </li>
                                <li><a href="/article/1888.htm"
                                       title="JavaScript语言精粹读书笔记" target="_blank">JavaScript语言精粹读书笔记</a>
                                    <span class="text-muted">braveCS</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a>
                                    <div>【经典用法】: 
  
//①定义新方法

Function .prototype.method=function(name, func){

              this.prototype[name]=func;

              return this;

}

 

//②给Object增加一个create方法,这个方法创建一个使用原对</div>
                                </li>
                                <li><a href="/article/2015.htm"
                                       title="编程之美-找符合条件的整数 用字符串来表示大整数避免溢出" target="_blank">编程之美-找符合条件的整数 用字符串来表示大整数避免溢出</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.LinkedList;

public class FindInteger {

	/**
	 *  编程之美 找符合条件的整数 用字符串来表示大整数避免溢出
	 *  题目:任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只含有1和0
	 *  
	 *  假设当前正在搜索由0,1组成的K位十进制数</div>
                                </li>
                                <li><a href="/article/2142.htm"
                                       title="读书笔记" target="_blank">读书笔记</a>
                                    <span class="text-muted">chengxuyuancsdn</span>
<a class="tag" taget="_blank" href="/search/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/1.htm">读书笔记</a>
                                    <div>1、Struts访问资源 
2、把静态参数传递给一个动作 
3、<result>type属性 
4、s:iterator、s:if c:forEach 
5、StringBuilder和StringBuffer 
6、spring配置拦截器 
 
1、访问资源 
(1)通过ServletActionContext对象和实现ServletContextAware,ServletReque</div>
                                </li>
                                <li><a href="/article/2269.htm"
                                       title="[通讯与电力]光网城市建设的一些问题" target="_blank">[通讯与电力]光网城市建设的一些问题</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E9%97%AE%E9%A2%98/1.htm">问题</a>
                                    <div> 
      信号防护的问题,前面已经说过了,这里要说光网交换机与市电保障的关系 
 
      我们过去用的ADSL线路,因为是电话线,在小区和街道电力中断的情况下,只要在家里用笔记本电脑+蓄电池,连接ADSL,同样可以上网........ 
 
    </div>
                                </li>
                                <li><a href="/article/2396.htm"
                                       title="oracle 空间RESUMABLE" target="_blank">oracle 空间RESUMABLE</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E7%A9%BA%E9%97%B4%E4%B8%8D%E8%B6%B3/1.htm">空间不足</a><a class="tag" taget="_blank" href="/search/RESUMABLE/1.htm">RESUMABLE</a><a class="tag" taget="_blank" href="/search/%E9%94%99%E8%AF%AF%E6%8C%82%E8%B5%B7/1.htm">错误挂起</a>
                                    <div>空间RESUMABLE操作  转 
 
 
 
Oracle从9i开始引入这个功能,当出现空间不足等相关的错误时,Oracle可以不是马上返回错误信息,并回滚当前的操作,而是将操作挂起,直到挂起时间超过RESUMABLE TIMEOUT,或者空间不足的错误被解决。 
 
这一篇简单介绍空间RESUMABLE的例子。 
 
 
 
第一次碰到这个特性是在一次安装9i数据库的过程中,在利用D</div>
                                </li>
                                <li><a href="/article/2523.htm"
                                       title="重构第一次写的线程池" target="_blank">重构第一次写的线程池</a>
                                    <span class="text-muted">dieslrae</span>
<a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B%E6%B1%A0+python/1.htm">线程池 python</a>
                                    <div>最近没有什么学习欲望,修改之前的线程池的计划一直搁置,这几天比较闲,还是做了一次重构,由之前的2个类拆分为现在的4个类. 
 
1、首先是工作线程类:TaskThread,此类为一个工作线程,用于完成一个工作任务,提供等待(wait),继续(proceed),绑定任务(bindTask)等方法 
 

#!/usr/bin/env python
# -*- coding:utf8 -*-

</div>
                                </li>
                                <li><a href="/article/2650.htm"
                                       title="C语言学习六指针" target="_blank">C语言学习六指针</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/c/1.htm">c</a>
                                    <div>初识指针,简单示例程序: 
/*
	指针就是地址,地址就是指针
	地址就是内存单元的编号
	指针变量是存放地址的变量
	指针和指针变量是两个不同的概念
	但是要注意: 通常我们叙述时会把指针变量简称为指针,实际它们含义并不一样
*/
# include <stdio.h>

int main(void)
{
	int * p;	// p是变量的名字, int * </div>
                                </li>
                                <li><a href="/article/2777.htm"
                                       title="yii2 beforeSave afterSave beforeDelete" target="_blank">yii2 beforeSave afterSave beforeDelete</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/delete/1.htm">delete</a>
                                    <div>public function afterSave($insert, $changedAttributes)
{
    parent::afterSave($insert, $changedAttributes);
    if($insert) {
        //这里是新增数据
    } else {
        //这里是更新数据
    }  
} 
 </div>
                                </li>
                                <li><a href="/article/2904.htm"
                                       title="timertask" target="_blank">timertask</a>
                                    <span class="text-muted">shuizhaosi888</span>
<a class="tag" taget="_blank" href="/search/timertask/1.htm">timertask</a>
                                    <div>java.util.Timer timer = new java.util.Timer(true); 
// true 说明这个timer以daemon方式运行(优先级低, 
// 程序结束timer也自动结束),注意,javax.swing 
// 包中也有一个Timer类,如果import中用到swing包, 
// 要注意名字的冲突。 

TimerTask task = new</div>
                                </li>
                                <li><a href="/article/3031.htm"
                                       title="Spring Security(13)——session管理" target="_blank">Spring Security(13)——session管理</a>
                                    <span class="text-muted">234390216</span>
<a class="tag" taget="_blank" href="/search/session/1.htm">session</a><a class="tag" taget="_blank" href="/search/Spring+Security/1.htm">Spring Security</a><a class="tag" taget="_blank" href="/search/%E6%94%BB%E5%87%BB%E4%BF%9D%E6%8A%A4/1.htm">攻击保护</a><a class="tag" taget="_blank" href="/search/%E8%B6%85%E6%97%B6/1.htm">超时</a>
                                    <div>session管理 
目录 
  
1.1     检测session超时 
1.2     concurrency-control 
1.3     session 固定攻击保护 
  
      </div>
                                </li>
                                <li><a href="/article/3158.htm"
                                       title="公司项目NODEJS实践0.3[ mongo / session ...]" target="_blank">公司项目NODEJS实践0.3[ mongo / session ...]</a>
                                    <span class="text-muted">逐行分析JS源代码</span>
<a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/session/1.htm">session</a><a class="tag" taget="_blank" href="/search/nodejs/1.htm">nodejs</a>
                                    <div>    
http://www.upopen.cn 
  
一、前言 
        书接上回,我们搭建了WEB服务端路由、模板等功能,完成了register 通过ajax与后端的通信,今天主要完成数据与mongodb的存取,实现注册 / 登录 /</div>
                                </li>
                                <li><a href="/article/3285.htm"
                                       title="pojo.vo.po.domain区别" target="_blank">pojo.vo.po.domain区别</a>
                                    <span class="text-muted">LiaoJuncai</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/VO/1.htm">VO</a><a class="tag" taget="_blank" href="/search/POJO/1.htm">POJO</a><a class="tag" taget="_blank" href="/search/javabean/1.htm">javabean</a><a class="tag" taget="_blank" href="/search/domain/1.htm">domain</a>
                                    <div>  POJO = "Plain Old Java Object",是MartinFowler等发明的一个术语,用来表示普通的Java对象,不是JavaBean, EntityBean 或者 SessionBean。POJO不但当任何特殊的角色,也不实现任何特殊的Java框架的接口如,EJB, JDBC等等。 
   
  即POJO是一个简单的普通的Java对象,它包含业务逻辑</div>
                                </li>
                                <li><a href="/article/3412.htm"
                                       title="Windows Error Code" target="_blank">Windows Error Code</a>
                                    <span class="text-muted">OhMyCC</span>
<a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a>
                                    <div>0 操作成功完成. 
1 功能错误. 
2 系统找不到指定的文件. 
3 系统找不到指定的路径. 
4 系统无法打开文件. 
5 拒绝访问. 
6 句柄无效. 
7 存储控制块被损坏. 
8 存储空间不足, 无法处理此命令. 
9 存储控制块地址无效. 
10 环境错误. 
11 试图加载格式错误的程序. 
12 访问码无效. 
13 数据无效. 
14 存储器不足, 无法完成此操作. 
15 系</div>
                                </li>
                                <li><a href="/article/3539.htm"
                                       title="在storm集群环境下发布Topology" target="_blank">在storm集群环境下发布Topology</a>
                                    <span class="text-muted">roadrunners</span>
<a class="tag" taget="_blank" href="/search/%E9%9B%86%E7%BE%A4/1.htm">集群</a><a class="tag" taget="_blank" href="/search/storm/1.htm">storm</a><a class="tag" taget="_blank" href="/search/topology/1.htm">topology</a><a class="tag" taget="_blank" href="/search/spout/1.htm">spout</a><a class="tag" taget="_blank" href="/search/bolt/1.htm">bolt</a>
                                    <div>storm的topology设计和开发就略过了。本章主要来说说如何在storm的集群环境中,通过storm的管理命令来发布和管理集群中的topology。 
  
1、打包 
打包插件是使用maven提供的maven-shade-plugin,详细见maven-shade-plugin。 
<plugin>
	<groupId>org.apache.maven.</div>
                                </li>
                                <li><a href="/article/3666.htm"
                                       title="为什么不允许代码里出现“魔数”" target="_blank">为什么不允许代码里出现“魔数”</a>
                                    <span class="text-muted">tomcat_oracle</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>  在一个新项目中,我最先做的事情之一,就是建立使用诸如Checkstyle和Findbugs之类工具的准则。目的是制定一些代码规范,以及避免通过静态代码分析就能够检测到的bug。     迟早会有人给出案例说这样太离谱了。其中的一个案例是Checkstyle的魔数检查。它会对任何没有定义常量就使用的数字字面量给出警告,除了-1、0、1和2。     很多开发者在这个检查方面都有问题,这可以从结果</div>
                                </li>
                                <li><a href="/article/3793.htm"
                                       title="zoj 3511 Cake Robbery(线段树)" target="_blank">zoj 3511 Cake Robbery(线段树)</a>
                                    <span class="text-muted">阿尔萨斯</span>
<a class="tag" taget="_blank" href="/search/%E7%BA%BF%E6%AE%B5%E6%A0%91/1.htm">线段树</a>
                                    <div> 题目链接:zoj 3511 Cake Robbery 
 题目大意:就是有一个N边形的蛋糕,切M刀,从中挑选一块边数最多的,保证没有两条边重叠。 
 解题思路:有多少个顶点即为有多少条边,所以直接按照切刀切掉点的个数排序,然后用线段树维护剩下的还有哪些点。 
#include <cstdio>
#include <cstring>
#include <vector&</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>