当前位置: 首页 > 编程日记 > 正文

超详细的Java面试题总结(四 )之JavaWeb基础知识总结

系列文章请查看:

超详细的Java面试题总结(一)之Java基础知识篇

超详细的Java面试题总结(二)之Java基础知识篇

超详细的Java面试题总结(三)之Java集合篇常见问题

超详细的Java面试题总结(四 )之JavaWeb基础知识总结
下面的都是自己之前在学习JavaWeb的时候总结的,对于巩固JavaWeb的基础知识应该有很大帮助。后面还会把框架的面试题总结一下。

Servlet总结

在Java Web程序中,Servlet主要负责接收用户请求HttpServletRequest,在doGet(),doPost()中做相应的处理,并将回应HttpServletResponse反馈给用户。Servlet可以设置初始化参数,供Servlet内部使用。一个Servlet类只会有一个实例,在它初始化时调用init()方法,销毁时调用destroy()方法Servlet需要在web.xml中配置(MyEclipse中创建Servlet会自动配置),一个Servlet可以设置多个URL访问Servlet不是线程安全,因此要谨慎使用类变量。

阐述Servlet和CGI的区别?

CGI的不足之处:

1,需要为每个请求启动一个操作CGI程序的系统进程。如果请求频繁,这将会带来很大的开销。

2,需要为每个请求加载和运行一个CGI程序,这将带来很大的开销

3,需要重复编写处理网络协议的代码以及编码,这些工作都是非常耗时的。

Servlet的优点:

1,只需要启动一个操作系统进程以及加载一个JVM,大大降低了系统的开销

2,如果多个请求需要做同样处理的时候,这时候只需要加载一个类,这也大大降低了开销

3,所有动态加载的类可以实现对网络协议以及请求解码的共享,大大降低了工作量。

4,Servlet能直接和Web服务器交互,而普通的CGI程序不能。Servlet还能在各个程序之间共享数据,使数据库连接池之类的功能很容易实现。

补充:Sun Microsystems公司在1996年发布Servlet技术就是为了和CGI进行竞争,Servlet是一个特殊的Java程序,一个基于Java的Web应用通常包含一个或多个Servlet类。Servlet不能够自行创建并执行,它是在Servlet容器中运行的,容器将用户的请求传递给Servlet程序,并将Servlet的响应回传给用户。通常一个Servlet会关联一个或多个JSP页面。以前CGI经常因为性能开销上的问题被诟病,然而Fast CGI早就已经解决了CGI效率上的问题,所以面试的时候大可不必信口开河的诟病CGI,事实上有很多你熟悉的网站都使用了CGI技术。

参考:《javaweb整合开发王者归来》P7

Servlet接口中有哪些方法及Servlet生命周期探秘

Servlet接口定义了5个方法,其中前三个方法与Servlet生命周期相关
- void init(ServletConfig config) throws ServletException
- void service(ServletRequest req, ServletResponse resp) throws ServletException, java.io.IOException
- void destory()
- java.lang.String getServletInfo()
- ServletConfig getServletConfig()

生命周期: Web容器加载Servlet并将其实例化后,Servlet生命周期开始,容器运行其init()方法进行Servlet的初始化;请求到达时调用Servlet的service()方法,service()方法会根据需要调用与请求对应的doGet或doPost等方法;当服务器关闭或项目被卸载时服务器会将Servlet实例销毁,此时会调用Servlet的destroy()方法init方法和destory方法只会执行一次,service方法客户端每次请求Servlet都会执行。Servlet中有时会用到一些需要初始化与销毁的资源,因此可以把初始化资源的代码放入init方法中,销毁资源的代码放入destroy方法中,这样就不需要每次处理客户端的请求都要初始化与销毁资源。

参考:《javaweb整合开发王者归来》P81

get和post请求的区别?

①get请求用来从服务器上获得资源,而post是用来向服务器提交数据;

②get将表单中数据按照name=value的形式,添加到action 所指向的URL 后面,并且两者使用”?”连接,而各个变量之间使用”&”连接;post是将表单中的数据放在HTTP协议的请求头或消息体中,传递到action所指向URL;

③get传输的数据要受到URL长度限制(1024字节即256个字符);而post可以传输大量的数据,上传文件通常要使用post方式;

④使用get时参数会显示在地址栏上,如果这些数据不是敏感数据,那么可以使用get;对于敏感数据还是应用使用post;

⑤get使用MIME类型application/x-www-form-urlencoded的URL编码(也叫百分号编码)文本的格式传递参数,保证被传送的参数由遵循规范的文本组成,例如一个空格的编码是”%20”。

补充:GET方式提交表单的典型应用是搜索引擎。GET方式就是被设计为查询用的。

什么情况下调用doGet()和doPost()?

Form标签里的method的属性为get时调用doGet(),为post时调用doPost()。

转发(Forward)和重定向(Redirect)的区别?

转发是服务器行为,重定向是客户端行为。

转发(Forword)
通过RequestDispatcher对象的forward(HttpServletRequest request,HttpServletResponse response)方法实现的。RequestDispatcher可以通过HttpServletRequest 的getRequestDispatcher()方法获得。例如下面的代码就是跳转到login_success.jsp页面。

     request.getRequestDispatcher("login_success.jsp").forward(request, response);

重定向(Redirect) 是利用服务器返回的状态吗来实现的。客户端浏览器请求服务器的时候,服务器会返回一个状态码。服务器通过HttpServletRequestResponse的setStatus(int status)方法设置状态码。如果服务器返回301或者302,则浏览器会到新的网址重新请求该资源。

  1. 从地址栏显示来说

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.
redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.

  1. 从数据共享来说

forward:转发页面和转发到的页面可以共享request里面的数据.
redirect:不能共享数据.

  1. 从运用地方来说

forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等

  1. 从效率来说

forward:高.
redirect:低.

自动刷新(Refresh)

自动刷新不仅可以实现一段时间之后自动跳转到另一个页面,还可以实现一段时间之后自动刷新本页面。Servlet中通过HttpServletResponse对象设置Header属性实现自动刷新例如:

Response.setHeader("Refresh","1000;URL=http://localhost:8080/servlet/example.htm");

其中1000为时间,单位为毫秒。URL指定就是要跳转的页面(如果设置自己的路径,就会实现没过一秒自动刷新本页面一次)

Servlet与线程安全

Servlet不是线程安全的,多线程并发的读写会导致数据不同步的问题。 解决的办法是尽量不要定义name属性,而是要把name变量分别定义在doGet()和doPost()方法内。虽然使用synchronized(name){}语句块可以解决问题,但是会造成线程的等待,不是很科学的办法。
注意:多线程的并发的读写Servlet类属性会导致数据不同步。但是如果只是并发地读取属性而不写入,则不存在数据不同步的问题。因此Servlet里的只读属性最好定义为final类型的。

参考:《javaweb整合开发王者归来》P92

JSP和Servlet是什么关系?

其实这个问题在上面已经阐述过了,Servlet是一个特殊的Java程序,它运行于服务器的JVM中,能够依靠服务器的支持向浏览器提供显示内容。JSP本质上是Servlet的一种简易形式,JSP会被服务器处理成一个类似于Servlet的Java程序,可以简化页面内容的生成。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。有人说,Servlet就是在Java中写HTML,而JSP就是在HTML中写Java代码,当然这个说法是很片面且不够准确的。JSP侧重于视图,Servlet更侧重于控制逻辑,在MVC架构模式中,JSP适合充当视图(view)而Servlet适合充当控制器(controller)。

JSP工作原理:

JSP是一种Servlet,但是与HttpServlet的工作方式不太一样。HttpServlet是先由源代码编译为class文件后部署到服务器下,为先编译后部署。而JSP则是先部署后编译。JSP会在客户端第一次请求JSP文件时被编译为HttpJspPage类(接口Servlet的一个子类)。该类会被服务器临时存放在服务器工作目录里面。下面通过实例给大家介绍。
工程JspLoginDemo下有一个名为login.jsp的Jsp文件,把工程第一次部署到服务器上后访问这个Jsp文件,我们发现这个目录下多了下图这两个东东。
.class文件便是JSP对应的Servlet。编译完毕后再运行class文件来响应客户端请求。以后客户端访问login.jsp的时候,Tomcat将不再重新编译JSP文件,而是直接调用class文件来响应客户端请求。
JSP工作原理
由于JSP只会在客户端第一次请求的时候被编译 ,因此第一次请求JSP时会感觉比较慢,之后就会感觉快很多。如果把服务器保存的class文件删除,服务器也会重新编译JSP。

开发Web程序时经常需要修改JSP。Tomcat能够自动检测到JSP程序的改动。如果检测到JSP源代码发生了改动。Tomcat会在下次客户端请求JSP时重新编译JSP,而不需要重启Tomcat。这种自动检测功能是默认开启的,检测改动会消耗少量的时间,在部署Web应用的时候可以在web.xml中将它关掉。

参考:《javaweb整合开发王者归来》P97

JSP有哪些内置对象?作用分别是什么?

JSP内置对象 - CSDN博客

JSP有9个内置对象:
- request:封装客户端的请求,其中包含来自GET或POST请求的参数;
- response:封装服务器对客户端的响应;
- pageContext:通过该对象可以获取其他对象;
- session:封装用户会话的对象;
- application:封装服务器运行环境的对象;
- out:输出服务器响应的输出流对象;
- config:Web应用的配置对象;
- page:JSP页面本身(相当于Java程序中的this);
- exception:封装页面抛出异常的对象。

Request对象的主要方法有哪些?

  • setAttribute(String name,Object):设置名字为name的request 的参数值
  • getAttribute(String name):返回由name指定的属性值
  • getAttributeNames():返回request 对象所有属性的名字集合,结果是一个枚举的实例
  • getCookies():返回客户端的所有 Cookie 对象,结果是一个Cookie 数组
  • getCharacterEncoding() :返回请求中的字符编码方式 = getContentLength() :返回请求的 Body的长度
  • getHeader(String name) :获得HTTP协议定义的文件头信息
  • getHeaders(String name) :返回指定名字的request Header 的所有值,结果是一个枚举的实例
  • getHeaderNames() :返回所以request Header 的名字,结果是一个枚举的实例
  • getInputStream() :返回请求的输入流,用于获得请求中的数据
  • getMethod() :获得客户端向服务器端传送数据的方法
  • getParameter(String name) :获得客户端传送给服务器端的有 name指定的参数值
  • getParameterNames() :获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例
  • getParameterValues(String name):获得有name指定的参数的所有值
  • getProtocol():获取客户端向服务器端传送数据所依据的协议名称
  • getQueryString() :获得查询字符串
  • getRequestURI() :获取发出请求字符串的客户端地址
  • getRemoteAddr():获取客户端的 IP 地址
  • getRemoteHost() :获取客户端的名字
  • getSession([Boolean create]) :返回和请求相关 Session
  • getServerName() :获取服务器的名字
  • getServletPath():获取客户端所请求的脚本文件的路径
  • getServerPort():获取服务器的端口号
  • removeAttribute(String name):删除请求中的一个属性

request.getAttribute()和 request.getParameter()有何区别?

从获取方向来看:

getParameter()是获取 POST/GET 传递的参数值;

getAttribute()是获取对象容器中的数据值;

从用途来看:

getParameter用于客户端重定向时,即点击了链接或提交按扭时传值用,即用于在用表单或url重定向传值时接收数据用。

getAttribute用于服务器端重定向时,即在 sevlet 中使用了 forward 函数,或 struts 中使用了
mapping.findForward。 getAttribute 只能收到程序用 setAttribute 传过来的值。

另外,可以用 setAttribute,getAttribute 发送接收对象.而 getParameter 显然只能传字符串。
setAttribute 是应用服务器把这个对象放在该页面所对应的一块内存中去,当你的页面服务器重定向到另一个页面时,应用服务器会把这块内存拷贝另一个页面所对应的内存中。这样getAttribute就能取得你所设下的值,当然这种方法可以传对象。session也一样,只是对象在内存中的生命周期不一样而已。getParameter只是应用服务器在分析你送上来的 request页面的文本时,取得你设在表单或 url 重定向时的值。

总结:

getParameter 返回的是String,用于读取提交的表单中的值;(获取之后会根据实际需要转换为自己需要的相应类型,比如整型,日期类型啊等等)

getAttribute 返回的是Object,需进行转换,可用setAttribute 设置成任意对象,使用很灵活,可随时用

include指令include的行为的区别

include指令: JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是该JSP文件的一部分,会被同时编译执行。 语法格式如下:
<%@ include file=”文件相对 url 地址” %>

i**nclude动作:** 动作元素用来包含静态和动态的文件。该动作把指定文件插入正在生成的页面。语法格式如下:

JSP九大内置对象,七大动作,三大指令-

JSP九大内置对象,七大动作,三大指令总结

讲解JSP中的四种作用域

JSP中的四种作用域包括page、request、session和application,具体来说:
- page代表与一个页面相关的对象和属性。
- request代表与Web客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个Web组件;需要在页面显示的临时数据可以置于此作用域。
- session代表与某个用户与服务器建立的一次会话相关的对象和属性。跟某个用户相关的数据应该放在用户自己的session中。
- application代表与整个Web应用程序相关的对象和属性,它实质上是跨越整个Web应用程序,包括多个页面、请求和会话的一个全局作用域。

如何实现JSP或Servlet的单线程模式?

对于JSP页面,可以通过page指令进行设置。
<%@page isThreadSafe=”false”%>

对于Servlet,可以让自定义的Servlet实现SingleThreadModel标识接口。

说明:如果将JSP或Servlet设置成单线程工作模式,会导致每个请求创建一个Servlet实例,这种实践将导致严重的性能问题(服务器的内存压力很大,还会导致频繁的垃圾回收),所以通常情况下并不会这么做。

实现会话跟踪的技术有哪些?

  1. 使用Cookie

向客户端发送Cookie

Cookie c =new Cookie("name","value"); //创建Cookie 
c.setMaxAge(60*60*24); //设置最大时效,此处设置的最大时效为一天
response.addCookie(c); //把Cookie放入到HTTP响应中

从客户端读取Cookie

String name ="name"; 
Cookie[]cookies =request.getCookies(); 
if(cookies !=null){ for(int i= 0;i<cookies.length;i++){ Cookie cookie =cookies[i]; if(name.equals(cookis.getName())) //something is here. //you can get the value cookie.getValue(); }}

优点: 数据可以持久保存,不需要服务器资源,简单,基于文本的Key-Value

缺点: 大小受到限制,用户可以禁用Cookie功能,由于保存在本地,有一定的安全风险。

  1. URL 重写

在URL中添加用户会话的信息作为请求的参数,或者将唯一的会话ID添加到URL结尾以标识一个会话。

优点: 在Cookie被禁用的时候依然可以使用

缺点: 必须对网站的URL进行编码,所有页面必须动态生成,不能用预先记录下来的URL进行访问。

3.隐藏的表单域

<input type="hidden" name ="session" value="..."/>

优点: Cookie被禁时可以使用

缺点: 所有页面必须是表单提交之后的结果。

  1. HttpSession

    在所有会话跟踪技术中,HttpSession对象是最强大也是功能最多的。当一个用户第一次访问某个网站时会自动创建 HttpSession,每个用户可以访问他自己的HttpSession。可以通过HttpServletRequest对象的getSession方 法获得HttpSession,通过HttpSession的setAttribute方法可以将一个值放在HttpSession中,通过调用 HttpSession对象的getAttribute方法,同时传入属性名就可以获取保存在HttpSession中的对象。与上面三种方式不同的 是,HttpSession放在服务器的内存中,因此不要将过大的对象放在里面,即使目前的Servlet容器可以在内存将满时将HttpSession 中的对象移到其他存储设备中,但是这样势必影响性能。添加到HttpSession中的值可以是任意Java对象,这个对象最好实现了 Serializable接口,这样Servlet容器在必要的时候可以将其序列化到文件中,否则在序列化时就会出现异常。

Cookie和Session的的区别?

  1. 由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session.典型的场景比如购物车,当你点击下单按钮时,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的Session,用用于标识这个用户,并且跟踪用户,这样才知道购物车里面有几本书。这个Session是保存在服务端的,有一个唯一标识。在服务端保存Session的方法很多,内存、数据库、文件都有。集群的时候也要考虑Session的转移,在大型的网站,一般会有专门的Session服务器集群,用来保存用户会话,这个时候 Session 信息都是放在内存的,使用一些缓存服务比如Memcached之类的来放 Session。
  2. 思考一下服务端如何识别特定的客户?这个时候Cookie就登场了。每次HTTP请求的时候,客户端都会发送相应的Cookie信息到服务端。实际上大多数的应用都是用 Cookie 来实现Session跟踪的,第一次创建Session的时候,服务端会在HTTP协议中告诉客户端,需要在 Cookie 里面记录一个Session ID,以后每次请求把这个会话ID发送到服务器,我就知道你是谁了。有人问,如果客户端的浏览器禁用了 Cookie 怎么办?一般这种情况下,会使用一种叫做URL重写的技术来进行会话跟踪,即每次HTTP交互,URL后面都会被附加上一个诸如 sid=xxxxx 这样的参数,服务端据此来识别用户。
  3. Cookie其实还可以用在一些方便用户的场景下,设想你某次登陆过一个网站,下次登录的时候不想再次输入账号了,怎么办?这个信息可以写到Cookie里面,访问网站的时候,网站页面的脚本可以读取这个信息,就自动帮你把用户名给填了,能够方便一下用户。这也是Cookie名称的由来,给用户的一点甜头。所以,总结一下:Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。

参考:

https://www.zhihu.com/question/19786827/answer/28752144

《javaweb整合开发王者归来》P158 Cookie和Session的比较

欢迎关注我的微信公众号(分享各种Java学习资源,面试题,以及企业级Java实战项目回复关键字免费领取):
微信公众号

转载于:https://www.cnblogs.com/snailclimb/p/9086399.html

相关文章:

HTML教程--多页面窗体

基本语法 <frameset> ... </frameset> <frame src"url"> <noframes> ... </noframes> 在 <noframes> 标记后的文字将只出现在不支持 FRAMES 的浏览器中。 <HTML><HEAD></HEAD><FRAMESET><FRAME SRC…

js左侧三级菜单导航代码

效果演示&#xff1a; 实例代码&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml" xml:lang&…

【jsp】页面跳转的两种方法

注&#xff1a;由index.jxp跳转到Failure.jsp request.getSession().setAttribute("msg", "45654"); 方法一&#xff1a; response.sendRedirect("Failure.jsp"); 特点&#xff1a; &#xff08;1&#xff09;不能传值 &#xff08;2&…

windows远程桌面端口修改

众所周知&#xff0c;windows 2003远程终端服务基于默认端口3389。***者一般先扫描主机开放端口&#xff0c;一旦发现其开放了3389端口&#xff0c;就会进行下一步的***&#xff0c;所以我们只需要修改该务默认端口就可以避开大多数***者的耳目。 步骤&#xff1a; 打开“开始→…

《java第二次实验》

&#xff08;一&#xff09;学习总结 1.什么是构造方法&#xff1f;什么是构造方法的重载&#xff1f;下面的程序是否可以通过编译&#xff1f;为什么&#xff1f; public class Test {public static void main(String args[]) { Foo obj new Foo(); } } class Foo…

[置顶] 当我拿车钥匙的时候,刚交的女朋友跑了。。。

转载于:https://www.cnblogs.com/james1207/p/3291906.html

【jstl】jstl的基本操作

1、jstl不属于javaEE标准&#xff0c;所以需要额外引入jar包 2、引入后需要引入标签库 代码实现&#xff1a; <% taglib prefix"c" uri"http://java.sun.com/jsp/jstl/core" %> 注&#xff1a; &#xff08;1&#xff09;可以使用 alt / 的快捷…

如何修改Sql2005注册服务器名称 {转载}

1.使用select ServerName可以看到当前数据库的服务器名 2.从Sys.SysServers表中可以看到当前的所有服务器名 3.使用 sp_dropserver servername 将这个服务器名删除。 4.使用 sp_addserver new servername,LOCAL将本地服务器重新添加到服务器表中 5.查询Sys.SysServers表&#x…

据说是腾讯php程序员面试题目 蛋疼..要是提供PHP手册就HI了..

说在前面&#xff1a;&#xff11;、以下题目&#xff0c;除了编程任务外其他都需要写在给你提供的草纸上。纸张是珍贵的地球资源&#xff0c;请节约使用。编程任务在有相应的环境时&#xff0c;会要求上机书写&#xff0c;实在没有条件&#xff0c;就只能写在草纸上了。&#…

C功底挑战Java菜鸟入门概念干货(一)

一、认识Java 1、Java 程序比较特殊&#xff0c;它必须先经过编译&#xff0c;然后再利用解释的方式来运行。 2、Byte-codes 最大的好处是——可越平台运行&#xff0c;可让“一次编写&#xff0c;处处运行”成为可能。 3、使用 classpath 可以指定 class 的运行路径。 二、走…

c# lock (obj) 与 lock (this) 区别

lock(obj) 锁定 obj 对象 lock(this) 锁定 当前实例对象&#xff0c;如果有多个类实例的话&#xff0c;lock锁定的只是当前类实例&#xff0c;对其它类实例无影响。 直接上代码。 主窗体代码如下&#xff1a; delegate void SetTextCallback(string text);public Form1() …

【js】四种自定义对象的常见方法

<html><head></head><body><script type "text/javascript">//方法1var stu1 new Object();stu1.stuName "小强1";stu1.stuNo "123";stu1.print function() {alert(stu1.stuName);}//stu1.print();//alert(s…

eclipse启动时报错An internal error occurred during: Initializing Java Tooling.

eclipse启动时报错An internal error o当前工作目录文件夹下的 /.metadata/.plugins/org.eclipse.core.resources/.project。就是把初始化的项目删除&#xff0c;然后打开eclipse以后可以重新初始化。转载于:https://www.cnblogs.com/huanlingjisi/p/8696541.html

给Sqlite数据库设置密码

免费版Sqlie是不提供设置密码功能的&#xff0c;经过查阅资料最终找到了解决方案 方案一&#xff0c;从sqlite源码入手&#xff0c;据说sqlite源码已经提供了加密的接口&#xff0c;只是免费版没有实现&#xff0c;可以参考这位仁兄的博客以了解详情&#xff1a;http://www.cnb…

《创新者》读书笔记 PB16110698 第五周(~4.5)

本周我阅读了某同学推荐的《创新者》&#xff0c;这本书实际上是两个世纪以来信息技术的编年史&#xff0c;从巴贝奇的差分机到如今互联网时代的超级计算机&#xff0c;作者通过各个时代里一位位杰出的创新者&#xff0c;将计算机诞生、发展、崛起和蓬勃的历程娓娓道来。从一篇…

001本周总结报告

在本周中&#xff0c;自己主要做了小学期的编程作业&#xff0c;因为是小学期的特殊缘故&#xff0c;自己的学习时间几乎分配给了小学期的作业的编程&#xff0c;大约每天会抽出5个小时用来编写程序&#xff0c;本周在做小学期的作业时发现自己编程力不从心&#xff0c;无论是从…

【js】创建数组的三种方法

<html><head></head><script type"text/javascript">//数组var stuName1 new Array();stuName1[1] "小强1";stuName1[2] "小强2";//alert(stuName.length);//声明并穷举数组var stuName2 new Array("小强3&quo…

JSon数据查询---Jlinq

LINQ&#xff0c;语言集成查询&#xff08;Language INtegrated Query&#xff09;是一组用于c#和Visual Basic语言的扩展。它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。 Jlinq受到LinQ的启发&#xff0c;可以像LinQ一样查询JSON数据&#xff0c;使用…

PowerShell 2.0管理事件日志(一)查看和读取事件日志

事件日志是操作系统用来保存本身及其他程序信息的工具&#xff0c;本文将会介绍如何通过PowerShell脚本阅读事件日志并创建新的日志条目。Windows系统中包含多种事件日志&#xff0c;在Windows XP系统中包括4种主要的事件日志。即应用程序、系统、安全性及Internet Explorer日志…

Applet相关知识

1、Applet定义 Applet是采用Java编程语言编写的小应用程序&#xff0c;该程序可以包含在 HTML&#xff08;标准通用标记语言的一个应用&#xff09;页中&#xff0c;与在页中包含图像的方式大致相同。含有Applet的网页的HTML文件代码中部带有<applet> 和</applet>这…

python threading ThreadPoolExecutor源码解析

future: 未来对象&#xff0c;或task的返回容器 1. 当submit后&#xff1a; def submit(self, fn, *args, **kwargs):with self._shutdown_lock: # lock是线程锁if self._shutdown:raise RuntimeError(cannot schedule new futures after shutdown)f _base.Future() # 创建fut…

【js】内置对象array的常见方法的使用

<html><head></head><script type"text/javascript">//数组var stuName1 new Array();stuName1[1] "小强1";stuName1[2] "小强2";//alert(stuName.length);//声明并穷举数组var stuName2 new Array("小强3&quo…

《学习vi编辑器》的学习笔记1

第一章 vi文本编辑器 打开文件vi [filename] 输入:q在缓冲区中内容和磁盘内容一致的时候退出,否则就需要输入:q!来忽略这个限制,不保存缓冲区,直接退出 命令模式:每次输入都表示一个命令. 插入模式:输入的一切内容都将吃味文件中的文本 :wq(属于ex编辑器)命令等价于ZZ命令,就是…

Android的API与差异化之路

Android的API与差异化之路 发挥Android特色&#xff1a;框架API和开源(开放) Android平台就如同长城般&#xff0c;两岸的硬件业厂商就如同关内居民&#xff0c;是建造长城的最先获利者。也基于这样的效益&#xff0c;让许多硬件大厂竞相拥抱Android&#x…

Oracle 高效分页

-- 分页 select * from t_user5 select count(1) from t_user5 --10,485,760 -- rownum是一个查询后的结果&#xff0c;查询之前是不存在的 select rownum,rowid,tt.* from t_user5 tt where rownum<3 and sex1 and rownum>2 -- 对结果进行查询 -- 思路1&#xff0c;r…

Data - 【转】数据分析的道与术

简要说明 本文来自网络流传的“百度内部培训PPT - 数据分析的道与术”&#xff0c;版权属于“百度”&#xff0c;如有冒犯&#xff0c;即刻删除。PDF下载 - 数据分析的道与术什么是数据分析&#xff08;道&#xff09; 1 - 数据分析是什么&#xff1f; 2 - 什么是做好数据分析的…

ruby生成C++头文件引用关系图

首先生成graphviz的dot格式文件 require find class RefNodeattr_accessor :name,:reference end include Find if __FILE__ $0name "name"dot []h Hash.newputs ["digraph #{name}{","overlap false","spline true","rank…

【js】内置对象String的常用方法

<html><head></head><script type"text/javascript">var stuName1 "小强1";var test "abcdcab";//alert(stuName.charAt(1));var stuName2 "小强2";//alert(stuName1.concat(stuName2));//alert(test.inde…

关于Linux静态库和动态库的分析

From:http://hi.baidu.com/bdccutysj/blog/item/5bae7f0202abac7c3912bb15.html1.什么是库 在windows平台和linux平台下都大量存在着库。 本质上来说库是一种可执行代码的二进制形式&#xff0c;可以被操作系统载入内存执行。 由于windows和linux的本质不同&#xff0c;因此二者…

求解|x-y|最小

问题&#xff1a;输入数组a和b&#xff0c;请通过交换的方式重新分配两个数组&#xff0c;使得|a-b|最小 提供一种思路&#xff1a; 当前数组a和数组b的和之差为 A sum(a) - sum(b) a的第i个元素和b的第j个元素交换后&#xff0c;a和b的和之差为 A ( sum(a) - a[i] b…