- 博客(26)
- 收藏
- 关注

原创 设计模式 --Builder 建造者模式
基本每个餐馆都有,但是每个餐馆的味道都不一样,原因是什么呢?同样的KFC做出来的东西,不论是全国哪家店做出来就都一个味,因为KFC内部有很严格的规定,做巨无霸有做巨无霸的流程,必须严格遵守,这样做出来的东西当然一致了。建造者模式的本质和建造楼房是一致的:即流程不变,但每个流程实现的具体细节则是经常变化的。我们熟知的楼歪歪事件,官方的解释就是由于先建立楼房后,再建设停车场造成的,这是典型的建造次序错乱。,builder模式的作用将一个复杂对象的构建与他的表示分离,使用者可以一步一步的构建一个比较复杂的对象。
2023-01-06 17:12:42
1257

原创 设计模式--策略模式
策略模式(Strategy Pattern)属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。其主要目的是通过定义相似的算法,替换if else 语句写法,并且可以随时相互替换。
2022-12-13 10:29:29
1330

原创 玩转单例模式,最简单理解单例模式(看代码带你理解设计模式)
懒汉式这种方式具备很好的 lazy loading,能过在多线程种很好的工作,但是,效率很低,99%情况下不需要通过优点:第一次调用才初始化,避免了内存浪费,具有懒加载的效果缺点:必须加锁 synchronized 才能过保证单例,但是加锁会影响效率 , 反射可以破坏单例结构,可以看测试代码,大家可以跑一下注意: 这里的new LazeMan() 创建对象的时候不是原子性的.
2022-11-28 18:25:11
2731

原创 简单几步,快速实现封装多级树结构对象(Java版)
在Java后台利用递归思路进行构建树形结构数据,返回给前端,能以下拉菜单等形式进行展示。为了简化代码,引入Lombok的Jar包,可省略实体类set()、get()方法。一、树节点数据类二、构建树形类理解思路(个人):1、首先获取所有的根节点(顶级节点),即根节点的parentId = 0。2、根据每一个根节点,与所有节点集合(数据)进行判断,当前节点是否为其下的子节点。3、若是,则递归调用构建树形;若不是,则表明该节点不属于其下子节点。4、应继续循环判断节点父子关系,直到所有节点与根节点判断完毕。三
2022-11-21 14:18:36
3684
转载 订单未支付,30分钟后自动关闭实现方案
我们介绍了11种实现订单定时关闭的方案,其中不同的方案各自都有优缺点,也各自适用于不同的场景中。实现的复杂度上(包含用到的框架的依赖及部署):Redission > RabbitMQ插件 > RabbitMQ死信队列 > RocketMQ延迟消息 ≈ Redis的zset > Redis过期监听 ≈ kafka时间轮 > 定时任务 > Netty的时间轮 > JDK自带的DelayQueue > 被动关闭。
2023-01-13 11:38:24
3683
转载 多线程事务怎么回滚?说用 @Transactional 可以回去等通知了!
2.在spring中可以使用@Transactional注解去控制事务,使出现异常时会进行回滚,在多线程中,这个注解则不会生效,如果主线程需要先执行一些修改数据库的操作,当子线程在进行处理出现异常时,主线程修改的数据则不会回滚,导致数据错误。1.最近有一个大数据量插入的操作入库的业务场景,需要先做一些其他修改操作,然后在执行插入操作,由于插入数据可能会很多,用到多线程去拆分数据并行处理来提高响应时间,如果有一个线程执行失败,则全部回滚.删除操作的数据回滚了,数据库中的数据依旧存在,说明事务成功了.
2023-01-13 11:07:14
421
转载 java实现pdf文件的电子签字+盖章+二维码+水印+PDF文件加密的解决方案
今天是1024程序员节,必须得写一篇博客庆祝一下了!九月中旬到十月底,我和同事参加了某个系统的开发,涉及到对PDF的电子签字+盖章+防伪二维码+水印等,我最开始选择使用pageoffice实现PDF的盖章和签字,并且也写了一篇博客来进行详细的介绍(pageoffice实现签名盖章:http://t.csdn.cn/nNxpe),但是出现一个问题,PageOffice支持JAVA、ASP.NET、PHP多种编程开发语言,使开发集成简单高效,事半功倍。让集成PAGEOFFICE的协同办公系统更具价值,但是他是卓
2022-12-06 13:56:57
14515
7
原创 设计模式---原型模式
原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。原型模式包含以下角色:原型模式的克隆分为浅克隆和深克隆Java中的Object类中提供了clone()方法来实现浅克隆。Cloneable接口是Java提供的抽象原型类而实现了Cloneable接口的子实现类就是具体原型类
2022-12-05 10:54:59
2825
原创 mysql 开启 远程连接
安装好 mysql 后,设置远程连接。先看下 用户表的信息注意:这里的 root 账户的 host 的值是 localhost开始修改,执行:修改后:注意:这里的 root 账户的 host 的值变成了 %% 这个百分号表示的意思是任意机器都可以连接,也可以缓存你机器的固定ip。
2022-12-03 02:00:00
2834
原创 设计模式 --- 工厂模式
工厂模式是用工厂方法代替new操作的一种模式。工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量(降低耦合)。
2022-12-02 17:20:46
2764
转载 nginx部署多个静态页面
首先把你的html页面(或者其它格式)上传到服务器,随便建个目录我这里目录是 /usr/development/static/pages再找到你的nginx.conf文件,按照下图配置注意前两个location的区别,一个是root一个是aliasok我话讲完散会本文转自 https://blog.youkuaiyun.com/qq_33709582/article/details/114153472,如有侵权,请联系删除。
2022-11-29 16:57:43
3977
原创 redis设置远程链接
将配置文件中里面的 改成 设置远程访问将配置文件中里面的 那一行注释掉关闭保护模式将本机访问保护模式设置no设置密码设置Redis最大内存添加防火墙规则如果是从网上租的服务器,需要添加添加防火墙规则这里以腾讯云服务器举例进入linux将6379防火墙放开,然后重新连接试试
2022-11-29 15:45:43
2698
原创 过滤器和拦截器的区别
一、拦截器和过滤器的区别二、拦截器和过滤器的代码实现三、总结1、什么是Filter及其作用介绍2、Filter API介绍3、Filter链与Filter生命周期四、拦截器五、过滤器和拦截器的区别1、拦截器(Interceptor)只对action请求起作用 即对外访问路径而过滤器(Filter)则可以对几乎所有的请求都能起作用 包括css js等资源文件2、拦截器(Interceptor)是在Servlet和Controller控制器之间执行而过滤器(Filter)是在请求进入Tomcat容器之后 但是在
2022-11-26 17:00:00
2749
1
转载 Mysql 索引失效场景
前言SQL 写不好 加班少不了 日常工作中SQL 是必不可少的一项技术 但是很多人不会过多的去关注SQL问题。一是数据量小,二是没有意识到索引的重要性。本文主要是整理 SQL失效场景,如果里面的细节你都知道,那你一定是学习能力比较好的人,膜拜~写完这篇文章 我感觉自己之前知道的真的是 “目录” 没有明白其中的内容,如果你能跟着节奏看完文章,一定会有收获,至少我写完感觉思维通透很多,以后百分之九十的 SQl索引问题 和 面试这方面问题都能拿捏两。准备一个数据表作为 数据演示 这里面一共 创建了三个索引联合
2022-11-22 21:00:00
2807
原创 关于list的坑
今天我们主要来说一说List操作在实际使用中有哪些坑,以及面对这些坑的时候我们要怎么解决。在实际的业务开发中,我们通常会进行数组转List的操作,通常我们会使用来进行转换但是在转换基本类型的数组的时候,却出现转换的结果和我们想象的不一致。上代码实际上,我们想要转成的List应该是有三个对象而现在只有一个可以观察到 asList方法 接收的是一个泛型T类型的参数,T继承Object对象所以通过断点我们可以看到把 int数组 整体作为一个对象,返回了一个 「那我们该如何解决呢?」方案一:Java8以上,利用
2022-11-21 16:26:25
2843
原创 mysql知识点总结
mysql知识点总结1.mysql连接2.mysql字符集编码与规则1.mysql连接连接的概念连接的本质是多表相连产生的笛卡尔积结果集驱动表和被驱动表,驱动表只访问一次,被驱动表访问多次内连接,左连接,右连接(inner join,left join, right join)内连接中的WHERE子句和ON子句是等价的左连接和右连接,必须使用ON子句来指出连接条件左连接是指以左边的表为准匹配右边表内容,没内容则null取代连接的原理嵌套循环连接。(for 嵌套的方式)使用索引加快连接
2021-03-02 12:37:35
2847
原创 文件下载&多级文件生成ZIP压缩包
文件下载1.文件下载1.文件下载package io.renren.archives.controller;import cn.hutool.core.util.ObjectUtil;import io.renren.archives.entity.ReUploadFile;import io.renren.archives.service.ReUploadFileService;import io.renren.common.utils.DownFile;import org.sprin
2020-09-18 19:52:24
3032
原创 支付宝手机网页版支付、支付异步回调、退款
微信小程序订单生成支付宝链接至浏览器支付1.场景需求** 最近是做了一款和阿里合作的企业商城,形式是微信小程序。但是和阿里合作模式中,是通过支付宝支付(其中交易比较复杂,不说了)。总之用了手机网页版链接支付 **2.准备工作2.1创建应用2.2配置密钥等信息密钥生成很简单的,这里就不多说了。注意:只有配置完环境以后才能提交审核,审核过就能签约手机网页版支付了2.3签约手机网页版...
2020-05-02 12:01:05
7688
原创 windows nginx出现 was not signaled for 5s
windows nginx出现 was not signaled for 5s1.windows下 nginx 配置ssl的key是不能存储密码的,否则启动时会提示输入密码输入后也启动不起来,会报错:2020/04/21 09:49:09 [alert] 1992#4548: the event “ngx_master_1992” wasnot signaled for 5s解决方案是将...
2020-04-21 11:03:26
6847
2
原创 mysql关于 char、varchar 与 text
关于 char、varchar 与 text 平时没有太在意,一般来说,可能现在大家都是用 varchar。但是当要存储的内容比较大时,究竟是选择 varchar 还是 text 呢?1)char: char 不用多说了,它是定长格式的,但是长度范围是 0~255. 当你想要储存一个长度不足 255 的字符时,Mysql 会用空格来填充剩下的字符。因此在读取数据时,char 类型的数据要进行处...
2020-04-05 13:12:22
1868
原创 java中Long类型和long类型比较
java中Long类型和long类型比较1.0最近在开发中比较两个long类型的值时,遇见明明两个数值都相等,但是结果却是false ,写了demo测试结果确实如此。话不多说,看代码public class Test { public static void main(String[] args) { Long a=12L; Long b = Long....
2020-04-04 19:01:19
5554
原创 BigDecimal用法
关于bigdimical比较大小1.java中对bigdimical比较大小一般用的是bigdemical的compareTo方法;int a = bigdemical.compareTo(bigdemical2);a = 1,表示bigdemical大于bigdemical2;a = 0,表示bigdemical等于bigdemical2;a = -1,表示bigdemical小于bi...
2020-04-01 15:54:46
2928
原创 微信退款报错
微信退款报错:DerInputStream.getLength():lengthTag=111, too big.1.1遇见问题场景最近在开发一款微信企业商城的小程序,需要调用微信支付以及退款接口,证书什么的也都没问题。1.2分析问题如果把证书单独放到某个文件目录下是木有问题的,猜测是否是路径太长导致的呢?在本地测试排除了这个可能性,然后再网上找资料发现该异常时由于证书加载不正确导致,那就...
2020-04-01 15:24:26
2893
转载 Linux常用命令整理
Linux常用命令整理 1.1 cd命令命令格式:cd <路径>意义:cd是change directory 的缩写;cd命令后面跟一个路径,用于切换当前用户所在的...
2020-03-29 12:52:43
2838
原创 Linux下不区分大小写
Linux下不区分大小写一、通过命令查看mysql是否是区分大小写的 show variables like '%case_table%'lower_case_table_names=1(说明是不区分大小写的)lower_case_table_names=0(如上图为0说明区分大小写的)二、修改lower_case_table_names的值为1通过vim编辑器修改/etc/my....
2020-03-28 17:19:26
5197
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人