- 博客(47)
- 资源 (13)
- 收藏
- 关注

原创 安卓上实现的自定义心电波形控件
1、前言大概前年的样子,实验室要做一个智能睡眠床垫的项目,需要用安卓手机 端进行心电和呼吸波形的展示,当时由于时间紧,波形的展示用的是第三方控件achartengine。虽然能运行,但是有些信息不能显示,总之 没有自己实现的方便,想加什么功能就加什么功能。直到今年,项目组又要做一个智能背心的项目,还是需要 显示心电和呼吸波形,趁这次时间比较充裕,就自己实现了一个。2、控件功能
2017-12-07 14:01:05
5663
9
原创 在多线程和反射中java异常处理
1、概述java异常可以理解为因为程序运行环境或者代码逻辑等原因,致使程序不能继续正常工作的一种情况。而在java中定义了很多种不同类型的异常,使得jvm在抛出异常的时候,我们能根据这个异常的种类,快速的定位出程序出问题的原因。1.1 异常的种类在java中所有的异常都继承于Throwable类。而Throwable又分为两个子类,Error类和Exception类。Error:代表着程序...
2019-06-27 15:52:30
645
原创 模拟个人微信号登录进行相关操作
1.需求这两天帮一个同事调研一个需求。他的一个销售朋友想实现这么一个功能,在程序中登录个人的微信号,然后可以对微信好友进行分组,并对每个微信号进行相关的标签标定。比如好友A,是xx公司的研发总监,好友B,是yy公司的产品经理。把好友A和B拉进来后,发一条消息(对于好友A和B来说,还是单独发送的),会自动的把A改成xx公司的研发总监,B改成yy公司的产品经理,然后发送。需求很简单,功能类似于一个...
2019-06-12 11:11:03
7643
原创 spring-boot浅析
1、何为spring-boot可以理解为spring-boot是为了快速构建spring项目的一种框架。比如普通的开发spring-mvc项目,正常的话需要在web.xml配置dispach-servlet,需要在我们的xml文件中配置视图解析器、配置handlermapping和handleradapter解析器、定义扫描包目录、配置事务管理器等。另外还需要配置tomcat服务器,通过mave...
2019-05-20 11:11:32
392
转载 spring-boot子模块打包去掉BOOT-INF文件夹
1.spring-boot maven打包,一般pom.xml文件里会加 org.springframework.boot spring-boot-maven-plugin这样打的jar里会多一个目录BOOT-INF。2.引起问题,程序包不存在。3.解决办法,如果A子模块包依赖了B子模块包,在B子模块的pom文件,加入 org.springframework.b...
2019-04-08 19:24:17
370
原创 netty中的Bytebuf管理
前言netty中的Bytebuf类似于java nio中的ByteBuffer。不过,与原生的ByteBuffer相比,Bytebuf采用了读写两个指针,使用起来更加方便,不至于每次在读写切换过程中都需要flip()操作。而且Bytebuf支持动态扩展。netty为了实现高效操作,对Bytebuf设置了两种实现,一种是在堆上实现的HeapBytebuf,另一种是在堆外实现的DirecetByt...
2019-03-24 10:47:54
728
原创 netty线程模型
概述netty本质上还是采用了java的nio,只是对nio进行了相关的封装,使用起来更加的方便。在netty服务端开发时,一般会有两个线程池。一个是用于接收链接申请的线程池,如果并发量不是巨大的话,可以设置为1,一般可以称之为boss线程。一个是用于io读写的线程池,可以称之为工作线程池,即boss线程收到的tcp链接,会转给这个工作线程池进行io读写的处理。一般推荐线程池内线程数量为cpu核...
2019-03-20 18:59:58
621
原创 rocketmq消费消息流程
主要讲述rocketmq的消费流程,ack机制以及消费失败的处理问题。1 rocketmq的消费流程 public static void main(String[] args) throws InterruptedException, MQClientException { /* * Instantiate with specified consum...
2019-01-08 15:47:26
2323
原创 Rocketmq的通信协议和方法分析
根据rocketmq的模块设计,其通信相关的代码放在源码包下的rocketmq-remoting模块。主要内容包括了编解码处理,使用了nety框架对接收发送消息的处理等。其类图见下:其中,以RemotingService为最上层接口,提供了三个接口:void start();void shutdown();void registerRPCHook(RPCHook rpcHook);R...
2018-12-20 17:47:23
4587
转载 在Java项目中如何使用log4j和slf4j实现日志打印(转)
转载于:https://blog.youkuaiyun.com/xiao_mengxi/article/details/54910450什么是log4j?Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级...
2018-12-16 14:58:50
611
原创 dubbo的proxyFactory和动态代理相关
动态代理,可以理解为在系统运行期间,为目标类生成二进制的class文件并运行,当系统运行完,这个class文件也会消失。dubbo中,每一个spi注解的接口,都会通过动态代理,生成一个类似于ProtocolAdpative等的xxxAdpative等的xxxAdpative等的xxxAdpative的class文件。动态代理在dubbo的另一个典型应用是proxyFactory。proxyFa...
2018-12-02 19:54:24
1475
原创 由dubbo的TpsLimitFilter限流,说说dubbo的Filter实现机制
Dubbo提供了过程拦截(即Filter)功能。dubbo的大多数功能都基于此功能实现。在dubbo的服务端,提供了一个限流Filter(TpsLimitFilter),用于在服务端控制单位时间内(默认是60s)的调用数量tps。超过此数量,则服务端将会报错。一、TpsLimitFilter的使用# 1.1、TpsLimitFilter源码@Activate(group = Constan...
2018-11-29 19:57:34
2411
1
原创 spring解析dubbo标签
1、spring自定义标签的步骤(参考https://my.oschina.net/lenglingx/blog/889662)a、编写xsd文件描述自定义的元素。看下面的代码实例,这里定义了application。其中上面的代码是具体的元素定义,下面的是自定义元素名。<?xml version="1.0" encoding="UTF-8" standalone=&a
2018-11-28 20:46:26
407
原创 dubbo的服务调用过程
服务消费的过程:referenceConfig类的init方法调用Protocol的refer方法,生成invoker实例,然后把Invoker转换为客户端需要的接口。2、源码解析dubbo的消费端初始化在ReferenceConfig的get()方法 public synchronized T get() { if (destroyed){ thro...
2018-11-28 10:29:56
561
原创 dubbo自定义filter,报No such extension xxxFilter for filter/com.alibaba.dubbo.rpc.Filter错误
前言最近在学习dubbo的filter时候,根据dubbo的开发手册,自定义了一个filter,然后配置,结果控制台报 No such extension xxxFilter for filter/com.alibaba.dubbo.rpc.Filter错误。特此记录。自定义filter首先定义filter,需要实现com.alibaba.dubbo.rpc.Filter接口/** ...
2018-11-27 17:13:27
15254
2
原创 dubbo的服务发布过程
dubbo发布服务的流程1、具体的服务转为invoker: ServiceConfig类通过ProxyFactory类的getInvoker方法,将服务提供类ref生成invoker。2、Invoker转换成Exporter:打开通信端口,接听来自客户端的申请。具体解析1、当Spring容器实例化bean完成,ServiceBean会执行onApplicationEvent方法,该方法调用...
2018-11-27 15:13:28
579
原创 dubbo的spi机制
1、proxyFactory 是用来干嘛的对于Server端,主要负责将服务如HelloServiceImpl统一进行包装成一个Invoker,通过反射来执行具体的HelloServiceImpl对象的方法2、在调用servicebean时,会先初始化serviceconfig。在初始化时serviceconfig时,会最先初始化 private static final Protocol...
2018-11-26 15:29:41
451
原创 dubbo总结
集群模式下的容错模式集群模式下,调用服务失败时的容错机制1、默认是failover,重试机制,默认是两次。通常可用于读操作2、failfast,快速失败模式,当调用失败时候就报错,通常用于写操作3、failsafe,失败安全模式,当调用失败时直接忽略。通常用于写入日志等操作。...
2018-10-01 19:27:26
443
原创 java异步调用future、callable以及futuretask分析
通过线程池的submit方法和实现了callable接口的对象,可以返回一个future接口的对象,通过此对象可以异步获取callable方法的运行结果。future.get() 阻塞式的返回结果,如果任务未执行完毕,就阻塞等待结果产生。future.get(10000, TimeUnit.MILLISECONDS); 在时间范围内得到结果,没有的话就报错public class Fut...
2018-09-29 09:34:15
687
原创 Thread类中的中断分析
interrupt()分析先看javadoc里的关于Thread类的interrupt()方法说明Interrupts this thread. Unless the current thread is interrupting itself, which is always permitted, the checkAccess method of this thread is invok...
2018-09-28 16:32:45
358
原创 Maven手动构建jar包
Maven入门何为mavenMaven的目录结构Maven构建命令引用了其他jar包的情况(第三方jar包不与package打成一个包)引用了其他jar包的情况(第三方jar包与package打成一个包)何为maven新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPant...
2018-09-20 15:27:08
599
转载 转:导出/导入Eclipse的workspace配置(备份Eclipse配置)以及xshell中文乱码问题以及
设置好workspace配置后可以将配置保存为 *.epf 文件。进入 File -> Export ;选择 General -> Preferences ,下一步;选择 Export all,在 To preference file 中输入要保存的路径和文件名;Finish。将 *.epf 配置文件导入workspace。进入 File -> Expor...
2018-09-13 15:38:25
345
原创 mybatis入门
何为mybatismybatis是一款orm(对象关系映射)框架,因为传统的jdbc编程每次操作都需要打开关闭connection连接(工作量大),需要在代码中对sql编码进行维护(硬编码)等问题,各种优秀的orm框架应运而生,其中比较出名的就有hibernate和mybatis。hibernate与mybatis的区别1、hibernate是全自动映射orm框架,不需要写sql语...
2018-08-26 17:32:30
191
原创 ThreadLocal
ThreadLocal:线程本地变量,其通过在每一个线程中为变量存储副本的方式,解决变量的多线程访问的问题。与Synchroniezd等加锁方式不同,其是通过以空间换时间的方式。 ThreadLocal的方法主要为一下四个:public T get() { }public void set(T value) { }public void remove() { }protected ...
2018-08-19 17:00:06
140
原创 spring的bean在多线程中注入的问题
问题描述在spring中,如果需要在异步线程中注入bean,会发现bean是空的情况。原因据说是spring bean 出于线程安全考虑,不得注入bean至线程类(Runnable)。 代码如下:public class DealThreadTask implements Runnable{ @Autowired private DealService dealSe...
2018-08-19 10:26:15
3015
1
原创 spring事务相关
事务简介事务是对数据库操作的一组序列。当操作序列中的所有操作都成功执行时,事务执行成功。当序列中任一操作失败时,此时对数据库的操作返回至事务未执行的状态。事务的4个特性事务的特性可以总结为ACID 原子性(Atomicity):事务里的操作看做一个整体,是不可分割的原子单位,其所有操作要么全部成功,要么全部失败; 一致性(Consistency):事务一旦完成,其业务结果必须有...
2018-08-15 08:35:00
203
原创 java自定义注解解析及相关场景实现
注解(Annotation)是java1.5之后提供的一种语法。其主要作用是编译检查(比如@override)和代码分析(通过代码中添加注解,利用注解解析器对添加了注解的代码进行分析,获取想要的结果,一般自定义的注解都是这一种功能)。1.1 JDK提供的注解JDK提供的注解最常用的是3个,@Override,@Deprecated和@SuppressWarnings.1.1.1...
2018-08-02 16:41:14
10266
3
原创 Cookie和session小结
1、由于http协议是无状态的,为了帮助服务器记录浏览器端的状态,就有了会话技术。会话技术分为cookie(客户端)和服务器端(session)。一次会话技术的过程是(默认)从浏览器第一次打开网址到这个浏览器关闭位置。 2、Cookie的内容是存在浏览器端,默认是浏览器关闭,Cookie的内容就取消。除非设置了Cookie的时间。cookie.setMaxAge(int second);...
2018-06-29 16:36:45
329
原创 Servlet、servletContext小结
1、Servlet是sun提供的一种规范,用于服务器端处理http请求。一般需要我们继承Servlet接口或者HttpServlet接口。并实现其中的方法。(Servlet接口需要实现service方法,HttpServlet接口需要实现doget和dopost方法)。Servlet要正常运行,需要在web.xml配置。 其生命周期是随着第一次访问而创建(或者设置了load-on-startup就...
2018-06-26 19:18:02
225
原创 http从请求到响应分析
http协议是互联网开发的基石,其基于请求/响应模型,请求和响应必须成对出现,默认端口是80.下面分别对http的请求和响应分别做说明。 1、前期准备 新建springmvc工程,将一个html文件放到tomcat的webapp下,其内容j就是一个简单的表单提交页面,如下:<!DOCTYPE html><html><head><meta ch
2018-06-25 17:07:29
321
原创 spring aop的基于xml以及注解的配置
1、首先定义目标接口和目标类public interface UserService { void insert(String name,String password); void update(String name,String password); int query(String name,String password); void de...
2018-06-24 11:06:12
232
1
原创 java的动态代理小记
spring的两大核心思想是Ioc(控制反转)和AOP(切面编程)。AOP主要通过java的动态代理和cglib代理实现。动态代理需要所代理的类要有接口。而cglib是通过集成所代理的类来实现,一般情况下优先使用java的动态代理。 下面通过一个例子说明动态代理的实现以及需要注意的事项。 UserService对于一个增删改查的接口。 public interfac...
2018-06-23 17:20:39
306
原创 io和nio对操作文件的效率对比
对于文件拷贝,传统的io是先从输入流中取出一小部分字节,然后写入输出流中。而nio是将输入流对应的channel直接transfer到输出流对应的channel,避免了中间的byte数组的缓冲区,这也是所谓零拷贝的一种。public class FileIOTest { /** * @param args * @throws IOException ...
2018-05-07 14:31:18
1387
1
原创 基于delayqueue的缓存
/** * All rights Reserved, Designed By www.tydic.com * @Title: CacheClass.java * @Package com.andy.jcu.cachetest * @Description: TODO(用一句话描述该文件做什么) * @author: andyzhu * @date:...
2018-04-18 20:19:44
486
原创 ArrayBlockingQueue实现生产者消费者模型
ArrayBlockingQueue是一个由数组构成的有界阻塞队列,其常用构造方法://fair判断是否为公平锁,为true的话表明先进入的线程优先访问数据 public ArrayBlockingQueue(int capacity, boolean fair) { // 初始容量必须大于0 if (capacity <= 0) ...
2018-04-16 16:13:01
573
原创 CopyonWriteArrayList
CopyonWriteArrayList是java并发包中提供的一个类,基于写入时复制的思想。 普通的ArrayList或者Vector(虽然vector是线程安全的,但是复合操作不是,删除或者添加元素后,其结构发生了变化,modcount还是改变了,也会发生异常),如果有两个线程,一个线程进行iterator迭代显示,同时另外一个线程进行add或者reomve操作,则进行迭代显示的操作会报Co...
2018-04-16 15:41:30
184
原创 CountDownLatch分析
CountDownLatch是并发包中的一个工具类,用于控制多个线程在其他任务完成后再继续执行的逻辑。public class CountDownLatchTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated...
2018-04-12 16:25:43
163
原创 Lock中AbstractQueuedSynchronizer分析
Lock的实现基于队列同步器AbstractQueuedSynchronizer的子类实现的AbstractQueuedSynchronizer用一个int表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作。同步器的设计基于模板方法,即开发者需要继承同步器并重写指定的方法,随后同步器组合将在自定义同步组件的过程中,调用同步器的模板方法,这些模板方法又去调用开发者编写的方法。Loc...
2018-04-10 17:17:07
253
原创 ThreadPoolExecutor核心方法分析
ThreadPoolExecutor类的核心是Worker内部类,其对资源进行了服用,减少创建线程的开销。Worker实现Runnable接口,并继承AbstractqueuedSynchronizer。 内部有一个worker的HashSet,存放工作线程。 线程池的状态:Runnable,shutdown,stop,tidying,terminated。 其核心方法: 1、execut...
2018-04-09 16:31:41
275
原创 yum设置本地源
yum设置本地源1、将iso文件拷centos的目录下,比如 /mnt/iso/centos.iso 2、mount -o loop /mnt/iso/centos.iso /mnt/cdrom #将光盘挂载到新建的cdrom目录上 一定要加上 -o loop 参数 3、 在cdrom的目录下用ls 查看里面的内容,可以确认挂载是否成功 4、备份系统原有yum源文件,修改名...
2018-03-30 08:53:49
443
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人