自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)

原创 如何不通过调用官方微博api制作一个第三方微博app---在Android开发模拟登陆微博(weibo.cn)

  前段时间对一个第三方微博app---Share的实现原理非常感兴趣,也想自己实现一个自己的第三方微博app。目标有了,那就去查一下微博数据怎么获取吧。原来微博是有开放第三方接口的,只需要申请一个appkey,在Android开发中直接使用微博提供的SDK即可。非常方便,可是。。。这种方便是有代价的,对于一些只是想调用接口玩玩的同学,微博并不会提供大量的微博api调用次数,每天大概只能刷个100...

2018-05-21 14:55:38 2129

原创 kafka技术内幕读书笔记(七):控制器

Kafka 的控制器除了分区的分配、分区的选举,还有下面这些工作。1.代理节点启动或下线时,处理代理节点的故障转移。2.新创建或删除主题,或新增加分区时,处理分区的重新分配。3.管理所有分区的状态机和副本的状态机, 处理状态机的变化事件。控制器选举:Kafka利用了ZK 的领导选举机制,每个代理节点都会参与竞选主控制器,但只有一个代理节点可以成为主控制器,其他代理节点只有在主控制器出...

2018-09-10 11:06:25 178

原创 kafka技术内幕读书笔记(六):存储层

前言:Kafka是一个分布式的( distributed )、分区的( partitioned )、复制的( replicated )提交日志( commitlog )服务。“分布式”是所有分布式系统的特性;“分区”指消息会按照分区分布在集群的所有节点上;“复制”指每个分区都会有多个剧本存储在不同的节点上;“提交日志”指新的消息总是以追加的方式进行存储。日志的读写:分区的每个副本存储在不...

2018-09-10 01:00:49 152

原创 kafka技术内幕读书笔记(五):延迟操作

延迟的加入组操作:协调者处理不同消费者的“加入组请求”,由于不能立即返回“加入组响应”给每个消费者,它会创建一个“延迟操作”,表示协调者会延迟发送“加入组响应”给消费者。但协调者不会为每个消费者的“ 加入组请求”都创建一个“ 延迟操作”,而是仅当消费组状态从“稳定”转变为“准备再平衡”,才创建一个“延迟操作”对象。为了保证只创建一个“延迟操作” , 只有消费组的状态为“稳定”时才可以创建“延...

2018-09-09 23:02:00 2023

原创 kafka技术内幕读书笔记(四):消费组协调者

书接上回,实际上,消费者提交偏移量如果存储在ZK 中,也是用消费组级别来表示。存储在ZK 中天生就具有共享存储的优势,所有的消费者只需要连接ZK 即可。而以主题方式存储偏移量时,就得考虑是否需要连接多个服务端节点。每个消费组只连接一个节点是最好的,这个节点负责管理一个消费组所有消费者所有分区的偏移量, 叫作偏移量管理器( OffsetManager)。和采用ZK方式将偏移量数据写到ZK不同,消费者...

2018-09-08 14:12:54 572

原创 kafka技术内幕读书笔记(三):消费者

使用消费组实现消息队列的两种模式:作为分布式的消息系统, Kafka支持多个生产者和多个消费者,生产者可以将消息发布到集群中不同节点的不同分区上;消费者也可以消费集群中多个节点的多个分区上的消息。写消息时,多个生产者可以写到同一个分区。读消息时,如果多个消费者同时读取一个分区,为了保证将日志文件的不同数据分配给不同的消费者,需要采用加锁、同步等方式,在分区级别的日志文件上做些控制。相反,如...

2018-09-08 12:10:09 316

原创 kafka技术内幕读书笔记(二):生产者

前言:消息系统通常由生产者( producer ) 、消费者( consumer )和消息代理( broker ) 三大部分组成,生产者会将消息写入消息代理,消费者会从消息代理中读取消息。对于消息代理而育,生产者和消费者都属于客户端:生产者和消费者会发送客户端请求给服务端,服务端的处理分别是存储消息和获取消息,最后服务端返回响应结果给客户端。客户端和服务端的通信涉及网络中不同的节点,客户端...

2018-09-08 09:47:53 186

原创 kafka技术内幕读书笔记(一):kafka基本概念

前言:消息队列技术广泛用于异步处理,应用解耦,流量削峰,日志处理等场景,对于一个热爱技术的程序员来说怎么能不去学习这一酷炫的技术呢?而为什么要选取kafka来进行学习?我认为kafka的中文学习资料是比较多的,而且kafka的国内开发者以及使用者比较多,最后是kafka是比较“重”的消息队列,我相信能把kafka搞定,其他的消息队列那也不成问题了!kafka基本概念:分区模型:Ka...

2018-09-08 09:07:56 443

原创 可伸缩服务架构:框架与中间件读书笔记:dubbo实现原理

前言:在很久之前就对rpc(远程过程调用)框架非常感兴趣,然后主动去学习了阿里开源框架dubbo,最近阿里也是重启了dubbo的更新,dubbo又重新散发出活力。当然学习首先是看dubbo官方文档,官方文档有非常详细的功能说明以及使用方法,对于使用dubbo的开发者已经足够了。最近在实习的公司中也有使用到dubbo来编写接口,我辛辛苦苦学习的dubbo框架终于有了用武之地。但我觉得还不够,...

2018-08-25 23:57:15 935

原创 为什么最好的单例模式是枚举单例?

前言:单例模式是最常见的设计模式了,无论在面试还是真正的工作时也会大量遇到单例模式,单例模式有懒汉饿汉,双重检查锁,静态内部类等等的实现方式,但在Effective Java一书中推荐使用枚举来实现单例模式,那为什么要使用枚举类来实现单例模式呢?枚举单例模式代码:public enum Singleton { INSTANCE; public void wha...

2018-08-25 22:03:41 1770

原创 java Serializable时两个类同名内部却不一样会发生什么问题?

1.serialVersionUID不一样时,产生InviladClassException错误。2.serialVersionUID一样时,内部的变量类型与变量名一致,但有变量缺漏,比如A类有int a,int b,B类只有int a,这种情况序列化不会报错,缺漏的字段会有默认值,int为0,对象引用为null。3.serialVersionUID一样时,内部的变量类型与变量名不一致,比...

2018-08-18 12:23:11 521

原创 Mybatis技术内幕读书笔记(七)MappedStatement的解析

  总结:MappedStatement包含了id,sqlSource和sqltype,SqlSource包含了一个dynamiccontext和sqlnode,dynamiccontext里面有sqlbuilder,然后mybatis根据xpath解析xm与用户参数来构建sqlnode的树状结构,sqlnode解析完成后会把解析...

2018-08-11 09:36:46 2046

原创 Mybatis技术内幕读书笔记(六)核心模块

XMLConfigBuilder.parse方法:Resultmaps完整解析如下图:未完待续

2018-08-08 19:45:58 155

原创 Mybatis技术内幕读书笔记(五)cache模块

My Batis 中缓存模块相关的代码位于cache 包下, 其中Cache 接口是缓存模块中最核心的接口,它定义了所有缓存的基本行为。Cache 接口的定义如下:PerpetualCache:PerpetualCache 在缓存模块中扮演着ConcreteComponen t 的角色,其实现比较简单,底层使用HashMap 记录缓存项,也是通过该HashMap 对象的方法实现的C...

2018-08-08 19:04:39 81

原创 Mybatis技术内幕读书笔记(四)binding模块(动态代理Mapper)

前言:在iBatis ( MyBatis 的前身)中,查询一个Blog 对象时需要调用SqlSession.queryForObject(”selectBlog ” ,blogld )方法。其中, SqlSession . queryForObject ()方法会执行指定的SQL 语句进行查询井返回一个结果对象, 第一个参数“ selectBlog"指明了具体执行的SQL 语句的id ,该SQ...

2018-08-08 16:35:28 122

原创 Mybatis技术内幕读书笔记(三)Mybatis的连接池原理(PooledDataSource)

前言:  了解JDBC 编程的读者知道,数据库连接的创建过程是非常耗时的,数据库能够建立的连接数也非常有限,所以在绝大多数系统中,数据库连接是非常珍贵的资源,使用数据库连接池就显得尤为必要。使用数据库连接池会带来很多好处,例如,可以实现数据库连接的重用、提高响应速度、防止数据库连接过多造成数据库假死、避免数据库连接泄露等。数据库连接池在初始化时, 一般会创建一定数量的数据库连接并添加到连接池中...

2018-08-08 14:14:40 2002

原创 Mybatis技术内幕读书笔记(二)JDBC反射com. mysql.jdbc.Driver的原理

前言:熟悉JDBC 的读者知道,创建数据库连接之前, 需要先向DriverManager 注册JDBC 驱动类。我们以MySQL 提供的JDBC 驱动为例进行简单分析,com. mysql.jdbc.Driver中有如下静态代码块:Driver Manager 中定义了registeredDrivers 字段用于记录注册的JDBC 驱动,定义如下: 回到MyBatis 中U...

2018-08-08 13:57:44 117

原创 Mybatis技术内幕读书笔记(一)Tomcat的类加载器(Classloader)

前言:我也不知道为什么一本Mybatis的书会有Tomcat的相关内容,不过这是个知识点,需要好好记录。什么是类加载器:Java 虚拟机中的类加载器( ClassLoader )负责加载来自文件系统、网络或其他来源的类文件。Java 虚拟机中的类加载器默认使用的是双亲委派模式,其中有三种默认使用的类加载器,分别是Bootstrap ClassLoader 、Extension Clas...

2018-08-08 13:09:41 178

原创 mysql:在执行左右连接时加上and条件会发生什么?

前言:很久之前有想过在执行左右连接时加上and条件会发生什么现象?今天灵光一闪想马上做做实验来验证我自己的想法。结果如下:可以看出,and判断条件为假时,左右连接的主方都不会为null,而从方会被置为null。大功告成!...

2018-08-04 22:31:08 642

原创 java:能否通过反射获取方法的参数名字?

前言: 最近在牛客网上看到有人分享面试经验,其中有一个非常刁钻的问题:能否通过反射获取方法的参数名字?我我觉得非常奇怪,明明反射获取方法后获取参数(Parameter)中带有getName方法,怎么可能获取不到呢?后续:但在网上翻阅资料发现,原理jdk1.8之前java文件编译成class文件时并不会将参数名字也一起编译进去,而是以arg0,arg1这种模糊名字来替代。所以在j...

2018-07-31 22:11:20 4263 4

原创 说一下redis中5种数据类型的底层数据结构

前言:阅读 redis设计与实现 一书的记录。未完待续。。。redis我们都知道有5种数据类型,分别是string,list,hash,set,zset,那么你知道它们的底层数据结构实现吗?redis底层有6种数据结构,分别是简单动态字符串(SDS),链表,字典,跳跃表,整数集合,压缩列表。每种数据类型都有着2种以上的数据结构实现,在不同状态下会进行数据结构的转换。现在来看看这6种数据结构是什么吧...

2018-07-12 19:01:30 4389

原创 数据库mvcc可重复读下无法彻底解决幻读

 先看看初始表数据:使用2个cmd模拟两端,分别开启事务一端修改数据后提交成功另一端查看数据未发生更改再执行更新操作price和deposit同时更改了,产生了幻读这是由于mysql的快照读和当前读机制引起的。...

2018-06-17 10:39:52 3004 2

原创 redis在web开发的简单应用---基于spring mvc实现免重复登录demo

  前言  一直想写关于redis的博客,但redis的应用场景实在是太多了!比如秒杀,静态数据的缓存,数据库缓存,计数器,排行榜等等。。。实在是非常纠结,最近想到了可以与redis配合使用的功能----基于spring mvc的免重复登录、下面来看看是如何实现一个免登陆的demo的吧。  过程  首先先导入我们所需要的jar包,如果用maven请自行百度即可。如果已经部署好spring mvc,...

2018-06-04 21:11:02 460

原创 关于nosql----mongodb的基本使用

  作为nosql中的重要一员,mongodb基于其强大的拓展性,高性能写入读取,易分片等优势对传统的关系型数据库如mysql发起了挑战,但传统数据库还是有一定的优势,如技术成熟度,事务支持等,我认为学习数据库对nosql的了解是必不可少的,而mongodb是其入门的最好的磨刀石。  下面来使用一下基本的增删改查命令:查询所有命令:db.col.find().pretty();其实查询还有多种玩法...

2018-05-27 19:46:04 1597

原创 反向代理,负载均衡,静态资源访问----nginx的基本操作

有了Tomcat,为什么还要用nginx?其实,nginx和tomcat经常是不分家的,tomcat做动态资源的服务器,而nginx可以通过反向代理来访问后台服务器,还能通过负载均衡,负载均衡也有不同的方式,如权重,轮询,iphash等,把大量的连接请求分发给不同的tomcat服务器,还能做静态资源的访问,减轻tomcat的压力。最重要的是,nginx是俄罗斯人用c语言写的,比java不知道高到哪...

2018-05-23 21:52:54 238

原创 关于java网络编程框架--Netty的基础使用(个人总结与转载)

缘由:  在最近的一段时间中,一直没有对java网络编程有了解,只知道socket的大概却又说不清楚,但常规的socket编程已经不适合现在的开发了,于是我去了解了有什么java网络框架能减少网络编程的难度。其实有2个,Mina与Netty,热门的rpc框架dubbo的网络通信部分就是用这2者实现的(使用时选择使用其中一个)。但Netty的社区还在活跃,所以还是选择去了解了Netty框架,把《Ne...

2018-05-19 15:15:48 1868

原创 写在开篇。绕不开的java集合类---Hashmap总结。

开篇  在大学快3年了,当周围同学们都在春招找到好实习时,看到自己其实在编程方面还是太过于追求广而全,认为什么都了解一点一定是好的,而完全忽略了编程方面深度地挖掘,在大二上学期学习Java,自认为对java主流框架了解如何使用就是精通Java了,其实还是too young ,too naive!还是要提高自己的知识水平!如果当时有人能问我,Hashmap是什么,它的底层原理是什么,怎么实现的?可能...

2018-05-18 21:57:19 112

空空如也

空空如也

空空如也
提示
确定要删除当前文章?
取消 删除