- 博客(255)
- 资源 (2)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 java常见经典算法题
1:冒泡排序package org.sang.org.sang.算法;import java.util.Arrays;import java.util.Collections;/** * create by 86159 on 2021/1/12 */public class 冒泡排序 { public static void main(String[] args) { // 冒泡排序是对数组操作,如果是集合,先用list.toArray()转化为数组
2021-01-12 23:08:10
4431
5
原创 使用 ProGuard 混淆你的 Java 代码
ProGuard 是一款流行的 Java 代码混淆工具,可以混淆和优化你的代码,使其更难被反编译和分析。混淆通过重命名类、方法和变量名称来实现,从而增加反编译代码的难度。使用 ProGuard 混淆你的 Java 代码可以增加反编译和分析代码的难度,从而保护你的知识产权。通过使用 Maven 中的 proguard-maven-plugin,你可以轻松地将 ProGuard 集成到你的构建过程中。
2024-06-22 10:31:30
408
原创 开源任务调度系统dolphinscheduler的搭建部署使用
可以参考海豚dolphinscheduler的官方部署文档,单机部署很快,几分钟就可以使用起来:海豚dolphinscheduler:
2024-06-16 11:10:59
122
原创 H2 Database:轻量级、快速且可靠的内存数据库解决方案
在当今数据驱动的时代,数据库管理系统(DBMS)在各类应用中扮演着至关重要的角色。从大型企业级应用到轻量级桌面软件,选择合适的数据库是确保应用性能和可靠性的关键。H2 Database 作为一个轻量级、嵌入式数据库解决方案,以其高效性能和易用性受到了开发者的青睐。本文将深入探讨 H2 Database 的特性、优势以及适用场景,帮助读者更好地了解这一强大工具。H2 Database 是一个用 Java 编写的开源关系型数据库管理系统。它既可以作为嵌入式数据库运行在应用程序中,也可以作为独立的服务器进程运行。
2024-06-16 11:04:18
1184
原创 Spring boot+VUE实现token验证
5.前端之后的每一个对后端的请求都要在请求头上带上token,后端查看请求头是否有token,拿到token检查是否过期,返回对应状态给前端。这个拦截器主要的功能就是,把一些没有token的请求拦截下来并返回错误信息,有token就可以直接通过。4.之后前端每一次权限操作如跳转路由,都需要判断是否存在token,若不存在,跳转至登录页。2.后端验证用户名和密码,若通过,生成一个token返回给前端。6.若token已过期,清除token信息,跳转至登录页。注意:这边拦截的是后端的接口,不是前端的,
2024-06-08 14:40:13
625
原创 @autowired 注入进来对象为null的几种场景及解决办法
Autowired 注解用于自动注入 Spring 容器中管理的依赖对象。如果是配置类中的 @Bean 方法注入失败,可能是该方法没有被标记为 @Bean 或者方法所在的类没有使用 @Configuration 注解。
2024-06-01 11:51:24
3259
原创 Mybatis没写分页莫名自动分页?PageHelper自动分页(踩坑)
pagehelper是一个非常简单实用的分页插件,但是还是有一个小坑在里面的,话不多说,直接上干货。
2024-04-27 15:57:02
9718
原创 【精·超简单】SpringBoot 配置多个数据源(连接多个数据库)
重新启动项目,加载数据源,即可在相应的service查询@DS指定的数据源了。注意primary,如果service没有配置相应注解则会默认读取这个数据源。在service实现类中需要加入@DS注解。
2024-04-20 16:35:21
12305
8
原创 springboot+PageHelper在多数据源的情况下,数据库方言乱套怎么解决?
在最近的一个项目中,需要聚合多方数据,就涉及到配置多数据源(各方使用的不是一种类型的数据库),开始以为正常配置就好了,结果问题了,就是数据的分页错了,不是报oracle数据库使用了limit,就是mysql数据库使用了rownum,还有比如mysql 的分页写法是limit 10,10 而pgsql的写法是limit 10 offset 10 数据库方言乱了。还好pagehelper插件支持配置文件参数配置,在查询的过程中能够自动识别数据源的类型,从而生成相应的查询sql,而不报错。
2024-04-20 16:22:17
9634
原创 pgsql中in查询如何保障查询后返回的顺序
查询后返回的结果很难是按照id 为3,1,2的顺序返回的,那么有些场景是需要保证顺序不变返回的,如何实现呢?
2024-04-18 21:30:28
9577
原创 Java 集合实现分页-业务代码实现分页
在Java开发中,有些场景比较复杂,受限制,不好在sql查询层面实现分页,需要在查询的list结果后,将list分页返回,如何实现呢?以上不管哪种方式实现分页,对性能都会有一定的影响,尤其是数据量越大,性能越差,因为其原理是全表扫描,将所有数据查询出来后,再在内存中进行分页返回,在可能的情况下,尽量想想如何在sql查询时实现分页返回才好。
2024-04-05 20:10:51
13227
2
原创 PostgreSQL常用命令汇总
20、创建表:create table tbname ([字段名1] [类型1], [字段名2] [类型2], …1 连接数据库:psql -U postgres (psql -U username -d databse_name -h host -W)-U 指定用户 -d 指定数据库 -h 要链接的主机 -W 提示输入密码。24、更改用户密码: \password [username]27、创建用户名称:createuser username;23、SQL命名帮助(用*显示全部命令):\h [名称]
2024-03-06 21:40:12
19179
1
原创 【数仓】数仓中的原子指标、派生指标、衍生指标等指标的含义
从业务的角度讲,实体是为了满足分析的需要,抽象出来的概念,从业务中拆分出一个个实体,可以是现实存在的业务对象,如用户,商品,也可以是显示没有的,即虚拟的业务对象,如会员。
2024-02-19 20:33:19
27341
原创 mysql中的联合索引为什么要遵循最佳左前缀法则?
联合索引(也叫组合索引、复合索引、多列索引),是一种特殊的索引类型,它由多个字段组成,而不是只针对单一字段进行索引。这种索引结构是一颗B+树,其特点是在对索引排序时,会对所有索引列进行排序,而非只是单列排序。因此,联合索引能够更有效地支持多条件的查询,尤其是当查询中使用了多个字段的条件时。联合索引的创建方法跟单个索引的创建方法一样,不同之处仅在于有多个索引列。
2024-01-20 15:02:54
25924
1
原创 explain工具优化mysql需要达到什么级别?
explain是什么?使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。这个JOIN非常快,因为对于表A中扫描的每一行,表B中只能有一行满足JOIN条件。那是因为B.id是独一无二的。explain的使用方法非常的简单,explain+sql就可以了。下面我们来简单的执行一条。如果我们的type是all或者index级别均是需要优化的。
2024-01-20 12:07:29
24914
原创 数据采集遇到验证码校验的一般破解方式简述
绕过图片验证码是一项技术活,需要我们掌握一定的编程技巧和图像处理技术。如果您需要进行大规模数据采集,可以使用以上方法来解决验证码问题。但是需要注意法律风险,并保证采集的数据合法合规。
2023-12-30 09:55:23
25697
1
原创 Springboot+Easyexcel将数据写入模板文件并导出Excel
本次实现的功能是利用现有模板,将数据批量导出成excel,借助于easyexcel来实现操作excel的功能。最重要的功能模块是Controller里的内容。需要注意需要加上response的响应类型和响应头来使得返回请求返回excel文件写到Web流时,这里的ContentType和CharacterEncoding不要乱码,否则很容易乱码或者文件损坏使用EasyExcel.withTemplate引入模板的输入流。
2023-08-06 16:06:41
25667
1
原创 如何手写一个@Async异步注解
自定义一个@MyAsync注解,可以照抄@Async@ Target({从以上打印日志可以看出,从controller调用service的asnycLog()方法时,由于asnycLog()方法上有 @MyAsync注解,而 @MyAsync注解又在aop中有定义环绕通知,故另起了一个子线程执行,故不需要等待主线程执行,也就实现了异步的执行。所以主线程执行完成,子线程最后执行完成,通过 @MyAsync注解的方法执行程序都是异步执行的了。
2023-07-30 19:57:49
24212
原创 java创建多线程的7种方式---代码详解
可以看出,主线程是不需要等待子线程执行完再执行下面的程序,主线程执行完了子线程还在执行,因此,子线程报错是不会影响主线程的。callable和future现成可以获取到返回的结果,底层是基于LockSupport,从JDK5就提供了Callable接口,该接口是Runable的增强版。
2023-07-30 18:54:37
25854
原创 Easyexcel简介及写、读操作
Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的full gc。EasyExcel是阿里巴巴开源的一个excel处理框架,以使用简单、节省内存著称。EasyExcel能大大减少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析。
2023-07-29 12:45:18
24665
原创 Java 中 Long 类型数据相除,结果保留两位小数
调用 Long 类型的 doubleValue() 方法,以及 String.format() 方法即可。
2023-07-24 20:53:48
25378
原创 JDK1.8中Map的getOrDefault、putIfAbsent、computeIfAbsent、merge方法的区别
merge添加键值对,如果key对应的value不存在,直接存储value值,如果value值存在,更新value值,我们可以自定义更新规则。putIfAbsent添加键值对,如果map集合中没有该key对应的值,则直接添加,如果已经存在对应的值,则依旧为原来的值。保存新value+旧value,例如:(value1, value2) -> value1+ value2。put添加键值对,如果map集合中没有该key对应的值,则直接添加,如果已经存在对应的值,则覆盖旧值。
2023-07-23 11:23:23
24084
原创 java实现一个简单的webSocket聊天demo
创建webSocketConfig配置类,即注册ServerEndpointExporter,该bean用于扫描被@ServerEndpoint注解的类,并将其作为服务端.创建被@ServerEndpoint注解的类用于作为webSocket服务器并指定连接的uri。成功完成基础的websocket连接,可以开始编辑业务逻辑。到这里,我们就实现了webSocke技术,实现聊天功能了。项目启动后,测试websocket是否可用。使用注解标记对应的方法,,并启动程序。1.构建后台message实体类;
2023-07-09 11:38:57
26474
原创 WebSocket系列之基础知识以及设计思路
WebSockets 是一个可以创建和服务器间进行双向会话的高级技术。通过这个API你可以向服务器发送消息并接受基于事件驱动的响应,这样就不用向服务器轮询获取数据了。双向会话指的是客户端和服务端都能够通过WebSocket来进行数据的互相传递,即服务端可以给客户端推送数据,客户端也可以通过WebSocket来传递数据。例如,我们的一个聊天室功能就是一个典型的场景。对WebSocket的协议有了一个初步的了解,下面让我们看下,在具体的使用场景中,如何使用WebSocket。建立连接收到消息发送消息。
2023-07-01 10:36:20
24987
原创 java根据拼音搜索,但数据库为汉字的解决方案
最近公司有一个需求,需要进行中文,中文的全拼音,中文的首字母进行模糊搜索,但是数据库全是中文,如果在在数据库添加拼音字段的话,工作量会特别大,所以我根据网上的大神给的方法,自己做了一个解决方案,给各位同行做个参考。3.若输入的为英文,则可以将数据库中查得得中文转为拼音,再循环遍历该字段是否包含了用户输入得keyword的拼音,若包含则保留,否则过滤,下面说下如何将中文转为拼音;2.若输入的为中文,而数据库中也是存的中文,则直接根据like 关键字去模糊查询即可。
2023-06-28 22:05:18
18277
原创 Collectors.toMap使用详解
Collectors.toMap 确实带来方便,但是,与此同时,也需要注意两点(你也可以认为是2个坑):需考虑是否有key重复情况;需考虑是否有value为null情况。
2023-06-25 21:55:14
22553
原创 【已解决】Java 中导入excel时使用 trim() 无法去除空格的解决方法
1、java的String类中的trim方法,只能去除 半角空格,遇到空格去不掉的情况,可能的全角空格,可以考虑使用hutool或者spring提供的工具类试试。注意:apache-commons-lang3 里的StringUtils工具类,无法去除全角空格,原因是:实际调用的是 String类的trim()方法。
2023-06-25 21:10:42
20034
原创 desensitization实现数据脱敏
在实际开发过程中,我们时常出于隐私的要求,不再返回完整的用户姓名,电话等隐私信息,这时就需要用到数据脱敏技术,而现在已经有很成熟的脱敏技术依赖,不再需要自己开发脱敏实现了。下面就介绍脱敏技术中比较成熟的desensitization技术。邮箱手机号码中文名称身份证号码银行卡号码密码统一社会信用代码任意CharSequence类型的值级联脱敏。
2023-06-18 15:19:06
18348
原创 docker-compose教程(安装,使用, 快速入门)
Docker Compose是一个用来定义和运行多个复杂应用的Docker编排工具。例如,一个使用Docker容器的微服务项目,通常由多个容器应用组成。那么部署时如何快速启动各个微服务呢,一个个手动启动?假如有上百个微服务呢,显然不现实,那么使用Docker Compose编排工具便可快速启动容器。
2023-06-18 10:44:44
74469
4
原创 java 断言 assert 详解:断言开启、断言使用
对于Java Web应用,程序代码都是部署在容器里面,你没法直接去控制程序的运行,如果一定要开启-ea的开关,则需要更改Web容器的运行配置参数。因此,应当避免在Java中使用assert关键字,除非哪一天Java默认支持开启-ea的开关,这时候可以考虑。assert既然是为了调试测试程序用,不在正式生产环境下用,那应该考虑更好的测试JUint来代替其做用,assert关键字本意上是为测试调试程序时使用的,但如果不小心用assert来控制了程序的业务流程,这在一个生产环境下的应用是绝不能容忍的。
2023-06-18 09:56:40
16167
原创 Java陷阱之assert关键字详解
Assert.isTrue(express,message) 是指测试指定的条件是否为True,如果为True,则测试通过。发现,当expression为true时则通过,不发生异常,当expression为false时,则会抛出异常。如果表达式express为false,则才输出信息。
2023-06-17 23:29:20
8357
原创 PostgreSQL如何自定义函数并且调用
');执行结果:Hello, world!!BEGIN raise notice '% 除以 %' , js1 , js2;IF js2 = 0 THEN raise EXCEPTION '不能除0';END IF;EXCEPTION -- 捕获异常 WHEN OTHERS THEN RETURN 0;END;-- 0。
2023-06-17 21:46:17
6947
2
原创 一文读懂PinYin4j ---入门简介
pinyin4j是一个开源的流行java库,支持中文字符和拼音之间的转换,拼音输出格式可以定制使用来处理中文转换成拼音(汉语拼音,罗马拼音等),功能非常强大。
2023-06-17 20:47:48
3895
原创 java格式化数字 NumberFormat及DecimalFormat
NumberFormat帮助您格式化和解析任何区域设置的数字。您的代码可以完全独立于小数点,千位分隔符的区域设置约定,甚至是使用的特定十进制数字,或者数字格式是否为十进制。
2023-06-16 23:17:44
8181
原创 PostgreSQL数据库sql查询如何获取汉字拼音首字母
在实际开发过程中,经常会使用模糊查询,根据某个关键字模糊搜索,一般是 name like ‘%123%’ 这样查,但是如果某个关键字用户不记得呢,只知道首字母,又如何模糊查询呢?例如,查询 name like ‘%我是中国人%’,如何根据首字母 wszgr 模糊搜索出来呢?因为系统自带的 like 查询已经无法满足这种场景的模糊搜索,那么这里需要用到自定义函数,将数据库中的某个字段的中文汉字转化为首字母,再根据字母去模糊搜索。
2023-06-14 22:55:42
4527
6
原创 sql语句异常:org.postgresql.util.PSQLException: ERROR: syntax error at or near “$1“
这种含有$ 1 错误的,而你的sql中又找不到该$ 1符号的的,一般是因为有变量传参不支持使用#,mybatis取不到值,此时可以使用$符号试试,一般就可以的。排序时动态参数用的是 $ 而不是# ($:order by id;#:order by ‘id’)#方式能够很大程度防止sql注入;$方式无法防止Sql注入。所以尽可能的使用#方式。$方式一般用于传入数据库对象,比如传入表名。在MyBatis使用。
2023-06-10 18:59:30
4917
原创 java8中Optional类的使用
Optional类是java8中引入的一个非常有用的类,主要用处是解决编程中的空指针异常,本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。Optional 是 Java 实现函数式编程的强劲一步,并且帮助在范式中实现。
2023-06-05 21:04:35
3309
2
mybatis自动生成各层代码
2019-08-29
2019年java面试题集锦.docx
2019-08-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人