自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(163)
  • 资源 (19)
  • 收藏
  • 关注

原创 docker容器下部署hbase并在springboot中通过jdbc连接

在docker中搭建hbase环境,然后spring通过phoenix调用hbase

2024-03-22 17:48:59 557 1

原创 docker部署ng实现反向代理

按规定尽可能减少开放到外网的端口,所以需要将多个服务部署到一个ip一个端口上。

2024-01-12 14:32:24 923

原创 JavaFx踩坑

https://gitee.com/forgot940629/java-fx-demo.githttps://gitee.com/forgot940629/win-tool-demo-java-fx.git

2024-01-09 10:30:04 417

原创 后端程序员开发win小工具(未完待续)

相比于命令行,可视化有两个有点,一个是便于操作,学习成本低,不用看命令行那些man文档,只要看页面就可以大致理解功能,再一个是我不会命令行软件的开发,我不清楚tail ps ls这种交互式命令行工具如何用java实现,但是我知道web页面如何实现。综上原因,我做的小工具会是个可视化的软件,而不是命令行工具。这些辅助工具通常希望能想其他软件一样在桌面系统运行,并且有一些桌面应用的基本功能(可视化页面,配置文件,日志)。因为是小工具,通常都是开发团队内部使用,发布时不会经过严格测试,所以会出现很多bug。

2024-01-08 11:25:30 740

原创 杂项1111

博客https://zhuanlan.zhihu.com/p/394509255。spring boot中配置log4j2。记录开发过程中遇到的坑。

2024-01-08 09:40:26 325

原创 netty trojan

参考代码:https://github.com/kdyzm/trojan-client-netty参考博客:github代码作者的博客:https://blog.kdyzm.cn/post/71trojan-go介绍:https://p4gefau1t.github.io/trojan-go/developer/trojan/trojan协议介绍:https://trojan-gfw.github.io/trojan/protocol。

2023-12-27 17:27:59 900

原创 nio模拟netty

netty底层调用了nio相关功能,但是由于netty代码量较大,将nio层层封装,导致没接触过nio开发的程序员无法快速理解netty底层究竟怎样调用nio,又对nio实现了什么封装。本篇文章尽可能(水平有限,只能做到"尽可能")在不依赖netty库的前提下模拟netty对nio的调用,尽量把每一行代码在netty中的相应位置阐释出来。客户端,负责链接服务端并发送消息。未完待续,部分注解后期补充。接收服务端消息并打印。

2023-12-26 11:39:33 402

原创 [笔记]netty随笔

记录使用过程中偶然发现的一些关键逻辑。

2023-12-21 17:25:16 424

原创 [笔记]ByteBuffer垃圾回收

参考:https://blog.csdn.net/lom9357bye/article/details/133702169。

2023-12-20 17:29:27 612

原创 [笔记]dubbo发送接收

主要使用ThreadlessExecutor实现全consumer的全双工通讯。consumer创建本次请求的requestId用于将response和request匹配。然后分以下几步完成一次请求发送并接收结果:槽:发送消息前将用于接收结果的executor放到一个map中存储发送消息:调用netty发送挂起线程:等待response异步接收结果:netty线程接收到结果后唤醒之前挂起的线程。

2023-11-30 14:25:55 974

原创 【记一次bug查询过程】invalid bound statement (not found)

本文只是一个排查过程的梳理总结,不会揭示一些构架原理Exception in thread "main" org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.jd.ads.agent.dao.account.DspAgentDao.selectById at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(Ma

2021-11-06 11:09:46 323 1

转载 转载 日志格式

文章:你真的会阅读Java的异常信息吗?

2021-10-31 12:44:39 345

原创 使用火焰图分析org.apache.commons.beanutils.BeanUtils

一、Java Flight Recorder参考:https://blog.csdn.net/qq_37552993/article/details/102545780配置之后让测试程序运行五分钟,得到下面这张图二、分析耗时原因2.1 isReadable isWriteable每次copy时会对每个字段的可读性和可写性进行重复判断,而由于在复制过程中类的结构一般不会改变,所以这俩状态应该被缓存下来。结论来源:https://blog.csdn.net/u010209217/article/

2021-10-04 12:06:08 6292

原创 AQS & ReentrantLock & CountDownLatch

主要参考文章https://javadoop.com/2017/06/16/AbstractQueuedSynchronizer/首先介绍AQS基本原理,然后介绍AQS在ReentrantLock和CountDownLatch上的应用AQS概述AQS全程是AbstractQueuedSynchronizer,顾名思义是一个基于队列的同步器。底层使用LockSupport.park和LockSupport.unPark实现对线程的挂起和唤醒。如果使用了condition,情况就会稍微有些复杂.

2021-07-25 10:55:20 145

原创 zookeeper QuorumCnxManager源码解析

参考https://blog.csdn.net/a814333256/article/details/102049968数据的发送与接收概览主要涉及了四个线程,线程之间靠队列实现通讯。发送数据时WorkerSender线程从FastLeaderElection.sendqueue中读取数据,调用QuorumCnxManager#toSend将数据传递给QuorumCnxManager.queueSendMap中相应队列。SendWorker线程会循环检测QuorumCnxManager.qu.

2021-06-14 11:14:24 563

原创 netty框架分析

https://github.com/wuyinxian124/nettybook2.git使用com.phei.netty.frame.delimiter.EchoServer做实验使用这个工程时要处理一下pom的包冲突,否则调试的时候回显"alternative"之类让你选择代码的操作重点参考文章:https://segmentfault.com/a/1190000007282628一、主要对象一般来说,server有boss线程和work线程,client只有work线程。boss和wo.

2021-02-21 10:28:25 180

原创 netty boss线程的selector中的keys集合的初始化流程

https://github.com/wuyinxian124/nettybook2.git使用com.phei.netty.frame.delimiter.EchoServer做实验使用这个工程时要处理一下pom的包冲突,否则调试的时候回显"alternative"之类让你选择代码的操作pom文件见文末附件几个比较重要的方法1、io.netty.util.concurrent.ThreadPerTaskExecutor#execute创建新线程2、sun.nio.ch.WindowsSe.

2021-02-15 13:08:01 274

原创 netty 数据如何传到worker线程&handler链式调用

https://github.com/wuyinxian124/nettybook2.git使用com.phei.netty.frame.delimiter.EchoServer做实验使用这个工程时要处理一下pom的包冲突,否则调试的时候回显"alternative"之类让你选择代码的操作俩问题1、数据如何传到worker线程2、netty中如何实现多个handler链式调用数据如何传到worker线程 @Override public void read().

2021-02-13 11:29:36 438 1

原创 netty服务端启动时的线程创建

唤醒主线程时的调用堆栈notifyAll:-1, Object (java.lang)setSuccess0:501, DefaultPromise (io.netty.util.concurrent)setSuccess:389, DefaultPromise (io.netty.util.concurrent)setSuccess:76, DefaultChannelPromise (io.netty.channel)setSuccess:71, DefaultChannelPromise (

2021-02-09 11:44:04 386

转载 同步异步 阻塞非阻塞

老张爱喝茶,废话不说,煮开水。出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。1 老张把水壶放到火上,立等水开。(同步阻塞)老张觉得自己有点傻2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~的噪音。3 老张把响水壶放到火上,立等水开。(异步阻塞)老张觉得这样傻等意义不大4 老张把响水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去拿壶。(异步非阻塞)老张

2021-01-23 18:23:14 77

原创 netty 接收数据 发送数据

代码如下。服务端是一个echo服务。程序中client和server都有读写操作,且两者的读写操作调用的底层结构相同。package com.tcp;import io.netty.bootstrap.Bootstrap;import io.netty.channel.*;import io.netty.channel.nio.NioEventLoopGroup;import io.netty.channel.socket.SocketChannel;import io.netty.chann

2021-01-17 11:30:11 2585 2

原创 CompletableFuture

测试代码package com.test;import java.util.concurrent.CompletableFuture;public class testFuture { public static void main(String[] args) throws Exception { CompletableFuture<Object> result = CompletableFuture.supplyAsync(testFuture::fun);

2021-01-16 10:47:29 152

原创 Tomcat类加载器调用顺序研究

网上很多资料(包括官方文档)都说有common、system这些类加载器。但是我调试源码的时候并没有看到这些类加载器。tomcat version:8.5.42本文研究两个问题。1、JAVA_HOME/lib/ext和/WebApp/WEB-INF/lib中有相同全限定类名时,加载谁的类。答:前者2、加载类的过程中classloader的大致调用过程。WebappClassLoaderBase(tomcat的)->ExtClassLoader->BootStrapClassLoader.

2021-01-10 11:00:52 638

原创 日志jar包引发的StackOverflow

问题描述在xqp上部署之后报StackOverFlow错误。根据localhost-2020-12-31.log初步判断是日志有关的jar包循环调用导致的。但是奇怪的是线上没有问题,有些xqp机器也没问题。后来在网上查阅资料发现这是由于jar加载顺序不同导致的。分析以log4j-1.2.17和log4j-over-slf4j-1.7.14这两个包为例,如果jvm先加载log4j-1.2.17后加载log4j-over-slf4j-1.7.14就不会出现递归调用,也不会出现StackOverflow。反

2021-01-02 11:12:44 439 2

原创 netty Recycler(四) 多线程回收对象时竞争机制的解决

假设线程1创建了大量对象,线程2和线程3同时回收线程1的对象,当这两个线程第一次回收对象时会创建WeakOrderQueue,并将其添加到线程1的Stack。多个线程操控一个Stack,这就造成了竞争。那么netty是如何解决竞争?代码package study.recycler.again;import io.netty.util.Recycler;import java.util.concurrent.ConcurrentLinkedQueue;/** * 断点2 主线程回收池中会有大

2020-12-16 08:46:20 297 1

原创 netty Recycler(三)WeakOrderQueue unreachable

由于线上问题是由大量的WeakOrderQueue$Link对象引起的,而这些对象都是unreachable,为了研究线上问题的原因,尝试重新构建出WeakOrderQueue$Link的unreachable。目前已构建出WeakOrderQueue的unreachable(有些成员变量是私有的,不好获取,目前只能获取到WeakOrderQueue层次。以后通过反射的方法应该可以获取到Link)。package study.recycler.again;import io.netty.util..

2020-12-13 11:32:43 393

原创 netty Recycler(二)——WeakOrderQueue和Stack

之前一直搞不清楚WeakOrderQueue的用途,“将别的线程的对象回收到本线程"还是"将别的线程的对象回收到别的线程”(前者是对的)。所以研究了一下package study.recycler.again;import io.netty.util.Recycler;import java.util.concurrent.ConcurrentLinkedQueue;public class CycliMutiThread { private static final Recycl.

2020-12-12 18:56:53 424 1

原创 dubbo rpc NettyClient连接

consumer获取channelNettyChannel.CHANNEL_MAP(静态变量)中存储着channel。/** * the cache for netty channel and dubbo channel */ private static final ConcurrentMap<Channel, NettyChannel> CHANNEL_MAP = new ConcurrentHashMap<Channel, NettyChannel&g

2020-12-06 12:21:18 412

原创 dubbo rpc consumer 发送数据

write:1391, DefaultChannelPipeline$HeadContext (io.netty.channel)//调用了io.netty.channel.Channel#Unsafe中的write方法,NettyClientWorker-4-1这个线程中运行invokeWrite0:738, AbstractChannelHandlerContext (io.netty.channel)invokeWrite:730, AbstractChannelHandlerContext (i

2020-12-06 09:22:28 135

原创 dubbo rpc consumer 接收数据

分析dubbo与netty之间通过一个BlockQueue传输数据一个是主线程([main,5,main]),通过调用threadlessExecutor.waitAndDrain()从一个LinkedBlockingQueue中获取数据。另一个是netty的线程([NettyClientWorker,优先级不知道,main]),将数据存入LinkedBlockingQueue中。主线程尝试获取数据堆栈 主线程尝试从队列中获取数据waitAndDrain:89, ThreadlessExecut

2020-12-06 08:48:59 400

原创 spring源码——事件监听器(注解方式)

代码:https://github.com/shangjianan2/NormalTechnology.gitEventListener使用定义事件需要继承ApplicationEventpackage com.ework.upms.server.event;import lombok.Getter;import lombok.Setter;import lombok.ToString;import org.springframework.context.ApplicationEvent

2020-11-29 10:34:13 446 2

原创 spring源码分析——注解

代码:https://github.com/shangjianan2/NormalTechnology.git自定义注解定义注解package com.ework.upms.server.annotation;import java.lang.annotation.*;@Documented@Target({ElementType.METHOD, ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)public @interface

2020-11-29 10:14:55 179

原创 动态代理

代码:https://github.com/shangjianan2/testGglib

2020-11-27 08:28:07 56

原创 netty Recycler(一)

此文章是研究netty过程中的记录,很有可能有很多不对的地方,欢迎指正之所以研究netty Recycler,是因为生产环境中遇到了由其引发的堆内存占用率过高的现象。实验所用源码回收对象分为两种:同一线程 不同线程。同一线程在同一线程中,对象回收至Recycler$Stack中实验代码package test.recycler;import io.netty.util.Recycler;import io.netty.util.concurrent.FastThreadLocalTh.

2020-11-22 10:51:33 601

原创 netty缓存引起的堆内存使用率过高

问题现象原因解决方案方案一:重启应用。这个方案治标不治本。重启应用的过程中可能会遇到一些问题,可以参考:jdos应用重启提示“jsf部分标识上线”。方案二:既然是netty缓存造成的问题,禁用缓存就可以了。方案三:配置gc参数-XX:+UseConcMarkSweepGC //开启cms gc-XX:CMSInitiatingOccupancyFraction=80 //老年代占用80%时进行full gc-XX:+UseCMSInitiatingOccupancyOnly //让cms

2020-11-22 09:20:50 1496 2

原创 推荐文章

java字节码http://arhipov.blogspot.com/2011/01/java-bytecode-fundamentals.htmlhttps://www.jrebel.com/blog/using-objects-and-calling-methods-in-java-bytecode

2020-10-15 08:26:32 75

原创 基于JDK命令行工具的监控

一、JVM参数类型参考https://docs.oracle.com/javase/8/docs/technotes/tools/unix/https://mp.weixin.qq.com/s/GsxeFM7QWuR–Kbpb7At2w1.1 标准参数一些基本的参数,这些参数在大多其他命令行工具中也会用到-help-server -client-version -showversion-cp -classpath1.2 X参数非标准化参数-Xinit: 解释执行-Xco

2020-09-26 17:43:24 119

转载 Spring中的@Transactional事物回滚实例源码

本文的工程是在mybatis入门(含实例教程和源码)的基础上修改的,该文包含了数据库脚本及工程搭建的详细流程。本文最终源码下载:http://download.csdn.net/detail/u013142781/9381184https://download.csdn.net/detail/u013142781/9381184...

2020-06-29 15:59:35 95

原创 @SpringBootTest注解分析(一)Found multiple @SpringBootConfiguration annotated classes

Spring版本 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE...

2020-04-19 11:54:12 7101

原创 字符的编码节码

1、基本概念名词解释编码字符串(Unicode)->字节(UTF8 UTF16 UTF32 GB2312)解码字节(UTF8 UTF16 UTF32 GB2312)->字符串(Unicode)Unicode万国码,有多种实现形式(UTF8 UTF16 UTF32等)UTF8一种Unicode的实现方式,特点是对于字母来说编码之后的数据占一...

2020-02-05 18:27:41 208

HTTP权威指南

高清版HTTP权威指南,带有标签。

2019-01-14

wpf地图显示

用wpf添加了必应地图,可以显示地图详细信息。。。。。。

2018-06-12

wpf显示波形图

wpf显示波形图,运用了LIveCharts这个开源控件,此代码是对github上代码的缩减

2018-06-12

wpf水波纹效果

从网上收集的关于图片水波纹的代码,里面用到了大神封装的类

2018-06-12

wpf中DataGrid数据双向绑定

实现了数据的双向绑定,更改DataGrid的数据会更新后台数据,更改后台数据会在DataGrid上实时显示。

2018-06-12

yeelink+stm32+18b20下位机

yeelink

2017-05-23

JXW_W5500+模块配套资料

JXW_W5500+模块配套资料

2017-05-23

YIXIN_W5500模块用户手册

YIXIN_W5500模块用户手册

2017-05-23

查看yeelink服务器变量(刷新)

查看yeelink服务器变量(刷新)

2017-05-20

控制yeelink服务器变量(原版)

控制yeelink服务器变量

2017-05-20

查看yeelink服务器变量

查看yeelink服务器变量

2017-05-20

控制yeelink服务器变量

控制yeelink服务器变量

2017-05-20

PLC------stm32程序

PLC stm32

2016-05-20

vc6.0(支持win7)

经典编程软件,初学者入门必备。国家计算机二级考试制定软件。

2015-03-30

c++数据结构与程序设计

c++语言,算法,数据结构,我实在说不出什么了

2015-03-17

数据结构基础(c语言)

数据结构,算法,语言的根本,是每一个人应该学习的

2015-03-17

80pin-XS128-Schematic.pdf

原理图 xs128 80个引脚,飞思卡尔常用的单片机之一

2014-08-07

空空如也

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

TA关注的人

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