java后台面试相关知识总结(1)

1、nginx(轻量级)与apache(网页服务器软件)的比较:

Nginx(发音同engine x)是一款由俄罗斯程序员Igor Sysoev所开发轻量级的网页服务器反向代理服务器以及电子邮件(IMAP/POP3)代理服务器

a 、nginx最新版本的静态文件处理能力高于apache,出错率低相比较而言apache的在压力测试时表现不稳定;http://blog.csdn.net/lengzijian/article/details/7699444

b、动态文件处理能力:根据出错率来看,nginx明显低于apache,总的观察看来nginx无论是动态处理能力还是静态处理能力,都比apahce要强劲很多

c、优化后Nginx 0.8.46 + PHP 5.2.14 (FastCGI)可以承受3万以上的并发连接数,相当于同等环境下Apache10

d、同时nginx还是一款优秀的反向代理、负载均衡服务器,策略丰富(round robin、IP、Hash以及一些第三方的策略插件)

http://zh.wikipedia.org/wiki/Nginx

各自优缺点:

a、Nginx是一款面向性能设计的HTTP服务器,相较于Apachelighttpd具有占有内存少,稳定性高等优势。与旧版本(<=2.2)的Apache不同,nginx不采用每客户机一线程的设计模型,而是充分使用异步逻辑,削减了上下文调度开销,所以并发服务能力更强。整体采用模块化设计,有丰富的模块库和第三方模块库,配置灵活。 在Linux操作系统下,nginx使用epoll事件模型,得益于此,nginx在Linux操作系统下效率相当高。同时Nginx在OpenBSD或FreeBSD操作系统上采用类似于epoll的高效事件模型kqueue。

b、整体采用模块化设计是nginx的一个重大特点,甚至http服务器核心功能也是一个模块。要注意的是:nginx的模块是静态的,添加和删除模块都要对nginx进行重新编译,这一点与Apache的动态模块完全不同。


2、JAVA与C语言的运算符重载实现比较:

if(3>2>1){
}
a、java中提示
The operator > is undefined for the argument type(s) boolean, int
if(3>a&&a>1)这种写法才是对的
http://blog.csdn.net/java05/article/details/3239997
&&和||只能用与逻辑运算 当你运行代码System.out.println(9&&10);时.
会抛出The operator && is undefined for the argument type(s) int, int 的错误 改成String也会报同样的错误.
通过在&&或||两边放置不同类型数据,发现他们只支持boolean类型.
而&和|两边则支持int boolean char三种类型,如果放的是int 或char则进行位运算,如果放的是boolean则进行逻辑运算

b、但是同样的表达式在c语言中是可以进行运行的


3、HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤:
(1)    建立TCP连接
在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80
(2)    Web浏览器向Web服务器发送请求命令
一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令
例如:GET/sample/hello.jsp HTTP/1.1
(3)    Web浏览器发送请求头信息
浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。
(4)    Web服务器应答
客户机向服务器发出请求后,服务器会客户机回送应答,
HTTP/1.1 200 OK
应答的第一部分是协议的版本号和应答状态码
(5)    Web服务器发送应答头信息
正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。
(6)    Web服务器向浏览器发送数据
Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据
(7)    Web服务器关闭TCP连接
一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码
Connection:keep-alive
TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。


4、linux shell文本替换工具sed,更多工具请参看http://blog.csdn.net/shuzui1985/article/details/7730538

sed

原文件sedtest中为:

jhy

mvk

mvk

end

分别执行:

a、sed "/mv/d" sedtest

文件未被修改,输出为:

jhy

end

b、sed "s/mv/d/" sedtest

文件未被修改,输出为:

jhy

dk

dk

end

c、sed -i "s/mv/d/" sedtest 

没有输出,文件被修改为:

jhy

dk

dk

end


6、一些简单的SQL语句

常用的表数据类型:

(1)char、varchar、text和nchar、nvarchar、ntext 
char和varchar的长度都在1到8000之间,它们的区别在于char是定长字符数据,而varchar是变长字符数据。
后面三种数据类型和前面的相比,从名称上看只是多了个字母"n",它表示存储的是Unicode数据类型的字符。写过程序的朋友对Unicode应该很了解。字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。
nchar、nvarchar的长度是在1到4000之间。和char、varchar比较:nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。 
text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。 
(2)datetime和smalldatetime 
datetime:从1753年1月1日到9999年12月31日的日期和时间数据,精确到百分之三秒。 
smalldatetime:从1900年1月1日到2079年6月6日的日期和时间数据,精确到分钟。 

(3)bitint、int、smallint、tinyint和bit 
bigint:从-2^63(-9223372036854775808)到2^63-1(9223372036854775807)的整型数据。 
int:从-2^31(-2,147,483,648)到2^31-1(2,147,483,647)的整型数据。 
smallint:从-2^15(-32,768)到2^15-1(32,767)的整数数据。 
tinyint:从0到255的整数数据。 
bit:1或0的整数数据。
1、当使用非unicode时慎用以下这种查询: 
            select f from t where f = N'xx' 

    原因:无法利用到索引,因为数据库会将f先转换到unicode再和N'xx'比较 

2、char 和相同长度的varchar处理速度差不多(后面还有说明) 

3、varchar的长度不会影响处理速度!!!(看后面解释) 

4、索引中列总长度最多支持总为900字节,所以长度大于900的varchar、char和大于450的nvarchar,nchar将无法创建索引 

5、text、ntext上是无法创建索引的 

创建数据库
      create database database-name

删除数据库
      drop database database-name

between的用法,between限制查询数据范围时包括了边界值,not between不包括
      select * from table1 where time between time1 and time2
      select a,b,c, from table1 where a not between 数值1 and 数值2

创建新表
      create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

      create table student(name char(4),time datetime not null)
  根据已有的表创建新表: 
      A:create table tab_new like tab_old (使用旧表创建新表)
      B:create table tab_new as select col1,col2… from tab_old definition only

删除新表:drop table tabname

增加字段
     alter table docdsp    add dspcode char(200)
删除字段
     ALTER TABLE table_NAME DROP COLUMN column_NAME

修改字段类型
     ALTER TABLE table_name    ALTER COLUMN column_name new_data_type

几个简单的基本的sql语句
  选择:select * from table1 where 范围
  插入:insert into table1(field1,field2) values(value1,value2)
  删除:delete from table1 where 范围
  更新:update table1 set field1=value1 where 范围
  查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!
  排序:select * from table1 order by field1,field2 [desc]
  总数:select count * as totalcount from table1
  求和:select sum(field1) as sumvalue from table1
  平均:select avg(field1) as avgvalue from table1
  最大:select max(field1) as maxvalue from table1
  最小:select min(field1) as minvalue from table1

范德萨


你可能感兴趣的:(java,面试)