java开发常用技术3
21. 前缀编码
在一个字符集中,任何一个字符的编码都不是另一个字符编码的前缀。
22. JVM清理垃圾命令
GC.run
23. 循环队列引入的目的
消除线性队列的“假溢出”,充分利用存储空间。
24. Webservice是什么?它的引擎是什么?
WebService是一个平台独立的、低耦合的,自包含的、基于可编程的web应用程序,可使用开放的xml标准来描述、发现、发布、协调和配置这些应用程序,是用户开发互操作的分布式系统。最基本的目的就是提供在各个不同平台的不同应用系统的系统工作能力。
25. Tomcat集群中怎么实现共享
1:Tomcat的Session复制。在一台Tomcat的Session发生变化时,将变更的数据分发给其它的Tomcat服务器。
2: 采用 memcached session manager 共享session。
26. Git和Svn有什么区别?
1:git是分布式的版本控制系统,SVN不是。GIT和SVN都有自己的集中式版本库或服务器,但是GIT更倾向分布式使用。
2:GIT把内容按数据方式存储,而SVN是按文件存储的。
3:GIT可以很容易的发现未被合并的分支,SVN需要手动运行命令来确定代码是否被合并。
4:GIT没有一个全局的版本号,SVN有。但GIT内容完整性要优于SVN。
5:GIT在下载后即使在不联网状态也可以看到所有数据,但SVN必须要联网。
6:GIT的提交速度优于SVN,且GIT可以有无限个版本库,但SVN只有一个中央数据库,一旦这个中央库有问题,则所有代码都会全部瘫痪。
7:管理一个GIT库相对于管理一个SVN库更容易。
27. dubbo服务开发流程,运行流程?zookeeper注册中心的作用?端口是多少?
服务容器负责启动,加载,运行服务提供者。
1. 服务提供者在启动时,向注册中心(默认端口2181)注册自己提供的服务。
2. 服务消费者在启动时,向注册中心订阅自己所需的服务。
3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
28. redis为什么可以做缓存?redis都是怎么用的?都用来存什么了?redis的存储结构?Redis集群搭建?redis的事务;redis丢失问题
使用redis做缓存的原因:
redis是用C语言编写的,稳定性和性能更好。支持集群模式和持久化等特性,不会应为缓存量太多而导致虚拟机崩溃。Redis是独立部署的,即使网站更新,redis缓存的数据也不会消失。
集群搭建(redis需要3台主机,3台从机,则配置6台,需要6个端口):
1:安装ruby环境,上传接口工程,安装接口程序,拷贝脚本到指定位置
2:创建6个redis实例,修改配置文件 ,然后启动所有redis实例(为简化启动步骤,可编写启动脚本)。
3:执行创建集群的命令,连接测试
redis的事务
Redis的事务是一组命令的集合,Redis事务的实现需要用到 MULTI 和 EXEC 两个命令,事务开始的时候先向Redis服务器发送 MULTI 命令,然后依次发送需要在本次事务中处理的命令,最后再发送 EXEC 命令表示事务命令结束。
redis丢失问题常见原因:
程序bug或人为误操作
· 因客户端缓冲区内存使用过大,导致大量键被LRU淘汰
· 主库故障后自动重启,可能导致数据丢失
· 网络分区的问题,可能导致短时间的写入数据丢失
· 主从复制数据不一致,发生故障切换后,出现数据丢失
· 大量过期键,同时被淘汰清理
29. 消息中间件acitveMQ的作用、原理?
作用:acitveMQ就是消息队列,activemq安装之后,会有一个broker(经纪人)。
消息的生产者将消息发送到broker中,它不关心谁消费该消息。
消息的消费者去broker中获取信息,它不关心谁提供消息
30. AJAX的怎样实现同步或者怎样实现异步?
$.ajax({
async:false // 为false 时 为同步, 默认 为true , 为异步
})