SOA:service oriebted architecture面向服务编程,编程思想、理论,分布式服务架构,典型的就是数据总线:多个子系统相互调用非常凌乱,引入服务总线来统一控制调度。https://www.cnblogs.com/renzhitian/p/6853289.html
IOC : 对象控制反转,DI:依赖注入
https://www.cnblogs.com/NancyStartOnce/p/6813162.html
OAP:Aspect-Oriented Programming,面向切面的编,它是可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。它是一种新的方法论,它是对传统OOP编;AOP是希望能够将通用需求功能从不相关的类当中分离出来,能够使得很多类共享一个行为,一旦发生变化,不必修改很多类,而只需要修改这个行为即可;MVC的过滤器Filter,它里面的异常捕捉可以通过FilterAttribute,IExceptionFilter去处理。反射机制https://www.cnblogs.com/landeanfen/p/4782370.html
处理高并发与调优:
1.html静态化
2.图片服务器分离
3.数据库集群和库表散列_
4.缓存
5.镜像
6.负载均衡
海量数据拆表:垂直拆表:根据业务拆封表的字段,如用的多的字段放一张表;水平拆表:将多条数据放多张一样的表,需要临时表来获取新增的id值。这样历史数据会是user_01。
web1.0与web2.0:
1.0主要是门户网站类似,主要以用户量的阅读,如新浪等。
2.0在1.0上的拓展,增加用户的可写,即可读可写类似博客,用户是网站类容的浏览者,也是网站内容的制造者,共同建设。
ajax异步调用接口:jquery是js轻量级的框架,jquery.ajax()封装方便调用。有许多种方式,post/get,data可以是拼接的html,json,serialize后的form表单,post的data是键值对;url可以是action也可以是接口地址,get是请求的url,post是请求地址;
getscript在请求时可执行脚本文件。
mvc中的tempdata,viewdata,viewbag,session:
路由的作用:定义url的规则,路由映射表写在global.asax中
https://www.cnblogs.com/Hackson/p/7055695.html
mvc做数据验证:m加数据属性标签,view用validatemessageFor;razor试图引擎,如aspx显示时间<%=DateTime.Now%>,而razor @DateTime.Now;
授权和认证:windows和forms,
数据库索引:聚集索引,非聚集索引
聚集索引即我们所有表的主键,是一个b+tree平衡数据结构,建立索引:create index index_id on user(id),节点上是单个id,根据id的值去找对应的表的记录。
非聚集索引的区别在于,他是多个b+tree结构,建一个非聚集索引就有一个独立的
b+tree,而聚集索引全部是一个平衡结构;非聚集索引可以是多个字段的索引,所以如果查询只是该索引的字段,则只要两步就能查询到。
索引建立会优化查询速度,但是会让增删改变慢,因为增删改需要打破平衡结构,需要重新梳理,导致变慢。
字段很关键,where后面先加索引字段,重复率越低的字段越适合做索引字段。
所以建什么索引以及建哪些字段的索引都是问题
如何在SQLServer中处理亿万级别的数据(历史数据),可以按以下方面进行:
去掉表的所有索引
用SqlBulkCopy进行插入
分表或者分区,减少每个表的数据总量
在某个表完全写完之后再建立索引
正确的指定索引字段
把需要用到的字段放到包含索引中(在返回的索引中就包含了一切)
查询的时候只返回所需的字段
Http超文本传输协议:
状态行,请求/响应头,请求正文/响应正文
常见状态码:200 等
http://blog.51cto.com/13570193/2108347
三个访问量:ip pv uv ,
pv=pageView 页面访问量
uv=computerView 电脑访问量
轮询polling 和推送long-polling
https://blog.csdn.net/huawei_MCU/article/details/14056025?utm_source=blogxgwz1
简单介绍一下通信协议:
tcp传输控制协议,提供可靠的字节流服务,提供超时重发,去重复数据,检验数据和流量控制。
upd数据报,不可靠传输,因为没有数据校验什么的,所以速度快,只发送不管到没到。
ip对应网络层。
htrp协议,客户端发一次请求,服务端响应后即断掉连接,是短连接,web都是基于该模式。
socket是协议接口,socket是tcp/ip的封装,方便使用,socket是长连接,即客户端与服务端一直连接,无特殊情况不会断开,利用套接字约定传输,clientSocket与serverSocket。
那么问题题来了??web怎么保持长连接呢?
我们知道实时通信的客户端与服务端需要一直连接着,如果是app等客户端,用socket能保持一直连接不断开,但是web是http协议,即连接一次,响应一次就断开。
这时候可以用polling与long-polling来解决:
polling定时向服务端发请求保持连接,不管服务端有没新的数据,此时效率低。
long-polling是服务端有新数据,推送给客户端,跟新数据,是polling的改善。
流:不断跟新状态保持连接,建立长连接,该方法对用户体验和浏览器的不同都有问题。
以上两种方式其实都有不好之处,还有最著名的comnet推送,通常是使用javaScript结合长轮询或流连接策略实现的,它推迟了http响应的结束。
以上方式都有一些资源浪费与复杂性,那么新出的 HTML5 web socket就是拯救的办法:它提供了一个标准,可以构建实时web应用程序,还提供了一个浏览器自带的套接字,消除了comnet的许多问题。减少数据字节以及流量和延迟。
微信支付宝支付
https://blog.csdn.net/swimming_in_it_/article/details/78540643
支付后只是发送请求,是否成功还有一个异步回调,只有返回成功或超时才默认是成功的。
支付宝需要程序返回一个success,支付宝有状态变更时才不会一直发送数据,当商户收到服务器异步通知并打印success时,服务器异步通知参数notify-id才会失效。
微信:支付后,微信收到的商户应答不是成功或超时,微信认为通知失败。同样的通知可能会多次发送给商户系统,商户必须能够正确的处理重复的通知:处理了就返回成功,没处理就处理,但在处理之前要采用数据锁进行并发控制,以避免函数重入造成数据混乱。
微信数据格式是xml
DI 依赖注入
可以理解为IoC,也是工厂模式的实现
具体代码实现,定义一个服务接口,服务端实现接口的方法,客户类中的方法参数参数需要调用的服务
初始化注入点,main中实例化服务,传入客户端,调用服务端中的方法。
加入反射,结构更加简单,配置可简化代码结构。
IoC 控制反转,与DI对应,对象实例统一管理,不是需要的时候客户端自己实例出来。
MyBatis
是一个数据持久化框架
java中,适用MyBatis能改善代码的复用性
大致的原理是:对数据表建模,使用XML配置表的操作,然后将XML注册到MyBatis的XMLMap中,
在代码中调用该配置文件实现数据库操作与代码的分离,有点有很多,可支持多类型的数据库,易于维护,易于代码的复用等等
RabbitMQ
https://www.cnblogs.com/dwlsxj/p/RabbitMQ.html
消息队列,MQ ,经典开源的消息队列项目:Rabbit MQ
也是生成者消费者模式的经典实现,即生产者生产过剩,需要等待消费者消费,消费者消费过剩,需要等待生产者生产,
为了解决该问题,引入了第三者:队列,在看经典模型时,需要注意提炼第三者,方便快速理解。
加入队列能够平衡生产者与消费者的产销。生产者生产一个放入队列,消费者消费完就从队列中取。
这里有多线程也有单线程的实现作为生产者或者消费者,具体看场景的需要。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69930244/viewspace-2647557/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/69930244/viewspace-2647557/