Coderyeah🍉
生成订单编号的工具类
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778package io.coderyeah.basic.util;import java.math.BigDecimal;import java.text.SimpleDateFormat;import java.util.Calendar;public class CodeGenerateUtils { /** * 获取商品编码 * 商品编码规则:nanoTime(后5位)*5位随机数(10000~99999) * @return */ public static String generateProductCode(){ long nanoPart = System.nanoTime() % 100000L; if ...
设计一个上下拖动分割窗口
一. 效果展示 二.自定义组件split-spane123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147<template> <div ref="splitPane" class="split-pane" :class="direction" :style="{ flexDirect ...
设计模式之适配器模式
一.模式动机 在软件开发中采用类似于电源适配器的设计和编码技巧被称为适配器模式。 通常情况下,客户端可以通过目标类的接口访问它所提供的服务。有时,现有的类可以满足客户类的功能需要,但是它所提供的接口不一定是客户类所期望的,这可能是因为现有类中方法名与目标类中定义的方法名不一致等原因所导致的。 在这种情况下,现有的接口需要转化为客户类期望的接口,这样保证了对现有类的重用。如果不进行这样的转化,客户类就不能利用现有类所提供的功能,适配器模式可以完成这样的转化。 在适配器模式中可以定义一个包装类,包装不兼容接口的对象,这个包装类指的就是适配器(Adapter),它所包装的对象就是适配者(Adaptee),即被适配的类。 适配器提供客户类需要的接口,适配器的实现就是把客户类的请求转化为对适配者的相应接口的调用。也就是说:当客户类调用适配器的方法时,在适配器类的内部将调用适配者类的方法,而这个过程对客户类是透明的,客户类并不直接访问适配者类。因此,适配器可以使由于接口不兼容而不能交互的类可以一起工作。这就是适配器模式的模式动机。 二.模式定义适配器模式(Adapter Pattern) :将一 ...
设计模式之建造者模式
一.模式动机无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮、方向盘、发送机等各种部件。而对于大多数用户而言,无须知道这些部件的装配细节,也几乎不会使用单独某个部件,而是使用一辆完整的汽车,可以通过建造者模式对其进行设计与描述,建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部的具体构造细节。 在软件开发中,也存在大量类似汽车一样的复杂对象,它们拥有一系列成员属性,这些成员属性中有些是引用类型的成员对象。而且在这些复杂对象中,还可能存在一些限制条件,如某些属性没有赋值则复杂对象不能作为一个完整的产品使用;有些属性的赋值必须按照某个顺序,一个属性没有赋值之前,另一个属性可能无法赋值等。 复杂对象相当于一辆有待建造的汽车,而对象的属性相当于汽车的部件,建造产品的过程就相当于组合部件的过程。由于组合部件的过程很复杂,因此,这些部件的组合过程往往被“外部化”到一个称作建造者的对象里,建造者返还给客户端的是一个已经建造完毕的完整产品对象,而用户无须关心该对象所包含的属性 ...
设计模式之简单工厂模式
一.模式动机考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮、矩形按钮、菱形按钮等), 这些按钮都源自同一个基类,不过在继承基类后不同的子类修改了部分属性从而使得它们可以呈现不同的外观,如果我们希望在使用这些按钮时,不需要知道这些具体按钮类的名字,只需要知道表示该按钮类的一个参数,并提供一个调用方便的方法,把该参数传入方法即可返回一个相应的按钮对象,此时,就可以使用简单工厂模式。 二.模式定义简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 三.模式结构简单工厂模式包含如下角色: Factory:工厂角色 工厂角色负责实现创建所有实例的内部逻辑 Product:抽象产品角色 抽象产品角色是所创建的所有对象的父类,负责描述所有实例所共有的公共接口 ConcreteProduct:具体产品角色 具体产品角色是创建目 ...
设计模式之工厂方法模式
一.模式动机现在对该系统进行修改,不再设计一个按钮工厂类来统一负责所有产品的创建,而是将具体按钮的创建过程交给专门的工厂子类去完成,我们先定义一个抽象的按钮工厂类,再定义具体的工厂类来生成圆形按钮、矩形按钮、菱形按钮等,它们实现在抽象按钮工厂类中定义的方法。这种抽象化的结果使这种结构可以在不修改具体工厂类的情况下引进新的产品,如果出现新的按钮类型,只需要为这种新类型的按钮创建一个具体的工厂类就可以获得该新按钮的实例,这一特点无疑使得工厂方法模式具有超越简单工厂模式的优越性,更加符合“开闭原则(OCP: Open-Closed Principle):一个软件的实体应当对扩展开放,对修改关闭)。 二.模式定义工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确 ...
设计模式之单例模式
一.模式动机对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。 如何保证一个类只有一个实例并且这个实例易于被访问呢?定义一个全局变量可以确保对象随时都可以被访问,但不能防止我们实例化多个对象。 一个更好的解决办法是让类自身负责保存它的唯一实例。这个类可以保证没有其他实例被创建,并且它可以提供一个访问该实例的方法。这就是单例模式的模式动机。 二.模式定义单例模式(Singleton Pattern):单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。 单例模式的要点有三个:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。单例模式是一种对象创建型模式。单例模式又名单件模式或单态模式。 三.模式结构单例模式包含如下角色: Singleton:单例 四.代码示例 单例模式-饿汉模式 饿汉式在类创建的同时就已经创建好一个静态的对象供系统 ...
设计模式之抽象工厂模式
一.模式动机 在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法也具有唯一性,一般情况下,一个具体工厂中只有一个工厂方法或者一组重载的工厂方法。但是有时候我们需要一个工厂可以提供多个产品对象,而不是单一的产品对象。 为了更清晰地理解工厂方法模式,需要先引入两个概念: 产品等级结构 :产品等级结构即产品的继承结构,如一个抽象类是电视机,其子类有海尔电视机、海信电视机、TCL电视机,则抽象电视机与具体品牌的电视机之间构成了一个产品等级结构,抽象电视机是父类,而具体品牌的电视机是其子类。 产品族 :在抽象工厂模式中,产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品,如海尔电器工厂生产的海尔电视机、海尔电冰箱,海尔电视机位于电视机产品等级结构中,海尔电冰箱位于电冰箱产品等级结构中。 当系统所提供的工厂所需生产的具体产品并不是一个简单的对象,而是多个位于不同产品等级结构中属于不同类型的具体产品时需要使用抽象工厂模式。 抽象工厂模式是所有形式的工厂模式中最为抽象和最具一般性的一种形态。 抽象工厂模式与工厂方法模式最大的区别在于,工厂方法 ...
如何在项目中使用百度地图API进行地理位置选择?
一. 项目需求(举例)寻主功能需要推送离用户最近的线下门店,系统需要将用户的输入的地址解析为经纬度。再通过经纬度计算哪一家店铺离用户地址最近。 实现地址输入提示,手动输入的地址不完整。 二. 百度地图开发平台百度地图提供了很多开发的api,方便开发者接入到自己应用中。我们根据用户注册的地址,在百度地图进行标注,方便系统管理员管理 主站地址:http://lbsyun.baidu.com/ 注册成功申请成为开发者后,创建应用-申请AK 1234应用名称:项目名应用类型:浏览器端启用服务:全选,特别是逆地址白名单:* - 表示所有网址都可以访问 测试地图功能 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273<!DOCTYPE html><html><head> <meta http-equiv="Cont ...
如何使用短信验证码完成注册功能
一. MD5加密工具类12345678910111213141516171819202122232425262728293031323334import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;/** * 密码加密工具 */public class Md5Utils { /** * 加密 * @param context */ public static String encrypByMd5(String context) { try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(context.getBytes());//update处理 byte [] encryContext = md.digest();//调用该方法完成计 ...
如何使用百度AI智能审核
一. 什么是自动审核针对图像、文本、语音、视频等多媒体内容,提供全方位的审核能力,覆盖涉政、涉黄、涉恐、恶意推广、低质灌水等内容自动鉴别。 以上的功能需要使用到图像识别功能。如果要自己实现是需要花费大量的时间以及人力。我们项目里面可以直接使用第三方提供的功能百度AI 的内容审核功能https://ai.baidu.com/solution/censoring 百度AI的内容审核功能:https://ai.baidu.com/solution/censoringAPI文档:https://ai.baidu.com/ai-doc/ANTIPORN/Rk3h6xb3i ps:需要自自完成注册和创建应用 二. 使用自动审核功能 第一步:获取 access_token 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879package com.baid ...
如何使用SpringBoot实现excel文件的导入导出呢?
一. 导入和导出导入:将文档中数据导入到内存中,后续可以添加到数据库 导出:将内存中的数据或数据库中查询的数据导出到文档中 注意:这里指的文档通常指的是基本的办公软件:word,excel,ppt。 二. EasyPOI导出数据 easypoi导入/导出excel其实就是domain对象属性和excel列的映射,而easypoi是通过注解的方式来做映射的,学习easypoi其实就是学会使用工具类和掌握它的常用注解. 常见注解 12345@Excel 作用到filed上面,是对Excel一列的一个描述@ExcelCollection 表示一个集合,主要针对一对多的导出,比如一个老师对应多个科目,科目就可以用集合表示@ExcelEntity 表示一个继续深入导出的实体,但他没有太多的实际意义,只是告诉系统这个对象里面同样有导出的字段@ExcelIgnore 和名字一样表示这个字段被忽略跳过这个导导出@ExcelTarget 这个是作用于最外层的对象,描述这个对象的id,以便支持一个对象可以针对不同导出做出不同处理 导包 123456789101112131415<depende ...
avatar
🐟认真摸鱼中
Coderyeah🍉
Future is now 🍭🍭🍭
前往小窝
公告栏
小站资讯
文章数目 :
93
本站总字数 :
28.3w
本站访客数 :
本站总访问量 :
最后更新时间 :
空降评论复制本文地址
随便逛逛昼夜切换阅读模式关于博客美化设置切换全屏打印页面