![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
boluobn
这个作者很懒,什么都没留下…
展开
-
深入理解Java内存模型(一)——基础
并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。相关厂商内容百度技术沙龙第三十五期:Java新时代——企业级应用架构与物联网实践(2013年2月2日 周六)12306插件引发Gi转载 2013-01-28 22:28:19 · 347 阅读 · 0 评论 -
Spring3 MVC 的介绍和使用
一、前言:为开发团队选择一款优秀的MVC框架是件难事儿,在众多可行的方案中决择需要很高的经验和水平。你的一个决定会影响团队未来的几年。要考虑方面太多:1、简单易用,以提高开发效率。使小部分的精力在框架上,大部分的精力放在业务上。2、性能优秀,这是一个最能吸引眼球的话题。3、尽量使用大众的框架(避免使用小众的、私有的框架),新招聘来的开发人员有一些这方面技术积累,减低转载 2013-04-15 22:24:58 · 383 阅读 · 0 评论 -
Reactor模式和NIO
当前分布式计算 Web Services盛行天下,这些网络服务的底层都离不开对socket的操作。他们都有一个共同的结构:1. Read request2. Decode request3. Process service4. Encode reply5. Send reply经典的网络服务的设计如下图,在每个线程中完成对数据的处理:但这种模式在用户负载增加时,性能转载 2013-05-15 23:28:31 · 439 阅读 · 0 评论 -
Java UDP网络编程 - 最简单示例
/** *UDPServer *@author Winty wintys@gmail.com *@version 2008-12-15 */import java.io.*;import java.net.*;class UDPServer{ public static void main(String[] args)throws IOException{转载 2013-06-13 10:42:21 · 514 阅读 · 0 评论 -
Java TCP/UDP socket 编程流程总结
最近正好学习了一点用java socket编程的东西。感觉整体的流程虽然不是很繁琐,但是也值得好好总结一下。Socket Socket可以说是一种针对网络的抽象,应用通过它可以来针对网络读写数据。就像通过一个文件的file handler就可以都写数据到存储设备上一样。根据TCP协议和UDP协议的不同,在网络编程方面就有面向两个协议的不同socket,一个是面向字节流的一个是转载 2013-06-13 10:50:17 · 1189 阅读 · 0 评论 -
分布式服务框架 Zookeeper -- 管理分布式环境中的数据
许 令波, Java 工程师, 淘宝网简介: Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。本文将从使用者角度详细介绍 Zookeeper 的安装和配置文件中各个配置项的意义,以及分析 Zookeeper 的典型的应用场景(配转载 2013-06-13 15:05:37 · 619 阅读 · 0 评论 -
断点续传的原理
其实断点续传的原理很简单,就是在 Http 的请求上和一般的下载有所不同而已。 打个比方,浏览器请求服务器上的一个文时,所发出的请求如下: 假设服务器域名为 wwww.sjtu.edu.cn,文件名为 down.zip。 GET /down.zip HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpe转载 2013-06-16 20:23:52 · 524 阅读 · 0 评论 -
你必须知道的5个JVM命令行标志
本文是Neward & Associates的总裁Ted Neward为developerworks独家撰稿“你不知道5个……”系列中的一篇,JVM是多数开发人员视为理所当然的Java功能和性能背后的重负荷机器。然而,我们很少有人能理解JVM是如何进行工作的—像任务分配和垃圾收集、转动线程、打开和关闭文件、中断和/或JIT编译Java字节码,等等。不熟悉JVM将不仅会影响应用程序性能,而且转载 2013-06-26 17:04:03 · 512 阅读 · 0 评论 -
Java调用CMD命令
java的Runtime.getRuntime().exec(commandStr)可以调用执行cmd指令。cmd /c dir 是执行完dir命令后关闭命令窗口。cmd /k dir 是执行完dir命令后不关闭命令窗口。cmd /c start dir 会打开一个新窗口后执行dir指令,原窗口会关闭。cmd /k start dir 会打开一个新窗口后执行dir指令,原窗口不会关转载 2013-09-07 22:14:21 · 532 阅读 · 0 评论 -
Servlet3.0-使用注解定义Servlet
我使用的开发环境:MyEclipse10+Tomcat7+JDK6。 开发Servlet3的程序需要一定的环境支持。Servlet3是Java EE6规范的一部分,MyEclipse10和Tomcat7都提供了对Java EE6规范的支持。 Tomcat需要Tomcat7才支持Java EE6,Tomcat7需要使用JDK6。 如果使用的MyEclipse的版本较低,转载 2013-09-18 11:05:41 · 537 阅读 · 0 评论 -
JSch:纯JAVA实现远程执行SSH2主机的SHELL命令
上篇文章我编写了利用JSch实现SFTP的文件上传和下载 http://my.oschina.net/hetiangui/blog/137357,在本篇文章中,我将描述如何利用JSch实现执行远程SSH2主机的SHELL命令,不说了,直接上代码和详细的代码说明:01/**02 * 利用JSch包转载 2013-09-29 14:15:03 · 1291 阅读 · 0 评论 -
java的concurrent用法详解
我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,当然也有一些开源的框架提供了这些功能,但是这些依然没有JDK自带的功能使用起来方便。而当针对高质量Java多线程并发程序设计时,为防止死蹦等现象的出现,比如使用java之前的wait()、notify()和synchronized等,每每需要考虑性能、死锁、公平性、资源管理以及如何避免线程安全性方面带来的转载 2014-03-03 22:17:28 · 631 阅读 · 0 评论 -
iBatis简单入门教程
iBatis 简介:iBatis 是apache 的一个开源项目,一个O/R Mapping 解决方案,iBatis 最大的特点就是小巧,上手很快。如果不需要太多复杂的功能,iBatis 是能够满足你的要求又足够灵活的最简单的解决方案,现在的iBatis 已经改名为Mybatis 了。官网为:http://www.mybatis.org/搭建iBatis 开发环境:1 、导入相转载 2013-04-03 16:53:10 · 430 阅读 · 0 评论 -
JVM参数设置、分析
不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各个机器上的配置不同转载 2013-03-18 11:22:58 · 451 阅读 · 0 评论 -
JVM最大线程数计算方法
最近在应用服务器跑压力测试过程当中,出现无法创建线程的错误。在java应用中,有时候会出现这样的错误:OutOfMemoryError: unable to create new native thread.这种怪事是因为JVM已经被系统分配了大量的内存(比如1.5G),并且它至少要占用可用内存的一半。有人发现,在线程个数很多的情况下,你分配给JVM的内存越多,那么,上述错误发生的可能性就越大转载 2013-03-18 11:12:32 · 777 阅读 · 0 评论 -
深入理解Java内存模型(二)——重排序
数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:相关厂商内容12306插件引发GitHub故障,GitHub资深运维工程师确认参加QCon北京2013,现身说法《程序员必知97件事》合著者Kevlin确认参加QCon北京2013并发表主题演讲阿里巴巴大数据专家鬼厉将在20转载 2013-01-28 22:29:11 · 278 阅读 · 0 评论 -
深入理解Java内存模型(三)——顺序一致性
数据竞争与顺序一致性保证当程序未正确同步时,就会存在数据竞争。java内存模型规范对数据竞争的定义如下:相关厂商内容百度技术沙龙第三十五期:Java新时代——企业级应用架构与物联网实践(2013年2月2日 周六)12306插件引发GitHub故障,GitHub资深运维工程师确认参加QCon北京2013,现身说法《程序员必知97件事》合著者Kevlin转载 2013-01-29 21:50:23 · 272 阅读 · 0 评论 -
剖析Java7.x新特性
前言最近在ITeye上看见一些朋友正在激烈讨论关于Java7.x的一些语法结构,所以笔者有些手痒,特此探寻了7.x(此篇博文笔者使用的是目前最新版本的JDK-7u15)的一些新特性分享给大家。虽然目前很多开发人员至今还在沿用Java4.x(笔者项目至今沿用4.x),但这并不是成为不前进的借口。想了解Java的发展,想探寻Java的未来,那么你务必需要时刻保持一颗永不落后的心。 当然笔者转载 2013-03-03 20:45:37 · 413 阅读 · 0 评论 -
深度解析Java内存的原型
本文主要通过分析Java内存分配的栈、堆以以及常量池详细的讲解了其的工作原理。一、Java虚拟机内存原型寄存器:我们在程序中无法控制栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中堆:存放用new产生的数据静态域:存放在对象中用static定义的静态成员常量池:存放常量非RAM存储:硬盘等永久存储空间。二、常量池(constant pool)转载 2013-03-04 22:54:39 · 219 阅读 · 0 评论 -
影响Java EE性能的十大问题
本文总结了影响Java EE性能的十大问题 1)缺乏正确的容量规划;2)中间件环境规范不足;3)虚拟机垃圾回收过度;4)与外部系统集成过多或过少;5)缺乏适当的数据库SQL调优和容量规划;6)特定应用程序性能问题;7)中间件调优问题;8)主动监控不足;9)公共基础设施硬件饱和;10)网络延迟。本文作者是一名有10多年经验的高级系统架构师,他的主要专业领域是Java EE、中间件和JVM转载 2013-03-04 22:56:17 · 263 阅读 · 0 评论 -
Java编程中“为了性能”需做的26件事
最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了。下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方。1.尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以转载 2013-03-05 22:33:41 · 449 阅读 · 0 评论 -
maven常见问题问答
前言Maven,发音是[`meivin],"专家"的意思。它是一个很好的项目管理工具,很早就进入了我的必备工具行列,但是这次为了把ABPM项目 完全迁移并应用maven,所以对maven进行了一些深入的学习。写这个学习笔记的目的,一个是为了自己备忘,二则希望能够为其他人学习使用maven 缩短一些时间。maven概要首先我把maven的概念快速的梳理一下,让我们快速地建立起转载 2013-03-14 13:11:28 · 465 阅读 · 0 评论 -
hibernate中的悲观锁和乐观锁的实现
锁(locking) 业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算 处理中,我们希望针对某个cut-off时间点的数据进行处理,而不希望在结算进行过程中 (可能是几秒种,也可能是几个小时),数据再发生变化。此时,我们就需要通过一些机制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓 的“锁”,即给我们选定的目标数据上锁,使其无法被其转载 2013-03-14 15:13:05 · 414 阅读 · 0 评论 -
为什么要用NIO
进程中所有的线程共享相同的地址空间static的变量可以被进程中所有线程共享 一个线程拥有自己的线程栈(stack),每个stack占用一定的内存空间,windows默认为1M,linux要小一些这样一个服务器最多同时能开多少个线程 = 总内存/线程栈大小 ,比如1G 那么最多开 1G/1M = 1024个线程 所以不推荐用一个线程服务一个连转载 2013-03-15 10:18:42 · 579 阅读 · 0 评论 -
浅析tomcat nio 配置
Tomcat 6.X实现了JCP的Servlet 2.5和JSP2.1的规范,并且包括其它很多有用的功能,使它成为开发和部署web应用和web服务的坚实平台。 NIO (No-blocking I/O)从JDK 1.4起,NIO API作为一个基于缓冲区,并能提供非阻塞I/O操作的API被引入。 作为开源web服务器的java实现,tomcat几乎转载 2013-03-15 15:33:29 · 411 阅读 · 0 评论 -
JVM可创建的最大线程数
限制该值的因素:线程堆栈大小——》进程的最大内存——》操作系统位数 linux线程 查看默认的线程栈大小ulimit -a 调整栈大小ulimit -s 是否存在硬限制, /proc/sys/kernel/threads-max是否为硬限制?cat /proc/sys/kernel/threads-转载 2013-03-18 10:56:13 · 961 阅读 · 0 评论 -
Map线程安全几种实现方法
如果需要使 Map 线程安全,大致有这么四种方法: 1、使用 synchronized 关键字,代码如下synchronized(anObject) { value = map.get(key);}2、使用 JDK1.5提供的锁(java.util.concurrent.locks.Lock)。代码如下lock.lock(); value = map.get转载 2014-03-06 13:18:19 · 1026 阅读 · 0 评论