Spring介绍
简介Spring是轻量级企业级解决方案,可以基于Java Spring解决Java EE的所有问题。 特性IOC容器(控制反转)通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。 IoC是一个很大的概念,可以用不同的方式实现。其主要形式有两种:依赖查找:容器提供回调接口和上下文条件给组件。EJB和Apache Avalon 都使用这种方式。这样一来,组件就必须使用容器提供的API来查找资源和协作对象,仅有的控制反转只体现在那些回调方法上(也就是上面所说的 类型1):容器将调用这些回调方法,从而让应用代码获得相关资源。依赖注入:组件不做定位查询,只提供普通的Java方法让容器去决定依赖关系。容器全权负责的组件的装配,它会把符合依赖关系的对象通过JavaBean属性或者构造函数传递给需要的对象。通过JavaBean属性注射依赖关系的做法称为设值方法注入(Setter Injection);将依赖关系作为构造函数参数传入的做法称为构造器注入(Constructor Injection)Spring 的 Io...
5.4 IO多路复用与线程进程
IO多路复用1 单线程并发的含义IO多路复用即单线程并发,事件驱动模型。有事件响应机制、事件回调机制等。 单线程并发,并非真正意义上的单线程。而是只有单一的用户线程。还包括数据库,socket等系统多线程。 单个用户线程:对于十万个用户同时访问服务器,有两种方式处理并发。 为每个用户开一个新的用户线程,每个线程内部采用阻塞通信的方式,即同步通信,从数据库中取数据、与服务器通信等,直到得到结果,返回给用户。其中涉及多个用户线程。 只有一个用户线程,采用非阻塞通信的方式,即异步通信,通过事件驱动的方式实现并发。从数据库中取数据、与服务器通信或与其他进程通信,并不会阻塞线程的执行,每次数据获取完毕,通过事件的方式,调用用户进程,处理得到的数据,返回给用户。其中,只有一个用户进程。 对于事件驱动的方法:会存在一个事件队列,唯一的用户进程会不断地依次处理队列中的事件。所以不会存在冲突。有两种处理事件的方法:基于监听器的事件处理机制和基于回调的事件处理机制。 常见的线程通信:与服务器进行通信socket,与数据库进行通信、与文件读写进程进行通信。 前者通过扩展空间的方式,后者通过缩短时间...
5.5 IO多路复用与回调函数
IO多路复用与回调函数1 this指针this指针this关键字指向的是当前对象的引用 this 不是指向类。而是在实例化的时候与当前类的实例也就是对象,进行绑定。 关于回调对于Python与JavaScript这种,能够直接传递“函数类型”的参数,C++也是可以传递函数指针和可调用对象,java能够传递对象引用进而调用对象内部的函数。回调函数可以作为另外一个函数的参数,进行传递。 关于回调函数的本质理解:当其他程序执行时,能够通过回调函数,执行调用者的代码,访问调用者传递进来的资源。但这里并没有转移控制权,而是保留控制权在当前的被调用者。可以把调用者与被调用者分开。调用者能够显式调用被调用者,同时被调用这能通过回调函数隐式调用调用者。 同步回调与异步回调回调函数在同一个线程或进程内,是同步回调,调用者与被调用这的CPU控制权是串行的。回调函数的主要目的是业务逻辑的划分,降低调用者和被调用者,相互调用时的耦合程度。也就是说,不同的调用者,可以让被调者在某一阶段。 当回调函数与主调函数的执行不再同一个线程内,是异步回调,调用者与被调用者的CPU控制权是并行的。被调函数就可以通过回调...
1 ajax
1 基础简介AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。 AJAX 不是新的编程语言,而是一种使用现有标准的新方法。 AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。 AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。 原理异步的JavaScript和XML。创建快速动态网页技术。在后台与服务器进行少量的数据交换,实现网页的异步更新。 使用JS创建XMLHTTPRequest对象,发送HTTPRequest内容。 使用JS处理被返回的数据,更新页面内容。 ajax的多种实现方式
2 xhr
1 实例123456789101112131415161718192021222324252627282930313233343536<!DOCTYPE html><html><head><meta charset="utf-8"><script>function loadXMLDoc(){ var xmlhttp; if (window.XMLHttpRequest) { // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码 xmlhttp=new XMLHttpRequest(); } else { // IE6, IE5 浏览器执行代码 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4...
10 chrome控制台
Elements渲染完成的页面布局。包括HTML元素和布局分析。 Consolejavascript控制台。可以对网页进行操作。可以模拟客户端对服务器发送请求。 通过js向服务器发送请求,可以跳过前端js对请求数据的验证。 Source从服务器端下载的所有文件。包括JS、CSS、HTML以及各种依赖。 Network记录了请求的过程。包括所有类型的Request和Response以及其相关分析。 Application主要是应用数据分析。包括储存在本地Chrome自带数据库中的各种数据。本地缓存、cookies、session
2 程序结构
1 条件判断if-else12345678var age = 20;if (age >= 18) { // 如果age >= 18为true,则执行if语句块 alert('adult');} else { // 否则执行else语句块 alert('teenager');}//else是可选的//如果语句块只有一句话,可以省略大括号。 if-else可以嵌套123456789101112131415161718var age = 3;if (age >= 18) { alert('adult');} else { if (age >= 6) { alert('teenager'); } else { alert('kid'); }}if (age >= 6) ...
3 函数
1 定义函数函数1234567891011121314151617function abs(x) { if (x >= 0) { return x; } else { return -x; }}var abs = function (x) { if (x >= 0) { return x; } else { return -x; }};abs(10); JavaScript的函数允许传入过多的参数或者过少的参数,也不会影响函数的执行。 函数的属性arguments 因为javascript中,函数也被看做对象,所以能给变量赋值。也能有函数的属性。 只在函数内部起作用,并且永远指向当前函数的调用者传入的所有参数 1234567function foo(x) { console.log('x = ' + x); // 10 ...
4 高阶函数
1 高阶函数定义JavaScript的函数其实都指向某个变量。既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。 123456789function add(x, y, f) { return f(x) + f(y);}x = -5;y = 6;f = Math.abs;f(x) + f(y) ==> Math.abs(-5) + Math.abs(6) ==> 11;return 11; 2 MapReducemap:对集合分割运算。reduce:对分割运算的结果进行聚合。 array.mapmap()方法本身可以接受一个函数,作用在数组的每一个元素,并拼接成新的数组。是一个高阶函数。 123456789function pow(x) { return x * x;}var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];var results = arr.map(pow); // [1, 4, 9, 16, 25, 36, 49,...













