- 博客(79)
- 资源 (16)
- 收藏
- 关注

原创 Android 蓝牙4.0(BLE)开发实现对蓝牙的写入数据和读取数据
由于最近学校组织了一个移动APP(安卓)设计大赛,自己也学习安卓有一段时间了,就跟同学商量一起去参加试试,一拍即合,然后我们就开始想idea,因为最近可穿戴设备比较火,我们也就想试试。经过商量,我负责Android上位机的开发,同学负责下位机的开发。上位机的开发主要是低功耗蓝牙BLE的开发,然后就开始找资料,各种找,最后谷歌官方提供的demo还有其他网友基于官方demo修改的demo,结合网上
2015-05-17 10:31:58
55176
8
原创 Spring cloud(Finchley)微服务框架,sleuth整合zipkin链路追踪失效的问题
一、首先说问题:1、springCloud在使用链路追踪组件sleuth整合zipkin的过程中链路追踪信息切都是正常;2、微服务太多需要使用组件Config对每个微服务的的配置文件进行统一管理;3、config对微服务进行管理,但是如果某一个配置发生改变,如果每个微服务都要重启才能获取最新的配置文件就不合理,那么springCloud提供了spring cloud Bus组件来刷新配置,...
2019-01-16 14:09:33
2379
4
原创 spring bean的作用域
在spring中,那些组成用用程序的主体以及由springIOC容器所管理的对象称之为bean。也就是说bean是由IOC容器初始化、装配以及管理的对象,除此之外,bean就跟普通的对象一样。然而bean的定义以及bean之间的相互依赖关系是通过配置元数据来描述。Spring中的bean默认都是单例的,这些单例的Bean在多线程中是怎么保证线程安全的呢?例如对于Web应用来说,Web容器对于每...
2018-09-19 13:13:25
5130
原创 Mybatis源码解析-sql执行
一、传统的jdbc操作步骤获取驱动获取jdbc连接创建参数化预编译的sql绑定参数发送sql到数据库执行将将获取到的结果集返回应用关闭连接传统的jdbc代码:package com.zjp;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatem...
2018-09-15 16:54:42
463
1
原创 Mybatis源码解析之Mybatis初始化过程
一、搭建一个简单的Mybatis工程为了了解Mybatis的初始化过程,这里需要搭建一个简单的Mybatis工程操作数据库,工程结构如下: 一个UserBean.javaprivate int id; private String username; private String password; private int age; public Us...
2018-09-15 12:26:26
337
原创 Spark的stage划分算法源码分析
Spark Application中可以有不同的Action触发多个Job,也就是说一个Application中可以有很多的Job,每个Job是由一个或者多个Stage构成的,后面的Stage依赖于前面的Stage,也就是说只有前面依赖的Stage计算完毕后,后面的Stage才会运行。 然而Stage划分的依据就是宽依赖,什么时候产生宽依赖(产生shuffle)呢?例如reduceByKey,...
2018-03-23 15:27:52
832
原创 怎么获取排他网关下的所有userTask?
怎么获取排他网关下的所有userTask?前面文正有写过根据当前节点获取下一个UseTask节点,有需要了解的可以去看这篇博客根据当前节点获取下一个UseTask节点,,但是现在需求又发生了该表,如果在一个节点下需要获取排他网关下所有的userTask怎么办? 这里还需要将需求分成两种 1、排他网关后面只有userTask,如下图所示 这种情况,当到达财务审批时,需要财务选择需要通过财务总
2017-12-27 16:19:45
1510
1
原创 Flume fan out(扇出)详解
在flume中有时候需要将一个源(source)将数据发送到多个地方(sink),在flume中该术语叫做扇出(fan out),也就是从一个source向多个channel,就是向多个sink传递事件。下面就展示一个将同一事件传递到HDFS和logger。agent1.sources = source1agent1.sinks = sink1a sink1bagent1.channels =
2017-10-19 12:35:41
2954
原创 Activiti 报错 A delegated task cannot be completed, but should be resolved instead
在使用Activiti进行委托任务时,委托任务完成后,被委托人完成任务报错:A delegated task cannot be completed, but should be resolved instead.原因是被委托的流程需要先resolved这个任务再提交。 所以在complete之前需要先resolved// 被委派人处理完成任务taskService.resolveTask(ta
2017-08-21 15:41:42
5315
2
原创 Centos 安装Eclipse报错java.lang.UnsatisfiedLinkError: Could not load SWT library
在CentOs上安装Eclipse时报错:!ENTRY org.eclipse.osgi 4 0 2017-08-15 00:22:12.612!MESSAGE Application error!STACK 1java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: /home/badou/app/ec
2017-08-15 16:02:20
11692
1
原创 activiti根据当前节点获取下一个UseTask节点
以前写过一篇文章activiti根据当前节点获取下一个节点信息,当时的需求只是需要获取下一个节点而已,并没有要求获得什么类型的节点,所以下一个节点可能是任何节点,在最近的项目中的需求是根据当前的节点获取下一个UseTask节点,为当前审批人选择下一个审批人提示,所以前面的文章所给出的信心就不能够实现当前功能。 所以本文所述为获取下一个任务节点。根据上一篇文章,可以获取到下一个节点的信息,如果我们获
2017-08-10 17:15:23
40233
21
原创 Spring添加对缓存的支持
缓存可以可以存储经常使用到的信息,如果这些信息保存在数据库中,经常对数据库的读取会严重影响应用的性能,所以将这些信息保存在缓存中,取出来就可以立即使用。1、启用spring对缓存的支持Spring对缓存的支持有两种方式:1)注解驱动缓存2)XML申明的缓存使用Spring最通用的方法就是在方法上添加@Cacheable和@CacheEvict注解。本人更喜欢使用XML与注解混合使用的方式开发。2、使
2017-06-20 15:01:02
931
原创 activiti根据当前节点获取下一个节点信息
在流程中使用监听器判断当前节点是否需要经过,否则跳转到下一个节点,如下图 当提交申请之后,当前提交人为部门负责人,那么部门负责人节点就不需要走了,直接到下一个节点,但是下一个节点是什么并不知道,就可以使用下面的代码获取到下一个节点信息直接跳转到下一个节点。 /** * 获取当前流程的下一个节点 * @param procInstanceId * @return
2017-05-04 14:50:07
31058
原创 maven web项目保存log4j日志到WEB-INF
在项目中需要随时监控程序的运行情况,如果程序在某个位置出现错误或者bug,使用Log4j可以快速定位,将log文件保存在WEB-INF下,便于快速定位问题,下面就是Maven web项目下log4j的配置。1、 添加log4j.properties在resource目录下添加log4j的配置文件,内容如下:#---- global logging configuration#---- level:
2017-04-25 14:28:14
2812
转载 Java - concurrent包详解
我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,当然也有一些开源的框架提供了这些功能,但是这些依然没有JDK自带的功能使用起来方便。而当针对高质量Java多线程并发程序设计时,为防止死蹦等现象的出现,比如使用java之前的wait()、notify()和synchronized等,每每需要考虑性能、死锁、公平性、资源管理以及如何避免线程安全性方面带来的危
2017-02-10 13:27:24
7362
2
原创 分布式内存数据库--Redis事务
一、 事务:与关系型数据库一样redis也支持事务。也就是可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,不许加塞。二、 事务能干嘛?一个队列中,一次性、顺序性、排他性的执行一系列命令。三、 redis事务支持的命令1、 MULTI:标记一个事务块的开始。 随后的指令将在执行EXEC时作为一个原子执行。2、 EXEC:执
2017-02-07 13:09:12
1924
原创 分布式内存数据库---Redis的持久化
一、 Redis 提供了不同级别的持久化方式:Redis提供了两种方式对数据进行持久化,分别是RDB和AOF。 RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储。 AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾。Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过
2017-01-25 11:11:50
5379
原创 Spring-data-redis集成提交数据出现'maxActive'和‘maxWaitMillis’错误
使用Spring集成的redis在提交数据到redis时出现Invalid property ‘maxWait’ of bean class [Redis.clients.jedis.JedisPoolConfig]: Bean property ‘maxWait’ is not writable or has an invalid setter method. Does the parameter
2017-01-22 09:57:50
8170
1
原创 分布式内存数据库---redis配置文件常用配置介绍
想要熟练使用redis,那么redis的相关配置也要非常熟悉,在大数据开发中使用redis就常常需要修改redis的常见配置。一、 redis的单位redis的数据单位跟常用的单位有点不一样,打开redis.conf可以看到,redis的单位分为两种: 二、 配置之INCLUDE用于加载额外配置 三、 配置之GENERAL主要是redis的一些通用配置,包括daemoniz
2017-01-19 15:21:38
1099
原创 分布式内存数据库---Redis操作String、list、set、hash和Zset
Redis是一个Key-Value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓
2017-01-18 16:10:53
4444
原创 分布式内存数据库---Redis数据库之(键)key
Redis数据库之(键)key 前面讲了Redis存储的数据类型是key-value类型,Value可以是如String、List、Set、Hashes和Sorted-Set。这些命令都具有一个共同点,即所有的操作都是针对与Key关联的Value的。而该篇博客将主要讲述与Key相关的Redis命令。学习这些命令对于学习Redis是非常重要的基础,也是能够充分挖掘Redis潜力的利器。 常用的k
2017-01-17 10:58:17
1013
原创 Redis的安装以及基本操作简介
所有与大数据相关的服务都必须在linux上运行,redis提供了linux和windows的版本,但是为了系统更加稳定,推荐使用linux作为服务器。 Linux版redis的安装,这里选择centos作为服务器, 1、首先去官网下载一个redis: 中文网站:http://www.redis.cn/,英文网站:https://redis.io/下载最新的redis。 2、将redi
2017-01-17 09:59:51
522
原创 分布式内存数据库的CAP-BASE原理
一、传统的关系型数据库遵循ACID规则: 事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性: 1、A (Atomicity) 原子性 原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100
2017-01-16 19:03:51
1930
原创 为什么要使用redis数据库?
为什么要使用redis数据库? 1、 redis简介 redis是Nosql数据库中使用较为广泛的非关系型内存数据库,redis内部是一个key-value存储系统。它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型,类似于Java中的map)。Redis基于内存运行并支持持久化的N
2017-01-16 16:08:16
32746
3
原创 基于Spring-Data-Redis存储JavaBean对象
redis是使用比较广泛的缓存开源工具,一开始保存String对象的数据很方便,但是在保存一个对象上面费了点时间。下面就使用redis保存pojo对象。 1、安装redis 这个讲的很详细:http://www.cnblogs.com/koal/p/5484916.html 2、新建一个maven工程 在pom.xml中添加配置文件<project xmlns="http://maven.a
2017-01-05 17:21:46
8609
1
转载 wireshark抓包常见提示含义解析
原文转自:http://blog.sina.com.cn/s/blog_987e00020102wq60.html http://www.cnblogs.com/redsmith/p/5462547.html原文链接:http://blog.youkuaiyun.com/u012398362/article/details/52276067===========================
2016-12-27 10:41:36
9891
1
原创 TCP报文之-tcp dup ack 、tcp Out-of-Order
使用WireShark抓包,选择TCP报文,TCP是一种安全的协议,在网络出现状况时也能安全稳定的传输数据,但是在网络出现问题时tcp报文中会有很多中情况导致报文重传或者是重组。现在就在报文中遇到的几个问题来详细说明一下。 WireShark出现的常见提示 TCP Out_of_Order的原因分析: 一般来说是网络拥塞,导致顺序包抵达时间不同,延时太长,或者包丢失,需要重新组合数据单元,因为
2016-12-20 11:25:16
160152
4
原创 Java多线程-生产者与消费者
Java多线程生产者与消费者,准确说应该是“生产者-消费者-仓储”模型,使用了仓储,使得生产者消费者模型就显得更有说服力。 对于此模型,应该明确一下几点: 1、生产者仅仅在仓储未满时候生产,仓满则停止生产。 2、消费者仅仅在仓储有产品时候才能消费,仓空则等待。 3、当消费者发现仓储没产品可消费时候会通知生产者生产。 4、生产者在生产出可消费产品时候,应该通知等待的消费者去消费。一、仓库
2016-12-09 14:43:26
754
原创 Java 文件压缩与解压缩
Java IO类库中有提供可以压缩与解压缩的类,其中使用最为广泛的是Zip和GZip,使用这两个类可以很方便的压缩数据。 1、使用Gzip进行简单的文件压缩 GZIP接口相对比较简单,如果只要对单个文件进行压缩,那么使用GZIP可能是最好的选择。import java.io.*;import java.util.zip.*;/** * 使用GZIP进行简单的压缩,解压缩 * *
2016-11-21 12:02:20
968
转载 hashCode() 和equals() 区别和作用
HashSet和HashMap一直都是JDK中最常用的两个类,HashSet要求不能存储相同的对象,HashMap要求不能存储相同的键。 那么Java运行时环境是如何判断HashSet中相同对象、HashMap中相同键的呢?当存储了“相同的东西”之后Java运行时环境又将如何来维护呢? 在研究这个问题之前,首先说明一下JDK对equals(Object obj)和hashcode()这两个方法的
2016-11-16 15:00:20
675
原创 Hibernate环境搭建以及HelloWorld
Hibernate是 Java 领域中使用非常广泛的持久化框架。下面使用eclipse搭建并测试一个HelloWorld程序。 一、安装Hibernate插件 为Eclipse安装Hibernate插件使得在后面开发变得很方便,安装插件可以在线安装也可以使用离线安装的方式,因为在线安装的方式比较慢很费时间,所以在这里使用离线安装的方式。 1、从Hibernate官
2016-11-04 15:50:41
2436
原创 搭建一个Struts2工程
1、使用Eclipse创建一个Dynamic Web Project功能。 2、从Struts2官网上下载Struts2 struts-2.3.30-all.zip 3、向工程中导入Struts2所必须的jar包: 4、在web.xml文件中加入Struts2的配置信息 <!-- 配置 Struts2 的 Filter --> <filter> <filter-na
2016-10-27 10:45:57
1127
原创 设计模式--工厂模式
工厂模式分为简单工厂模式,工厂方法模式和抽象工厂模式。 (1)简单工厂模式 简单工厂模式并不是一个设计模式,看起来更像是一种编程模式,但是由于经常被使用就被称之为一种设计模式。例如:public class PizzaStore { SimplePizzaFactory factory; public PizzaStore(SimplePizzaFactory facto
2016-09-08 14:53:17
337
原创 设计模式之---观察者模式
**设计模式之—观察者模式** 观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,他的所有依赖者都会收到通知并自动更新。 关于观察者,主题只需要知道观察者实现了某个接口。主题不需要知道观察者的具体类是谁,做了什么或者其他的什么细节,任何时候都可以添加新的观察者或者删除观察者。下面就以一个例子来实现观察者模式。 首先新建一个主题、观察
2016-09-06 11:45:34
413
原创 Java解析Json数据的两种方式
JSON数据解析的有点在于他的体积小,在网络上传输的时候可以更省流量,所以使用越来越广泛,下面介绍使用JsonObject和JsonArray的两种方式解析Json数据。使用以上两种方式解析json均需要依赖json-lib.jar开发包使用依赖包1、JsonObject使用JsonObject解析只有一条数据的json是非常方便的例如:"{\"name\":\"zhangsan\",
2016-08-12 12:36:15
66120
转载 Luban(鲁班)——可能是最接近微信朋友圈的图片压缩算法
LubanLuban(鲁班)——Android图片压缩工具,仿微信朋友圈压缩策略项目描述目前做app开发总绕不开图片这个元素。但是随着手机拍照分辨率的提升,图片的压缩成为一个很重要的问题。单纯对图片进行裁切,压缩已经有很多文章介绍。但是裁切成多少,压缩成多少却很难控制好,裁切过头图片太小,质量压缩过头则显示效果太差。于是自然想到app巨头“微信”会是怎么处理,Lub
2016-08-11 18:17:37
6812
转载 JSR311发布Restful WebService工程
背景知识 Representational state transfer (REST) Web Service: 它是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。在目前三种主流的Web Service实现方案中,因为REST与SOAP和XML-RPC相比显的更加简洁,因此越来越多的Web Service开始采用REST风格设计和实现。参考资料:h
2016-08-09 15:29:19
565
原创 Spring与Hibernate结合使用
1、使用Spring的IOC容器,将对象之间的依赖关系交给Spring,可以降低组件之间的耦合性,可以更专注于应用逻辑。同时可以提供众多服务,数据库事务管理,WS等。2、Hibernate是对JDBC的轻量级的对象封装,是一个独立的对象持久化对象。1)对象/关系数据库映射(ORM)它使用时只需要操纵对象,使开发更对象化,抛弃了数据库中心的思想,完全的面向对象思想。2) 事务Tran
2016-08-04 15:16:58
701
转载 可以节约很多代码的几个正则表达式
正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑。熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升。下面是@技匠 整理的,在前端开发中经常使用到的20个正则表达式。正则表达式经常被用于字段或任意字符串的校验,如下面这段校验基本日期格式的JavaScript代码:var reg = /^(\d{1,4})(
2016-06-17 16:56:35
597
原创 Android将数据库数据导出成excel格式的文本(CSV)
在做Android软件的时候往往随着时间的推移数据会越来越多,这个时候想要查看数据的时候到数据库里面去查看的话就会很麻烦,所以有时候需要将数据库里面的数据导出来用office打开看会更加方便。导出excel的使用Apache组织提供的POI来导出.xls格式的文件也是可以,但是也有一种很简单的方式就可以导出使用excel打开。逗号分隔值(Comma-Separated Values,CSV,有
2016-01-11 13:24:03
9679
1
数据库导出excel文件
2016-01-11
使用MD5对SharedPreferences密码加密
2015-07-17
Android SharedPreferences设置初始密码
2015-06-02
Android BLE实现对蓝牙的读写
2015-05-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人