网站建设记什么科目,杭州比较好的互联网公司,单页网站的优点,百度识图以图搜图1#xff0c;webservice是什么#xff1f;
webservice是一种跨编程语言和跨操作系统的远程调用技术,遵循SOPA/WSDL规范。
2#xff0c;springCloud是什么#xff1f;
springcloud是一个微服务框架#xff0c;并提供全套分布式系统解决方案。支持配置管理#xff0c;熔断机…1webservice是什么
webservice是一种跨编程语言和跨操作系统的远程调用技术,遵循SOPA/WSDL规范。
2springCloud是什么
springcloud是一个微服务框架并提供全套分布式系统解决方案。支持配置管理熔断机制leader选举服务治理分布式session微代理控制总线智能路由一次性token。Java中堆和栈有什么不同
每个线程都有自己的栈内存用于存储本地变量方法参数和栈调用一个线程中存储的变量对其它线程是不可见的。而堆是所有线程共享的一片公用内存区域。对象都在堆里创建为了提升效率线程会从堆中弄一个缓存到自己的栈如果多个线程使用该变量就可能引发问题这时volatile 变量就可以发挥作用了它要求线程从主存中读取变量的值。堆对象
引用类型的变量其内存分配在堆上或者常量池字符串常量、基本数据类型常量需要通过new等方式来创建。
堆内存主要作用是存放运行时创建(new)的对象。
主要用于存放对象存取速度慢可以运行时动态分配内存生存期不需要提前确定栈基本数据类型变量、对象的引用变量
基本数据类型的变量int、short、long、byte、float、double、boolean、char等以及对象的引用变量其内存分配在栈上变量出了作用域就会自动释放。Spring的Scope有以下几种通过Scope注解来实现:1Singleton一个Spring容器中只有一个Bean的实例此为Spring的默认配置全容器共享一个实例。2Prototype每次调用新建一个Bean实例。3RequestWeb项目中给每一个 http request 新建一个Bean实例。4SessionWeb项目中给每一个 http session 新建一个Bean实例。5GlobalSession这个只在portal应用中有用给每一个 global http session 新建一个Bean实例。Spring事务传播行为所谓事务的传播行为是指如果在开始当前事务之前一个事务上下文已经存在此时有若干选项可以指定一个事务性方法的执行行为。在TransactionDefinition定义中包括了如下几个表示传播行为的常量
TransactionDefinition.PROPAGATION_REQUIRED如果当前存在事务则加入该事务如果当前没有事务则创建一个新的事务。这是默认值。TransactionDefinition.PROPAGATION_REQUIRES_NEW创建一个新的事务如果当前存在事务则把当前事务挂起。TransactionDefinition.PROPAGATION_SUPPORTS如果当前存在事务则加入该事务如果当前没有事务则以非事务的方式继续运行。TransactionDefinition.PROPAGATION_NOT_SUPPORTED以非事务方式运行如果当前存在事务则把当前事务挂起。TransactionDefinition.PROPAGATION_NEVER以非事务方式运行如果当前存在事务则抛出异常。TransactionDefinition.PROPAGATION_MANDATORY如果当前存在事务则加入该事务如果当前没有事务则抛出异常。TransactionDefinition.PROPAGATION_NESTED如果当前存在事务则创建一个事务作为当前事务的嵌套事务来运行如果当前没有事务则该取值等价于TransactionDefinition.PROPAGATION_REQUIRED。Spring的声明式事务管理力度是什么级别
Struts2是类级别的Spring是方法级别的spring事务可以分为编程式事务和声明式事务spring MVC与struts2的区别:参考  http://blog.csdn.net/chenleixing/article/details/445706811、Struts2是类级别的拦截 一个类对应一个request上下文SpringMVC是方法级别的拦截2、SpringMVC的方法之间基本上独立的独享request response数据3、由于Struts2需要针对每个request进行封装把requestsession等servlet生命周期的变量封装成一个一个
Map供给每个Action使用并保证线程安全所以在原则上是比较耗费内存的4、拦截器实现机制上Struts2有以自己的interceptor机制SpringMVC用的是独立的AOP方式5、SpringMVC的入口是servlet而Struts2是filter6、SpringMVC集成了Ajax7、SpringMVC验证支持JSR303处理起来相对更加灵活方便而Struts2验证比较繁琐感觉太烦乱8、Spring MVC和Spring是无缝的。从这个项目的管理和安全上也比Struts2高9、Struts2更加符合OOP的编程思想 SpringMVC就比较谨慎在servlet上扩展10、SpringMVC开发效率和性能高于Struts211、SpringMVC可以认为已经100%零配置Spring框架中的核心思想包括什么
主要思想是IOC控制反转DI依赖注入AOP面向切面ArrayList和LinkedList的大致区别如下:
1.ArrayList是实现了基于动态数组的数据结构LinkedList基于链表的数据结构。 2.对于随机访问get和setArrayList觉得优于LinkedList因为LinkedList要移动指针。 
3.对于新增和删除操作add和removeLinedList比较占优势因为ArrayList要移动数据。
ArrayListVector主要区别为以下几点 1Vector是线程安全的源码中有很多的synchronized可以看出而ArrayList不是。导致Vector效率无法和ArrayList相比 
2ArrayList和Vector都采用线性连续存储空间当存储空间不足的时候ArrayList默认增加为原来的50%Vector默认增加为原来的一倍 HashSet与HashMap的区别
HashMapHashSet实现了Map接口实现Set接口存储键值对仅存储对象调用put向map中添加元素调用add方法向Set中添加元素HashMap使用键Key计算HashcodeHashSet使用成员对象来计算hashcode值对于两个对象来说hashcode可能相同所以equals()方法用来判断对象的相等性如果两个对象不同的话那么返回falseHashMap相对于HashSet较快因为它是使用唯一的键获取对象HashSet较HashMap来说比较慢HashMap和Hashtable的区别:HashMap和Hashtable都实现了Map接口但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有线程安全性同步(synchronization)以及速度。
HashMap几乎可以等价于Hashtable除了HashMap是非synchronized的并可以接受null(HashMap可以接受为null的键值(key)和值(value)而Hashtable则不行)。HashMap是非synchronized而Hashtable是synchronized这意味着Hashtable是线程安全的多个线程可以共享一个Hashtable而如果没有正确的同步的话多个线程是不能共享HashMap的。Java 5提供了ConcurrentHashMap它是HashTable的替代比HashTable的扩展性更好。另一个区别是HashMap的迭代器(Iterator)是fail-fast迭代器而Hashtable的enumerator迭代器不是fail-fast的。所以当有其它线程改变了HashMap的结构增加或者移除元素将会抛出ConcurrentModificationException但迭代器本身的remove()方法移除元素则不会抛出ConcurrentModificationException异常。但这并不是一个一定发生的行为要看JVM。这条同样也是Enumeration和Iterator的区别。由于Hashtable是线程安全的也是synchronized所以在单线程环境下它比HashMap要慢。如果你不需要同步只需要单一线程那么使用HashMap性能要好过Hashtable。HashMap不能保证随着时间的推移Map中的元素次序是不变的。线程安全是什么线程不安全是什么
线程安全就是多线程访问时采用了加锁机制当一个线程访问该类的某个数据时进行保护其他线程不能进行访问直到该线程读取完其他线程才可使用。不会出现数据不一致或者数据污染。(Vector,HashTable) 线程不安全就是不提供数据访问保护有可能出现多个线程先后更改数据造成所得到的数据是脏数据。ArrayListLinkedListHashMap等线程和进程的区别进程和线程都是一个时间段的描述是CPU工作时间段的描述不过是颗粒大小不同1进程是资源的分配和调度的一个独立单元而线程是CPU调度的基本单元2同一个进程中可以包括多个线程并且线程共享整个进程的资源寄存器、堆栈、上下文一个进行至少包括一个线程。3进程的创建调用fork或者vfork而线程的创建调用pthread_create进程结束后它拥有的所有线程都将销毁而线程的结束不会影响同个进程中的其他线程的结束4线程是轻两级的进程它的创建和销毁所需要的时间比进程小很多所有操作系统中的执行功能都是创建线程去完成的5线程中执行时一般都要进行同步和互斥因为他们共享同一进程的所有资源6线程有自己的私有属性TCB线程id寄存器、硬件上下文而进程也有自己的私有属性进程控制块PCB这些私有属性是不被共享的用来标示一个进程或一个线程的标志黑盒测试、灰盒测试、白盒测试、单元测试有什么区别黑盒测试关注程序的功能是否正确面向实际用户
白盒测试关注程序源代码的内部逻辑结构是否正确面向编程人员
灰盒测试是介于白盒测试与黑盒测试之间的一种测试。
单元测试(Unit Testing)是对软件基本组成单元进行的测试如函数或是一个类的方法。这里的单元就是软件设计的最小单位。怎么对数据库百万级数据进行优化使用读写分离技术
让主数据库master处理事务性增、改、删操作INSERT、UPDATE、DELETE而从数据库slave处理SELECT查询操作Spring Bean的生命周期
Bean的建立 由BeanFactory读取Bean定义文件并生成各个实例Setter注入执行Bean的属性依赖注入BeanNameAware的setBeanName(), 如果实现该接口则执行其setBeanName方法BeanFactoryAware的setBeanFactory()如果实现该接口则执行其setBeanFactory方法BeanPostProcessor的processBeforeInitialization()如果有关联的processor则在Bean初始化之前都会执行这个实例的processBeforeInitialization()方法InitializingBean的afterPropertiesSet()如果实现了该接口则执行其afterPropertiesSet()方法Bean定义文件中定义init-methodBeanPostProcessors的processAfterInitialization()如果有关联的processor则在Bean初始化之前都会执行这个实例的processAfterInitialization()方法DisposableBean的destroy()在容器关闭时如果Bean类实现了该接口则执行它的destroy()方法Bean定义文件中定义destroy-method在容器关闭时可以在Bean定义文件中使用“destory-method”定义的方法简单回答springbean生命周期1实例化必须的构造函数构造对象2装配可选的为属性赋值3回调可选的容器-控制类和组件-回调类4初始化(init-method )5就绪6销毁destroy-method springmvc生命周期
1A客户端发出http请求只要请求形式符合web.xml文件中配置的*.action的话就由DispatcherServlet来处理。
1BDispatcherServlet再将http请求委托给映射器的对象来将http请求交给对应的Action来处理
2映射器根据客户的http请求再对比bean name/hello.action如果匹配正确再将http请求交给程序员写的Action
3执行Action中的业务方法最终返回一个名叫ModelAndView的对象其中封装了向视图发送的数据和视图的逻辑名
4ModelAndView对象随着响应到到DispatcherServlet中了
5这时DispatcherServlet收到了ModelAndView对象它也不知道视图逻辑名是何意又得委托一个名叫视图解析器的对象去具体解析ModelAndView对象中的内容
6将视图解析器解析后的内容再次交由DispatcherServlet核心控制器这时核心控制器再将请求转发到具体的视图页面取出数据再显示给用户servlet生命周期Servlet 通过调用 init () 方法进行初始化。Servlet 调用 service() 方法来处理客户端的请求。Servlet 通过调用 destroy() 方法终止结束。最后Servlet 是由 JVM 的垃圾回收器进行垃圾回收的ajax怎么解决跨域参考http://blog.csdn.net/u014727260/article/details/727934591代理通过后台操作2JSONP添加响应头允许跨域 addHeader(‘Access-Control-Allow-Origin:*’);//允许所有来源访问 addHeader(‘Access-Control-Allow-Method:POST,GET’);//允许访问的方式3在ajax的dataType方式改为“jsonp”Mysql数据类型1.普通索引    2.唯一索引    3.主键索引    4.组合索引5.全文索引参考https://www.cnblogs.com/luyucheng/p/6289714.html
Eureka和zookeeper的区别
1做分布式下的服务发现还是使用eureka更好也就是AP特性的分布式协调工具zookeeper因为网络故障就无法返回可用的主机
2zookeeper技术更加成熟资料更多
3Eureka。是spring cloud之下一个专门负责微服务服务注册和发现的组件Eureka就是为了服务发现而设计的
4Zookeeper。是用来保证分布式一致性的一个软件。不是为了服务发现注册而设计的只不过它的特性也可以被二次开发成服务发现注册中心罢了SpringCloud都有哪些组件?Spring Cloud为微服务架构开发涉及的配置管理服务治理熔断机制智能路由微代理控制总线一次性token全局一致性锁leader选举分布式session集群状态管理等操作提供了一种简单的开发方式。组件列
Spring Cloud Config配置管理工具支持使用Git存储配置内容支持应用配置的外部化存储支持客户端配置信息刷新、加解密配置内容等Spring Cloud Bus事件、消息总线用于在集群例如配置变化事件中传播状态变化可与Spring Cloud Config联合实现热部署。Spring Cloud Netflix针对多种Netflix组件提供的开发工具包其中包括Eureka、Hystrix、Zuul、Archaius等。                      Netflix Eureka一个基于rest服务的服务治理组件包括服务注册中心、服务注册与服务发现机制的实现实现了云端负载均衡和中间层服务器的故障转移。                      Netflix Hystrix容错管理工具实现断路器模式通过控制服务的节点,从而对延迟和故障提供更强大的容错能力。                      Netflix Ribbon客户端负载均衡的服务调用组件。                      Netflix Feign基于Ribbon和Hystrix的声明式服务调用组件。                      Netflix Zuul微服务网关提供动态路由访问过滤等服务。                      Netflix Archaius配置管理API包含一系列配置管理API提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。Spring Cloud for Cloud Foundry通过Oauth2协议绑定服务到CloudFoundryCloudFoundry是VMware推出的开源PaaS云平台。Spring Cloud Sleuth日志收集工具包封装了Dapper,Zipkin和HTrace操作。Spring Cloud Data Flow大数据操作工具通过命令行方式操作数据流。Spring Cloud Security安全工具包为你的应用程序添加安全控制主要是指OAuth2。Spring Cloud Consul封装了Consul操作consul是一个服务发现与配置工具与Docker容器可以无缝集成。Spring Cloud Zookeeper操作Zookeeper的工具包用于使用zookeeper方式的服务注册和发现。Spring Cloud Stream数据流操作开发包封装了与Redis,Rabbit、Kafka等发送接收消息。Spring Cloud CLI基于 Spring Boot CLI可以让你以命令行方式快速建立云组件Hibernate的三种状态是什么怎么将游离状态转换为持久化状态
transient(瞬时状态)persistent(持久化状态)以及detached(离线状态)
转换update()    saveOrUpdate()       lock()