- 博客(42)
- 收藏
- 关注
原创 线程池的基础
workQueue - 当没有空闲核心线程时,新来任务会加入到此队列排队,队列满会创建救急线程执行任务。keepAliveTime 生存时间 - 救急线程的生存时间,生存时间内没有新任务,此线程资源会释放。threadFactory 线程工厂 - 可以定制线程对象的创建,例如设置线程名字、是否是守护线程等。handler 拒绝策略 - 当所有线程都在繁忙,workQueue 也放满时,会触发拒绝策略。maximumPoolSize 最大线程数目 = (核心线程+救急线程的最大数目)线程池核心参数和原理。
2024-08-20 11:33:21
257
原创 预约功能的知识整理
如果项目为小程序的开发项目中:我们确定数据库中有的字段有: 预约人姓名、手机号、家人名称、预约时间根据我们的经定一表必须要有的6个字段:主键、创建时间、修改时间、创建人、修改人、备注使用我们现在有的字段为:主键、 预约人姓名、手机号、家人姓名、预约时间、创建时间、修改时间、创建人、修改人、备注所以,预约表中最终的表字段为:主键、 预约人姓名、手机号、家人姓名、类型、状态、预约时间、创建时间、修改时间、创建人、修改人、备注。
2024-08-13 22:29:58
814
原创 Redis的面试题
RDB因为是二进制文件,在保存的时候体积也是比较小的,它恢复 的比较快,但是它有可能会丢数据,我们通常在项目中也会使用AOF来恢复 数据,虽然AOF恢复的速度慢一些,但是它丢数据的风险要小很多,在AOF 文件中可以设置刷盘策略,我们当时设置的就是每秒批量写入一次命令。但是也是存在误判的概率的。候选人:延迟双删,如果是写操作,我们先把缓存中的数据删除,然后更新 数据库,最后再延时删除缓存中的数据,其中这个延时多久不太好确定,在 延时的过程中可能会出现脏数据,并不能保证强一致性,所以没有采用它。
2024-08-08 20:38:27
511
原创 SpringBoot中实现拦截器和过滤器
4.3 Filter可拦截所有web资源(包括Jsp,Servlet,静态资源),而Interceptor则只拦截Controller。2.1 自定义过滤器,实现Filter接口(SpringBoot 3开始,jakarta.servlet.Filter)1.过滤器和拦截器简述过滤器Filter和拦截器Interceptor,在功能方面很类似,但在具体实现方面差距还是比较大的。3.3 创建配置类,实现WebMvcconfigurer接口,重写addInterceptors方法。
2024-08-07 15:57:44
120
原创 微服务-Elasticsearch基础
索引库操作有哪些?创建索引库:PUT /索引库名查询索引库:GET /索引库名删除索引库:DELETE /索引库名修改索引库,添加字段:PUT /索引库名/_mapping文档操作有哪些?POST /{索引库名}/_doc/文档id { json文档 }GET /{索引库名}/_doc/文档idDELETE /{索引库名}/_doc/文档id修改文档:PUT /{索引库名}/_doc/文档id { json文档 }POST /{索引库名}/_update/文档id { "doc": {字段}}
2024-08-05 22:46:50
903
原创 Spring相关的面试题
因为一般在spring的bean中都是注入无状态的对象,没有线程安全问题,如果在bean中定义了可修改的成员变量,可以考虑线程的安全问题,或者使用多例或者加锁来解决。记录操作日志:使用aop中的环绕通知+切点表达式(找到要记录事务的方法),通过环绕通知的参数获取请求的参数(类,方法,注释,请求方法,ip地址等),获取到这些参数以后,保存到数据库。当多个用户同时请求一个服务时,容器会给每一个请求分配一个线程,这个是多线程并发执行请求对应的业务逻辑,如果改处理逻辑中对该单列状态的修改,则要考虑线程同步问题。
2024-07-31 21:38:24
404
原创 微服务--配置管理
现在依然还有几个问题需要解决:网关路由在配置文件中写死了,如果变更必须重启微服务某些业务配置在配置文件中写死了,每次修改都要重启服务每个微服务都有很多重复的配置,维护成本高这些问题都可以通过统一的解决。
2024-07-29 22:57:26
875
原创 微服务--熟练掌握网关(包括权限认证)
无论是还是都支持自定义,只不过编码方式、使用方式略有差别。自定义不是直接实现,而是实现。@Component@Override@Override// 获取请求// 编写过滤器逻辑System.out.println("过滤器执行了");// 放行注意:该类的名称一定要以为后缀!spring:cloud:gateway:- PrintAny # 此处直接以自定义的GatewayFilterFactory类名称前缀类声明过滤器@Component。
2024-07-29 21:30:49
1035
原创 微服务的入门
带着问题进行学习:1. 对服务进行拆分后,物理上是隔离的,数据上也是隔离的,如何进行不同服务之间进行访问呢?2.前端是怎么样向后端发送请求的?通过http请求,通过url,请求的方法来实现。对于不同后端的不同的服务,我们也可以通过Spring 给我们提供的RestTemplate工具来解决,可以方便的实现Http请求的发送。
2024-07-27 21:38:21
1022
原创 JavaScript的常见难点(一)
事件冒泡是指事件从目标元素向上冒泡到其父元素,直到根元素;事件捕获是指事件从根元素向下捕获到目标元素。:事件委托是将事件处理程序添加到父元素,而不是每个子元素上,从而提高性能,减少内存使用。:原型链是 JavaScript 实现继承的机制,每个对象都有一个内部属性。方法创建一个新对象,使用指定的原型对象和可选的属性。指向调用该方法的对象;的第三个参数来指定是否使用捕获。指向触发事件的元素。访问),指向其原型对象。被绑定到指定的对象;被绑定到指定的对象。
2024-07-26 14:43:12
1068
原创 Docker快速入门
镜像就是包括了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程就是其实把上述文件打包的过程。部署一个Java应用的步骤:(1)准备一个Linux服务器(2)安装JRE并配置环境变量(3)拷贝Jar包(4)运行Jar包ps:JRE是运行时环境,它提供了 Java 虚拟机(JVM)、核心类库以及其他支持文件,允许用户在其计算机上执行 Java 程序。不同的操作系统用的JVM是不一样的。构建一个Java镜像的步骤:(1)准备一个Linyx运行环境。
2024-07-24 23:34:54
894
原创 MybatisPlus的使用与详细讲解
我们可以利用MyBatisPlus的Wrapper来构建复杂的Where条件,然后自己定义SQL语句中剩下的部分。我们可以利用MyBatisPlus的Wrapper来构建复杂的Where条件,然后自己定义SQL语句中剩下的部分。基于Wrapper构建where条件// 1.构建条件// 2.自定义SQL方法调用在mapper方法参数中用Param注解声明wrapper变量名称,必须是ew自定义SQL,并使用Wrapper条件</update>
2024-07-22 20:08:19
1386
原创 ThreadLocal的使用以及使用的场景
ThreadLocal是Java多线程编程中非常有用的工具类,它提供了一种简单的方式来实现线程局部变量的访问和管理。通过使用ThreadLocal,我们可以在多线程环境下保持数据的独立性,提高程序的并发性能。
2024-07-21 21:30:34
892
原创 第三方接口对接微信登录(包括糊涂工具包)
以上两个方法调用相对简单,如果请求参数中没有额外的条件设置,就可以使用上述的两个方法,但是,有的时候三方接口调用需要使用到header或者是文件上传,则不能使用上述两个方法。如果是老人的家人,需要跟入住的老人进行绑定,方便后期的更多服务,所以,在小程序端登录的用户,我们需要保存下来,保存到一张表中 member(客户表)从小程序端登录的用户主要有两类,第一类是参观预约的用户,第二类是,老人的家人(子女),方便查看老人信息、给老人下单、查看账单、查看合同等服务。请求参数,接口的入参,特别注意的是,
2024-07-21 21:04:44
801
原创 Aop的基础知识
什么是AOP?AOP:Aspect Oriented Programming(面向切面编程、面向方面编程),其实说白了,面向切面编程就是面向特定方法编程。那什么又是面向方法编程呢,为什么又需要面向方法编程呢?来我们举个例子做一个说明:比如,我们这里有一个项目,项目中开发了很多的业务功能。然而有一些业务功能执行效率比较低,执行耗时较长,我们需要针对于这些业务方法进行优化。那首先第一步就需要定位出执行耗时比较长的业务方法,再针对于业务方法再来进行优化。
2024-05-16 11:16:33
655
原创 前端知识点总结 -- Vue篇,Ts篇
详细步骤说明:Project name:------------------》项目名称,默认值:vue-project,可输入想要的项目名称。----------------》是否加入TypeScript组件?默认值:No。---------------》是否加入JSX支持?默认值:No。Add Vue Router ...--------------》是否为单页应用程序开发添加Vue Router路由管理组件?默认值:No。
2024-05-15 21:42:43
601
原创 过滤器与拦截器
/初始化方法, web服务器启动, 创建Filter实例时调用, 只调用一次//拦截到请求时,调用该方法,可以调用多次System.out.println("拦截到了请求...");//销毁方法, web服务器关闭时调用, 只调用一次init方法:过滤器的初始化方法。在web服务器启动的时候会自动的创建Filter过滤器对象,在创建过滤器对象的时候会自动调用init初始化方法,这个方法只会被调用一次。
2024-05-14 22:17:52
692
原创 会话技术与跟踪方案
什么是会话?在我们日常生活当中,会话指的就是谈话、交谈。在web开发当中,会话指的就是浏览器与服务器之间的一次连接,我们就称为一次会话。在用户打开浏览器第一次访问服务器的时候,这个会话就建立了,直到有任何一方断开连接,此时会话就结束了。在一次会话当中,是可以包含多次请求和响应的。比如:打开了浏览器来访问web服务器上的资源(浏览器不能关闭、服务器不能断开)第1次:访问的是登录的接口,完成登录操作第2次:访问的是部门管理接口,查询所有部门数据第3次:访问的是员工管理接口,查询员工数据。
2024-05-14 21:07:44
905
2
原创 全局异常处理器
在全局异常处理器当中,需要定义一个方法来捕获异常,在这个方法上需要加上注解。定义全局异常处理器非常简单,就是定义一个类,在类上加上一个注解。,加上这个注解就代表我们定义了一个全局异常处理器。我们该怎么样定义全局异常处理器?属性来指定我们要捕获的是哪一。处理异常的方法返回值会转换为。
2024-05-14 20:45:18
162
2
原创 Spring事务的回滚问题
注解作用:就是在当前这个方法执行开始之前来开启事务,方法执行完毕之后提交事务。如果在这个方法执行的过程当中出现了异常,就会进行事务的回滚操作。注解:我们一般会在业务层当中来控制事务,因为在业务层当中,一个业务功能可能会包含多个数据访问的操作。在业务层来控制事务,我们就可以将多个数据访问操作控制在一个事务范围内。注解书写位置:方法当前方法交给spring进行事务管理类当前类中所有的方法都交由spring进行事务管理 (推荐)接口接口下所有的实现类当中所有的方法都交给。
2024-05-14 20:04:15
1147
2
原创 数据表自关联查询形成递归树
5.resultType与resultMap的区别:resultType用在返回的名字与类中的名字一样,而resultMap返回的名字与类中的名字不一样。1.解决同源策略的三种方法:JSONP、添加请求头、通过nginx(协议、主机、端口)方法二:mysql8.0后可用WITH RECURSIVE查询 可进行递归查询。3.@Autowied根据类型注入、@Resource根据名字注入。方法一:inner join 根据 id 与 pid 进行查询。2.CORS是出现跨域问题。
2024-04-24 22:14:06
172
原创 项目怎么集成RabbitMQ与CaffineCache
我们可在定时任务拉取数据时,将最新的数据信息通过mq同步到主业务工程进行缓存处理,这样就避免了多用户从数据库反复加载股票数据导致数据库负载过高的问题,同样也提高了大屏终端服务的吞吐量;使用CaffineCache本地缓存而非redis远程缓存,能提供更高效的响应速度,同时避免了与redis之间交换带来的网络I/O成本开销;
2024-04-20 13:42:20
265
1
原创 使用@ConfigurationProPerties()为什么@Value还是没有读取成功
很大原因在公共配置类中没有开启配置(@EnableConfigrationProperties(xxxx.class))
2024-04-20 02:15:00
152
原创 RestTemplate的使用
RestTemplate 是 Spring Framework 提供的一个用于访问 RESTful 服务的模板类。它封装了对 HTTP 请求的处理,简化了在 Java 应用程序中与 RESTful 服务进行通信的过程。如果想获取股票最新的数据,就需要定时调用第三方接口拉取最新数据流水;Spring框架已为我们封装了一套访问远程http接口的模板工具:RestTemplate,借助于该工具,我们可访问第三方股票接口,获取最新数据。
2024-04-19 21:49:09
1144
原创 集成SpringSecurity+后期可加入JWT
通过研究SpringSecurity内置基于form表单认证的UsernamePasswordAuthenticationFilter过滤器,我们可以仿照自定义认证过滤器:内置认证过滤器的核心流程:核心流程梳理如下:认证过滤器(UsernamePasswordAuthentionFilter)接收form表单提交的账户、密码信息,并封装成UsernamePasswordAuthenticationToken认证凭对象;认证过滤器调用认证管理器AuthenticationManager进行认证处理;
2024-04-18 21:58:33
839
1
原创 雪花算法的使用与说明
后台生成SessionId需要保证全局唯一,我们可借鉴SnowFlake(雪花算法)来实现;什么是雪花算法?雪花算法是Twitter公司内部为分布式环境下生成唯一ID的一种算法解决方案,底层会帮助我们生成一个64位(比特位)的long类型的Id;不适用:1bit,最高位是符号位,0表示正,1表示负,固定为0时间戳:41bit,毫秒级的时间戳(41位长度可以使用69年)标识位:5bit数据中心ID,5bit工作机器ID,两个标识位组合起来最多可以支持部署1024个节点。
2024-04-16 15:02:19
515
原创 高精度算法的加减法
高精度算法:1.大整数的存储方式:在数组中(从0开始到结束)分别存放了个位,十位,百位,千位......eg.123456789(在数组中的位置分别为876543210,这样方便进位)。A+B型 A-B型
2022-06-25 22:43:46
104
原创 归并排序merge_sort
一个算法稳不稳定不是指时间效率的稳定,而是相对位置不发生变化就是稳定的。(快排不稳定,而归并稳定)思考:如何让快排变得稳定(把快排里面的每一个元素变的都不一样)归并算法的思想:(双指针算法)时间复杂度:O(nlog2n)1.确定分界点2.递归排序分界点的left跟right3.合并(一个是重点)...
2022-06-22 23:23:20
76
原创 快速排序--Quick_sort
算法的思路:1.定义两个指针(L,R),分别指向最左跟最右的数据,并且以第一个元素作为key值2.分别对两个指针进行比较,L指针如果比key值要大停下,否则L++;R指针如果比key值大停小,否则R--;如果两个指针都停下则交换L与R指针所指向的值(前提是L与R指针没有相遇)3.如果L与R相遇了,则将(L与R共同指向的元素与key值交互,使得key的左边的数比key值要小,右边的数比key值要大)4.递归以上的操作代码:...
2022-06-22 08:49:42
57
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人