![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
逆水行-周
2016年毕业,接触各种项目。喜欢专研,精益求精。
展开
-
命令行编译打包java代码
简介有时候,本地打包再上传远程的方式比较麻烦。通过几个写好的脚步,直接在服务端上修改,会相对方便一点,可提升学习效率。META-INF/MANIFEST.MFManifest-Version: 1.0Created-By: 1.8.0_91 (Oracle Corporation)Main-Class: gg.zsw.HelloHello.javapackage gg.zsw;...原创 2020-04-07 17:36:06 · 198 阅读 · 0 评论 -
VisualVM/JConsole连接到远程服务器
简介一般操作都不直接在服务器上进行,通过VisualVM连接到远程服务器上可以更方便得进行jvm跟踪调优。配置JMX连接启动程序java \-Djava.rmi.server.hostname=127.0.0.1 \-Dcom.sun.management.jmxremote.port=8877 \-Dcom.sun.management.jmxremote.ssl=false \...原创 2020-04-07 15:59:36 · 202 阅读 · 0 评论 -
IDEA远程调试代码
简介有时候,程序只是有个小小的bug,却百般猜测,多次加日志和压包到服务器才确认下来,并且一般会有限速,传包需要好几分钟,工作效率是不高的。通过远程调试的方式,可以更准确的确认问题,加快开发进度。代码在其中打好断点即可。public class Hello { public static void main(String[] args) throws Exception { ...原创 2020-04-07 15:26:49 · 325 阅读 · 0 评论 -
java使用jcraft远程登陆
简介项目中出现了一个监控小需求,采用了jcraft来实现一个远程登陆,脚本处理,记录一下简单的使用细节maven依赖 <dependencies> <!-- https://mvnrepository.com/artifact/com.jcraft/jsch --> <dependency> &...原创 2020-04-04 13:13:08 · 3468 阅读 · 0 评论 -
自定义注解实现redis与对象相互转换
简介本文则通过自定义注解的方式,来完成一个hash与POJO之间的转换。目标是为了简化代码结构。类似的功能,Spring Data Redis是有的。定义POJO在redis中的数据结构这里随便定了几个,本文只实现了hash。public enum RedisStorageStructure { SET, // 基本元素 HASH, // 哈希 LIST, // ...原创 2020-04-04 11:56:35 · 554 阅读 · 0 评论 -
Windows环境用docker安装mysql
吐槽搞大半天才搞定持久化的问题,如果随着docker重启,数据库内的数据就没了,那等于白搭。作为docker和mysql小白,真的很难找到资料搭建起来拉镜像docker pull mysql启动一个干净的mysql容器docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d --rm mysql进入容器按照下面命令执行doc...原创 2020-04-03 22:26:26 · 1619 阅读 · 0 评论 -
sun.misc.Cleaner实现堆外内存回收
简介项目中采用了java+c的混合开发,通过jni进行了底层结构体的内存分配,将指针返回给java层保存,随后则可以通过传递指针值来操作底层代码。在java中,仍然需要手动释放jni分配出来的内存的。如何让GC来自动管理jni内存sun.misc.Cleaner可以做到!话不多说,直接看例子。示例import sun.misc.Cleaner;public class Main {...原创 2020-04-02 15:42:58 · 1517 阅读 · 0 评论 -
netty之对象池个人理解
作用解决频繁GC问题关键点多线程从池中获取对象,多线程回收对象思考假如获取对象和回收对象的方法上锁,那么可以起到池的作用,但显然不是个好方法,效率太低,得不偿失。如何无锁化?每个线程对应一个对象池,并且只有该线程可以获取对象和回收对象。那么就可以实现池的无锁化。在netty中,采用stack来实现,pop获取对象,push回收对象。绑定的方法,显然是采用ThreadLocal方式...原创 2020-03-26 13:17:30 · 558 阅读 · 1 评论 -
netty之ByteBuf(堆缓冲区)
堆缓冲区 ByteBuf heapBuf = ...; if (heapBuf.hasArray()) { byte[] array = heapBuf.array(); int offset = heapBuf.arrayOffset() + heapBuf.readerIndex(); int length = heapBuf.read...原创 2020-03-26 11:24:36 · 642 阅读 · 0 评论 -
flink
简介刚接触flink时,本人还是个小萌新。对大数据概念望而生畏。而在入门之后,顿感轻松。所以在学习任何一门技术时,都要保持平稳的心态。参考资料《阿里巴巴flink干货合集》https://flink.sojb.cn/https://flink.apache.org/为什么选择flink简而言之,别人有的他都有,包罗万象。吹捧者众多,但是由于其存在的一些问题,一时无法解决,故后期又抛弃...原创 2020-03-25 23:23:51 · 563 阅读 · 0 评论 -
Netty解读源码ByteToMessageDecoder
感慨纸上得来终觉浅,源码阅读是进一步提高自身水平的手段。但源码无数,并不是什么样的源码都值得一读。须知任何技术都是为了解决特定问题的,先针对问题进行思考,然后再读源码,会事半功倍。本文按照一定的阅读源码思路来逐步解析ByteToMessageDecoder源码。ByteToMessageDecoder外围信息解析继承关系:public abstract class ByteToMes...原创 2020-03-17 13:42:50 · 377 阅读 · 0 评论 -
Netty单元测试
感慨一晃两年多了,自从刚开始给公司编写的几个网络模块,后来就没有在度使用的机会了。讲解Netty的书籍有许多,其中《Netty实战》这本书比较经典,推荐大家用这本书入门。概述工欲善其事,必先利其器。作为一个网络处理框架,如果没有脱离网络的单元测试,那么你要构建完整的一套代码,方能测试相应功能,是无法想象的。ChannelHandler 是 Netty 应用程序的关键元素,无非就是处理输...原创 2020-03-17 10:19:38 · 216 阅读 · 0 评论