var slideIndex = 1; showSlides(slideIndex); function plusSlides(n) { showSlides(slideIndex += n); } function currentSlide(n) { showSlides(slideIndex = n); } function showSlides(n) { var i; var slides = document.getElementsByClassName("mySlides"); var dots = document.getElementsByClassName("dot"); if (n > slides.length) {slideIndex = 1} if (n < 1) {slideIndex = slides.length} for (i = 0; i < slides.length; i++) { slides[i].style.display = "none"; } for (i = 0; i < dots.length; i++) { dots[i].className = dots[i].className.replace(" active", ""); } slides[slideIndex-1].style.display = "block"; dots[slideIndex-1].className += " active"; }
摘要: 即时通讯(Instant Messenger,简称IM)软件多是基于TCP/IP和UDP进行通讯的,TCP/IP和UDP都是建立在更低层的IP协议上的两种通讯传输协议。 前者是以数据流的形式,将传输数据经分割、打包后,通过两台机器之间建立起的虚电路,进行连续的、双向的、严格保证数据正确性的文件传输协 阅读全文
posted @ 2018-07-25 18:48 Solomon_xm 阅读(922) 评论(0) 推荐(0) 编辑
摘要: 事件回调其实是一种常见的设计模式, Netty 就使用了这样的设计。 这里采用一个 demo,试下如下功能: Caller 向 Notifier 提问。 提问方式是异步,接着做其他事情。 Notifier 收到问题执行计算然后回调 Caller 告知结果。 在 Java 中利用接口来实现回调,所以需 阅读全文
posted @ 2018-07-25 18:00 Solomon_xm 阅读(756) 评论(0) 推荐(0) 编辑
摘要: JVM 是根据可达性分析算法找出需要回收的对象,判断对象的存活状态都和引用有关。 在 JDK1.2 之前这点设计的非常简单:一个对象的状态只有引用和没被引用两种区别。 这样的划分对垃圾回收不是很友好,因为总有一些对象的状态处于这两之间。 因此 1.2 之后新增了四种状态用于更细粒度的划分引用关系: 阅读全文
posted @ 2018-07-25 17:56 Solomon_xm 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 软件架构不仅仅只是选用什么框架、选用什么技术组件这么简单。它贯穿了对人的组织、对技术的组织、对业务的组织,并将这三种组织以解决业务问题这一目 标有机的结合在了一起。 软件系统的价值是以解决业务问题的能力、支撑业务增长的能力为衡量标准 程序员想要工作出业绩,必须认清楚系统背后的业务价值,按价值去梳理工 阅读全文
posted @ 2018-07-25 16:48 Solomon_xm 阅读(471) 评论(0) 推荐(0) 编辑
摘要: BFS求解迷宫问题,不会死循环 阅读全文
posted @ 2018-07-25 09:14 Solomon_xm 阅读(418) 评论(0) 推荐(0) 编辑
摘要: 迷宫问题思路 根据昨天的博客,有如下几种解决方案 1. 克鲁斯卡尔 ,为避免死循环,需要设定优化路径的次数。 2. Prim,为避免死循环,需要设定优化路径的次数,暂定200次。 3. BFS , 实现简单,无死循环。 4. DFS , 实现简单,无死循环,复杂度较低。 5. 动态规划,实时根据权重 阅读全文
posted @ 2018-07-25 08:49 Solomon_xm 阅读(5904) 评论(0) 推荐(0) 编辑