暂时未有相关云产品技术能力~
生命不息,学习不止!我是水滴,学习的路上与你同在!
我们自己制作的 PDF 文件,为了避免被别人滥用,通常会加上水印。而市面上很多工具都是收费的,这无疑增加了我们的成本。 所以,我使用 Python 编写了一段加水印的代码,可以批量的为多个 PDF 文件加水印,完全是免费的,在这里分享给大家。
在平时的工作中,我们总会希望将需要的 PDF 文件转换为 Word 文件,而市面上很多工具都是收费的,这无疑增加了我们的成本。 所以,我使用 Python 编写了一个转换代码,可以 将 PDF 转换为 Word,完全是免费的,在这里分享给大家。
对于将 Word 文件转换为 PDF 文件,是我们经常需要的工作。单个文件转的话,Word 本身就支持手动转换,但若有大批量的文件需要转换,这种方式还是有不小的工作量。 所以,为了更加便利和高效,我使用 Python 编写了一个批量转换工具,在这里分享给大家。
Java AIO为我们提供了AsynchronousServerSocketChannel类,它是一个面向流监听套接字的异步通道,可以通过该类的open方法创建一个实例。
Java BIO(Blocking I/O)是一种同步阻塞式I/O模型,从JDK1.0到JDK1.3,Java只能使用BIO实现Socket通信。
对象流有两个类:ObjectOutputStream 和 ObjectInputStream,其主要作用是将 Java 对象序列化为流数据,或将流数据反序列化为 Java 对象。
数据流与要是将 Java 的基础数据类型读取或写入流中,它有如下特点: > 数据流是一个处理流,它必须套接在节点流之上。 数据流在读取和写入时的顺序要一致。否则,读取的数据会失真,造成乱码。
今天的主题是字节数组流,即`ByteArrayInputStream` 和 `ByteArrayOutputStream`。这两个流主要用于字节数组与流之前的转换。
缓冲流是一个包装流,在创建缓冲流实例时,需要传入底层真实操作的输入或输出流。其主要的作用就是为了提高读写效率而生的。 今天讲的字符缓冲流有两个:`BuffreadReader` (字符缓冲输入流)和 `BufferedWriter`(字符缓冲输出流)。本文会介绍它们的构造函数和一些常用方法,最后使用真实案例来学习字符缓冲流是如何使用的。
缓冲流是一个包装流,在创建缓冲流实例时,需要传入底层真实操作的输入或输出流。其主要的作用就是为了提高读写效率而生的。 今天讲的字节缓冲流有两个:`BufferedInputStream` (字节缓冲输入流)和 `BufferedOutputStream` (字节缓冲输出流)。本文会介绍它们的构造函数和一些常用方法,最后使用真实案例来看下字节缓冲流是如何使用的。
本篇文章主要讲述“文件字符输入流”和“文件字符输出流”两个类的使用,并列举了一些读写案例,帮助学习。
前面我们已经学会了字节流的使用,本篇开始介绍字符流。字符输入输出流是所有字符流的超类,学会了它们的方法,也基本上掌握了其子类的使用了。
本篇文章主要讲述“文件字节输入流”和“文件字节输出流”两个类的使用,并列举了一些案例,帮助学习。
所谓 I/O 是 Input/Output 的缩写,即输入/输出。I/O 技术用于处理数据的传输,文件的读写等。 数据传输可以看做是一种数据的流动,而流(Stream)可以理解为数据传输时的序列。按照数据的“流向”,流可分为输入流和输出流。
最近遇到了一些文件流读写的问题,发现对这块知识掌握的还不够系统,所以花了一些时间将 Java IO 流相关的知识整理了一下,也在这里分享给你们,希望能够有所帮助。 先来看第一篇:本文讲述了计算机文件的基本知识,以及 Java 中如何使用 File 类来操作文件的。
我们在项目中会用到createBy、createTime、updateBy、updateTime字段,来记录数据的插入和更新历史。若要实现这些字段的自动填充,MyBatisPlus需要增加一些配置,下面看具体内容吧。
使用乐观锁的意图是:当要更新一条记录的时候,希望这条记录没有被别人更新。那么需要在表中增加一个字段version来实现。
在项目中软删除是必须用到的,那么需要一些配置来支持软删除
使用主键注解@TableId,加到pojo类的主键上
MyBatisPlus有现成的分页功能,需要将插件添加到配置中
继承了BaseMapper<T>接口后,便可实现表的基础CRUD功能了,下面我们来看看具体内容。
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
散列表(Hash Table)也叫哈希表,是根据给定关键字(Key)来计算出该关键字在表中存储地址的数据结构。也就是说,散列表建立了关键字与存储地址之间的一种直接映射关系,将关键字映射到表中记录的地址,这加快了查找速度。
迄今为止,已经介绍了《 二叉查找树 》和《 AVL树 》,我们始终假设可以把整个数据结构存储在内存中。可是,如果数据多到内存装不下,这就意味着必须把数据放在磁盘上,显然这些数据结构不再适用。 问题在于磁盘的I/O速度是远远不如内存访问速度的,然而从一棵树中查找到某个元素,必须从根节点一层层往下找,这每一次查找便是一次I/O操作。为了提高性能,就必须要减少查找的次数。 如能减少树的高度、增加每个节点中的元素数,便是种有效的解决方案。实现这种想法的一种方法是使用B树。
AVL(Adelson-Velskii 和 Landis)树是带有平衡条件的二叉查找树,又叫做平衡二叉树。在AVL树中任何节点的两个子树高度差最多为1,所以它又被称为高度平衡树。
二叉查找树又叫二叉排序树(Binary Sort Tree),或叫二叉搜索树,简称BST。BST是一种节点值之间有次序的二叉树。
树是一种非线性的数据结构,它包含n(n>=1)个节点,(n-1)条边的有穷集合。把它叫做“树”是因为它看起来像一个倒挂的树,也就是说它是根朝上,叶子朝下的。
队列和栈一样,也是一个操作受限制的线性表。不同的是队列的插入在一端进行,我们称为队尾(rear);而删除(取出)在另一端进行,我们称为队头(front)。
栈又叫堆栈,是一种运算受限制的线性表,限定只能在一端进行插入和删除操作,该端称为栈顶(Top),相对的另一端叫栈底(Bottom)。
通过前篇文章《[数组](https://blog.csdn.net/gozhuyinglong/article/details/109702860)》了解到数组的存储结构是一块连续的内存,插入和删除元素时其每个部分都有可能整体移动。为了避免这样的线性开销,我们需要保证数据可以不连续存储。本篇介绍另一种数据结构:链表。
数组是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据
今天启动 SpringBoot 项目时,报了如下错误:`java: Can't generate mapping method with primitive return type.`
今天使用 Python 的 selenium 时,一直在报如下错误:[30616:22540:0328/093748.004:ERROR:ssl_client_socket_impl.cc(992)] handshake failed; returned -1, SSL error code 1, net_error -100
今天使用 `Spring Initializr` 创建了一个 `Spring Boot` 项目,启动时发现如下报错:Error:(3, 32) java:无法访问org.springframework.boot.SpringApplication 错误的类文件...
卸载 Python 时报“No Python 3.* installation was detected.”错误。
最近开机时总能收到来自“Flash助手推荐”的弹窗广告,好烦啊~ 那么我们该如何消灭它呢?继续往下看吧。
使用 SpringBoot 集成 Netty 时,报如下错误:io.netty.channel.ChannelPipelineException: ***Handler is not a @Sharable handler, so can't be added or removed multiple times.
在使用 Kettle(Spoon) 工具创建 MySQL 数据库连接时,提示:Driver class 'org.gjt.mm.mysql.Driver' could not be found, make sure the 'MySQL' driver (jar file) is installed. org.gjt.mm.mysql.Driver
使用 IDEA 时,调用 `main` 方法,提示 `Error: Module not specified` 错误,意思是“module 未指定”。
今天使用 Netty 搭建一个项目,接收报文时提示如下错误:`io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1`
在使用 Kettle(Spoon) 工具创建 SQL Server 数据库连接时,提示:Driver class 'com.microsoft.sqlserver.jdbc.SQLServerDriver' could not be found, make sure the 'MS SQL Server (Native)' driver (jar file) is installed. com.microsoft.sqlserver.jdbc.SQLServerDriver
今天建了一个新项目,使用 Spring Boot 整合 Redis 时,IDEA 被提醒“Could not autowire. No beans of 'RedisConnectionFactory' type found. ”错误,意思是不能自动装配“RedisConnectionFactory”。
在 Spring Boot 项目中,添加一个配置文件时,会提示“Spring Boot Configuration Annotation Processor not configured”
公众号管理员添加开发者时,提醒:该微信用户未开启“公众号安全助手”的消息接收功能,请先开启后再绑定
SSH: Connecting from host [WIN-...] SSH: Connecting with configuration [192.168....] ... ERROR: Exception when publishing, exception message [Failed to connect and initialize SSH connection. Message: [Failed to connect session for config [192.168....]. Message [java.net.ConnectException: Connection
Traceback (most recent call last): File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 194, in _run_module_as_main return _run_code(code, main_globals, None, File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 87, in _ru
分区表是一个独立的逻辑表,其底层由多个物理子表组成。对分区表的请求,在 MySQL 底层都会被转换为对范围内的物理子表的请求,并将结果合并到一起返回。
本篇文章主要讲述,对特点类型的查询进行优化。
当希望 MySQL 能够以更高的性能运行查询时,最好的办法就是搞清楚 MySQL 是如何优化和执行查询的。一旦理解这一点,很多查询优化工作实际上就是遵循一些原则,让优化器按照预想的方式运行。
上一篇我们讲到通到优化数据访问,来解决慢查询问题,这是解决慢查询的基础。但有时我们的查询过于复杂,导致查询速度慢,我们不得不重构查询。今天就来讲下重构查询的几种方式。