自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 原型模式

原型模式

2020-06-15 15:01:59 319

原创 工厂模式

工厂模式

2020-06-08 17:44:35 1343

原创 单例模式

单例模式

2020-06-08 14:51:15 383

原创 设计模式类型

设计模式分为三种类型,共23种1、创造型模式(对象的创建):单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式2、结构型模式(软件结构):适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式3、行为型模式(方法层面):模板方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式...

2020-06-08 13:24:29 237 1

原创 软件设计七大原则

一、单一职责原则二、接口隔离原则三、依赖倒转原则四、里氏替换原则五、开闭原则六、迪米特法则 (最少知道原则)七、合成复用原则

2020-06-08 12:04:39 299

原创 关于QQ音乐sign参数的获取

最近在抓取QQ音乐歌手粉丝数量时,发现参数多了一个sign如果不传这个参数返回的结果所以用了2个多小时一直debug看了一下生成sign参数的源码源码地址:https://y.qq.com/component/m/qmfe-security-sign/index.umd.js?max_age=2592000刚开始我以为直接导入js,调用window.getSecuritySign(JSON.stringify(data)),可以直接获取sign,可是结果一直不正确。我就想是不..

2020-05-22 23:50:04 6031 22

原创 线程安全

一、运行结果错误例子:a++多线程下会出现消失的现象因为a++实际上有3个步骤,在多线程情况下如果线程1实现了求和但还没有写入结果就切换到了线程2,线程2执行玩后切回线程1,再执行写入但是这次写入的结果就是线程的结果,导致了2个线程的求和是同一结果,就出现了求和结果不正确原因图解:样例代码:/** * 演示:线程安全问题1:运行结果错误 * * @author w...

2020-03-07 13:38:49 218

原创 Thread和Object中重要的方法

一、Object类中的wait、notify、notifyAll1、作用、用法wait、notify基本使用/** * 展示wait和notify的基本用法 * * @author wjh * @date 2020-03-05 10:45 */public class Wait { public static Object object = new Obje...

2020-03-05 15:50:55 187

原创 线程的生命周期

线程的生命周期有 New Runnable Blocked Waiting Timed Waiting Terminated 各种状态的转换图示 :

2020-03-05 10:05:22 102

原创 停止线程的正确方法

一、原理使用interrupt来通知线程停止,而不是强制停止Java中最多也就是告诉线程该停止了,而线程本身有最高决定权,是否停止,何时响应停止二、正确的停止方法(interrupt)1、普通情况下线程停止使用其他线程通知想要停止的线程停止 在应该停止的线程里要有响应停止代码,否则也不会停止,使用Thread.currentThread().isInterrup...

2020-03-04 18:47:07 439

原创 启动线程的正确和错误方式

一、start方法和run方法的比较二、start()方法原理解读三、run方法原理解读

2020-03-04 13:31:24 353

原创 Java实现多线程的方法

一、继承Thread类二、实现Runnable接口三、两种方法的比较

2020-03-04 12:29:57 123

原创 MyBatis_Plus 通用CRUD

1.插入(insert)BaseMapper:测试代码: @Test public void testInsert() { Employee employee = new Employee(); employee.setLastName("张三"); employee.setEmail("1256957450@qq....

2019-06-15 18:38:44 1193

原创 Mybatis_Plus 的配置(Spring配置文件版)

xml的配置代码: <!-- 配置 SqlSessionFactoryBean (Mybatis_PLUS)--> <bean id="sqlSessionFactoryBean" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean"> ...

2019-06-14 18:16:31 10023 1

原创 Spring Boot 配置文件

1、配置文件SpringBoot使用一个全局的配置文件,配置文件名是固定的•application.properties•application.yml配置文件的作用:修改SpringBoot自动配置的默认值,SpringBoot在底层都给我们自动配置好YAML(YAML Ain't Markup Language)​ YAML A Markup Langua...

2019-06-10 15:33:28 123

原创 Spring Boot 启动配置原理和启动事件监听

public static ConfigurableApplicationContext run(Object[] sources, String[] args) { return new SpringApplication(sources).run(args);}1、启动流程:1、创建SpringApplication对象(new SpringApplication(so...

2019-05-24 19:02:04 1199

原创 Spring Boot 整合MyBatis

一、环境搭建:IDEA使用spring initializr创建spring boot项目项目创建完成,查看pom文件类容,发现引入了mybatis自己针对于spring boot配置了starter的依赖 <!--mybatis自己配的starter--> <dependency> <...

2019-05-24 16:51:12 127

原创 spring注解开发-事务管理

使用注解完成spring的事务管理功能1、配置数据源、JdbcTemplate操作数据 //配置数据源 @Bean public DataSource dataSource() throws PropertyVetoException { ComboPooledDataSource dataSource = new ComboPooledDataS...

2019-05-23 17:42:45 350

原创 spring注解开发-aop功能的测试

1.编写一个切面类/** * 切面类 */@Aspect//告诉spring这是一个切面类public class LogAOP { @Pointcut(value = "execution(public * com.it.aop.MyAop.*(..))") public void point(){} @Before("point()") ...

2019-05-20 21:42:26 554

原创 Spring Boot Web开发-使用外置的Servlet容器

SpringBoot使用外置的Servlet容器1、嵌入式Servlet容器:应用打成可执行的jar包​ 优点:简单、便携​ 缺点:默认不支持JSP 优化定制比较复杂(使用定制器【ServerProperties、自定义EmbeddedServletContainerCustomizer】,自己编写嵌入式Servlet容器的创建工厂【EmbeddedServletContain...

2019-05-08 11:35:35 209

原创 Spring Boot Web开发-配置嵌入式Servlet容器

SpringBoot默认使用Tomcat作为嵌入式的Servlet容器 1、如何定制和修改Servlet容器的相关配置1、修改和server有关的配置在全局配置文件中修改默认的server的属性2、编写一个EmbeddedServletContainerCustomizer:嵌入式的Servlet容器的定制器 @Bean public Embedded...

2019-05-07 21:53:27 425

原创 Spring Boot Web开发-错误处理机制

1、SpringBoot默认的错误处理机制默认效果:①、浏览器,返回一个默认的错误页面②、如果是其他客户端,默认响应一个json数据 原理:参照ErrorMvcAutoConfiguration:错误处理的自动配置给容器中添加了以下组件​ 1、DefaultErrorAttributes:帮我们在页面共享信息; @Override pub...

2019-05-07 20:37:39 225

原创 Spring Boot Web开发-RestfulCRUD

1、默认访问首页2、国际3、登陆4、拦截器进行登陆检查5、RestfulCRUD-实验要求6、CRUD-员工列表7、CRUD-员工修改与添加8、CRUD-员工删除

2019-05-04 22:53:34 425 1

原创 Spring Boot Web开发-知识基础

1、简介1.使用SpringBoot1)、创建SpringBoot应用,选中我们需要的模块;2)、SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来3)、自己编写业务代码;2.自动配置原理这个场景SpringBoot帮我们配置了什么?能不能修改?能修改哪些配置?能不能扩展?xxxxAutoConfiguration:帮...

2019-05-03 20:52:00 170

原创 Spring Boot 日志

1、日志框架2、SLF4j使用3、SpringBoot日志关系4、日志使用

2019-05-03 17:46:55 104

原创 Spring Boot 配置文件

1、配置文件2、YAML语法3、配置文件值注入4、配置文件占位符5、Profile6、配置文件加载位置7、外部配置加载顺序8、自动配置原理

2019-04-29 19:17:04 168

原创 Spring Boot 入门

1、Spring Boot 简介2、微服务3、环境准备4、Spring Boot HelloWorld5、Hello World探究6、使用Spring Initializer快速创建Spring Boot项目

2019-04-28 21:34:00 115

原创 spring注解开发-自动装配

自动装配:Spring利用依赖注入,完成对IOC容器中的各个组件的依赖关系赋值1.@Autowired1)、默认优先按照类型去容器中找对应的组件---->ioc.getBean(BookDao.class);,如果找到了就赋值2)、如果找到了多个相同类型的组件,再讲属性的名称作为组件的id去查找--->ioc.getBean("bookDao");3)、使用@Qual...

2019-04-26 20:30:41 217

原创 spring注解开发-属性赋值

使用@Value赋值1.基本数值2.可以写SpEL(Spring表达式):#{}3.可以写${};取出配置文件中的值,需要在配置类中使用@PropertySource来引入外部文件public class Person { @Value("张三") private String name; @Value("#{20-2}") private I...

2019-04-26 17:41:09 175

原创 spring注解开发-Bean的生命周期

Bean的生命周期:bean的创建------>初始化------>销毁的过程由容器来管理bean的生命周期我们可以自定义bean的初始化和销毁方法,让容器在bean进行到当前生命周期时来调用这些方法。构造(对象创建)单实例:在容器启动的时候创建多实例:在每一次获取的时候创建初始化:对象创建完成,并赋值好,调用初始化方法销毁:单实例:在容器关闭...

2019-04-26 17:12:26 311

原创 spring注解开发-组件注册

以前在Spring中注册Bean,需要在配置文件中去注册:javaBean类:package cn.it.bean;/** * @author Admin * @create 2019-04-20-20:37 */public class Person { private String name; /** * */ private...

2019-04-21 22:46:42 111

原创 MyBatis的扩展应用

1.PageHelper分页插件pagehelper文档:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md使用方法参照文档2.MyBatis的批量操作1.使用动态sql,拼接大量sql语句,进行操作。缺点:如果操作量非常大,可能导致数据库不能接受很长的sql语句...

2019-04-11 17:32:23 384

原创 MyBatis插件开发

插件原理四大对象在创建时每一个创建出来的对象不是直接返回的,而是调用了interceptorChain.pluginAll()方法 调用方法获取到所有的Interceptor(拦截器),(插件需要实现的接口) 插件机制,可以使用插件为目标对象创建一个代理对象,面向切面的编程方式(AOP) 插件编写1.编写Interceptor的实现类MyFirstPlug...

2019-04-11 14:55:33 226

原创 MyBatis的原理(源码分析)

分析MyBatis原理用hello world分析步骤4步:获取SqlSessionFactory对象 获取SqlSession对象 获取接口的代理对象(MapperProxy) 执行增删改查方法1.获取SqlSessionFactory对象创建流程图:总结:就是把配置文件信息解析并保存在Configuration对象中,返回包含了Configuration的De...

2019-04-11 14:00:10 271

原创 MyBatis缓存机制

MyBatis中有两级缓存①一级缓存(本地缓存)在与数据库同一次会话期间,查询到的数据会放到本地查询中以后如果需要获取相同的数据,直接从缓存中拿,不需要再次去查询数据库一级缓存的体验:测试代码: @Test void cache_1() throws IOException { SqlSessionFactory sqlSessionFactory = getSq...

2019-04-07 22:48:36 173

原创 动态SQL

动态 SQL 元素和 JSTL 或基于类似 XML 的文本处理器相似。MyBatis 采用功能强大的基于 OGNL 的表达式来淘汰其它大部分元素。1、if<if test=""></if>test:判断表达式(OGNL表达式)OGNL用法可以参照官方文档进行使用:http://commons.apache.org/proper/commons-ognl...

2019-04-07 19:05:41 236

原创 映射文件-select(关联查询-多个对象)

使用场景:在查询部门信息的时候,将该部门的所有员工信息也查询出来环境搭建:Department类:package cn.it.mybatis.bean;import java.util.List;public class Department { private Integer id; private String deptName; private List&l...

2019-04-05 23:02:13 591

原创 映射文件-select(关联查询-仅一个对象)

使用场景:比如:查询员工信息的同时也要查询出该员工信息的部门信息(同样是一个javaBean)环境搭建:Employee类:package cn.it.mybatis.bean;import org.apache.ibatis.type.Alias;@Alias("emp")public class Employee { private Integer id; p...

2019-04-05 19:34:23 660

原创 映射文件-select

1.select返回一个List集合在映射文件中配置返回List集合的方法的sql映射resultType:依旧是写需要封装的javaBean,而不是写List集合<!--public List<Employee> getEmplsNameLike(String lastName); --> <select id="getEmplsN...

2019-04-05 16:50:21 289

原创 参数处理

1.一个参数:MyBatis不会做特殊处理使用#{参数名},取出参数2.多个参数:MyBatis会做特殊处理如果还使用使用#{参数名},取出参数的话会出现异常异常信息:因为MyBatis的特殊处理,将参数封装成了一个mapkey=param1,param2......paramNvalue=传入的参数值取出参数的操作:#{param1},#{...

2019-04-04 20:40:13 213

空空如也

空空如也

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

TA关注的人

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