首页
学习
活动
专区
工具
TVP
发布

xingoo, 一个梦想做发明家的程序员

专栏作者
805
文章
904155
阅读量
80
订阅数
Java几种单例模式的实现与利弊
多线程环境下无法保证单例效果,会多次执行 instance=new Singleton(),需要考虑到多线程
用户1154259
2018-09-21
6230
跟着ZooKeeper学Java——CountDownLatch和Join的使用
在阅读ZooKeeper的源码时,看到这么一个片段,在单机模式启动的时候,会调用下面的方法,根据zoo.cfg的配置启动单机版本的服务器: public void runFromConfig(ServerConfig config) throws IOException { //1 创建ZooKeeper服务器 final ZooKeeperServer zkServer = new ZooKeeperServer(); final CountDownLatch shutdownLa
用户1154259
2018-04-17
1K0
漫谈Java IO之 NIO那些事儿
前面一篇中已经介绍了基本IO的使用以及最简单的阻塞服务器的例子,本篇就来介绍下NIO的相关内容,前面的分享可以参考目录: 网络IO的基本知识与概念 普通IO以及BIO服务器 NIO的使用与服务器Hello world Netty入门与服务器Hello world Netty深入浅出 NIO,也叫做new-IO或者non-blocking-IO,就暂且理解为非阻塞IO吧。 为什么选择NIO 那么NIO相对于IO来说,有什么优势呢?总结来说: IO是面向流的,数据只能从一端读取到另一端,不能随意读写。NI
用户1154259
2018-04-10
8660
漫谈Java IO之 Netty与NIO服务器
前面介绍了基本的网络模型以及IO与NIO,那么有了NIO来开发非阻塞服务器,大家就满足了吗?有了技术支持,就回去追求效率,因此就产生了很多NIO的框架对NIO进行封装——这就是大名鼎鼎的Netty。 前几篇的内容,可以参考: 网络IO的基本知识与概念 普通IO以及BIO服务器 NIO的使用与服务器Hello world Netty的使用与服务器Hello world 为什么要使用开源框架? 这个问题几乎可以当做废话,框架肯定要比一些原生的API封装了更多地功能,重复造轮子在追求效率的情况并不是明智之举。那
用户1154259
2018-04-10
1K0
Java计数器之CountDownLatch、CyclicBarrier、Semaphore
在Java里面有几种可以用于控制线程状态的方法,如CountDownLatch计数器、CyclicBarrier循环栅栏、Sempahore信号量。下面就分别演示下他们的使用方法: CountDownLatch CountDownLatch可以实现多线程之间的计数器,并实现阻塞功能。比如某个任务依赖于其他的两个任务,只有那两个任务执行结束后,它才能执行。 import java.util.concurrent.CountDownLatch; public class CountDownLatchTest
用户1154259
2018-04-10
1.1K0
Zookeeper学习笔记——2 Shell和Java API的使用
ZooKeeper的使用一般都接触不到,因为平时工作甚少直接使用ZK。但是通过手动操作一下ZK,还是能对其中的门道了解各一二。 shell 常用命令 help 查看所有支持的命令 [zk: localhost:2181(CONNECTED) 0] help ZooKeeper -server host:port cmd args stat path [watch] set path data [version] ls path [watch] delquota [-n|
用户1154259
2018-04-10
5240
漫谈Java IO之普通IO流与BIO服务器
今天来复习一下基础IO,也就是最普通的IO。 网络IO的基本知识与概念 普通IO以及BIO服务器 NIO的使用与服务器Hello world Netty入门与服务器Hello world Nett
用户1154259
2018-04-08
1K0
如何在Java应用中提交Spark任务?
最近看到有几个Github友关注了Streaming的监控工程——Teddy,所以思来想去还是优化下代码,不能让别人看笑话啊。于是就想改一下之前觉得最丑陋的一个地方——任务提交。 本博客内容基于Spark2.2版本~在阅读文章并想实际操作前,请确保你有: 一台配置好Spark和yarn的服务器 支持正常spark-submit --master yarn xxxx的任务提交 老版本 老版本任务提交是基于 ** 启动本地进程,执行脚本spark-submit xxx ** 的方式做的。其中一个关键的问题就是
用户1154259
2018-03-28
2.9K0
漫谈Java IO之基础篇
Java的网络编程如果不是专门搞服务器性能开发或者消息分发,几乎可能涉及不到。但是它却是面试找工作必问的一个知识点,涵盖的知识体系也非常广泛,从Java底层IO原理到操作系统内核组成,再到网络TCP、UDP、HTTP的应用实践....因此,即便是职场多年的老油条,仍然需要时刻复习,更别提我这种只有七秒钟记忆的小菜鸟了。 Java网络IO的演化,从最开始JDK1.4之前是基于阻塞的IO;发展到1.4发布后的Nio提供了selector多路复用的机制以及channel和buffer,再到1.7的NIO升级提供
用户1154259
2018-03-28
6940
【Spring实战】—— 1 入门讲解
这个系列是学习spring实战的总结,一方面总结书中所写的精髓,另一方面总结一下自己的感想。   基础部分讲解了spring最为熟知的几个功能:依赖注入/控制反转 和 面向切面编程。   这两个就不再多说了,功能比较简单,也没有制作样例,后面再深入操作下。   Spring使用POJO类编写程序,也就是简单的java对象。   这样spring带来的好处:   1 代码轻量级并减小编程的入侵。   2 通过依赖注入和控制反转实现松耦合。   3 基于切面和管理,进行声明式的编程。   4 通过模板,减
用户1154259
2018-01-18
4680
【插件开发】—— 13 GEF双击模型事件
前文回顾: 1 插件学习篇 2 简单的建立插件工程以及模型文件分析 3 利用扩展点,开发透视图 4 SWT编程须知 5 SWT简单控件的使用与布局搭配 6 SWT复杂空间与布局搭配 7 SWT布局详解 8 IPreferenceStore使用详解 9 编辑器代码着色 10 JFace开发 11 GEF监听 12 GEF入门   由于GEF的架构过于庞大,对于新手来说确实不易。而对于GEF典型的应用场景,模型拖拽编辑,一个常用的操作方式就是双击模型弹出对话框进行编辑。但是由
用户1154259
2018-01-18
9880
【插件开发】—— 4 SWT编程须知
  根据前两篇博文,应该对插件开发有所了解。 前文回顾: 1 插件学习篇 2 简单的建立插件工程以及模型文件分析 3 利用扩展点,开发透视图   SWT知识介绍   之前学过Java的朋友,多少页会一些关于Swing的东西。那么这里的SWT就是Eclipse插件所应用到的小部件开发框架。   里面包含了大量的桌面控件,并且进行了一系列的优化整合,相对于Swing,极大的减少了内存的消耗。而且关于资源的释放也需要开发者注意,需要特定的手动删除,但是比如一个部件的子部件会随着该部件的销毁而销毁。  
用户1154259
2018-01-18
1.1K0
【设计模式】—— 命令模式Commond
  模式意图   将一个请求封装成一个对象,从而对这个命令执行撤销、重做等操作。   典型的Eclipse开发中,编辑器的操作就需要用到这个模式,比如Undo、Redo等等。   另外这个模式使得一个命令的触发与接收解耦,这样我们就可以演变成把感兴趣的对象接收这个命令,当命令触发时,这些对象就会执行操作。这个机制也是java事件的处理方式。   应用场景   1 命令抽象成对象   2 在不同的时刻,指定或者排队命令   3 支持 Undo或者Redo等操作   4 修改日志,当系统崩溃时,利用修改日志执
用户1154259
2018-01-18
9210
【设计模式】—— 解释器模式Interpret
  模式意图   自定义某种语言后,给定一种文法标准,定义解释器,进行解析。   做过搜索的朋友们可能更了解一些,平时我们搜索所需要的词库,通常就需要用这种方式来实现。   应用场景   1 有复杂的
用户1154259
2018-01-18
5520
【设计模式】—— 迭代模式Iterator
  模式意图   提供一个方法按顺序遍历一个集合内的元素,而又不需要暴露该对象的内部表示。   应用场景   1 访问一个聚合的对象,而不需要暴露对象的内部表示   2 支持对聚合对象的多种遍历   
用户1154259
2018-01-18
4480
【设计模式】—— 观察者模式Observer
  模式意图   观察者模式,也叫发布/订阅模式,从名字来说就能察觉到它的过程应该是,发布——其他人接受。 这个模式定义了对象之间的一种依赖关系,当一个对象发生变化时,其他的对象收到更新,也发生变化。   模拟我们订阅邮件这个场景,不管我们的邮箱是在登陆还是关闭,邮件都会发送到邮箱里面。只要把自己的邮箱订阅到这个邮件就可以了!这个模式也是这样一个过程。   这个模式代码相对来说比较容易理解,而且应用很广泛。   应用场景   1 当一个模型有几个展现方面,通过修改一个展现,顺便更新其他的。就好比一个网站
用户1154259
2018-01-18
5030
【前端开发系列】—— 别说你不会Ajax
之前一直都是用封装好的Ajax,所以一直很好奇它是如何使用和实现的。这里正好就进行一下学习,下面是Ajax的一个时间图。 设置触发条件   这里模拟一个使用场景,就是在用户登陆时,异步的对用户名以
用户1154259
2018-01-18
5950
【设计模式】——抽象工厂Abstract Factory
模式意图   提供对象的使用接口,隐藏对象的创建过程。 模式结构 AbstractFactory 提供创建对象的接口。 ConcreteFactory 提供真正创建对象的实现类,用于组合并创建不同的
用户1154259
2018-01-18
6270
【设计模式】—— 原型模式Prototype
  模式意图   由于有些时候,需要在运行时指定对象时哪个类的实例,此时用工厂模式就有些力不从心了。通过原型模式就可以通过拷贝函数clone一个原有的对象,给现在的对象使用,从而创建更多的同类型的对象
用户1154259
2018-01-18
4670
【插件开发】—— 3 透视图开发
Eclipse有很多的透视图,比如Debug,或者java。下面分别是Debug,和java的透视图,可以发现,他们的结构不一样,展示给使用者的画面也不相同。   下面步入正题,来开发我们自己的透
用户1154259
2018-01-18
7560
点击加载更多
社区活动
RAG七天入门训练营
鹅厂大牛手把手带你上手实战
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档