随笔分类 -  Java

1 2 3 4 5 ··· 8 下一页
摘要:饿汉式 提前new出来实例了,并不是在第一次调用get方法时才实例化,没有进行延迟加载 懒汉式——非线程安全版本 多线程环境下无法保证单例效果,会多次执行 instance=new Singleton(),需要考虑到多线程 懒汉式——同步代码块版 性能不高,同步范围太大,在实例化instacne后, 阅读全文
posted @ 2018-09-01 10:34 xingoo 阅读(1471) 评论(0) 推荐(0) 编辑
摘要:Spring Boot内置了tomcat容器,直接运行Application就可以启动web服务器。 在tomcat中提供了三种方式:BIO、NIO、APR。 BIO tomcat7以下的版本都是BIO,就是一个请求是一个独立的线程。不能适用高并发的场景。 NIO 在8以上的版本,默认都是NIO A 阅读全文
posted @ 2018-06-06 16:37 xingoo 阅读(8890) 评论(0) 推荐(0) 编辑
摘要:今天线上的hadoop集群崩溃了,现象是namenode一直在GC,长时间无法正常服务。最后运维大神各种倒腾内存,GC稳定后,服务正常。虽说全程在打酱油,但是也跟着学习不少的东西。 第一个问题:为什么会频繁GC 有过JVM经验的开发者都应该知道,GC是在内存不够时,JVM自动进行的自我救赎(删除不用 阅读全文
posted @ 2018-05-24 20:24 xingoo 阅读(1530) 评论(0) 推荐(0) 编辑
摘要:在阅读ZooKeeper的源码时,看到这么一个片段,在单机模式启动的时候,会调用下面的方法,根据zoo.cfg的配置启动单机版本的服务器: 其中比较有意思的两个地方: 1 CountDownLatch的使用 开启NIO新线程接收客户端的请求,服务端的主线程直接利用countdownlatch挂起。这 阅读全文
posted @ 2018-04-10 20:58 xingoo 阅读(1832) 评论(0) 推荐(1) 编辑
摘要:在Java里面有几种可以用于控制线程状态的方法,如CountDownLatch计数器、CyclicBarrier循环栅栏、Sempahore信号量。下面就分别演示下他们的使用方法: CountDownLatch CountDownLatch可以实现多线程之间的计数器,并实现阻塞功能。比如某个任务依赖 阅读全文
posted @ 2018-04-02 19:39 xingoo 阅读(3855) 评论(0) 推荐(1) 编辑
摘要:前面介绍了基本的网络模型以及IO与NIO,那么有了NIO来开发非阻塞服务器,大家就满足了吗?有了技术支持,就回去追求效率,因此就产生了很多NIO的框架对NIO进行封装——这就是大名鼎鼎的Netty。 前几篇的内容,可以参考: 1. "网络IO的基本知识与概念" 2. "普通IO以及BIO服务器" 3 阅读全文
posted @ 2018-03-30 22:06 xingoo 阅读(34844) 评论(5) 推荐(1) 编辑
摘要:前面一篇中已经介绍了基本IO的使用以及最简单的阻塞服务器的例子,本篇就来介绍下NIO的相关内容,前面的分享可以参考目录: 1. "网络IO的基本知识与概念" 2. "普通IO以及BIO服务器" 3. "NIO的使用与服务器Hello world" 4. "Netty的使用与服务器Hello worl 阅读全文
posted @ 2018-03-29 21:04 xingoo 阅读(6199) 评论(2) 推荐(0) 编辑
摘要:今天来复习一下基础IO,也就是最普通的IO。 1. "网络IO的基本知识与概念" 2. "普通IO以及BIO服务器" 3. "NIO的使用与服务器Hello world" 4. "Netty的使用与服务器Hello world" 输入流与输出流 Java的输入流和输出流,按照输入输出的单元不同,又可 阅读全文
posted @ 2018-03-28 20:41 xingoo 阅读(3997) 评论(0) 推荐(1) 编辑
摘要:Java的网络编程如果不是专门搞服务器性能开发或者消息分发,几乎可能涉及不到。但是它却是面试找工作必问的一个知识点,涵盖的知识体系也非常广泛,从Java底层IO原理到操作系统内核组成,再到网络TCP、UDP、HTTP的应用实践....因此,即便是职场多年的老油条,仍然需要时刻复习,更别提我这种只有七 阅读全文
posted @ 2018-03-27 19:05 xingoo 阅读(6683) 评论(4) 推荐(6) 编辑
摘要:最近有一个小项目需求,需要用spring mvc + mybatis实现一个复杂的配置系统。其中遇到了很多不太常见的问题,在这里特意记录下: 主要涉及的内容有 事务 多表删除 插入并返回主键 1 spring mvc + mybatis的事务 背景 大概就是有ABC三张表,A表跟B表是一对多关系,B 阅读全文
posted @ 2018-03-07 18:28 xingoo 阅读(570) 评论(0) 推荐(0) 编辑
摘要:公司是采用微服务来做模块化的,各个模块之间采用dubbo通信。好处就不用提了,省略了之前模块间复杂的http访问。不过也遇到一些问题: PS: "Github的代码示例" 测试需要配合写消费者的代码 对于开发来说,倒是挺省劲。但是对于测试来说就有点麻烦了, 每次还要去写dubbo的消费程序,而且每次 阅读全文
posted @ 2018-01-05 17:35 xingoo 阅读(5241) 评论(1) 推荐(6) 编辑
摘要:最近在spark streaming本地调试的时候,引入了一些资源文件,打包的时候需要给排除掉。所以就考虑使用maven的方式 详细参考官方文档:https://maven.apache.org/plugins/maven jar plugin/examples/include exclude.ht 阅读全文
posted @ 2017-12-21 13:40 xingoo 阅读(32485) 评论(2) 推荐(0) 编辑
摘要:线程是计算程序运行的最小载体,由于单个单核CPU的硬件水平发展到了一定的瓶颈期,因此就出现了多核多CPU的情况,直接就导致程序员多线程编程的复杂。由此可见线程对于高性能开发的重要性。 那么线程在计算机中有好几种状态,他们之间是怎么切换的?sleep和wait又有什么区别?notify和notifyA 阅读全文
posted @ 2017-11-16 22:11 xingoo 阅读(1369) 评论(2) 推荐(0) 编辑
摘要:众所周知,volatile关键字可以让线程的修改立刻通知其他的线程,从而达到数据一致的作用。那么它具体涉及到哪些内容呢? 关于缓存 计算机最大的存储空间就是磁盘(硬盘),但是访问的速度也是最慢的,价格最便宜;再就是内存,容量更小,造价更高,但是速度也更快。不过跟cpu的计算速度比起来,那就太慢了。可 阅读全文
posted @ 2017-11-15 19:58 xingoo 阅读(7788) 评论(0) 推荐(2) 编辑
摘要:最早接触到ThreadLocal是在阅读dianping的Cat client,当时对它不是很理解,就搜索了一下,大概了解是一种解决线程安全问题的机制。现在再次阅读《实战java高并发程序设计》时,又重新对它有了更深一步的了解。 并发程序很重要的主题就是解决多线程安全的问题,最常见的处理办法就是引入 阅读全文
posted @ 2017-11-13 23:03 xingoo 阅读(830) 评论(1) 推荐(0) 编辑
摘要:列表对于日常开发来说实在是太常见了,以至于很多开发者习惯性的用到数组,就来一个ArrayList,根本不做过多的思考。其实列表里面还是有很多玩法的,有时候玩不好,搞出来bug还得定位半天。所以这里就再啰嗦一下,整理下相关的内容。 基础知识 一般计算机相关的专业都应该学过数据结构,而很多的集合都是应用 阅读全文
posted @ 2017-11-08 19:16 xingoo 阅读(2200) 评论(0) 推荐(1) 编辑
摘要:并发包需要注意的知识点 集合类的体系结构 阅读全文
posted @ 2017-11-07 22:48 xingoo 阅读(752) 评论(0) 推荐(1) 编辑
摘要:再次回顾这些基础内容,发现自己理解的又多了一点。对于一些之前很模糊的概念,渐渐的清晰起来。 抽象类与接口 抽象类通常是描述一些对象的通用方法和属性,并且默认实现一些功能,它不能被实例化。接口仅仅是描述一种方法的规约,即只能通过某几个方法来操作对象,它把内部的实现隐藏到实现类中,自己仅仅关注使用而已。 阅读全文
posted @ 2017-10-28 20:47 xingoo 阅读(1644) 评论(0) 推荐(0) 编辑
摘要:其实Java还有很多其他的基础知识,在日常工作技术撕逼中也是经常被讨论的问题。 深克隆与浅克隆 在Java中创建对象有两种方式: 一种是new操作符,它创建了一个新的对象,并把对应的各个字段初始化成默认值; 另一种是用clone方法,基于已有的对象创建一个新的对象,此时会根据原有的对象各个字段赋值给 阅读全文
posted @ 2017-10-28 00:12 xingoo 阅读(1419) 评论(0) 推荐(0) 编辑
摘要:equals和hashCode是我们日常开发最常使用的方法,但是因为一般都使用默认的规则,因此也很少会引起关注。不过了解他们的用途和设计的原则,还是会帮助我们更好的设计代码。 equals 是java很基础的一个问题,通常都会跟 来做比较。那么看看下面的问题: 这是因为, 比较的是引用,而equal 阅读全文
posted @ 2017-10-26 22:40 xingoo 阅读(672) 评论(0) 推荐(0) 编辑

1 2 3 4 5 ··· 8 下一页