保存成功
保存失败,请重试
提交成功
架构
分布式协调中间件 Zookeeper 的原理及最佳实践
Zookeeper 是由 Apache Hadoop 的子项目发展而来,为分布式应用提供了高效且可靠的分布式协调服务,提供了注册与发布、分布式 ID 生成器、Master 选举、配置管理和分布式锁等分布式的基础服务。在解决分布式数据一致性方面,Zookeeper 并没有直接采用 Paxos 算法,而是采用了一种被称为 ZAB 的一致性协议。 在本场 Chat 中,会讲到如下内容: - CAP 理论 - BASE 理论 - ACID 理论 - 一致性算法 Paxos - 一致性协议 2PC - 一致性协议 3PC - 一致性协议 ZAB - 一致性算法 Raft - Zookeeper 的部署 - Java 客户端 API 的使用(创建会话、创建节点、删除节点、读取数据、更新节点、检查节点是否存在、权限控制) - 应用场景:服务注册与发现 - 应用场景:分布式 ID 生成器 - 应用场景:集群管理 - 应用场景:Master选举 - 应用场景:分布式锁 - 应用场景:分布式队列 - 技术内幕:版本(保证分布式数据原子性操作) - 技术内幕:Watcher(数据变更的通知) - 技术内幕:ACL(保障数据的安全) - 技术内幕:使用 Jute 进行序列化 - 技术内幕:一次会话创建的过程 - 技术内幕:会话管理 - 技术内幕:Leader 选举的实现细节 - 技术内幕:Leader、Follower、Observer 三种服务器角色 - 技术内幕:请求处理 适合人群: 对分布式技术感兴趣的 Java 开发
ilomilo · 工程师
11 人已加入
编程语言
Java 面试题集锦 2019
Java 面试题,金九银十。一份整理好的面试题奉上,祝大家找打一个满意的工作! 1. 接口和抽象类的区别是什么? 2. 进程和线程的区别是什么? 3. 快速失败(fail-fast)和安全失败(fail-safe)的区别是什么? 4. 数组(Array)和列表(ArrayList)有什么区别?什么时候应该使用 Array 而不是ArrayList ? 5. 什么是 Java 优先级队列 (Priority Queue) ? 6. JVM 的永久代中会发生垃圾回收么? 7. 什么是 RMI ? 8. 什么是 cookie、session 和 cookie 有什么区别? 9. Jsp 中的四种作用域 10. 什么是 ORM? 11. Hibernate 中 SessionFactory 是线程安全的吗?Session 是线程安全的吗(两个线程能够共享同一个 Session 吗)? 12. 简述 Hibernate 常见优化策略。 13. Hibernate 的一级缓存、二级缓存和查询缓存 14. MyBatis 中使用 # 和 $ 书写占位符有什么区别? 15. MyBatis 中的动态 SQL 是什么意思? 16. 什么是 IoC 和 DI?DI 是如何实现的? 17. Spring 中 Bean 的作用域有哪些? 18. 什么叫 AOP(面向切面编程)? 19. 你如何理解 AOP 中的连接点(Joinpoint)、切点(Pointcut)、增强(Advice)、引介 (Introduction)、 织入(Weaving)、切面(Aspect)这些概念? 20. Spring 中自动装配的方式有哪些? 21. Spring 支持的事务管理类型有哪些?你在项目中使用哪种方式? 22. Spring MVC 的工作原理是怎样的? 23. 选择使用 Spring 框架的原因(Spring 框架为企业级开发带来的好处有哪些)? 24. Spring 框架中 Bean 的生命周期? 25. Spring 中的自动装配有哪些限制? 26. 什么是 XSS 攻击?什么是 SQL 注入攻击?什么是 CSRF 攻击? 27. ArrayList 和 Vector 的区别,HashMap 和 Hashtable 的区别 28. final、finally、finalize的区别 29. 面向对象的特征有哪些方面 30. ArrayList Vector LinkedList的存储性能和特性 31. HashMap 和 Hashtable 的区别 32. java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop() 和 suspend() 方法为何不推荐使用 33. sleep() 和 wait() 有什么区别? 34. 同步和异步有何异同,在什么情况下分别使用他们?举例说明。 35. 启动一个线程是用 run() 还是 start() ? 36. synchronized 和 java.util.concurrent.locks.Lock 的异同 ? 37. 总结 Request 对象的主要方法 38. 数据连接池的工作机制是什么? 39. xml 有哪些解析技术,区别是什么? 40. EJB 与 Java BEAN 的区别? 41. EJB 是基于哪些技术实现的?并说出 SessionBean 和 EntityBean 的区别,StatefulBean 和 StatelessBean 的区别。 42. EJB 规范规定 EJB 中禁止的操作有哪些? 43. 如何给 Weblogic 指定大小的内存? 44. 如何设定的 Weblogic 的热启动模式(开发模式)与产品发布模式? 45. 在 Weblogic 中发布 EJB 需涉及到哪些配置文件 46. 如何查看在 Weblogic 中已经发布的 EJB ? 47. C/S 与 B/S 区别: 48. tomcat 如何优化? 49. Tomcat 内存调优 50. Math.round(11.5)等于多少?Math.round(- 11.5)又等于多少? 适用人群:正在面试的小伙伴!
A_Chat · Java高级开发
9 人已加入
编程语言
代码优雅之道:消除代码中的“坏味道”
代码中的“坏味道”如何灰尘,每天都会增加,一日不去清除,便会越累越多。如果用心去除这些“坏味道”,不仅能提高自己的编码水平,也能使得代码可读性提高很多。 本场 Chat 为大家总结了日常工作中遇到的“坏味道”,及清理方法: 1. 用 Map.entrySet() 遍历 map 而不是 Map.keySet() 2. 用 Collection.isEmpty() 验证集合是否为空而不是 Collection.size() 3. 集合初始化尽量指定大小 4. 字符串拼接使用 StringBuilder 5. List 的随机访问 6. 频繁使用 Collection.contains() 请使用 Set 7. 长整型常量后添加大写 L 8. 不要使用魔法值 9. 不要使用集合实现来赋值静态成员变量 10. 使用 try-with-resources 语句而不是 try-catch-finally 11. 删除未使用的局部变量、私有方法、字段和参数 12. 删除表达式的多余括号 13. 工具类应该定义私有构造函数来屏蔽隐式公有构造函数 14. 删除多余的异常捕获并抛出 15. 公有静态常量应该通过类访问 16. 不要用 NullPointException 判断空 17. 使用 String.valueOf(value) 代替 i+value 18. 过时代码添加 @Deprecated 注解 19. 禁止使用 new BigDecimal(double) 20. 返回空数组和空集合而不是 null 21. 优先使用常量或确定值来调用 equals() 22. 枚举的属性字段必须是私有不可变的 23. 使用通用工具函数而不是大量的逻辑判断代码 24. 拆分超大函数 25. 同一函数内代码块级别尽量一致 26. 封装相同功能代码为函数 27. 封装获取参数值函数 28. 通过接口参数化封装相同逻辑 29. 使用卫语句减少代码层级 30. 把复杂条件表达式封装为函数 31. 尽量避免不必要的空指针判断 32. 内部函数的参数尽量使用基础类型而不是包装类型 33. 函数的参数尽量控制在 3 个以内,多余的参数封装到 DTO 里面 34. 尽量用函数替换匿名内部类的实现 35. 利用临时变量优化代码提高可读性 适合人群: 有代码洁癖,经常重构代码,经常 Code Review 的 Java 技术开发
ilomilo · 工程师
30 人已加入
微信扫描登录