自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode 计算积水体积

/** * CalculateWater 计算存水面积 * * 等宽柱体排列计算,柱体之间积水体积,如下图; * * @Date 2019/6/27 * @Author joker **/public class CalculateWater { /** * 计算 - 优化:左右最高的查询可以依靠上一次查询,判断是否一致;判断其中一个比当前小就快速失败;超...

2019-06-27 01:22:46 493

转载 mybatis 配置文件

<?xml version="1.0" encoding="utf-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_...

2019-04-12 14:14:27 267

转载 git代码行统计

查看git上个人代码量git log --author="username" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, ...

2019-03-17 10:07:15 345

原创 线程切换

import org.junit.jupiter.api.Test;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * ThreadCount too young...

2019-01-25 01:22:36 171

原创 Maven 配置以及冲突解决

POM文件结构: &lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven....

2018-09-11 23:37:00 807

原创 算法系列--LeetCode(四)10进制转2进制

将一个10进制的数据转化为2进制的字符输出。进制转换:        1.互为倍数(2进制 -&gt; 8进制 -&gt; 16进制):一位拆成几位或者几位合成一位,注意是从低位到高位分组。        2. 10进制转其他进制:取模,计数,相除;把最后计数转置即为结果。举例: /** * 10进制转2进制 */ @Test publi...

2018-08-26 16:40:03 1593

原创 Java 关键字 assert

Java 运行时参数  -ea/-da  开启/关闭断言。一、语法        在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的;如果要开启断言检查,则需要用开关-enableassertions或-ea来开启。assert关键字语法很简单,有两种用法: ...

2018-08-26 12:02:45 204

原创 算法系列--LeetCode(三)矩阵求岛屿数量

一个N*M的矩阵只有0、1两种元素,1为陆地0为海洋。相邻(上下左右四个方向)即为同一块陆地,输出矩阵中岛屿数量。算法的“广度优先”还是“深度优先”:    1.广度:一行一行遍历记录岛屿状态以及岛屿产生与合并情况。    2.深度:从一个节点开始四个方向去寻找连接岛屿,并标记寻找过的位置。这里采用的是深度优先递归实现,非递归实现需要借助栈。代码: /** * 二维矩阵...

2018-08-24 17:56:43 1332

原创 算法系列--LeetCode(二)求第K大

在一个n长度的数组中,找到第K大个数字。思考:       1.维护一个K长度的数组保持有序,K是常量,时间复杂度O(n);如果K跟n有关,时间复杂度O(n^2)。        2.K未知采用快排序做二分查找,快排序是一个比较稳定的排序,JDK很多排序都是用快排序。       3.可以看一下Arrays 里面的排序,大数组用计数排序,小量用快排序;因为我们不是全排序,最后选择用快...

2018-08-24 16:36:02 470

原创 算法系列--LeetCode(一)编辑校读并集

此系列为算法刷题,大部分题目来自LeetCode也有本人平时遇见有意识的算法题,在此记录一下个人解决方案。希望能跟大家交流,如果在此基础上有优化或者有更好的方案,请给我留言,不胜感激。n个编辑在校对同一篇文章,每个编辑会根据自己认为的有语法问题的段落作出标记;请合并所有校对给出的错误区间。e.g.A:[4,8],[9,12],[1,2]B:[13,19],[200,220]C:[15...

2018-08-24 16:04:40 276

原创 算法系列--排序算法(六)堆排序

找到一个堆排序讲的比较好的博客,自认为画图没有人家好所以摘抄下来分享给大家。堆排序  堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏、最好、平均时间复杂度均为O(nlogn);空间复杂度O(1),它也是不稳定排序。堆  堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大根堆;或者每个结点的值都小于或等于其左右孩子结点的值...

2018-08-24 15:20:35 235

原创 算法系列--排序算法(五)归并排序

不积跬步无以至千里... ...归并排序有点像希尔排序(分组排序最后合并,如何分组?如何合并两个分组?是两者的区别。),其实也是分治实现的一种。归并排序:采用二分法将集合分成最小单位保证组内有序,然后合并两个分组;每次分组之后都跟着一次合并排序直到整个集合。图解:(1)分组:第一次分组3 1 4 7 2 5 8 6 1 1 ...

2018-08-22 13:02:16 198

转载 浅析TCP三次握手和四次挥手

TCP三次握手和四次挥手的问题在面试中是最为常见的考点之一。很多读者都知道三次和四次,但是如果问深入一点,他们往往都无法作出准确回答。本篇尝试使用动画来对这个知识点进行讲解,期望读者们可以更加简单地地理解TCP交互的本质。TCP 三次握手TCP 三次握手就好比两个人在街上隔着50米看见了对方,但是因为雾霾等原因不能100%确认,所以要通过招手的方式相互确定对方是否认识自己。 ...

2018-08-22 12:35:42 124

原创 算法系列--排序算法(四)快速排序

快速排序是通过两个指针相互交换完成一次快速排序,类似于递归的二分排序,从交换上来讲比较像冒泡(为什么这么说呢?不管是插入还是直接,都需要在移动之前遍历元素;冒泡直接比较交换。)上面的可能有点抽象,我是不太想抄一个百度定义去解释,可能对算法理解上不太好。通过两个指针:一个标记用来比较二分的对象,一个标记标记下一个要进行二分标记的数字;一次快速排序中包含多个二分过程。图解(升序):数据...

2018-08-20 15:23:06 216

原创 算法系列--排序算法(三)选择排序

定义         选择排序:顾名思义就是选择其中一个符合条件的元素直接放到排列完成时候的位置。每次选出当前集合中的一个最值。        特点被选中的元素经过一轮比较会直接找到自己的位置。“选择排序” 和 “冒泡排序” 都比较适合“前5名”“后5名”...这种问题。图解        (1)、选择数组中最小的元素值以及位置,默认第一位的【3】是最小值;3 1 4 ...

2018-08-09 17:01:12 301

原创 算法系列--排序算法(二)冒泡排序

前言:        上一篇说的是“插入排序”,这篇讲讲“冒泡”,算法比较简单篇幅会比较短;既然要做一个系列再短也要讲啊~!概念(百度上抄的): 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对...

2018-08-08 15:59:33 236

原创 算法系列--排序算法(一)插入排序

前言    准备开始写一个算法系列,记录一下自己学习的过程,参考前人的总结的基础上分享一下自己的理解。欢迎大家私下交换意见。插入排序的特点保持排序过的集合是有序的,下一个需要排序的元素作为一个节点插入已经有序的集合中。直接插入排序图解:5 2 1 4 8 7 3 6     第一步:2 插入,认为左边的{5}是一个有序集合。2 ...

2018-08-07 14:33:12 211

原创 Mysql 中的锁(行锁\表锁)

 有人说我思路有些乱没有条理,在这希望能用比较'安稳'的思路描述一下我理解的Mysql锁,欢迎大家指正。前言:    ACID:本来不想再说了,就是想强调一下:这四个属性(原子、一致、隔离、持久)是事物的属性,针对同一个事物对外是原子的,执行前后一致,相对其他事物不可见,完成后会持久存在。一致性的问题:更新覆盖:两个人同时修改同一条记录,相互修改的被覆盖。 脏读:不能确定会生效的数...

2018-08-07 10:51:56 291

原创 计算机中整型取值范围(带符号位)

语言背景Java其他也一样,计算机原理实现都是一样的,只不过其中举例子是Java。前言:    1. 带符号位就是最前面的一位是符号位,正数是 0 表示,负数是 1 表示;    2.正数以原码保存,负数以补码保存;    3.有符号位的0应该如何表示,10000/00000 这时候0 用正数0 标示;    4.负数0用来标示负数最大值,这时候10....000只是含义上的补码,并没有原码表示;...

2018-07-10 11:16:57 2877

转载 MySQL 之 explain

MySQL Explain详解explain 后面加 select 语句主要是用来看SQL的执行计划。mysql&gt; explain select * from servers;+----+-------------+---------+------+---------------+------+---------+------+------+-------+| id | select_t...

2018-07-10 09:52:22 167

转载 SpringMVC内部流转过程

SpringMVC的工作原理图(图中为HandlerAdapter):SpringMVC流程1、  用户发送请求至前端控制器DispatcherServlet。2、  DispatcherServlet收到请求调用HandlerMapping处理器映射器。3、  处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给Dispatch...

2018-07-05 02:36:20 1209

原创 Java 垃圾回收 之 CMS

....

2018-07-03 17:08:35 309

原创 Java多线程死锁

什么是死锁?因为互相请求被其他线程占用的资源而造成的线程一直等待。举个例子:两个线程分别请求对方占用的锁对象,首先不能释放原有的锁对象,然后再重新申请对方占用的对象。public class DeadlockTest { public static void main(String[] args) { String str1 = new String("资源1"); ...

2018-07-03 02:04:54 163

转载 柔性事物

在支付宝架构与技术 中对柔性事务有大致的描述:可以看出,柔性事务(遵循BASE理论)是指相对于ACID刚性事务而言的。支付宝所说的柔性事务分为:两阶段型、补偿型、异步确保型、最大努力通知型几种。由于支付宝整个架构是SOA架构,因此传统单机环境下数据库的ACID事务满足了分布式环境下的业务需要,以上几种事务类似就是针对分布式环境下业务需要设定的。其中:1、两阶段型:就是分布式事务

2018-06-29 16:57:35 252

原创 Java String 为什么是Final的?

先考虑一下:String 不是基本数据类型,为什么会放在常量池?Java 类被定义成 Final 的是不想类被继承;String 类被标记为 final 保证了,String 类型的对象只可能是String类型,不会有其它的子类型。String 在初始化之后不可变化,因为其不可变性保证了在共享对象的同时的安全性。创建String对象的两步:1.在常量池创建一个不存在的字符串对象。2.在堆中创建对象...

2018-06-29 15:27:16 379

转载 JavaEE包含哪些模块

java的大方向就是Java EE,Java EE不仅仅是socket编程,具体包括13种核心技术。  JAVAEE的核心API与组件  JAVA EE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对JAVAEE中的13种技术规范进行简单的描述:  1、JDBC(Java Database Connectivity)   ...

2018-06-24 21:52:45 1419

转载 关于XML文档的xmlns、xmlns:xsi和xsi:schemaLocation

https://yq.aliyun.com/articles/40353*************************************摘要: 相信很多人和我一样,在编写Spring或者Maven或者其他需要用到XML文档的程序时,通常都是将这些XML文档头拷贝过来,并没有理解其中元素 (比如xmlns,xmlns:xsi,xsi:schemaLocation)的真正含义,不知道哪些元素...

2018-05-28 14:19:59 164

原创 序列化和反序列化

public static void main(String[] args) { try { ByteArrayOutputStream out = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(out);

2018-01-21 15:52:21 139

原创 ValidatorException: PKIX path building failed: 缺少客户端证书

在配置测试环境的时候报告unable to find valid certification path to requested target错误。Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPat

2018-01-21 15:51:27 909

原创 JAVA中XML的4种经典解析方式

一、DOM解析DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,

2018-01-21 15:49:31 308

转载 使用Zabbix监控RabbitMQ

一 应用场景描述线上业务使用RabbitMQ作为消息队列中间件,那么作为运维人员对RabbitMQ的监控就很重要,本文就针对如何从头到尾使用Zabbix来监控RabbitMQ进行说明。二 RabbitMQ监控要点RabbitMQ官方提供两种方法来管理和监控RabbitMQ。1.使用rabbitmqctl管理和监控Usage

2018-01-02 22:12:35 1467

转载 Spring 声明式事物 和 编程式事物

概述事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性。Spring Framework对事务管理提供了一致的抽象,其特点如下:为不同的事务API提供一致的编程模型,比如JTA(Java Transaction API), JDBC, Hibernate, JPA(Java Persistence API和JDO(Java Data Objects

2017-11-03 16:28:06 457

转载 虚拟机 Centos 设定固定IP

固定ip的目的因为平时做实验时不能同时操作几台电脑.所以只能靠虚拟机解决. 但是每次虚拟机重启以后有可能ip发生变化,所以就设置虚拟机固定ip地址. 最终达到的效果为,VMware中的虚拟机能够固定ip,同时能够连上外网.1. 修改VMware的虚拟网络编辑器打开VMware虚拟网络编辑器.(编辑–> 虚拟网络编辑器)选中NAT模式,修改一些配置就行

2017-10-26 19:00:38 1031

转载 Redis 配置文件详解

# redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位,# 通常的格式就是 1k 5gb 4m 等酱紫:## 1k => 1000 bytes# 1kb => 1024 bytes# 1m => 1000000 bytes# 1mb => 1024*1024 bytes# 1g => 1000000000 bytes# 1gb => 10

2017-09-14 16:37:56 253

原创 ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderExce

客户端没有证书,会报以下错误:Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to

2017-05-09 18:49:51 2874

原创 序列化 和 反序列化

public static void main(String[] args) { try { ByteArrayOutputStream out = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(out);

2017-03-31 15:50:19 337

转载 postman 中的 form-data、x-www-form-urlencoded、raw、binary的区别

POST MAN 模拟提交请求的测试工具。postman 官网文档:https://www.getpostman.com/docs/1、form-data:                    就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Co

2017-03-19 18:34:26 799

原创 Myeclipse Configure-->Convert to Maven Project

最近在在弄maven项目,maven项目建好了之后,点击了disable maven nature,去掉maven的构建方式, 但是之后又想恢复maven构建方式。原来在eclipse中,在项目上右键Configure->Convert to Maven Project.就行了。 但是现在使用的是MyEclipse,在项目上右键,没有发现Configure菜单。 解决办法如下 Window >

2017-03-19 18:33:53 2581

原创 Mysql隔离级别

数据库隔离级分为4种:1.未提交读:就是在一个事物中包含修改表的操作;在事物操作过程中,其他读取操作会读取,这个事物还没提交时已经修改的数据。因为这时候事物还没有提交,有可能回滚,这时候读取的数据是还没有持久化的。这种情况叫做“脏读”。2.提交读:顾名思义,只有事物提交之后才能读取数据。也叫“不可重复读”。A事物的改变表中数据,B事物在A事物执行前后读取数据不一致。3.可重复读

2017-02-23 11:13:27 301

原创 Mongo 初识

NoSQL 简介:NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。关系型数据库遵循ACID规则:原子性Atomicity,一致性Consiste

2017-02-15 15:44:22 307

空空如也

空空如也

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

TA关注的人

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