`
jackyhongvip
  • 浏览: 154750 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
        重构!又是这个词!         记得上学的时候,老师强力推荐了一本叫做《重构》的书,我用了一个月读完了,对于这本书中介绍的各个“招式”有了感性的认识。几年的工作下来,有幸参与了几个大的项目,越 ...

NIO随写

摘自:killme2008的pdf IO划分为两个阶段: 1 等待数据就绪 2 从内核缓冲区copy到进程缓冲区(从socket通过socketChannel复制到ByteBuffer)   non-direct ByteBuffer: HeapByteBuffer,创建开销小 direct ByteBuffer:通过操作系统native代码,创建开销大   基于block的传输通常比基于流的传输更高效
题目:输入一个整形数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组,求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如输入的数组{1, -2, 3, 10, -4, 7, 2, -5},和最大的子数组为{3, 10, -4, 7, 2}, ...
我们在使用Java多线程同步的时候需要了解很多的知识,其中Java多线程同步机制实际上是靠锁的概念来控制的。这个问题就需要我们引起注意,那么在Java程序当中,锁是如何体现的呢?   让我们从JVM的角度来看看锁这个概念 ...
上篇说了半天,却回避了一个重要的问题:为什么要用异步呢,它有什么样的好处?坦率的说,我对这点的认识不是太深刻(套句俗语,只可意会,不可言传)。还是举个例子吧:比如Client向Server发送一个request,Server收到后需 ...

MongoDB让人失望

最近由于项目需要,使用了MongoDB存储数据。坦率的说,挺让人失望的,当然,不排除对MongoDB不太熟悉的原因。但总的说来,感觉名不副实,想让大家喜欢并接受,MongoDB还有很长的路要走。 简单说一下碰到的问题: 1. 非常耗内存。貌似这点很多人都抱怨过。因为MongoDB采用的是内存映射文件的方式存数据,所以特别吃内存,更郁闷的是,没有办法控制。如果MongoDB运行在一台专门的机器上也就罢了,最多把内存占满嘛,如果和其它的服务运行在同一个机器上....哎.... 2. 非常吃硬盘。这点特别不理解,20G的数据可能需要占用60G的硬盘空间。注意,这并不是多个replica,而是单 ...
从Java视角理解系统结构连载, 关注我的微博(链接)了解最新动态在高性能编程时,经常接触到多线程. 起初我们的理解是, 多个线程并行地执行总比单个线程要快, 就像多个人一起干活总比一个人干要快. 然而实际情况是, 多线程之 ...

桥模式

Bridge桥接模式是一种结构型模式,它主要应对的是:由于类型的固有罗辑,使得类型具有两个或两个以上的纬度变化。也就是要求抽象不应依赖于实现细节,实现细节应依赖于抽象。        《设计模式》中说到将抽象部分与实现部分分离,使他们可以独立的变化。        举个例子更清楚些,好像我们平时玩的游戏中有PS版的,但是不是大家都有PS。这时我们等一段时间,一般会出PC版的或其他版本。由于支持游戏的平台不一样,但是如果我们编写的游戏程序为了适应另一种平台就要全部重新编写的话岂不是很麻烦。再加上游戏本身的变动,一句众人皆知的话:“死定了”。        现在我们来看看Bridge桥 ...
从Java视角理解系统结构连载, 关注我的微博(链接)了解最新动态众所周知, CPU是计算机的大脑, 它负责执行程序的指令; 内存负责存数据, 包括程序自身数据. 同样大家都知道, 内存比CPU慢很多. 其实在30年前, CPU的频率和内存总线的 ...
从Java视角理解系统结构连载, 关注我的微博(链接)了解最新动态从我的前一篇博文中, 我们知道了CPU缓存及缓存行的概念, 同时用一个例子说明了编写单线程Java代码时应该注意的问题. 下面我们讨论更为复杂, 而且更符合现实情况 ...

jetty_connector

1.Connector的继承体系 jetty的connector继承体系如下图: 我们可以看到,首先AbstractConnector实现了lifecycle的接口和connector接口,事实上,connector的生命周期应该和容器是差不多的,会一直存在。然后看到AbstractConnector持有了到server,ThreadPool等的引用,基本上,持有了Server的引用,就可以触及Threadpool和Handler,整个关联关系就打通了。 然后可以看到每个具体的Connector,首先都有一个ServerSocketChannel(或者ServerSocket),对 ...
1。使用java.util.Properties类的load()方法示例: InputStream in = lnew BufferedInputStream(new FileInputStream(name));       Properties p = new Properties();       p.load(in); 2。使用java.util.ResourceBundle类的getBundle()方法示例: ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault()); 3。使用java.util ...
1、链接Sqlserver2000 驱动类 com.microsoft.jdbc.sqlserver.SQLServerDriver 连接字符串 jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs (pubs为数据库名,localhost为主机地址,若数据库在远程则为IP地址)   2、链接mysql 驱动类 com.mysql.jdbc.Driver 连接字符串 jdbc:mysql://localhost:3306/pubs (pubs为数据库名,localhost为主机地址,若数据库在远程则为IP地址) 3、j ...
基础 在我看来,java比C++的一个大好处就是提供了对多线程的支持(C++只有多线程的库,语言本身不包含线程的概念)。而其中我最爱用的就是ThreadPoolExecutor这个类,它实现了一个非常棒的thread pool。thread pool一般被用来解决两个问题:当处理大量的同步task的时候,它能够避免thread不断创建销毁的开销;而另外一个也许更重要的含义是,它其实表示了一个boundary,通过使用thread pool可以限制这些任务所消耗的资源,比如最大线程数,比如最大的消息缓冲池。需要指出的是,ThreadPoolExecutor不仅仅是简单的多个thread的集合 ...

jetty_handler

1.handler类图和时序 先上一个handler的继承体系结构图 从上图可以看到,jetty通过一级一级的继承,不断的扩展handler的功能,从最简单的处理到复杂的web容器,下面一一分析之: 然后再看一个简单的请求的handler调用过程: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 at com.ali.b2b.crm.base.common.filter.LocaleFilter.doFilter(LocaleFilter. ...
Global site tag (gtag.js) - Google Analytics