- 博客(476)
- 收藏
- 关注
原创 template和span标签的使用
template是模板占位符,可帮助我们包裹元素,而且循环过程当中,template不会被渲染到页面。可以看出并没有被渲染。所以这种在template里面加了比如v-show其实也是不起作用的!可以看到列表外面这层div也被渲染出来。可以看到template并没有被渲染,相较于使用div 会节省一个没必要的div标签的空间。template是作为占位符模板,用于包裹元素,自身并没有被渲染出来。
2024-11-06 19:19:21
788
原创 定时更新数据或执行其他需要定时触发的操作 setInterval 和 clearInterval
在Vue项目中,可以使用clearInterval来清除由setInterval创建的定时器。通常在组件的生命周期钩子函数中使用clearInterval来清除定时器,以避免内存泄漏和不必要的性能开销。setInterval作用:使用setInterval函数,可以在VueJS中实现定时更新数据或执行其他需要定时触发的操作。可以使用setInterval函数定时从服务器获取最新的数据并更新页面内容。<template> <div> <p>{{ count
2024-11-04 22:47:42
389
原创 ES6 Promise实现异步操作
ES6 Promise的内容就这些吗?是的,能用到的基本就这些。我怎么还见过done、finally、success、fail等,这些是啥?这些并不在Promise标准中,而是我们自己实现的语法糖。本文中所有异步操作均以setTimeout为例子,之所以不使用ajax是为了避免引起混淆,因为谈起ajax,很多人的第一反应就是jquery的ajax,而jquery又有自己的Promise实现。如果你理解了原理,就知道使用setTimeout和使用ajax是一样的意思。
2024-10-29 20:22:44
826
原创 Vue生命周期与钩子函数
这两个接口的主要区别在与以有没有将dom挂载到实例对象上,beforemount 是在挂载之前触发,仅对模板进行解析,如果此时输出需要挂载的dom的innerHTML的话,会将模板原样输出,并没有将数据进行渲染。该阶段之后就进入更新阶段。在这个生命周期内发生了下面的事情:从vue实例被创建开始,首先vue实例被创建,之后开始数据的初始化,编译模板,挂载dom,渲染dom,更新对象属性,渲染dom,解绑销毁。在vue生命周期中,大部分分为四个阶段,创建,挂载,更新,销毁,这四个阶段各自对应两个生命周期钩子。
2024-10-25 20:14:10
1020
原创 动态读取nacos中修改的项目配置文件
1:注意nacos中配置的是spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver。spring.datasource.driver-class-name用 - 横岗连接的属性。实体类中则对应驼峰即可。2:prefix 是 spring.datasource。driverClassName 是driver-class-name。3:springcloud则是用@RefreshScope注解来实现的。项目,咱们直接上代码。
2024-08-29 20:57:23
514
1
原创 项目配置在nacos配置中心进行管理
此pom目的是需要springboot中建一个 bootstrap配置,然后优先读取这个 bootstrap,然后读取默认的配置application.properties文件(优先级bootstrap>application)动态修改生效的可以看博客。
2024-08-28 21:18:55
459
1
原创 nacos开启鉴权
部署好Nacos服务端后,默认没有开启鉴权,直接不用登录就能访问控制台,也能直接注册服务,存在很大的安全风险。之前也爆过Nacos权限认证绕过漏洞(CVE-2021-29441):该漏洞发生在nacos在进行认证授权操作时,会判断请求的user-agent是否为”Nacos-Server”,如果是的话则不进行任何认证。开发者原意是用来处理一些服务端对服务端的请求。但是由于配置的过于简单,并且将协商好的user-agent设置为,直接硬编码在了代码里,导致了漏洞的出现。
2024-08-26 20:52:51
2620
原创 强引用 软引用 弱引用 虚引用 以及WeakHashMap简单介绍
虚引用应该可以说是最弱的一种java对象引用方式,其它的引用方式至少还能get到对象,而虚引用的句柄是获取不到对象的。// 新建一个对象// 存储被回收的对象// phantomReference使用虚引用指向这个内存空间到此我们的句柄就通过虚引用指向了新建的User// 获取不到 打印为null使用它可以实现简单缓存,并不建议线上环境使用它来,这里只是来帮助理解原理,是用哈希表实现Map接口,key是类型(弱引用类型),Entry在被自动删除当key不在被使用时候(即不可达时,
2024-06-03 22:09:11
532
1
原创 ThreadPoolExecutor创建线程池详解
该接口是真正的线程池接口。上面的ThreadPoolExecutor以及下面的都是该接口的实现类。Future submit(Runnable task):提交Runnable任务到线程池,返回Future对象,由于Runnable没有返回值,也就是说调用Future对象get()方法返回null。Future submit(Callable task):提交Callable任务到线程池,返回Future对象,调用Future对象get()方法可以获取Callable的返回值。
2024-06-02 12:56:26
1316
原创 阻塞队列BlockingQueue(FIFO)
BlockingQueue接口与Queue接口【Queue 和 BlockingQueue 都是在 Java 5 中加入的】
2024-06-01 12:05:01
750
原创 容量为0多线程操作的SynchronousQueue(FIFO)
SynchronousQueue是一个没有数据缓冲的,生产者线程对其的插入操作put必须等待消费者的移除操作take。SynchronousQueue的优点在于其直接性和高效性,它实现了线程间的即时数据交换,无需中间缓存,确保了数据传输的实时性和准确性,同时,其灵活的阻塞机制使得线程同步变得简单而直观,适用于需要精确协调的生产者-消费者模型。如上图所示,SynchronousQueue 最大的不同之处在于,它的容量为 0,所以没有一个地方来暂存元素,导致每次取数据都要先阻塞,直到有数据被放入;
2024-05-31 20:06:53
969
原创 无界延迟队列DelayQueue
DelayQueue是一个无界的,用于放置实现了Delayed接口的对象,其中的对象只能在其到期时才能从队列中取走。这种队列是有序的,即队头对象的延迟到期时间最长。注意:不能将null元素放置到这种队列中。
2024-05-30 23:04:26
656
原创 优先级非线程安全PriorityQueue和线程安全PriorityBlockingQueue
PriorityBlockingQueue类实现了接口(所以是线程安全的),它是一个线程安全的队列,继承自类,而类又实现了Queue接口。PriorityBlockingQueue是一个有界的队列,其容量可以在构造函数中进行指定,若不指定则默认大小为。同时,PriorityBlockingQueue也支持根据元素的优先级进行排序,这是由于PriorityBlockingQueue内部实现了一个堆数据结构。至于方法和PriorityQueue其实差不多不多赘述。
2024-05-28 20:50:39
929
原创 链表类型的无界阻塞线程安全队列-ConcurrentLinkedQueue(FIFO)和ConcurrentLinkedDeque
链表类型的无界阻塞线程安全队列
2024-05-26 15:11:09
847
原创 链表类型的有界或无界阻塞线程安全队列-LinkedBlockingQueue(FIFO)和LinkedBlockingDeque
链表类型的无界阻塞队列
2024-05-25 10:40:52
416
原创 Bean的异步初始化@SofaAsyncInit
其核心就是通过拦截器将标记为SofaAsyncInit注解的bean放入AsyncTaskExecutor异步线程池里面开启异步任务进行加载,所以会节省时间。但是如果两个bean之间注入是有关联的,那肯定不能异步执行只能一个注入了再注入另一个。这里可以清楚的看到通过拿到注解,获取到方法、方法名、通过Spring的上下文事件监听模式,将Class文件进行反射加载。
2024-05-19 15:44:42
240
原创 RSA非对称加密解密,前端公钥加密后端私钥解密
之后在以密文的形式传给后端(这里调用登录接口queryzhuce()方法),然后后端利用私钥解密获取到真正的明文。RSA非对称加密解密,前端公钥加密后端私钥解密,可以防止陌生人直接通过后端接口篡改数据。通过后端接口getJSEncryptPublic获取公钥之后,直接套函数加密。这里安装jsencrypt这个库进行RSA的加密。后端:sprintboot(Java)如下此时pass是加密后的密文。工具类:hutool。
2024-05-13 22:19:04
829
原创 侦听器Watch
当vm实例对象创建时就知道要监听哪个属性,则可以在对象内使用watch节点来写配置对象。当vm实例对象创建时还没确定好监听什么,需要后续在确定,则可以使用下面这种方法。watch侦听器允许开发者监视数据的变化,从而针对数据的变化做出特定的操作。另一种监听的方式 vm.$watch()
2024-04-27 16:04:53
210
原创 过滤器Filter
过滤器(Filter)常用于文本的格式化。过滤器使用的地方:插值表达式和v-bind属性绑定。过滤器应该添加在JS表达式的尾部,由“管道符”进行调用。注意:当全局过滤器和私有过滤器的命名一致时,会调用的是私有过滤器。但是通常情况下使用的是全局过滤器比较多。注意:过滤器的本质是一个函数。
2024-04-27 15:52:57
221
原创 子线程中获取父线程中的ThreadLocal值(InheritableThreadLocal)
从这里可以看出,在子线程中直接用父线程的ThreadLocal对象获取父线程的ThreadLocal值不可能获取到,所以可以在父线程中利用InheritableThreadLocal赋值,然后在子线程中用父线程的InheritableThreadLocal对象获取父线程的值。ThreadLocal 线程之间是隔绝的,各自的ThreadLocal会给自己建一个副本缓存,只存自己都东西。所以想在一个线程中获取另一个线程的东西必须用InheritableThreadLocal。
2024-04-14 10:09:33
404
原创 SortedMap和NavigableMap都是接口Map
TreeMap(class 类)实现NavigableMap(是一个接口inferface),然后NavigableMap继承SortedMap(是一个接口inferface)SortedMap是个接口(接口是特殊的抽象类)不能直接new,所以只能new TreeMap()NavigableMap也是个接口(接口是特殊的抽象类)不能直接new,所以只能new TreeMap()SortedMap:NavigableMap和SortedMap方法基本功能一致。。
2024-03-10 13:29:14
204
1
原创 Spring事务回滚规则,是否只读,超时时间,事务失效
默认情况下,事务只有遇到运行期异常(RuntimeExcertion的子类)以及 Error 时才会回滚,在遇到检查型(Checked Exception)异常时不会回滚。像 1/0,空指针这些是RuntimeException,而IOException 则算是 Checked Exception,换言之,默认情况下,如果发生IOException并不会导致事务回滚。
2023-12-21 14:33:09
791
原创 Spring事务浅析,传播特性,隔离级别
数据库事务是指作为单个逻辑工作单元执行的一系列操作,这些操作要么一起成功,要么一起失败,是一个不可分割的工作单元。在我们日常工作中,涉及到事务的场景非常多,一个service 中往往需要调用不同的 dao 层方法,这些方法要么同时成功要么同时失败,我们需要在service层确保这一点。说到事务最典型的案例就是转账了:张三要给李四转账 500块钱,这里涉及到两个操作,从张三的账户上减去500块钱,给李四的账户添加500块钱,这两个操作要么同时成功要么同时失败,如何确保他们同时成功或者同时失败呢?
2023-12-19 17:30:44
983
原创 代理和AOP
这种代理在我们日常生活中其实非常常见,例如房屋中介就相当于是一个代理,当房东需要出租房子的时候,需要发布广告、寻找客户、清理房间。这就是一个静态代理。动态代理讲究在不改变原类原方法的情况下,增强目标方法的功能,例如,大家平时使用的Spring 事务功能,在不改变目标方法的情况下,就可以通过动态代理为方法添加事务处理能力。编译时增强,这种有点类似于 Lombok的感觉,就是在编译阶段就直接生成了代理类,将来运行的时候,就直接运行这个编译生成的代理类,AspectJ就是这样一种编译时增强的工具。
2023-12-19 13:42:33
900
原创 Js 获取对象的基本类型
通过调用Object对象prototype上的toString方法,返回表示这个对象的字符,在通过slice方法截取出类型名称
2022-12-25 13:09:42
699
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人