源码

Jetty9 源码初解(1)——HTTP前传

ⅰ亾dé卋堺 提交于 2019-12-29 16:05:51
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 转自: http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。 HTTP协议的主要特点可概括如下: 1.支持客户/服务器模式。 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力

数据结构(堆)源码

故事扮演 提交于 2019-12-29 13:14:08
#include <stdio.h> #define MaxData 200 typedef struct Heap *MaxHeap; struct Heap{ int *Elements;//存储堆的数组 int size;//当前元素个数 int capacity;//堆的最大容量 }; MaxHeap create(int Maxsize){ MaxHeap H=new Heap; H->Elements=new int; H->size=0; H->capacity=Maxsize; H->Elements[0]=MaxData;//定义哨兵,为大于堆中所有可能元素的值 return H; } void Insert(MaxHeap H,int item){ int i; if(H->size==H->capacity){ printf("堆已经满了"); return; } i=++H->size; for(;H->Elements[i/2]<item;i=i/2){ H->Elements[i]=H->Elements[i/2];//让父节点移动下来 } H->Elements[i]=item; } int DeleteMax(MaxHeap H){ int parent,child; int Maxitem,temp; if(H->size==0){ printf(

eclipse导入java源码(jdk)

荒凉一梦 提交于 2019-12-29 11:39:31
网上下载源码包 http://archive.eclipse.org/eclipse/downloads/index.php 目前最新的版本为4.9 然后打开eclipse窗口,首选项,java,已安装的jre,选中,编辑,选中rt.jar,源代码附件,导入下载好的源码 来源: CSDN 作者: amu435784334 链接: https://blog.csdn.net/amu435784334/article/details/103751637

Django安装Xadmin步骤

孤人 提交于 2019-12-29 05:49:32
在Django中安装Xadmin替换原始的admin,下面介绍两种方法安装 第一种方法:pip安装 第一步: 直接pip安装xadmin pip install xadmin pip会同时安装上面三个依赖包,需要将'xadmin'和'crispy_forms'加入到settings.py的INSTALL_APPS中。 第二步: 配置URL 用Xadmin替换原装的admin 在urls.py中修改: 第三步: 需要将xadmin自带的一些表生成一下,执行以便 makemigration -- migrate,在数据库中生成这三个表: 这时候xadmin已经可以使用了 第二种方法:源码安装 下面要把Xadmin的源码引入到项目中,方便后期开发需要定制插件。并且pip安装的Xadmin并不一定是最新版 第一步: 在github上下载xadmin的源码包 https://github.com/sshwsfc/xadmin 在项目的根目录下创建一个文件夹extra_apps,将xadmin源码包中的'xadmin'文件夹复制到刚才的新建文件夹中 在settings.py文件中写入 sys.path.insert(0, os.path.join(BASE_DIR, 'extra_apps')) 告诉项目xadmin的导入路径 之后同上面第一种方法的第二、第三步 来源: https://www

yujiaun 企业站MVC3.0版源码

与世无争的帅哥 提交于 2019-12-29 05:18:28
本来说mvc版尽快出来 结果拖拖拉拉做了那么久 还是有点懒啊!!!!   在本次项目中 被Access数据库倒腾惨了。。。 首先我说说 遇到的Access问题吧     1、Access 不支持top 0 所以分页时要做判断     2、不支持 != 语法 要改为<>     3、排序问题 如果排序列有很多一样的值 用top 取前几条会出错( 具体错误:排序是排了 把所有数据查出来了 ) 这里分享一个笨方法       a) select top 10 ID,Title,CreateTime,Click from News ORDER BY Click DESC 这句写法咋一看 很多人都觉得会没问题 很可惜出现了我刚描述的排序问题 解决方法 select top 10 ID,Title,CreateTime,Click from (select ID,Title,CreateTime,Click from News ORDER BY Click DESC) AS TABLERSULT 这样写就可以了 如有好的解决方案 还请指点一下   另外啰嗦一句:能不用Access数据的地方尽量不用 上面只是列出其中一部分问题 好了咱们进入正题吧 先来几张图片 这是一张首页效果图        不知道各位博客园的网友 看出来了没有 看看url地址   这张也是url地址 只不过地中的 时间

我的程序之路 asp.net 接触二年,工作一年总结 (2)

限于喜欢 提交于 2019-12-29 05:17:47
我的程序之路 asp.net 接触二年,工作一年总结 (2) 进了公司,是个做电子商务的网站,刚起步的,我当时去的时候连营业执照都还没有批下来,内部开发调试刚刚结束。过去先浏览网站,找其中的BUG,熟悉业务流程。还好,我本来对电子商务比较感兴趣,之前在淘宝上也玩过,没二天就把基本流程搞熟悉了。上面也没有给我分配任务,我就上csdn浏览网站了(之前家里不能上网)。随后装上了sqlserver,看他们的数据库架构,表很多,也很乱,大概了解了一下,也就没有往下看了。接着装VSS,看源码,之前都是写demo,自己一个人开发,从没接触过VSS等代码管理软件。上来就是一个新家伙,蛮好的,在网上找了一翻资料,还下了vss2005安装镜像和一些资料,晚上带回家学习了。(公司用的是vss6.0) 从VSS里面下下源码,乖乖,20多个项目。头一次见这么大的项目,编译都得有一会。看了一下代码,代码很乱,也没有分层,到处是数据库连接。虽然也有一个类似sqlhelper一样的助手类,但是页面还是其它的项目里面,到处是从数据库里面返回dataset的代码。还有用户控件,全部都是在.ascx.cs的页面后台代码里面拼凑出来的页面html源码。我那时候也搞不懂,为什么要这样做,因为我也着实是个新手,自己的一些想法也不确定是对还是错。只能先记着,回头有机会了再问。 第二个星期,任务下来

Mongodb源码分析--更新记录

蓝咒 提交于 2019-12-29 01:09:30
在之前的 一篇文章 中,介绍了assembleResponse函数(位于instance.cpp第224行),它会根据op操作枚举类型来调用相应的crud操作,枚举类型定义如下: enum Operations { opReply = 1 , /* reply. responseTo is set. */ dbMsg = 1000 , /* generic msg command followed by a string */ dbUpdate = 2001 , /* 更新对象 */ dbInsert = 2002 , // dbGetByOID = 2003, dbQuery = 2004 , dbGetMore = 2005 , dbDelete = 2006 , dbKillCursors = 2007 }; 可以看到dbUpdate = 2001 为更新操作枚举值,下面我们看一下assembleResponse在确定是更新操作时调用的方法,如下: // instance.cpp文件第224行 assembleResponse( Message & m, DbResponse & dbresponse, const SockAddr & client ) { ..... try { if ( op == dbInsert ) { // 添加记录操作

Mongodb源码分析--查询结果集封装

南笙酒味 提交于 2019-12-29 01:08:15
在这个系列的开头几篇文章中,曾经介绍了Mongodb的查询流程,因为篇幅所限,并未介绍对cursor进行遍历查询时,如何将查询记录装填进结果集中。 今天就针对诸如 select top n 这类返回一定数量记录的查询操作,来分析mongodb是如何将查询结果装填到结果集中的。这里要说明的是 之前文章 中的大部分程序流程,在select top 这类操作也都是要执行的,所以这里接着之前文章所说的内容,继续向底层挖掘相应的功能逻辑。 之前查询流程中介绍过QueryPlanSet::Runner::run()方法,它本身为struct类型,主要是用于对执行步骤进行封装(形成依次执行的操作流),如下(详情见注释): // queryoptimizer.cpp shared_ptr < QueryOp > QueryPlanSet::Runner::run() { ...... // 遍历查询操作集合,找到已执行完成的操作 for ( vector < shared_ptr < QueryOp > > ::iterator i = ops.begin(); i != ops.end(); ++ i ) { initOp( ** i ); if ( ( * i) -> complete() ) return * i; } // 将查询操作集合转换成查询队列 std::priority

jQuery源码学习笔记(一)

∥☆過路亽.° 提交于 2019-12-28 23:02:47
今天是学习jQuery的第一天,先明确一下学习目标:通过用自己的思路仿写jQuery库,更好地理解它的底层原理和编程思想。 假设世界上还没有jQuery这样一个库,我们要从哪里开始呢?如果我们现在正在做一件事情,比如说喝水。那么,我们为什么要喝水呢?原因很简单,肯定是在此之前我们感觉到口渴了。也就是说我们产生了一个喝水的需求,而这个需求促使我们去做喝水这件事情。有没有发现,不单单喝水,其实我们大部分的行为都是由需求来驱动的。首先得要有一个需求,在需求的推动下我们才会采取相应的行动试图去满足这个需求。写一个jQuery库也是一样,在行动之前,我们得要先搞清楚写这个库的需求在哪里?也就是说:为什么要写这个库?不然,我们根本不知道从何入手。那么,为什么要写一个jQuery库呢? 我们知道,jQuery本质上就是用javascript代码写成的各种方法的集合。但是javascript本身不是已经提供了各种各样的方法和功能了吗?为什么还要再另外写一个库出来呢?原因其实很好猜,那肯定是我们要写的这个库比javascript提供的原生方法更好用了,对吧?恩,到这里我们似乎得到了一个基本需求:写一个比原生javascript提供的方法集更好用的库。这个需求的关键在于“更好用”三个字。怎么才是“更好用”呢? 我们知道一个原则:结构、表现、行为相分离。javascript是负责其中的“行为”的

HDFS的DataNode源码分析

巧了我就是萌 提交于 2019-12-28 15:16:30
1.大致流程 DataNode.main() // 入口函数     |——secureMain(args, null);       |——createDataNode(args, null, resources); // 创建DataNode         |——instantiateDataNode(args, conf, resources);          |——getStorageLocations(conf); // 根据配置拿到HDFS的Block实际存储的本地路径,即hdfs-site.xml文件中的dfs.datanode.data.dir属性          |——UserGroupInformation.setConfiguration(conf); // 设置配置          |——makeInstance(dataLocations, conf, resources); // 实例化DataNode      |——dn.runDatanodeDaemon(); // 运行DataNode的后台守护线程 |——datanode.join(); // 将此DataNode放入一个线程等待池 2.详解makeInstance(dataLocations, conf, resources)方法 1. List<StorageLocation>