摘要: 构建一个类似springmvc的框架 大致结构: DispatcherServlet,接收所有请求,然后进行分发 自定义Controller注解,RequestMapping注解 设置ViewResolver 视图解析器 大致步骤: 把controller和注解进行关联,可以使用url找到对应的方法 阅读全文
posted @ 2021-03-15 20:24 TidalCoast 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 如何在在云服务器上部署javaweb项目(阿里云为例) 一、准备一个云服务器(以阿里云为例) 1.注册阿里云账号 https://www.aliyun.com 2.进行学生认证,获取免费服务器 https://developer.aliyun.com/adc/student 按照步骤来, 体验结束之 阅读全文
posted @ 2021-03-06 16:44 TidalCoast 阅读(1147) 评论(0) 推荐(0) 编辑
摘要: java锁相关二 1.乐观锁和悲观锁 乐观锁概念:对于多线程的并发操作,乐观锁一直保持“乐观态度”,认为获取锁的线程在读写数据时,其它线程不会来干扰,所以不会添加锁,只会在修改数据之前去判断有无别的线程修改了 数据(比如通过版本号来判断),如果当前数据没有被更新,则将自己修改的结果写入。如果被修改了 阅读全文
posted @ 2021-01-24 14:36 TidalCoast 阅读(69) 评论(0) 推荐(0) 编辑
摘要: java锁相关一 1.什么是锁,锁的概念 java中锁的作用就是用来解决线程安全问题,避免线程之间共享的数据出现错误,可以说, 锁作为并发共享数据,保证一致性的工具 2.如何使用锁 java中提供两种锁的方式,一种是通过synchronized关键字,一种是通过lock类 (1)synchroniz 阅读全文
posted @ 2021-01-23 21:56 TidalCoast 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 一,四种常见的线程池类型 1.SingleThreadExecutor,单线程化的线程池 //使用Executors 工具类来创建一个单线程的线程池 //单线程线程池,可以保证线程按照顺序执行 ExecutorService singleThread = Executors.newSingleThr 阅读全文
posted @ 2021-01-22 22:04 TidalCoast 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 如何利用java写一个爬虫程序 首先,要先导入jsoup依赖 <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.12.1</version> </dependency> 导入依赖之后 阅读全文
posted @ 2021-01-20 21:42 TidalCoast 阅读(677) 评论(0) 推荐(0) 编辑
摘要: js Dom编程 动态添加和删除表格行 要求:制作一个表格,能够动态添加和删除学生信息 1)能够在表格末尾添加一行学生信息 2)能够删除选中的一行学生信息 步骤: 1)写一个js函数能够动态添加表格的信息 2)写一个js函数能够删除当前所选的行信息 首先,我们先把表头创建好 <table id="t 阅读全文
posted @ 2020-10-13 17:51 TidalCoast 阅读(705) 评论(0) 推荐(0) 编辑
摘要: LeetCode pro538 leetcode的一道简单算法题,是关于累加树的,要求把二叉搜索树转换为累加树 题干: 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。 例如: 输入 阅读全文
posted @ 2020-09-21 18:07 TidalCoast 阅读(253) 评论(0) 推荐(0) 编辑
摘要: Es6中新增了对数组拆分并且赋值的方法——解构赋值 例子: let arr = [1, 2, 3]; let [a, b, c] = arr; console.log("a = " + a);// a = 1 console.log("b = " + b);// b = 2 console.log( 阅读全文
posted @ 2020-09-14 15:06 TidalCoast 阅读(918) 评论(0) 推荐(0) 编辑
摘要: java线程死锁 java线程死锁代码示例: 通过lock实现死锁 public class DeadLockTest { Lock lock1 = new ReentrantLock(true); Lock lock2 = new ReentrantLock(true); public void 阅读全文
posted @ 2020-09-06 19:39 TidalCoast 阅读(134) 评论(0) 推荐(0) 编辑