自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(248)
  • 资源 (2)
  • 收藏
  • 关注

原创 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 1894 5

原创 【精·超简单】SpringBoot 配置多个数据源(连接多个数据库)

重新启动项目,加载数据源,即可在相应的service查询@DS指定的数据源了。注意primary,如果service没有配置相应注解则会默认读取这个数据源。在service实现类中需要加入@DS注解。

2024-04-20 16:35:21 426

原创 springboot+PageHelper在多数据源的情况下,数据库方言乱套怎么解决?

在最近的一个项目中,需要聚合多方数据,就涉及到配置多数据源(各方使用的不是一种类型的数据库),开始以为正常配置就好了,结果问题了,就是数据的分页错了,不是报oracle数据库使用了limit,就是mysql数据库使用了rownum,还有比如mysql 的分页写法是limit 10,10 而pgsql的写法是limit 10 offset 10 数据库方言乱了。还好pagehelper插件支持配置文件参数配置,在查询的过程中能够自动识别数据源的类型,从而生成相应的查询sql,而不报错。

2024-04-20 16:22:17 224

原创 数据库查询如何查询父级id下无限子级的元素列表

【代码】数据库查询如何查询父级id下无限子级的元素列表。

2024-04-20 10:40:51 168

原创 pgsql中in查询如何保障查询后返回的顺序

查询后返回的结果很难是按照id 为3,1,2的顺序返回的,那么有些场景是需要保证顺序不变返回的,如何实现呢?

2024-04-18 21:30:28 151

原创 Java 集合实现分页-业务代码实现分页

在Java开发中,有些场景比较复杂,受限制,不好在sql查询层面实现分页,需要在查询的list结果后,将list分页返回,如何实现呢?以上不管哪种方式实现分页,对性能都会有一定的影响,尤其是数据量越大,性能越差,因为其原理是全表扫描,将所有数据查询出来后,再在内存中进行分页返回,在可能的情况下,尽量想想如何在sql查询时实现分页返回才好。

2024-04-05 20:10:51 3799 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 9700 1

原创 【数仓】数仓中的原子指标、派生指标、衍生指标等指标的含义

从业务的角度讲,实体是为了满足分析的需要,抽象出来的概念,从业务中拆分出一个个实体,可以是现实存在的业务对象,如用户,商品,也可以是显示没有的,即虚拟的业务对象,如会员。

2024-02-19 20:33:19 16151

原创 mysql中的联合索引为什么要遵循最佳左前缀法则?

联合索引(也叫组合索引、复合索引、多列索引),是一种特殊的索引类型,它由多个字段组成,而不是只针对单一字段进行索引。这种索引结构是一颗B+树,其特点是在对索引排序时,会对所有索引列进行排序,而非只是单列排序。因此,联合索引能够更有效地支持多条件的查询,尤其是当查询中使用了多个字段的条件时。联合索引的创建方法跟单个索引的创建方法一样,不同之处仅在于有多个索引列。

2024-01-20 15:02:54 16423 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 15582

原创 数据采集遇到验证码校验的一般破解方式简述

绕过图片验证码是一项技术活,需要我们掌握一定的编程技巧和图像处理技术。如果您需要进行大规模数据采集,可以使用以上方法来解决验证码问题。但是需要注意法律风险,并保证采集的数据合法合规。

2023-12-30 09:55:23 16394 1

原创 Springboot+Easyexcel将数据写入模板文件并导出Excel

本次实现的功能是利用现有模板,将数据批量导出成excel,借助于easyexcel来实现操作excel的功能。最重要的功能模块是Controller里的内容。需要注意需要加上response的响应类型和响应头来使得返回请求返回excel文件写到Web流时,这里的ContentType和CharacterEncoding不要乱码,否则很容易乱码或者文件损坏使用EasyExcel.withTemplate引入模板的输入流。

2023-08-06 16:06:41 16085 1

原创 如何手写一个@Async异步注解

自定义一个@MyAsync注解,可以照抄@Async@ Target({从以上打印日志可以看出,从controller调用service的asnycLog()方法时,由于asnycLog()方法上有 @MyAsync注解,而 @MyAsync注解又在aop中有定义环绕通知,故另起了一个子线程执行,故不需要等待主线程执行,也就实现了异步的执行。所以主线程执行完成,子线程最后执行完成,通过 @MyAsync注解的方法执行程序都是异步执行的了。

2023-07-30 19:57:49 14971

原创 java创建多线程的7种方式---代码详解

可以看出,主线程是不需要等待子线程执行完再执行下面的程序,主线程执行完了子线程还在执行,因此,子线程报错是不会影响主线程的。callable和future现成可以获取到返回的结果,底层是基于LockSupport,从JDK5就提供了Callable接口,该接口是Runable的增强版。

2023-07-30 18:54:37 15871

原创 Easyexcel简介及写、读操作

Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的full gc。EasyExcel是阿里巴巴开源的一个excel处理框架,以使用简单、节省内存著称。EasyExcel能大大减少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析。

2023-07-29 12:45:18 15290

原创 JDK8快速找出两个List集合重复的元素

【代码】JDK8快速找出两个List集合重复的元素。

2023-07-24 20:56:19 15639

原创 Java 中 Long 类型数据相除,结果保留两位小数

调用 Long 类型的 doubleValue() 方法,以及 String.format() 方法即可。

2023-07-24 20:53:48 15882

原创 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 14811

原创 java实现一个简单的webSocket聊天demo

创建webSocketConfig配置类,即注册ServerEndpointExporter,该bean用于扫描被@ServerEndpoint注解的类,并将其作为服务端.创建被@ServerEndpoint注解的类用于作为webSocket服务器并指定连接的uri。成功完成基础的websocket连接,可以开始编辑业务逻辑。到这里,我们就实现了webSocke技术,实现聊天功能了。项目启动后,测试websocket是否可用。使用注解标记对应的方法,,并启动程序。1.构建后台message实体类;

2023-07-09 11:38:57 16521

原创 WebSocket系列之基础知识以及设计思路

WebSockets 是一个可以创建和服务器间进行双向会话的高级技术。通过这个API你可以向服务器发送消息并接受基于事件驱动的响应,这样就不用向服务器轮询获取数据了。双向会话指的是客户端和服务端都能够通过WebSocket来进行数据的互相传递,即服务端可以给客户端推送数据,客户端也可以通过WebSocket来传递数据。例如,我们的一个聊天室功能就是一个典型的场景。对WebSocket的协议有了一个初步的了解,下面让我们看下,在具体的使用场景中,如何使用WebSocket。建立连接收到消息发送消息。

2023-07-01 10:36:20 15700

原创 java根据拼音搜索,但数据库为汉字的解决方案

最近公司有一个需求,需要进行中文,中文的全拼音,中文的首字母进行模糊搜索,但是数据库全是中文,如果在在数据库添加拼音字段的话,工作量会特别大,所以我根据网上的大神给的方法,自己做了一个解决方案,给各位同行做个参考。3.若输入的为英文,则可以将数据库中查得得中文转为拼音,再循环遍历该字段是否包含了用户输入得keyword的拼音,若包含则保留,否则过滤,下面说下如何将中文转为拼音;2.若输入的为中文,而数据库中也是存的中文,则直接根据like 关键字去模糊查询即可。

2023-06-28 22:05:18 15737

原创 Collectors.toMap使用详解

Collectors.toMap 确实带来方便,但是,与此同时,也需要注意两点(你也可以认为是2个坑):需考虑是否有key重复情况;需考虑是否有value为null情况。

2023-06-25 21:55:14 19516

原创 【已解决】Java 中导入excel时使用 trim() 无法去除空格的解决方法

1、java的String类中的trim方法,只能去除 半角空格,遇到空格去不掉的情况,可能的全角空格,可以考虑使用hutool或者spring提供的工具类试试。注意:apache-commons-lang3 里的StringUtils工具类,无法去除全角空格,原因是:实际调用的是 String类的trim()方法。

2023-06-25 21:10:42 17253

原创 desensitization实现数据脱敏

在实际开发过程中,我们时常出于隐私的要求,不再返回完整的用户姓名,电话等隐私信息,这时就需要用到数据脱敏技术,而现在已经有很成熟的脱敏技术依赖,不再需要自己开发脱敏实现了。下面就介绍脱敏技术中比较成熟的desensitization技术。邮箱手机号码中文名称身份证号码银行卡号码密码统一社会信用代码任意CharSequence类型的值级联脱敏。

2023-06-18 15:19:06 15795

原创 docker-compose教程(安装,使用, 快速入门)

Docker Compose是一个用来定义和运行多个复杂应用的Docker编排工具。例如,一个使用Docker容器的微服务项目,通常由多个容器应用组成。那么部署时如何快速启动各个微服务呢,一个个手动启动?假如有上百个微服务呢,显然不现实,那么使用Docker Compose编排工具便可快速启动容器。

2023-06-18 10:44:44 45620 2

原创 java 断言 assert 详解:断言开启、断言使用

对于Java Web应用,程序代码都是部署在容器里面,你没法直接去控制程序的运行,如果一定要开启-ea的开关,则需要更改Web容器的运行配置参数。因此,应当避免在Java中使用assert关键字,除非哪一天Java默认支持开启-ea的开关,这时候可以考虑。assert既然是为了调试测试程序用,不在正式生产环境下用,那应该考虑更好的测试JUint来代替其做用,assert关键字本意上是为测试调试程序时使用的,但如果不小心用assert来控制了程序的业务流程,这在一个生产环境下的应用是绝不能容忍的。

2023-06-18 09:56:40 13546

原创 Java陷阱之assert关键字详解

Assert.isTrue(express,message) 是指测试指定的条件是否为True,如果为True,则测试通过。发现,当expression为true时则通过,不发生异常,当expression为false时,则会抛出异常。如果表达式express为false,则才输出信息。

2023-06-17 23:29:20 5842

原创 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 4031 2

原创 一文读懂PinYin4j ---入门简介

pinyin4j是一个开源的流行java库,支持中文字符和拼音之间的转换,拼音输出格式可以定制使用来处理中文转换成拼音(汉语拼音,罗马拼音等),功能非常强大。

2023-06-17 20:47:48 1057

原创 java格式化数字 NumberFormat及DecimalFormat

NumberFormat帮助您格式化和解析任何区域设置的数字。您的代码可以完全独立于小数点,千位分隔符的区域设置约定,甚至是使用的特定十进制数字,或者数字格式是否为十进制。

2023-06-16 23:17:44 4112

原创 PostgreSQL数据库sql查询如何获取汉字拼音首字母

在实际开发过程中,经常会使用模糊查询,根据某个关键字模糊搜索,一般是 name like ‘%123%’ 这样查,但是如果某个关键字用户不记得呢,只知道首字母,又如何模糊查询呢?例如,查询 name like ‘%我是中国人%’,如何根据首字母 wszgr 模糊搜索出来呢?因为系统自带的 like 查询已经无法满足这种场景的模糊搜索,那么这里需要用到自定义函数,将数据库中的某个字段的中文汉字转化为首字母,再根据字母去模糊搜索。

2023-06-14 22:55:42 1803 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 1980

原创 java8中Optional类的使用

Optional类是java8中引入的一个非常有用的类,主要用处是解决编程中的空指针异常,本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。Optional 是 Java 实现函数式编程的强劲一步,并且帮助在范式中实现。

2023-06-05 21:04:35 861 2

原创 Dockerfile常用指令及其含义

编写dockerfile文件中常用指令

2023-06-04 16:19:21 723

原创 docker搭建私有仓库

是一个用于管理公共资源的大仓库,我们可以从上面拉取镜像,也可以上传镜像到上面,但是,有时候我们的内网服务器无法访问互联网,或者你不希望你的镜像上传到公网上去,那么就希望搭建私有仓库来管理自己的镜像。3、打开浏览器,输入网址:http://私有服务器id:5000/v2/_catalog,看到{“respositories”:[]}表示私有仓库搭建成功。在上述文件中添加一个key,保存退出。1、标记镜像为私有仓库的镜像。2、上传标记的镜像到私有仓库。1、拉取私有仓库镜像。2、启动私有仓库容器。

2023-06-04 16:02:11 1608 2

原创 Docker如何安装基础镜像服务

本文章讲述从0到1安装docker 及相关依赖服务镜像如何安装,安装之前,确保开放所需要的端口或者关闭防火墙。外部机器不能直接访问容器,网是不通的,但可以访问宿主机,只要将容器的端口与宿主机进行映射后,访问宿主机的端口就相当于访问了容器的端口。

2023-06-04 11:40:40 2349

原创 如何在 switch case 中使用枚举类

在JDK 7中,又加入了对String类型的支持,从此不用再写If-Else来判断字符串了。因为short,byte,char都会转换成int进行处理,这一点也可以从生成的字节码看出。switch的case语句可以处理int,short,byte,char类型的值,在JDK 5中加入的枚举Enum类型也是可以作为case值的。

2023-06-04 11:03:11 1776

原创 Java对象和JSON格式的互相转化

【代码】Java对象和JSON格式的互相转化。

2023-06-04 10:17:49 10750

原创 【yarn】 yarn的安装和使用

Yarn是facebook发布的一款取代npm的包管理工具。

2023-05-31 22:49:34 349

原创 docker容器安装ping和telnet命令

这个命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。Docker的CentOS镜像由于做了精简,去掉了ping和telnet命令,所以不能直接适用,会报命令不存在,那么,如何在docker容器中安装这个命令呢?等更新完毕以后再敲命令:apt-get install iputils-ping命令即可。telnet命令安装,只需要将上面的pig换成telnet操作即可。

2023-05-31 22:41:24 2780 1

snipaste-2023新版下载-截图神器

解压安装后,F1 截图,F3贴图,非常方便。

2023-05-07

微信小程序(.wxapkg)源码解包工具

通过该工具可以将微信源码(.wxapkg)格式文件解压为文件夹,阅读源码

2022-09-03

mybatis自动生成各层代码

1.修改generatorConfig.xml文件的数据库连接,修改为你自己的数据库表 2.修改generatorConfig.xml文件整所需驱动的本地地址classPathEntr location=“C:\Users\Administrator\.m2\repository\mysql\mysql-connector-java\5.1.46\mysql-connector-java-5.1.46.jar”参数地址是否正确,一般本地有

2019-08-29

2019年java面试题集锦.docx

01:Java 基础 02: 容器 03:多线程 04:反射 05:异常、网络和设计模式 06:Spring、Spring MVC、Spring Boot、Spring Cloud 07:Hibernate 和 MyBatis 08:RabbitMQ 09:Kafka 和 Zookeeper 10:MySQL 11:Redis 12:JVM 结语

2019-08-28

空空如也

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

TA关注的人

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