自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 LeetCode中的数据结构4:查找表

Java中的Set和Map底层是哈希表实现,哈希表的缺点是失去了数据的顺序性。如果需要数据的顺序性,需要使用底层是二叉查找树的实现。

2019-07-02 16:06:34 198

原创 Java异常处理

Java中的Exceptionn分为Unchecked Exception和Checked Exception。Unchecked Exception随时可以抛出,编译器不强制捕获。Checked Exception函数定义中必须声明throws,调用方必须处理,或throws或try catch。

2019-07-02 10:20:14 160

原创 通过自定义RedisTemplate修改Redis的序列化方式

Redis的默认配置在org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration中,Spring启动时会自动加载默认配置。对于RedisTemplate,如果系统中没有指定的Bean,则会加载默认的RedisTemplate,如下:@Bean @ConditionalOnMissingBean( ...

2019-06-20 04:38:15 6447

翻译 Java的垃圾回收机制

垃圾自动回收是一个观察堆内存的进程,检查哪些对象还在使用,哪些不在使用了,清理不使用的对象。一个对象正在被使用(引用),说明这个对象是维持当前程序的一部分。一个不被使用(不被引用)的对象,就不会在被任何程序使用了,因此这部分内存可以释放掉。在C语言中,程序员需要手动分配和释放内存。在Java中,释放内存可以由垃圾回收器自动完成。

2019-06-17 07:42:17 157

原创 ngnix配置反向代理

我们要设计的服务器集群结构:所有的请求都经过Nginx,如果是静态资源的请求,则直接访问Ngnix的本地磁盘(或者NAS),其余的动态资源请求均由Nginx转发到后端服务器。

2019-06-14 23:05:25 570

原创 LeetCode中的数据结构1:数组

数组问题要明确变量的定义,并全程保持其定义,维护循环不变量。维护循环不变量。

2019-06-11 23:01:20 142

原创 通过Tomcat配置改善SpringBoot项目并发线程数上不去的问题

并发容量问题:server端并发线程数上不去SpringBoot内嵌tomcat容器,许多配置变得不透明,需要到spring-configuration-metadata.json文件查看各节点的配置。上线前一定要检查配置,保证最优,再发生产。4核8g内存,线程数经验值800,操作系统做线程之间的切换调度是有系统开销的,所以不是越多越好。server.tomcat.accept-count...

2019-06-10 11:33:05 28497 3

原创 SpringBoot项目云端部署

如果部署不同平台配置文件中属性不同,如连接数据库不一致,访问端口不一致等。可以通过外挂配置文件的方式解决,避免在每次打包前修改配置文件。如果通过命令行启动程序,退出远程控制台,程序也会关闭。更好的方案是使用deploy脚本启动。

2019-06-04 02:42:46 2161

原创 LeetCode中的数据结构3:二叉树

二叉树具有天然的递归性,二叉树问题也常用递归方式求解。递归函数应该包含两部分:递归终止条件和递归过程。例如求二叉树的最大深度,就是使用递归方法求解的非常简单的二叉树问题。

2019-06-02 02:10:36 236

原创 LeetCode中的数据结构2:链表

链表问题要尤其注意,检查边界条件是否考虑全面,代码在边界条件下是否能正确运行,如:链表为空、链表只包含一个结点、链表只包含两个结点、代码逻辑处理头结点和尾结点时,能否正常执行。

2019-06-01 05:28:04 194

原创 解决远程连接阿里云MySQL时3306端口无法访问的问题

我在阿里云服务器上安装了MySQL8,但配置远程连接一直不成功。理论上我只需要修改mysql的user表中root用户的host,然后刷新权限,关闭防火墙即可。然而。。

2019-05-29 09:02:35 7023

原创 MySQL8中移除用户权限时出错

我在使用grant all on . to `user`@`%` with grant option为用户添加权限时发现,不可以对同一个用户执行两次该命令,第一次会成功,第二次就会失败,提示:ERROR 1227 (42000): Access denied; you need (at least one of) the SYSTEM_USER privilege(s) for this oper...

2019-05-29 08:47:21 547

原创 使用@ControllerAdvice + @ExceptionHandler建立全局异常拦截

@ControllerAdvice 注解定义全局异常处理类@ControllerAdvicepublic class GlobalExceptionHandler {}@ExceptionHandler 注解声明异常处理方法@ControllerAdvicepublic class GlobalExceptionHandler{ @ExceptionHandler(Excep...

2019-05-22 05:24:00 802

原创 死锁案例

线程不安全void transfer(Account from, Account to, int amount) { from.setAmout(from.getAmount - amount); to.setAmount(to.getAmount + amount);}加锁导致死锁void transfer(Account from, Account to, int a...

2019-05-20 10:40:22 377

原创 并发容器中常用的同步组件

CountDownLatch通过基数来保证线程是否需要一直阻塞。public class CountDownLatchExample { private static int threadCount = 200; public static void main(String[] args) throws InterruptedException { Execut...

2019-05-20 10:33:03 141

原创 Java内存模型笔记:重排序

首先看下面这段代码,看起来似乎while循环永远都不会被异常终止,(tester.x_read, tester.y_read)似乎不会又(0,0)这种结果,但实验一下会发现,while很高的几率被异常终止,因为编译器和执行器在执行代码指令时,并不会完全按照我们书写的顺序执行,而是通过重排序提高执行效率。重排序后的指令需保证单线程中重排序后语义不变,但多线程中(本例中场景)则无法保证。public...

2019-05-06 10:08:41 132

原创 排序3:堆排序

堆是一种特殊的树结构,其最典型的的应用就是堆排序。堆排序是一种原地的、时间复杂度为O(nlogn)的排序算法。1. 必须是一棵完全二叉树。2. 每个节点都必须大于等于(或小于等于)它的所有子节点,等价于每个节点都必须大于等于(或小于等于)它的左右节点。

2019-04-21 22:20:56 175

原创 在Windows的虚拟机中安装并配置CentOS

启用虚拟化Windows系统中,安装虚拟机前需要检查是否已启用虚拟化。如下图,打开任务管理器->性能->CPU->虚拟化。如果状态为已禁用,那么需要通过BIOS开启虚拟化。安装虚拟机和CentOS我安装的虚拟机是Virtual Box,官网下载安装包,傻瓜式安装即可。然后在虚拟机中新建一个虚拟电脑,在下一步中选择属性,最后点创建,然后选择已经下载好的.iso文件,即可安装...

2019-04-14 21:22:58 700

原创 Activiti配置

用户的脑洞永远都在碾压我的技术水平,最近又有用户想在审批流上大做文章。于是,我只能重翻Activiti 6的用户手册和API,从头记录并分享一下。Activiti 6的User Guide目录为https://www.activiti.org/userguide/#configuration。这一篇先介绍Activiti的基本配置。ProcessEngine的基本配置Activiti的流程...

2019-04-14 21:11:47 1031 2

原创 排序2:快速排序的优化方案

上一篇文章简单的讨论了快速排序的实现,但这种实现在分区不均衡时,有可能退化成时间复杂度为O(n^2^)的算法。

2019-04-12 16:23:13 205

原创 LeetCode笔记:438. Find All Anagrams in a String

这是一道难度为Easy的问题,但我觉得挺难的。记录一下。问题Given a string s and a non-empty string p, find all the start indices of p’s anagrams in s.Strings consists of lowercase English letters only and the length of both s...

2019-04-08 14:22:27 132

原创 一个Activiti的小demo

创建一个activiti的小应用,大概分为4步:创建流程引擎、部署流程定义文件、启动运行程序、处理流程任务。

2019-04-07 19:22:01 283

原创 常用Linux命令整理

鉴于命令行操作频频失败,我决定在哪里跌倒就在哪里趴着并学习一会,所以买了一节关于Linux的入门课程https://coding.imooc.com/class/154.html。在这里记录并分享一下。

2019-04-07 00:37:30 162

原创 排序1:常见排序方法的简单介绍

虽然时间复杂度不是考察一个算法的唯一指标,但却是大部分情况下都非常看重的,所以我们就按这个思路梳理一下常见的排序算法。常见的排序算法按照时间复杂度可划分成两类,1. O(n^2^):插入排序、选择排序。2. O(nlogn):归并排序、快速排序。

2019-04-01 15:25:35 292 1

原创 Mac安装MySQL一步一个坑

还是那句话,面对命令行操作,我从来没有随随便便成功过。今天忘了Mac电脑上MySQL的root密码,也好久没有用过了。索性重装MySQL,结果,折腾了好久,想哭哭。。本来我想的,重装很容易嘛,brew install一下就可以啦。果然很快就安装成功了呢,现在只要根据提示操作修改一下密码就可以啦(并不。。提示说,运行mysql_secure_installation 可以设置密码,然而ERR...

2019-03-17 18:46:30 651

原创 设计模式:让我们一起破坏单例模式吧

简介单例对象的类必须保证只有一个实例存在,并提供一个全局访问点。可以减少内存开销,同时避免对资源的多重占用。连接池、线程池都是常见的单例模式。实现一个单例模式基本有两种思路,一种是在初次使用时构建(懒汉式),一种是在类加载时构建(饿汉式)。这两种思路中,该类的构造函数都必须定义为私有方法,这样其他处的代码就无法通过调用该类的构造函数来实例化该类的对象,只有通过该类提供的静态方法来得到该类的唯一...

2019-03-10 22:38:24 165

原创 设计模式:MyBatis中的抽象工厂

简介介绍抽象工厂之前,需要先介绍两个概念:产品族和产品等级。产品族是指同一主题的产品,例如Java的录像和Java的文章都属于Java主题的产品,他们将在同一个工厂生产。产品等级是指不同产品族中的同类产品,比如Java的录像和Python的录像,他们分属不同的主题,但都是录像这种类型。抽象工厂可以将一个产品族中的产品(多个产品等级)统一到一起创建。因此在抽象工厂创建时就决定了其包含的产品等级,...

2019-03-10 00:44:37 570 1

原创 设计模式:Logback中的工厂方法

简介如果创建某个对象需要大量重复代码,应用层不关注这个对象的创建细节,创建对象的过程可以推迟到子类实现,那么可以考虑使用工厂方法。工厂模式是通过简单工厂演化而来,与简单工厂相比,在加入新产品时符合开闭原则,扩展性更高。然而每增加一种产品,都需要创建对应的工厂类,会导致类数量过多,增加系统的复杂度。但这种基于产品和工厂的多态性设计,正是工厂方法的关键。举例继续我们在简单工厂中教学视频的例子。其...

2019-03-09 00:55:51 514

原创 设计模式:JDK中的简单工厂

简介简单工厂虽然不属于GOF23中设计模式,但却是非常简单、基础、常用的一种。一般由一个工厂类、一个产品基类、多个产品子类构成。由工厂对象决定创建哪种产品类的实例,调用者只需要和工厂类交互。举例例如,我们现在有一个视频工厂,你无需直接创建具体的视频对象,工厂自会为你安排妥当。基类,规定必要属性和抽象方法。public abstract class Video { private...

2019-03-07 21:58:55 1437 2

原创 Oracle锁表小小记

今天在PLSQL中测试一个update语句,谁知成功比我想象的来得更早一些,所以我一激动直接切回了开发平台,既没有提交事务也没有回滚事务。等我完成了这个小小的需求变更开始测试时,发现端点停在了dao.update上,我才意识到锁表了。再切回PLSQL时,回滚和提交按钮都亮着,然而数据库连接已经意外中断了。那就先查查锁表的进程吧。select * from v$session t1, v$loc...

2019-03-07 13:01:16 181

原创 LeetCode笔记:121. Best Time to Buy and Sell Stock

又是一道很简单,但每次都让我误入歧途的问题。Mark一下。问题Say you have an array for which the ith element is the price of a given stock on day i.If you were only permitted to complete at most one transaction (i.e., buy one ...

2019-03-04 21:52:19 130

原创 LeetCode笔记:283. Move Zeroes

这是一道难度为Easy的问题,但不知道为什么,每次做我都会掉入思维误区,想出超级复杂的方案。今天整理一下,以便加深印象。问题Given an array nums, write a function to move all 0’s to the end of it while maintaining the relative order of the non-zero elements....

2019-02-28 22:38:40 150

原创 如何在macOS使用wget

面对命令行操作,我从来没有随随便便成功过。今天记录一下我是如何艰难安装wget的。首先借助homebrew,尝试安装wget$ brew install wget一番操作后,果然出现了error,如下:Error: The following directories are not writable by your user:/usr/local/share/man/man5/usr...

2019-02-25 22:09:29 1860

原创 为什么ArrayList中的elementData为什么没有private修饰?

根据面向对象编程的基本原则,数据应尽量的隐蔽。而ArrayList中的成员变量elementData却选择了默认可见性,也就是包可见性。源码中的注释为non-private to simplify nested class access,为了嵌套类可达。但即使外部类的成员变量为private,非静态嵌套类依然可达。例如在内部类Itr,无论外部成员变量elementData是否为private,I...

2019-02-19 16:17:20 1019 5

原创 Spring整合Mybatis过程中遇到的一个奇怪问题

我安装的mysql版本为8.0.14,项目中使用的mysql-connector版本为5.1.6,启动mybatis-generator插件,错误如下:Client does not support authentication protocol requested by server; consider upgrading MySQL client研究了一下,发现是mysql-connec...

2019-02-13 23:10:17 738

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除