4 加油吧丶学渣

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 3w+

浅谈设计模式-状态模式

Intent允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它所属的类。Class DiagramImplementation糖果销售机有多种状态,每种状态下销售机有不同的行为,状态可以发生转移,使得销售机的行为也发生改变。public interface State { /** * 投入 25 分钱 */ void insertQuarter(); /** * 退回 25 分钱 */ .

2020-07-07 19:17:52

浅谈设计模式-策略模式

Intent定义一系列算法,封装每个算法,并使它们可以互换。策略模式可以让算法独立于使用它的客户端。Class DiagramStrategy 接口定义了一个算法族,它们都实现了 behavior() 方法。 Context 是使用到该算法族的类,其中的 doSomething() 方法会调用 behavior(),setStrategy(Strategy) 方法可以动态地改变 strategy 对象,也就是说能动态地改变 Context 所使用的算法。与状态模式的比较 ..

2020-07-07 17:03:06

浅谈设计模式-单例模式

Intent 确保一个类只有一个实例,并提供该实例的全局访问点。Class Diagram 使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现。 私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。ImplementationⅠ 懒汉式-线程不安全 以下实现中,私有静态变量 uniqueInstance 被延迟实例化,这样做的好处是,如果没有用到该类,那么就...

2020-07-07 14:35:43

浅谈设计模式-工厂模式

简单工厂Intent 在创建一个对象时不向客户暴露内部细节,并提供一个创建对象的通用接口。Class Diagram 简单工厂把实例化的操作单独放到一个类中,这个类就成为简单工厂类,让简单工厂类来决定应该用哪个具体子类来实例化。 这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类。客户类往往有多个,如果不使用简单工厂,那么所有的客户类都要知道所有子类的细节。而且一旦子类发生改变,例如增加子类,那...

2020-07-07 14:22:00

虚拟机类加载机制

虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被Java虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。类从被加载到虚拟内存中开始,到卸载内存为止,它的整个生命周期包括了:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)七个阶段。其中,验证,准备和解析三个部分统称为连接(Linking)。

2020-07-06 14:45:10

Java反射基本介绍和简单使用

概述定义JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。用途在日常的第三方应用开发过程中,经常会遇到某个类的某个成员变量、方法或是属性是私有的或是只对系统应用开放,这时候就可以利用Java的反射机制通过反射来获取所需的私有成员或是方法。当然,也不是所有的都适合反射,之前就遇到一个案例,通过反射得到的结果与预期不符。阅读源码发现,经过层层调用后

2020-07-01 19:00:26

通过传入的实体更改实体属性的值或者更改实体属性的数据格式(通过反射获取实体的属性的数据类型来判断)

package com.lingmahui.purchase.common.util;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.math.BigDecimal;import java.text.DecimalFormat;import java.util.Date;import ja.

2020-07-01 16:03:38

mysql中将多行数据合并成一行数据,通过GROUP_CONCAT函数

一个字段可能对应多条数据,用mysql实现将多行数据合并成一行数据例如:一个活动id(activeId)对应多个模块名(modelName),按照一般的sql语句:1 SELECT am.activeId,m.modelName 2 FROM activemodel am 3 JOIN model m 4 ON am.modelId = m.modelId 5 ORDER BY am.activeId查询出的列表为图1所示:修改过后的sql语句,查询后如图2所示:1 S

2020-06-19 13:41:18

Java打印Sql语句到控制台

mybatis打印SQL到控制台mybatis: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl如果上面这段无法生效,则使用下面这段配置到配置文件中打印SQL到控制台logging: level: root: debug org: springframework: web: warn mybatis: debug...

2020-06-16 16:09:59

java文件断点续传的简单实现

前段时间因为任务需要本人这个java渣渣开始研究如何用java实现简单的文件断点续传。所谓的文件断点续传,我的理解是文件在传输过程中因为某些原因程序停止运行文件终止传输,下一次重新传输文件的时候还能从上一次传输的位置开始传输,而不需要重新从头开始。文件传输的过程分为发送方和接收方,最终我的思路是这样的:传输开始之前发送方先向接收方发送一个确认信息,...

2020-06-15 17:52:21

基于springboot的多数据源配置

简介dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。其支持Jdk 1.7+, SpringBoot 1.4.x 1.5.x 2.0.x。示例项目可参考项目下的samples目录。特性数据源分组,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。 内置敏感参数加密和启动初始化表结构schema数据库database。 提供对Druid,Mybatis-Plus,P6sy,Jndi的快...

2020-06-11 15:51:44

Redis常识

前言Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。普遍用于目前主流的分布式架构系统中,关于redis的详细介绍,见另一篇文章:Redis有哪些数据结构?字符串String、字典Hash、列表List、集合Set、有序集合SortedSet。如果你是Redis中高级用户,还需要加上下面几种数据结构HyperLogLog、Geo、Pub/Sub。如果你说还玩过Redis Module,像Bloo.

2020-06-11 15:19:36

Redis实现分布式锁是否安全?

如何评价Redis实现的分布式锁?前言分布式锁我认为是分布式架构中非常重要的一环,是所有分布式架构和微服务实现的基础。即使是单体的JAVA WEB架构集群后也...

2020-06-11 14:52:58

java并发的处理方式

java并发的处理方式 1 什么是并发...

2020-06-10 15:54:49

mysql delete报错问题解决

在MySQL中,写SQL语句的时候 ,可能会遇到You can't specify target table '表名' for update in FROM clause这样的错误,它的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中),即不能依据某字段值做判断再来更新某字段的值。1、数据准备product表数据如下:laptop表数据如下:2、要求:#删除所有不生产打印机厂商生产的笔记本电脑第一步:对aptop表进行操作操作没有问题,按照本

2020-06-05 13:47:55

ReentrantReadWriteLock (读写锁)的使用

ReentrantReadWriteLock 是一个锁对象,他支持读数据锁和写数据锁;适合的使用场景1. 多线程环境2. 并且共同访问同一个资源数据3. 要求可以共享读数据,同时读4. 不能同时写数据注意事项读操作可以多线程同时一起读数据 但在写的时候,多个线程只能有一个线程在写,并且写的同时不允许去读数据使用方式 public static void main(String[] args) { //创建并发访问的账户 MyCount .

2020-05-28 11:22:10

ReentrantLock的使用

一、初识ReentrantLock(ReentrantLock 实现了Lock interface)import java.util.concurrent.locks.ReentrantLock;/** * Created by haicheng.lhc on 17/05/2017. * * @author haicheng.lhc * @date 2017/05/17 */public class ReentrantLockTest extends Thread { pu.

2020-05-28 11:09:26

@Cacheable的使用总结

Cacheable的使用总结 @Override @Cacheable(cacheNames = "CategoryListByParentId", key = "#parentId") public List<Category> listByParentId(Long parentId) { return categoryMapper.listByParentId(parentId,0l); }其中value表示该方法返回的参数的缓存存在那个Cache里(即为缓存块的名..

2020-05-26 18:08:37

SpringBoot @Cacheable注解的属性使用

cacheNames和value指定缓存组件的名字,通过下面代码可以看出可以将返回结果放在哪个缓存中,可以通过数组的方式指定多个缓存 一般标准在有返回实体得方法上,表示第一次进来,如果从指定缓存得名字获取数据,如果获取为空,就从方法得具体实现获取,第二次进来,就获取就直接获取缓存名称为CategoryListByParentId得值,key得parentId作为条件值缓存中查询 /** * Alias for {@link #cacheNames}. *...

2020-05-26 18:03:28

@Cacheable的实现原理

如果你用过Spring Cache,你一定对这种配置和代码不陌生:<cache:annotation-driven cache-manager="cacheManager"proxy-target-class="true"order="1"/>@Cacheable(value = "3600", key = "i'm a cache key")public List<Object> getData(){} ...

2020-05-26 17:48:59

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。