自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

十一月de肖邦

程序员新手一枚,若文章有何谬误,请指正!

  • 博客(29)
  • 收藏
  • 关注

原创 利用ThreadPoolTaskExecutor创建线程池,并实现数据透传

1.线程池配置@Configurationpublic class ThreadPoolConfig { /** * cpu内核 暂时默认8核 */ private static final int CORE_SIZE = 8; /** * 核心线程数 暂定为I/O密集型 */ private static final int CORE_POOL_SIZE = 2 * CORE_SIZE + 1; /** *

2022-03-30 17:08:57 3035

原创 springboot+elasticsearch+logstash+kibana

SpringBoot整合ELK日志收集

2022-02-18 09:37:52 1594

原创 LeetCode 207:课程表

你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 bi 。例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1 。请你判断是否可能完成所有课程的学习?如果可以,返回 true ;否则,返回 false 。示例 1:输入:numC

2021-12-12 19:43:18 126

原创 LeetCode 227:基本计算器 II

给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。示例 1:输入:s = “3+2*2”输出:7示例 2:输入:s = " 3/2 "输出:1示例 3:输入:s = " 3+5 / 2 "输出:5提示:1 <= s.length <= 3 * 105s 由整数和算符 (’+’, ‘-’, ‘*’, ‘/’) 组成,中间由一些空格隔开s 表示一个 有效表达式表达式中的所有整数都是非负整数,且在范围 [0, 231 - 1]

2021-12-08 21:14:48 105

原创 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.length <= 3000-105 &

2021-06-14 17:38:30 74

原创 LeetCode 11:盛最多水的容器

给你n个非负整数a1,a2,…,an,每个数代表坐标中的一个点(i,ai)。在坐标内画n条垂直线,垂直线i的两个端点分别为(i,ai)和(i,0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且n的值至少为2。示例:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49思路:算法流程: 设置双指针 i, j 分别位于容器

2021-06-14 15:42:56 66

原创 HJ67 24点游戏算法

问题描述:给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利输入(本题含有多组样例输入。):4个1-10的数字。[数字允许重复,但每个数字仅允许使用一次,测试用例保证无异常数字。输出:true or false示例:输入7 2 1 10输出truepublic class Main{ public static void main(String[] args){ Scanner scan = new Scanner(System.in);

2021-05-24 22:30:40 767 1

原创 HJ69 矩阵乘法

如果A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C。矩阵的大小不超过100*100输入描述:输入包含多组数据,每组数据包含:第一行包含一个正整数x,代表第一个矩阵的行数第二行包含一个正整数y,代表第一个矩阵的列数和第二个矩阵的行数第三行包含一个正整数z,代表第二个矩阵的列数之后x行,每行y个整数,代表第一个矩阵的值之后y行,每行z个整数,代表第二个矩阵的值输出描述:对于每组输入数据,输出x行,每行z个整数,代表两个矩阵相乘的结果示例:输入

2021-05-23 22:01:12 220

原创 HJ93 数组分组

输入int型数组,询问该数组能否分成两组,使得两组中各元素加起来的和相等,并且,所有5的倍数必须在其中一个组中,所有3的倍数在另一个组中(不包括5的倍数),能满足以上条件,输出true;不满足时输出false。输入描述:第一行是数据个数,第二行是输入的数据输出描述:返回true或者false示例:输入41 5 -5 133 5 8输出truefalse说明第一个样例:第一组:5 -5 1,第二组:1第二个样例:由于3和5不能放在同一组,所以不存在一种分法。public cl

2021-05-23 09:55:32 521

原创 HJ102 字符统计

输入一个只包含小写英文字母和数字的字符串,按照不同字符统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASCII码由小到大排序输出。本题含有多组样例输入输入描述:一个只包含小写英文字母和数字的字符串。输出描述:一个字符串,为不同字母出现次数的降序表示。若出现次数相同,则按ASCII码的升序输出。示例:输入aaddccdc1b1bbbbbbbbb输出cdab1说明:第一个样例里,c和d出现3次,a出现2次,但c的ASCII码比d小,所以先输出c,再输出d,最后输出a.pu

2021-05-22 10:46:59 197

原创 HJ103 Redraiment的走法

Redraiment是走梅花桩的高手。Redraiment可以选择任意一个起点,从前到后,但只能从低处往高处的桩子走。他希望走的步数最多,你能替Redraiment研究他最多走的步数吗?示例:2 5 1 5 4 5输出:3说明:6个点的高度各为 2 5 1 5 4 5如从第1格开始走,最多为3步, 2 4 5从第2格开始走,最多只有1步,5而从第3格开始走最多有3步,1 4 5从第5格开始走最多有2步,4 5所以这个结果是3。public static void main(String[

2021-05-22 09:14:28 316

原创 辗转相除/更相减损/移位,求最大公约数

本文总结自:《漫画算法:小灰的算法之旅》魏梦舒public class Main{ public static void main(String[] args){ int a = 35; int b = 21; System.out.println(getGreatestCommonDivisor(a, b)); System.out.println(subtract(a, b)); System.out.print

2021-05-20 21:44:35 101

原创 动态规划

1.金矿问题有一位国王拥有5座金矿,每座金矿的黄金储量不同,需要参与挖掘的工人人数也不同。设黄金储量golden = {400, 500, 200, 300, 350},需要参与的工人数为person = {5, 5, 3, 4, 3}。如果参与挖矿的工人的总数是10。每座金矿要么全挖,要么不挖,不能派出一半人挖取一半的金矿。要求用程序求出,最多能挖到多少黄金?public static void main(String[] args) { int w = 10; in

2021-04-26 21:51:29 80

原创 BitMap的原理和实现

1.原理:32位机器上,对于一个整型数,比如int a=1, int占4字节,1字节=8位(1 byte = 8 bit), 在内存中占32bit位,这是为了方便计算机的运算。如果每个数字用int存储,那就是20亿个int,因而占用的空间约为 (2000000000*4/1024/1024/1024)≈7.45G如果按位存储就不一样了,20亿个数就是20亿位,占用空间约为 (2000000000/8/1024/1024/1024)≈0.233GBitMap使用1bit表示一个关键字的状态(可表示

2020-09-23 20:32:34 534

原创 List元素类型为Integer时,执行remove(obj),需区分obj是int还是Integer

话不多说,直接上代码:import java.util.ArrayList;import java.util.List;public class RemoveTest { public static void main(String[] args) { List<Integer> firstList = new ArrayList<>(); firstList.add(1); firstList.add(2);

2020-06-07 08:50:21 336

原创 JVM内存分配策略

本文总结自 深入理解Java虚拟机 - 周志明1.对象优先在Eden分配大多数情况下,对象在新生代Eden中分配。当Eden区没有足够空间进行分配时,将发起一次Minor GC。2.大对象直接进入老年代大对象是指,需要大量连续内存空间的Java对象,最典型的就是那种很长的字符串以及数组。大对象对虚拟机的内存分配来说就是一个坏消息(特别是“朝生夕死”的“短命大对象”)。虚拟机提供了一个-...

2020-03-22 10:17:21 118

原创 JVM垃圾收集算法

本文总结自 深入理解Java虚拟机 - 周志明1.标记-清除算法(Mark-Sweep)首先标记出所有需要回收的对象,在标记完成后统一回收。缺点: (1)**效率问题**,标记和清除两个过程的效率都不高; (2)**空间问题**,标记清除之后产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中 需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另一次垃圾收集...

2020-03-22 09:25:05 95

原创 oracle在where/order by中引用取别名的列

现有一张用户电话联系方式表(USER_CONTACT):1.取4位尾号并排序(order by 别名列)SELECT USER_NAME, SUBSTR(PHONE_NUMBER, -4) AS TAIL_NUMBERFROM USER_CONTACTORDER BY TAIL_NUMBER成功查询出结果:2. 查询固定某尾号(where 引用别名列),如:9873SELEC...

2020-01-18 18:26:29 993

原创 使用Merge into实现: 存在则更新,不存在则插入

现有记录用户每天的访问次数记录表PD_VISITS:当需要记录用户某次访问数据时,需考虑该用户当天是否已存在记录。存在则次数count+1,不存在则需插入一条count为1的该用户的访问记录。Merge into的用法如下(loginName为当前用户,cdate为当天时间):MERGE INTO PD_VISITS VIUSING( SELECT #{loginName,j...

2020-01-14 22:14:46 805

原创 oracle rank/dense_rank排序函数

常用格式:SELECT 其他需要查询的字段, RANK()/DENSE_RANK() OVER (PARTITION BY 分组字段 ORDER BY 排序字段 ASC/DESC) RANK(别名,可以自取)FROM 目标表名;某水果店销往云贵川地区的销售记录表如下:现需统计各个地区销售额最高的水果,1.使用RANK函数,sql如下:SELECT ID, NAME, LOCATI...

2019-12-29 11:00:58 317

原创 ORA-01799 列不能外部联接到子查询

现有学生-分数-考试三张表:1.学生表:记录学生的学号、姓名、年龄、性别2.考试表:记录考试及考试日期3.学生分数表:记录学生考试分数现在,想要查询最近一次考试每个学生的分数,查询sql如下:SELECT ST.NAME, SC.SCOREFROM STUDENT STLEFT JOIN SCORE SC ON ST.NO = SC.NO AND SC.CDATE = (S...

2019-11-10 10:36:42 8067 3

原创 Oracle数据库查询最近一周的记录(后台时间存储类型为10位时间戳)

现有一张SHOPPING表,记录最近的购物记录,包括商品名,金额,时间(以10位时间戳形式存储):为了更直观地了解时间信息,我们需要将10位时间戳转换成我们能够看懂的时间字符串,查询sql如下:SELECT NAME, AMOUNT, CDATE / (60 * 60 * 24) + TO_DATE('1970-01-01 08:00:00', 'YYYY-MM-DD HH:MI:...

2019-11-03 10:33:58 1608

原创 oracle行转列(PIVOT),列转行(UNPIVOT)

1.行转列(PIVOT)现有 学生-分数表 STUDENT_SCORE 如下:想看到每个学生语数外的整体分数情况,这时候可以应用行转列(PIVOT):SELECT * FROM STUDENT_SCOREPIVOT( SUM(SCORE) FOR SUBJECT IN ('语文' AS CHINESE, '数学' AS MATH, '英语' AS ENGLISH))查询结果为:...

2019-08-11 21:44:18 1686

原创 利用SQL的decode函数实现自定义排序

现有 条目-类型 ITEM表 如下:现在想要根据自定义TYPE顺序(质量 - 时间 - 数量)对ITEM表的数据进行排序:SELECT * FROM ITEMORDER BYDECODE (TYPE, '质量', 1, '时间', 2, '数量', 3)结果为:...

2019-08-11 20:55:48 546

原创 SQL的case when then else end as语句的用法

现有 学生-分数表 STUDENT_SCORE 如下:现在想要在sql中根据学生的分数自动判定学生成绩的等级:SELECT NAME, CASE WHEN SCORE < 60 THEN '不及格' WHEN SCORE < 90 THEN '良好' ELSE '优秀' END AS RANKFROM STUDENT_SCORE结果为:...

2019-08-11 20:35:28 22958 3

原创 MyBatis的xml中,向Oracle数据库插入List与Map互相嵌套类型的数据

话不多说,直接结合实际应用场景来说明List<Map<String, List>>用法:1.PO层//存储项目的不同类型、不同阶段 所对应到的 不同sheet页的category列表public class ProjectCategoryRelationModel { //项目ID private Integer projectId; //类型...

2019-06-09 10:40:38 833

原创 Java中LinkedList栈的应用 —— 括号匹配

栈,简单来说,就是后进先出。而括号匹配,恰巧遵循这种规则,下面这一个小demo将实现这一功能。public class StackMatch { public static void main(String[] args) { String str = "----(([123{)2(0)2}]))----"; System.out.println("结果---"+stack...

2019-05-04 09:30:58 321

原创 Java的引用数据类型 —— 数组

public static void main(String[] args) { int [] array1 = {1,2,3,4,5}; int [] array2 = array1;**//此处实际上是复制了引用** for(int i = 0; i < array1.length; i++){ array1[i] += 1; } for(int ...

2019-04-09 22:28:00 244

原创 Java中for循环的执行顺序

很早就想自己在CSDN上写博客了,但第一次写,不知道格式怎么弄,只能慢慢来了。今天刚好自己有空看了Java经典书籍 - Java编程思想,有些小知识点,就在这儿做记录吧。先来看一段实际代码(此处引用书上的原示例):public static void main(String[] args) { for(int i = 1, j = i + 10; i < 5; i++, j...

2019-04-08 23:01:17 519

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除