自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 线程同步之synchronized

为了避免临界区静态条件的发生,可以使用阻塞时的解决方案:synchronized,即俗称的对象锁,它采用互斥的方式让同一时刻至多只有一个线程能持有对象锁。注意虽然java中互斥和同步都可以采用synchronized关键字来完成,但它们还是有区别的互斥是同一时刻只能有一个线程执行执行临界区代码。同步时由于线程执行的先后,顺序不同,需要一个线程等待其它线程运行到某个点。//synchronized加在对象上package hello;import java.util.*;p

2022-01-26 08:33:37 221

原创 线程的状态

这里从javaAPI层面来描述,根据ThreadState枚举,分为六种状态NEW线程被创建但是还没有调用start方法RUNNABLE当调用了start方法之后,注意,javaAPI层面的RUNNABLE涵盖了操作系统层面的就绪状态,运行状态,和由于BIO(阻塞IO)导致的阻塞状态。TERMINATED线程运行结束BLOCKED TIMED_WAITING WAITING都是javaAPI层面对阻塞状态的细分,会在后面状态转换一节详述状态练习package hello;impo

2022-01-22 20:56:52 142

原创 线程常见方法

1线程停止建议自己写一个线程停止的方法package hello;import java.util.*;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent

2022-01-20 21:12:10 196

原创 java实现多线程的三种方法

可以继承Thread类也可以重写Runnable方法class Test extends Thread{ public void run() { }}建议使用实现Runnable,方便多个线程操作同一个对象,比如下面这个,但是这样写存在并发问题。这里只是举例说明多个线程操作同一个对象。并发问题在下面解决。package hello;import java.util.*;public class Main implements Runnable{ private int .

2022-01-18 16:49:11 245

原创 spring声明式事务管理

1在配置文件中创建事务管理器<!--组件扫描--><context:component-scan base-package="com.spring"></context:component-scan><--数据库连接池--><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destory-method="close"><property na

2022-01-11 15:14:38 310

原创 jdbcTemplate操作数据库

假设数据库中有一个表格叫做book,有三个属性分别为userId,username,usatus。可以先定义一个Book类@Componentpublic class Book{ private String userId; private String userName; private String ustatus; public void setUserId(String u){ userId=u;} public void setUs

2022-01-06 16:40:48 392

原创 Template连接数据库(jdbc)

1先引入相关的jar包2在spring配置文件配置数据库连接池<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destory-method="close"><property name="url" value="jdbc:mysql:///user db"></property><property name="username" value="root">&

2022-01-06 13:07:27 502

原创 AOP操作AspectJ注解

先配置两个名称变量xmlns:context和xmlns:aop,然后添加到xsi:schemalLocation中1开启组件扫描和的代理对象的创建<!--扫描包下所有类,如果有创建类的对象的注解就创建对象--><context:component-scan base-package="com.spring.aopano"></context:component-scan><!--生成代理对象(带有@Aspect注解的类)--><aop:

2022-01-05 18:44:34 160

原创 AOP底层原理(JDK动态代理实现)

AOP底层使用动态代理有两种情况动态代理第一种有接口情况,使用JDK动态代理第二种无接口情况,使用CGKIB动态代理这里来演示第一种情况1我们先定义一个接口public interface UserDao { public int add(int a,int b); public String update(String s);}2定义接口的实现类public class UserDaoIm implements UserDao{ @Override pub

2022-01-05 11:24:49 205 1

原创 IOC基于注解创建对象和注入属性与完全注解开发

1基于注解创建对象Spring针对Bean管理中船舰对象提供的注解@Component @Service @Controller @Repository第一步引入依赖引入spring-aop-(版本).RELEASE.jar第二步开启组件扫描<!--引入名称空间context--><!--开启组件扫描--><context:component-scan base-package="com.spring"></context:compon

2022-01-04 16:20:04 198

原创 bean的生命周期

1通过构造器创建bean实例(无参构造方法)2为bean的属性设置值和对其它bean的引用(调用set方法)3把bean实例传递给bean后置处理器的方法4调用bean的初始化方法5把bean实例传递给bean的后置处理器方法6bean可以使用了7当容器关闭的时候,调用bean的销毁方法添加后置处理器public class MyBeanPost implements BeanPostProcessor{ public Object postProcessBefo.

2022-01-03 16:11:59 201

原创 ApplicationContext和BeanFactory以及bean的作用域

实用的Bean工厂ApplicationContext和BeanFactory的介绍:ApplicationContext的中文意思是“应用前后关系”,它继承自BeanFactory接口,除了包含BeanFactory的所有功能之外,在国际化支持等方面进行了良好的支持,被推荐为javaEE应用之首选,可应用在javaAPP和javaWeb中。常用的实现类有ClassPathXmlApplicationContext,FileSystemXmlApplicationContext和XmlWebAppl

2022-01-02 10:53:28 694

原创 Spring之普通bean与工厂bean

Spring中有两种类型的bean,一种是普通bean,另一种是工厂bean(FactoryBean)。1普通bean先定义一个类package com.spring.Book;class Book{ private String bname; public void setBname(String bname){ this.bname=bname;} public void testBook(){ System.out.prin..

2022-01-02 09:25:37 309

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除