- 博客(16)
- 收藏
- 关注
原创 数据结构与算法入门教程推荐
Hello 算法》:动画图解、一键运行的数据结构与算法教程,支持 Python, C++, Java, C#, Go, Swift, JS, TS, Dart, Rust, C, Zig 等语言。“一本通俗易懂的数据结构与算法入门书,引导读者手脑并用地学习,强烈推荐算法初学者阅读。“如果我当年学数据结构与算法的时候有《Hello 算法》,学起来应该会简单 10 倍!链接:https://github.com/krahets/hello-algo。—— 李沐,亚马逊资深首席科学家。
2024-03-15 22:52:35 263 1
原创 Java基础知识整理(一)
编译与解释并存:Java运行时会先通过编译器编译成.class文件,而后加载到JVM,并由JVM中的字节码执行引擎(JIT、解释器等)来转成机器码执行。因此编译与解释共存。平台无关性:此特点依靠JVM保证,JVM是软件实现的,可以装在不同的平台,从而实现跨平台都可以运行。支持多线程:Java中提供了多线程的机制,Java线程与操作系统内核线程为1:1关系。面向对象:Java是一门面向对象的语言,好处是更加容易维护和拓展等。
2024-03-11 21:23:59 2003
原创 数据结构-约瑟夫环问题
约瑟夫问题为:设编号为1,2,……n得n个人围坐一圈,约定编号为k(k大于等于1并且小于等于n)的人从1开始报数,数到m的那个人出列。它的下一位继续从1开始报数,数到m的人出列,依次类推,直到所有人都出列为止。
2023-09-06 22:47:41 428 1
原创 数据结构-单链表
链表是一个有序的列表。1、链表是以节点的方式来存储,是链式存储2、每个节点包含 data 域, next 域:指向下一个节点.3、如图:发现链表的各个节点不一定是连续存储.4、链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定内存布局:逻辑布局:直接添加思路:一、添加(创建)1、先创建一个head 头节点, 作用就是表示单链表的头2、后面我们每添加一个节点,就直接加入到 链表的最后二、遍历:1、通过一个辅助变量遍历,帮助遍历整个链表,为null 终止按顺序添加节点思路:1
2023-09-03 18:23:48 427
原创 单点登录常用实现方式
单点登录常用实现方式1. session复制当在一个模块进行登录后,存储到session中,并将session的值通过复制到其他的微服务模块中,实现每个模块中都有该session,当访问其他模块时,通过取出session中的登录信息,实现单点登录操作。但是该方法有很大的缺点,当服务模块数比较多的时候,会很浪费资源,保存了很多的重复数据。2. cookie+redis方式当用户在一个模块登录后,将信息存储到两个地方。(1)当在一个模块登录后,将登录信息先存储到redis中,存储方式如下:key-
2020-12-06 14:33:13 183 1
原创 [bug]Cannot find module ‘@babel/compat-data/corejs3-shipped-proposals 解决办法
[bug]Cannot find module ‘@babel/compat-data/corejs3-shipped-proposals 解决办法在使用nutx启动项目时,报错:解决:输入命令:npm update --depth 5 @babel/compat-data再次运行:npm run dev
2020-12-04 15:57:55 1260
原创 动态规划解题思路
动态规划一直以来都没有好好的了解动态规划问题,因为现在很多的笔试题中都会涉及动态规划的问题,所以通过学习动态规划来记录一下学习的笔记。例题:换硬币问题:给出不同面额的硬币以及一个总金额. 写一个方法来计算给出的总金额可以换取的最少的硬币数量. 如果已有硬币的任意组合均无法与总金额面额相等, 那么返回 -1.样例输入:[2, 5, 7]27输出: 5解释:27 = 7 + 5 + 5 + 5 + 5动态规划题目的特点动态规划的解题步骤1. 确定状态:最后一步关键
2020-11-30 16:57:59 123
原创 spring注解驱动(三)
spring注解驱动(三)1. @Value用于给属性赋值基本数值直接赋值;使用SpEL,#{};使用${},取出配置文件中的值(运行时环境变量里面的值)使用@PropertiesSource在配置类中导入外部的配置文件的k/v保存到运行时的环境变量中。2.自动装配spring利用依赖注入(DI),来完成对ioc容器中的各个组件的依赖关系赋值。 @AutoWired:自动注入默认按照类型进行注入applicationContext.getBean(BookDao.class),找到就
2020-11-20 19:41:57 122
转载 根据前序遍历和中序遍历建立二叉树
根据前序遍历和中序遍历建立二叉树1. 递归法:先序遍历:根节点→左子树→右子树。中序遍历:左子树→根节点→右子树。后续遍历:左子树→右子树→根节点。根据前序遍历和中序遍历建立二叉树,根据以上性质可知:前序遍历首个元素为二叉树的根节点root;根据前序遍历找到中序遍历中的root的索引位置,可以将中序遍历分为【左子树|根节点|右子树】;根据中序遍历的左/右子树可以将前序遍历分为【根节点|左子树|右子树】。递推参数: 根节点在前序遍历的索引 root 、子树在中序遍历的左边界 left 、子
2020-11-20 15:43:08 2118
原创 spring注解驱动(二)
spring注解驱动(二)@Import给容器中注册组件的方式:包扫描+注解标注注解(@Controller、@Service、@Repository、@Component)【局限于自己写的类】@Bean【导入第三方包里面的组件】@Import【快速给容器导入一个组件】@Import(要导入到容器的组件)容器中就会自动注册这个组件,id默认是全类名。ImportSelector:返回导入的组件的全类名数组。 public class MyImportSelector impl
2020-11-19 20:52:39 72
原创 程序死锁原因
程序死锁原因交叉锁可导致程序出现死锁线程A持有R1的锁等待R2的锁,同时线程B持有R2的锁等待R1的锁,这种情况最容易导致死锁的产生内存不足当并发请求系统可用内存时,如果此时系统内存不足,则可能会出现死锁。例如:两个线程T1和T2,执行某个任务,其中T1已经获取了10MB内存,T2获取了20MB内存,如果每个线程的执行单元都需要30MB的内存,但是剩余可用内存刚好为20MB,那么两个线程有可能都在等待彼此能够释放内存资源...
2020-11-19 15:50:35 301
原创 spring注解驱动(一)
spring注解驱动(一)@Configuration作用于类上,指定当前类是一个配置类,相当于配置spring的容器(应用上下文)。@Bean作用域方法上,将方法的返回值作为bean对象放入spring容器中,如果没有指定bean的名称,默认是方法名。@ComponentScan配置启动时,要扫描的包路径。可以配置过滤器表示过滤包的规则。includeFilters:指定扫描时,包含哪些扫描组件,如果没有禁用默认的扫描规则,除了当前注解中包含的外,还会扫描默认规则的所有组件。可以通过置u
2020-11-18 20:36:42 145
原创 synchronized
深入理解synchronized关键字synchronized提供了一种互斥机制,也就是说在同一时刻,只能有一个线程访问同步资源,线程获取到的是与mutex关联的monitor锁。synchronized关键字包括monitor enter和monitor exit两个JVM指令,他能够保证在任何时候任何线程执行到monitor enter成功之前都必须从主内存中获取数据,而不是从缓存中,在monitor exit运行成功之后,共享变量被更新后的值必须刷入主内存。Monitor enter每个对象都
2020-11-17 20:28:35 89
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人