自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (1)
  • 收藏
  • 关注

原创 Ubuntu 24.04 LTS 安装 touchegg 开启触控板多指手势

之前为了让笔记本支持多指手势,我安装的是 fusuma,安装教程详见这篇文章,考虑到 fusuma 安装过程繁琐且不支持可视化配置,因此找到了个支持 X11 窗口系统(Ubuntu 24.04 基于 X11 窗口系统)的多指手势应用 touchegg,该应用安装配置过程简洁,且支持可视化配置,自定义手势丰富,体验完全超过 fusuma。toucheggX11 Gestures 扩展touche。

2024-05-08 00:22:17 1167

原创 Docker中部署flink集群的两种方式

本文将通过 2 种方式在 docker 中部署 flink standalone 集群,集群中共有 4 个节点,分别是 1 个 jobManager 节点和 3 个 taskManager 节点。方式一能快速部署一个 flink 集群,但是使用的是默认配置,不够灵活,方式二使用的是外置配置文件,可以灵活控制集群配置。

2024-02-19 14:50:39 963

原创 二手房交易流程及避坑指南

房产证出来以后,卖家就可以拿到监管账户中的首付款了,中介公司会将监管账户中的资金划拨给卖家提供的银行账号,如果当天来不及,一般第二天卖家肯定能收到首付款,如果卖家比较急,可以自己去中介公司总部拿首付款支票,然后去支票上指定的银行网点进行入账操作。网签就是在房管局网上备案,防止一房两卖,同时买卖双方签正式的房屋买卖合同,签订地址也是在中介公司专门的签约中心,其中会约定买家首付款打款时间、卖家房贷解押时间、违约规定以及中介监管账户账号,监管账户是用来接收买家首付款的,首付款在过户结束后会打给卖家。

2023-12-31 18:14:34 1082

原创 同时使用注解和 xml 的方式引用 dubbo 服务产生的异常问题排查实战

通过查询 dubbo 源码得知,ReconnectTimerTask 是一个定时任务,其实例被 DubboInvoker 实例持有,当 DubboInvoker 对应的消费端服务与对端的提供端服务断开连接时,该定时任务就会定时重连提供端。正常情况下不会出现这种异常,因为提供端下线以后,会通过注册中心通知到消费端,消费端对应的 DubboInvoker 实例会被销毁,从而重连定时任务也会被销毁。这段代码的意思是,当相同的服务引用被创建了两次,只有第一次创建的引用会订阅服务。

2023-05-03 23:53:51 1052

原创 Ubuntu 22.10 下好用的 GNOME Shell 扩展

隐藏左上角的【活动】按钮,比如可以使用Places Status Indicator(位置按钮)来代替这个活动按钮。能在屏幕上涂鸦的扩展,比如标注、划线、画方框、写文字等,配合系统自带的截图软件就实现了完整的QQ截图功能。剪切板管理器,能记住每次复制的文字和图片,可以在任意软件中粘贴历史复制过的文件和图片。能监控CPU温度和负载、网速、内存占用情况等,是一个全能的系统运行状态指示器。

2023-03-11 18:36:09 823

原创 由SoftRefLRUPolicyMSPerMB=0引起的频繁Full GC问题排查实战

这段代码的意思是,每次调用invoke方法实际上都是调用的invoke0本地方法,但是调用本地方法会有一点性能损耗,于是JVM做了一个优化,当numInvocations的值大于inflationThreshold时,生成一个动态类,然后每次调用invoke方法就直接调用动态类对象的invoke方法,而不再调用本地方法,也就是说同一个方法的反射调用次数超过15次(默认值)后,就动态生成一个反射相关的类,后面直接调用生成类对象的invoke方法即可。...

2022-08-02 00:35:18 1079 1

原创 spring-boot-actuator入门实用教程

是 spring-boot 周边组件之一,主要是用来查询或监控 spring-boot 项目各种组件、各种维度的度量指标,比如环境变量信息、日志级别、spring bean 信息、组件(redis、mq、db)健康状态等,可以通过 jmx 技术或者 http 技术来使用 actuator,下面主要是通过 http 技术来讲解其使用方法以及自定义 endpoint 端点信息和 health indicator 健康状况指示信息。2、启动项目,并访问地址 http://localhost:8081/actua

2022-06-04 22:56:02 2824

原创 Mybatis源码分析

一、Mybatis源码调用过程对于下面一段常用的代码,分析其调用过程SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis-config.xml"));SqlSession sqlSession = factory.openSession(true);StudentMapper studentMapper = sqlSession.getMapper

2022-02-26 00:09:35 657

原创 Ubuntu20.04下好用的软件推荐

帮助你抛弃通过网盘传送文件的方式在多端共享文件,这是个免费的文件共享、实时同步软件,支持全平台操作系统和手机系统,比如在Ubuntu上和手机上分别安装该软件,只需要把待共享的文件拖到指定文件夹,就能自动在手机和电脑上实时收发文件。国外的音乐软件,在国外很火,但也有很多国内的华语歌曲,据说是和腾讯、华纳都有合作,有很多有版权的歌曲,比如周杰伦、孙燕姿、蔡依林、许嵩的歌曲全都有,最让人惊喜的是都免费听哦!Linux版的Alfred,当然相比macOS的Alfred,Albert要逊色不少,但是也还凑合。

2021-12-19 18:23:58 6670 1

原创 maven拾遗

1、finalName 元素打包构件的时候,如果想给构件取一个名字,就用 finalName 元素,如<build> <finalName>order</finalName></build>如果不指定包名,默认包名是 artifactId−{artifactId}-artifactId−{version}.jar(war)。这在打包 war 类型的构件时尤其有用,毕竟 order.war 要比 order-1.0.war 方便部署得多。2、

2020-09-02 01:01:58 236

原创 Java IO 底层原理

引言一提到 IO,就绕不开对 page cache(页缓存)的讨论,页缓存是操作系统为了提升磁盘读写性能在应用进程与磁盘之间加设的提供预读和异步刷盘机制的内核缓冲区。java 的 IO 操作是建立在操作系统的 IO 之上的,从最基础的 read/write 系统调用,到具有零拷贝特性的 sendfile、mmap,在 java 中都能看到它们的身影。本文的主要目的是纵观全局,鸟瞰 java IO 体系,并指出每种 IO 方式的特点与使用场景。整篇文章会围绕下图作分步讲解,为了简单起见,这里主要以写操作为例

2020-07-01 08:38:24 2655 6

原创 RandomAccessFile、FileChannel和MappedByteBuffer

一、RandomAccessFile简单示例:import java.io.IOException;import java.io.RandomAccessFile;/** * @author debo * @date 2020-06-27 */public class RandomAccessFileTest { public static void main(String[] args) throws IOException { RandomAccessFile

2020-06-28 00:28:14 2530 1

原创 Ubuntu 20.04安装后需要做的事情

1、支持多指手势和滑动切换应用参考这篇文章2、把主题改为暗黑主题设置–>外观–>Dark3、设置系统完全暗黑默认的暗黑主题黑的不彻底,比如输入法候选框和顶部通知栏都还是白色的,需要做如下处理变成全黑:3.1 安装gnome扩展sudo apt install gnome-shell-extensions3.2 启用gnome扩展中的...

2020-06-14 23:49:04 5043

原创 Ubuntu触控板支持多指手势和滑动切换应用

用过苹果笔记本的同学肯定会被它那极为方便的触控板多指手势操作所吸引,特别是左右滑动触控板就能在多个应用界面来回切换这个功能用起来真的太爽了!以至于鼠标对于苹果笔记本都是多余的。其实Ubuntu也是支持在多个应用之间来回切换的,效果和苹果笔记本的是一样一样的,但是原理有些不一样。Ubuntu通过一个叫工作区的功能来实现这个效果,默认切换工作区的快捷键是Ctrl+Alt+Up和Ctrl+Alt+Do...

2020-04-26 22:54:03 7888 1

原创 聊一聊volatile的可见性和有序性

众所周知,volatile无法保证原子性,但是可以保证可见性和有序性,今天就结合实际案例聊一聊volatile的可见性和有序性,同时详细说一下happens-before原则中关于volatile的部分,最后说一下稍带同步的概念。1、可见性基于对JMM的了解,线程从主内存中加载变量(比如实例变量)副本到自己的工作内存,后面使用的都是工作内存中的值,在单线程环境下,这是没有问题的。但是,在多线程...

2020-04-26 19:28:38 812

原创 详述DirectByteBuffer直接内存

什么是直接内存我们都知道Java程序是运行在Java虚拟机中的,Java对象的分配一般情况下是在虚拟机的堆内存空间,俗称堆内内存。这一块的内存垃圾回收是受JVM控制的,程序员无需为此处的内存回收而操心。Java对象除了能分配在堆中,也能分配在堆外,这部分内存叫堆外内存,也就是直接内存。直接内存和堆内内存的比较堆内内存的分配是在JVM中,因此分配速度很快,但是堆内内存在进行网络I/O的时候,需...

2020-02-12 23:30:54 780

原创 ClassLoader双亲委派机制在Java SPI中的应用

概述Java SPI机制指的是java来定义接口,然后由不同的厂商去实现这个接口,比如数据库的驱动程序就是由不同厂商实现的,MySQL的驱动和Oracle的驱动是不同的,但是它们都实现了java.sql.Driver接口。下面就来探索程序中如何去获取这个具体实现以及类加载器的双亲委派机制在其中的作用。Java SPI示例1、实现服务假设java.lang.Runnable是一个服务,需要各...

2020-01-28 22:30:17 592

原创 PhantomReference虚引用

示例代码如下:import java.lang.ref.PhantomReference;import java.lang.ref.Reference;import java.lang.ref.ReferenceQueue;/** * @author chenjc * @since 2020-01-13 */public class PhantomReferenceTest {...

2020-01-13 17:15:25 354

原创 WeakReference弱引用

示例代码如下:import java.lang.ref.Reference;import java.lang.ref.ReferenceQueue;import java.lang.ref.WeakReference;/** * @author chenjc * @since 2020-01-13 */public class WeakReferenceTest { p...

2020-01-13 17:13:42 449

原创 SoftReference软引用

示例代码:import java.lang.ref.SoftReference;/** * @author chenjc * @since 2020-01-13 */public class SoftReferenceTest { /** * 使用JVM参数-Xmx10m运行程序 * * @param args * @throws I...

2020-01-13 17:11:03 983

原创 Docker中安装redis cluster集群

一、新建一个docker桥接网络# 创建名称为redis-cluster-net的桥接网络docker network create -d bridge redis-cluster-net二、部署redis节点参照我的这篇文章中的第二节,部署6个redis节点,绑定到宿主机的端口号分别为6391~6396,需修改的redis.conf配置如下#bind 127.0.0.1protec...

2020-01-08 17:05:58 812

原创 Docker中安装redis主从节点和sentinel集群

一、准备工作需要先创建一个docker网络,类型为桥接网络,后面会将redis主从节点和sentinel集群都加入到这网络中,目的是保证全部节点的相互连通。# 创建名称为redis-net的桥接网络docker network create -d bridge redis-net注:其实可以不用特意创建一个网络,默认所有节点会自动加入到名称为bridge的桥接网络中,这个网络是默认已存在...

2020-01-03 16:57:00 632

原创 最简单的主从Reactor多线程代码实现

代码基于主从Reactor多线程这一线程模型编写,加上客户端总共只有5个类。服务启动后,会创建一个主Reactor线程,负责接受新连接,4个从Reactor线程,负责I/O读写,另外还有一个线程池,里面有200个线程,负责具体的业务处理。使用方法:先运行Server类,再运行Client类,然后在Client端控制台输入信息并回车,就会接收到来自Server端的响应信息(可以认为是实现了ECHO...

2019-01-05 18:03:10 2398

翻译 有关Zero-Copy、MMap以及DirectByteBuffer的一切

有一个很常见的场景,比如需要将文件从磁盘上原封不动地发送到网络的另一端。这通过代码实现起来很简单:对于Java而言,你可以使用InputStream的某个实现类将文件一块块地读取到小的缓冲区(通常我们都将缓冲区大小设置为8KB),然后再将缓冲区数据输出到OutputStream中。更好的做法是你可以创建一个PipedInputStream实例,让它来管理缓冲区。但是,如果你的应用对性能有要求,那么...

2018-11-04 13:57:05 2237

原创 FutureTask的用法

FutureTask的常见用法就是将耗时的任务做异步执行,而当前线程继续执行自己的任务,然后在需要的时候调用FutureTask的get()方法同步获取结果。具体代码如下:package cn.cjc.ft;import java.util.concurrent.Callable;import java.util.concurrent.FutureTask;import java....

2018-07-29 16:48:51 1824 1

原创 HTTP keep-alive详解

1.为什么要有Connection: keep-alive?在早期的HTTP/1.0中,每次http请求都要创建一个连接,而创建连接的过程需要消耗资源和时间,为了减少资源消耗,缩短响应时间,就需要重用连接。在后来的HTTP/1.0中以及HTTP/1.1中,引入了重用连接的机制,就是在http请求头中加入Connection: keep-alive来告诉对方这个请求响应完成后不要关闭,下一次咱们还用这

2017-10-29 17:17:15 77313 14

原创 记一次线上问题的排查过程

问题描述前不久运维在例行发布线上CS系统的时候,发现在服务启动的过程中,后台一直在报如下错误,同时导致用户页面访问异常2017-10-10 18:28:51,077 [ERROR] org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(Sim

2017-10-15 22:42:13 2284 1

翻译 通过零拷贝实现高效的数据传输

很多Web应用都会提供大量的静态内容,也就意味着需要从磁盘读取数据,然后将它们写入到响应socket。这看上去似乎需要很少的CPU活动,但是它有点低效:内核从磁盘读取数据,然后穿过内核—用户边界把它送往应用,接着应用再穿过内核—用户边界把它送回,并写入socket。事实上,在把数据从磁盘发往socket的过程中,应用扮演着一个低效的中间媒介。每次数据穿过用户—内核边界都需要被拷贝,这会消耗CPU以及

2017-09-26 23:40:52 2180

原创 SynchronousQueue队列的使用

一直知道java.util.concurrent.Executors#newCachedThreadPool()方法里面使用了SynchronousQueue队列,但是自己在项目中却找不到使用该队列的场景,今天看到这篇文章,于是意淫出一个使用场景:有一个线程数为1的线程池,每次只能并发执行一个任务,当同时有多个任务被提交到该线程池时,抛弃多余的任务,代码如下:import java.util.con

2017-07-16 12:17:54 1020

原创 java加密和解密

这里以RSA非对称加密算法为例,公钥和私钥是用文章java数字签名中的工具类生成package cn.cjc.sign;import org.apache.commons.codec.binary.Base64;import org.junit.Test;import javax.crypto.Cipher;import java.net.URLDecoder;import java.net.

2017-06-25 14:21:30 1002

原创 java数字签名

RSA非对称加密算法在作加解密的时候用公钥加密,私钥解密;在作数字签名的时候用私钥签名,公钥验证签名。下面就写一个java数字签名的工具类package cn.cjc.sign;import org.apache.commons.codec.binary.Base64;import org.junit.Test;import java.net.URLDecoder;import java.net

2017-06-25 11:09:32 1034

原创 java多线程状态详解

java.lang.Thread类中有个内部枚举类State用来描述线程的各种状态,具体如下 public enum State { /** * 尚未启动的线程的状态。 */ NEW, /** * 可运行线程的线程状态。处于可运行状态的某一线程正在Java虚拟机中运行,但它可能正在等待操作系统

2017-06-18 21:47:05 1778

原创 maven常用插件实用技巧

maven常用插件实用技巧使用maven-war-plugin插件打包时动态排除指定文件或者文件夹比如程序中使用的日志框架是logback,我们知道,logback框架在寻找配置文件的时候,首先寻找classes目录下的logback-test.xml配置文件,如果没有寻找到,再使用logback.xml配置文件,利用这个特性,我们可以在src/main/resources目录下放两个配置文件log

2017-05-23 19:20:51 478

原创 Ubuntu下好用的软件推荐

1. 截图软件—Shutter2. 垃圾清理软件—BleachBit3. MySQL/Oracle/SQLServer数据库连接客户端—DBeaver4. 系统个性化设置软件—Unity Tweak Tool5. Redis图形化客户端—Redis Desktop Manager6. 桌面便签工具—Xpad7. 桌面云笔记—为知笔记8. 轻量级Markdown编辑器—Typora9. 远程连接工具—

2016-06-18 23:41:42 2212

原创 安装Ubuntu 16.04出现的各种坑爹问题总结

没法无线上网浏览网页的速度很慢安装openVPN图形化客户端插件安装文泉驿微米黑字体给IntelliJ IDEA 2016创建桌面快捷方式解决IntelliJ IDEA 2016无法输入中文的问题1. 没法无线上网我的电脑是联想G490,安装Win8.1的时候那叫一个爽啊,无线网卡驱动、有线网卡驱动、双显卡驱动都给自动装好的。但安装好Ubuntu 16.04以后,AMD独显是没法用了,因

2016-06-12 22:56:18 50097

原创 (二)Spring AOP:基于注解

步骤一、二、五同上文。主要区别就在于步骤三、四,那么直接到步骤三吧。。。三、切面类package cn.cjc.spring.aop.aspect;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.After

2015-05-16 13:47:45 626

原创 (一)Spring AOP:基于XML配置文件

Spring两大重要特性之一就是面向切面编程,下面的例子就是基于XML配置文件最简单的Spring AOP,AOP中的一些术语我就不说了,还是直接操作来的直观一、maven依赖 org.springframework spring-context 3.1.2.RELEASE

2015-05-16 09:32:49 725

原创 (三)Mybatis进阶

本文主要目的:1.where动态查询2.trim动态拼接语句3.foreach迭代语句4.set动态更新接上文,用Spring集成Mybatis,因此spring的配置文件不再赘述,直接上DO、Mapper接口和底层SQL配置文件一、DO实体类package cn.cjc.mybatis.domain;public class

2015-04-21 21:01:35 490

原创 (二)Mybatis整合Spring

没有人不用Spring吧?所以Mybatis整合Spring使用起来会更方便一、mavan依赖 org.mybatis mybatis 3.2.2 org.mybatis mybati

2015-04-19 19:32:45 508

原创 (一)Mybatis基础

本文主要目的:使用Mybatis持久层框架进行增删改查的操作一、maven依赖 org.mybatis mybatis 3.2.2 二、需要持久化的DOpackage cn.cjc.mybatis.domain;import java.util.Date;public c

2015-04-19 17:37:25 531

问题重现--share.zip

重现线上问题的简单样例程序,使用java语言开发,方便使用者理解

2017-10-15

空空如也

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

TA关注的人

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