![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
文章平均质量分 66
.守心.
这个作者很懒,什么都没留下…
展开
-
前后端交互接口逻辑编排复盘
其中查询核心数据需要1.5s,查询非核心数据1和非核心数据2则都需要3s,故一次http请求则需要7.5s。如果查询非核心数据1或者非核心数据2失败,那么http请求也会被阻断,当前逻辑是不符合正常预期的。在上述优化之后的一把梭写法中,http请求的显示已经排除了非核心数据的影响。根据上述的结论,非核心的数据在页面上的显示维度应该具备一定的容错。在笔者工作中遇到的前后端交互的项目中,后端处理并返回数据,前端进行显示数据时,会有核心数据和非核心数据的区别。查询非核心数据1失败也不会阻断整个http的请求。原创 2024-01-16 15:18:26 · 431 阅读 · 0 评论 -
如何优雅的调用三方接口
在我毕业的第一年过程中,底层数据交互的对象一般都是自己的DB,基本上没有从第三方获取过数据,所以也没有封装过这部分的工具类。直到前段时间,新增的应用中需要大量获取三方数据,基本上没有DB发挥的余地。上面的代码写一次还好,两次也还行,三次有点冗余了。到最后应用中到处都是tra catch和异常日志,严重影响美观和代码的规范。最初是通过try catch 的普遍写法进行code,但是写久了之后就发现,每回都需要写try catch等异常捕获的代码,显得代码很冗余,也很费时费事,例如下面的代码。原创 2023-12-05 15:52:37 · 474 阅读 · 0 评论 -
线程池原理初探
混合型的任务,如果可以拆分,则将其拆分成一个CPU密集型任务和一个IO密集型任务,只要这两个任务执行的时间相差不是太大,那么分解后执行的吞吐率要高于串行执行的吞吐率,如果这两个任务执行时间相差太大,则没必要进行分解。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。配置线程池有两点建议:第一,使用变量(如CPU的个数,连接池的大小)来动态配置线程池大小,这样做可以增加线程池的可伸缩性,即当CPU增加时,线程池的处理能力相应增加。原创 2023-12-05 15:12:11 · 872 阅读 · 0 评论 -
Cannot resolve symbol ‘xxx‘
当前下载的依赖包里面有一个usa- common的依赖,这个依赖在当前依赖包里面定义的是1.8.23的版本,但是在之前的依赖包中,也有一个usa- common的依赖,这个依赖包在之前的依赖包中定义的版本是1.7.0,所以下载usa- common依赖时会发生冲突,那么Maven会以依赖路径短的作为当前下载的版本,也就是说,当前依赖的版本下载错了,应该是1.8.3,但是下载了1.7.0。2.1的方法如果还是不行,那么就把本地仓库中关于这个依赖的所有文件全部删除,然后重新下载。2.1 刷新Maven。原创 2022-12-22 14:29:40 · 573 阅读 · 1 评论 -
Variable used in lambda expression should be final or effectively final
在lambda表达式或匿名内部类中使用的外部变量应该加上final修饰符,因为java 8 新特性导致一些外部变量没有加final修饰符,依然可以在lambda表达式或匿名内部类中使用。在Java中,参数之间的传递是值传递,不管是实例变量还是数组,在传递的过程中传递的都是引用,并且引用并没修改(满足Lambda表达式访问外部变量一个非常重要的限制:就是变量不可变),所以当前实例变量的引用依然是隐式final修饰,在lambda表达式中修改的是引用指向的值,并没有修改引用。2、为什么外部变量加了修饰符。原创 2022-12-13 16:05:18 · 944 阅读 · 0 评论 -
Optional详解
Optional 就好像是一个包装类,可以把具体的数据封装到 Optional 对象内部,然后我们去使用 Optional 中封装好的方法操作封装进去的数据就可以非常优雅的避免空指针异常原创 2022-11-15 16:52:32 · 1174 阅读 · 0 评论 -
JWT详解
JWT详解原创 2022-04-18 11:13:15 · 3154 阅读 · 0 评论 -
一张图看懂finalize()执行流程
原创 2022-04-06 15:47:53 · 262 阅读 · 0 评论 -
一张图看懂分库分表
原创 2022-04-06 15:46:49 · 234 阅读 · 0 评论 -
一张图看懂线程池
线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。通过继承线程池并重写线程池的beforeExecute,afterExecute和terminated方法,我们可以在任务执行前,执行后和线程池关闭前干一些事情。largestPoolSize:线程池曾经创建过的最大线程数量。如等于线程池的最大大小,则表示线程池曾经满了。上面的流程分析让我们很直观的了解的线程池的工作原理,让我们再来看看源代码是如何实现的。通过线程池提供的参数进行监控。原创 2022-04-06 15:45:44 · 79 阅读 · 0 评论 -
设计模式实战案例
1 设计模式设计模式源码https://gitee.com/practice-pine/design-pattern/tree/master/src/main/java/com/lian/song/designPattern原创 2022-04-06 15:40:12 · 375 阅读 · 0 评论 -
如何上传自己的jar包到maven中央仓库(2021最新版)@gpg没有运行的问题
原文连接 : https://juejin.cn/post/6997794615000580127其中的一步是安装gpggpg 未运行的问题1 我在安装4.1 步骤的时候,gpg死活不能运行,试过网上所欲的方法,什么重新安装啊、安装目录不能有中文字符啊,都试了,还是不行,搞了我整整一天,最后,累了,毁灭吧,不弄了。不能运行的效果,给大家参观参观第一种 : 生成主键的时候,生成不了,说gpg 没有运行然后一看果然没有运行。2 过了一天之后,越想越气,我不能吃这个亏啊,md。然后上班的.转载 2022-01-29 16:52:52 · 102 阅读 · 0 评论 -
excel导出条数和显示的条数不一致(Mysql)
excel导出条数和显示的条数不一致(Mysql)1 问题我在写excel导出的时候,发现我导出的数据只有100条数据,但是前端分页显示器上面显示有203条,后来我把执行的SQL,放到Navicat里面执行发现显示条数和查询条数依然不一致。可以看到查询的条数只有100条但是统计条数的话有203条2 原因后来进过研究发现,MYSQL会默认查询条数,有的版本是100,有的版本是1000,必须有默认3 解决1 修改默认值,修改为适合的数值1.1 Navicat修改工具 - 》 选项 -》数原创 2021-12-28 17:13:34 · 1242 阅读 · 3 评论 -
观察者模式
1、概述观察者模式又称为发布/订阅(Publish/Subscribe)模式观察者设计模式涉及到两种角色:主题(Subject)和观察者(Observer)(1)Subject模块Subjec模块有3个主要操作addObserver():注册添加观察者(申请订阅)deleteObserver():删除观察者(取消订阅)notifyObserver():通知所有的观察者对象isChange() : 主题状态发生变化时通知所有的观察者对象(2)Oserver模块Oserver模块有1个核心原创 2020-11-12 11:36:54 · 105 阅读 · 0 评论 -
策略模式
一、策略模式的定义—— 定义了一组算法,将每个算法包装起来,并且使它们之间可以互换—— 策略模式使这些算法在客户端调用它们的时候能够相互不影响的变化,改变不同算法的实现方式不影响客户端的使用,即策略模式让算法独立于使用它的客户端而独立变化。策略模式在Java中处处可以体现,TreeSet和TreeMap中均存在这样的构造方法:TreeSet(Comparator<? super E> comparator)和TreeMap(Comparator<? superK> compar原创 2020-11-11 21:45:30 · 99 阅读 · 1 评论 -
volatile随笔
1 内存的分类1 操作系统层面 : 操作系统内存 本地内存 native memory都属于物理内存 (内存条)2 JVM层面 : 堆 方法区 虚拟机栈 本地方法栈 程序计数器都属于物理内存上的一个内存池3JMM层面 : 主内存 本地内存本地内存 = 虚拟机栈主内存 = 堆 + 方法区2 volatile 作用1 保证可见性2 禁止指令重排(保证有序性)3 不保证原子性JMM内存模型八种操作3 volatile 如何保证有序性volatile 禁止指令重排,保证原创 2020-11-05 21:53:49 · 80 阅读 · 0 评论 -
MySql随笔
一 锁概念1 加读锁 sql语句 + lock in share mode2 加写锁 sql语句 + for update普通的delete 和update语句自动加写锁insert 语句加隐式写锁,当在插入语句时有其他的事务对这一行数据进行加锁则会激活写锁进行阻塞锁冲突读锁 : 共享锁(读锁可以加无数把)写锁 : 排它锁 (写锁只可以加一,读写锁也冲突)普通的select语句没有锁,可以绕过锁读取数据二 行锁MySQL(inno原创 2020-11-02 21:06:25 · 153 阅读 · 0 评论 -
Spring依赖注入的方式
1 手动注入(xml)底层采用1 set方法2 构造方法2 自动注入2.1 XML形式自动注入<bean autowire="byName" bean/> 属性设置在类中需要set方法,以set方法的set之后的字符串作为key,去容器当中查找bean对象并且采用放射的调用set方法进行注入<bean autowire="byType" bean/> 属性设置在类中需要set方法,以set方法的参数类型到容器当中去查找bean如果有多个b原创 2020-11-01 19:52:37 · 578 阅读 · 0 评论 -
HsahMap 和 ConcurrentHashMap(1.8)
ConcurrentHashMapput()方法 final V putVal(K var1, V var2, boolean var3) { if (var1 != null && var2 != null) { 1 int var4 = spread(var1.hashCode()); int var5 = 0; ConcurrentHashMap.Node[] var6 = thi原创 2020-10-29 21:47:23 · 136 阅读 · 0 评论 -
NIO
一 缓冲区除了boolean类型之外的基本数据类型都有intbuffershortbufferlongbufferdoublebufferfloatbuffercharbufferbytebuffer四个关键属性mark = -1 : 对position就进行标记,使用reset()方法可以返回,相当于存档和取档position = 0 : 相当于下标limit : 界限 ,有数据的界限,limit之后不能进行存取操作capacity : 容量 ,不可变方法直接缓冲原创 2020-10-06 21:18:38 · 96 阅读 · 0 评论 -
Nginx 笔记
一、Nginx基本概念1 nginx 属于 HTTP 服务器。(也可以叫 Web 服务器)2 Nginx代码完全用C语言从头写成3 Nginx (“engine x”)是一个高性能的HTTP和反向代理服务器特点:占有内存少,并发能力强,并发能力在同类型的网页服务器中表现较好Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达50, 000个并发连接数。Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重原创 2020-09-28 19:58:07 · 151 阅读 · 0 评论 -
2020-09-22
1 红黑树简介红黑树是一种自平衡的二叉查找树,是一种高效的查找树。2 性质自平衡的查找树通过定义一些性质,将任意节点的左右子树高度差控制在规定范围内,以达到平衡状态。以红黑树为例,红黑树通过如下的性质定义实现自平衡:1 节点是红色或黑色。2 根是黑色。3 所有叶子都是黑色(叶子是NIL节点)。4 每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点。)5 从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点(简称黑高)。3 插入...原创 2020-09-22 19:50:47 · 85 阅读 · 0 评论 -
注解和反射
1 注解原创 2020-09-15 21:43:36 · 118 阅读 · 0 评论 -
JUC编程
1 JUCJUC就是java.util .concurrent工具包的简称。这是一个处理线程的工具包,JDK 1.5开始出现的1 传统的synchronizedpublic class Synchronized { public static void main(String[] args) { //并发 : 多个线程同时操作同一个资源类 // 使用lambda表达式进行解耦,将资源类丢入线程的执行 Person person = new P原创 2020-09-09 14:53:51 · 708 阅读 · 0 评论 -
JVM初探
1 JVM的位置JVM处于操作系统之上,相当于一个运行Java编译过之后的class文件的软件2 JVM 的体系结构总结:栈内不回头GC , 大多数GC都在堆内;方法区相当于特殊的堆3 类加载器作用:加载经过编译后产生的class文件Class 类是抽象且唯一的,new 出来的实例是具体且多样的;相当于Class 对象是一个模板,而new 出来的对象就是具体的东西,而且过程可逆类加载器的类别BootstrapClassLoader(启动/根类加载器)c++编写,加载java核心库原创 2020-08-29 21:53:02 · 200 阅读 · 0 评论 -
线程初学
并发:指两个或多个事件在同一个时间段发生,交替执行并行:指两个或多个事件在同一时刻发生进程:指一个内存中运行的程序,每一个进程都有一个独立的内存空间,一个应用程序可以运行多个进程,进程也是程序的一次执行过程,是系统运行程序的基本单位,系统运行一个程序就是一个进程从创建,运行到消亡的过程。线程:是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程,如果有多个线程,当前程序就叫多线程程序理解:应用程序=软件 进程=功能模块 线程=方法多线程的好处:1 效率高2 多个线..原创 2020-05-16 21:04:55 · 201 阅读 · 2 评论 -
SpringBoot Security 学习笔记
1 理论Spring Security,这是一种基于 Spring AOP 和 Servlet 过滤器的安全框架。它提供全面的安全性解决方案,同时在 Web 请求级和方法调用级处理身份确认和授权。工作流程2 实践2.1.0 目录结构2.1.1 导入依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <a原创 2020-08-18 16:38:28 · 122 阅读 · 0 评论 -
SpringBoot整合Shiro,mybatis,thymeleaf学习笔记
1 理论Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。用户名密码身份认证流程授权流程授权,即访问控制,控制谁能访问哪些资源。主体进行身份认证后需要分配权限方可访问系统的资源,对于某些资源没有权限是无法访问的完整的身份认证和权限管理(基于URL的拦截)1.1 三个核心组件:Subject, SecurityManager 和 Realms.1.1.1Subject:即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅原创 2020-08-18 16:12:17 · 249 阅读 · 0 评论 -
Eureka 笔记
Eureka服务端单机版1 创建项目2 改pom.xml文件,导入依赖//导入的是本地自己写的实体类<dependency> <groupId>org.atguigu</groupId> <artifactId>cloud-api-commons</artifactId> <version>1.0-SNAPSHOT</version> </depende原创 2020-07-22 15:19:24 · 178 阅读 · 0 评论 -
Linux初学
Ctrl+Alt+f2…f12 :切换到命令状态(黑屏)Ctrl+Alt+f+f1: 切换到图形化界面su 账号名:切换普通账号与超级账号*提示字符的最后一个·字符是$表示普通账号,#表示超级账号cd 文件名:进入某个文件夹之下cd … :返回上一级ls :查看当前文件夹下的所有文件ls 文件名:查看指定文件夹下的文件ls -l:把文件以列表的形式展开*第一列中以d开头表示文件夹,以-开头表示普通的文本文件ls -a: 查看文件下的隐藏文件pwd:c查看用户停留在那个具体文件夹路径下原创 2020-07-17 16:14:45 · 219 阅读 · 0 评论 -
RabbitMq笔记
基础操作rabbitmqctl stop_app : 关闭应用rabbitmqctl start_app : 启动应用rabbitmqctl status : 节点状态rabbitmqctl add_user username password : 添加用户rabbitmqctl list_users : 列出所有用户rabbitmqctl delete_user username :删除用户rabbitmqctl clear_permissions -p vhostpath username原创 2020-07-15 23:08:50 · 154 阅读 · 0 评论 -
Vi和Vim编辑器
三种常见模式1 正常模式 : 使用快捷键,光标移动,复制粘贴2 插入模式 :按下 i 进入3 命令行模式 :提供指令,完成存盘,读取,替换,离开,显示命令vim xxx :进入一般模式i :从一般模式到编辑模式esc : 从编辑模式退出到一般模式:或者/ :从一般模式进入命令模式 :wq 保存后退出 :q 不保存退出 :q! 不保存强制退出esc : 从命令模式退出到一般模式快捷键(正常模式)1 拷贝当前行 yy ,拷贝当前向下5行原创 2020-06-30 14:47:55 · 94 阅读 · 0 评论 -
Spring注解
1 包扫描(@Componentscans)+组件标注 (@Controller,@Service,@repository,@Component)2 @bean[导入第三方包的组件]@configration:标明配置类 @bean: 标明是一个bean value="id" :相当于在想xml中的id @Scope :作用域 "prototype" :多例,ioc容器创建时不会调用方法创建实例,获取实例时才会调用方法获取实例,每一次的实例都不一样 "singleton" :单例,原创 2020-06-29 15:40:03 · 111 阅读 · 0 评论 -
2020-05-07
第一次整合SSM框架遇到的坑根据报错来配对下面的坑(看不懂英语的可以用百度翻译,我反正是没看懂)查看连接池的不同,不同的连接池有不同的属性名,有不同的配置方法如果用了mybatis的逆向工程,*Mapper.xml文件的空间名一定要改,还有各种包名(容易忘,拿过来就不管了)各个配置中的属性名的大小写一定要区分开,配置文件最上面的地址最好不要写版本好,它会自动匹配web.xml配置文件...原创 2020-05-07 22:43:16 · 798 阅读 · 0 评论 -
2020-05-04
mybatis逆向工程方法缺少数据库中没有设置主键generatorconfig.xml文件中关于primary和example的属性设置了false,默认是true连接驱动的问题,MySQL的6.*不会生成关于主键的方法,MySQL5.*会生成关于主键的方法...原创 2020-05-04 12:02:31 · 116 阅读 · 0 评论