自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

江无羡

Life is full of surprises !

原创 C++ 中获取当前进程的PID、内存和执行时间

哈哈

2020-06-30 19:33:16 34 0

原创 文本文件中的换行符在不同操作系统中的区别

文本文件中的换行符在不同操作系统中表现各有不同,这里我们先列一下各自的区别,然后再说一下文本在不同系统间流转使用需要注意的相关事项 Ascii中的空白字符编码 ASCII Name Description C Escape Sequence nul null byte \0 (z...

2020-05-21 11:01:35 34 0

原创 Kubernetes 容器自动化部署、管理与编排引擎

Kubernetes(k8s) 是由Google开源的一个在容器化下,进行应用容器自动化部署,管理,编排,自动伸缩,实现服务高可用的管理引擎; 基础概念 Node: 提供容器执行所需资源与环境(可以是物理机或者虚拟机) Pod: k8s中管理运行的最小单元 Deployment: 定义一类Po...

2020-04-19 19:21:25 126 0

原创 List 下子类排序涉及的一些问题

Java List是继承了Collection接口同时扩展定义为有序集合的接口, 这里我们分析下它的排序实现 定论 List 是否有序 排序方法 排序是否稳定 ArrayList(Vector) 是 归并排序 是 LinkedList 是 归并排序 是 TreeSet 是 ...

2020-03-31 21:07:17 62 0

原创 Docker 服务容器化部署的利器

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 Docker 可以为应用开发人员提供一套构建与共享的标准, 支持在任何基...

2020-02-21 11:33:05 137 0

原创 最优路径之---Bellman-Ford

贝尔曼-福特算法: 使用的动态规划的思想, 用于求解图中(边权正负都可, 但不能存在环)任意两点间的最短距离

2020-01-31 18:45:48 71 0

原创 最优路径之---Floyd

Floyd-Warshall: 使用的动态规划的思想, 用于求解图中(边权正负都可, 但不能存在环)任意两点间的最短距离

2019-12-30 18:26:07 54 0

原创 最优路径之---Dijkstra

Dijkstra: 可以寻求图中(边权为正)指定非相邻两点之间最短距离的算法

2019-12-30 18:11:48 62 0

原创 VS code中手动安装go的插件

Visual Studio Code是一个轻量且功能非常强大的代码开发工具; 支持Windows、MacOS和Linux三种系统的桌面应用; 虽然它一开始主要设计为JavaScript, TypeScript and Node.js,但是它支持通过丰富的插件来支持其他更多的开发语言比如C++, C...

2019-11-27 17:33:27 711 0

原创 Java Agent的初步认识和开发

Java Agent的初步认识、开发和使用初步认识新的改变Java Agent的执行原理开发一个自己的Java Agent 初步认识 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的 Java ...

2019-10-31 19:28:01 168 0

原创 分布式锁之Zookeeper

zookeeper zookeeper介绍 ZooKeeper是一种用于分布式应用程序的分布式开源协调服务。它公开了一组简单的原语,分布式应用程序可以构建使用这些原语,以实现更高级别的服务,如实现同步,配置维护以及组和命名。 它被设计为易于编程,并使用在熟悉的文件系统目录树结构之后设计的数据模型。...

2019-09-04 11:32:06 55 0

原创 分布式锁介绍与实现

锁介绍 多核CPU操作内容数据 当CPU进入多核时代后, 操作系统为了更好发挥CPU的性能, 因此出现了多线程操作; 然后CPU为了提高处理速度, 当线程操作数据时是不和系统内存直接进行交互的, 而是使用缓存; 同时CPU的缓存分为一级缓存, 二级缓存, 三街缓存, 每一级缓存中所存储的全部数据都...

2019-08-15 10:13:26 64 0

原创 Spotless 代码格式化的配置和使用

Spotless 是一个代码格式化工具。它支持的开发语言有java, kotlin, scala, sql, javascript, css, json, yaml, etc; 它不仅能按照指定的规则去检测我们的代码指示出不合规的地方, 同时可以按照规则修复代码; 且发布了现成的maven|gra...

2019-07-09 09:37:59 1597 0

原创 Liquibase 数据库版本管理插件的配置和使用

Liquibase 是一个用于跟踪、管理和应用数据库变化的开源的数据库重构工具。它将所有数据库的变化(包括结构和数据)都保存在 changelog文件中,便于版本跟踪控制,尤其是在敏捷开发模式中, 它的目标是提供一种数据库类型无关的解决方案,通过执行 schema 类型的文件来达到迁移。 自动化...

2019-06-27 14:02:43 1050 0

原创 FindBugs 代码静态扫描bug插件的配置和使用

Checkstyle是一款可以帮助开发人员检查代码隐藏bug的分析工具; 它可以进行代码扫描, 产生bug检测报告, 以便开发人员及时去修复; 使用它可以让我们的工程代码质量更高; 在项目中配置使用FindBugs 在Gradle项目中, 配置使用FindBugs gradle构建脚本使用gro...

2019-06-23 18:35:01 735 0

原创 Checkstyle 代码风格插件的配置和适用

Checkstyle是一款可以帮助开发人员编写符合Java代码编码标准的的开发工具; 它可以进行自动化检查, 避免开发者陷入代码规范这种繁琐的事情之中; 使用它可以让我们的工程保持统一的代码规范; 在项目中配置使用Checkstyle 在Gradle项目中, 配置使用Jacoco gradle构...

2019-06-20 16:35:49 1503 0

原创 Jacoco 代码测试覆盖率检测插件的配置和使用

Jacoco 是一个免费的代码覆盖率测试工具, 分别在maven和gradle管理的项目中都可以通过简单的配置来对我们的项目代码进行单元测试用例执行覆盖率的测试, 非常的便捷好用! 在项目中配置使用Jacoco 在Gradle项目中, 配置使用Jacoco gradle构建脚本使用groovy ...

2019-06-18 20:32:21 942 0

原创 二叉堆(最小堆, 最大堆)介绍与实现

二叉堆是一种特殊的二叉树, 它总是保证一棵树的最小元素(最小堆)或者最大元素(最大堆)处于树根上, 常见的应用场景就是用于构建优先队列, 在jdk中Doug Lea所实现的ScheduledThreadPoolExecutor中就是用到了最小堆; 二叉堆介绍 二叉堆的编程实现 应用场景 二叉堆...

2019-06-13 11:53:16 3416 1

原创 关于RocketMQ的一些基础知识点及使用建议

之前一段时间团队中引入了RocketMQ以作为RabbitMQ的替代品, 一者是让使用它的较高吞吐量,其次想在其上做一些扩展开发,消息事务也是我们想用它的原因之一;引入的过程很简单,接下来为了在核心服务中进行切换,所以就需要对RocketMQ进行一系列深入了解,才有信心在切换的过程中实现稳步切换,...

2019-05-15 07:59:56 373 0

原创 数据库中一些常用SQL使用方法记录

开发出身的程序员们,因为本职工作主要是做一些编码的工作,因此对于一些特殊场景的SQL就不是天天用了,所以在此做以记录,方便后续的查询与参考 DDL(Data Definition Language) DML(Data Manipulation Language) **DCL(Data Contr...

2019-03-22 14:16:30 85 0

原创 Redis原理及应用

Redis 是一个开源的(BSD)基于内存的高性能数据存储器,可作为数据库、缓存、消息代理。支持的数据类型有字符串(strings), 散列表(hashes), 数组(lists), 集合(sets), 有序集合(sorted sets with range queries), 位图(bitmap...

2019-03-13 19:51:40 279 0

原创 使用fastjson进行序列化时进行数据脱敏

fastjson 是阿里巴巴开源的一款优秀的java生态下序列化/反序列化产品,我们可以在不同的服务之间进行数据交互时使用它,同样可以输出日志时使用fasnjson把对象转化为String, 然后再进行采集,比调用对象的toString方法靠谱,比如如果对象内部没有实现toString方法就不能正...

2018-12-21 18:28:54 2618 0

原创 Okhttp 通过拦截器实现对Response编码的设置

Okhttp 一个被广泛用于Android and Java applications中作为http请求的基础类库, 具有简单和方便的API接口, 支持同步和异步, 在http2协议下可以允许多个请求共享一个socket, 连接池降低延迟等特性; 问题抛出 今天做一个新项目, 应团队规范, 采用o...

2018-10-30 20:59:50 3642 3

原创 JVM基本介绍和一些启动参数释义及用法

本篇文章记录一下日常用到的一些JVM启动参数及相关功能释义 列表 -XX:+TraceClassLoading: JVM 启动时设置此参数, 可以打印加载的所有class信息

2018-10-30 20:15:43 444 0

原创 Mysql-InnoDB锁的最佳实践

Mysql自称为世界上最收欢迎的开源(GPL协议)数据库, 可以有效帮助企业构建高性能,高可用的应用程序; 其自身提高了两种数据库引擎MyISAM和InnoDB, 然后由于InnoDB支持事物及行级锁, 因此被很多互联网公司优先选用; 本篇博文主要介绍Mysql-InnoDB数据库引擎中相关锁的介...

2018-10-10 20:54:56 142 0

原创 Java 线程池的简单介绍和常用方法分析

线程池顾名思义是为线程的池子; 在Java的世界里, 我们都知道所有应用程序都是运行在JVM运行实例之上, 每个JVM实例对应到操作系统中就是一个个独立的系统进程; 但是往往我们的应用中需要有异步, 并发, 并行执行程序的需求, 操作系统为此提供支持, 在操作系统调度层面的最小调度单元刚好是线程;...

2018-09-18 00:23:30 152 0

原创 Java 中的序列化与反序列化

在Java中, 序列化是一种把java对象状态转化成字节码流形式的机制, 这种机制被应用在RPC, Hibernate, RMI, JPA, EJB 和 JMS等场景中; 序列化的逆向操作是反序列化, 顾名思义, 就是把java对象的字节码流还原到jvm中的运行时对象; 常见的序列化方式 ...

2018-07-06 17:39:22 1778 0

原创 Spring+Dubbo服务中使用profile指定环境配置文件

Spring提供的profile特性可以对我们的配置文件进行隔离, 以便在不同的环境激活对应的配置项; 轻松实现不同环境不同配置项统一部署的形式; 最近在spring+dubbo的服务项目中, 想实现在不同的环境加载不同的配置文件, 因此就立即想到了spring的profile特性, 然后由于服...

2018-07-04 20:54:51 1840 0

原创 关于JVM中运行的应用程序何时被关闭退出呢

最近在调研一个分布式分片的任务调度框架的事情, 接触到了 Xxl-job, 在运行这个项目的服务案例时, 作者提供了一个spring-web形式的案例工程, clone到本地编译运行确实没有问题, 同时也部署了中心化管理服务Xxl-job-admin, 还用手动即时触发的方式调度了执行器服务中的任...

2018-06-30 15:46:17 1274 0

原创 JVM 中synchronized的底层实现原理解析

锁是应用开发中的一种常见同步机制, 而synchronized则是java中的一种内建的同步方式, 所以也有人称其为Intrinsic Locking, 它提供了互斥的语义和可见性保证, 当一个线程已经获取当前对象锁时, 其他试图获取同一个锁的线程只能等待或者阻塞 在Java 5以前, sync...

2018-06-30 13:59:07 1659 0

原创 常用的开发基础设施搭建步骤记录

常用的开发基础设施搭建步骤记录 这里主要在Docker环境下记录搭建一些开发基础设施的方法与步骤, 方便大家参考 Nexus服务 Gitlab服务 Zookeeper集群 Kafka集群 业务API接口管理服务[Eolinker] BUG管理平台[zentao禅道] Dubbo-admin后...

2018-04-01 21:51:22 400 0

原创 常见的数据签名及加密处理方式

跨服务请求中的数据加密与签名处理 数据隐私与安全是我们所有开发人员在业务需求开发过程中都避免不掉的问题, 比如数据防篡改, 隐秘信息加密, 用户登录ticket生成等场景, 然后这里我们就可以根据不同的具体业务场景选择合适的签名或者加密算法以达到我们的目的! 常用签名与加密算法介绍 业务场景...

2018-03-02 18:48:42 2059 0

原创 Java Collectors的一些方法使用

在 java8 中的 Collectors 结合Function接口实现了很多配合stream对集合进行分组, 统计, 求最大, 最小值等简单方便的方法, 因此这里做一些记录, 方便后续的参考一.

2017-12-12 20:36:18 3438 1

原创 ElasticSearch集群搭建及配置监视服务

Elasticsearch 不仅仅只是全文搜索,还支持结构化搜索、数据分析、复杂的语言处理、地理位置和对象间关联关系等。 同时 Elasticsearch 有着超强的的水平伸缩性,可以将负载压力和稳定性分散到多个节点。

2017-10-12 20:26:49 733 0

原创 GraphicsMagick 实现图片的裁剪, 旋转, 移动

GraphicsMagick gm4java im4java最近对使用Java对操作这方面问题进行了下调研, 随即写了个图片操作工具类, 包括图片的裁剪, 缩放, 移动, 旋转, 加水印等功能

2017-08-16 11:33:28 1918 0

原创 二叉树的广度与深度遍历

二叉树在图论中的定义为, 二叉树是一个连通的无环图,并且每一个顶点的度不大于3。有根二叉树还要满足根结点的度不大于2。有了根结点之后,每个顶点定义了唯一的父结点,和最多2个子结点。然而,左右节点的定义是逻辑上。如果不考虑连通性,允许图中有多个连通分量,这样的结构叫做森林。

2017-05-30 23:27:18 521 0

原创 Ubuntu 挂载硬盘所用命令介绍

新升级了Ubuntu 从16到17结果升挂了,然后就重装了17,下面就是把安装操作系统之外的一个机械硬盘挂载到系统中某个目录下所用的命令简单介绍下;

2017-05-01 14:40:08 3489 0

原创 Tomcat 配置https访问服务

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),即以安全为目标的HTTP通道,简单讲是HTTP的安全版。在HTTP下加入SSL(Secure Sockets Layer 安全套接层),HTTPS的安全基础是SSL,因此...

2017-04-09 17:58:11 3725 0

原创 Linux环境下配置搭建Redis分布式集群

久前, 玩过redis集群服务的搭建, 那种哨兵模式有点类似数据库的读写分离, 但是业务写入数据还是全部由一个逻辑上的master承担的, 具体方法可见 [哨兵]; 今天来依据Redis的官方说明部署把玩下分布式集群, 这种模式可以配置多个master均分16384个hash slot, 使得不同...

2017-03-13 23:56:09 6527 1

原创 RabbitMQ的工作原理与其中相关概念介绍

消息传递使软件应用程序能够互连和扩展。应用可以彼此连接,作为较大应用的组件,或连接到用户设备和数据。 消息本身是异步的,因此它通过分离发送和接收数据来分离解耦应用程序。RabbitMQ 则是实现了 AMQP 消息队列协议的技术架构, 它可以提供可靠的消息传输, 灵活的消息路由, 集群, 高可用的消...

2017-03-13 15:06:25 1024 0

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