- 博客(90)
- 收藏
- 关注
原创 阿里云日志平台查询
* | SELECT Request_method, COUNT(*) as number GROUP BY Request_method LIMIT 10
2025-01-15 17:17:40
105
原创 Connected to the target VM, address: ‘127.0.0.1:51624‘, transport: ‘socket‘
文件的配置格式有问题,去改吧,改一下就好。
2024-12-03 16:33:35
196
原创 Result Maps collection already contains value for
直接在xml中全文看是否有重复,但是文件生成的特别多不容易看出来。例如,你在自己的库中建立了一个user表,可惜的是MySQL库自带user表。此时如何指定生成你预期的库中的user表呢?虽然你写连接地址的时候都已经指定了某个库,但是自动生成工具还是会在每个库中都找一遍。② :自动生成会把所有库的同名列表都生成结果导致两个同名的不同表生成文件混在一起。解决:可以考虑把同名的另一个表先改个名字,生成之后再改回原名。b. 发现确实重复,这里提供两种可能的原因。解决 :把生成的东西删了,重新生成下即可。
2024-07-26 13:46:32
1131
原创 mongo语句
db.getCollection('order_info').find({'user_key':'b2111f7b7de0e8fc531a7a284d4ad051'}); db.getCollection('order_info').find({'order_id':'HHs230711ffed7c3499de'});
2023-07-20 10:47:25
651
原创 java: 找不到符号 符号: 类 BASE64Encoder 位置: 程序包 sun.misc
java: 找不到符号 符号: 类 BASE64Encoder 位置: 程序包 sun.misc。依图如下,修改jdk对应的版本即可。
2023-03-15 14:37:51
4525
原创 java.io.IOException: Broken pipe
我们设置的超时时间是100S,由于当日单量比较大,看日志发现,拉取了3分钟才拉完,拉完之后返回给获取数据服务时,获取数据的服务已关闭服务连接,所以报了这个错,其实报错的字面意思描述也挺明确的。线上环境,拉取对账单,走的接口的形式,当天单量比较大,就出现了,拉取订单超时,报了个错java.io.IOException: Broken pipe。在此记录此问题,如果你不巧也遇到了此问题,希望能帮你提供一个解决思路。可适当改长你们调用方式的 ReadTimeout 时间。吧超时时间设置为大于3分钟就ok了。
2023-03-03 16:52:15
1357
原创 并发乐观锁
尝试了加锁和内存缓存数据等方式进行解决,效果依然不佳,只能减少出现乐观锁的次数,不能避免乐观锁。采取的是 mq 的方式,获取到订单结果的返回码时,发到一个消息队列里,异步进行消费保存。这种大数据量的操作数据库,还是采用mongo缓存好一点,定期存数,不实时更新数据。,当量很大时,多节点多线程对同一条数据进行操作时,会报乐观锁异常。保存的过程中,相同的返回码会累加数据总数,统计批量订单的返回码总数。
2023-02-27 16:48:41
129
原创 一些对账的坑
前期一般是用方式②,因为前期数据比较少,很快就能对完了,随着业务量逐渐增多,有时候会出现某一个渠道对账单数据获取异常等问题,造成逐条比对时数据卡单,然后后面就会卡一大波数据比对不了,对接过支付渠道的可能都知道,凡是交互的订单都是需要后期对账的,应为偶尔会有一笔银行掉单的单子,造成渠道方和本地的订单数据不一致,所以这时候对账就显得尤其重要了。其实,如果你们对接可很多渠道方,可以选择:① 分渠道进行对账,② 也可以用总的数据顺序进行逐条比对。② 拿本地的数据和渠道方数据比对。这两种数据会有两种的差异数据。
2022-12-31 17:41:15
213
原创 数据库 varchar 类型应该设计多长?
尽管 InnoDB 是动态存储的, 但别的数据库引擎不一定是如此,有的可能会使用固定长度的行,或者固定大小的内存表, 内存表即为 SQL 查询中产生的临时表,它通常会为 varchar 类型分配最大的空间,比如 utf-8 编码下, 内存表可能要为 VARCHAR(255) 分配 2+3×255 字节 (2 是因为存的是字节长度而不是字符长度), 如果行数非常多,这也会带来性能问题。其实在今天来说多一个字节也没什么区别, 但为了兼容性, 通常的数据库设计中还是会出现很多 VARCHAR(255)。
2022-11-29 22:58:09
5979
原创 .p12 .pfx .cer 证书
A方:需要 B 方的公钥和 A 自己的私钥, A 自己的私钥用来做加密,然后 B 用 A 给过来的公钥做解密。B方:需要 A 方的公钥和 B 自己的私钥, B 自己的私钥用来做加密,然后 A 用 B 给过来的公钥做解密。② 私钥证书:.p12 .pfx 结尾的私钥。① 公私钥证书:.cer 结尾的公钥。...
2022-08-10 13:47:35
919
原创 CAUSE: 加载证书时出错PKCS12 key store mac invalid - wrong password
CAUSE: 加载证书时出错PKCS12 key store mac invalid - wrong password
2022-08-05 20:02:12
2230
原创 快照读和当前读
普通的 select 语句。执行方式是生成 readview,直接利用 MVCC 机制来读取,并不会对记录进行加锁。它是基于多版本并发控制即 MVCC机制,既然是多版本,那么快照读读到的数据不一定是当前最新的数据,有可能是之前历史版本的数据。如下的操作是快照读:不加锁的 select 操作(事务级别不是串行化,串行化的是当前读)它读取的记录都是数据库中当前的最新版本,会对当前读取的数据进行加锁,防止其他事务修改数据,这种锁是一种悲观锁。如下操作都是当前读:select lock in share
2022-06-02 08:46:06
10135
3
原创 MySQL 优化
如果对于有 where 条件,又想走索引用 limit 的,必须设计一个索引,将 where 放第一位,limit 用到的主键放第 2 位,而且只能 select 主键!这样能完美解决 MySQL 的分页问题了。到了 100 万的数据,160 万数据,15G 表,190M 索引,就算走索引,limit 都得差不多 0.5 秒。所以分页最好别让别人看到 10万 条以后的数据, 要不然就算用索引也会很慢。...
2022-05-29 19:14:47
754
原创 项目启动 xfire-all-1.2.6 jar 包冲突解决版本
我们再倒入一个新项目的时候,经常会遇到 jar 包版本冲突,下面是一个小栗子:加上排除这个就好了<exclusion> <groupId>javax.activation</groupId> <artifactId>activation</artifactId></exclusion>...
2022-05-28 10:37:39
522
原创 执行计划 explain
1、一个SQL 语句之前加上 explain 就可以看其执行计划,然后对其做相应的优化了。2、下面是我 explain 之后的结果截图,你能看到都是有哪些列。3、执行计划包含的信息:id,select_type,table,partitions,type,possible_keys,key,key_len,ref,rows,filtered,Extra官方文档对其有详细的解释:MySQL :: MySQL 5.7 Reference Manual :: 8.8.2 EXPLAIN Out
2022-05-28 09:35:19
335
原创 B树和 B+树
1、B树(B-tree)B 树(B-tree)是一种自平衡的树,能够保持数据有序。一个单节点可以存储多个键值对。 这种数据结构能够让查找数据、顺序访问、插入数据及删除的动作,都在对数时间内完成。 B 树,概括来说是一个一般化的二叉查找树(binarysearchtree),可以拥有多于 2 个子节点。1.1 与自平衡二叉查找树不同平衡二叉树每个节点最多有 2 子节点,B 树可以有更多的子节点。 B 树为系统大块数据的读写操作做了优化。B 树减少定位记录时所经历的中间过程,从而加快存取速度..
2022-05-26 08:54:53
807
原创 @ControllerAdvice
HttpMessageConverter 是一个消息转换的工具,有两方面的功能:1、将服务端返回的对象序列化为 JSON 字符串。2、将前端传来的 JSON 字符串反序列化为 Java 对象。所有的 JSON 生成都离不开相关的 HttpMessageConverter。SpringMVC 自动配置了 Jackson 和 Gson 的 HttpMessageConverter,所以,如果用户使用 jackson 和 gosn 的话,没有其他额外配置,则只需要添加依赖即可。Jackson
2022-05-25 10:15:32
361
原创 数据库索引
1、索引的好处:是为了提高查询速度。但是只有加了索引的字段查询速度才会有提高。2、索引的原理是把硬盘的 io 次数降下来。硬盘的 io 与内存比起来是很费时的。3、一次磁盘 io 带来的影响磁盘的一些基本参数如下:7200转/分钟120转/s与磁盘交互慢在查找的过程,磁盘读的过程是快的,(统称延迟时间)。一次 io 的延迟时间 = 平均寻道时间(大概需要 5ms)+ 平均延迟时间(4ms)加起来就是 9ms。9ms 对于人的感知是很慢的,但是对于计算机来说是很长的,
2022-05-25 08:54:22
143
原创 \uFEFF
1、问题今天在做下载 Excel 文件,解析数据时,遇到一个奇葩问题。文件格式大致长这样我们是要解析这个 Excel 文件,然后用 map.get("订单号") 这种方式获取每一列的值,结果后面列都能正常获取,只有第一列获取结果为 null 。后来控制台打印结果看起来也正常,把打印的结果复制在粘贴到代码里之后发现多了一个 \uFEFF 符号,也就是要用 map.get("\uFEFF订单号") 这种方式才能获取到值。2、分析原因经过和提供 Excel 文件的第三方沟通他们的原因:
2022-05-18 20:05:17
557
原创 多版本并发控制(MVCC)
多版本并发控制 (MVCC)MVCC (multi-version concurrency control) 多版本并发控制。 MVCC 是一种并发控制的方法。 在数据库管理系统中,实现对数据库的并发访问,主要是为了提高数据库的并发性能。InnoDB 引擎支持 MVCC,因为 myIsam 不支持事务所以也不支持 MVCC。 在编程语言中实现事务内存。 为事务分配单向增长的时间戳,为每个修改保存一个版本,版本与事务的时间戳关联,读操作只读该事务开始前的数据库的快照。 InnoDB 的 .
2022-05-02 08:24:36
989
原创 redolog 和 bin log
我们常见的一条更新语句,如果你想细究其执行流程的话,必须要先了解 redolog 、binlog,下面我们就来了解一下这俩 CP。redolog 重做日志在 MySQL里如果每一次的更新操作都需要写进磁盘,然后磁盘也要找到对应的那条记录,然后再更新,整个过程 IO 成本、查找成本都很高。为了解决这个问题,MySQL 的设计者就用了 WAL 技术来提升更新效率。WAL技术,WAL 的全称是 Write-Ahead Logging,它的关键点就是先写日志(这个日志就是 redo log),再写磁盘。
2022-05-01 15:57:52
963
原创 MySQL 8:行锁
行锁行锁是针对数据库表中行记录的锁,是锁一行或者多行。MySQL 的行锁是基于索引加载的,所以行锁是要加在索引响应的行上。加行锁的目的是为了减少锁冲突,提升业务的并发度。示例 1 :比如事务 A 更新了一行数据,而此时事务 B 也要更新同一行数据,则必须等待事务 A 操作完成之后才能进行更新操作。示例 2 :数据库表中有一个主键索引和一个普通索引,SQL 语句基于索引查询,命中两条记录。此时行锁就锁定两条记录,当其他事务访问数据库同一张表时,被锁定的记录不能被访问,其他的记录都可以访问到。
2022-04-25 07:44:18
2027
原创 MySQL 7:表锁
数据库设计的初衷是处理并发问题的,作为多用户共享的资源,当出现并发访问时,数据库需要合理地控制资源的访问规则。而锁就是用来实现这个访问规则的重要数据结构。根据加锁的范围,MySQL 里面的锁大致可以分为全局锁、表锁、行锁。这篇我们来学习表锁。MySQL 里表级锁有两种:表锁 元数据锁(meta data lock ,MDL).表锁语法结构:lock table 表名字1 read(write),表名字2 read(write);比如有俩表 t1、t2,给 t1 加读锁,给 t2
2022-04-24 08:02:50
1469
原创 MySQL 6:全局锁
数据库设计的初衷是处理并发问题的,作为多用户共享的资源,当出现并发访问时,数据库需要合理地控制资源的访问规则。而锁就是用来实现这个访问规则的重要数据结构。根据加锁的范围,MySQL 里面的锁大致可以分为全局锁、表锁、行锁。这篇我们先来学习全局锁。全局锁全局锁就是对整个数据库加锁。当我们对数据库加了读锁之后,其他任何的请求都不能对数据库加写锁了,当我们对数据库加了写锁之后,后续其他任何的请求都不能对数据库加读锁和写锁了。FTWRLMySQL 提供了一个加全局读锁的方法,Flush
2022-04-23 09:19:28
1632
原创 @Transient
遇到的问题报错大概是长这样的, Unknown column 'xxx.fileId' in 'field list' ,因为这个 fileId 只是想作为一个临时变量用一下,并不想存入实体类对应的表中。这个属性在实体类中没有加@Transient 注解,于是就报错了。用法我们来看看@Transient 注解:@transient就是需要给某个 javabean 添加一个属性,而这个属性我们又不希望它存到数据库中去,仅仅是做个临时变量用一下。不修改已经存在数据库中数据的数据结构。那...
2022-04-21 07:59:48
3428
原创 MySQL 5:索引(下)
这篇我们接上篇,来继续学习索引。我们先来看一个问题在下面这个表 T 中,如果我执行 select * from T where k between 3 and 5,需要执行几次树的搜索操作,会扫描多少行呢?这个表的初始化建表语句如下:create table T (id int primary key,k int NOT NULL DEFAULT 0,s varchar(16) NOT NULL DEFAULT ' ',index k(k))engine=InnoDB;
2022-04-17 10:12:19
619
原创 RabbitMQ 2:RabbitMQ的基础(下)
下面是几个要用到的名词解释,我们来了解一下。1、代理服务 Broker我们知道如果要使用 RabbitMQ,必须先要安装一个 RabbitMQ 服务。这个服务就是 Broker,中文叫做代理,因为 MQ 服务器帮我们对消息做了存储和转发。一般情况下为了保证服务的高可用,需要多个 Broker。2、连接 Connection无论生产者或是服务者都需要与 Broker 建立连接,这个连接就是 Connection ,它是一个 TCP 的长连接。3、信道 Channel为了节省服务器资源,
2022-04-16 21:45:00
2006
原创 RabbitMQ 1:RabbitMQ的基础(上)
简介RabbitMQ 是一种轻量级的、功能非常强大的工具,可用来构建十分简单抑或异常复杂的分布式软件架构。是一款消息中间件。 RabbitMQ 成为时下最流行的消息代理服务器( message broker )之一。 作为一款由 Erlang 语言开发的开源软件项目, RabbitMQ 具有自由度以及灵活性,RabbitMQ 的特性及好处:① 开源 ② 平台和供应商无关性 作为实现了具有平台和供应商无关性的高级消息队列协议 (Advanced Message Queuing Prot
2022-04-16 17:24:06
2433
原创 MySQL 4:索引(上)
1、索引索引的作用:是为了提高查询效率的,就像书的目录一样。 索引是为了提高查询效率,而可以用于提高读写效率的数据结构有很多种,这里我们先看三种常见的数据结构: ① 哈希表 ② 有序数组 ③ 搜索树 2 、索引三种模型的区别2.1 哈希表:哈希表是以一种键值对的形式存储数据结构的,即 key-value形式,在查找时,我们只需要输入待查找的 key 就可以找到其对应的 value。 哈希的思路就是把值放在数组里,用一个哈希函数(hash function)把 ..
2022-04-15 08:32:01
1025
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人