- 浏览: 3611 次
-
最新评论
文章列表
java中阻塞非阻塞概念
- 博客分类:
- nio
<div class="iteye-blog-content-contain" style="font-size: 14px"></div>
引起一个线程阻塞有多种情况
1 线程执行了某个同步方法,由于获取不到锁,导致线程放弃cpu执行权
2 调用某个对象wait方法,只有等待其他线程执行了该对象notify或者notifyAll方法才能恢复
3 线程调用了Thread.sleep(int n)
4 执行io或者远程通信时,等待资源而进入阻塞状态,例如我们读取控制台数据System.in时,如果我们一直没有输入数据,那么线程就一直等 ...
打开socket源码,发现socket有很多重载的构造方法,大部分构造方法都需要传链接地址和端口
public Socket(InetAddress address, int port) throws IOException {
this(address != null ? new InetSocketAddress(address, port) : null,
(SocketAddress) null, true);
}
public Socket(String host, int port, InetAddress loc ...
java网络编程概念
- 博客分类:
- nio
java网路编程都是基于tcp/ip协议基础上,致力于实现应用层,传输层(tcp/ip)向应用层提供了套接字socket接口,socket封装了向下层(网络层ip)传输数据的细节,应用层有ftp http https telnet等。应用层通过socket与远程建立链接,实现远程通信。java.net包下为我们提供了3种套接字类Socket,serverSocket,DatagramSocket。这里演示一个socket和serverSocket例子
服务端:
public class BioServer {
private ServerSocket server;
public B ...
springbean装配
- 博客分类:
- spring
spring ioc容器,只有当我们为容器指定需要容器帮我们做的事情后,容器才能为我们工作,spring帮我们创建Bean,管理Bean,xml配置装配Bean,我们来看看常见的bean装配,属性依赖注入:
向Bean属性注入简单数据
<bean id="person" class="spring.Person">
<constructor-arg name="age" value="20" />
<constructor-arg name="num" val ...
我们普通Bean的生命周期可能只是new出来就直接用了,不用的时候GC自动回收,而Spring的生命周期比我们普通new的对象生命周期更为复杂细腻
1 spring对Bean进行实例化,相当于我们new一个对象
2 依赖注入我们Bean中属性 构造器注入 Set注入,需注意对比依赖注入和Init执行先后顺序
3 如果Bean实现了BeanNameAware接口,spring将Bean的ID传递给setBeanName()方法
4 如果Bean实现了BeanFactoryAware接口,spring将Bean调用setBeanFactory方法,将BeanFactory set进去
5 如果Be ...
spring依赖注入理解
- 博客分类:
- spring
spring简化企业开发主要采取以下4种关键策略:
1,基于POJO的轻量级和最小侵入式编程
2,通过依赖注入和面向接口编程实现松散耦合
3,基于切面和惯例进行申明式编程
4,通过模板和切面减少样式代码
侵入式编程:spring Bean无需继承任何接口参与spring生命周期管理
依赖注入:
public class AnimalTest {
private Animal animal;
public AnimalTest() {
Animal animal = new Animal();
}
}
这样代码就有极高的耦合度,animal new必须是实现类,就限制了其功能调 ...