java
文章平均质量分 70
Fred-XU
https://www.zhihu.com/people/fredric-96
展开
-
RabbitMQ笔记二
【参考资料】【1】《RabbitMQ实战指南》【2】https://www.rabbitmq.com/access-control.html【3】https://blog.csdn.net/u010013573/article/details/90991997【4】https://blog.51cto.com/11134648/2155934【5】https://www.cnblogs.com/yanwei-wang/p/4715429.html1. MQTT插件MqttClient mqtt原创 2021-02-20 14:37:59 · 467 阅读 · 0 评论 -
RabbitMQ笔记一
【参考资料】【1】《RabbitMQ实战指南》1 rabbitmq简介MQ般有两种传递模式:点对点(P2P,Point-to-Point)模式和发布/订阅(Pub/Sub)模式点对点模式是基于队列的,消息生产者发送消息到队列,消息消费者从队列中接收消息发布订阅模式定义了如何向一个内容节点发布和订阅消息,这个内容节点称为主题(topic)RabbitMQ是采用Erlang语言实现AMQP(Advanced Message Queuing Protocol,高级消息队列协议)的消息中间件2 r原创 2021-02-20 14:35:04 · 370 阅读 · 0 评论 -
reactor 3 编程笔记二
【参考资料】【1】 https://blog.csdn.net/weixin_34248118/article/details/879948221 reactor 核心类1.1 Publisherpublic interface Publisher<T> { void subscribe(Subscriber<? super T> var1);}Publisher 代表消息的发送方subscribe 传入一个Subscriber,建立一个生产和消费的连接,原创 2021-02-17 10:13:03 · 1375 阅读 · 0 评论 -
reactor 3 编程笔记一
【参考资料】【1】https://developer.ibm.com/zh/articles/j-cn-with-reactor-response-encode/【2】https://blog.csdn.net/tonydz0523/article/details/107858943【3】https://www.jianshu.com/p/611f3667c4d2【4】https://www.cnblogs.com/todev/p/13182162.html【5】https://projectre原创 2021-02-17 10:09:49 · 708 阅读 · 0 评论 -
java8特性 - stream笔记
【参考资料】【1】https://www.runoob.com/java/java8-streams.html1 forEachList<User> userList = new ArrayList<>();userList.add(new User("ferd",12));userList.add(new User("ferd1",13));userList.add(new User("ferd2",14));userList.forEach(item ->原创 2021-02-17 10:03:00 · 217 阅读 · 1 评论 -
java8特性 - 函数式接口笔记
【参考资料】【1】https://www.cnblogs.com/netoxi/p/10346537.html1. 函数式接口1.1 总体定义1.2 Function函数型接口: 抽象一个功能行为,接收参数并返回结果参数T和R分别表示输入参数和返回值的泛型类型@FunctionalInterfacepublic interface Function<T, R> { public static String doTestFunction(String input, Fu原创 2021-02-17 10:02:10 · 213 阅读 · 0 评论 -
java 8特性 - CompletableFuture 笔记
【参考资料】【1】https://blog.csdn.net/qq_39172525/article/details/86655590【2】https://blog.csdn.net/u014209205/article/details/805982091. future1.1 future 类图1.2 future 定义public interface Future<V> { boolean cancel(boolean mayInterruptIfRunning); /原创 2021-02-17 10:00:50 · 400 阅读 · 1 评论 -
JAVA多线程梳理一
近期项目突然发现多线程很多概念还是混乱的,抽一个稍作梳理原创 2020-04-04 16:36:08 · 209 阅读 · 0 评论 -
JNI 备注
本文记录一个基础的JNI例子及过程中遇到的问题解决。1、定义一个JAVA类如下:package jnidemo01;public class JniHello { public native void displayHelloWorld(); static { System.loadLibrary("HelloDll"); } ...原创 2016-09-02 09:59:00 · 249 阅读 · 0 评论 -
设备接入项目杂记
一个几年前的设备接入平台项目,本人参与不多,因为要准备一个类似项目,抽了两个小时重新走读了下核心代码,记录一些知识点备忘:1、通信基础采用MINA框架: MINA服务端主要流程: a. IoAccept 监听来自网络的请求; b. 当新的连接建立时,创建session,该session对应某个IP加端口; c. 数据包收到时,会经过一系列的IoFilter,...原创 2016-08-23 17:23:00 · 257 阅读 · 0 评论 -
JVM 备注
一、堆内存分布:JAVA 分为堆内存和栈内存,GC主要针对堆内存 1)Young: 存放新生内存对象 1.1)Eden JVM 刚开始分配的对象 1.2)Survivor1(from) 1.3)Survivor2(to)两个区域一样大,Eden没有回收掉的对象会在两个区域来回拷贝,达到一定次数后移到Old。 即该对象在Young中存留的时间。 2)Old:...原创 2016-03-15 11:35:00 · 211 阅读 · 0 评论 -
MyBatis(跨表查询)
1、建立数据库表如下:DROP TABLE IF EXISTS t_demo_user;CREATE TABLE IF NOT EXISTS t_demo_user( userid varchar(255), username varchar(100), password varchar(100), PRIMARY KEY(userid))ENGINE=I...原创 2016-01-19 10:25:00 · 806 阅读 · 0 评论 -
java 网络(socket)
本文梳理一个基础的java TCP消息通信,构造一个简单的Packet进行传输,代码如下:Packetpublic class Packet { private String attribute; public Packet(String attr){ this.attribute = attr; } public Str...原创 2015-06-16 14:24:00 · 216 阅读 · 0 评论 -
java 泛型的几点备忘
1、在java虚拟机中是没有泛型的,所有泛型类的参数都会被擦除,如下:public void test(List<String> list, int num){} public void test(List<Integer> list, int num){}这两个方法对于java编译器来说是一样的,因此无法编译通过。2、下面两种写法都是OK的,但推荐...原创 2015-06-15 15:35:00 · 199 阅读 · 0 评论 -
设计模式(模板方法)
模板方法是通过抽象类定义各一个基础模板,这个模板中有已经实现的,也有要求强制子类实现的。通过这个模板的定义来实现有约束的业务继承。代码如下:Templatepublic abstract class Template { public void templateMethod(){ baseMethod(); subMehtod(); }...原创 2015-06-15 10:53:00 · 211 阅读 · 0 评论 -
设计模式(策略模式)
策略模式很简单,类似于C里维护一个函数指针,只是将具体策略抽象出来并维护。代码如下:Strategypublic interface Strategy { public void doMethod();}ConcreteStrategypublic class ConcreteStrategy implements Strategy { @Overrid...原创 2015-06-15 10:21:00 · 189 阅读 · 0 评论 -
设计模式(状态模式)
状态机的使用在各类项目中使用都比较多,设计模式中的状态模式是将状态机的维护抽象出来,并由需要支持改状态机的对象维护起来。本文给出一个简单的例子:Statepublic abstract class State { protected int type; public abstract void handler(int input); public abstrac...原创 2015-06-15 10:13:00 · 98 阅读 · 0 评论 -
设计模式(观察者模式)
观察者模式类似订阅的功能,当目标对象的数据或行为发生变化时,相应的观察者会产生变化。最基本的例子就是在目标对象中维护一个观察者的列表。代码如下:Observerpublic abstract class Observer { public abstract void doSomething();}ConcreteObserverpublic class Concret...原创 2015-06-15 09:59:00 · 102 阅读 · 0 评论 -
设计模式(备忘录模式)
备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,属于行为模式。它是在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。它包含以下几类角色:1、Memento:备忘数据的bean;2、Originator:发起者,需要备份数据的对象,其备份内容与Memento相同,负责创建一份备份数据,并能够通过备...原创 2015-06-15 09:48:00 · 97 阅读 · 0 评论 -
设计模式(中介者模式)
中介者模式提供一个统一的中介接口Mediator,与多个目标对象交互。如下图:代码如下:Mediatorpublic abstract class Mediator { public abstract void notice(String content);}ConcreteMediatorpublic class ConcreteMediator extends...原创 2015-06-15 09:09:00 · 172 阅读 · 0 评论 -
DBCP 配置备注
<property name="initialSize" value="5"></property> <property name="maxActive" value="20"></property> <property name="maxIdle" value="原创 2016-10-11 14:44:00 · 215 阅读 · 0 评论 -
Web 项目杂记(一)
1、Tomcat 多实例部署在Tomcat下多实例部署后,发现如下问题,采用etc/init.d/tomcat start方式无法启动,而需要采用startup.sh。查找原因发现,是因为多实例部署时,重复jar加载造成tomcat内存配置不足,解决的方式是将共用的jar包放在tomcat的lib下,而工程只保留自有的。2、防盗链防盗链是指防止自己的链接,主要是图片链接等被其他服务器盗...原创 2016-10-14 16:56:00 · 297 阅读 · 0 评论 -
LinkedBlockingQueue 注记
近期看一个音频传输代码时,对方采用了LinkedBlockingQueue为生产者、消费者模式,来支撑读写线程。个人感觉非常不错,因此也对这种方式进行总结,并梳理了一个基本的功能框架备用。主要两点:1、当对queue采用take操作时,若队列为空则阻塞;2、当对queue采用put操作时,若队列为满则阻塞;package com.fredric;import java.uti...原创 2017-03-27 18:53:00 · 316 阅读 · 0 评论 -
activiti 工作流关键表分析
0. 前置条件其中步骤一和步骤二分别包含变量step1_user和step2_user1. 流程部署代码ProcessEngineConfiguration configuration = ProcessEngineConfiguration .createProcessEngineConfigurationFromResource("activiti.cfg.xml")...原创 2019-03-27 20:47:47 · 539 阅读 · 0 评论 -
JVM工具备注(二)
【参考资料】【1】《深入理解JAVA虚拟机》【2】https://blog.csdn.net/lengyue309/article/details/80590119【3】https://www.bianchengyuyan.com/javascript/20.html【4】https://www.cnblogs.com/wuchanming/p/7766994.htmljmap 常用...原创 2019-03-24 16:13:14 · 376 阅读 · 0 评论 -
JVM工具备注(一)
【参考资料】【1】《深入理解Java虚拟机》【2】https://www.cnblogs.com/aspirant/p/7001082.html【2】https://blog.csdn.net/ft305977550/article/details/78517372前置知识点梳理堆栈内存的分配及溢出例子public class App { public static List<...原创 2019-03-24 10:56:39 · 715 阅读 · 0 评论 -
netty @Sharable备注
netty和@Sharablex相关知识点的备注。1. ChannelInitializer当我们在serverBootstrap用childHandler去添加一个自定义ChannelInitializer如下:serverBootstrap .group(boosGroup, workerGroup) .channel(NioServerSocketChannel...原创 2019-03-23 16:29:04 · 559 阅读 · 0 评论 -
OSGI 注记(一)
OSGI 注记(一) 2012年参与的几个WEB项目都基于OSGI框架,本系列注记试图将个人对OSGI标准及其相关技术做一个笔记。OSGI: OSGI的目的在于针对大型的JAVA项目提供模块化支持,这里的模块称为bundle。bundle之所以能够实现JAVA的模块化,原理在于OSGI框架对每个bundle提供了独立的classloader,而在JVM中任何一个类...原创 2013-01-30 11:41:00 · 123 阅读 · 0 评论 -
vaniglia 源码学习(二)
学习vaniglia的状态机特性源代码,这个特性在企业化开发中也是适用的,类似于struts2里配置action。基本功能如下,1. 针对配置文件XX.XML<StateMachine> <States> <State name="One" description="State One"/> <State ...原创 2013-04-02 09:40:00 · 109 阅读 · 0 评论 -
vaniglia 源码学习(三)
一.vaniglia 对象池管理实例化一个java对象分为以下几步:类加载、链接、初始化、实例化。这也是当我们new 一个对象时JVM完成的工作,对于对象池来说它实现的基础在于分拆了new的步骤。比如vaniglia中利用初始阶段的Class.forName完成加载和链接。之后当用户从对象池中取Object时,利用newInstance实例化。核心代码如下:1.初始化: pub...原创 2013-04-02 11:41:00 · 100 阅读 · 0 评论 -
vaniglia 源码学习(四)
vaniglia中的directory poller(线程)用于检查某目录下的文件情况,如果有新文件增加则触发相应的EventListener。vaniglia对Evnet的定义如下,这种分级的Event定义在之前项目的前端设计中也遇见过,非常值得借鉴,清晰而且可扩展性好。在源码中主要的业务类是public class DirectoryPoller extends Thread,主要...原创 2013-04-02 15:49:00 · 323 阅读 · 0 评论 -
MyBatis(增删改查)
1、工程中引入包: mybatis-3.2.7、mysql-connector-java-5.1.22-bin2、添加配置文件:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://myb...原创 2016-01-19 10:21:00 · 215 阅读 · 0 评论 -
一个简单的消息处理框架
项目里碰到一个不错的消息处理框架,把核心代码抽出来做个备注。核心源码分几块。1、一个消息管理类,在hashmap里创建了多个阻塞式消息队列package com.fredric.demo;import java.util.HashMap;import java.util.Map;import java.util.concurrent.ArrayBlockingQueue;imp...原创 2018-03-09 14:41:00 · 665 阅读 · 0 评论 -
JNA 备注
最近写JNA调用DLL的代码比较多。应该这样说,C的精华在于对指针的灵活运用,而用JNA调用C/C++最痛苦的也在于此。你不知道该用什么样的方式去对应C/C++的方法,特别是遇到指针、结构体指针、指针作为出参、入参或返回值等等。本文主要把最近遇到并解决了一些问题,备注如下:1、C++的工程被JNA调用前,要增加extern "C";否则的话方法名字会无法识别;2、byte[]作为入参的时候...原创 2017-05-31 17:42:00 · 394 阅读 · 0 评论 -
java byte 梳理
最近写编解码的代码比较多,抽一点时间梳理下java下byte的解析。在例子代码中主要涉及的知识点就两块: 1、byte代表8个bit,其中最高位是符号位; 2、当我们用String类的getBytes时,其实是默认采用某种编解码格式的,因此在例子中数字1被解析成49;public class App { public static void main(String[] ...原创 2017-03-27 18:54:00 · 244 阅读 · 0 评论 -
设计模式(迭代器模式)
迭代器模式是实现了一种访问容器的方法,在java中运用很普遍,不做赘述。如下:public class App { public static void main(String[] args) { List list = new ArrayList(); list.add("aa"); list.add("bb"); ...原创 2015-06-13 14:36:00 · 106 阅读 · 0 评论 -
设计模式(解释器模式)
解释器模式,包含如下几类角色:context: 全局上下文,将作为参数传入解释器 Interpret:解释器的抽象,本例中是Expression ConcreteInterpret:某个具体的解释器,本例中是OneExpression代码如下:Contextpublic class Context { private String value; publ...原创 2015-06-13 14:30:00 · 192 阅读 · 0 评论 -
JAVA RMI例子
RMI 是java语言的一个RPC框架,本文给出基础例子如下:1、实现接口:public interface ICalc extends Remote { public int add(int param1, int param2) throws java.rmi.RemoteException;}2、服务端实现该接口:public class CalcImpl ex...原创 2015-05-26 15:44:00 · 169 阅读 · 0 评论 -
java 多线程(ThreadPoolExecutor (补充))
import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class App { private ThreadPoolExecutor threadpo...原创 2015-05-26 15:09:00 · 141 阅读 · 0 评论 -
reactor & proactor 笔记
1. 基本概念 1.1 同步/异步,针对应用程序和内核交互而言。 同步:进程触发IO操作等待或轮询查看IO操作是否完成; 异步:进程触发IO操作后仅需自身的处理,IO操作完成后会得到通知(异步的特点) 1.2 阻塞/非阻塞:针对进程访问数据 阻塞:调用数据访问函数后一直等待 非阻塞:调用数据访问函数后立即返回 同步阻塞IO:传统的IO方式,进程发起...原创 2014-05-09 16:49:00 · 122 阅读 · 0 评论