复现

前几天进行业务迁移,在没有任何代码修改的基础上竟然出现了异常,切换到本地环境后,异常也复现了出来:

1
java.sql.SQLException: Unknown system variable 'query_cache_size'
Read more »

引入

前几天的日常巡查时发现生产服务上有空指针的异常,但是业务又没有影响,然后通过查看对应的堆栈异常信息,总算是定位到了问题,但是这个问题又有点奇怪。
ThreadLocalget() 返回了空指针,但是是在当前的线程的运行中去取值,这个怎么会有问题呢?

Read more »

简介

tcpdump 是一个运行在命令行下的的数据包分析器,它允许用户拦截和显示发送或接收通过网络连接到该台计算机的 TCP/IP 数据包或者其他协议的数据包。它支持针对网络层、协议、主机、网络或端口的过滤,并提供 andornot等逻辑语句来帮助用户去掉无用的信息。

还有一些功能相同的工具,类似于 wireshark ,不过它是由图形化界面的,而 tcpdump 只有命令行。

Read more »

前段时间刚换了新的工作,然后之前也在一直准备面试,入职之后又需要适应新的工作内容、新的同事、新的项目,所以博客也一直没写,也没有学习新的东西,总的来说还是有点懈怠。😭 不过最近已经在慢慢变好了。

问题来源

那么开始正题,这个问题是怎么来的呢?新的公司肯定要负责新的项目呀,那么遇到的第一个问题就向你走来了。

我在负责一个新的项目时,要上线到测试的服务器,然后首先就是 SQL 的打包上线,这问题不就来了嘛。

1
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

字面意思如下:索引字段长度太长,最大长度是 767 字节。

很有意思的是,本地数据库都是正常的,为什么测试数据库不行呢?

Read more »

前言

前段时间在看算法这块的东西,看的我是头昏脑胀。所以这几天又捡起了 《深入理解Java虚拟机》 这本书,这次主要看的是书中的 第三部分,我一直崇尚知识是在不断的总结和不断地学习相互交叉,这样才能学以致用,用而有据。

概念

字节码

字节码指的是 Java 中的 .java 文件经过编译( javac )后生成的固定格式文件 .class 文件以供 JVM 使用。
之所以被称为字节码文件是因为字节码文件是由十六进制值组成,JVM 以两个十六进制值为一组,即一个字节进行读取。同时 JVM 也针对不同操作系统和平台进行优化,这也就是 Java 号称 一次编译,到处运行 的根本原因。

由此又可以引出一个问题,由于 JVM 规范的存在,那么只要我们最终可以生成符合 JVM 规范的字节码文件那就可以在 JVM 上运行了,这也就产生了其他运行在 JVM 上的语言(如 Scale、Kotlin、Groovy ),可以通过其他语言可以扩展 Java 所没有的特性和语法糖。

Read more »

前言

最近总是在断断续续的看动态规划相关的算法题,总感觉对于动态规划这个东西需要仔细琢磨一下,在本子上写写画画才能计算出 边界条件状态转移方程,而这其中最难的就是状态转移方程。
所以今天这篇文章的核心也就是 基础状态转移方程状态转移方程的优化

动态规划简介

动态规划就是把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解。同时动态规划是自底向上求解,通过循环来从最基础已知的答案逐步求解到想要的答案。

Read more »

前言

最近这两天在看牛客网上链表这块的算法题,一番苦战总结下来就是那些个套路,只要熟知一些常见的套路,碰见链表一类的算法题都会有个大概的思路。
全文包含的套路如下:

不过还有一些小细节就需要你自己在做题的过程中发现了,这里只是一些比较常见的套路,希望对你有所帮助。

Read more »

前言

最近在看算法这块的东西,算法这东西就是需要时不时的拿起来看一看,这样才会有思考,时常更新自己的知识库。

这篇文章主要包含两种解法:

  • 前序遍历
  • 后序遍历

至于为什么中序遍历不能,看到最后你就明白了。

Read more »

不相邻最大子序列和

题目描述

给你一个 n ,和一个长度为 n 的数组,在不同时选位置相邻的两个数的基础上,求该序列的最大子序列和(挑选出的子序列可以为空)。

示例

  1. 示例1
    输入
    1
    3,[1,2,3]
    返回值
    1
    4
    说明
    1
    有 [], [1], [2], [3], [1,3] 4 种选取方式其中 [1,3] 选取最优,答案为 4 。 
Read more »

Git 基础全流程

git clone : 克隆远程仓库到本地。
git status : 查看当前版本状态(本地已修改的内容和暂存区的内容)
git add </file> : 添加已修改文件到暂存区
git commit -m “test” : 添加本次提交注释
git push origin bracnh : 提交本地branch 分支推送到远端。

Read more »