- 博客(27)
- 资源 (10)
- 收藏
- 关注
原创 什么是Fork/Join框架、适用场景
Fork/Join 框架是一种高效的并发编程模型,特别适用于可以分解为子任务的问题。通过使用 Fork/Join 框架,可以轻松地实现并行处理,提高程序的执行效率。
2024-08-01 13:48:52
320
原创 Java如何实现线程安全的自增
AtomicInteger:提供原子操作,最适合实现线程安全的自增操作。synchronized 关键字:可以同步方法或代码块,确保同一时间只有一个线程可以访问。ReentrantLock:提供更灵活的锁机制,可以用来实现线程安全的自增操作。ThreadLocal:为每个线程提供独立的计数器副本,适用于不需要共享计数器的情况。
2024-08-01 10:41:47
433
原创 自定义异常的使用场景
在单元测试中,抛出自定义异常可以帮助验证特定条件下的行为。例如,你可以编写测试用例来确保在特定条件下会抛出预期的异常。当你需要表示应用程序中特定的业务逻辑错误时,自定义异常是非常有用的。例如,在一个数据中台系统中,相关的异常如下所示。自定义异常可以用来控制程序的流程,例如跳过某些处理步骤或终止某个过程。
2024-07-31 11:20:42
239
原创 Java的集合类有哪些,以及在实际项目中如何使用
集合类描述1.1 CollectionCollection 是一个接口,它代表一组对象。Collection 的主要实现包括 List, Set, 和 Queue。List:ArrayList:可变大小的列表,内部使用数组实现,支持随机访问元素。LinkedList:基于双向链表实现的列表,适合频繁插入和删除操作。Vector:与 ArrayList 类似,但 Vector 方法都是同步的,适用于多线程环境。Stack:继承自 Vector,实现了后进先出(LIFO)的栈数据结构。
2024-07-31 10:43:09
227
原创 集合类是怎么解决高并发问题的
线程非安全的集合类包含了ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap,实际开发中我们自己使用最多的一般是这样的集合,因为一般情况下我们自己写的业务代码中涉及到多线程共享同一个集合的问题。我们都是在一个函数方法内使用到了容器集合,而这种局部的容器使用方式,是线程之间隔离的,不会存在线程安全问题。线程安全的集合类包含了Vector、HashTable虽然没有JUC中的高性能集合高,但是也能够适应大部分的环境。
2024-07-31 10:33:08
457
原创 linux查看当前目录下的前10条最大的目录或者文件
这个命令组合是在Unix或Linux的shell环境中使用的,主要用于列出当前目录下的所有文件和文件夹的大小,并按照大小进行排序,最后显示最大的10个。
2024-03-28 14:58:47
1246
原创 mysql中我同时使用ORDER BY和UNION遇到的问题
今天同时使用mysql的union和order by遇到的坑,这里总结一下。 事情是这样的,我们的任务列表展示的要求是优先展示运行中状态的任务,如果多个运行中状态的任务就按照开始时间进行降序展示。其他的任务状态,不管是失败、完成、还是停止的状态,都统一按照开始时间进行降序。如下图所示,这里是不对的,需要调整。 类似这种情况的数据展示,我优先考虑了union all,sql如下:select * from data_collect_task_instance where task_instan
2022-01-14 11:28:04
493
1
原创 mysql创建定时任务执行批量插入
这里为了模拟数据库中的数据增量的采集到目标数据源中,我这边编写了定时任务执行批量插入操作。基本的过程就是创建存储过程、然后再创建定时器就可以了。创建存储过程,实现批量插入操作CREATE DEFINER=`root`@`%` PROCEDURE `test`.`add_user`( IN num INT )BEGINDECLARE id INT DEFAULT 0; DECLARE `code` INT DEFAULT 0; DECLARE employee_name CHAR
2022-01-06 11:17:29
893
原创 mysql连接数情况相关查询
最近工作中经常出现因为mysql连接数导致的线程阻塞的各种问题,这里列举一下常用的查询mysql中数据库连接情况的sql,方便以后直接拿来使用。-- 查看mysql支持的最大连接数show variables like '%max_connections%';-- 查看当前数据库的连接情况show full processlist;show processlist;-- 查看当前连接中各个用户的连接数select USER, count(*) from information_sche
2022-01-06 10:02:38
846
原创 mysql自定义函数-随机生成人员姓名
由于对自定义函数的使用比较少,这里仅做个记录,方便以后使用的时候直接从这里面进行摘录使用。创建自定义函数-- mysql自定义函数-随机生成姓名DELIMITER $$DROP FUNCTION IF EXISTS `rand_name`$$CREATE DEFINER=`root`@`%` FUNCTION `rand_name`() RETURNS VARCHAR(64) CHARSET utf8BEGIN/*姓的随机范围568个*/DECLARE rand_surname TE
2022-01-06 09:01:03
1791
原创 多线程同时读写操作List引发的异常问题
今天运行刚写的本地程序的时候发现偶发性的出现如下异常。java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901) at java.util.ArrayList$Itr.next(ArrayList.java:851) at ys.manufacture.dip.etl.listener.TaskLogListener$1.run(Ta
2021-12-16 09:02:03
1742
原创 Java线程池满了,导致触发了拒绝策略的问题
一个同事写需求的时候,使用了线程池,出了问题,这里记录一下。 首先他的需求是进行定时每天统计点击数据申请请求(一个接口),为了解耦,他使用了AOP+注解的方式,获取到那个请求的操作,并进行统计,不过由于是切面操作,只要有用户点击这个按钮触发这个请求就会走他的切面的逻辑,而且由于他计算的过程需要调用其他服务接口(远程调用),有一定的耗时操作,为了提高用户体验,他就使用了线程执行方式进行异步操作。 这里他使用的是Executors.newSingleThreadExecutor的方式进行创建的线
2021-12-15 20:23:38
3831
原创 java如何实现一个线程内的所有子线程(遍历)的join操作
工作中我有这么一个需求,就是需要保证一个线程内的所有操作,包括里面的子线程以及子线程内的子线程全部都执行完成了,才继续执行这个线程后面的操作。 这里我一开始考虑的是是否最外层的线程使用了join方法之后,会不会里面的子线程也会跟着join,下面是我的验证的方式,我创建一个线程thread001,在这个线程中我又调用了另一个线程thread002,为了保证thread002比thread001执行的慢,我在里面进行Thread.sleep(1000),然后对thread001进行join操作,
2021-12-15 09:42:10
275
原创 我用注解@Builder提高了代码可读性
最近开始使用lombok中的@Builder注解了,其实这个注解的功能正如字面上的意思,符合了我们设计模式中的建造者模式,我们进行创建对象的时候再也不需要进行写多个构造函数、写多行set方法了。 下面我们直接看代码,由于Builder注解只是创建型的,也可以理解为主要方便创建对象的时候替代setter方法的,但是我们要进行获取指定的属性值的getter方法还是需要的,这里为了方便,我直接使用的@Data注解。FoodBuilder.java@Builder@Datapublic class
2021-12-05 18:29:39
542
原创 IDEA启动报错,类不存在,实际上存在着
首先进行清理idea的缓存,然后进行重启idea 这个时候一般就会没问题了,如果还有问题的话,就执行maven-reimport重新加载maven依赖
2021-12-02 09:31:17
4303
原创 git常用命令
仓库在当前目录新建一个Git代码库$ git init新建一个目录,将其初始化为Git代码库$ git init [project-name]下载一个项目和它的整个代码历史$ git clone [url]配置显示当前的Git配置$ git config --list编辑Git配置文件$ git config -e [–global]设置提交代码时的用户信息$ git config [–global] user.name “[name]”$ git config [–global
2021-11-16 16:32:40
82
原创 GitLab回滚到提交的指定版本
获取指定版本commit SHA 进入到我们的gitlab页面,进入到指定的分支branch或者主干master中,选择你要回滚到的指定的版本,点击如下图所示的按钮进行copy commit SHA,这样你会得到6b9f9481b45b562a1949898504f74e3695a这种一长串的编码。本地回滚 本地文件回滚到指定版本git reset --hard 66b9f9481b45b562a1949898504f74e3695a远程回滚 远程回滚,保证远程服务器也进行回滚到指定
2021-11-09 22:02:58
3215
1
原创 设计模式-汉堡套餐组合-建造者模式
建造者模式的使用场景相同的方法,不同的执行顺序,产生不同的事件结果时,可以采用建造者模式。多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时,则可 以使用该模式。产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能,这个时候使用建 造者模式非常合适。 其实到了这里我们大体的了解到了我们建造者模式的两个核心点就是一个是固定的组件(对象),还有就是可以灵活的进行顺序组装我们的组件,满足客户端Client的需要。建造者模式的含义 建造者模式(Builder
2021-11-09 15:18:38
752
原创 设计模式-汽车性能测试流程-模板方法模式
模板方法的定义 Define the skeleton of an algorithm in an operation,deferring some steps to subclasses.Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm’s structure.(定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构
2021-11-09 13:57:02
463
原创 设计模式-手机生产-抽象工厂模式
抽象工厂的定义 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。场景案例 抽象工厂的应用场景案例说明,如下图所示,我们要实现不同品牌的手机的创建,opp手机对象是一个抽象对象,它的实现类有两个一个是低配版的oppo手机,一个是高配版的
2021-11-07 10:19:31
814
转载 Axure RP 8 下载安装
推荐下面的里链接,测试过,可以使用!https://blog.csdn.net/zxmm666666/article/details/95993505
2021-11-03 14:56:48
353
原创 设计模式-计算器-简单工厂模式
简单工厂模式含义Define an interface for creating an object,but let subclasses decide which class to instantiate.Factory Method lets a class defer instantiation to subclasses.(定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。) 这里我理解的简单工厂模式主要包含三个角色,第一个角色是我们要创建的实体类接口
2021-10-17 21:55:18
762
原创 docker logs命令
概要说明对于我们后端开发人员来说,docker命令的使用越来越频繁了,这里我主要整理了一下docker logs的相关命令,顾名思义,主要就是针对docker 容器中日志信息的查看的。这里先提供一下docker 命令的官网地址:https://docs.docker.com/engine/reference/commandline/docker/打开如下图所示:下面我们就可以进入到docker logs命令的详细说明页面去了解docker logs下都有哪些命令操作,官网的docker logs命
2021-10-13 16:40:05
1939
原创 设计模式-优惠券-策略模式
策略模式定义与实现策略模式的定义 首先我们可以先看一下策略模式的定义:Define a family of algorithms,encapsulate each one,and make them interchangeable.(定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。) 这个定义是非常明确、清晰的,“定义一组算法”,同一个接口的不同实现类是不是三个算法?“将每个算法都封装起来”,封装类Context不就是这个作用吗?**“使它们可以互换”**当然可以互换了,都实现是
2021-10-13 14:43:03
4016
2
原创 docker命令操作kafka容器
第一次在本机虚拟机上使用docker安装了kafka,这里简单的总结一下如何通过docker命令进入到kafka容器中,并且使用命令对kafka容器内部的topic以及消息进行操作,说明一下都是非常基础的命令,主要是topic的增删改查命令、以及简单的生产消息、消费消息的命令。进入到kafka容器内部docker exec -it kafka bash进入到kafka的安装目录,查看到kafka相关的命令bash-5.1# cd /opt/kafka/bin/bash-5.1# lsconne
2021-10-12 14:29:32
2849
原创 设计模式-请假流程-责任链模式
责任链模式的定义首先我们可以先看一下责任链模式的定义:Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request.Chain the receiving objects and pass the request along the chain until an object handles it.(使多个对象都有机会处理请求,从而避
2021-10-12 11:56:54
1697
原创 docker安装运行kafka单机版
docker安装运行kafka单机版 这里我们安装一下kafka的单机版,由于kafka是基于zk进行管理的,如果我们没有安装过zk的话,需要进行安装好zk再安装kafka,当然如果已经安装过了, 那就没必要安装了。我们可以执行docker images命令查看我们的zk镜像是否已经存在了。1. docker拉取zookeeper镜像2. docker拉取kafka镜像3. 验证是否拉取镜像成功4. 启动zookeeper容器5. 启动kafka容器6. 验证是否启动成功7. 设置开机自
2021-10-11 10:08:55
1933
3
c3p0-0.9.1.1-sources.jar
2020-07-21
基于SSH的网上购物商城管理系统
2017-11-04
基于SSH的在线点餐系统
2017-11-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人