- 博客(58)
- 资源 (1)
- 收藏
- 关注
原创 Oracle存储过程实现执行动态SQL
但是其实,这里还有遗漏一个问题,那就是存储过程中使用了replace函数,这个函数对字符长度也有限制,具体限制请自行百度,应该可以找到相关方法。
2023-08-19 23:43:25
2188
1
原创 维度建模的基础理解
在关系型数据库管理系统中,使用不同的实体记录不同的数据,一个实体代表一个关系表,不同实体间可能会有不同的关系,比如一对一、一对多和多对多,这样的模型也被成为实体-关系模型。这种模型可以方便的应对操作性过程,因为对于事务的更新与插入仅触及数据库的单一地方。但对于BI查询来说,这样的模型太复杂,看起来像蜘蛛网一样的复杂网络,很难记忆理解并检索数据。
2022-09-01 23:52:58
393
原创 21天学习挑战赛--贪吃蛇
博主原文中使用了队列记录了贪吃蛇身体的各个位置,可以很方便的得到蛇身体的各个位置记录,我这里使用了循环找蛇身体的位置,增加了处理的时间复杂度,两相比较来说,这里加一点存储空间来换寻找的时间是更合适的。
2022-08-21 23:56:40
901
2
原创 21天学习挑战赛--寻找身高相近的小朋友
博主原文中并没有使用二维数组去存储身高差的值,直接每次都计算然后做比较,因此我这样的处理比博主多出了一倍的空间复杂度,此处的空间复杂度是O(2n),博主只有O(n),这是一个不错改进的点。
2022-08-20 23:47:49
718
原创 21天学习挑战赛--执行时长
博主原文中的解决思路在时间复杂度上比我此处的想法更优,不应该在无新增任务后继续用循环去执行,可以使用数字计算直接解决,尤其当数值较大时,计算节省的时间很可观。模拟GPU运行的逻辑也许更好理解,但也会被这理解局限。...
2022-08-17 22:28:32
207
原创 21天学习挑战赛--猜密码
可能的密码组合,每种组合显示成一行,每个组合内部的数字以半角逗号分隔,从小到大的顺序排列。输出的组合间需要按照字典顺序排列。题目的意思是从给定的M个数字中取出长度在[N,M]区间内的所有数字组合,并将得到的数字组合按照字典顺序排序。中间较复杂的问题就是取长度在[N,M]变化的数字组合,简化一下就是取定长L的数字组合,这样就简单多了。本题目中最复杂的部分就是从长度为M的数字中取长度为L的数字组合,这其实很像分治。先取1,在【2,3,4】中取剩下的一个,有三种;然后取2,在【3,4】中取剩下的一个,有两种;..
2022-08-14 22:55:54
450
原创 21天学习挑战赛--字符串变换最小字符串
给出一个字符串s,只交换一次字符得到最小字符串,最小字符串的意思是按照字典顺序是最小的,交换的规则是一次交换任意两个位置的字符。
2022-08-11 15:57:29
553
原创 21天学习挑战赛--补种胡杨求最大连续胡杨数量
假设种了一排胡杨总数N,一段时间后发现其中死了M棵,现在给你提供K棵补种的胡杨树,请问怎么补种可以得到连贯的胡杨树最多。
2022-08-09 15:52:41
618
原创 21天学习挑战赛--图像物体的边界
给一个二维数组M行N列,数组中的数字代表图片的像素,为了简化问题,仅包含像素1和5两种像素,每种像素代表一个物体,将两个不同物体相邻的格子称为边界,求像素1代表的边界个数。这样所有的边界格子被标记出来了,然后第二步判断边界格子所属边界,那么就是找2的格子,找到一个2的格子a便立即根据相邻规律将所有与格子a相邻的所有为2的格子变为3,那么找到2的次数便是边界的个数。其中像素1代表的物体边界是指像素为1并且与像素5相邻的格子,而相邻的概念是指八个方向(上、下、左、右、左上、左下、右上、右下)的相近。...
2022-08-07 00:01:24
733
1
原创 21天学习挑战赛--字符串切割
给定一个非空字符串S,其被N个‘-’分隔为N+1个的字串,给定正整数K,要求除第一个子串外,其余的子串每K个字符组成新的子串,并用‘-’分隔。对于新组成的每一个子串,如果它含有的小写字母比大写字母多,则将这个子串的所有大写字母转换为小写字母;子串为12abc、abCABc、4aB@,除去第一个子串,剩余的按照3个字符分隔,则新的子串为12abc、abC、ABc、4aB、@,然后各个子串计算大小写字母个数转换大小写,则变为12abc、abc、ABC、4aB、@,最后由‘-’拼接得到结果。...
2022-08-03 23:55:21
332
原创 lua循环
既然同为编程语言,那么控制逻辑里的循环就不能缺少,它可以帮助我们实现有规律的重复操作,而循环一般由循环体和停止条件组成。而lua的循环可以由 `while` `for` `repeat ... util` 和 `goto` 实现。...
2022-08-03 16:05:30
1004
原创 优化Mysql运行OrderBy性能
mysql带有OrderBy统计计算的语句执行时间很长,基本每条执行需要耗时7、8秒左右,严重限制了程序的执行效率,该如何优化?结果如图:
2022-07-08 15:24:43
637
原创 clickhouse出现数据重复问题
在生产环境中,偶然发现clickhouse数据表中出现重复数据,并且都是重复的两条数据,重重迷雾,疑窦重生...
2022-06-24 15:49:28
4765
3
原创 mysql连接报错:Cannot get a connection, pool error Timeout waiting for idle object
报错内容:commons.dbcp.SQLNestedException: Cannot get a connection, pool error Timeout waiting for idle object
2022-06-16 16:03:48
2107
原创 使用fastText实现文本分类-java版
使用FastText实现文本分类-java版文本分类又称自动文本分类,是指计算机将载有信心的一篇文本映射到预先给定的某一类别或某几个类别主题的过程,实现这一过程的算法模型叫做分类器。哈哈哈,这一句是从大佬文章中借鉴来得,这是是原文 ,这篇文章具体介绍了文本分类的历史发展和一些分类算法,有兴趣的可以去看看。我这里主要说的是使用FastText实现文本分类,至于想要弄明白原理的,建议看这里 ,大佬对原理做了很详细的说明,向大佬表示敬意。依赖<dependency> <groupI
2022-05-26 18:17:29
1733
原创 mysql分组排序并取各分组前几个数据
mysql分组排序并取各分组中前几个数据需求今天碰到了一个需求,要求是取mysql数据表中每月完成任务数排名前十的员工信息。数据表的字段如下:table:employee_work_cntid varchar 数据表idemployee_id varchar 员工idwork_num int 完成任务数month varchar 月份信息字符编码集:utf8mb4(重点,要考的)思考实现看到需求首先想到的就是一些关键字group by、order by,但是经过尝试很明显无法达到
2022-05-23 11:18:25
3034
1
原创 hanLP探索-语义距离计算的实现
hanLP探索——语义距离计算的实现在翻看hanLP源码时,看见了计算词语语义距离的方法,不由得引起了我强烈的好奇心,是什么样的逻辑可以计算词语语义之间的距离。探索在jar包中有一个类com.hankcs.hanlp.dictionary.CoreSynonymDictionary ,根据注释可以知道这个类是与核心同义词词典相关的,其中有方法distance()可以计算词语距离,看代码。/** * 语义距离 * @param itemA * @param ite
2022-05-18 15:14:19
650
原创 解析树字符串并输出中序遍历
题目描述输入二叉树字符串,如“a{b{d{g,},e{,f}},c{,h{i,j{k,l}}}}”,节点都是以小写字母表示,请按照中序遍历的顺序输出。思考根据题目描述,可以将解决问题的过程分为两个步骤,首先解析字符串转存为树,然后就是实现中序遍历。那么首先开始解析字符串。public String[] parseToTree(String str) { /** * 思路:这里以数组存储树结构,左子节点为2*i+1,右子节点为2*i+2,这里不做详细解析;
2022-03-06 16:08:44
1254
2
原创 java中存储树结构
java中存储树结构树是数据结构中的一种,是有限个节点组成的集合。那么在java中如何存储这种结构呢?这里以二叉树为例,首先想到的方法就是定义节点类,代码如下://节点类public class Node<T> { //节点值 private T t; //左节点 private Node<T> leftNode; //右节点 private Node<T> rightNode; public Node
2022-03-06 15:16:48
1721
原创 观察者模式-数据池
一、描述当对象间存在一对多关系时,则适合使用观察者模式(Observer Pattern)。当一个对象的装态被改变时,则应该通知它的观察者对象,这就是观察者模式。二、代码实现被观察者类public class Subject { private int status; private List<Observer> observers = new ArrayList<>(); /** 添加观察者对象 */ public void attach(
2022-01-23 19:40:34
204
原创 享元模式-缓存池
描述享元模式(Flyweight Pattern)主要作用就是减少对象的创建,达到减少内存和提高性能的目的。为了实现这个目的,就需要一个数据结构存储实例化后的对象,需要时直接从中获取。关键:使用Map或者Set作为存储对象的逻辑,即确保缓存池中存储的对象是唯一的。曾使用队列和List实现存储对象的逻辑,后来在使用缓存池中的对象时出现前后重复的,造成数据计算出现幻读问题。应用在图像中,一条线段中使用最多的对象就是点,这里就可以使用缓存池缓存点对象,达到复用内存的目的。Point类public
2022-01-18 23:01:35
348
原创 OutOfMemoryError:java heap space
错误描述午后,写了一上午的代码终于可以发包部署运行了,一顿操作java -jar 启动程序,正美滋滋。日志赫然出现错误:OutOfMemoryError: java heap space。我丢,OOM了。思考首先,复习一下jvm相关知识。jvm运行时,jvm中分为方法区(method area),java堆(java heap),其中方法区是所有线程共享的内存区域,用于存储已被java虚拟机加载的类信息、常量、静态变量等数据;而堆是java虚拟机所管理的最大一块内存,也被所有线程共享,此区域内存
2021-12-22 17:24:52
1258
原创 LeetCode两数之和
题目描述给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。来源:力扣(Le
2021-12-21 16:12:39
71
原创 Duplicate entry ‘‘ for key ‘Primary‘
问题描述在公司业务中需要批量向mysql中写数据,总是出现错误:Duplicate entry ‘[info]’ for key ‘PRIMARY’;思考出现错误的原因是mysql数据表设置了主键primary key,而批量写入的数据中设了主键的字段与数据库中的数据有重复。那么解决方法就简单了,剔除重复的数据。解决方法拿到报错信息,从数据中移除重复的数据,重新执行写入操作,完成。try{ //此处是可能会出现此异常的java语句}catch(SQLException e)
2021-12-17 14:59:13
18599
原创 最短补全词
题目描述来源:力扣(LeetCode)给你一个字符串 licensePlate 和一个字符串数组 words ,请你找出并返回 words 中的 最短补全词 。补全词 是一个包含 licensePlate 中所有的字母的单词。在所有补全词中,最短的那个就是 最短补全词 。在匹配 licensePlate 中的字母时:忽略 licensePlate 中的 数字和空格 。不区分大小写。如果某个字母在 licensePlate 中出现不止一次,那么该字母在补全词中的出现次数应当一致或者更多
2021-12-10 19:02:55
210
原创 对数据曲线总结特征归类
一、需求公司中出现一个需求,在大量的流量图中,希望给流量图分析归类,总结流量图的一些特点。流量图的横坐标是时间,基本单位是分钟,纵坐标就是流量,是每分钟获取一次流量,进而形成流量图。二、解决思路进过几天的思考和查阅资料,有了基本的解决思路。给流量图做分析归类,粗略一点说就是自己做各种形状的标尺图然后与现有的流量图进行一一比对,这种类型的归为一类,另一种类型的归为一类。思路如下:为了实现更加的泛型化,对拿到的流量图第一步进行的操作就是使流量图更加平滑,去除掉一些特定点,将图像模糊化,也就是滤波降噪处
2021-11-08 20:01:47
433
原创 写入clickhouse效率低总结
在将数据写入clickhouse中,直接使用的原生的jdbc,采用了两种方式。//方式一insert into table (row1,row2,...) values (?,?,...)//此处省略set语句PreparedStatement.addBatch();PreparedStatement.executeBatch();Connnection.commit();PreparedStatement.clearBatch();//方式二/* sql语句采用 insert into
2021-10-27 10:51:21
6872
7
原创 定时切割jar包日志并清理
1.编写定时切割日志的shell脚本#!/bin/bash#filename: split-log.sh#desc: 切割日志#author: Hyy#date: 2021-10-20## 切割时间 分别对应年月日SPLIT_DATE=$(date +%y%m%d)## 复制日志文件到指定文件夹history中cp {日志存放路径}/{日志文件名}.log {目标文件夹}/history/{日志文件名}.${SPLIT_DATE}.log## 清空原始日志文件,“>”是某文
2021-10-25 14:07:58
864
原创 jar包部署启动shell脚本
我们在写好java项目后,一般都会将项目打成jar包,然后上传到服务器部署启动。因此我写了一个shell脚本减少我们的工作量。#!/bin/bash#filename: run_jar.sh#desc: 启动jar包,关闭jar包程序#author: Hyy#date: 2021-10-11#获得输入参数OPTION=$1JAR=$2#帮助函数usage(){ echo "usage:" echo "kafka_promotionSliceSwitch.sh [start|st
2021-10-15 17:35:20
1294
2
原创 java使用正则表达式过滤特殊字符
在日常开发中难免会遇到处理字符串,其中可能会需要过滤特殊的字符,避免出错。/** * @Author: Hyy * @Desc: 正则表达式过滤字符 * @Date: 2021/9/28 20:56 */public class CharacterFilter { /** * 过滤出中文、数字、字母 * @param str * @return */ public static String stringFilter(String str)
2021-10-09 18:09:46
4593
原创 解决多线程消费kafka转存批量数据到mysql,重复数据引起的死锁问题
使用多线程写入ES时,出现死锁错误:Deadlock found when trying to get lock
2021-10-08 16:39:33
1692
3
原创 ClickHouse写入数据报错Code: 27, e.displayText() = DB::ParsingException: Cannot parse input: expected ‘\t‘
刚开始接触到这个错误,以为是插入数据的格式问题,字段间的分隔符出现问题,于是我在插入语句中加了“format TabSparatedRaw”,之后错误确实发生改变,变为“插入的首个字段数据前多了一个\n”。在此处我琢磨了一上午。后来参考插入clickhouse其他表的代码,甚至打印出praparedStatement填充数据后的sql语句,但是依旧无效。两者的插入语句完全相同,但是第二个就是插入不进去。后来比对clickhouse中的数据类型,终于发现错误。是建立ClickHouse表的时候数据类型没有选对
2021-09-29 15:00:37
8253
原创 自定义hive的UDTF函数
我这里用到UDTF函数是为了将表中的一个json字段炸裂为多个字段。即一进多出。思路1.导入相关依赖2.继承实现抽象类GenericUDTF。3.调试代码。依赖<!-- 这是一定要导入的依赖,里面包含抽象类GenericUDTF --><dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec</artifactId>
2021-07-12 21:55:03
234
原创 SpringBoot实现helloWorld
SpringBoot实现HelloWorld1.创建项目方式:官网或者idea官网地址 https://start.spring.io/,其实idea创建SpringBoot项目就是使用官网的接口。这里以官网为例,idea可以参考这里的配置。1)选择项目类型项目类型分为maven和gradle,它们都是管理依赖的工具,我们这里选择maven。2)选择项目语言分为java、kotlin和groovy,选择最熟悉的java即可。3)选择springboot版本最好选择稳定的版本,这里选择2
2021-07-06 21:20:08
1037
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人