自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (1)
  • 收藏
  • 关注

原创 稀疏数组

稀疏数组实际的需求问题分析基本介绍处理方法举例说明思路二维数组转换成稀疏数组稀疏数组转换成二维数组实际的需求编写一个五子棋程序 使用二维数组 1代表黑子 2代表蓝子 0代表空白处问题分析如上图所示,该二维数组的很多值默认都是0,因此记录了很多没有意义的数据。可以用稀疏数组解决上面的问题\color{blue}{如上图所示,该二维数组的很多值默认都是0,因此记录了很多没有意义的数据。可以用稀疏数组解决上面的问题}如上图所示,该二维数组的很多值默认都是0,因此记录了很多没有意义的数据。可以用稀疏数组解

2021-02-01 00:29:12 109

原创 AOP原理

AOP原理1.@EnableAspectJAutoProxy2.AnnotationAwareAspectJAutoProxyCreatorAbstractAutoProxyCreator看给容器当中注入了什么组件?这个组件的功能是什么,什么时候开始工作?1.@EnableAspectJAutoProxy@EnableAspectJAutoProxy开启基于注解的AOP @Import(AspectJAutoProxyRegistrar.class) 为容器中注册bean AspectJA

2021-01-09 12:53:02 121

原创 AOP

AOP案例代码实现动态代理:指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式\color{blue}{ 动态代理:指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式}动态代理:指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式案例MathCalculator.div()方法执行时打印执行之前、结束之后等等环节的日志实现步骤:\color{red}{ 实现步骤:}实现步骤:1.导入aop模块 可以直接在pom当中引入spring-a

2021-01-05 23:17:27 103

原创 @Profile

@Profile案例:根据不同的环境注册不同的数据源信息源码实现Spring为我们提供的可以根据当前环境,动态的激活和切换一系列组件的功能。指定组件在哪个环境的情况下才能被注册到容器中,不指定,任何环境下都能注册这个组件案例:根据不同的环境注册不同的数据源信息源码实现配置类@PropertySource("classpath:/dbconfig.properties")@Configurationpublic class MainConfigOfProfile implements Embe

2021-01-05 22:50:53 343

原创 自动装配

自动装配自动装配1.@Autowired 自动注入代码实现Spring利用依赖注入(DI),完成对IOC容器中各个组件的依赖关系赋值\color{blue}{ Spring利用依赖注入(DI),完成对IOC容器中各个组件的依赖关系赋值}Spring利用依赖注入(DI),完成对IOC容器中各个组件的依赖关系赋值自动装配1.@Autowired 自动注入代码实现1)、默认优先按照类型去容器中找对应的组件:applicationContext.getBean(BookDao.class);找到就赋值

2021-01-03 20:28:06 298 1

原创 属性赋值

属性赋值使用@Value注解代码实现使用@Value注解1.基本数值2.可以写SpEL #{}3.可以写${} 取出配置文件当中的值代码实现@Datapublic class Person { @Value("ly") private String name; @Value("#{20-2}") private Integer age; @Value("${person.nickName}") private String nickName;

2021-01-02 12:43:48 102

原创 bean生命周期

bean生命周期1.指定初始化和销毁方法代码实现1.指定初始化和销毁方法代码实现@ComponentScan("com.ly.springannotation.bean")@Configurationpublic class MainConfigOfLifeCycle { @Bean(initMethod = "init", destroyMethod = "destroy") public Car car() { return new Car(); }

2021-01-01 17:43:35 226 1

原创 组件注册

组件注册1.@Configuration+@Bean给容器当中注册组件代码实现2.@ComponentScan自动扫描组件代码实现1.@Configuration+@Bean给容器当中注册组件代码实现@Configuration:告诉Spring这是一个配置类\color{blue}{@Configuration:告诉Spring这是一个配置类}@Configuration:告诉Spring这是一个配置类@Configurationpublic class MainConfig { /**

2021-01-01 11:21:26 335 1

原创 代理模式

代理模式代理模式基本介绍1.静态代理基本介绍图解实现静态代理优缺点2.动态代理3.cglib代理代理模式基本介绍代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理 对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的 功能操作,即扩展目标对象的功能。被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象代理模式有不同的形式, 主要有三种 静态代理、动态代理 (JDK代理、接口代 理)和 Cglib代理 (可以在内存动态的创建对象,而不需要实现接口,

2020-12-26 18:30:29 80

原创 工厂模式

工厂模式传统案例传统的方式的优缺点传统案例@Datapublic class OrderPizza { public OrderPizza() { Pizza pizza = null; /** * 订购披萨的类型 */ String orderType; do { //获取订购披萨的类型 orderType = getType();

2020-12-23 23:17:40 97

原创 类与类之间的关系

类与类之间的关系1.依赖基本介绍类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合1.依赖基本介绍只要是在类中用到了对方,那么他们之间就存在依赖关系。如果没有对方,连编绎都通过不了。...

2020-12-23 22:21:42 1191 1

原创 设计模式7大原则

设计模式7大原则1.单一职责原则2.接口隔离原则3.依赖倒转(倒置原则)4.里氏替换原则5.开闭原则6.迪米特法则7.合成复用原则1.单一职责原则2.接口隔离原则3.依赖倒转(倒置原则)4.里氏替换原则5.开闭原则6.迪米特法则7.合成复用原则...

2020-12-21 19:59:41 112

原创 jvm-运行时数据区

jvm-运行时数据区本地方法区结构图本地方法区结构图链接地址:\color{red}{链接地址: }链接地址: https://www.processon.com/diagraming/5f0c8194f346fb2bfb21dbc2

2020-12-21 19:42:53 45

原创 jvm--类加载子系统

jvm-类加载系统类加载子系统流程图类加载子系统作用类加载子系统流程图类加载子系统作用1:负责从文件系统或者网络中加载Class文件,Class文件开头有特定标识。\color{red}{ 1:负责从文件系统或者网络中加载Class文件,Class文件开头有特定标识。}1:负责从文件系统或者网络中加载Class文件,Class文件开头有特定标识。2:Classloader只负责class文件的加载,至于是否可运行,则由执行引擎决定。\color{red}{ 2: Classloader只负责cl

2020-12-21 19:42:28 70

原创 单例模式

运算符单例模式创建方式饿汉式(静态常量)创建步骤优点缺点结论单例模式创建方式饿汉式(静态常量)饿汉式(静态代码块)懒汉式(线程不安全)懒汉式(线程安全 同步方法)懒汉式(线程安全 同步代码块)双重检查静态内部类枚举饿汉式(静态常量)创建步骤构造器私有化(防止new)类的内部创建对象向外暴露一个静态的公共方法代码实现class StaticVariableSingleton { /** * 1.构造器私有化, 外部不能new */

2020-12-20 15:34:50 247 3

原创 java基本语法--运算符

运算符算术运算符赋值运算符符号:=扩展运算符:+=, -=, *=, /=, %=比较运算符(关系运算符)逻辑运算符“&”和“&&”的区别:“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。位运算符左移右移其他三元运算符运算符优先级运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等算术运算符赋值运算符符号:=当“=”两侧数据类型不一致时,可以使用自动类型转换或使用

2020-12-10 00:52:03 131

原创 集合-Map

集合--Map集合框架MapMap的理解HashMap底层源码分析HashMap JDK1.7源码分析HashMap JDK1.8源码当中的变化LinkedHashMap 源码分析集合框架Map双列数据、存储key-value -->类似于高中的函数:y=f(x)1.HashMap:Map的主要实现类。线程不安全的,执行效率高。可以存储null的key和value\color{red}{1.HashMap:Map的主要实现类。线程不安全的,执行效率高。可以存储null的key和value

2020-12-08 23:27:04 82

原创 集合-List

集合--ListList接口框架List接口框架Collection接口:单列集合,用来存储一个一个的对象List接口:存储有序的、可重复的数据。−−>“动态”数组,替换原有的数组\color{red}{List接口:存储有序的、可重复的数据。 -->“动态”数组,替换原有的数组}List接口:存储有序的、可重复的数据。−−>“动态”数组,替换原有的数组1.ArrayList作为List接口的主要实现类,线程不安全的,执行效率高。底层使用Object[]elementData存储

2020-12-07 22:34:21 67

原创 多线程-创建与使用

多线程-创建与使用创建方式1 继承Thread类的方式2 实现Runnable接口的方式3 实现Callable接口 jdk5.0新增4 线程池创建方式1 继承Thread类的方式2 实现Runnable接口的方式3 实现Callable接口 jdk5.0新增4 线程池...

2020-12-03 08:38:06 72

原创 多线程-程序 进程 线程

多线程-基本概念程序 进程 线程一 程序(program)二 进程(process)三 线程(thread)并行与并发程序 进程 线程一 程序(program)程序(program)是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。二 进程(process)是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程。——生命周期如:运行中的QQ,运行中的MP3播放器程序是静态的,进程是动态的进程作为资源分配的单位,系统

2020-12-02 23:45:17 76

原创 类的加载

类的加载当程序要使用某一个类时,如果该类还没有被加载到内存里面,则系统会通过加载、连接、初始化来实现对这个类进行初始化。加载 - 就是指将class文件读入内存,并为之创建一个Class对象。 - 任何类被使用时系统都会建立一个Class对象连接 1. 验证 是否有正确的内部结构,并和其他类协调一致 2. 准备 负责为类的静态成员分配内存,并设置默认初始化值 3. 解析 将类...

2018-10-28 21:31:33 61

原创 多态

多态同一个对象(事物),在不同的时刻体现的不同状态。举例:猫是猫 猫同时也是动物。水(液体、固体、气态)多态的前提A:要有继承关系B:要有方法重写C:要有父类引用指向子类的对象 父 f =new 子();多态中成员访问特点 A:成员变量 编译看左边,运行看左边。 B:构造方法 创建子类对象的时候,访问父类的构造方法,...

2018-09-25 08:44:45 98

原创 java虚拟机内存管理

线程共享区:线程是一个顺序的执行单元 多个线程共享着同一块区域   --堆:存储对象的实例    --方法区:线程独占区:   --虚拟机栈   --本地方法栈   --程序计数器  记录当前线程多执行的字节码的行数...

2018-04-08 22:18:19 85

原创 内存管理--对象创建--给对象分配内存

init实际指的是静态代码块和构造方法等等堆是否规整是由垃圾回收策略决定的堆: 内存分配是不规整的  --指针碰撞  内存分配是规整  内存不规整的不可以用指针碰撞内存分配是不规整的---虚拟机需要的是要一个表进行记录已经使用过的地址和使用过的地址---称之为空闲列表...

2018-04-08 22:11:59 262

原创 IDEA和eclipse 格式化同步之IDEA

转至元Eclipse、Intellij idea代码格式化结果不一样,如果开发同一个项目时可能会有代码格式上的冲突。要解决这个问题,idea和eclipse都需要调整下。下面是idea需要配置的操作,eclipse的操作见 IDEA和eclipse 格式化同步之eclipse。 1,安装插件Eclipse Code Formatter:硬盘安装:Setting =>Plugins=>I...

2018-03-28 20:19:35 982

原创 String s = new String(“hello”)和String s = “hello” 的区别

/* * String s = new String(“hello”)和String s = “hello”;的区别? * 有。前者会创建2个对象,后者创建1个对象。 *  * ==:比较引用类型比较的是地址值是否相同 * equals:比较引用类型默认也是比较地址值是否相同,而String类重写了equals()方法,比较的是内容是否相同。 */public class StringDemo2 ...

2018-03-26 23:09:48 296

原创 String 一旦被赋值,就不能改变 原理

/** * 字符串的特点:一旦被赋值,就不能改变。 */public class StringNotChange { public static void main(String[] args) { String s = "hello"; s += "world"; System.out.println("s:" + s); // he...

2018-03-26 22:56:47 1872

原创 git创建秘钥

生成ssh秘钥$ git config --global user.name "luoyong"$ git config --global user.email "xx@mail.com"  ##填写自己的邮箱3、生成ssh密钥$ ssh-keygen -t rsa -C "xx@mail.com" //直接按3次回车选择无密码4、添加私钥到ssh$ eval $(ssh-agent -s) //...

2018-03-26 21:33:18 564

原创 Dozer实践--对象值转化

import java.util.Collection;import java.util.List;import org.dozer.DozerBeanMapper;import com.google.common.collect.Lists;/** * 封装并持有Dozer单例,深度转换Bean<->Bean的Mapper,实现: 1. 转换对象的类型 2. 转换Co...

2018-03-26 15:38:24 495

原创 mybatis 批量增删改

<insert id="saveOrUpdate" parameterType="com.zhongan.crm.dataobject.TContactPerson">insert into t_contact_person ( <include refid="FieldsOfTContactPersonWithoutId" />) values ( #{c...

2018-03-21 17:16:40 164

原创 mybatis union和 choose 实例

selecttu.id as "userOid","1" as "teamMamger",tu.name as "userName",tu.phone_number as "phone",tu.email as "email",tdi.name as "teamName"from t_customer_info tcileft join t_user t

2018-03-21 17:09:41 514

原创 Mybatis foreach 请求参数是对象集合

需求 参数是对象集合/** * 查询对应客户的联系人信息 * @param qeury * @return */public List<CustomerContactInfoList> getCustomerContactInfoList(List<CustomerContactInfoList> qeury);对应实现<select id="getCu...

2018-03-19 09:27:09 9997

原创 Bean的其他配置 id和name的区别

id遵守XML约束的id的约束.id约束保证这个属性的值是唯一的,而且必须以字母开始,可以使用字母、数字、连字符、下划线、句话、冒号name没有这些要求***** 如果bean标签上没有配置id,那么name可以作为id.***** 开发中Spring和Struts1整合的时候, /login.<bean name=”/login” class=””> 现在的开发中都使用id属性即可....

2018-03-16 21:08:57 193

原创 IOC和DI(*****)区别

IOC:控制反转:将对象的创建权,由Spring管理.DI:依赖注入:在Spring创建对象的过程中,把对象依赖的属性注入到类中.* 面向对象中对象之间的关系;* 依赖:public class A{private B b;}* 继承:is a* 聚合:* 聚集:* 组合:...

2018-03-16 21:06:21 165

原创 Spring框架加载配置文件

ApplicationContext 应用上下文,加载Spring 框架配置文件加载classpath:     new ClassPathXmlApplicationContext("applicationContext.xml");:加载classpath下面配置文件.加载磁盘路径:     new FileSystemXmlApplicationContext("applicationCon...

2018-03-16 21:03:56 198

原创 BeanFactory与ApplicationContext区别

ApplicationContext类继承了BeanFactory.BeanFactory在使用到这个类的时候,getBean()方法的时候才会加载这个类.ApplicationContext类加载配置文件的时候,创建所有的类.ApplicationContext对BeanFactory提供了扩展:* 国际化处理* 事件传递* Bean自动装配* 各种不同应用层的Context实现***** 早期...

2018-03-16 21:02:51 117

原创 mybatis数据分布式缓存

将缓存数据数据进行分布式管理。

2018-03-16 20:54:04 264

原创 MySQL查询近一个月的数据

elect user_id,user_name,createtimefromt_userwhere DATE_SUB(CURDATE(), INTERVAL 1 MONTH) <= date(createtime);同理,近一个星期为: INTERVAL 7 DAY。

2018-03-16 09:37:45 896

原创 mysql 存储 emoji报错( Incorrect string value: '\xF0\x9F\x98\x84\xF0\x9F)的解决方案-布布扣-bubuko.com

1.报错原因:mysql utf-8 编码储存的是 2-3个的字节,而emoji则是4个字节。2.解决办法:修改mysql的配置文件,windows下的为my.ini(linux下的为my.cnf),修改的内容都一样。[client]default-character-set = utf8mb4[mysql]default-character-set = utf8mb4[mysqld]charac...

2018-03-16 09:34:54 298

原创 SQL语句执行顺序

查询语句中select from where group by having order by的执行顺序 1.查询中用到的关键词主要包含六个,并且他们的顺序依次为 select--from--where--group by--having--order by  其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序 与sql语句的书写顺序并不是一样的,而是按照下面的顺序来执...

2018-03-16 09:33:09 96

空空如也

空空如也

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

TA关注的人

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