- 博客(12)
- 资源 (8)
- 收藏
- 关注
原创 YYYY引发的跨年bug
项目中对用户的语音输入请求记录了话单,由filebeat把话单汇总到logstash,统一在logstash过滤、清晰,最后入库到elasticsearch中,通过前端绘图展示报表。今天发现展示数据不对,看了一眼话单: 今天是2020年12月29号,话单里我们已经穿越到2021年12月29号了,为啥呢?看记话单的代码: 这里记录请求时间用了YYYY-MM-dd HH:mm:ss...
2020-12-29 18:10:00 217
原创 myslq的更新丢失实例
更新丢失,顾名思义,update执行后不生效,为啥不生效,因为update执行的效果丢了。什么情况下会发生更新丢失,在两个事务并发更新时,事务A的更新被事务B的更新覆盖,这叫第一类更新丢失;事务A执行更新,事务B执行更新后回滚,事务A的更新被事务B的回滚覆盖,这叫第二类更新丢失。 什么时候会发生更新丢失?没有启用事务隔离级别的时候,也就是不支持事务的存储引擎,如MyISam。但反过来,都...
2020-12-28 17:53:00 79
原创 特价版线程池ThreadPoolExecutor实现
线程池的实现原理无非复用二字,类似数据库连接池,都是将一些重复创建的东西拿来重复使用。其中最关键的问题就两个:一个是怎么复用;一个是怎么回收。在数据库连接池中,一个连接的生命周期是我们可以手动控制的,相对来说容易一些。我们通过使用一个链表来持有连接并复用,超过最大连接数就回收。线程池不同,线程的生命周期不可控,当run方法运行结束了,线程就自然消亡了,因此麻烦一些,我们需要通过一个循环来让r...
2020-12-18 23:48:00 63
原创 通过SCP实现Linux服务器和本地Win10机器的文件上传下载
服务器上的文件下载还是FileZilla这种FTP工具比较方便,但我本机没装,就用SCP来操作好了。SCP是Security Copy,常用于Linux不同服务器之间的复制。这里我们发挥跨平台的想法,让Windows和Linux之间的复制来实现文件的远程下载。打开本地win10的命令行窗口,开始操作: 1、下载远程服务器的文件/home/sbt/nginx_nacos.conf到本地E:...
2020-12-18 11:12:00 665
原创 数据库连接池的一种实现方案
数据库连接池有多个开源实现,像dbcp、druid等。这里我们再一次造轮子,思路很简单:当有SQL操作(增删查改)到来时,先到池子里看一眼,如果有可用的连接,拿来用,没有就新建一个连接。连接不在新建时入池,而是在被关闭时。本来应当被系统回收的连接被放入池中复用,当累计到最大连接数时,就不再入池,直接回收。 为何要在关闭时判断最大连接数、入池,而不是在请求到来时做呢?我们把关闭入池叫方案1...
2020-12-16 22:46:00 182
原创 JDBC的驱动注册浅析
JDBC驱动类是一个接口——java.sql.Driver。这个接口是给实现JDBC接口的各个数据库实现的。 我们使用JDBC的时候,会有一行代码(参见Mysql数据库的JDBC查询实例或Oracle数据库的JDBC查询实例 ): Class.forName(JDBC_DRIVER); 它起到的作用就是加载具体实现的jar包中实现Driver的具体子类,类加载的过程中会调用s...
2020-12-09 18:17:00 370
原创 Mysql数据库的JDBC查询实例
之前我们使用JDBC操作过Oracle数据库(参见Oracle数据库的JDBC查询实例),这次我们来操作一下Mysql,使用Statement对象的子类PreparedStatement: 1、在pom.xml中引入mysql依赖jar包: <dependency> <groupId>mysql</groupId&g...
2020-12-09 17:53:00 137
原创 Oracle新增用户新建表插入数据
1、用sysdba登陆sqlplus: SQL*Plus: Release 11.2.0.1.0 Production on 星期三 12月 9 13:05:47 2020 Copyright (c) 1982, 2010, Oracle. All rights reserved. 请输入用户名: /as sysdba 连接到: Oracle Database 11g Enter...
2020-12-09 14:29:00 263
原创 偏向锁是个什么东东?
上次我们说了对象头是个什么东东?,但是从我们跑的代码输出却看不到偏向锁这个东东。为啥对象实例化出来之后,对象头里是不支持偏向的呢?其实是JVM搞的鬼,JVM虽然默认启用偏向锁,但启动后4秒内并不支持。可以通过-XX:BiasedLockingStartupDelay=0参数将JVM启动后支持偏向锁的延迟时间设置为0,这样就可以看到偏向锁的输出了: 代码也改动一下: import co...
2020-12-07 19:30:00 83
原创 mysql的事务隔离级别举例
事务是怎么回事,之前已经聊过(参见Oracle事务的隔离 ),无关哪个数据库,只要提到事务,都是这四种隔离级别。mysql的默认隔离级别是3——可重复读。更重要的是,是否支持事务,跟mysql的存储引擎相关。登陆mysql,查询存储引擎(以下SQL均基于mysql5.7.26版本操作): mysql> show engines; +--------------------+-----...
2020-12-04 18:22:00 69
原创 对象头是个什么东东?
对象头,顾名思义,就是对象的头。对象是实例化出来的,实例化的前提是必须有类这个模板。举个不大恰当的例子,人类就是个类,你我他就是人类实例化出来的对象。我们的头,自然就是对象头。我们的头有口鼻眼耳,对象头也有一些东西,主要包含两部分:Mark Word(标记字)和Class Pointer(类指针),如果是数组对象还得再加一项Array Length(数组长度)。 对象头为啥要有这些东东?...
2020-12-02 18:21:00 98
原创 使用awk统计tomcat中access.log日志里时延超过500毫秒的记录
之前在一个springboot项目中开启了access.log日志(参见spring boot打开tomcat的access日志),现在可以很方便的根据access日志统计时延。先看日志文件: 再看access.log里的8个字段: %h %l %u %t "%r" %s %b %D 这几个字段都是啥意思? %h = 发起请求的客户端 IP 地址 %l = 客户机的 RFC ...
2020-12-02 07:58:00 644
EasyDarwin-Windows-x86_64-v7.3.17.0325.zip
2020-03-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人