自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

fromddd的博客

大神都是从菜鸟过来的

  • 博客(39)
  • 收藏
  • 关注

原创 深入了解Java虚拟机学习之--如何实现线程安全?

一、互斥同步 1.同步:在多个线程并发访问共享数据时,保证共享数据在同一个时刻只被一个(或是一些,使用信号量的时候)线程使用。 2.互斥:是实现同步的一种手段,主要有以下: 临界区,互斥量,信号量 互斥是手段,同步是目的 3.在Java中实现互斥同步 synchronized关键字:在编译前后会在同步块的前后分别形成monitorentry和monitorexit这两个字

2017-08-07 15:42:37 846

原创 RESTful

1.what? RESTful架构是一种互联网软件架构,结构清晰,符合标准,易于理解,扩展方便,所以正得到越来越多网站的采用 Representational State Transfer表现层状态转换 相当于一种开发理念,对http的很好地诠释 2.how? (1)对url规范,写RESTful格式的url 非RESTful的url:http://…../queryItems.acti

2017-07-21 17:00:17 441

原创 springmvc和struts2的区别

1.springmvc是基于方法开发,struts2是基于类开发2.springmvc将url和controller方法映射,映射成功后springmvc生成一个handler对象,对象中只包括了一个method,方法执行结束,形参数据销毁。springmvc的controller开发类似service开发3.springmvc可以进行单例开发,并且建议使用4.struts通过类的成员变量接收参数,

2017-07-20 22:22:13 246

原创 springmvc(5)--springmvc和mybatis整合实现商品查询

1.话不多说上图: 整理下我们学习的思路: 这就是spring的整体架构。 2.整合daomybatis和spring整合,通过spring管理mapper接口 使用mapper的扫描器自动扫描mapper接口在spring中进行注册3.整合Service 通过spring管理service接口 使用配置方式 将service接口配置在spring配置文件中 实现事务的控制4.整合

2017-07-20 18:15:05 1398

原创 springmvc(4)--注解的处理器映射器和适配器

1.我们在springmvc.xml中配置的适配器和映射器,如果不配置,那么将会加载默认的映射器和适配器。 如图 但是上面两种注解方式的适配器和映射器,是已经过时的,是spring2.5的。ps:在spring3.1之前使用的注解映射器是:org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping

2017-07-20 16:19:00 1357

原创 springmvc(3)--非注解的处理器映射器和适配器

非注解 (1)处理器映射器: 上一节中讲到一个 org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping它是以bean的名字为url但是一个bean中也可以对应多个url,我们可以针对同一个controller映射多个url,此时就有另一个映射器出场了:SimpleUrlHandlerMapping<!--简单url

2017-07-20 15:30:52 303

原创 springmvc(2)--环境搭建和配置前端控制器

1.环境搭建 和我的博客中ssm那个框架一样,那个是基础。 框架搭建 2.配置前端控制器 首先在config中配置springmvc.xml 接下来 在web.xml中配置前端控制器<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xm

2017-07-19 22:59:18 312

原创 springmvc(1)--什么是springmvc?

1.话不多说先上图: 这是Spring的一个模块图这里面的web中有个spring web MVC spring web MVC它是Spring的一个模块,无需通过中间层和Spring整合,像struts整合或者mybatis整合会有一个中间包,那个就是中间层。2.什么是MVC?是一种设计模式,model,view,controller 将这三层分开,之前就是直接的jsp页面,现在将其分层

2017-07-19 17:56:06 393

原创 spring+springmvc+mybatis(3)--逆向工程自动生成代码

1.what? mybatis需要程序员自己写sql语句,mybatis官方提供逆向工程,可以针对表单自动生成mybatis执行所需要的代码(mapper.java,mapper.xml,pojo)企业实际开发中,常用逆向工程方式,由数据库的表来说生成代码2.how? 首先我们需要下载逆向工程的代码:mybatis-generator-core-1.3.2-bundle.jar使用方法:(1)命

2017-07-19 16:48:06 5005 2

原创 spring+springmvc+mybatis(2)--mapper代替dao开发

mapper代理开发,一样的套路: mapper.javapublic interface UserMapper { // 根据id查询一个user public User findUserById(int id);}mapper.xml<mapper namespace="com.ddd.ssm.mapper.UserMapper"> <!-- 在映射文件中配置很多sql

2017-07-19 16:13:50 322

原创 spring+springmvc+mybatis(1)--整合和原始dao开发

1.整合思路 需要spring通过单例方式管理SqlSessionFactorySpring和mybatis整合生成代理对象,使用SqlSessionFactory创建SqlSession(spring和mybatis整合自动完成)持久层的mapper都需要spring管理2.环境整合 (1)创建新的工程(2)加入所需jar包: (3)这里面除了之前mybatis的包,还有Spring和spr

2017-07-19 15:50:01 337 1

原创 mybatis(10)--二级缓存应用场景

1. 对于访问多的查询请求且用户对查询结果实时性要求不高的,可以使用mybatis的二级缓存,降低数据库访问量,提高访问速度,例如:耗时较高的统计分析sql,电话账单查询,前一个月的消费查询等。 实现:通过设置刷新间隔时间,由mybatis每隔一段时间自动清空缓存,genuine数据变化频率设置缓存刷新时间间隔flushInterval,如:30min,60min,24h等根据需

2017-07-19 12:15:48 2337

原创 mybatis(9)--整合ehcache

ehcache是什么?1.what? 它是一个分布式缓存框架(1)什么叫分布式缓存呢?我们系统为了提高系统并发,性能等,一半对系统进行分布式部署(集群部署方式)当用户在服务器1中登录,它的信息将会存储在1中的缓存中,但当下次去服务器2中访问时,2中的缓存中并没有,所以我们将缓存集中式管理起来。如果不使用分布式缓存,缓存的数据将在各个服务器的缓存中单独存储,不方便系统开发。 mybatis不支持分

2017-07-19 12:02:14 404

原创 mybatis进阶(8)--查询缓存之二级缓存

话不多说看图: 上节中提到,二级缓存是mapper级别的。可以跨sqlSession使用。过程分析:首先我们需要手动开启mybatis的二级缓存 sqlSession1发起查询用户id为1的用户信息,先去缓存中后是否有id为1的用户信息,如果没有,从数据库查询用户信息,并将用户信息存储到二级缓存中去 如果sqlSession3去执行相同mapper下的commit操作(插入,更

2017-07-18 22:58:36 316

原创 mybatis进阶(7)--查询缓存之一级缓存

1.what? mybatis提供查询缓存,用于减轻数据压力,提高数据库性能 mybatis提供一级缓存,二级缓存 话不多说看图: 我们之前的测试中总是需要SQLSession来操作数据库,而这个sqlSession中有这样一个hashmap的数据结构用来存储缓存数据。不同的sqlSession之间的缓存区域(hashmap)是互不影响的。二级缓存是mapper级别的缓存,可以跨sqlSes

2017-07-18 22:11:11 274

原创 mybatis进阶(6)--延迟加载

1.what? resultMap可以实现高级映射(association,collection具备延迟加载功能) 需求:如果查询订单并且关联查询用户信息,如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户信息。 对把用户信息的按需查询就叫做延迟加载延迟加载:先从单表查询(比多表关联查询速度快很多),需要时在从关联表中去关联查询 2.实现(使用association) 需要

2017-07-18 18:31:41 431

原创 mybatis进阶(5)--多对多查询

1.需求分析 查询用户及用户购买商品信息 2.sql分析SELECT orders.*, user.username, user.sex, user.address, orderdetail.id orderdetail_id, orderdetail.items_id, orderdetail.items_num, orderdetail.orders_id,

2017-07-18 17:46:10 234

原创 mybatis进阶(4)--一对多查询

1.需求分析:SELECT orders.* ,user.username,user.sex,user.address,orderdetail.items_id,orderdetail.items_num,orderdetail.orders_idFROM orders,USER,orderdetail WHERE orders.user_id=user.id AND orderdetail.

2017-07-18 16:40:05 322

原创 mybatis进阶(3)--一对一查询(使用resultMap)

上一个使用的是resultType来返回值,这次使用resultMap来实现: sql分析:同上一个 使用resultMap实现的思路: 使用resultMap将查询结果的订单信息映射到orders对象中,在orders勒种添加user属性,将关联查询出来的用户信息映射到orders对象中的user属性中。 所以我们在orders中有一个user属性。接下来就是sql了:<!-- 查询订单关

2017-07-18 15:52:09 321

原创 mybatis进阶(2)--一对一查询(使用resultType)

1.需求分析:SELECT * FROM orderdetail SELECT orders.*, user.username, user.sex, user.address

2017-07-18 12:43:10 315

原创 mybatis进阶(1)--高级映射之数据模型分析

1.先回顾下我们之前的输入输出映射 parameterType和resultType是对sql执行进行入出映射,可以是一些简单类型,pojo,hashmap等 2.高级映射 将关联映射的列查询映射到一个pojo属性中。(1对1) 将关联映射的列查询映射到List<pojo>属性中。(1对多) 3.订单中的映射需求 数据模型分析思路: (1)每张表记录的数据内容 分模块对每张表记录的内

2017-07-18 11:28:03 445

原创 mybatis(11)--动态sql

1.什么是动态sql? mybatis核心对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接组装。 2.需求 用户综合信息查询和用户综合信息查询总数的查询条件可能为空,那么我们可以增加条件查询条件不为空时才进行查询条件的拼接 3.解决 对其statement使用动态sql 4.具体实现 mapper.xml<!-- 综合查询用户信息 --> <select id

2017-07-18 10:02:51 246

原创 mybatis(10)--输出映射

输出映射: 第一种: resultType指定相应的返回结果类型进行输出映射 只有查询出来的列名与pojo中的属性名一致,才会映射成功创建pojo 若全部都不一致,则没有创建pojo,查询出来的结果类型都是空 若有一个一致,就会创建pojo,但是其他不一致的属性也会返回空首先,来个需求: 我们查询综合用户信息时可能需要它的总数来进行分页:解决:<!-- 综合查询用户信息总数 -->

2017-07-17 22:35:20 197

原创 mybatis(9)--输入映射

1.输入映射 通过parameterType指定输入参数类型,类型可以是简单类型,hashmap,pojo的包装类型 但是有时我们的需求传入的查询条件很复杂(可能包括用户信息,商品,订单信息等)此时我们可以根据这个需求来自定义包装类型的pojo 在包装类型的pojo中将复杂的查询条件包装进去package com.ddd.mybatis.pojo;/** * 一般的user是使用逆向工程代

2017-07-17 21:45:49 200

原创 mybatis(8)--sqlMapConfig的一些小知识点

1.先前的数据源我们是直接写死在sqlMapConfig.xml配置文件中的,这次我们将它换成properties文件保存起来。 db.propertiesjdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8jdbc.username=root

2017-07-17 21:00:06 191

原创 mybatis(7)--使用mapper代理开发代替原始的dao开发

在原始的dao中我们发现了很多问题,而mapper代理开发则会帮我们解决这些问题。 具体思路: 1.需要编写映射文件mapper.xml 2.使用mapper接口来代替dao接口 3.mybatis会自动实现mapper接口的代理类对象 how? mapper接口是有一定的编写规范,mybatis根据这些规范动态的使用反射获取方法名方法参数等,从而实现mapper的代理首先来看mappe

2017-07-17 17:26:06 1067

原创 mybatis(6)--mybatis开发dao之原始开发

(5)中的只是做了一个测试,是面向程序员的测试,那么接下来,我们要开发面向用户的dao层以及它的实现层。 首先来定义接口功能:package com.ddd.mybatis.dao;import com.ddd.mybatis.pojo.User;/** * 用户的dao接口 * @author Dan * */public interface UserDao { //根据id查

2017-07-17 15:04:19 253

原创 mybatis(5)--mybatis和hibernate的区别和应用场景

接下来我们比较下这两个持久层的框架的不同: hibernate: 1.是一个标准的orm(Object Relational Mapping)框架,入门门槛比较高 2.有自带的hql语言,不需要程序员来写sql,sql会自定生成 3.对于sql的优化和修改比较困难 4.适用于需求变化不多的中小型项目,比如后台管理系统,erp,orm,oa等 5.Hibernate与数据库具体的关联都在X

2017-07-17 10:09:33 449

原创 mybatis(4)--完成基本的增删改查操作

上一个小demo只是演示了mybatis的执行过程是怎样的,我们先来回顾一下: 首先是写配置文件: sqlMapConfig.xml中定义数据源连接池的属性,用来与数据库获取连接; 接下来写usermapper.xml,来替换之前jdbc中写死的sql,其中有输入映射与输出映射; 这时候我们需要一个pojo来作为其中的输入或输出等,其属性与数据库中保持一致; 最后在test中要首先获取配置

2017-07-17 09:54:34 705

原创 mybatis(3)--第一个mybatis的demo

首先就是搭建环境啦!!!https://github.com/mybatis/mybatis-3/releases从这个链接下载mybatis的开发包下载下来其中mybatis-3.4.4.jar就是其核心包 lib下的包就是相关的日志包,还有代理cglib包,common包等再加一个log.properties#开发环境下设置成debug,生产环境设置成info或者errorlog4j.roo

2017-07-16 17:06:43 1099

原创 mybatis(2)--什么是mybatis?

回顾:jdbc缺点 1.对数据库频繁开启关闭数据库 解决:使用数据库连接池 2.sql是写死的 解决:使用xml配置文件来写sql 3.设置参数ps.setXXX是写死的 解决:把sql语句的参数占位符全部配置在xml中去 4.结果集的遍历是写死的 解决:将结果集映射成Java对象,使用对象获取属性mybatis就是专门来解决这些问题的 概念要点: 1.持久层框架,是Apa

2017-07-16 15:34:12 318

原创 mybatis(1)--对于jdbc的回顾以及其缺点总结

mybatis是对原生的jdbc的封装,是一个持久层框架 那么为什么要用mybatis,首先我们来看看原生jdbc的操作 jdbc:首先打开eclipse,创建工程 加入mysql的jar包 创建JdbcTest类 打开SQLyog,创建 数据库mybatis,创建表userSHOW CREATE TABLE USERCREATE TABLE `user` ( `id` INT(11

2017-07-16 15:11:33 414

原创 斐波那契数列和青蛙跳台阶的问题

package jianzhioffer;import java.util.Scanner;/** * * @author Dan * 斐波那契数列 *第3项开始,每一项都等于前两项之和 */public class fibonacci { public static void main(String[] args) { Scanner s=new Scanne

2017-07-15 16:12:58 497

原创 回旋数组中查找最小数字

package jianzhioffer;/** * * @author Dan *题目描述:把一个数组最开始的若干个元素搬到数组的末尾 *我们称之为数组的旋转 *输入一个递增排序的数组的一个旋转 *输出旋转数组的最小元素 *例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1. * *解题思路:二分查找 *测试特殊样例: *①数组是一个升序

2017-07-15 15:20:22 316

原创 直接插入排序

//直接插入排序public class charu { public static void main(String[] args) { int[] aa={1,4,5,2,3,7,10}; int[] bb={1,2,43,111,23,54,79,8,0}; System.out.println("排序前:"); for

2017-07-15 14:05:06 240

原创 计算机组成(1)

复习目标: 计算机五大组成部分是什么?都是什么作用? 理解程序是怎样运行的? 五大组成部分: 1.运算器 运算器就是计算机进行运算+,-,*,/等算数运算还有&,|,!等逻辑运算,运算器就是一个电子线路的算盘。计算机中采用二进制数来运算。1和0的世界,因为1和0表示了我们生活中的电压高低,有和无等,这些在电子器件中很好实现。 2.存储器 计算机保存记忆的地方。人脑可以记住很多事情,但是

2017-07-01 10:51:19 466

原创 剑指offer(1)

嗯最近要秋招了,让自己进入一个编程的状态,既然写完代码,那就来捋下思路吧!本题主要是考察二维数组的应用。package jianzhioffer;import java.util.Scanner; /** *题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路:从

2017-07-01 10:14:25 224

原创 解决vsftpd上传文件成功后使用url访问的550错误问题

解决vsftpd上传文件成功后使用url访问的550错误问题

2017-06-23 18:23:42 1732 1

原创 面试

今天应该是本人第一次参加这种面对面的笔试,紧张的头天晚上睡不着,其实所有的紧张都来源于不充分的准备。之所以这么说:是因为在面试前天晚上之前,我还很多东西不会,我做的项目,那些知识点,只是模糊记了大概,可是真正问起细节自己真的是一脸懵逼。首先,面试官很客气,不过那个微信提醒,我一时紧张忘了看,13:07人家给我发了一次短信,完了13:13公众号推了一次,我觉得自己这一点真的是没考虑,

2017-03-31 19:25:49 489 2

空空如也

空空如也

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

TA关注的人

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