1、b/s架构带来了2个优点:
1)由于浏览器具有统一性,它不需要特殊的配置和网络连接,有效的屏蔽了不同服务提供商提供给用户使用服务的差异性。
2)服务端基于统一的http,和传统的c/s架构使用的自定义的应用层协议。http协议采用的是无状态的短链接的通信方式,当应用处理上万的用户时,要保持用户请求的快速响应,不可能每个用户访问一次都保持这个链接。
2、linux 中curl+url可以发起一个http请求
3、黑客可以进行域名劫持,修改host文件制定到它的ip上,所以后来win7将这个文件改为只读
4、域名解析过程:浏览器缓存->host文件->LDNS(如学校的dns)->root server(在哪个域名服务器提供商那申请的,基本就由谁解析)
5、cdn内容分布网络(相当于负载均衡,镜像,cache):放静态文件为主(js,css,图片等),在现有的internet增加一层架构,将网站的内容发布到离用户最近网络边缘,可以从主服务器获取动态内容,从cdn获取静态内容,增加访问网站的速度
6、inputStreamReader 是字节流转化成字符流的桥梁,适配器模式:改变原来的接口实现另一个接口,装饰器模式:包装接口功能
7、nio和bio
8、设计模式:适配器模式,装饰器模式,访问者模式(可以将数据结构和对数据结构的操作解耦,java编译阶段都定义了不同访问者模式的实现),门面设计模式(一个大的系统里面有很多子系统,子系统之间的通信,但没必要全部暴露),观察者模式(监听生命周期 ),命令设计模式(Connector是通过命令模式调用Container的),责任链模式,springBeanFactory工厂模式,动态代理cglib使用的策咯模式
9、http经过负载均衡设备分配到某个域名对应的应用集群,经过ngix代理到jboss或者tomcat,lvs是一个虚拟的服务器集群系统
10、classLoader的等级加载机制,这种机制就是上级委托接待机制
11、获取客户端的ip
http://www.cnblogs.com/icerainsoft/p/3584532.html
12、ActionContext和ServletActionContext的区别
http://my.oschina.net/u/272336/blog/112810
13、cookie跨域
http://www.cnblogs.com/jirglt/archive/2012/10/20/2732213.html
14、微信获取用户openId:通过菜单配置url,获取code,根据code获取appid
15、使用js需要引js,配置权限,获取js_ticket,localid,serverid
从cookie中获取唯一标识,如果cookie中没有,则去user-agent中获取,没有就是znt,否则为微信
16、消息队列
1)用消息队列的应用 场景(短信服务,邮件服务,好友动态推送服务)(消息队列可驻留在内存或磁盘上)
http://www.360doc.com/content/15/0324/11/203871_457622006.shtml
http://blog.sina.com.cn/s/blog_6166d8170100h0ty.html
2)异步 的方式进行传递数据,如频繁的插入数据或者有并发量比较高,对数据库压力比较大,如果造成表锁行锁,这样将数据放在队列中起到了缓冲的作用,减轻了对服务的压力,可以实现负载均衡和一些业务的容灾。异步消息就是保证正确发送,不保证及时发送,短信就是这样。
3)websphere是ibm软件平台,Websphere MQ 是 IBM 功能强大的消息传送中间件产品,它以其成熟的技术和世界领先的产品向我们提供了的功能丰富、可靠易用的异构平台间实现可靠信息传递的成熟解决方案。
4)3种通信技术的比较
1)cpi-c(公共通信编程接口):同步的对话通信模式
2)rpc远程调用:同步的对话方式模式
3)mqi(message queue interface ,消息队列接口):为程序提供了一种异步通信的方式,一个程序以一个队列作为中转与另一个程序相互通信
同步的好处:易于编程,更好的实时响应,更易恢复错误,坏处:通常是面向连接的通信服务,服务必须启动在线,请求方阻碍占用资源。
异步的好处:无须制定服务器,服务无须在线,由于没有占用,资源可以释放,可以使用非连接协议
坏处:响应时间不可预测,错误处理通常复杂
5)队列的好处(环境差异被屏蔽掉):不用关心运行在什么os之上,不用关心程序由什么语言写的,不用关心底层使用什么通信协议。
1) 要通信的应用程序可以运行在不同时间.
2) 对于应用间的结构没有限制.
3) 对于应用程序来说,底层的环境差异被屏蔽掉.
2个队列管理器,一个消息通道只能在一个方向传递,双向就得2个通道,1个通道多个队列服务
6)通道的类型:Sender – 发起到Receiver的连接 Server – 接受requester的请求, 变成Sender通道 Receiver – 被动; 等待Sender的连接 Requester – 启动时活动, 变成Receiver通道 Cluster-sender (用于队列管理器集群) Cluster-receiver (同上)
7)IBM WebSphere MQ 支持两种不同的应用程序编程接口:Java 消息服务(JMS)和消息队列接口(MQI)。在 IBM WebSphere MQ 服务器上,JMS 绑定方式被映射到 MQI。
8)jmsTemplate接受消息的最大缺点在于receive()方法是同步的,意味着接受者必须耐心等待消息的到来,因此receive方法会一直被阻塞,同步接受异步发送的消息很怪异,可采用创建消息监听器
9)基于jms消息的rpc(jmsInvoker)同步和lingo异步
10)消息一般用textMessage
19、出现java.lang.UnsupportedClassVersionError 错误的原因,是因为我们使用高版本的JDK编译的Java class文件试图在较低版本的JVM上运行,所报的错误。
20、spring MVC
1)<mvc:resource mapping="" location=""/>处理对静态资源的请求
2)控制器配置,选中DefaultAnnotationHandlerMapping将请求映射到使用@RequestMapping注解的方法,再开启<mvc:annotation-driven/>,<mvc:annotation-driven/>相当于注册了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个bean,配置一些messageconverter。即解决了@Controller注解的使用前提配置。
<context:annotation-config/>是对包进行扫描,实现注释驱动Bean定义,同时将bean自动注入容器中使用。即解决了@Controller标识的类的bean的注入和使用。
3)配置视图解析器
4)在web.xml中配置ContextLoaderListener中监听器,默认会找applicationContext.xml,但并没有实现加载多个spring文件,所以需要配置contextConfigLocation。
5)@requestMapping(method=RequestMethod.GET params="new")
6)pathValiable用于路径带参数传值
参数中必须含有new
21、连接池的好处:
资源重用 ,更快的系统响应速度 ,新的资源分配手段 ,统一的连接管理,避免数据库连接泄漏
22、spring的事务分为声明式事务和编程式事务(侵入性强)
23、改变正在运行的应用的配置,是用jmx,核心组件是Mbean(托管Bean),spring的MbeanExporter将springBean的属性和方法在Mbean到处为jmx的属性和操作,通过jmx管理工具jConsole可以看到正在运行的应用程序的内部,还需要在spring中配置mbean服务器
jconconsole------>Mbean服务器-------->spring上下文
24、配置:1)使用占位符变量2)外部化配置,密码可以从环境变量中取3)外部化整个对象到jndi中,然后配置sprinig获取这些对象并装配到spring上下文中。
jndi能够在目录中通过名字查找对象的javaapi
<jee:jdii-lookup id="datasource" jndi-name=“/jdbc/spitters” resource-ref='true' cache='false'>
默认从jndi缓存中取,false为关闭缓存
25、spring自带的邮件发送的api
26、1)java内存
http://blog.csdn.net/qh_java/article/details/9084091,寄存器,堆,栈,方法区,常量池
2)+=隐式进行类型的转换
3)java的远程调用(rpc)
http://www.cnblogs.com/jifeng/archive/2011/07/20/2111183.html
RMI穿越防火墙不方便主要是因为除了RMI服务注册的端口(默认1099)外,与RMI的通讯还需要另外的端口来传送数据,而另外的端口是随机分配的,所以要想RMI的客户能通过防火墙来与RMI服务通讯,则需要能让随机分配的端口固定下来。soap是简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。
4)zookeeper(命名服务,配置管理,集群管理)
http://my.oschina.net/binxin/blog/652170
http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/
zookeeper是一个高性能,分布式的,开源分布式应用协调服务。它提供了简单原始的功能,分布式应用可以基于它实现更加高级的服务,比如同步,配置管理,集群管理,命名空间。它被设计为易于编程,使用文件系统目录作为数据模型。服务端跑在java上,提供java和c的客户端api
5)dobbo服务 soa
http://shiyanjun.cn/archives/325.html
27、servlet相关:
链接地址,表单提交地址,重定向的绝对路径,应从应用名开始写,而转发应该从应用名之后写