- 博客(37)
- 资源 (1)
- 收藏
- 关注
原创 多线程之间的通信(二)使用阻塞队列
BlockingQUery接口是Query的子接口,是作为线程同步的工具。BlockingQuery具有一个特征,当生产者线程试图向BlockingQuery中放入元素时,如果队列已满,则该线程被阻塞;当消费者从BlockingQuery中去除元素时,如果队列已空,则该线程阻塞。程序的两个线程通过交替向BlockingQuery存入元素,取出元素,可很好的控制线程的通信。Blockin...
2018-11-23 17:45:44 718
原创 多线程之间的通信-wait方法和notify方法解析
死锁(deadLock):有两个线程,A线程获取到a资源,B线程获取到b资源,每个线程都必须获取到a,b两个资源才可以继续往下执行,但在此种情况下,A线程和B线程都不愿意放开自己手中的资源,此为死锁。 wait方法wait是object类中的方法,而且被fianl修饰。wait方法可以被所有的类所继承并且不能被重写。wait方法会造成当前线程等待,直到有其他的线程调用同一对象的...
2018-11-23 11:47:59 294
原创 同步方法和同步代码块的使用和区别
同步方法的使用:在方法上加synchronizedpublic synchronized void execute(){ for(int i = 0; i < 20; i++) { try { Thread.sleep((long)(Math.random() * 1000)); } catch (InterruptedEx...
2018-11-22 16:19:39 6852
原创 多线程同步问题探索
先写一个小案例,说明在什么情况下会出现线程同步的问题:银行取钱案例package com.bean;public class ThreadTest{ public static void main(String[] args) { Bank bank = new Bank(); //我们分别创建两个对象,分别去取一个账户中的钱 Thread t1 = new ...
2018-11-21 19:04:54 150
原创 成员变量和局部变量在多线程中使用的区别
public class ThreadTest implements Runnable { public static void main(String[] args) { //只创建了一个对象 Runnable r = new ThreadTest(); //该对象创建了两个线程 Thread t1 = new Thread(r); Thread t2 = new Th...
2018-11-21 17:38:59 1608
原创 线程的生命周期
线程生命周期转换图: 1、New 创建状态当时用new操作符创建一个线程对象时,该线程属于创建状态。处于创建状态的线程只是一个空的线程对象,系统不会为它分配资源。只有在调用start()方法后才会给线程分配资源2、Runnable 可运行状态执行线程的start()方法将为线程分配必须的系统资源,安排它运行,并调用线程体run()方法,这样线程就处于可运行状态。可运行状态...
2018-11-21 15:37:14 151
原创 深入源码理解线程两种实现方式的run()方法
线程的实现有两种方法,第一种是继承Thread类,重写run()方法,并调用start()方法;第二种是实现Runnable接口,并实现接口中run()方法,然后调用start方法。那么从源码上来看,这两种方法有什么不同呢? 首先,分析下Thread类中的run()方法到底做了什么事情? @Override public void run() { ...
2018-11-21 00:01:51 1048
原创 深入理解数组
当创建一个数组的时候,要将数组拆分成两部分来看待,一部分是数组的引用,放置在栈内存中,一部分是数组的对象,放置在堆内存中。 数组的引用可以指向任何有效的内存,只有当数组引用指向有效的内存时,才可以通过数组变量来访问数组元素。数组变量是访问数组对象的根本方式。实际的数组对象是放置在堆内存中的,如果引用该数组对象的数组引用变量是一个局部变量,那么它被存储在栈内存中。如果引用变量p想...
2018-11-20 11:31:45 227
转载 【springmvc】 参数绑定
spring参数绑定过程从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上。springmvc中,接收页面提交的数据是通过方法形参来接收。而不是在controller类定义成员变量接收默认支持的类型 直接在controller方法形参上定义下边类型的对象,就可以使用这些对象。在参数绑定过程中,如果遇到下边类型直接进行绑...
2018-10-29 14:34:04 197
转载 【springnvc】springmvc ---RquestMapping
@RequestMapping 作用:url映射 定义controller方法对应的url,进行处理器映射使用。 窄化请求映射限制http请求方法 controller方法的返回值返回ModelAndView需要方法结束时,定义ModelAndView,将model和view分别进行设置。返回void在controller方法形参上可以定义requ...
2018-10-29 14:16:25 193
转载 【框架整合】spring+springmvc+mybatis整合
Spingmvc +mybatis整合思路第一步:整合dao层 mybatis和spring整合,通过spirng管理mapper接口。使用mapper扫描器自动扫描mapper接口在spring中进行注册。第二步:整合service层, 通过spring管理service接口使用配置方式在spring中对service接口进行注册实现事...
2018-10-29 13:15:16 293
转载 【框架整合】sping整合mybatis---mapper代理开发
mapper.xml和mapper.java 通过MapperFactoryBean创建代理对象MapperFactoryBean中定义了mapperInterface属性 此方法问题:需要针对每个mapper进行配置,麻烦。 通过MapperScannerConfigurer进行mapper扫描(建议使用)MapperScannerConfigure...
2018-10-26 16:51:34 131
转载 Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring
原地址:https://www.cnblogs.com/jpfss/p/7799806.htmlMybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到SpringMybatis在与Spring集成的时候可以配置MapperFactoryBean来生成Mapper接口的代理. 例如<bean id="userMapper" cl...
2018-10-26 16:49:07 134
转载 【框架整合】spring 和mybatis整合&&整合后mybatis原始dao开发
整合思路需要spring通过单例方式管理SqlSessionFactory。spring和mybatis整合生成代理对象,使用SqlSessionFactory创建SqlSession。(spring和mybatis整合自动完成)持久层的mapper都需要由spring进行管理。 整合环境jar包:mybatis3.2.7的jar包spring3.2.0的jar包...
2018-10-26 15:34:30 290
转载 【mybatis】mybatis整合ehcache
ehcache是一个分布式缓存框架。我们系统为了提高系统并发,性能、一般对系统进行分布式部署(集群部署方式) 对缓存数据进行集中管理(redis集群) 使用分布式缓存框架 redis、memcached、ehcache。。 不使用分布缓存,缓存的数据在各各服务单独存储,不方便系统 开发。所以要使用分布式缓存对缓存数据进行集中管理。mybatis无法...
2018-10-26 13:32:11 132
转载 【mybatis】 一级缓存&二级缓存
一级缓存 工作原理图第一次发起查询用户id为1的用户信息,先去找缓存中是否有id为1的用户信息,如果没有,从数据库查询用户信息。得到用户信息,将用户信息存储到一级缓存中。如果sqlSession去执行commit操作(执行插入、更新、删除),清空SqlSession中的一级缓存,这样做的目的为了让缓存中存储的是最新的信息,避免脏读。第二次发起查询用户id为1的用户信息,先去找缓存中...
2018-10-26 11:33:40 129
转载 【mybatis】resultMap的延迟加载特性
什么是延迟加载resultMap可以实现高级映射(使用association、collection实现一对一及一对多映射),association、collection具备延迟加载功能。需求:如果查询订单(主表)并且关联查询用户(关联表)信息。先查询订单信息进行单表查询,当我们需要用户信息时再查询用户信息。按需去查询用户信息就是延迟加载。延迟加载:先从单表查询、需要时再从关联表去关...
2018-10-26 10:55:51 477
转载 【mybatis】ResultMap& ResultType 总结
resultType:作用: 将查询结果按照sql列名pojo属性名一致性映射到pojo中。场合: 常见一些明细记录的展示,比如用户购买商品明细,将关联查询信息全部展示在页面时,此时可直接使用resultType将每一条记录映射到pojo中,在前端页面遍历list(list中是pojo)即可。 resultMap: 使用a...
2018-10-25 17:52:54 134
原创 【mybatis】多对多查询
多对多查询 需求查询用户及用户购买商品信息。sql语句查询主表是:用户表 user关联表:由于用户和商品没有直接关联,通过订单和订单明细进行关联,所以关联表是:orders、orderdetail、items SELECT orders.*,//order表的唯一标识 user表的唯一标识 USER.username, USER.sex, ...
2018-10-25 16:07:48 210
原创 【mybatis】一对多查询
collection:对关联查询到多条记录映射到集合对象中 property:将关联查询到多条记录映射到cn.itcast.mybatis.po.Orders哪个属性 ofType:指定映射到list集合属性中pojo的类型
2018-10-25 15:47:49 135
原创 【mybatis】一对一查询----resultType &resultMap
resultType实现一对一查询需求:查询订单信息,关联查询创建订单的用户信息分析:订单表是主查询表,用户表是关联表使用内连接还是外连接?由于orders表中有user_id这个外键,外键关联查询用户只能查询出一条记录,可以使用内连接。SELECT orders.*, user.username, user.sex, user.address FROM ...
2018-10-25 11:28:41 215
原创 【框架】mybatis--动态sql
动态sql是对sql语句的灵活操作,通过表达式进行判断,对sql进行灵活拼接,组装动态sql if的使用需求:用户信息综合查询和用户信息查询总数两个statement的定义使用动态sql灵活拼接<where>可以自动去掉第一个拼接语句前的and<if>判断对象是否为空这样可以实现去掉任意一个条件都可以随意拼接。组装sql语句。 动态sql ...
2018-10-24 17:23:44 225
原创 【框架】mybatis --输出映射 resultType&resultMap
1.resultType使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。如果查询出来的列名和pojo中的属性名全部不一致,没有创建pojo对象。只要查询出来的列名和pojo中的属性有一个一致,就会创建pojo对象。 1.1、输出简单类型需求用户信息的综合查询列表总数,通过查询总数和上边用户综合查询列表实现分页。m...
2018-10-24 14:11:08 331
原创 【框架】mybatis---输入映射---定义pojo包装类型
需求:完成用户的高级查询 或综合查询,需要传入复杂的查询条件,那么需要定义包装类型POJO和拓展类型来完成数据的传递1、自定义包装类型public class UserQueryVo { //引入拓展类并有setter和getter方法 //用户查询条件 private UserCustom userCustom; public UserCustom getUserCu...
2018-10-24 12:06:08 415
原创 【框架】mybatis全局配置文件 ---SqlMapConfig
1、properties连接数据库相关的信息放置在db.properties属性文件中,只需要在SqlMapConfig.xml中加载db.properties的属性值。将数据库连接参数只配置在db.properties中,原因:方便对参数进行统一管理,其它xml可以引用该db.properties。db.propertiesjdbc.driver=com.mysql.jdbc....
2018-10-24 10:47:32 108
原创 【框架】mybatis 开发dao方法---mapper代理开发
mapper代理的开发1、需要编写mapper.xml映射文件2、需要编写mapper.java接口文件(mapper.java相当于dao接口) 1、mpper.xml映射文件的配置:<mapper namespace="com.mybatis.mapper.UserMapper"> <select id="findUserById" paramete...
2018-10-23 18:12:14 115
原创 【框架】mybatis 原始dao开发方法
需要写dao接口和dao实现类需要向dao实现类注入SqlSessionFactory,在方法体内通过SqlSessionFactory创建SqlSession1、dao接口public interface UserDao { //查找 public User finUserById(int id); //删 public void delelteUserById(int i...
2018-10-23 16:44:35 115
原创 【框架】Mybatis 01 原生态JDBC的问题&Mybatis架构
原生JDBC的问题总结:1、数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁开启和关闭,造成数据库资源浪费,影响数据库性能。解决:使用数据库连接池管理数据库连接2、将sql语句硬编码到java代码中,如果修改sql语句,需要重新编译java代码,不利于系统维护。解决:将sql配置到xml配置文件中,即使sql变化。不需要对java代码进行重新编译。3、向prepare...
2018-10-22 18:41:47 124
原创 【框架】Mybatis 02 架构详解
第一步:mybatis的配置文件1、sqlMapConfig.xml 是mybatis的全局配置文件配置数据源、事务等<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.o...
2018-10-21 22:25:42 161
原创 【框架】Springmvc 04 源码分析
第一步:前端控制器发送请求 protected void doDispatch(final HttpServletRequest request, HttpServletResponse response) throws Exception { HttpServletRequest processedRequest = request; HandlerExecutionChain m...
2018-10-21 13:38:15 87
原创 【框架】Springmvc 03 非注解和注解映射器和适配器
非注解的适配器1、简单的url处理器映射器SimpleUrlHandlerMapping <!-- 简单的url处理器映射器 --> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> ...
2018-10-20 19:14:24 131
原创 【框架】SpringMVC 02 组件配置
本篇是spirngMVC组件的配置 并写一个Demo引入springMVC的jar包:spring-webmvc.jar、、接着看springmvc都需要哪些配置:一、配制前端控制器DispatcherServlet前端控制器配置在/WEB-INF/web.xml中<?xml version="1.0" encoding="UTF-8"?><web-app...
2018-10-20 17:08:43 114
转载 【框架】SpringMVC 01 执行流程
什么是SpringMVC?springMVC是spring框架的一部分,他和struts2都属于表现层的框架,spring和springMVC无需通过中间层再进行整合。什么是MVC?MVC是一种设计模式 ,他们分别代表M(Model) V(view) C(Controller) SpringMVC的执行流程:第一步:发起请求到前端控制器(DispatcherS...
2018-10-19 18:39:29 133
转载 java面试题
Java基础1、switch语句能否作用在byte上,能否作用在long上,能否作用在String上?在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long和String类型都不符...
2018-10-19 15:46:05 245
原创 动态代理
动态代理的优点:将系统里独立的服务抽取出来放到一起在程序运行时动态的可以为任何目标类生成代理对象,可以做到和目标类完全解耦。 抽象类public interface UserManager { public void addUser(String name,String password); public void delUser(String name, Stri...
2018-10-09 20:40:00 71
原创 Hibernate get()和load()的区别
相同点:get()和load()方法都可以获取相应的持久化对象不同点:1.如果在调用get()和load()持久化对象不存在,get()返回null ,而load()抛出异常 2.两个方法发送查询sql语句有区别。1)当使用get()方法根据ID进行单条查询时,会立即发送一条sql语句,并且返回的是实际查询的对象 2)但是使用load()方法会有所不同。当调用load(...
2018-09-27 14:09:53 181
原创 操作基本数据类型的流——DataOutputSream/DataInputStream
DataOutputStream 继承自 FilterOutputStream (过滤流), 所以DataOutputStream是过滤流的子类,可以对节点流进行包装 , 而FilterOutputStream继承自OutputStream 。 DataOutputStream可以写入基本数据类型,使用OutputStream写入的数据要使用DataInputStre...
2018-03-31 22:47:06 376
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人