J2se
小傅哥
博客 bugstack.cn - 汇总所有文章 | 一线互联网软件开发工程师,擅长编写优秀的代码、中间件开发、架构设计等。| 公众号:bugstack虫洞栈,回复:设计模式、面经手册、字节码编程,可以下载我的PDF!
展开
-
netty案例,netty4.1中级拓展篇六《SpringBoot+Netty+Elasticsearch收集日志信息数据存储》
前言介绍在实际的开发场景中,我们希望将大量的业务以及用户行为数据存储起来用于分析处理,但是由于数据量较大且需要具备可分析功能所以将数据存储到文件系统更为合理。尤其是一些互联网高并发级应用,往往数据库都采用分库分表设计,那么将这些分散的数据通过binlog汇总到一个统一的文件系统就显得非常有必要。开发环境1、jdk1.8【jdk1.7以下只能部分支持netty】2、Netty4.1.36.F...原创 2019-08-22 09:18:02 · 1933 阅读 · 0 评论 -
netty案例,netty4.1高级应用篇三,手写RPC框架第三章《RPC中间件》
案例介绍结合上面两章节,本章将实现rpc的基础功能;提供一给rpc中间件jar给生产端和服务端。技术点;1、注册中心,生产者在启动的时候需要将本地接口发布到注册中心,我们这里采用redis作为注册中心,随机取数模拟权重。2、客户端在启动的时候,连接到注册中心,也就是我们的redis。连接成功后将配置的生产者方法发布到注册中心{接口+别名}。3、服务端配置生产者的信息后,在加载xml时候由...原创 2019-08-23 19:28:34 · 1699 阅读 · 0 评论 -
netty案例,netty4.1高级应用篇二,手写RPC框架第二章《netty通信》
案例介绍在我们实现rpc框架的时候,需要选择socket的通信方式。而我们知道一般情况下socket通信类似与qq聊天,发过去消息,什么时候回复都可以。但是我们rpc框架通信,从感觉上类似http调用,需要在一定时间内返回,否则就会发生超时断开。这里我们选择netty作为我们的socket框架,采用future方式进行通信。Netty是由JBOSS提供的一个java开源框架。Netty提供...原创 2019-08-23 19:27:55 · 1728 阅读 · 0 评论 -
netty案例,netty4.1高级应用篇一,手写RPC框架第一章《自定义配置xml》
案例介绍本案例通过三个章节来实现一共简单的rpc框架,用于深入学习rpc框架是如何通信的,当前章节主要介绍如何自定义xml文件并进行解析。想解析自定义的xml首先定义自己的xsd文件,并且实现spring的NamespaceHandlerSupport、BeanDefinitionParser,两个方法进行处理。远程过程调用协议RPC(Remote Procedure Call)—远程过程...原创 2019-08-23 19:27:18 · 1953 阅读 · 0 评论 -
netty案例,netty4.1中级拓展篇五《基于Netty搭建WebSocket,模仿微信聊天页面》
前言介绍本章节我们模仿微信聊天页面,开发一个基于Netty搭建WebSocket通信案例。Netty的应用方面非常广;聊天、MQ、RPC、数据等等,在5G到来的时候更加需要大量数据传输,Netty的应用也会更加广阔。1、这个案例使用SpringBoot+Netty+WebSocket搭建功能。2、使用Netty提供的HttpServerCodec、HttpObjectAggregator、...原创 2019-08-09 21:41:35 · 2740 阅读 · 0 评论 -
手写类似dubbo的rpc框架第三章《rpc框架》
案例介绍结合上面两章节,本章将实现rpc的基础功能;提供一给rpc中间件jar给生产端和服务端。技术点;1、注册中心,生产者在启动的时候需要将本地接口发布到注册中心,我们这里采用redis作为注册中心,随机取数模拟权重。2、客户端在启动的时候,连接到注册中心,也就是我们的redis。连接成功后将配置的生产者方法发布到注册中心{接口+别名}。3、服务端配置生产者的信息后,在加载xml时候由...原创 2019-05-16 18:27:29 · 1657 阅读 · 0 评论 -
手写类似dubbo的rpc框架第二章《netty通信》
案例介绍在我们实现rpc框架的时候,需要选择socket的通信方式。而我们知道一般情况下socket通信类似与qq聊天,发过去消息,什么时候回复都可以。但是我们rpc框架通信,从感觉上类似http调用,需要在一定时间内返回,否则就会发生超时断开。这里我们选择netty作为我们的socket框架,采用future方式进行通信。Netty是由JBOSS提供的一个java开源框架。Netty提供...原创 2019-05-16 18:25:28 · 1644 阅读 · 0 评论 -
手写类似dubbo的rpc框架第一章《自定义配置xml》
案例介绍本案例通过三个章节来实现一共简单的rpc框架,用于深入学习rpc框架是如何通信的,当前章节主要介绍如何自定义xml文件并进行解析。想解析自定义的xml首先定义自己的xsd文件,并且实现spring的NamespaceHandlerSupport、BeanDefinitionParser,两个方法进行处理。远程过程调用协议RPC(Remote Procedure Call)—远程过程...原创 2019-05-16 18:23:47 · 1754 阅读 · 0 评论 -
用Java实现JVM第九章《本地方法调用》
案例介绍本章主要介绍用java实现一些本地方法类库,并初始化本地方法,之后通过反射命令来调用本地方法。Java虚拟机和Java类库一起构成了Java运行时环境。Java类库主要用Java语言编写,一些无法用Java语言实现的方法则使用本地语言编写,这额方法叫作本地方法。OpenJDK类库中的本地方法是用JNI(Java Native Interface)编写的,但是要让虚拟机支持JNI规范...原创 2019-05-06 14:40:12 · 1761 阅读 · 0 评论 -
用Java实现JVM第八章《数组和字符串》
案例介绍本章主要介绍如何实现让虚拟机处理数组和字符串,在虚拟机功能增强后,我们可以执行数组类型计算和输出字符串。本章需要新增实现数组指令;newarray、anewarray、arraylength、aload、astore、multianewarray、ldc,同时需要需要开发字符串池方法等。数组在Java虚拟机中是给比较特殊的概念,主要有以下原因;首先,数组类和普通的类是不同的。普...原创 2019-05-06 14:39:44 · 1522 阅读 · 0 评论 -
用Java实现JVM第七章《方法调用和返回》
案例介绍本章节主要用java实现;方法调用指令、返回指令、解析方法符号引用、参数传递等。实现新的指令后我们的虚拟机就可以执行稍微复杂的运算并输出结果。从调用的角度来看,方法可以分为两类:静态方法(或者类方法)和实例方法。静态方法通过类类调用,实例方法则通过对象引用来调用。静态方法是静态绑定的,也就是说,最终调用的是哪给方法在编译期就已经确定。实例方法则支持动态绑定,最终要调用哪给方法可能要推...原创 2019-05-06 14:39:14 · 1556 阅读 · 0 评论 -
用Java实现JVM第六章《类和对象》
案例介绍本案例通过java代码实现jvm规范中指令集和解释器,完成后就可以开始执行1到100的加和计算。Java虚拟机顾名思义,就是一台虚拟的机器,而字节码(bytecode)就是运行在这台虚拟机器上的机器码。我们已经知道,每一个类或者接口都会被Java编译器编译成一个class文件,类或接口的方法信息就放在class文件的method_info结构中。如果方法不是抽象的,也不是本地方法,方...原创 2019-05-06 14:38:45 · 1485 阅读 · 2 评论 -
用Java实现JVM第五章《指令集和解释器》
案例介绍本案例通过java代码实现jvm规范中指令集和解释器,完成后就可以开始执行1到100的加和计算。Java虚拟机顾名思义,就是一台虚拟的机器,而字节码(bytecode)就是运行在这台虚拟机器上的机器码。我们已经知道,每一个类或者接口都会被Java编译器编译成一个class文件,类或接口的方法信息就放在class文件的method_info结构中。如果方法不是抽象的,也不是本地方法,方...原创 2019-05-06 14:38:09 · 1537 阅读 · 0 评论 -
基于JavaAgent的全链路监控一《嗨!JavaAgent》
前言介绍全链路监控又名分布式监控系统全链路追踪,目前市面的全链路监控系统基本都是参考Google的Dapper(大规模分布式系统的跟踪系统)来做的。例如;蚂蚁金服分布式链路跟踪组件SOFATracer、Gokit微服务-服务链路追踪 、Pinpoint、Prometheus(普罗米修斯)等等。章节列表 | 关注微信公众号,bugstack虫洞栈,回复<基于JavaAgent的全链路...原创 2019-08-23 19:30:12 · 4279 阅读 · 4 评论 -
基于JavaAgent的全链路监控二《通过字节码增加监控执行耗时》
章节列表 | 关注微信公众号,bugstack虫洞栈,回复<基于JavaAgent的全链路监控>获取源码基于JavaAgent的全链路监控一《嗨!JavaAgent》基于JavaAgent的全链路监控二《通过字节码增加监控执行耗时》基于JavaAgent的全链路监控三《ByteBuddy操作监控方法字节码》基于JavaAgent的全链路监控四《JVM内存与GC信息》基于Ja...原创 2019-08-23 19:30:45 · 2157 阅读 · 3 评论 -
基于JavaAgent的全链路监控三《ByteBuddy操作监控方法字节码》
章节列表 | 关注微信公众号,bugstack虫洞栈,回复<基于JavaAgent的全链路监控>获取源码基于JavaAgent的全链路监控一《嗨!JavaAgent》基于JavaAgent的全链路监控二《通过字节码增加监控执行耗时》基于JavaAgent的全链路监控三《ByteBuddy操作监控方法字节码》基于JavaAgent的全链路监控四《JVM内存与GC信息》基于Ja...原创 2019-08-23 19:31:13 · 4497 阅读 · 0 评论 -
netty案例,netty4.1中级拓展篇四《Netty传输文件、分片发送、断点续传》
前言介绍1、在实际应用中我们经常使用到网盘服务,他们可以高效的上传下载较大文件。那么这些高性能文件传输服务,都需要实现的分片发送、断点续传功能。2、在Java文件操作中有RandomAccessFile类,他可以支持文件的定位读取和写入,这样就满足了我们对文件分片的最基础需求。3、Netty服务端启动后,可以向客户端发送文件传输指令;允许接收文件、控制读取位点、记录传输标记、文件接收完成。...原创 2019-08-22 09:17:24 · 2836 阅读 · 0 评论 -
netty案例,netty4.1中级拓展篇三《Netty传输Java对象》
前言介绍Netty在实际应用级开发中,有时候某些特定场景下会需要使用Java对象类型进行传输,但是如果使用Java本身序列化进行传输,那么对性能的损耗比较大。为此我们需要借助protostuff-core的工具包将对象以二进制形式传输并做编码解码处理。与直接使用protobuf二进制传输方式不同,这里不需要定义proto文件,而是需要实现对象类型编码解码器,用以传输自定义Java对象。pro...原创 2019-08-22 09:16:39 · 1819 阅读 · 0 评论 -
netty案例,netty4.1中级拓展篇二《Netty使用Protobuf传输数据》
前言介绍在netty数据传输过程中可以有很多选择,比如;字符串、json、xml、java对象,但为了保证传输的数据具备;良好的通用性、方便的操作性和传输的高性能,我们可以选择protobuf作为我们的数据传输格式。目前protobuf可以支持;C++、C#、Dart、Go、Java、Python等,也可以在JS里使用。知识点;ProtobufDecoder、ProtobufEncoder、Pr...原创 2019-08-22 09:16:07 · 1755 阅读 · 3 评论 -
netty案例,netty4.1中级拓展篇一《Netty与SpringBoot整合》
前言介绍在实际的开发中,我们需要对netty服务进行更多的操作,包括;获取它的状态信息、启动/停止、对客户端用户强制下线等等,为此我们需要把netty服务加入到web系统中,那么本章节介绍如何将Netty与SpringBoot整合。Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使...原创 2019-08-22 09:15:32 · 2284 阅读 · 0 评论 -
netty案例,netty4.1基础入门篇九《自定义编码解码器,处理半包、粘包数据》
前言介绍在实际应用场景里,只要是支持sokcet通信的都可以和Netty交互,比如中继器、下位机、PLC等。这些场景下就非常需要自定义编码解码器,来处理字节码传输,并控制半包、粘包以及安全问题。那么本章节我们通过实现ByteToMessageDecoder、MessageToByteEncoder来实现我们的需求。环境准备1、jdk1.8【jdk1.7以下只能部分支持netty】2、Net...原创 2019-08-22 09:14:42 · 1650 阅读 · 1 评论 -
netty案例,netty4.1基础入门篇八《NettyClient半包粘包处理、编码解码处理、收发数据方式》
前言介绍Netty开发中,客户端与服务端需要保持同样的;半包粘包处理,编码解码处理、收发数据方式,这样才能保证数据通信正常。在前面NettyServer的章节中我们也同样处理了;半包粘包、编码解码等,为此在本章节我们可以把这些知识模块开发到NettyClient中。本章节涉及到的知识点有;LineBasedFrameDecoder、StringDecoder、StringEncoder、Chan...原创 2019-08-20 23:18:47 · 1770 阅读 · 0 评论 -
netty案例,netty4.1基础入门篇七《嗨!NettyClient》
前言介绍在前六章的案例中使用socket模拟器链接我们的NettyServer,进行通信测试。本章节我们写一个helloworld版的NettyClient客户端,与我们的socket模拟器进行通信。在netty中客户端与服务端的写法基本类似,注意一些细节即可,这也是netty的强大之处,它把nio流与sokcet封装的相当简单易用。开发环境1、jdk1.8【jdk1.7以下只能部分支持ne...原创 2019-08-20 23:18:17 · 1843 阅读 · 0 评论 -
netty案例,netty4.1基础入门篇六《NettyServer群发消息》
前言介绍在微信或者QQ的聊天中我们经常会用到一些群聊,把你的信息发送给所有用户。那么为了实现群发消息,在netty中我们可以使用ChannelGroup方式进行群发消息。如果为了扩展验证比如你实际聊天有不同的群,那么可以定义ConcurrentHashMap结构来存放ChannelGroup。ChannelGroup中提供了一些基础的方法;添加、异常、查找、清空、发放消息、关闭等。开发环境1...原创 2019-08-20 23:17:40 · 1754 阅读 · 0 评论 -
netty案例,netty4.1基础入门篇五《NettyServer字符串编码器》
前言介绍netty通信就向一个流水channel管道,我们可以在管道的中间插入一些‘挡板’为我们服务。比如字符串的编码解码,在前面我们使用new StringDecoder(Charset.forName(“GBK”))进行字符串解码,这样我们在收取数据就不需要手动处理字节码。那么本章节我们使用与之对应的new StringEncoder(Charset.forName(“GBK”))进行进行字...原创 2019-08-20 23:17:07 · 1608 阅读 · 0 评论 -
netty案例,netty4.1基础入门篇四《NettyServer收发数据》
前言介绍本章节主要介绍服务端在收到数据后,通过writeAndFlush发送ByteBuf字节码向客户端传输信息。因为我们使用客户端模拟器的编码是GBK格式,所以代码中也需要将字节码转换为GBK,否则会乱码。开发环境1、jdk1.8【jdk1.7以下只能部分支持netty】2、Netty4.1.36.Final【netty3.x 4.x 5每次的变化较大,接口类名也随着变化】3、teln...原创 2019-08-20 23:16:35 · 1776 阅读 · 0 评论 -
netty案例,netty4.1基础入门篇三《NettyServer字符串解码器》
前言介绍在实际开发中,server端接收数据后我们希望他是一个字符串或者是一个对象类型,而不是字节码,那么;1、在netty中是否可以自动的把接收的Bytebuf数据转String,不需要我手动处理?答;有,可以在管道中添加一个StringDecoder。2、在网络传输过程中有半包粘包的问题,netty能解决吗?答:能,netty提供了很丰富的解码器,在正确合理的使用下就能解决半包粘包问...原创 2019-08-20 23:16:00 · 1774 阅读 · 0 评论 -
netty案例,netty4.1基础入门篇二《NettyServer接收数据》
前言介绍繁事都需要一个简单的入门的点,尤其学习程序员行业的知识最快的方式是先运行期helloworld,往往这样一个简单能运行的例子,就能解除你当前遇到的所有疑惑。切记,对于一个初学者,不建议上来就研究理论,实操往往更重要。本章节介绍使用netty端写一个能接收数据的socketServer服务端,通过实现通道适配器ChannelInboundHandlerAdapter.channelRead...原创 2019-08-20 23:15:23 · 1770 阅读 · 0 评论 -
netty案例,netty4.1基础入门篇一《嗨!NettyServer》
前言介绍凡是新知识都需要有个入门的案例,一个简单的输入输出就能解除你当前遇到的所有疑惑。不要总想着先学理论后学实战。【X东方还135学理论,246学实战,800个床位不锈钢】,本案例专题主要介绍netty4.1的使用。开发环境1、jdk1.8【jdk1.7以下只能部分支持netty】2、Netty4.1.36.Final【netty3.x 4.x 5每次的变化较大,接口类名也随着变化】3...原创 2019-08-20 23:14:04 · 2237 阅读 · 2 评论 -
基于JavaAgent的全链路监控六《开发应用级监控》
章节列表 | 关注微信公众号,bugstack虫洞栈,回复<基于JavaAgent的全链路监控>获取源码基于JavaAgent的全链路监控一《嗨!JavaAgent》基于JavaAgent的全链路监控二《通过字节码增加监控执行耗时》基于JavaAgent的全链路监控三《ByteBuddy操作监控方法字节码》基于JavaAgent的全链路监控四《JVM内存与GC信息》基于Ja...原创 2019-08-23 19:32:49 · 2403 阅读 · 2 评论 -
基于JavaAgent的全链路监控五《ThreadLocal链路追踪》
章节列表 | 关注微信公众号,bugstack虫洞栈,回复<基于JavaAgent的全链路监控>获取源码基于JavaAgent的全链路监控一《嗨!JavaAgent》基于JavaAgent的全链路监控二《通过字节码增加监控执行耗时》基于JavaAgent的全链路监控三《ByteBuddy操作监控方法字节码》基于JavaAgent的全链路监控四《JVM内存与GC信息》基于Ja...原创 2019-08-23 19:32:14 · 3456 阅读 · 1 评论 -
基于JavaAgent的全链路监控四《JVM内存与GC信息》
章节列表 | 关注微信公众号,bugstack虫洞栈,回复<基于JavaAgent的全链路监控>获取源码基于JavaAgent的全链路监控一《嗨!JavaAgent》基于JavaAgent的全链路监控二《通过字节码增加监控执行耗时》基于JavaAgent的全链路监控三《ByteBuddy操作监控方法字节码》基于JavaAgent的全链路监控四《JVM内存与GC信息》基于Ja...原创 2019-08-23 19:31:46 · 2079 阅读 · 0 评论 -
用Java实现JVM第四章《运行时数据区》
案例介绍本案例初步实现运行时数据区里;线程、Java虚拟机栈、帧、操作数栈、局部变量表。在运行Java程序时,Java虚拟机需要使用内存来存放各种各样的数据。Java虚拟机规范把这些内存区域叫作运行时数据区。运行时数据区可以分为两类:一类是多线程共享的,另一类则是线程私有的。多线程共享的运行时数据区需要在Java虚拟机启动时创建好在Java虚拟机推出时销毁。线程私有的运行时数据区则在创建线程...原创 2019-05-06 14:37:40 · 1466 阅读 · 0 评论 -
用Java实现JVM第三章《解析class文件》附[classReader拆解]
案例介绍按照如下虚拟机规范,本文主要介绍java版本jvm提取class字节码方式。在java中没有无符号类型,例如js中byte取值是0~256、java中是-128 ~ +172,所以在实际处理字节码时[虚拟机规范u1、u2、u4],需要进行转换。[java虚拟机规范]每个Class文件都是由8字节为单位的字节流组成,所有的16位、32位和64位长度的数据将被构造成2个、4个和8个8字节...原创 2019-05-06 14:37:06 · 1494 阅读 · 0 评论 -
java汉字转换拼音
1、汉字转换拼音首先引入一个叫pinyin4j-2.5.0.jar下载地址:http://download.csdn.net/detail/yao__shun__yu/46702282、测试代码import demo.Pinyin4jAppletDemo;import net.sourceforge.pinyin4j.PinyinHelper;import net.source原创 2012-10-21 13:12:53 · 3198 阅读 · 1 评论 -
OracleJNDI
import java.sql.SQLException; import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException; import oracle.jdbc.pool.OracleDataSource; public class原创 2012-10-19 10:35:05 · 1905 阅读 · 0 评论 -
java eval javascript jsr22
文章来源:csdn 龙四哥 ticmyhttp://www.ticmy.com/?p=267需要导入的包import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;import javax.script.ScriptException;第一种方式ScriptEngineManager原创 2012-09-07 20:15:09 · 1891 阅读 · 0 评论 -
javasql拼串
/** * 模糊查询,分析出姓名,性别,年龄 */ public ArrayList doSearch(String name,String sex,String age) throws SQLException{ int idNum = 1; conn = ConnMysql.getCo原创 2012-09-02 20:29:58 · 1705 阅读 · 0 评论 -
oracle字符突然非正常输入了
SQL> *8* dflsa 8fdlsa**lfdsal*8flds 写sql语句 或者 MyEclipse下java代码,经常出现一个高高的长长的字符,不是原来的字符了。这时候很大一部分原因是因为你输入*后马上摁空格了。 例如:select * from 。。。。。就在*后马上空格了 要想改变过来,就在马上摁*之后紧跟着摁空格 总结:就是sh原创 2012-08-14 09:10:46 · 1411 阅读 · 0 评论 -
JButton上添加图片,动态更改图片
JButton jbG1; jbG1 = new JButton(new ImageIcon("imgs//BtList_.png")); jbG1.setIcon(new ImageIcon(("imgs//BtList.png")));原创 2012-08-02 12:48:17 · 4489 阅读 · 2 评论