Java
文章平均质量分 64
march of Time
程序媛一枚
展开
-
实现具有多个实现类的接口并为每个实现类定义一个名字的方法
Java当中一个接口有多个实现类的使用方法原创 2024-06-21 10:58:34 · 187 阅读 · 0 评论 -
如何关闭一个tcp连接 阻塞和等待的区别 b树查找的过程
线程同步,指一个线程发出某一功能调用时,在没有得到结果之前,该调用不返回。同时其它线程为保证数据一致性,不能调用该功能。线程同步简单说就是线程排队。原创 2023-09-07 16:21:14 · 232 阅读 · 0 评论 -
使用Apache Commons Chain实现责任链模式实例
责任链模式实现示例原创 2023-07-21 15:16:35 · 335 阅读 · 0 评论 -
字节后端一二面,讯飞一面
然后凉了,原因是说算法欠缺,但是确实写出来了,个人认为虽然写对了但是可能是因为一开始没有想到最优解所以挂了吧 很可惜。5.之前的项目用到了springcloud的什么。4.有没有看过spring源码,说一下看了哪些。7.算法题:和为k的子数组个数(前缀和)6.为什么四次挥手要timewait。8.dockerfile写过什么。5.mysql的参数有没有调过。4.ping命令用了什么协议。8.tcp相关的一些东西。7.explain的参数。4.注册中心有了解过吗。6.多继承可以怎么实现。原创 2023-04-27 17:50:02 · 753 阅读 · 0 评论 -
一些知识点整理
杂七杂八原创 2023-03-10 16:25:33 · 271 阅读 · 0 评论 -
java解压文件、复制文件、删除文件代码示例
文章目录删除文件:创建目录拷贝文件解压zip文件解压文件时,可以采用多线程的方式,下面上代码:创建类@Slf4jpublic class FileOperation { private static Executor executor = Executors.newFixedThreadPool(20); //创建新文件的方法: public static File newFile(String fileUrl) { File file = new原创 2022-03-15 13:40:55 · 744 阅读 · 0 评论 -
解决LoggerFactory is not a Logback LoggerEither remove Logback or the competing implementation (class
一个项目引入了amqp以后报错,疑似包冲突,最后利用dependency analyzer终于解决了。问题:原依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>下一步原创 2022-01-20 16:25:37 · 2239 阅读 · 0 评论 -
thumbnailator压缩图片并存至Excel单元格代码
文章目录依赖压缩图片工具类:存至excel的转化器Excel导入导出的数据类将数据库实体转化为excel实体依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.6</version> </de原创 2022-01-07 14:04:04 · 752 阅读 · 0 评论 -
ftp+线程池批量上传文件
FTP服务器(File Transfer Protocol Server)是在互联网上提供文件和访问服务的计算机,它们依照提供服务。FTP是File Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器代码:public class FileBatchUploader implements Closeable { private final String ftpServer; private final St原创 2022-01-05 20:47:18 · 4158 阅读 · 0 评论 -
snowflake分布式自增长id的java实现
snowflake(雪花算法)是Twitter开源的分布式ID生成算法,结果是一个long型的ID。这种方案把64-bit分别划分成多段,分开来标示机器、时间等。如图:其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0。snowflake算法可以根据自身项目的需要进行一定的修改。比如估算未来的数据中心个数,每个数据中心的机器数以及原创 2022-01-05 15:49:13 · 125 阅读 · 0 评论 -
【学习笔记】抽象队列同步器AQS应用之BlockingQueue详解
文章目录什么是AQS框架Aqs核心源码基于aqs实现的锁BlockingQueueArrayBlockingQueueLinkedBlockingQueueDelayQueueBlockingQueue API多线程生产者-消费者示例什么是AQS框架1、AQS是一个JAVA线程同步的框架。是JDK中很多锁工具的核心实现框架。2、在AQS中,维护了一个信号量 state和一个线程组成的双向链表队列。其中,这个线程队列,是用来给线程排队的,而state就像是一个红绿灯,用来控制线程排队或放行的。在不同的场原创 2021-12-31 16:13:32 · 726 阅读 · 0 评论 -
json工具类ObjectMapper的详细使用记录
1。用于json与其他对象之间转化的工具类:public class JsonUtil { private static final ObjectMapper MAPPER = new ObjectMapper(); private static final Logger logger = LoggerFactory.getLogger(JsonUtil.class); static { MAPPER.configure(DeserializationFeatur原创 2021-09-10 19:42:30 · 1168 阅读 · 0 评论 -
java的格式化时间工具类
代码:public class DateTimeUtil { private static final Logger logger = LoggerFactory.getLogger(DateTimeUtil.class); public static final String STANDER_FORMAT = "yyyy-MM-dd HH:mm:ss"; public static final String STANDER_SHORT_FORMAT = "yyyy-MM-dd"原创 2021-09-10 16:16:03 · 780 阅读 · 0 评论 -
自定义异常时exception is never thrown in the corresponding try block和unhandled exception
自己的异常:public class UserNotExistsException extends Exception{ private static final long serialVersionUID = 1L; public UserNotExistsException() { super("user.not.exists", null); }}调用: @Override public User selectUserByLog.原创 2021-08-31 16:51:44 · 14992 阅读 · 0 评论 -
用java的stream流库在实际项目的使用案例
由于自己用stream+lambda很不熟悉,用文章记录在一个电商项目中的用法购物车模块: //获取购物车,校验(是否有商品、库存) List<Cart> cartList = cartService.listForCart(uid).stream() .filter(Cart::getProductSelected) .collect(Collectors.toList());订单模块://获取cartList里的productIds Set<Inte原创 2021-08-31 10:07:23 · 186 阅读 · 0 评论 -
windows查看java进程详细信息的几种方法
仅查看java任务列表tasklist | findstr “java”1.用arthas下载arthas jar包java -jar arthas-boot.jar输入dashboard,进入面板[arthas@29088]$ thread -n 3最忙的三个线程monitor对某个方法的调用进行定时监控。watch观测方法执行数据,能方便的观察到指定方法的调用情况,如:返回值、抛出异常、入参等。$ watch cn.javastack.springbootbestpracti原创 2021-08-28 12:40:38 · 9272 阅读 · 1 评论 -
【java网络编程】用TCP socket实现多线程图片上传
单线程上传服务端:客户端:多线程上传修改服务端:修改客户端单线程上传服务端: public static void main(String[] args) { try ( // 创建一个ServerSocket监听8080端口的客户端请求 ServerSocket server = new ServerSocket(8000);// 使用accept()阻塞当前线程,等待客户端请求 Socket socket = serve.原创 2021-08-22 11:35:19 · 389 阅读 · 0 评论 -
【转载】一文彻底拿下Java异常
1. 异常框架1.1. Throwable**Throwable 是 Java 语言中所有错误(Error)和异常(Exception)的超类。**在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。Throwable 包含了其线程创建时线程执行堆栈的快照,它提供了 printStackTrace() 等接口用于获取堆栈跟踪数据等信息。主要方法:fillInStackTrace - 用当前的调用栈层次填充 Thro.原创 2021-08-19 21:36:11 · 201 阅读 · 0 评论 -
【java学习】Arraylist和LinkedList使用场景与性能对比
介绍List 的三个子类的特点:ArrayList 底层结构是数组,底层查询快,增删慢。LinkedList 底层结构是链表型的,增删快,查询慢。vector 底层结构是数组 线程安全的,增删慢,查询慢。链表增删快,查找慢;ArrayList:基于数组实现,非线程安全的,效率高,便于索引,但不便于插入删除;Vector:基于数组实现,线程安全的,效率低,现在使用较少ArrayList和LinkedList都实现了List接口,他们有以下的不同点:ArrayList是基于索引的数据接口,它的底层原创 2021-07-25 02:46:40 · 1181 阅读 · 0 评论 -
【转载】java中泛型使用详解
引入本文主要讲解泛型类型的解析,泛型算是必须要掌握的一块硬核知识,在很多地方都会用到,这块如果理解了,在阅读其他框架源码的时候会让你更容易一些,看完本文之后大家对泛型也有一个新的认识。关于泛型的解析上面,我们需要先了解一些类和接口,这些比较关键,这些都位于java.lang.reflect包中,类图如下:下面一个个来解释。Type接口这是一个顶层接口,java中的任何类型都可以用这个来表示,这个接口是Java编程语言中所有类型的公共超接口。这些类型包括原始类型、泛型类型、泛型变量类型、通配符类型原创 2021-07-23 03:22:31 · 662 阅读 · 0 评论 -
【项目】itdage-java获取天气和发短信
输出json数据: public class Util { // public static String getString(String url) throws IOException { try { //1.创建一个网址的抽象表示 URL u = new URL(url); //步骤:, //原创 2021-07-22 14:15:28 · 286 阅读 · 1 评论 -
【java学习笔记】java se8的流库概念以及使用
概念流的创建filter map flatMap方法概念流提供了一种让我们可以在比集合更高的概念级别上指定计算的数据视图。通过使用流,我们可以说明想要完成什么任务,而不是说明如何去实现它。我们将操作的调度留给具体实现去解决。例如,假设我们想要计算某个属性的平均值,那么我们就可以指定数据源和该属性,然后,流库就可以对计算进行优化,例如,使用多线程来计算总和与个数,并将结果合并。它是在Java SE 8中引入的,用来以“做什么而非怎么做”的方式处理集合。下面一个例子: String conten.原创 2021-07-12 01:46:50 · 223 阅读 · 1 评论 -
【过程记录】aop学习·实现动态代理的jdk方法和cglib方法和使用实例
介绍jdk动态代理目录:代码:package proxy;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;public class jdkProxy { private Object target; public jdkProxy(Object target) { this.targ原创 2021-07-09 17:38:56 · 174 阅读 · 0 评论 -
【java作业】2、 编写两个函数,分别使用字节流、字符流实现文件的拷贝;点击按钮,将第三个文本框的字符串的值设置为第一个文本框的字符串+第二个文本框的字符串。
拷贝文件 :public static void copy1(String a,String b) throws IOException { FileInputStream input = new FileInputStream(a); File file = new File(a); if(!file.canRead()||file.length() == 0) return ; FileOutputStream output = new FileOutputStrea原创 2021-06-29 14:39:58 · 397 阅读 · 0 评论 -
【学习笔记】java基础核心总结
1.JDK的主要内容如下:开发工具 Java运行环境 附加库 C头文件 源代码如果一个平台只想运行Java程序, 可以只安装JRE 。2.环境变量修改:在弹出的 “编辑系统变量 ”对话框中为Path添加的新值是%JAVA_HOME%\bin,3.Java程序的开发步骤编写源文件 编译源文件使用Java编译器(javac.exe)编译源文件, 得到字节码文件。运行程序使用Java SE平台中的Java解释器(java.exe)来解释执行字节码文件4.如果源文件中有多个类,那么只能有一个类原创 2021-06-22 14:19:44 · 166 阅读 · 0 评论 -
【java学习】常用实体类--String、StringBuffer\StringTokenizer
文章目录参数传递StringString类有两个常用构造方法:引用String常量String类的常用方法StringBuffer和StringBuilderStringBuilder中实现插入、删除和替换等操作的常用方法说明如下:参数传递基本数据类型:值传递引用数据类型:引用本身无法被改变,而引用指向的对象内容可以被改变如:public void change(Studen s){s.setName("张三");//允许s = new Student("李四","男");//试图改变引用本原创 2021-06-12 22:20:56 · 381 阅读 · 3 评论 -
java的流对象和一些方法
方法public StringBuilder reverse(),用于将字符序列逆序,仍然返回自身对象。 方法public String toString(),返回此序列中数据的字符串表示形式。String一经初始化,就不会再改变其内容了。对String字符串的操作实际上是对其副本(原始拷贝)的操作,原来的字符串一点都没有改变。例如String s ="a"创建了一个字符串,s= s+“b"实际上将原来的"a"字符串对象丢弃,现在又产生了另一个字符串s+“b”(也就是"ab”)。如果多次执行这些改变串内原创 2020-12-25 04:46:27 · 173 阅读 · 1 评论 -
【学习笔记】JDBC:java提供的专门操纵数据库的API JDBC驱动程序的类型 JDBC常用的类与接口
JDBC操作不同的数据库仅仅是连接方式上的差异,使用JDBC的应用程一旦和数据库建立连接,就可以使用JDBC提供的API操作数据库。使用JDBC进行如下的操作:与一个数据库建立连接向已连接的数据库发送SQL语句处理SQL语句返回的结果java运行环境将JDBC-数据库驱动转化为DBMS(数据库管理系统)所使用的专用协议来实现和特定的DBMS交互信息。使用JDBC-数据库驱动方式和数据库建立连接需要经过两个步骤:1.加载JDBC–数据库驱动2.和指定的数据库建立连接mysql5.7版本建原创 2021-01-01 23:46:30 · 1084 阅读 · 0 评论 -
【Java作业】实验二 货物进销管理系统(运行成功完整代码
实验目的1.掌握Java中文件的读写操作。2.学会使用Java提供的实用类(Vector, ArrayList)来完成特定的功能。3.掌握字符串类(String, StringBuffer)的使用。4.掌握用面向对象的方法分析和解决复杂问题。二.实验内容编写一个Inventory.java完成以下功能:1.程序首先打开并读取Inventory.txt中记录的所有库存记录,然后读取Transactions.txt,处理这个文件中包含的事务,记录发货记录到Shipping.txt,并记录错误信息到原创 2021-06-06 17:14:26 · 2882 阅读 · 2 评论 -
【java学习笔记-io流 文件读写和键盘读写】带缓存的输入/输出流和数据输入/输出流
带缓存的输入/输出流缓存是I/O的一种性能优化。缓存流为I/O流增加了内存缓存区。有了缓存区,使得在流上执行skip()、mark()和reset()方法都成为可能。BufferedInputStream与BufferedOutputStream类 BufferedInputStream类可以对所有InputStream类进行带缓存区的包装以达到性能的优化。BufferedInputStream类有两个构造方法: BufferedInputStream(InputStream in)。 Buffe原创 2021-06-05 03:11:57 · 741 阅读 · 1 评论 -
【JAVA多线程学习笔记】(1)实现线程的方式 线程生命周期 操作线程的方法
两种方式实现线程在Java中主要提供两种方式实现线程,分别为继承java.lang.Thread类与实现java.lang.Runnable接口。继承Thread类Thread类是java.lang包中的一个类,从这个类中实例化的对象代表线程,程序员启动一个新线程需要建立Thread实例。Thread类中常用的两个构造方法如下: public Thread():创建一个新的线程对象。 public Thread(String threadName):创建一个名称为threadName的线程对象。原创 2021-06-04 15:48:11 · 242 阅读 · 0 评论 -
【笔记】JAVA中的泛型和反射
泛型Java的泛型是如何工作的?什么是类型擦除?----泛型是通过类型擦除来实现的,编译器在编译时擦除了所有类型相关的信息,所以在运行时不存在任何类型相关的信息。例如List在运行时仅用一个List来表示。这样做的目的是确保能和Java 5之前的版本开发二进制类库兼容。无法在运行时访问到类型参数,因为编译器已经把泛型类型转换成了原始类型。**泛型提供了编译期的类型安全,确保只能把正确类型的对象放入集合中,**避免了在运行时出现ClassCastException。利用泛型方法,还可以定义具有可变参原创 2021-05-01 08:21:16 · 285 阅读 · 6 评论 -
【错误记录】Error creating bean with name: Unsatisfied dependency expressed through field
启动一个Spring boot集成mybatis plus报错:Error creating bean with name ‘examManageController’: Unsatisfied dependency expressed through field ‘examManageService’描述:启动类中有加注解mapperscan:@MapperScan("com.naughty.userlogin02.dao")@SpringBootApplicationpublic clas原创 2021-02-26 17:15:26 · 17803 阅读 · 0 评论 -
mybatis-plus代码生成器使用和代码
在springboot项目中第一次用这个,试了一下,能成功启动和生成文件但目前还有问题,先记录一下:pom.xml:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.a原创 2021-02-24 11:33:09 · 279 阅读 · 0 评论 -
JDBC批量操作批量增加批量修改
批量增加利用JdbcTemplate的batchUpdate方法有两个参数,第一个是Sql语句,第二个是list集合代码:1.先在service中创建方法(已经有了增删改查方法,现在加上)public void batchAdd(List<Object[]>batchArgs){ bookDao.batchAddBook(batchArgs);}2.再在Dao接口创建这个方法://批量添加void batchAddBook(List<Object[]>batchA原创 2021-02-22 13:58:55 · 1598 阅读 · 0 评论 -
Uncaught (in promise) Error: Request failed with status code 500
前端: // 获取所有的导航菜单 async getMenuList(){ const {data:res} = await this.$http.get("menus"); console.log(res.data); if( res.status != 200) return this.$message.error("操作失败!!!"); this.menuList = res.data; },后端:@RestControlle..原创 2021-02-15 15:45:54 · 41820 阅读 · 0 评论 -
springboot的yml配置文件绑定时必须和相应的类中的属性类型对应,不然启动报错
今天启动springboot应用时一开始一直是error,访问localhost也无法打开:此时自己的Person.java:package boot.bean;import lombok.Data;import lombok.ToString;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Conf原创 2021-01-27 20:05:45 · 505 阅读 · 0 评论