- 博客(56)
- 资源 (1)
- 收藏
- 关注

原创 RxJava2.0 全异步编程 源码解析
1 常用操作的实例 Single<Model> xm = Single.create((SingleOnSubscribe<Model>) emitter -> { System.out.println("do some future task"); emitter.onSuccess(new Model("小明", 6)); }); Single<Model> xh = S
2020-11-20 00:21:53
540
原创 RxJava2.0 全异步编程 线程调度
不指定线程的情况下,Rxjava 遵循 的是线程不变的原则,观察者和被观察在同一个线程执行操作。使用ObserveOn() 和SubscribeOn() 操作符,你可以让 Single 在一个特定的调度器Scheduler 上执行。调度器的种类RxJava中可用的调度器种类:调度器类型 效果 Schedulers.computation( ) 用于计算任务,如事件循环或和回调处理,不要用于IO操作(IO操作请使用Schedulers.io());默认线程数等于处理器的数量.
2020-11-20 00:25:26
314
原创 RxJava2.0 全异步编程 简介
1 基本概念1.1 响应式编程一种以异步数据流为核心的编程方式。这里的数据一般是一些事件;而流则是时间序列上的一系列的事件。任何东西都可以转化为数据流,如变量、用户输入事件、数据结构等。说直白点,为了让异步操作更简单,避免进入回调地狱。1.2 ReactiveX一种响应式扩展框架,有很多实现,例如 RxJava, RxJdbc,RxGo,RxKoltin,几乎所有主流语言。官网这样定义:Rx是一个使用 可观察数据流 进行异步编程的编程接口,ReactiveX 结合了观察者模式、迭...
2020-11-20 00:14:10
471
原创 MAC 安装 Protobuf
MAC 安装 Protobuf 1.确认MAC装有g++、make、vim工具2.安装make工具使用 brew install make3.安装protobuf brew install protobuf4.安装protobuf依赖库 git clone https://github.com/alexeyxo/protobuf-objc.git5.安...
2018-04-22 23:29:10
531
转载 分布式系统理论基础 - 选举、多数派和租约
选举(election)是分布式系统实践中常见的问题,通过打破节点间的对等关系,选得的leader(或叫master、coordinator)有助于实现事务原子性、提升决议效率。 多数派(quorum)的思路帮助我们在网络分化的情况下达成决议一致性,在leader选举的场景下帮助我们选出唯一leader。租约(lease)在一定期限内给予节点特定权利,也可以用于实现leader选举。
2017-10-24 17:56:00
371
原创 jquery遍历—$().each和$.each()
在jquery中,遍历对象和数组,经常会用到$().each和$.each(),两个方法。1. $().each 在dom处理上面用的较多。如果页面有多个input标签类型为checkbox,对于这时用$().each来处理多个checkbox,例如:$(“input[name=’checkbox’]”).each(function(i){if($(this).attr(‘checked’)==t
2017-10-08 23:15:53
4797
原创 github参与开源项目,fork简介
当我们参与github上开源项目时,因为开源项目,不是每个人都有push权限,所以这时候,我们就需要了解一个操作—fork;fork的意思可以理解为复制,把别人github上的代码,复制到自己github上一份。fork并且更新一个代码库现在有这样一种情形:有一个叫做Joe的程序猿写了一个游戏程序,而你可能要去改进它。并且Joe将他的代码放在了GitHub仓库上。下面是你要做的事情:
2017-10-08 11:30:46
1859
转载 使用IntelliJ IDEA和Maven创建java web项目
新建新建maven项目,create from archetype,选择maven-archetype-webappNext,填写GroupId,ArtifactId和VersionNext,这里在Properties中添加一个参数archetypeCatalog=internal,不加这个参数,在maven生成骨架的时候将会非常慢,有时候会直接卡住。
2017-09-22 16:08:07
423
转载 slf4j 和 log4j合用的(Maven)配置
简述:添加logger的日志输出,下面是配置信息供备忘步骤:1. 在Maven的porn.xml 文件中添加dependency如下[html] view plain copydependency> groupId>org.slf4jgroupId> artifactId>s
2017-09-08 16:59:54
268
原创 Cannot start compilation: the output path is not specified for module…
使用Idea初期,没有设置class的输出路径,在run项目的时候会出现这种错误解决办法定位文件编译路径(project compiler output),在工具栏的File -> Project Structure… -> Project -> Project compiler output。 设置输出路径,就可以正常编译了
2017-08-11 15:01:39
3359
1
原创 Java集合框架ArrayList的创建原理
public class User { private String name; private String orgId; public String getName() { return name; } public void setName(String name) { this.name = name; } pub
2017-08-03 21:05:07
634
1
原创 一个程序员对爱情的思考
爱情本来就与职业无关,可是经常会有一些职业与爱情的调侃,其中关于程序员这个职业调侃应该是比较多的,大家总喜欢给我们这个职业贴上一些标签。业外人看来,我们可能是一副不修边幅,不善交际的,身体亚健康的形象,当然了,我们这样的一群人,应该也是找不到女朋友的。我没有女朋友,大多对这些标签一笑而过,偶尔也会反感这些对我们职业的标签,那么真实的我们,程序员这个职业对我们有什么影响呢?我们的职业对我们有什么的影响
2017-07-31 00:17:56
686
原创 Java基本数据类型在内存中的存储大小实践
探讨的问题 一直比较疑惑如果一个很大的list在内存中存储的话,会占用多少内存空间呢?太大的话,这部分数据会直接进入堆内存,从而可能导致频繁的full gc。下面结合基本数据类型组成的对象,组成的list,通过生成的文件的大小来分析这个问题。//首先构造一个大的list转换成byte[],然后写入到文件里面去。public class SerializeDemo { public stat
2017-07-27 13:10:05
847
转载 JVM学习05——垃圾收集器
HotSpot JVM收集器 上面有7中收集器,分为两块,上面为新生代收集器,下面是老年代收集器。如果两个收集器之间存在连线,就说明它们可以搭配使用。Serial(串行GC)收集器Serial收集器是一个新生代收集器,单线程执行,使用复制算法。它在进行垃圾收集时,必须暂停其他所有的工作线程(用户线程)。是Jvm client模式下默认的
2017-07-23 17:02:51
347
转载 JVM学习04——垃圾收集算法
跟踪收集器跟踪收集器采用的为集中式的管理方式,全局记录对象之间的引用状态,执行时从一些列GC Roots的对象做为起点,从这些节点向下开始进行搜索所有的引用链,当一个对象到GC Roots 没有任何引用链时,则证明此对象是不可用的。下图中,对象Object6、Object7、Object8虽然互相引用,但他们的GC Roots是不可到达的,所以它们将会被判定为是可回收的对象。
2017-07-23 16:58:40
361
原创 JVM学习02——对象的创建与访问
对象的创建 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,则先执行相应的类加载过程。类加载检查通过后,接下来虚拟机将为新生对象分配内存。为虚拟机分配内存的任务等同于把一块确定大小的内存从Java堆中划分出来。 在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对
2017-07-23 16:36:21
295
原创 JVM学习03——类加载机制
类加载机制 JVM把class文件加载的内存,并对数据进行校验、转换解析和初始化,最终形成JVM可以直接使用的Java类型的过程就是加载机制。 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的生命周期包括了:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)、卸
2017-07-12 00:17:27
376
原创 互联网创业公司的一年,产品的从0到1
很多时候我们接触的是成熟的互联网产品,我们大多数人其实不会太关注产品的设计过程,我觉得从一个产品的从0到1的过程也是蛮有意思的。下面我结合我在一家互联网创业公司的经历,从一个菜鸟程序员的角度,具体谈谈我参与的产品从0到1的过程。结合业务进行技术选型:博主的公司是做中小企业商旅服务,目前最火的和未来的发展趋势当然是微服务设计了。所以我们的整个创业项目也是基于SaaS和云服务理念。采用的是开源的框架du
2017-06-11 17:59:34
746
1
转载 Java面试必备技能
如果要应聘高级开发工程师职务,仅仅懂得Java的基础知识是远远不够的,还必须懂得常用数据结构、算法、网络、操作系统等知识。因此本文不会讲解具体的技术,笔者综合自己应聘各大公司的经历,整理了一份大公司对Java高级开发工程师职位的考核纲要,希望可以帮助到需要的人。当前,市面上有《Java XX宝典》类似的图书,而且图书中的内容都着重在讲解Java最为基础的部分,最严重的是,里面有着大量错误的
2017-06-04 09:44:07
2342
原创 Java研发学习之路小回顾
首先,为什么需要写这篇文章,作为一名java后端研发已经两年,两年的时间多多少少看过一些书,学习过一些专题的知识,工作中接触过一些项目。通过回顾学习和工作中技术成长的路线来发觉自己的不足和需要继续增强提高的地方。 对于一些刚工作出来的小白来说,工作一年以内,工作主要内容是一些jsp/servlet,一些数据库的操作,一些前段js,基础mvc框架的运用。例如我刚出来工作时接手第一个项目是一个叫“
2017-06-03 02:27:41
684
原创 JVM常用参数配置与内存溢出
常见的Java内存溢出有如下三种java.lang.OutOfMemoryError: Java heap space —-JVM Heap(堆)溢出JVM在启动的时候会自动设置JVM Heap的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)不可超过物理内存。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap的大小是Young Generation
2017-06-03 00:52:34
743
原创 JVM学习01——Java内存区域划分及内存溢出
运行时数据区域Java虚拟机在执行Java程序过程中会把它管理的内存划分为若干个不同的数据区域。这些区域有各自用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范(Java SE 7版)的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域。程序计数器是一块较小的内存空间,可以当作是当前线程所执行的字节码
2017-06-01 00:17:55
442
原创 java数据结构--排序
数据的移动方式,可分为“直接移动”和“逻辑移动”两种。直接移动改变两个数据的位置,而逻辑移动,则是改变数据的指针。数据移动使用的内存:内部排序,排序的数据量小,可以完全在内存中进行。外部排序,排序的数据量无法直接在内存内进行排序,而必须使用辅助存储器。排序算法的选择,通常由以下几点决定 算法是否稳定,排序过后,两个相同值的记录位置先后顺序不变,则为稳定。时间复杂度空间复杂度内部排序法简介
2017-05-30 18:29:44
443
原创 求数组中的第二大的数(不改变数组的顺序)
如果用冒泡排序对数值排序,那么算法的效率比较低。一开始我考虑的先求出数组的最大值和数组的最小值,然后再循环数组,求出数组的第二大的值,这个算法的时间复杂度是O(n)。 private static void secondArray(){ int [] aa = new int[]{66,55,33,44,77,66}; int bb = aa[0];//最大值
2017-05-29 17:19:23
1338
原创 IntelliJ IDEA 快捷键大全
————————————————实用快捷键:Ctrl+/ 或 Ctrl+Shift+/ 注释(// 或者/…/ ) Ctrl+D 复制行 Ctrl+X 删除行 快速修复 alt+enter (modify/cast) 代码提示 alt+/ ctr+G 定位某一行 Shift+F6 重构-重命名 Ctrl+R 替换文本 Ctrl+F 查找文本 Ctrl+E 最近打开的文件 Ctrl
2017-05-26 23:40:45
474
原创 java图解数据结构--树状结构
定义书可用来描述有分支的结构,属于一种阶层性的==非线性结构==,是由一个或一个以上的节点所组成的有限集合。 1. 存在一个特殊的节点,称为树根(root). 2. 其余的节点分为n>=0 个互斥的集合,T1,T2,T…Tn,且每个集合称为子树。树的相关名词度(degree):子树的个数为该节点的度。终端节点或叶子节点:没有子节点的节点,即度为0的节点。非终端节点:叶子以外的节点均为非终端
2017-05-22 22:25:05
2814
原创 Idea快捷键
废话少说,常用idea命令大全呈上双击shift 在项目的所有目录查找,就是你想看到你不想看到的和你没想过你能看到的都给你找出来ctrl+f 当前文件查找特定内容ctrl+shift+f 当前项目查找包含特定内容的文件ctrl+n 查找类ctrl+shift+n 查找文件ctrl+e 最近的文件alt+F7 可以帮你找到你的函数或者变量或者类的所有引用到的地方shif
2017-05-18 21:51:08
378
原创 dubbo提供方与消费方的三种连接方式
1、采用zookeeper作为注册中心<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.a
2017-05-14 11:53:27
7735
转载 socket与http的区别
1、TCP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。建立起一个TCP连接需要经过“三次握手”: 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(
2017-05-14 00:36:46
430
转载 OSI七层模型详解
http://blog.youkuaiyun.com/xw20084898/article/details/39438783 有时间再整理
2017-05-14 00:31:13
414
原创 JVM内存详解Java数据的存储(思维导图整理)
文字 详解http://blog.youkuaiyun.com/aaa1117a8w5s6d/article/details/8251456
2017-05-11 23:51:39
1635
原创 Java设计模式之单类模式
简介 单例类模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常常被设计成单例。选择单例模式是为了避免不一致状态。 有如下特点: 1. 单例模式只能有一个实类。 2. 单例类必须自己创建自己的唯一实例。 3. 单例类必须给其他对象提供这一实例。懒汉式单例package c
2017-05-09 23:00:47
377
原创 Java的代理(Proxy)-静态代理和动态代理
代理的定义 代理模式(Proxy Pattern)是对象的结构型模式,代理模式给某一个对象提供了一个代理对象,并由代理对象控制对原对象的引用;代理模式不会改变原来的接口和行为,只是转由代理干某件事,代理可以控制原来的目标。 Java的动态代理是Java的一大特性,动态代理的优势就是实现无侵入式的代码扩展。应用涉及Spring中的AOP,Struts2中的拦截器等。静态代理现在有接口bossS
2017-05-08 01:11:43
448
1
原创 java构造和解析json-使用jsonlib
介绍 JSON-lib包是一个beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json数据,在其官网http://www.json.org/上有详细讲解,有兴趣的可以去研究。基本方法介绍List集合转换成json方法 List list = new ArrayList(); list.add( "first" );
2017-05-08 00:12:12
409
原创 Java构造和解析Json数据-fastjson
阿里巴巴fastjson介绍1.maven引用 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.39</version> <scope>compile</scope> </dependenc
2017-05-07 23:58:54
1855
原创 UML建模之时序图学习
简介 通过描述对象之间发送消息的时间顺序,显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,时序图中的每条消息对应了一个类操作或状态机中引起转换的触发事件。 时序图包含以下几大元素:角色,对象,生命线,控制焦点,消息。 1. 角色 系统角色,可以是人,或者其他系统,子系统 2. 对象(object) 对象代表时序图中的对象在交互中所扮演的的角色,
2017-05-06 19:24:12
736
原创 ki4so单点登陆系统
码云地址> https://git.oschina.net/ywbrj042/ki4so简介 ki4so是一个简约、无状态、易扩展、易伸缩的适合于大型互联网web应用场景的单点登陆系统。它功能简单,只实现了统一登录和登出,它最大的特点是将用户的状态写入到cookies中,最大程度减少单点登陆服务器的状态,服务端只需要存储公共的的应用钥匙,将用户凭证的认证分散到各应用服务中,最大程度减少了ki4so
2017-05-06 18:17:45
1007
原创 nginx基本命令
nginx 服务器重启命令,关闭 nginx -s reload :修改配置后重新加载生效 nginx -s reopen :重新打开日志文件 nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确关闭nginx: nginx -s stop :快速停止nginx quit :完整有序的停止nginx其他的停止nginx 方
2017-05-04 21:16:23
737
原创 好用的java图形验证码
工具類validateCodepackage com.jd.jr.faecms.common.validateCode; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.FileOutputStream; import java.
2017-05-04 16:24:14
7831
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人