自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 Android ConstraintLayout 降低布局层次,布局优化首选

目录介绍 ConstraintLayout的优点 ConstraintLayout使用方法 Relative positioning(相对定位) Margins(边距) Centering positioning(居中偏移) Circular positioning(圆心偏移) Visibility behavior(隐藏行为) Dimension constraints(尺寸约束) Chains(链) Virtual Helpers objects(辅助工具)..

2020-05-24 17:07:27 1716

原创 ReactNative学习小结

第一章 ReactNative一. react-native简介React Native (简称RN)是Facebook于2015年4月开源的跨平台移动应用开发框架,是Facebook早先开源的UI框架 React 在原生移动应用平台的衍生产物,目前支持iOS和安卓两大平台。RN使用Javascript语言,类似于HTML的JSX,以及CSS来开发移动应用,因此熟悉Web前端开发的技术人员

2017-03-24 18:42:14 608

原创 SpringMVC和Springboot的区别

SpringMvc是一个基于Servlet的一个MVC框架,SpringMVC 是spring的一个模块,他们都基于IOC(控制翻转)和AOP(切面使用动态代理)的编程来减少代码的耦合度,IOC就是把对象的管理交给spring容器来管理减少代码之前的耦合度,在代码运行的时候spring通过反射的方式动态创建实例对象。AOP面向切面的编程:1. Aspect(切面)通常是一个类里面可以定义切入点和通知。2.JoinPoint(连接点)程序执行中明确的点,一般是方法调用。3.Advice(通知)方法的增强处理

2020-10-12 11:57:27 533

原创 SpringMVC架构总结

SpringMVC架构流程图第一步:用户发起request请求,请求至DispatcherServlet前端控制器第二步:DispatcherServlet前端控制器请求HandlerMapping处理器映射器查找Handler DispatcherServlet:前端控制器,相当于中央调度器,各各组件都和前端控制器进行交互,降低了各各组件之间耦合度。第三步:HandlerMapping处理器映射器,根据url及一些配置规则(xml配置、注解配置)查找Handl...

2020-09-30 12:08:49 136

原创 Redis 持久化总结

一、Redis提供了哪些持久化机制: 1). RDB持久化: 该机制是指在指定的时间间隔内将内存中的数据集快照写入磁盘。 2). AOF持久化: 该机制将以日志的形式记录服务器所处理的每一个写操作,在Redis服务器启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的。 3). 无持久化: 我们可以通过配置的方式禁用Redis服务器的持久化功能,这样我们就可以将Redis视为一个功能加强版的memcached了。 4). ...

2020-09-29 19:12:48 143

原创 Java 数据库优化之索引优化

索引是数据库优化中最常见也 最重要的手段之一,通过索引通常可以帮助用户解决大多数的SQL性能问题。索引的创建:create index ind_company_name on company(name(4))其中company表明ind_company_name 索引名看下我们数据库下面有多少数据库啊show databases;use test;键一个表和创建主键索引;CREATE TABLE t1( id INT UNSIGNED AUTO_INCREMENT .

2020-09-29 14:29:30 350

原创 HTTP,HTTP1.1,HTTPS 的区别

HTTP:http 1.0要指定keep-alive来开启持久连接,默认是短连接,就是浏览器每次请求都要重新建立一次tcp连接,完事儿了就释放tcp连接。早 期的网页都很low,没啥东西,就一点文字,就用这个没问题。但是现在,一个网页打开之后,还要加载大量的图片、css、js,这就坑爹了, 发送多次请求。 早期,2000年之前,那个时候网页,都很low,当时你打开一个网页,就是说现场底层tcp三次握手,跟网站建立一个tcp连接,然后通过这个 tcp连接,发送一次http请..

2020-09-27 17:36:58 1842

原创 TCP三次握手和四次挥手

首先我们来回顾一下 TCP 的数据传输单元,TCP 传送的数据单元称为报文段。一个 TCP 报文段分为 TCP 首部和 TCP 数据两部分,整个 TCP 报文段都封装在 IP 数据报中的数据部分,TCP 首部长度是4的整数倍,其中有固定的20个字节,剩余的可变动的就是选项和填充「最常见的 可选字段是最长报文大小,又称为MSS(Maximum Segment Size),每个连接方通常都在通信的第一个报文段(为建立连接而设置SYN标 志为1的那个段)中指明这个选项,它表示本端所能接受的最大报文段的长度。」,2

2020-09-27 15:02:52 100

原创 Java 内存区域

Java内存区域(运行时数据区域)和内存模型(JMM)Java 内存区域和内存模型是不一样的东西,内存区域是指 Jvm 运行时将数据分区域存储,强调对内存空间的划分。而内存模型(Java Memory Model,简称 JMM )是定义了线程和主内存之间的抽象关系,即 JMM 定义了 JVM 在计算机内存(RAM)中的工作方式,如果我们要想深入了解Java并发编程,就要先理解好Java内存模型。Java运行时内存区域Java 虚拟机有自动内存管理机制,如果出现内存泄漏和溢出方面的问题,排查错

2020-09-25 15:48:28 251

原创 Java ThreadLocal小结

ThreadLocalThreadLocal是解决每个线程都有自己的变量共享,在多线程环境下,可以保证各个线程的变量互相隔离,相互独立。在线程中可以通过Threadlocal.get/set来操作访问变量。这种变量在线程生命周期内起作用,可以减少同一个线程内。多个函数或者组件之间一些公共变量的传递的复杂度。每个Thread中都一个自己ThreadLocalMap对象,ThreadLocalMap用来存储与线程有关联的hash表,内部通过封装Entry类来存储key和value。 Threa...

2020-09-24 17:05:42 69

原创 Java ThreadPoolExceutor线程池详解

线程池核心类1.在java.util.concurrent包中我们能找到线程池的定义,其中ThreadPoolExecutor是我们线程池核心类,首先看看线程池类的主要参数有哪些 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime,

2020-09-24 11:47:51 410

原创 Java Synchronized原理

synchronized底层语义原理Java 虚拟机中的同步(Synchronization)基于进入和退出管程(Monitor)对象实现, 无论是显式同步(有明确的 monitorenter 和 monitorexit 指令,即同步代码块)还是隐式同步都是如此。在 Java 语言中,同步用的最多的地方可能是被 synchronized 修饰的同步方法。同步方法 并不是由 monitorenter 和 monitorexit 指令来实现同步的,而是由方法调用指令读取运行时常量池中方法的 ACC_SYNC

2020-09-22 19:25:16 571

原创 Java同步锁Synchronzied和Lock的区别

同步锁 java内置同步锁,每个java对象都可以用作同步锁,这些锁成为内置锁。线程进入同步代码块或方法的时候会自动获得该锁,在退出同步代码块或方法时会释放该锁。获取锁的唯一途径就是进入同步方法和同步代码块。java同步锁是一个互斥锁,只能有一个线程获取该锁,当线程A要获取B线程持有的对象锁的时候,只能在等待队列中等待,当B代码执行完毕释放锁,A才能获取该锁。如果B线程不释放锁,A线程会一直等待。synchronzied和lock的区别1.synchronzied是java内置的关键字..

2020-09-22 15:49:37 448

原创 Android LeakCanary原理总结

一.ActivityRefWatcher用于监控Activity的内存泄漏; 1.通过Applicaton.registerActivityLifecycleCallbacks().ActivityLifecycleCallbacks监听Activity的生命周期onActivityDestroy(); 调用RefWatcher.watch()通知LeakCanary该Activity销毁了 2.随机产生一个key标识已经产生内存泄漏的对象 3.创建KeyedWeakRefer...

2020-09-18 16:55:54 312

原创 Android Activity启动流程详解

好读书不求甚解!1. (Activity类)startActivity()-->Actvity.startActivityForResult()2. (Instrumentation类).execStartActivity()3. (ActivityManager类) .startActivity()4. (ActivityManagerService类) .startActivity()->startActivityAsUser()5. (Activ...

2020-09-18 11:21:49 364

原创 Java 动态代理小结

好读书不求甚解一.动态代理 动态代理:在运行时生成代理类的方式称为动态代理 应用场景:给某一个类增加权限,日志,或者额外功能扩展等 优点:解耦,灵活,扩展性强 1. 动态代理实现步骤 a. 定义接口 b. 实现InvocationHandler c. 接口 object=Proxy.newInstance() d. object.方法()--->InvocationHandler->invoke()...

2020-09-17 11:36:52 76

原创 Java APT简单理解

好读书不求甚解!1.什么是APT Apt编译时注解-是javac的一个工具,中文名字注解处理器。APT可以用来在编译期间扫描和处理注解。通过APT可以获取注解和备注解的相关信息,通过这些信息 动态的生成代码省去手动编写。反射是在运行时处理注解,相比反射APT效率更高。APT的核心类的是AbstractProcessor2.用到的APT的框架 ButterKnife,EventBus,Dragger2,ARouter等3.如何构建一个APT项目 APT项目至少需要2个Java lib...

2020-09-16 16:33:16 1578 1

原创 Binder机制心得

Binder机制由三部分组成,即:1.Client;2.Server;3.ServiceManager。三部分组件之间的关系:1.Client、Server、ServiceManager均在用户空间中实现,而Binder驱动程序则是在内核空间中实现的;2.在Binder通信中,Server进程先注册一些Service到ServiceManager中,ServiceManager负责管理这些Service并向Client提供相关的接口;3.Client进程要和某一个具体的Service通信,必须

2020-09-16 11:32:14 103

原创 Android studio 升级后项目出错

升级完android studio运行项目出现以下错误Default interface methods are only supported starting with Android N (--min-api 24): void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)解决方法在app build.gradle文件里加入compileOptions {

2020-07-07 15:06:30 316

原创 android架构师技能图谱

Android 架构师技能图谱架构与设计设计模式重构技术选型特性可用性性能包大小方法数文档技术支持UI架构模式MVCMVPMVVM研发工具集成开发环境Android StudioSublime Text版本控制系统svngitgitlabgithubmercurial调试工具ADBDDMSSteth

2017-09-11 17:00:24 5709

转载 数据结构-时间复杂度

/** * 计算时间复杂度 *  * @author ray *  */public class Test {private void test1(int n) {System.out.println(n);// 操作=1}private void test2(int n) {int a = 0;for (int i = 0; i

2016-05-16 10:59:19 500

转载 git 解决版本冲突

摘要由于本人刚开是用git,命令不是很熟,遇到问题不知道怎么解决,第一遇到的问题就是版本冲突,然后通过查资料,看到网上有人提供的解决方案,看这不错,就搬了过来,希望加深下自己对此问题的理解。描述是这样的,最近在和别人一起做项目的时候,伙伴在上传他的代码时,因为上传速度比较慢,他以为是卡机了,所以关掉git bash,重新上传,重复了几次,最后导致Github上面的代码乱码,

2016-05-12 10:47:31 5316

转载 Java关键字static

第一次弄博客,虽然是不是自己写的,但愿开个好头

2016-05-05 10:48:05 257

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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