- 博客(32)
- 收藏
- 关注
原创 java基础-面向对象-多态参数类型扩大访问不允许的原因
创建参数public class A {}public class B extends A {}创建父类,父类的run方法返回的是B子类的参数public class AA { public B run() { return new B(); }}创建子类,这时候会报错public class BB extends AA ...
2019-08-14 07:46:47
163
1
原创 java基础-面向对象类加载顺序
定义一个类public class Animal { private String attr1 = "我是一个成员变量"; private static String attr2 = "[我是一个静态成员变量]"; { System.out.println("我是一个代码块,在调用构造方法之前执行"); } static { ...
2019-08-14 07:22:16
178
原创 java基础-面向对象
什么是面向对象?什么是面向过程?面向对象的三大特性:封装、继承、多态。封装是指:对面向过程的封装,比如说数值比较,在面向对象中它就是一个 封装后的compare() 方法,compare()方法过程的实现就是面向过程。优点:1、对于调用对象者无需知道封装内容的依赖,只与对象依赖,降低耦合度。2、提高代码阅读性、可重复利用性和降低代码复杂性。3、可使用访问修饰符对内容保护不被...
2019-08-14 00:51:39
156
原创 java基础-修饰符
访问修饰符访问修饰符有4种:default、public、proected、private。修饰符在类、方法、成员变量中出现。修饰符与被修饰者访问权限 同类 同包 子类 不同包 public √ √ √ √ protected √ √ √ × default √ √ × × ...
2019-07-22 15:16:21
131
原创 java基础-循环
循环的基本语法:import java.util.Arrays;import java.util.Iterator;import java.util.List;public class Test { public static void main(String[] args) { // while循环 int i = 0; wh...
2019-07-22 12:55:50
182
原创 java基础-逻辑运算符
逻辑与:&,条件都为true则返回true,若发现不为true仍然执行后面条件。逻辑或:|,条件有一个为true则返回true,仍然执行后面条件。逻辑异或:^,两个结果不一致为true逻辑非:!,结果相反短路与:&&,条件都为true则返回true,若发现不为true则不再执行后面条件(短路)。短路或:||,条件有一个为true则返回true,若发现有t...
2019-07-22 00:56:32
99
原创 java基础-基本数据类型
基本数据类型有8种分别为:整 形:byte(1bit),short(2bit),int(4bit),long(8bit,在JDK32位的时候长度为4bit)浮点型:float(4bit),double(8bit)字符型:char(2bit)布尔型:boolean (1bit)整数1bit有8位其中第1位用来记录正负数(0代表正数,1代表负数),这样就出现0...
2019-07-22 00:23:30
97
原创 java基础-Annotation
在使用spring框架的时候,会提供很多注解例如 @Autowired、@Bean等。Spring 通过扫描注解,在标注了过注解的地方会执行特定操作。如实例化Bean,注入Bean。所以注解的用法已经比较清楚,接下来开始实战:先看看别人定义的注解:@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAM...
2019-06-19 16:43:18
206
原创 java反射机制实战(6) - 总结Declared
1、declared的方法只获取当前类定义的。2、非declared只能获取public修饰的。3、Class、Method、Field如果使用非declared的方法获取都是可以获取父类的public修饰符对应的元素,Constructor只获取当前类。构造方法不能继承。4、Class使用非declared的方法会获取父类注解,其它只会获取当前元素注解。我个人理解如果Field、...
2019-06-18 19:08:32
466
原创 java反射机制实战(5) - Annotation
注解在源码里常用,接下来实战如何通过Class获取Annotation/** * 注解一 */@Target({ElementType.METHOD,ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documentedpublic @interface MyAnnotation {}/**...
2019-06-18 11:20:04
147
原创 java反射机制实战(4) - Field
有了上一节Method的实验,操作Field就易如反掌了。/** * 反射父类对象 */public class AbstractReflectionModel { private String id; public String id2; public AbstractReflectionModel() { } public String ...
2019-06-17 11:24:13
202
原创 java反射机制实战(3) - Method
反射获取对象的所有方法,并且打印方法名public class ReflectionTest2 { public static void main(String[] args) throws Exception { ReflectionModel model = new ReflectionModel(); Class<? extends Ref...
2019-06-12 10:40:23
178
原创 java反射机制实战(2) - Constructors
使用Class生成实例和构造方法生成实例import com.pss.model.ReflectionModel;import java.lang.reflect.Constructor;public class ReflectionTest2 { public static void main(String[] args) throws Exception { ...
2019-06-10 14:14:19
269
原创 java反射机制实战(1) - Class
当一个类在java语法下无法调用的情况下,例如其他类访问某一个类私有变量,可以使用反射机制破坏这种规则。接下来就开始实战:package com.pss.model;/** * 被反射的类 */public class ReflectionModel { private String sql; private Integer count; public ...
2019-06-10 14:12:54
194
原创 mybatis框架学习(6) - typeAliases
类型别名是为 Java 类型设置一个短的名字。 它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余。示例如下:修改resultType测试<select id="selectById" resultType="com.pss.mybatis_spring.model.SysUser"> select * from sys_user where u...
2019-06-04 10:53:04
339
原创 mybatis框架学习(5) - SessionFactoryBean使用mybatis-config.xml
在此之前SessionFactoryBean设置Configuration的时候是使用java的形式。Configuration configuration = new Configuration();configuration.setMapUnderscoreToCamelCase(true);sessionFactory.setConfiguration(configuration...
2019-06-03 18:11:49
1309
原创 mybatis框架学习(4) - 通用Mapper
在写Mybatis的时候,selectAll、selectOne这种常用的每次都要在不同的业务写一次,实在太累了。像这种有规律的应该写成公共的,这时候通用Mapper就有意义了。tk.mybatis就做了这个事情,集成很简单。第一步加入关键的maven依赖<dependency> <groupId>tk.mybatis</groupId>...
2019-06-03 17:06:34
612
原创 ThreadLocal实践
当多个线程占用一个共享成员变量的时候就会出现线程问题,在之前实践的数据源连接池里,存放数据源是的LinkedList<Connection>,LinkedList是非线程安全的。在多线程场景下会出现线程安全问题,为了改进我使用了ThreadLocal解决这个问题。ThreadLocal是Thread存放变量的一个副本,Thread有个成员变量存放的是ThreadLocalMap,键...
2019-06-03 15:49:16
234
原创 实现一个简单的数据库连接池
数据库连接池就是管理数据库连接的地方,因为有很多连接所以叫池。实现数据库连接池基本功能:可以设置池大小,如果连接被使用中就从池内取出,等资源调用close方法将资源返回到池中。其他超时释放资源等功能就不一一实现了。首先实现javax.sql.DataSource接口import javax.sql.DataSource;import java.io.PrintWriter;imp...
2019-06-03 14:30:13
352
原创 mybatis框架学习(3) - 开启事务
事务一个使用 MyBatis-Spring 的其中一个主要原因是它允许 MyBatis 参与到 Spring 的事务管理中。而不是给 MyBatis 创建一个新的专用事务管理器,MyBatis-Spring 借助了 Spring 中的 DataSourceTransactionManager 来实现事务管理。一旦配置好了 Spring 的事务管理器,你就可以在 Spring 中按你平时的方...
2019-06-01 21:09:45
1248
原创 mybatis框架学习(2) - 整合spring
先引入相关依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=...
2019-05-28 16:51:35
105
原创 设计模式六大设计原则
六大设计原则:总原则:开闭原则:对扩展开放,对修改关闭。1、单一职责原则:拆分接口/类实现单一的职责。2、里氏替换原则:继承,实现“开-闭”原则的关键步骤就是抽象化。3、依赖倒置原则:依赖抽象类而不依赖子类。4、接口隔离原则:接口中存在子类用不到切必须实现的方法,就要将接口拆分。5、迪米特法则:一个类对自己依赖的类知道的越少越好,依赖类提供public直接调用。6、合成...
2018-11-29 19:20:31
221
原创 UML关系箭头总结
泛化(Generalization):继承的关系,实线带三角形箭头,指向父类。实现(Realization):实现的关系,虚线带三角形箭头,指向接口。关联(Association):拥有的关系,实线带普通箭头,指向被拥有者。依赖(Dependency):使用的关系,即一个类的实线需要另一个类的协助。虚线普通箭头,指向被使用者。聚合(Aggregation):整体与部分的关系。实线带...
2018-11-29 19:19:47
3218
原创 JDK8 Lambda学习记录
“Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。/** * 无参数、无返回值,以Runnable为例 */@FunctionalInterf...
2018-11-08 09:52:35
151
原创 mybatis框架学习(1) - helloworld
ORM框架hibernate和mybatis的区别?1)hibernate是全自动ORM框架,而mybatis是半自动ORM框架。在业务复杂的情况下SQL语句会相对复杂,hibernate需要使用hql语句来实现,但是将一大串SQL写在java类中会显得臃肿,mybatis将SQL和java程序解耦解决了这类问题。在业务不复杂的情况下使用hibernate开发效率相对较高。2)hibern...
2018-08-22 00:59:27
137
原创 springboot集成druid数据源
springboot默认使用Hikari数据源,只需要在application.properties配置# rbac databasespring.datasource.rbac.driver-class-name=com.mysql.jdbc.Driverspring.datasource.rbac.url=jdbc:mysql://xxxxxxxxxxxxxxxxxxspring....
2018-08-08 09:35:46
219
原创 springboot配置profiles
在项目中,分生产、测试、开发环境等,所以profile配置是必不可少的。springboot配置profiles只需要两步。1、application.properties加上profiles配置spring.profiles.active=prod2、新增 application-prod.properties这样就可以自由切换配置。...
2018-08-07 22:44:02
352
原创 Springboot集成Swagger接口发布工具
今天试了一下传说中的Swagger,与springboot整合了一下非常简单。添加maven插件,当然也有可能有springboot的swagger插件,其实也就是包含这两个。<!-- springfox swagger2 --><dependency> <groupId>io.springfox</groupId> ...
2018-08-01 22:15:04
343
原创 SQL表连接
常用的表连接有:LEFT JOIN、RIGHT JOIN、CROSS JOIN、INNER JOIN、FULL JOIN表连接相当于N*M行的基础上扩展,即A表N行,B表M行。当有ON 或者 WHERE条件就在N*M行数据中过滤筛选。笛卡尔积了解一下。LEFT JOIN: 左外连接(A表行 * B表行 ON条件过滤) + (A表非交集连接B表空行)RIGHT JOIN:右外连接,(...
2018-07-31 00:43:54
663
原创 hibernate事务场景持久化操作区别
hibernate对象的三种状态:其中 get、save、update、delete、saveOrUpdate操作都是顾名思义的方法。load、persist、merge、saveOrUpdate是hibernate作者新增的几个方法,功能和前面几个相似,但是却又有不同的意义。在有事务的场景下处理持久化操作:一、load 和 get 区别1)load只有在需要用到查询对象时才会发出SQL语句,返回...
2018-05-06 14:17:21
134
原创 Spring Boot 自动配置
在Spring中假设我们要使用一个数据源,必须在配置DataSource才能使用,但是使用了Spring Boot这些就不存在了,相当于Spring Boot为我们做了很多配置的工作。Spring 4提供了一个更通用的基于条件的Bean的创建方式,即使用@Conditional(实现Condition.class)注解。以下Spring Boot自定义的条件化注解,它们定义了Condition的扩...
2018-04-22 22:25:26
168
原创 redis集群搭建
1、到官网下载Redis版本,我下载的是4.0.9当前最新版本,3.0版本以上才支持集群。2、到官网下载Ruby,我下载的是2.3.7版本,必须下载2.2.2版本以上不然使用集群脚本的时候会提示 requires Ruby version >= 2.2.2。如果使用apt-get install rubygems 命令还需要升级ruby,所以我选择使用tar.gz包的方式安装。3、解压Red...
2018-04-17 00:35:51
295
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人