- 博客(48)
- 收藏
- 关注
原创 vue3基础
将一切都定义在里面,然后最后return出去,外面直接用,如果要使用响应式的一定要用ref把数据包裹。第一种方式也是命令行 直接vue create 文件名创建vue3。alert(`我叫${name},今年${age}岁`)job.value.type="UI工程师"vue3中新的写法就是全部写在setup函数中很方便。let name =ref("张三")type:"前端工程师",作为我们应该注重了解源码和新的特性。也是直接命令行创建和第一种差不多。新的特性我们挨着来了解。
2024-08-14 17:02:59
378
原创 TS基础记录
面向对象概念其实很简单,万物皆是对象,面向对象编程就是所有的东西都是对象封装起来的,需要什么直接在对象里面调,例如ts中的windows对象....属性分为静态属性和实例属性,静态可以直接调用,实例必须创建出对象才能使用。拿人举例,人有眼睛鼻子....这些就是属性,人会吃饭、睡觉这些就是方法。//静态属性,可以直接调用 readonly 只读属性无法修改。//抽象类,不能被创造,只能被继承,可以添加抽象方法。对象可以被继承,里面的方法可以被重写,例如。//创建抽象方法,子类必须重写抽象方法。
2024-08-14 11:47:42
829
原创 TS基础记录
/这个ts的json可以写注释,用来指令哪些ts文件需要编译,/*任意文件,/**任意目录,./是当前目录 ,"types": ["node"] // 如果你的项目依赖于 Node.js 的类型定义,可以添加这个。// ../是父级目录,/是根目录(表示一下子回到最顶端的那个文件夹下)//有错误时候就不生成编译后的文件,默认为false。//所有严格检查的总开关,默认为false。//不生成编译后的文件默认为false。//不允许隐式any,默认为false。//是否移除注释,默认为false。
2024-08-13 17:28:26
860
原创 TS基础记录
/这个ts的json可以写注释,用来指令哪些ts文件需要编译,/*任意文件,/**任意目录,./是当前目录 ,//限制zy为一个对象,且里面必须要有name属性,它的属性值为string,age为可选的。//限制z为一个对象,且里面必须要有name属性且只能有name,他的属性值为string。//unknown不会把这个类型给别人,安全类型的any,any会把any类型给别人。// ../是父级目录,/是根目录(表示一下子回到最顶端的那个文件夹下)//后面的number表示函数返回值为number。
2024-08-09 17:36:08
364
原创 Mybatis-Plus基础
Mybatis-Plus工程的创建。java内置库提供data注解减少代码。mybatis-plus提供的接口。MyBatisPlus特性。mp对于null值处理。lambda格式查询。
2024-08-08 11:04:19
166
原创 SpringBoot基础
springboot整合mybatis。springboot的jar包启动。springboot整合junit。多环境启动springboot。springboot项目创建。springboot起步依赖。maven和boot项目兼容。配置properties。配置文件格式常用yml。
2024-08-07 16:36:05
214
原创 leetcode二分法和牛顿迭代法求根号x
x的平方根在不使用 sqrt(x)函数的情况下,得到x的平方根的整数部分重点考察:二分法、牛顿迭代。
2024-08-06 17:11:03
1549
原创 SpringMVC基础
不同命名的参数用@RequestParam。springmvc是我们视图层重要的框架。@RequestMapping注解。@ResponseBody注解。@ResponseBody注解。@RequestBody注解。开启json数据传递。
2024-08-05 17:04:43
414
原创 Spring基础
一般定义可以用component,但是根据层次可以写成不同的,便于区分、bean的生命周期也可以用注解进行。使用@Bean配置第三方bean。开启非单例bean也可以在这里。加载properties文件。spring整合mybatis。将独立的配置类加入核心配置。用注解代替xml配置开发。spring事务管理。
2024-08-02 17:19:53
236
原创 spring基础
spring做完市面最主流的框架学习它是每个java程序员必备的,我会将我完整的学习spring生态的笔记整理到博客上,感兴趣的可以关注,今天是spring的基础,到自动装配结束首先要了解的是spring的系统架构图片如下spring给我们提供了很便利的融合其它框架的条件,只需要短短几行配置就可以将别的框架融入进去。很方便,极大的简化了开发。下面是为什么要用ioc以及ioc是什么,能解决什么问题,我觉得就几个字降低耦合度,我们应该追求低耦合度的程序,spring就运用了这思想,给我们提供了降低耦合度的方法它
2024-07-31 17:05:16
375
原创 leetcode寻找数组中间值的数组坐标
为什么是这个思路,因为求中间值的坐标,就相当于当前值的2倍等于顺组的总和,因为是先加上当前值再乘以2,所以多了一个当前值要会减去一个当前值。为什么是这个思路,因为求中间值的坐标,就相当于当前值的2倍等于顺组的总和,因为是先加上当前值再乘以2,所以多了一个当前值要会减去一个当前值。如果不等于,就让total加上数组当前数,然后sum减去数组当前数,再继续这个过程,如果循环完,没有找到就返回-1。如果数组不存在中心下标,返回-1。然后进行循环判断,如果左边的和等于右边的和就返回i,就是数组的下标。
2024-07-31 16:18:58
388
原创 leetcode双指针删除重复元素
j为快指针,i为慢指针,当i==j时候,只移动j,i不动,不等的时候j和i都移动,并把j当前的值赋值给i+1的地方,最后返回i的位置即可完成这题。1、第一种思路可以是通过set进行数组的复制,这样就删除了多余的元素,再返回数组的长度,但是题目不允许产生额外空间。原地删除重复出现的元素,使每一个有序数组 nums个元素只出现一次,返回删除后数组的新长度。不能使用额外的数组空间,必须在原地修改输入数组并在使用O(1)额外空间的条件下完成。题目:删除排序数组中的重复项。2、用双指针的方式进行。
2024-07-30 14:30:34
279
原创 leetcode素数求解思路以及代码
/因为如果2是素数,那么2*2=4,2*3=6,2*4=8,2*5=10,2*6=12,2*7=14,2*8=16,2*9=18,2*10=20,2*11=22,2*12=24,2*13=26,2*14=28,2*15=30,2*16=32,这些注定不是素数为合数。j += i){ //因为i为外面的值,不能对i进行+1所有对j+=i,相当于每次把j+2和i+1是一个效果。//或者i*i<=x 因为如果2*6 = 12, 6*2=12,因此只用判断到中间即可。
2024-07-28 15:17:31
300
原创 uniapp小程序自定义tabBar解决思路
/index.jsdata: {list: [{text: "设备"},text: "曲线"},text: "告警"}, {text: "我的"},},methods: {})})</view></view>.tab-bar {bottom: 0;left: 0;right: 0;*/left: 0;
2024-07-26 09:47:42
1464
原创 一种基于数据库脚本的随机数id生成方法和应用案例
当新创建一张表,需要插入数据时,此时插入的数据是12345这种明文id,存在安全风险,且后续编码后,通过前台界面插入数据时的id是通过Mybatis-Plus动态生成的唯一id,就导致会出现下面这种情况,既不好管理,又存在风险。(@ExampleId, 1800718151097978881, '砂石路面1', 0, '农村公路水泥配置', '0', NULL, NULL, '2024-06-13 14:38:37', NULL, NULL),-- 生成一个随机数,范围可以调整。
2024-07-25 13:56:52
998
原创 前端如何联动赋值技术解决方案
1、初始化: 定义一个变量techLeve并将其值设为undefined,用于存储最终匹配到的等级。2、遍历等级范围: 使用for...in循环遍历this.levelCivil对象的每个等级。this.levelCivil应该是一个包含多个等级定义的对象,每个等级定义是一个字符串,表示一个分数区间,例如"[10,20)"表示10(含)到20(不含)的区间。3、解析等级区间: 使用slice()和split()方法从等级定义字符串中提取出分数的下限和上限,例如从"[10,20)"中得到10和20。
2024-07-25 13:50:44
632
原创 ConcurrentHashMap原理,idk7和idk8版本的区别
Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行。锁:Segment分段锁 Segment继承了ReentrantLock,锁定操作的Segment,其他的Segment不受影响,并发度为segment个数,可以通过构造函数指定,数组扩容不会影响其他的segment。锁:锁链表的head节点,不影响其他元素的读写,锁粒度更细,效率更高,扩容时,阻塞所有的读写操作、并发扩容。
2024-05-23 16:21:26
606
原创 Java面试基础
封装的主要目的是实现信息隐藏和安全性,通过将数据隐藏在类的内部,可以防止外部直接访问和修改对象的内部状态。总的来说,内连接返回两个表中交集的行,而左连接返回左表中的所有行,以及右表中满足条件的行,如果没有匹配的行,则为 NULL 值。即使是不同的子类对象,如果它们继承自同一个父类并且重写了相同的方法,那么可以根据实际对象的类型来调用相应的方法,从而实现不同行为的表现。抽象类的存在主要是为了定义一个通用的模板或者接口,子类通过继承抽象类,并实现其中的抽象方法,来提供具体的功能实现。关键字来修饰该方法。
2024-05-09 21:14:58
528
原创 Java面试基础
解释一 下Java中的HashMap和HashTable 的区别。总的来说,HashMap 在大多数情况下比 HashTable 更常用,因为它在性能上更优秀,并且允许键值对为 null。但在多线程环境下,如果需要线程安全的操作,可以选择使用 HashTable 或 ConcurrentHashMap。在Java中,反射机制指的是在运行时动态地获取类的信息以及操作类的属性、方法和构造函数的能力。
2024-05-09 19:48:23
881
原创 Java面试基础
什么是Java 中的多态性?在Java中,多态性(Polymorphism)是指同一个方法名字但是有不同的行为。它允许我们使用一个统一的接口来处理不同类型的对象,从而提高了代码的灵活性和可重用性。多态性在Java中主要通过两种方式实现:编译时多态性(静态多态性):也称为方法重载(Overloading)。在编译时,编译器会根据方法名和参数列表的不同来决定调用哪个方法。运行时多态性(动态多态性):也称为方法重写(Overriding)。在运行时,Java虚拟机(JVM)会根据对象的实际类型来确定调用哪个方法。
2024-05-09 19:37:39
2236
原创 Vue基础
在 Vue.js 中实现路由跳转通常使用 Vue Router,它是 Vue.js 的官方路由管理器。总的来说,computed 适用于简单的数据变化计算,而 watch 则适用于需要在数据变化时执行一些异步或复杂操作的场景。是 Vue.js 中的一个内置组件,用于缓存动态组件的状态,以便在组件切换时保留其状态,避免重新渲染和销毁。:在你的项目中创建一个路由配置文件,通常命名为。的方法很简单,只需要将需要缓存的组件放置在。如何在Vue.js中实现路由跳转?在 Vue.js 中,在 Vue.js 中,
2024-05-01 16:27:21
575
原创 Vue基础
具体来说,当你将一个普通的 JavaScript 对象传给 Vue 实例作为 data 选项时,Vue 将遍历此对象的所有属性,并使用 Object.defineProperty() 将它们转为 getter/setter。Vue.js 中的响应式原理是其核心特性之一,它使得数据的变化能够自动地反映到视图上,而不需要手动更新 DOM。,Vue 会检测到数据的变化,然后通知相关的组件进行重新渲染。用于双向数据绑定,将表单控件元素的值与Vue实例的数据属性进行双向绑定。当你修改 Vue 实例的数据时,例如。
2024-05-01 16:17:44
296
原创 MyBatis执行流程和延迟加载的原理
3.把order查询上来,然后调用user.setOrderList(List<Order>orderist),接着完成user.getOrderlist()方法的调用。2.当调用目标方法user.qetOrderlist0时,进入拦截器invoke方法,发现user.getOrderlist0是nul值,执行sql查询order列表。2.当调用目标方法时,进入拦截器invoke方法,发现目标方法是null值,执行sql查询3.获取数据以后,调用set方法设置属性值,再继续查询目标方法,就有值了。
2024-05-01 13:40:10
74
原创 Springboot自动配置原理
2,其中@EnableAutoConfiguration是实现自动化配置的核心注解。内部就是读取了该项目和该项目引用的Jar包的的classpath路径下META-INF/spring.factories文件中的所配置的类的全类名。在这些配置类中所定义的Bean会根据条件注解所指定的条件来决定是否需要将其导入到Spring容器中。3,条件判断会有像@ConditionalOnClass这样的注解,判断是否有对应的class文件,如果有则加载该类,把这个配置类的所有的Bean放入spring容器中使用。
2024-05-01 13:36:36
44
原创 SpringMVC的执行流程
③ HandlerMapping找到具体的处理器,生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet。③ HandlerMapping找到具体的处理器,生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet.② DispatcherServlet收到请求调用HandlerMapping(处理器映射器)② DispatcherServlet收到请求调用HandlerMapping(处理器映射器)⑥方法上添加了@ResponseBody。
2024-05-01 13:30:08
42
原创 Spring中的循环引用
循环依赖:循环依赖其实就是循环引用,也就是两个或两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于A循环依赖在spring中是允许存在,spring框架依据三级缓存已经解决了大部分的循环依赖。原因:由于bean的生命周期中构造函数是第一个执行的,spring框架并不能解决构造函数的的依。③ 三级缓存:缓存的是ObjectFactory,表示对象工厂,用来创建某个对象的。① 一级缓存:单例池,缓存已经经历了完整的生命周期,已经初始化完成的bean对象。构造方法出现了循环依赖怎么解决?
2024-05-01 13:22:48
53
原创 Sping事务
其本质是通过AOP功能,对方法前后进行拦截,将事务处理的功能编织到拦截的方法中,也就是在目标方法开始之前加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。AOP称为面向切面编程,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。事务通知只有捉到了目标抛出的异常,才能进行后续的回滚处理,如果目标自己处理掉异常,事务通知无法知悉。
2024-05-01 13:14:36
46
原创 Spring框架中的bean
因为一般在spring的bean的中都是注入无状态的对象,没有线程安全问题,如果在bean中定义了可修改的成员变量,是要考虑线程安全问题的,可以使用多例或者加锁来解决。当多用户同时请求一个服务时,容器会给每一个请求分配一个线程,这是多个线程会并发执行该请求对应的业务逻辑(成员方法),如果该处理逻辑中有对该单列状态的修改(体现为该单例的成员属性),则必须考虑线程同步问题。面试官:Spring框架中的单例bean是线程安全的吗?Spring框架中的单例bean是线程安全的吗?不是线程安全的,是这样的。
2024-05-01 13:05:28
107
原创 MySQL分库分表
1,前提,项目业务数据逐渐增多,或业务发展比较迅速单表的数据量达1000W或20G以后。1,水平分库,将一个库的数据拆分到多个库中,解决海量数据存储和高并发的问题。按id也就是范围路由,节点1(1-100万)节点2(100万-200万)3.I0瓶颈(磁盘10、网络I0)、CPU瓶颈(聚合查询、连接数太多)1.根据自己简历上的项目,想一个数据量较大业务(请求数多或业务累积大)3,垂直分库,根据业务进行拆分,高并发下提高磁盘I0和网络连接数。2,水平分表,解决单表存储和性能的问题。
2024-05-01 12:53:49
48
原创 MySQL主从同步原理
二进制日志(BINLOG)记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但不包括数据査询(SELECT、SHOW)语句。2.从库读取主库的二进制日志文件 Binlog,写入到从库的中继日志 Relay Log。从库读取主库的二进制日志文件 Binlog ,写入到从库的中继日志 Relay Log。MySQL主从复制的核心就是二进制日志,二进制日志记录了所有的 DDL语句和 DML语句。2.从库读取主库的二进制日志文件 Binlog,写入到从库的中继日志 Relay Log。
2024-05-01 12:44:13
37
原创 MVCC解释
readView解决的是一个事务查询选择版本的问题,在内部定义了一些匹配规则和当前的一些事务id判新该访问那个版本的数据,不同的隔离级别快照读是不一样的,最终的访问的结果不一样。不同事务或相同事务对同一条记录进行修改,会导致该记录的undolog生成一条记录版本链表,链表的头部是最新的旧记录,链表尾部是最早的旧记录。简单的select(不加锁)就是快照读,快照读,读取的是记录数据的可见版本,有可能是历史数据,不加锁,是非阻塞读。RC隔离级别下,在事务中每一次执行快照读时生成ReadView。
2024-05-01 12:14:25
482
1
原创 MySQL事务
所以,我们一般使用的都是mysql默认的隔离级别:可重复读。我举个例子:A向B转账500,转账成功,A扣除500元,B增加500元,原子操作体现在要么都成功,要么都失败在转账的过程中,数据要一致,A扣除了500,B必须增加500在转账的过程中,隔离性体现在A像B转账,不能受其他事务于扰在转账的过程中,持久性体现在事务提交后,要把数据持久化(可以说是落盘操作)事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。
2024-05-01 12:05:15
679
1
原创 SQL优化
候选人:嗯,这个也有很多,比如SELECT语句务必指明字段名称,不要直接使用select*,还有就是要注意SOL语句避免造成索引失效的写法;候选人:这个我们主要参考的阿里出的那个开发手册《嵩山版》,就比如,在定义字段的时候需要结合字段的内容来选择合适的类型,如果是数值的话,像tinyint、int、bigint这些类型,要根据实际情况选择。如果数据库的使用场景读的操作比较多的时候,为了避免写的操作所造成的性能影响 可以采用读写分离的架构。读写分离解决的是,数据库的写入,影响了查询的效率。
2024-05-01 11:47:16
587
原创 MySQL索引
候选人:MVSQL的默认的存储引擎InnoDB采用的B+树的数据结构来存储索引,选择B+树的主要的原因是:第一阶数更多,路径更短,第二个磁盘读写代价B+树更低,非叶子节点只存储指针,叶子阶段存储数据,第三是B+树便于扫库和区间查询,叶子节点是一个双向链表。候选人:嗯,索引在项目中还是比较常见的,它是帮助MVSQL高效获取数据的数据结构,主要是用来提高数据检索的效率,降低数据库的10成本,同时通过索引列对数据进行排序,降低数据排序的成本,也能降低了CPU的消耗。
2024-05-01 11:37:00
1929
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人