- 博客(105)
- 资源 (6)
- 收藏
- 关注
原创 java使用Apache POI 操作word文档
我感觉最大的难点就是对Api的熟悉,需要看看源码或者文档。以及利用正则表达式对标题进行匹配。
2025-03-21 19:41:31
1081
原创 oa二开问题
可能原因是办公电脑,硬件不行,用postman 测试过 api的响应时间很快的 用了hutool 和 oa客服封装的方法都进行了测试 还是不行 都是请求速度很慢。没注释掉: 20s。注释掉 发送请求的那一行: 2s-3s。
2025-02-10 16:04:52
305
原创 ecology9接口实现给第三方传输附件下载地址(无需token)
*第二种是走他写好的下载api ddcode这个参数得传 不然就要登录 **
2025-02-08 14:48:34
491
3
原创 Lua脚本基本使用
目录lua的安装:hello luaLua数据类型及使用Lua循环:Lua逻辑判断:Lua函数命名lua官网lua的安装:官网按照他的步骤来即可完成安装hello lua很简单,首先时建立一个lua结尾的脚本然后里面创建代码使用指令进行编译执行即可Lua数据类型及使用Lua循环:Lua逻辑判断:Lua函数命名...
2022-05-31 12:19:45
1733
转载 RabbitMQ高级特性
目录消息的可靠投递confirm 确认模式(针对生产者)return 退回模式(针对生产者)总结:Consumer Ack(针对消费者)手动确认:**Multiple 的解释**Ack小结:消息可靠性总结消费端限流**代码:**小结:TTL队列里面统一过期代码:单独消息过期时间:代码:注意!!:死信队列**基础架构图:**产生原因:代码实现:总结:延迟队列:消息的可靠投递confirm 确认模式(针对生产者)确认模式:步骤:1. 确认模式开启: publisher-confirm-type: c
2022-05-30 09:40:48
1423
原创 RabbitMQ基础
目录基本概念优势与劣势优势1:应用解耦2:异步提速3: 削峰填谷小结:劣势使用建议:常见MQ产品对比RabbitMQ基本介绍:rabbitmq基础架构图6种工作模式安装:图形界面Hello word 模式:Work 模式Pub/Sub模式代码小结:Routing 路由模式代码:通配符模式代码:总结:SpringBoot整合依赖:yaml:配置类:测试代码:基本概念优势与劣势优势1:应用解耦原系统的框架,这样的情况下如果要进行怎增加删除系统,需要对订单系统进行源码的修改。耦合性过高。优化后:
2022-05-27 08:36:45
775
转载 docker的基本使用
目录初识Docker产生背景:基本概念:Centos7安装dockerdocker基本架构:创建镜像:Docker基本命令:镜像常用命令:容器的使用命令:Docker数据卷作用:基本使用数据卷容器:数据卷容器的基本使用:总结:Docker 应用部署MySQL部署:Tomcat部署:Nginx部署:Redis部署:DockerFileDocker镜像的基本原理镜像制作容器转换为镜像**注意**DockerFile案列1:案列2:Docker服务编排:初识Docker产生背景:由于环境的不同可能导致你的项
2022-05-26 12:38:36
732
转载 Redsi-高级篇(分布式缓存)
目录分布式缓存Redis 持久化RDB持久化基本配置:异步底层原理:总结:AOF持久化:存放原理:基本配置:优化策略:RDB&AOF 两者对比:AOF&RDB混合模式:开启配置:基本原理:Redis 主从:如何搭建:数据同步原理:全量同步全量同步总结增量同步:避免全量同步:全量&增量总结:Redis 哨兵机制哨兵作用及原理:总结:哨兵集群的搭建:与Java进行联系Redis分片集群分片的原理:搭建分片集群:散列插槽散列插槽总结:建议看视频,指令过多,一般很少用到分片集群分布式缓存
2022-05-23 21:39:56
806
转载 Redis实际应用4
目录文章的推送Timeline模式拉模式推模式推拉结合模式三种模式的对比推模式的代码实现:看需求:选取的依据:原因解决:代码文章的推送由于智能排序需要算法等 ,该项目只能适用于最简单的Timeline模式Timeline模式拉模式实现思路:就是关注的对象发布了动态,粉丝在去他们的发件箱拉取出来,按时间进行排序,显示到自己的收件箱里面推模式实现思路:博主发布动态直接推给关注了自己的粉丝推拉结合模式实现思路:主要是区分普通粉丝和活跃粉丝,活跃的粉丝采取推的模式(因为拉的模式有延迟
2022-05-17 15:28:14
520
转载 Redis实际应用3
目录Redis优化秒杀原方案的问题流程图:存在的问题:解决方案流程图需求1:新增秒杀优惠券的同时,将优惠券信息保存到Redis中2:基于Lua脚本,判断秒杀库存、一人一单,决定用户是否抢购成功3:如果抢购成功,将优惠券id和用户id封装后存入阻塞队列4:开启线程任务,不断从阻塞队列中获取信息,实现异步下单功能总结Redis优化秒杀原方案的问题流程图:存在的问题:第一点: 这一项业务里面过多的访问了数据的,而数据库在处理并发的时候不是很行,影响性能。第二点: 该业务一条线执行,过于繁琐。列子:你
2022-05-16 12:53:30
304
转载 Redis实际应用2
目录全局唯一ID代码:全局唯一ID下订单 这种情况,如果采用数据库的自增,则会规律明显,所以采用手动的情况下生产id这是id的生产策略,代码:
2022-05-15 19:52:11
1706
原创 开发项目小技巧
目录泛型的使用函数的使用泛型的使用背景:你在封装的时候需要根据传来的数据类型,来进行相应的操作实列:String json 转换成 对应的Object使用:函数的使用背景:你封装的方法,需要使用不同的方法来进行操作例子:比如你要从数据库里面获取数据,就得使用不同的service吧我们可以将调用函数这个方法抛给调用者来完成实列: public <T,ID> T getByID( ID id, Function<ID,T> function){
2022-05-12 20:17:43
444
转载 Java操作Redis
目录Jedisjedis快速入手jedis 线程池SpringDataRedsiRedisTemplate(不推荐)**第一步:**第二步编写测试序列化的问题出现的原因:解决方案:测试:StringRedisTemplate(推荐)针对 string,string得针对string,对象得Jedisjedis快速入手注意导入依赖:<dependency> <groupId>redis.clients</groupId>
2022-05-07 14:52:10
570
原创 Nginx详细攻略
目录Nginx的安装文件讲解:htmlconfig简单案列:现在 开始达到效果配置 nginx:正向与反向代理Nginx的安装安装参考我文件讲解:首先是 Nginx的重要目录的讲解:temple结尾的不是很重要暂时不看了html这个文件夹里面;index就是 你启动Nginx后的欢迎页面的html代码:50是erro是的页面代码config详细的解释 我怕这边推荐菜鸟教程的文档十分详细:我是菜鸟简单案列:首先是 修改 hosts文件路径:C:\Windows\System
2022-05-05 21:07:01
263
原创 红黑树删除详细图解,巨详细
目录写在前面删除的概念情况1删除的节点是叶子节点情况1.1叶子节点是红色情况1.2叶子节点是黑色**以下情况按我写出的顺序进行处理 有优先级的**情况1.2.1兄黑,右红侄情况1.2.2兄黑,左红侄情况1.2.3兄黑,双黑侄情况1.2.4 兄红情况2删除的节点有孩子节点2.1只有左孩子2.2只有右孩子2.3有两个孩子红黑树的生成网址点我写在前面图片的X 代变 删除的节点B 代表他的兄节点P代表父亲节点蓝色代表随便颜色未知可能是红色也可能是黑色删除的概念首先红黑树的删除,与正常的二叉查找树的删
2022-04-27 12:14:25
3351
6
转载 红黑树插入详解(转载)
目录性质:左旋与右旋插入情景1:红黑树为空树情景2:插入结点的Key已存在情景3:插入结点的父结点为黑结点情景4:插入节点的父节点为红色插入情景4.1:叔叔结点存在并且为红结点插入情景4.2:叔叔结点不存在或为黑结点,并且插入结点的父亲结点是祖父结点的左子结点插入情景4.2.1:新插入节点,为其父节点的左子节点(LL红色情况)插入情景4.2.2:新插入节点,为其父节点的右子节点(LR红色情况)插入情景4.3:叔叔结点不存在或为黑结点,并且插入结点的父亲结点是祖父结点的右子结点插入情景4.3.1:新插入节点,
2022-04-26 20:58:39
1287
原创 十分详细的HashMap 源码
目录前置知识重要变量的解释DEFAULT_INITIAL_CAPACITYMAXIMUM_CAPACITYDEFAULT_LOAD_FACTORTREEIFY_THRESHOLDUNTREEIFY_THRESHOLDMIN_TREEIFY_CAPACITY方法开始执行:无参构造创建:有参构建put方法putValue方法resize 初始化或加倍表大小split (扩容时将树进行拆分)untreeify(将节点变成链表)treeify(将节点变成树)treeifyBin(列表进行树化)总结:扩容的条件扩容对
2022-04-23 19:57:52
2983
5
原创 spring-BeanFactory与FactoryBean
目录两者区别:例子:总结为什么要加 &存放的位置补充总结:两者区别:BenaFacory:FactoryBean:在方法上factoryBean 简单许多例子:写好类:关于获取的方法:注意 获取那个 对象如果实现了factoryBean 需要加& 符号才能获取到而直接用name 则会获取到 你实现那个方法的类总结为什么要加 &源码:而我们执行完成后一级缓存里面放的是没有& 的;那为什么 取的时候需要进行加&原因是 取的时候
2022-04-11 21:38:23
470
原创 refresh下initApplicationEventMulticaster源码
目录方法大致前半部分:后半部分方法大致图片代码protected void initApplicationEventMulticaster() { // 获取当前bean工厂,一般是DefaultListableBeanFactory ConfigurableListableBeanFactory beanFactory = getBeanFactory(); // 判断容器中是否存在bdName为applicationEventMulticaster的bd,也就是说自定义的事件监听多
2022-04-08 17:11:58
209
原创 spring源码---refresh下registerBeanPostProcessors
目录方法图片源码执行分析方法图片源码执行分析此方法的内部执行与 上一个方法:invokeBeanFactoryPostProcessors的处理方式非常类似,都是遍历beanfactory里面 按照是否实现了BeanPostProcessor 然后 再根据 是否情况 分为了四种:接下来对所有的进行循环遍历进行分配:然后就是进行排序和注册:至于后面为什么又重复的代码主要是 因为 这两个的集合里面存放的是string后面的代码主要是 根据string 从beanfatory中获取
2022-04-08 11:01:25
449
原创 spring源码---refresh下invokeBeanFactoryPostProcessors详解
目录invokeBeanFactoryPostProcessorsinvokeBeanFactoryPostProcessors执行之前了解:记住 BeanDefinitionRegistryPostProcessor是BeanFactoryPostProcessor的子集这一点 记住 :BeanDefinitionRegistryPostProcessor 接口 自己又定义了一个方法:postProcessBeanDefinitionRegistry前面这一部分就是进行一些判断 建
2022-04-08 10:32:30
435
原创 spring源码Refresh--obtainFreshBeanFactory()详解
目录方法的入口:进入到方法里面:refreshBeanFactory()if-elsecreateBeanFactory()方法的入口:进入到方法里面:首先 进入到 refreshBeanFactory() 方法里面refreshBeanFactory()if-else这一个就是起到 刷新工程 如果你已经存在了工厂就给你清空 并关闭重新给你整一个。执行完后 执行后面的createBeanFactory()具体我就不点了 主要就是 创建DefaultListableBeanFact
2022-03-30 20:00:15
883
原创 spring源码----loadBeanDefinitions(DefaultListableBeanFactory)详解
目录方法图片:new XmlBeanDefinitionReader接着往下执行这四个方法:loadBeanDefinitions(XmlBeanDefinitionReader)loadBeanDefinitions(String...)loadBeanDefinitions(String)loadBeanDefinitions(String,@Nullable Set《Resource》)loadBeanDefinitions(Resource...)方法图片:首先执行第一个方法:new Xml
2022-03-30 19:55:29
1149
原创 spring源码--refresh下的prepareRefresh详解
目录首先是方法图片进入内部:initPropertySourcesgetEnvironment().validateRequiredProperties()首先是方法图片进入内部:前面四个没什么好说的 就是一些属性的设置 具体看注释往后执行 到initPropertySources进入里面就是个空的没有任何实现然后退出来 进入到这个方法:getEnvironment().validateRequiredProperties()点进去:再进去:第一个参数的就是个异常类 :往
2022-03-23 10:50:20
739
原创 spring-initPropertySources()与validateRequiredProperties的测试
目录测试之前:开始测试首先 实现initPropertySources创建自己的类开始执行initPropertySourcesvalidateRequiredProperties我的父亲文章为spring源码–refresh下的prepareRefresh详解请点击:测试之前:我们没实现 initPropertySources()的时候 走到validateRequiredProperties 时 属性值是这样的:可以看见size=0;开始测试首先 实现initPropertySourc
2022-03-23 10:21:51
916
原创 spring源码---ClassPathXmlApplicationContext-setConfigLocations(configLocations)详解
目录spring整体流程参考:类图:进入到setConfigLocations方法中:进入到Assert.noNullElements进入到resolvePath总结spring整体流程参考:暂未完成 有了第一时间更新类图:这是方法的入口进入到setConfigLocations方法中:进入到Assert.noNullElements意义看注释回到原方法:进入到resolvePath咱就不进去了哈这个方法 还是有实际应用的 :比如你的 xml 文件 交 zyc-${
2022-03-22 18:03:41
837
原创 spring源码---ClassPathXmlApplicationContext-super(parent)详解
目录spring整体流程参考:类图:一直调用super(parent)DefaultResourceLoader:回到AbstractApplicationContext回到AbstractApplicationContext返回到 AbstractRefreshableConfigApplicationContext返回到AbstractXmlApplicationContext然后结束回到ClassPathXmlApplicationContext总结:spring整体流程参考:暂未完成 有了第一
2022-03-22 13:08:46
315
原创 java设计模式——门面与调停
目录门面:应用调停应用:门面:就很简单 对于客户来说假如我需要 看病 :我要去挂号,交挂号费,选科,排队,看病,拍片,在看片,开药方,缴费,拿药。需要一连串的操作应用用了门面模式,就需要 搞个类 当门面 用户 找他 即可。大概就是 这样的图片:调停大概这样的图片:应用:实际的应用 :消息中间件,就是把消息传给他 他进行分配。...
2022-03-17 18:08:34
399
原创 java设计模式——策略模式
文章目录适用的场景实际列子:举列:抱歉 sort 方法里面的参数应该是类数组我的抱歉没改问题一 猫按体重排序:问题2:我要拓展 狗也可以按照体重排序问题 我再拓展 猫按照身高排序,狗按照年龄:调用:总结:适用的场景1、如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。2、一个系统需要动态地在几种算法中选择一种。3、如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现。实际列子:jdk中的
2022-03-17 14:09:48
426
原创 java设计模式——代理模式(未完成)
文章目录静态代理动态代理cglib 代理静态代理图片:代理类的方法:优缺点:动态代理图片:代理类的方法;public class ProxyFactory { private Object target; public ProxyFactory(Object target) { this.target = target; } //给目标对象生成一个代理对象 public Object getProxyInstance() { // /* * pub
2021-11-24 15:22:26
116
原创 EasyExcel 的简单使用
文章目录首先是导包:导出操作:导入操作首先是导包:<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.1</version> </dependency>然后直接开始使用:导出操作:类:
2021-11-07 16:28:25
152
原创 OpenFeign 学习笔记
目录介绍:基本使用pom:yaml:主启动类;接口类:controller类:补充加强日志:首先配置一个类级别说明:然后 再配置yaml :介绍:与Ribbon 一样负责进行 服务调用的不过有区别ribbon 需要使用到RestTemplate 进行拼接 有点 麻烦openfeign 可以 使用一个service类进行调用具体使用看下面:官网基本使用pom:<!-- https://mvnrepository.com/artifact/org.springframework.
2021-10-28 15:50:05
392
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人