
JAVA
文章平均质量分 56
musite
今天也是头秃敲代码的一天呢。
展开
-
SpringBoot进阶之分布式调度Elastic-Job
SpringBoot进阶之分布式调度Elastic-Job之前写过了关于定时任务的一篇文章,一般来说在实际生产中都是需要用分布式调度来完成的。因为单机的处理有限,也不符合高可用。而且在单机下定时任务没什么问题,但是如果部署了多台服务,同时如果每台服务都有定时任务,就必须合理的控制让同一时间只有一个定时任务执行,避免混乱和错误出现。由此可见,分布式的任务调度很重要 。1.Elastic-Job 介绍Elastic-Job是一个分布式调度的解决方案,当当网的开源方案。由两个相互独立的子项目 Elastic原创 2021-10-15 18:15:27 · 506 阅读 · 0 评论 -
SpringBoot进阶之定时任务
定时任务 近期开发需要用到定时任务,写篇学习博客记录一下。比如每个月汇总上个月数据的报表或者定期的日志分析都会用到定时任务,我们可以直接使用SpringBoot 框架里Spring Framework 自带的定时任务。相关的注解@EnableScheduling :开启定时任务。@Scheduled : 在需要定时的方法类上标注。1.开启定时任务@SpringBootApplication@EnableSwagger2@EnableScheduling //开启定时任务public原创 2021-10-13 17:14:02 · 246 阅读 · 0 评论 -
算法练习Day24[LeetCode]206. 反转链表
206. 反转链表反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?方法一:迭代class Solution { public ListNode reverseList(ListNode head) { ListNode prev = null; ListNode cu原创 2021-03-01 12:47:11 · 230 阅读 · 0 评论 -
消息队列MQ
写项目的时候,设计数据库时,有这样一个疑问:公告的消息到底时全局唯一还是为每个用户都创建一条公告消息呢?如果全局唯一倒是好说,我们设置创建一个消息表来存储系统消息,只用往数据表中插入一条消息记录,可是这样的话,每个人都收到同一条公告消息,系统无法记录用户是否阅读了某条消息,哪些消息是未读消息,这样虽然节省空间,但是用户体验不好;但是我们如果给每个用户都发一条公告消息,比如说王者荣耀游戏,要同时给所有玩家发一条公告通知发放50铭文,好家伙,王者荣耀用户那么多,意味着要在消息表中插入千万条消息记录,每条记录原创 2021-02-24 22:05:30 · 280 阅读 · 0 评论 -
HashMap数据结构分析+源码阅读笔记
首先,我们要知道什么是HashMapHashMap 简介HashMap 主要用来存放键值对,它基于哈希表的Map接口实现,是常用的Java集合之一。JDK1.8 之前 HashMap数据结构 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的(数据结构中的连地址法解决冲突)。JDK1.8 以后在解决哈希冲突时有了较大的变化,当链表长度大于8,且数组大小大于等于64时,转换为红黑树,用来减少搜索时间。(如果数组大小小于64,首先考虑数组扩容),另外如果红黑树的节原创 2021-02-22 20:28:08 · 228 阅读 · 1 评论 -
算法练习Day23[LeetCode]33. 搜索旋转排序数组
33. 搜索旋转排序数组升序排列的整数数组 nums 在预先未知的某个点上进行了旋转(例如, [0,1,2,4,5,6,7] 经旋转后可能变为 [4,5,6,7,0,1,2] )。请你在数组中搜索 target ,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。示例 1:输入:nums = [4,5,6,7,0,1,2], target = 0输出:4示例 2:输入:nums = [4,5,6,7,0,1,2], target = 3输出:-1示例 3:输入:nums =原创 2021-02-21 23:11:58 · 182 阅读 · 0 评论 -
算法练习Day22[LeetCode]46. 全排列
46. 全排列给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,2,1], [3,1,2]]回溯法 :一种通过探索所有可能的候选解来找出所有的解的算法。如果候选解被确认不是一个解的话(或者至少不是最后一个解),回溯算法会通过在上一步进行一些变化抛弃该解,即回溯并且再次尝试。class Solution { public List<原创 2021-02-19 16:52:36 · 125 阅读 · 0 评论 -
三层架构和MVC的区别
一、三层架构三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。区分层次的目的即为了“高内聚低耦合”的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或称为领域层)、表示层。二、MVCMV.转载 2021-02-18 22:19:25 · 619 阅读 · 0 评论 -
算法练习Day21[LeetCode]199. 二叉树的右视图
199. 二叉树的右视图给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释: 1 <--- / \2 3 <--- \ \ 5 4 <---方法一:广度优先搜索看到题目后,我们能立刻想到对二叉树采用层次遍历的方法,对于每层来说,最右边的结点一定是最后被遍原创 2021-02-18 17:31:09 · 167 阅读 · 0 评论 -
算法练习Day20[LeetCode]70. 爬楼梯
70. 爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶方法:动态规划我们用 f(x) 表示爬到第 x级台阶的方案数,考虑最后一步可能跨了一级台阶,也原创 2021-02-17 22:13:25 · 216 阅读 · 0 评论 -
MongoDB连接遇到的问题:找不到vcruntime140_1.dll和Authentication failed
绿色版MongoDB安装步骤:MongoDB.zip下载下载zip文件,解压。新建文件夹: 在\MongoDB根目录下的data目录中创建文件夹dbdata/db 用来存放数据配置文件 mongo.confdbpath=D:\MYSQL\MongoDB\MongoDB\data\db#端口号 默认为27017port=27017 #开启用户认证auth=truebind_ip=0.0.0.0配置环境变量: 右键我的电脑->属性->高级系统设置->环原创 2021-02-17 00:42:01 · 1421 阅读 · 1 评论 -
算法练习Day19[LeetCode]139. 单词拆分
139. 单词拆分标题给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。示例 2:输入: s = "applepenapple",原创 2021-02-15 22:33:05 · 285 阅读 · 1 评论 -
算法练习Day18[LeetCode]121. 买卖股票的最佳时机
121. 买卖股票的最佳时机给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5原创 2021-02-14 20:23:12 · 175 阅读 · 0 评论 -
算法练习Day17[LeetCode]1014. 最佳观光组合
1014. 最佳观光组合给定正整数数组 A,A[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的距离为 j - i。 一对景点(i < j)组成的观光组合的得分为(A[i] + A[j] + i - j):景点的评分之和减去它们两者之间的距离。返回一对观光景点能取得的最高分。示例:输入:[8,1,5,2,6]输出:11解释:i = 0, j = 2, A[i] + A[j] + i - j = 8 + 5 + 0 - 2 = 11提示:2 <= A.le原创 2021-02-13 16:45:49 · 179 阅读 · 0 评论 -
算法练习Day16[LeetCode]42. 接雨水
42. 接雨水给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例 2:输入:height = [4,2,0,3,2,5]输出:9提示:n == height.length0 <= n <原创 2021-02-12 22:08:11 · 339 阅读 · 0 评论 -
算法练习Day15[LeetCode]53. 最大子序和
今天是除夕,祝大家新年快乐。言之命至,天随人愿。53. 最大子序和53. 最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [0]输出:0示例 4:输入:nums = [-1]输出:-1原创 2021-02-11 16:47:05 · 137 阅读 · 0 评论 -
算法练习Day14[LeetCode]5. 最长回文子串
5. 最长回文子串给你一个字符串 s,找到 s 中最长的回文子串。 示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"示例 3:输入:s = "a"输出:"a"示例 4:输入:s = "ac"输出:"a" 提示:1. 1 <= s.length <= 10002. s 仅由数字和英文字母(大写和/或小写)组成法一:动态规划对于一个子串而言,如果它是回文串,原创 2021-02-10 15:03:19 · 277 阅读 · 0 评论 -
算法练习Day13[LeetCode]990. 等式方程的可满足性
990. 等式方程的可满足性给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为 4,并采用两种不同的形式之一:"a==b" 或 "a!=b"。在这里,a 和 b 是小写字母(不一定不同),表示单字母变量名。只有当可以将整数分配给变量名,以便满足所有给定的方程时才返回 true,否则返回 false。 示例 1:输入:["a==b","b!=a"]输出:false解释:如果我们指定,a = 1 且 b = 1,那么可以满足第一个方程,但无原创 2021-02-10 00:44:43 · 169 阅读 · 0 评论 -
算法练习Day12[LeetCode]200. 岛屿数量
200. 岛屿数量200. 岛屿数量给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。 示例 1:输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"]]输出:原创 2021-02-09 00:50:18 · 508 阅读 · 0 评论 -
HTTP协议:请求消息与响应消息
HTTP:请求消息与响应消息* 概念:Hyper Text Transfer Protocol 超文本传输协议 * 传输协议:定义了,客户端和服务器端通信时,发送数据的格式 * 特点: 1. 基于TCP/IP的高级协议 2. 默认端口号:80 3. 基于请求/响应模型的:一次请求对应一次响应 4. 无状态的:每次请求之间相互独立,不能交互数据 * 历史版本: * 1.0:每一次请求响应都会建立新的连接 * 1.1:复用连接* 请求消息数据格式* * 数据格式: 1原创 2021-02-07 23:53:57 · 189 阅读 · 0 评论 -
tomcat 黑屏一闪而过和中文乱码问题
tomcat 黑屏一闪而过和中文乱码问题Tomcat:web服务器软件下载:http://tomcat.apache.org/安装:解压压缩包即可。注意:安装目录建议不要有中文和空格卸载:删除目录即可启动:bin/startup.bat ,双击运行该文件即可访问:浏览器输入:http://localhost:8080 回车访问自己http://别人的ip:8080 访问别人可能遇到的问题:黑窗口一闪而过:原因: 没有正确配置JAVA_HOME和J原创 2021-02-04 18:10:27 · 368 阅读 · 0 评论 -
算法练习Day11 [LeetCode]560. 和为 K 的子数组
560. 和为 K 的子数组给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。暴力解法:class Solution { public int subarraySum(int[]原创 2021-02-02 21:55:37 · 200 阅读 · 0 评论 -
算法练习Day10 [LeetCode]974. 和可被 K 整除的子数组
974. 和可被 K 整除的子数组给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。 示例:输入:A = [4,5,0,-2,-3,1], K = 5输出:7解释:有 7 个子数组满足其元素之和可被 K = 5 整除:[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3] 提示:1. 1 <= A.length <= 300002. -原创 2021-02-01 21:19:54 · 187 阅读 · 2 评论 -
【JDBC】使用c3p0数据库连接池的各种报错警告
使用c3p0数据库连接池的各种报错警告使用c3p0数据库连接池的时候,先导入了三个jar包在lib 文件夹中,c3p0-0.9.5.2.jarmchange-commons-java-0.2.3.4.jarmysql-connector-java-8.0.13.jar注意下载的 c3p0 jar包要与mchange-commons-java jar包和mysql-connector-java jar包以及你的mysql版本一致,不一致会报错然后写c3p0-config.xml配置文原创 2021-01-28 19:52:21 · 4355 阅读 · 0 评论 -
算法练习Day8 [LeetCode]15. 三数之和
[LeetCode]15. 三数之和给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[] 提示:0 <= nums.le原创 2021-01-27 20:39:57 · 112 阅读 · 0 评论 -
算法练习Day7 [LeetCode]有序数组相关问题
[LeetCode]有序数组相关问题88. 合并两个有序数组给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。示例 1:输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3输出:[1,2原创 2021-01-26 18:34:59 · 252 阅读 · 0 评论 -
算法练习Day6 [LeetCode]滑动窗口相关题目
[LeetCode]滑动窗口相关题目首先我们要了解什么是滑动窗口?滑动窗口算法可以用以解决数组/字符串的子元素问题,它可以将嵌套的循环问题,转换为单循环问题,降低时间复杂度。滑动窗口最大值给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例 1:输入:nums = [1,3,-1,-3,5,3,6,7], k = 3输出:[3,3,5,5,6,7原创 2021-01-25 18:58:29 · 170 阅读 · 0 评论 -
算法练习Day4 [LeetCode]缺失的第一个正数
[LeetCode]缺失的第一个正数给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。进阶:你可以实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案吗?示例 1:输入:nums = [1,2,0] 输出:3 示例 2:输入:nums = [3,4,-1,1] 输出:2 示例 3:输入:nums = [7,8,9,11,12] 输出:1提示:0 <= nums.length <= 300-231 <= nums[i] <= 23原创 2021-01-23 13:49:11 · 228 阅读 · 0 评论 -
算法练习Day3 [LeetCode] Add Two Numbers 两数相加
[LeetCode] Add Two Numbers 两数相加You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.You原创 2020-07-18 22:33:57 · 156 阅读 · 0 评论 -
JDBC入门操作——连接Mysql数据库
JDBC入门操作——连接Mysql数据库使用idea连接MySQL数据库步骤导入驱动jar包复制包到目录下右键 add as library注册驱动获取数据库连接对象定义sql语句获取执行sql的对象 statement执行sql处理结果释放资源示例代码如下package cn.itcast.jdbc;import java.s...原创 2019-11-05 18:10:34 · 431 阅读 · 0 评论 -
黑马MYSQL课程的基础语法笔记
今日内容数据库的基本概念MySQL数据库软件安装卸载配置SQL数据库的基本概念1. 数据库的英文单词: DataBase 简称 : DB2. 什么数据库? * 用于存储和管理数据的仓库。3. 数据库的特点: 1. 持久化存储数据的。其实数据库就是一个文件系统 2. 方便存储和管理数据 3. 使用了统一的方式操作数据库 -- SQL4. 常见的...原创 2019-10-17 16:51:44 · 1982 阅读 · 0 评论 -
正则表达式(JAVA)
一、定义正则表达式是一个强大的字符串处理工具,可以对字符串进行查找、提取、分割、替换等操作。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。正则表达式可以用来搜索、编辑或处理文本。二、创建正则表达式本来说偷懒用别人的表格,但是想了想还是自己手敲一遍吧,帮助记忆。表一 正则表达式所支持的合法字符字符解释x字符x(X可以代表任何合法的字符)...原创 2019-10-14 20:57:47 · 140 阅读 · 0 评论 -
PTA 7-33 空心字母金字塔(StringBuilder应用实例)
7-33 空心字母金字塔 (10 分)输入一个大写的英文字母,输出空心的字母金字塔。输入格式:一个大写英文字母。输出格式:一个空心的大写英文字母金字塔,其中第1层的“A”在第1行的第40列,列从1开始计数。输入样例:E输出样例: A ...原创 2019-10-09 18:53:18 · 4099 阅读 · 1 评论 -
JAVA线程间通信(二)—等待唤醒机制(生产者和消费者问题)
等待唤醒机制上一篇我们说到,为何输出多次相同内容?为何输出多次? mike....manmike....man.......丽丽....女女女女丽丽....女女女女原因: 两个线程互相争夺cpu使用权,输入线程抢夺到后持续一段时间输入,等到某一时刻被输出线程抢到cpu,开始疯狂输出一段时间。那么,如何实现输入一个姓名性别,输出一个相应的姓名性别呢?这就需要引...原创 2019-09-04 18:34:51 · 260 阅读 · 0 评论 -
JAVA 线程间通信(一)安全问题
线程间通信线程间通信其实就是多个线程在操作用一个资源,但是操作的动作不同。代码示例:两个线程同时操作性别和姓名出现安全隐患package contact;class Res{ String name; String sex;}class Input implements Runnable{ private Res r; Input(Res r) { this...原创 2019-09-02 19:37:17 · 210 阅读 · 0 评论 -
JAVA单例设计模式(饿汉式和懒汉式)
单例设计模式单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。两种模式饿汉式懒汉式1.1 饿汉式一个类只能创建一个对象...原创 2019-08-17 13:35:16 · 219 阅读 · 0 评论 -
JAVA多线程(两种方法创建多线程)
JAVA多线程1.1首先了解概念:进程:是一个正在执行的程序。关于进程有很多描述方式,主要强调其并发性和动态性,进程是系统进行资源分配和调度的基本单位。进程主要由三部分组成:程序,数据集合和进程控制块(pcb)线程:进程中的一个控制单元或一个可调度实体。线程只拥有极少量运行必不可少的资源:程序计数器,一组寄存器和栈,但它可以与同属一个进程的其他线程共享进程所拥有的全部资源...原创 2019-08-12 17:45:36 · 276 阅读 · 0 评论 -
JAVA 多线程之死锁
死锁一、死锁的定义 多线程以及多进程改善了系统资源的利用率并提高了系统 的处理能力。然而,并发执行也带来了新的问题——死锁。所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。 死锁,是指两个或两个以上的线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。Java中死锁最简单的情况是,一个线程...原创 2019-08-19 14:05:43 · 130 阅读 · 0 评论