- 浏览: 9553 次
- 性别:
- 来自: 苏州
最新评论
文章列表
github:
https://github.com/szyyoung/nettylearning
Server端:
package com.huayang.fakeasyncio;
import com.huayang.Bio.ServerHandler;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
ServerSocket serverSocket = null;
...
client端
package com.huayang.Bio;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class BioClient {
public static void main(String[] args) {
BufferedReader in = null;
...
提供者:
public interface HelloService {
String echo(String str);
}
public class HelloServiceImpl implements HelloService {
public String echo(String str) {
return "hello " + str;
}
}
服务提供方通过反射调用:
package com.huayang.provider;
import java.io.IOExcepti ...
mvn 使用profiles
- 博客分类:
- mvn
classpath下新建
application.properties
ds=${provider}
dev.properties
provider=dev
prd.properties
provider=prd
qa.properties
provider=qa
pom.xml 加入
<profiles>
<profile>
<id>dev</id>
<properties>
<p ...
1 将资源文件封装成Resource
如Resource re = new ClassPathResource("");
2. 将加载好的资源文件 通过XmlBeanFactory初始化
public class XmlBeanFactory extends DefaultListableBeanFactory {
private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this);
public XmlBeanFactory(Resource r ...
Resource 继承 InputStreamSource 抽象了 spring内部所有使用到的底层资源
常用间接的子类 ClassPathResource FileSystemResource ByteArrayResource 等
package com.huayang;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import java.io.File;
import java.io.FileOutputStrea ...
spring框架本身四大原则:
1.使用pojo进行轻量级和最小侵入式开发
2.通过依赖注入和基于接口编程实现松耦合
3.通过Aop和默认习惯进行声明式编程
4.使用Aop和模板减少模式化代码
声明Bean的注解(声明当前的bean有spring容器管理的一个bean)
@Compent组件,没有明确的角色
@Service在业务逻辑层(service层) 使用
@Repository 在数据访问层(dao层)使用
@Controller 在表现层(spring mvc) 使用
注入Bean的注解(可注解 在set方法或 ...
安装参考:http://apidocjs.com/
将 apidoc.json footer.md header.md
apidoc -i src/main/java/com/huayang/ -o apidoc/
wait和notify是Object类中的方法,即java为所有的对象都提供了这两个方法
1. wait和notify必须和synchronized配合使用
2.wait方法释放锁 而 notify方法不释放锁
package com.example.threadDemo;
import java.util.ArrayList;
import java.util.List;
public class WaitAndNotify {
private volatile static List list = new ArrayList();
publi ...
package com.example.threadDemo;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
/**
* Created by szy on 2017/4/5.
*/
public class MultiAtomicInteger {
private static AtomicInteger count = new AtomicInteger(0);
/** 单一cou ...
package com.example.threadDemo;
/**
* volatile 关键字对多个线程具备可见性,但不保证原子性
*/
public class VolatileNoAtomic extends Thread {
private static volatile int count;
private static void addCount() {
for (int i = 0; i < 1000; i++) {
count++;
}
Sys ...
1.继承HandlerInterceptorAdapter实现自定义的拦截器
2.重写preHandle方法 ,在请求发生前执行
3.重写postHandle方法,在请求完成之后执行
public class MyMvcInterceptor extends HandlerInterceptorAdapter{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
l ...
条件注解@Conditional
可以基于条件去创建一个Bean,根据满足某一特定条件创建一个特定的Bean
比如 当某一个jar包在一个类路径下的时候 自动配置一个或者多个bean
或者只有某个Bean被创建的时候才创建另外一个Bean ;就是根据特定的条件控制创建
Bean的行为。
//实现condition接口 ,重写match方法
public class WindowsConditonal implements Condition {
@Override
public boolean matches(ConditionC ...
spring 实现事件的异步处理
- 博客分类:
- spring
/**
* 自定义事件
* Created by szy on 2017/3/30.
*/
public class DemoEvent extends ApplicationEvent {
private String msg;
private List<String> list;
public DemoEvent(Object source,String msg,List<String> list) {
super(source);
this.msg=msg;
...