- 博客(70)
- 问答 (1)
- 收藏
- 关注
原创 RocketMq事务消息
RocketMq事务消息是众多MQ中最具特点的一个功能,通过事务消息,去保证MQ上下游数据的一致性,要么同时成功,要么同时失败。以下单为例,⽤户⽀付订单这⼀核⼼操作的同时会涉及到下游物流发货、积分变更、购物⻋状态清空等多个⼦系统的变更。这种场景,⾮常适合使⽤RocketMQ的解耦功能来进⾏串联。考虑到事务的安全性,即要保证相关联的这⼏个业务⼀定是同时成功或者同时失败的。如果要将四个服务⼀起作为⼀个分布式事务来控制,可以做到,但是会⾮常麻烦。
2025-01-05 11:26:17
947
原创 DDD架构设计
DDD (Domain Driven Design) 称为领域驱动设计,是一种架构设计思想,不同于设计模式,它是针对软件整体设计,用于实现“高内聚、低耦合”,而设计模式是针对某一特定场景实现的专属设计。DDD是服务于业务的,最好能达到不同开发或者业务经理 查看主流程代码,能够一眼看懂主要做了什么。领域驱动设计(DDD)中采用的是松散分层架构,层间关系不那么严格。每层都可能使用它下面所有层的服务,而不仅仅是下一层的服务。每层都可能是半透明的,这意味着有些服务只对上一层可见,而有些服务对上面的所有层都可见。
2024-12-03 18:54:21
907
原创 MultiDatasource源码解析
Spring提供了数据源切换抽线实现--AbstractRoutingDatasource类,通过继承该类可以实现动态数据源切换。
2024-12-03 16:10:15
687
原创 ShardingSphere分布式事务
大多数场景下,我们的应用都只需要操作单一的数据库,这种情况下的事务称之为本地事务 (Local Transaction)。本地事务的ACID特性是数据库直接提供支持。本地事务应用架构如下所示:在JDBC编程中,我们通过java.sql.Connection对象来开启、关闭或者提交事务。2.分布式事务分布式事务产生原因:在微服务架构中,完成某一个业务功能可能需要横跨多个服务,操作多个数据库。这就涉及到到了分布式事务,
2024-12-03 15:40:46
1157
原创 ShardingSphere入门
建议先仔细总结⼀下这些概念。虽然这些概念在未来进⾏分库分表时不需要都实现,但是, 通过这些抽象的概念才能构建出⼀个完整的分库分表策略。2. 垂直分片和水平分片分库分表通常有两种拆分数据的维度,⼀是按照业务划分的维度,将不同的表拆分到不同的库当中。这样可以减少每个数据库的数据量以及客户端的连接数,提⾼查询效率,这种⽅案称为垂直。⼆是按照数据分布的维度,将原本存在同⼀张表当中的数据,拆分到多张⼦表当中。每个⼦表只存储⼀部分数据。这样可以减少每⼀张表的数据量,提升查询效率,这种⽅案称为⽔平。
2024-12-03 11:22:49
335
原创 ShardingSphere介绍
ShardingSphere是一款目前业内比较流行的分库分表框架,到现在为止有接近十年的开发历程了,其已经不仅仅只是⽤来做分库分表,⽽是形成了⼀个围绕分库分表核⼼的技术⽣态。他的核⼼功能已经包括了数据分⽚、分布式事务、读写分离、⾼可⽤、数据迁移、联邦查询、数据加密、影⼦库、DistSQL庞⼤的技术体系。ShardingSphere最为核⼼的产品有两个:⼀个是ShardingJDBC,这是⼀个进⾏客户端分库分表的框架。另⼀个是ShardingProxy,这是⼀个进⾏服务端分库分表的产品。
2024-12-02 21:02:25
887
转载 java8 lambda表达式详解
JDK1.8之Lambada表达式一https://blog.youkuaiyun.com/wzj_110/article/details/80201470
2019-11-27 18:51:47
234
原创 函数式编程
【前序】:在Java8中,内置了四个核心函数接口,它们存在是Lamda表达式出现的前提,Lamda表达式想重写函数式接口中的唯一方法。函数式接口与Lambda表达式之间的关系:lambda表达式相当于是一个行为,传入函数式接口中,进来实现各种操作,即行为参数化它们的接口内只有一个抽象方法,每一个函数式接口都有@FunctionalInterface注解。四种函数式接口分别为:Con...
2019-11-27 18:34:55
246
原创 javaWeb基础知识点
一.post 相比get 有很多优点,为什么现在的HTTP通信中大多数请求还是使用get?https://www.zhihu.com/question/316407691.最大的优势是, GET 的URL可以人肉手输啊。。。你在地址栏打个POST给我看看。本质上面, GET 的所有信息都在URL, 所以很方便的记录下来重复使用。另外一个准则是,可以重复的交互,比如取个数据,跳个页面, ...
2018-07-26 20:52:27
1148
转载 Android手机连接到Tomcat服务器
前提:电脑和手机在同一个网段,比如电脑开wifim手机连接,或者手机电脑连接同一个wifi一:先打开Tomcat打开Tomcat可以打开安装路径下bin目录下的startup。bat文件,也可以直接在开始-所有程序-Apache Tomcat 9.0 Tomcat9下打开,成功后 start按钮为不可选定。或者http://localhost:8080/可以访问,出现即成功访问...
2018-07-18 17:00:40
1011
转载 代理模式
原文链接:https://blog.youkuaiyun.com/leisure_life/article/details/68491528代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式分为静态代理、动态代理。静态代理是由程序员创建或工具生成代理类的...
2018-07-17 16:32:44
203
转载 java反射
原文地址:https://blog.youkuaiyun.com/sinat_38259539/article/details/71799078概述:java Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期间借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性以及方法。java反射机制提供的功能在运行时判断任意一个对象所属的...
2018-07-17 10:10:05
227
转载 哪些令人捧腹的段子
1、上完厕所正准备走,隔间传来一阵哀怨的声音:“哥们,帮帮我好吗?”我叹了口气:“不带纸就敢蹲坑,你也是蛮拼的!”他尴尬地笑了笑,说:“不是,你能不能帮我去问下这楼的wifi密码,我很努力地尝试过了,真的拉不出来!”2、“运维是怎么介绍自己的工作经历的?” “部署完以后始终没有出现过问题,然后我就被公司辞退了。”3、一个程序猿抱怨说,花了大价钱换了更快的宽带,可等女神回他消息还是要等好久。也是不知...
2018-06-30 17:33:04
1523
转载 android中style和Theme的使用区别
一.Style的使用使用style属性可以很方便的抽取一些属性,不用重复写很多相同的属性。(一)设置属性的集合1.定义<style name="TextViewStyle"> <item name="android:textColor">#000</item> <item name="android:textSize"&
2018-06-27 16:09:40
676
原创 android 自定义View之继承ViewGroup实现流式布局
主要实现效果如下:接下来讲述如何实现:通过自定义ViewGroup实现:1:onMeasure:测量view的宽高-- 在重写的onMeasure方法中,会传入2个参数,他们分别代表“宽的测量规格”,“高的测量规格”,如下所示(spec:规格)protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {测量规...
2018-06-21 21:07:28
907
转载 观察者模式
Java设计模式之观察者模式 摘要:观察者模式(ObserverPattern)。用于实时监测某些Object的动态、只要Object一改变、那么他的所有观察者Observer都会知道、之后观察者会根据Object的改变进行下一步操作。这个在SWING编程中是最常见的。那些Listener就是观察者。 一:问题的引出 要实现一个天气预报的功能、当天气的数据发生变...
2018-06-21 10:21:56
208
原创 android开发篇之自定义View
控件有很多属性,如android:id、android:layout_width、android:layout_height等,但是这些属性都是系统自带的属性。使用attrs.xml文件,可以自己定义属性。看这张要实现的自定义控件,要实现这个效果就必须使用自定义属性,将TextView的功能和圆环的功能绑定在一起!组成一个控件,代码如下所示。首先:在Value文件下定义一个attrs.xml文件&...
2018-06-17 12:07:59
522
转载 ImageView设置background和src的区别
今天开发的时候遇到一个小问题,在给一个ImageView更换图片的时候,我使用的是java的方式更换,使用的方法是setBackgroundResource(),但奇怪的是总是没有效果。 最后查明原因是:我在编写xml文件的时候,为了查看效果,给这个ImageView设置了src,这时候再设置background的时候回发生重叠。 解决方法:将xml中的src删除即可。问题延伸: 一、ImageV...
2018-06-17 09:42:52
560
转载 自定义控件之onDraw()方法使用
第二:认识CanvasCanvas类简单理解就是表示一块画布,可以在上面画我们想画的东西Canvas中的方法很多,Canvas可以绘制的对象有:弧线(arcs) canvas.填充颜色(argb和color)Bitmap圆(circle和oval)点(point)线(line)矩形(Rect)图片(Picture)圆角矩形 (RoundRect)文本(text)顶点(Vertices)路径(pat...
2018-06-15 18:54:44
4263
转载 Activity A 跳转到 Activity B,生命周期的执行过程
今天被问到ActivityA中启动ActivityB,生命周期方法的执行过程,确实在短时间内不好答出来。打开APP,进入ActivityA生命周期如下:ActivityA跳转到ActivityB生命周期如下:ActivityB按back键返回生命周期如下:ActivityA按back键返回生命周期如下:...
2018-06-12 16:24:39
2312
原创 parcelable接口实现
Parcelable接口想要在两个activity之间传递对象,那么这个对象必须序列化,android中序列化一个对象有两种方式,一种是实现Serializable接口,这个非常简单,只需要声明一下就可以了,不痛不痒。但是android中还有一种特有的序列化方法,那就是实现Parcelable接口,使用这种方式来序列化的效率要高于实现Serializable接口。不过Serializable接口实...
2018-06-12 11:28:07
1039
原创 重入锁、读写锁基础
概述:在java多线程当中,我们知道可以使用synchronized关键字来实现线程间的同步互斥工作,那么其实还有一个更加优秀的机制去完成这个“同步互斥”工作,他就是Lock对象,我们主要学习两种锁,重入锁(ReentrantLock)和读写锁(ReentrantReadWriteLock)。他们具有比synchronize更为强大的功能,并且有嗅探锁定、多路分支等功能。实现:首先最大的不同:sy...
2018-06-07 19:48:07
395
转载 Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析
今天发一篇"水文",可能很多读者都会表示不理解,不过我想把它作为并发序列文章中不可缺少的一块来介绍。本来以为花不了多少时间的,不过最终还是投入了挺多时间来完成这篇文章的。网上关于 HashMap 和 ConcurrentHashMap 的文章确实不少,不过缺斤少两的文章比较多,所以才想自己也写一篇,把细节说清楚说透,尤其像 Java8 中的 ConcurrentHashMap,大部分文章都说不清楚...
2018-06-07 09:58:02
250
原创 MotionEvent和KeyEvent机制
触屏操作的理解:最基本的操作类型:1.down:手指按下2.move:手指在屏幕上移动3.up:手指从屏幕上离开操作原理:现在流行的触屏手机的屏幕都是电容屏,它是通过人体微小电流和屏幕之间的电流交互来感知触屏的操作。...
2018-06-05 11:03:46
2678
转载 Android图片加载框架最全解析(八),带你全面了解Glide 4的用法
转载请注明出处:http://blog.youkuaiyun.com/guolin_blog/article/details/78582548本篇将是我们这个Glide系列的最后一篇文章。其实在写这个系列第一篇文章的时候,Glide就推出4.0.0的RC版了。那个时候因为我一直研究的都是Glide 3.7.0版本,再加上RC版本还不太稳定,因此整个系列也都是基于3.7.0版本来写的。而现在,Glide的最新版...
2018-06-03 11:15:53
309
转载 Android图片加载框架最全解析(五),Glide强大的图片变换功能
转载请注明出处:http://blog.youkuaiyun.com/guolin_blog/article/details/71524668本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每天都有文章更新。大家好,又到了学习Glide的时间了。前段时间由于项目开发紧张,再加上后来又生病了,所以停更了一个月,不过现在终于又可以恢复正常更新了。今天是这个系列的第五篇文章,在前面...
2018-06-03 11:00:20
430
转载 Android图片加载框架最全解析(一),Glide的基本用法
转载请注明出处:http://blog.youkuaiyun.com/guolin_blog/article/details/53759439现在Android上的图片加载框架非常成熟,从最早的老牌图片加载框架UniversalImageLoader,到后来Google推出的Volley,再到后来的新兴军Glide和Picasso,当然还有Facebook的Fresco。每一个都非常稳定,功能也都十分强大。但...
2018-06-02 15:41:39
324
转载 Context内存泄漏问题
今天看了一篇介绍Context的文章,写的不错,里面有一段内容平时开发时候没有注意到,摘抄如下: 在项目中,我们经常会遇到使用单例模式或者静态static变量,虽然使用静态类或者静态变量很方便,但是也潜在很多的内存泄漏问题。6.1静态资源导致的内存泄漏你可能遇到以下这段代码:public class MyCustomResource { //静态变量drawable private...
2018-05-28 20:26:14
2355
原创 图片的三级缓存基础
一、概述:现在android应用中不可避免的要使用图片,有些图片是可以变化的,需要每次启动时从网络拉取,这种场景在有广告位的应用以及纯图片应用(比如百度美拍)中比较多。现在有一个问题:假如每次启动的时候都从网络拉取图片的话,势必会消耗很多流量。在当前的状况下,对于非wifi用户来说,流量还是很贵的,一个很耗流量的应用,其用户数量级肯定要受到影响。当然,我想,向百度美拍这样的应用,必然也有其内部的图...
2018-05-23 21:02:40
378
转载 Android中Application的总结
前言 最近的开发中经常使用到Application类,它的用处很多,但是网上的资料有很多是旧的或者是介绍不全的,在这里全面总结一下,先介绍Application的所有方法,再介绍它的使用经验。本文基于Android6.0源码,API LEVEL 23。介绍 首先看看官网的介绍: 下面是我对Application类的理解:每个APP都有一个Application实例:如果我们没有继承Appl...
2018-05-20 15:24:00
292
转载 Android JNI编程—JNI基础
最近看到了很多关于热补的开源项目——Depoxed(阿里)、AnFix(阿里)、DynamicAPK(携程)等,它们都用到了JNI编程,并且JNI编程也贯穿了Android系统,学会JNI编程对于我们学习研究Android源码、Android安全以及Android安全加固等都是有所帮助的。但是对于我们这些写Android应用的,大部分时间都是在使用Java编程,很少使用C/C++编程,对于JNI编...
2018-05-19 10:15:35
261
转载 Java设计模式之单例模式
本文继续介绍23种设计模式系列之单例模式。概念: java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。 单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统...
2018-05-18 10:41:22
208
转载 MVP in Android
一、概述对于MVP(Model View Presenter),大多数人都能说出一二:“MVC的演化版本”,“让Model和View完全解耦”等等。本篇博文仅是为了做下记录,提出一些自己的看法,和帮助大家如何针对一个Activity页面去编写针对MVP风格的代码。对于MVP,我的内心有一个问题:为何这个模式出来后,就能被广大的Android的程序员接受呢?问了些程序员,他们对于MVP的普遍的认识是...
2018-05-17 10:29:15
207
原创 红黑树、HashMap
二叉树基础:刚看到堆排序,顺便记录一下关于树的一些基本概念:前言前面介绍的栈、队列都是线性结构(linear structure)。而树是非线性结构(non-linear structure)。因此,树中的元素之间一般不存在类似于线性结构的一对一的关系,更多地表现为多对多的关系。直观地看,它是数据元素(在树中称为节点)按分支关系组织起来的结构。显然,树形结构是比线性结构更复杂的一种数据结构类型。一...
2018-05-10 21:53:21
538
转载 数据结构常考问题总结
数据结构部分:1、数组和链表的区别。(很简单,但是很常考,记得要回答全面)C++语言中可以用数组处理一组数据类型相同的数据,但不允许动态定义数组的大小,即在使用数组之前必须确定数组的大小。而在实际应用中,用户使用数组之前无法确定数组的大小,只能够将数组定义成足够大小,这样数组的空间可能不被使用,从而造成内存空间的浪费。链表是一种常见的数据组织形式,他采用动态分配内存的形式实现。需要时可以用new分...
2018-05-09 16:25:43
1306
原创 接口回调
我们知道java中接口是不可以直接创建实例的,那么问题来了,假如我把一个接口声明为一个变量,那么我执行这个接口中的方法,接口没有实例它该怎么办呢?啊哈,这里自然又改出现java中的另一个特性---“多态”,这时java虚拟机自然会去找其子类,调用其子类中已经重载的该方法,这里就是接口回调的本质!!接口回调主要用于在程序内部进行数据的传输,程序内部数据传输也可以使用静态变量。根据不同的情形使用不同的...
2018-05-09 09:51:29
594
原创 android APP性能优化之内存优化
APP内存优化方法1.数据结构优化2.对象复用3.避免内存泄漏数据结构优化1.频繁地使用字符串拼接不要用“+”的方式,应该使用StringBuilder,“+”的方式会产生无用的中间变量,而且难以删除2.ArrayMap和SparseArray替换HashMapHashMap效率较低,内存占用较高,使用前两者能解决这种问题。HashMap中的一个entry需要额外占用32B3.内存抖动length...
2018-05-07 12:25:15
536
原创 http协议讲解
概述http全称叫做超文本传输协议(HyperTextTransferProtocol),早期是用于传输html格式的数据,后来可以用于传输多种格式的数据。我们把Http协议中的通信两方称作Client和Server(或Host),Client向Server端经过http协议发送一个Request,Server端收到Request后经过一系列的处理返回一个Response。(所以一般的网络通信像o...
2018-05-06 16:53:56
281
原创 android 自定义控件和源码视频讲解
为什么要使用自定义控件? 1.系统的某一个控件,在不同的设备效果不一样当我们想让这个控件在所有设备显示都是一样的风格的时候,就需要自定义控件解决此类问题就需要自定义控件。2.整个软件在不同设备上风格统一 同一个软件在不同设备上可能会出现不同的界面风格,为对所有控件实现统一风格就需要自定义控件例如QQ软件主页面风格大部分都是自定义的3.系统自带的控件,功能有限,增加功能;或者功能太多,减少...
2018-05-06 10:48:38
923
空空如也
AccessDecisionManager的成员变量如何完成赋值的
2019-09-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人