- 博客(82)
- 资源 (1)
- 收藏
- 关注
转载 ReentrantLock实现原理及源码分析
ReentrantLock实现原理及源码分析 ReentrantLock是Java并发包中提供的一个可重入的互斥锁。ReentrantLock和synchronized在基本用法,行为语义上都是类似的,同样都具有可重入性。只不过相比原生的Synchronized,ReentrantLock增加了一些高级的扩展功能,比如它可以实现公平锁,同时也可以绑定多个Condito...
2019-01-02 15:40:16
282
转载 CopyOnWriteArrayList实现原理及源码分析
CopyOnWriteArrayList实现原理及源码分析 CopyOnWriteArrayList是Java并发包中提供的一个并发容器,它是个线程安全且读操作无锁的ArrayList,写操作则通过创建底层数组的新副本来实现,是一种读写分离的并发策略,我们也可以称这种容器为"写时复制器",Java并发包中类似的容器还有CopyOnWriteSet。本文会对CopyOnWriteA...
2019-01-02 15:07:40
460
原创 Android API总结小结
Android开发中遇到的一些好用的小技巧,或者一些实用的API,在此记录下来: 正文: 1、DateUtils.formatDateTime():用来进行区域格式化工作,输出格式化和本地化的时间或者日期. 2、AlarmManager.setInexactRepeating):通过闹铃分组的方式省电,即使你只调用了一个闹钟,这也是一个好的选择,(可以确保在使用完毕时自动调用 AlarmMa...
2018-12-13 10:14:20
363
原创 Android如何让EditText不自动获取焦点
Android中,使用EditText作为输入框很方便,但是有时候EditText会自动获取焦点,其行为:点击进入这个页面后,EditText自动获取焦点,导致软键盘直接跳出.有时候这么做很方便,但是大部分时候我们还是希望在点击EditText的时候,软键盘才弹出来. 这里有个很简单也很实用的技巧,即在EditText的父Layout中,加入下面的两个属性即可: android:focusa...
2018-12-13 09:37:30
1366
转载 Android 应用启动优化:一种 DelayLoad 的实现和原理
Android 应用启动优化:一种 DelayLoad 的实现和原理 在 Android 开发中,应用启动速度是一个非常重要的点,应用启动优化也是一个非常重要的过程.对于应用启动优化,其实核心思想就是在启动过程中少做事情,具体实践的时候无非就是下面几种: 异步加载 延时加载 懒加载 不用一一去解释,做过启动优化的估计都使用过,本篇文章将详细讲...
2018-12-12 17:58:06
226
转载 Android基础知识- 为什么是 60 fps
我们先来理一下基本的概念: 60 fps 的意思是说,画面每秒更新60次 这60次更新,是要均匀更新的,不是说一会快,一会慢,那样视觉上也会觉得不流畅 每秒60次,也就是 1/60 ~= 16.67 ms 要更新一次 在理解了上面的基本概念之后,我们再回到 Android 这边,为何 Android 现在的渲染机制,是使用 60 fps 作为标准呢?这主要和屏幕的刷新率有关。 基本概念 ...
2018-12-12 17:22:16
2550
转载 Android 获取 View 宽高的常用正确方式,避免为零
相信有很多朋友都有过在 Activity 中通过 getWidth() 之类的方法获取 View 的宽高值,可能在 onCreate() 生命周期方法中,也可能在 onResume() 生命周期方法中。然而,不幸的是,并不能获取所要的结果,宽高值均为 0。 如果对 View 的绘制显示流程熟悉的话,就会知道问题所在。我们知道,在自定义 View 时,通常都要重写 onMeasure、onLayo...
2018-12-12 17:11:26
493
原创 Activity 的 onNewIntent方法的调用可
Activity 的 onNewIntent方法的调用 在该Activity的实例已经存在于Task和Back stack中(或者通俗的说可以通过按返回键返回到该Activity )时,当使用intent来再次启动该Activity的时候,如果此次启动不创建该Activity的新实例,则系统会调用原有实例的onNewInten...
2018-11-14 10:19:10
263
原创 Web 前端性能优化 -浏览器访问优化
浏览器访问优化1.减少http请求 HTTP协议是无状态的应用层协议,意味着每次HTTP请求都需要建立通信链路、进行数据传输,而在服务器端,每个HTP都需要启动独立的线程去处理。这些通信和服务的开销都很昂贵,减咸少HTTP请求的数目可有效提高访问性能。 减少HTTP的主要手段是合并CSS、合并 Javascript、合并图片。将...
2018-05-15 20:52:57
233
原创 策略模式
策略模式定义:定义一组算法,将每个算法都封装起来,并且使他们之间可以互换。类型:行为类模式 策略模式是对算法的封装,把一系列的算法分别封装到对应的类中,并且这些类实现相同的接口,相互之间可以替换。在前面说过的行为类模式中,有一种模式也是关注对算法的封装——模版方法模式。 ...
2018-04-22 12:29:53
140
原创 适配器模式
适配器模式定义:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 角色:目标(Target)角色:这就是所期待得到的接口,也就是这类的接口是符合我们要求的。 源(Adapee)角色:我们要使用的接口,但是这个接口不符合我们的要求,也就是现在需要适配的接口。 适...
2018-04-22 11:56:20
160
原创 建造者模式
建造者模式定义: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。生成器模式利用一个导演者对象和具体建造者对象一个一个地建造出所有的零件,从而建造出完整的对象。四个要素: Builder:生成器接口,定义创建一个Pro...
2018-04-22 11:53:47
146
原创 单例模式
单例模式定义: 单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。特点: 1、单例类只能有一个实例。 2、单例类必须自己自己创建自己的唯一实例。 3、单例类必须给所有其他...
2018-04-22 11:45:34
152
原创 java基础知识
java基础知识1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。2、Java有没有goto? java中的保留字,现在没有在java中使用。3、...
2018-04-22 11:27:32
206
原创 Dubbo入门实战
Dubbo是什么?Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。Dubbo[]是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。其核心部分包含:远程通讯集群容错自动发现:Spring集成Dubbo采用全Spring配置方式,透明化接入应用...
2018-03-01 10:48:57
187
转载 Spring 中bean的生命周期
Spring框架中,一旦把一个Bean纳入Spring IOC容器之中,这个Bean的生命周期就会交由容器进行管理,一般担当管理角色的是BeanFactory或者ApplicationContext,认识一下Bean的生命周期活动,对更好的利用它有很大的帮助:下面以BeanFactory为例,说明一个Bean的生命周期活动Bean的建立, 由BeanFactory读取Bean定义文件,并生成各个实...
2018-02-28 14:56:16
549
转载 Spring中ApplicationContext和beanfactory区别
BeanFacotry是spring中比较原始的Factory。如XMLBeanFactory就是一种典型的BeanFactory。原始的BeanFactory无法支持spring的许多插件,如AOP功能、Web应用等。 ApplicationContext接口,它由BeanFactory接口派生而来,因而提供BeanFactory所有的功能。ApplicationContext以一种更向面向...
2018-02-28 14:38:11
170
转载 spring boot实战(第一篇)第一个案例
spring boot 博客内容规划spring boot 基本用法自动配置技术集成性能监控源码解析spring boot 功能强大,后面会细细道来。第一个案例工程的构建构建spring boot工程一般采用两种方式 gradle 、maven;相对于maven的pom配置gradle 更加简单,有兴趣的同学可以去学习下gradle,这里采用maven。创建一个maven工程,对应的pom.xml...
2018-02-11 20:58:43
615
原创 Java 中CountDownLatch、CyclicBarrier、Semaphore比较
Java 中CountDownLatch、CyclicBarrier、Semaphore比较 jdk1.5之后,java的concurrent包提供了一些并发工具类,比如CountDownLatch和CyclicBarrier,Semaphore。这里简要的比较一下他们的共同之处与区别,同时介绍一下他们的使用场景。 CountDownLatch:一个线程A或是组线程A等待其它线程执行完毕后,
2018-02-07 12:33:52
502
转载 MyBatis的Mapper接口以及Example使用
MyBatis的Mapper接口以及Example使用 一、mapper接口中的方法解析 mapper接口中的函数及方法 方法 功能说明 int countByExample(UserExample example) thorws SQLException 按条件计数 int deleteByPrimaryKey(Integer
2018-02-06 12:51:03
307
原创 Java finally语句到底是在return之前还是之后执行?
Java finally语句到底是在return之前还是之后执行? 一直对finally的执行问题一头雾水,网上的博客也是人云亦云,今天自己做了了小实验,得出了以下结论: finally语句是在try的return语句执行之后,return返回之前执行。 1. finally语句在return语句执行之后return返回之前执行的。 public static int
2018-02-04 20:43:44
283
原创 Java 8 Lambda 表达式&Stream
Java 8 Lambda 表达式 Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。 Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。 使用 Lambda 表达式可以使代码变的更加简洁紧凑。 语法 lambda 表达式的语法格式如下: (parameters) -> expression
2018-02-02 21:37:40
212
原创 Java8新特性
Java8新特性 Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。 Java8 新增了非常多的特性,但总结下无非以下几个: Lambda 表达式 − Lambd
2018-02-02 21:08:50
469
原创 Memcache 与 Redis 的区别
Memcache 与 Redis 的区别 Memcache 与 Redis 都是比较流行的服务端缓存技术 ,最近在使用过程中对他们进行了简单的比较。 Memcache 与 Redis 的区别 : (1)、存储方式不同,Memcache 是把数据全部存在内存中,数据不能超过内存的大小,断电后数据库会挂掉。 Redis 有部分存在硬盘上,这样能保证数据的持久性。
2018-02-01 21:21:21
179
原创 Redis 的简介
Redis 的简介 Redis 是由意大利人 Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis 全称为:Remote Dictionary Server(远程数据服务),该软件使用 C 语言编写,典型的 NoSQL 数据库服务器,Redis 是一个 key-value 存储系统,它支持丰富的数据类型
2018-02-01 21:16:36
370
原创 Spring 通知
Spring 通知 通知是个在方法执行前或执行后要做的动作,实际上是程序执行时要通过 SpringAOP 框架触发的代码段。Spring 切面可以应用五种类型的通知: 1)before:前置通知,在一个方法执行前被调用。 2)after: 在方法执行之后调用的通知,无论方法执行是否成功。 3)after-returning: 仅当方法成功完成后执行的通知。
2018-02-01 21:09:02
209
原创 对 Spring 的理解
对 Spring 的理解 Spring 是一个开源框架,为简化企业级应用开发而生。Spring可以使用简单的 JavaBean 实现以前只有 EJB才能实现的功能。Spring是一个 IOC 和AOP 容器框架。 Spring 容器的主要核心是: 控制反转(IOC),传统的java 开发模式中,当需要一个对象时,我们会自己使用new 或者 getInstance等直接或者
2018-02-01 21:02:13
246
原创 SpringMVC 的工作原理
SpringMVC的工作原理 学习Springmvc已经有一段时间,但是对其运行原理一直模棱两可,晚上趁有时间看了几篇博客,顺着源码捋了一遍,记录一下,已备复习。 a. 用户向服务器发送请求,请求被springMVC前端控制器 DispatchServlet捕获; b. DispatcherServle对请求 URL 进行解析,得到请求资源标识符(URL),然后根据该URL 调
2018-02-01 20:57:50
152
原创 Mysql 中四种隔离级别
Mysql 中四种隔离级别 Mysql 中四种隔离级别分别是读未提交、读已提交、可重复读、串行化。 读未提交(READ UNCOMMITTED):未提交读隔离级别也叫读脏,就是事务可以读取其它事务未提交的数据。例如:如果一个事务中对数据进行了更新,但事务还没有提交,另一个事务可以“看到”该事务没有提交的更新结果,这样造成的问题就是,如果第一个事务回滚,那么,第二个事务在此之前所“看
2018-02-01 20:47:20
300
原创 事务的四大特征
事务的四大特征 数据库事务 transanction 正确执行的四个基本要素。ACID,原子性(Atomicity)、一致性(Correspondence)、隔离性(Isolation)、持久性(Durability)。 (1)原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状
2018-02-01 20:37:17
491
原创 Mysql 性能优化
Mysql 性能优化 1、当只要一行数据时使用 limit 1 查询时如果已知会得到一条数据,这种情况下加上 limit 1 会增加性能。因为 mysql 数据库引擎会在找到一条结果停止搜索,而不是继续查询下一条是否符合标准直到所有记录查询完毕。 2、选择正确的数据库引擎 Mysql 中有两个引擎 MyISAM 和
2018-02-01 20:34:26
445
原创 对 ajax 的记录
对 ajax 的理解 Ajax 是一种创建交互式网页应用的的网页开发技术;Asynchronous JavaScript and XML”的缩写。 Ajax的优势: 通过异步模式,提升了用户体验。优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用。 Ajax引擎在客户端运行,承担了一部分本来由服务器承担的工
2018-02-01 20:29:13
173
原创 memcached 使用 (下)
memcached 使用 (下) 内存的碎片化 如果用 c语言直接malloc,free来向操作系统申请和释放内存时,在不断的申请和释放过程中,形成了一些很小的内存片断,无法再利用.这种空闲,但无法利用内存的现象,---称为内存的碎片化. slab allocator缓解内存碎片化 memcached用slab allocator机制来管理内存. sl
2018-01-30 22:47:26
202
原创 memcached 使用 (上)
memcached 使用 (上) memcached是一个高性能,分布式的内存对象缓存系统。由livejounal旗下的danga公司开发的老牌nosql应用. memcached的连接 memcached客户端与服务器端的通信比较简单,使用的基于文本的协议,而不是二进制协议.(http协议也是这样),
2018-01-30 22:38:04
136
原创 ImageView中XML属性src和background的区别
ImageView中XML属性src和background的区别 background会根据ImageView组件给定的长宽进行拉伸,而src就存放的是原图的大小,不会进行拉伸。src是图片内容(前景),bg是背景,可以同时使用。 此外:scaleType只对src起作用;bg可设置透明度,比如在ImageButton中就可以用Android:scaleType控制图片的缩放方式
2017-05-25 22:36:56
300
原创 Picasso
Picasso picasso是Square公司开源的一个Android图形缓存库,可以实现图片下载和缓存功能。Picasso不仅实现了图片异步加载的功能,还解决了android中加载图片时需要解决的一些常见问题: 1.在adapter中需要取消已经不在视野范围的ImageView图片资源的加载,否则会导致图片错位,Picasso已经解决了这个问题。 2.使用复杂的图片压
2017-05-25 22:34:59
340
原创 Android OKHttp
Android OKHttp OkHttp 会从很多常用的连接问题中自动恢复。如果您的服务器配置了多个IP地址,当第一个IP连接失败的时候,OkHttp会自动尝试下一个IP。OkHttp还处理了代理服务器问题和SSL握手失败问题。使用 OkHttp 无需重写您程序中的网络代码。OkHttp实现了几乎和java.net.HttpURLConnection一样的API。如果你用了 Apa
2017-05-25 22:25:45
327
原创 Fastjson
Fastjson Fastjson是一个Java语言编写的高性能功能完善的JSON库。fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson。并且还超越了google的二进制协议protocolbuf。Fastjson完全支持http://json.org的标准,也是官方网站收录的参考实现之一。支持各种JDK类型。包括基本类型、Ja
2017-05-25 19:44:52
316
原创 EventBus
EventBus EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。 EventBus3.0简单实用分为简单的五个步骤。 1、选择EventBus的版本并进行相关配置。 2、创建Ev
2017-05-25 19:37:10
337
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人