- 博客(149)
- 资源 (35)
- 收藏
- 关注
原创 Redis简单介绍
一 Redis简介Redis是一个开源(BSD许可)的,用C语言编写的基于内存的数据结构存储系统(是一个高性能的 key-value存储系统)。而且会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,实现数据的持久化。Redis可以用在数据库,缓存和消息中间件。Redis官网:https://redis.io/Redis中文官网:http://www.redis.cn/1.1 Redis的特点性能极高,Redis读取的速度是110000次/s,写的速度是81000次/s。丰富的数据
2021-08-20 22:02:11
467
原创 是时候来了解JDK8 HashMap的实现原理了
一 HashMap底层存储结构 HashMap底层结构采用(数组)+(链表 or 红黑树)的形式来存储节点。首先HashMap是一个数组,而且数组里面每个位置可以放入多个元素,形象一点,咱们把数组的这些个位置称为桶。HashMap里面每个元素通过key值取hash在 & (数组长度容量-1)就可以唯一确定该元素属于哪个桶。HashMap为了最大限度的提高效率,在桶的设计上也是相当的精辟。桶可能是链表也可能是红黑树。开始桶里面元素不多的时候
2020-06-26 22:28:36
1328
2
原创 nginx入门教程
nginx是什么:nginx是一个高性能的HTTP和反向代理web服务器。同时也提供了IMAP/POP3/SMTP服务。 nginx特点:开源、占内存少、轻量级、高性能(有报告表面nginx能支持高达 500000个并发连接数)、支持热部署。 在正式介绍nginx之前,我们先来介绍几个相关的名词:正向代理、反向代理、负载均衡、动静分离。正向代理
2020-05-30 23:49:26
1097
1
原创 SpringBoot之@Import注解正确使用方式
@Import注解用来帮助我们把一些需要定义为Bean的类导入到IOC容器里面。下面我们就对@Import注解的使用做一个简单的总结。一 @Import引入普通类 @Import引入普通的类可以帮助我们把普通的类定义为Bean。@Import可以添加在@SpringBootAp...
2020-05-04 12:01:51
4500
原创 JVM GC日志文件分析
JVM GC日志文件分析 GC 是垃圾回收(Garbage Collection)的缩写。两个关键名词:垃圾、回收。那何谓垃圾呢,JVM认为没有任何引用指向的对象就是垃圾对象,JVM里面判定为垃圾的算法有:应用计数法、可达性分析法。何谓回收呢,回收就是把认为是垃圾对象的内存回收回来,JVM里面的回收算法有:标记-清除算法、复制算法、标记整理算法...
2020-04-24 22:26:34
3315
1
原创 Java堆分析器 - Eclipse Memory Analyzer Tool(MAT)
Java堆(heanp dump)文件是一个纯二进制文件,咱们用肉眼去看肯定是不现实的。所以咱们得借助特定的堆分析器来对dump文件做相应的分析。这里我们选用Eclipse Memory Analyzer(MAT)来作为heap dump文件的分析工具。接下来咱们对MAT工具做一个简单的介绍。方便咱们后续分析Java堆(heap dump)&...
2020-04-11 18:02:00
3552
原创 thread dump日志文件分析
在介绍thread dump文件之前,咱们得先来了解下Java线程状态。一般来说Java线程状态有五种:新建状态(New)、就绪状态(Runnable)、运行状态(Running) 、阻塞状态(Blocked) 、死亡状态(Dead) 。新建状态(New) 用new语句创建的线程处于...
2020-03-29 00:39:53
7359
原创 JVM简单介绍
接下来咱们对JVM做一个简单的介绍,咱不一定能把JVM里面的东西都完完全全的讲明白。但还是希望大家阅读完这篇文章之后能对JVM有一个简单的认识,同时对咱们程序员熟知OOM有一个感性的认识。希望能帮助到大家。 在开始之前,咱们先来一张Java程序执行过程图: &n...
2020-03-09 20:54:17
1025
原创 Spring Boot 条件注解
SpringBoot条件注解@Conditional,可用于根据某个特定的条件来判断是否需要创建某个特定的Bean。SpringBoot自动配置功能里面就大量的使用了条件注解。接下来我们就对@Conditional的使用做一个简单的介绍。 @Conditional注解需要和Condition...
2019-11-13 21:09:17
1005
原创 Spring Boot 配置文件
一 配置文件类型 Spring Boot默认支持properties和yml两种格式的配置文件。yml格式是天然的树状接口,相对于properties,yml更加的一目了然。这也是我们推荐的配置文件格式。properties 格式举例server.port=8090server.session-timeout=30server.to...
2019-11-09 23:23:56
366
原创 Spring Boot 自动配置理解与实践
一 自动配置理解 Spring Boot提倡通过注解(annotation)来进行Bean的配置。最终达到零配置,开箱即用的效果。我们可以简单的认为Spring Boot里面有两种创建Bean的方式:configure(即@Configuration注解的使用)和auto-configure(即@EnableAutoConfiguration...
2019-11-04 21:28:20
563
原创 commons-beanutils的使用
commons-beanutils是Apache提供的一个用于操作JAVA bean的工具包。里面提供了各种各样的工具类,让我们可以很方便的对bean对象的属性进行各种操作。一 commons-beanutils依赖 pom方式的引入(maven项目)。 <!-- h...
2019-10-28 20:10:19
6976
原创 Spring Boot Logback日志组件使用
一 logback简介 Logback是一个开源日志组件。Logback一般和SLF4结合起来使用。外层使用SLF4J,里面的实现是logback。什么意思,简单来说我们使用层看到的是SLF4J。我们使用的时候就是和SLF4J提供的一些api打交道。 我们可能经常听到SLF4J,logback,...
2019-10-26 22:26:03
1201
原创 Spring Boot Mybatis实现分表
开发过程中可能会碰到分表的场景,数据库的数据量相当大的时候可能需要按天分表或者按月分表啥的(分表策略)。接下来就教大家用最简单的方式实现这一需求。 咱们接下来主要实现以下两个大功能:自动建表,当表不存在的时候自动把表创建出来。自动分表,根据操作数据库的某个参数进行分表。 &...
2019-10-09 20:49:34
5109
3
原创 Spring Boot动态数据源切换
在实际开发过程中,可能有这样的情况,一个项目涉及到多个数据库.有的数据需要插入这个数据库,而有的数据需要插入到另一个数据库里面.所以接下来,就来教大家怎么用最简单的方式来实现这一需求. 我们将会用Spring里面的AOP设计来实现这一逻辑.通过把注解添加在方法上(DAO方法上)来实现数据源的动态...
2019-10-06 09:00:19
536
1
原创 Spring Boot基础用法
Spring启动过程中会找出IOC容器里面特定类型的Bean,之后自动调用这些类型(一般是接口类)里面的方法。这种特性对我们非常有用,我们只需要实现这些特定类型的Bean并覆盖其方法,在方法里面加入我们自定义的一些逻辑。Spring就会在恰当的时机调用我们定义的这些类里面的方法。让我们可以做一些特别的逻辑。接下来我们就对这些特定类型的类做一个简...
2019-10-03 23:13:48
536
原创 Spring Boot 注解收集
Spring Boot使用过程中,经常需要和很多注解打交道。也是我们常说的注解编程。所以接下来我们对Spring Boot常用注解做一个简单的收集。一 配置类相关注解 配置类相关注解解释@SpringBootApplication组合注解,由@SpringBootC...
2019-09-13 14:42:37
1639
原创 Google Guava 集合(Collections)
这一篇文章我们来讲Google Guava集合,这是Guava最成熟和为人所知的部分。里面给我们提供各个集合的工具类,也给我们提供了一些新的集合类。一 不可变集合 不可变集合,顾名思义就是说集合是不可被修改的。集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变,一旦不可变集合创...
2019-09-07 11:48:09
1749
原创 Google Guava 基本工具
google-guava被誉为是JAVA里面的瑞士军刀。能简化我们的代码,让我们的代码易写、易读、易于维护。而且它能提高我们的工作效率,让我们从大量重复的底层代码中脱身。Google Guava maven引入<!-- https://mvnrepository.com/artifact/com.google.guava/guava ...
2019-09-07 11:30:27
525
原创 Google Guava Hash(散列)
Guava Hash(散列)指的是通过某种算法把数据源通过一系列的转换生成一串字符串。常见的例如hash code生成,加密字符的生成,检验字符的生成等等。接下来我们就对Guava Hash(散列)的使用做一个介绍。使用很简单。Guava Hash(散列)里面也给我们提供了很多hash算法。已经能满足我们大部分需求了。一 Hash(散列)介绍...
2019-08-22 19:27:21
5870
1
原创 JAVA分布式锁介绍
上一篇咱们讲到同一个进程,不同的线程之间我们可以通过synchronized、ReentrantLock、ReadWriteLock、Semaphore、CountDownLatch这些来实现锁机制。现在情况不一样了,咱们的程序高大上了,咱们可以部署多个服务端了,上了分布式系统了。在这个时候锁就要上升一个档次了,现在就叫分布式锁了。 ...
2019-08-22 19:22:41
948
原创 ZooKeeper客户端Curator使用
Curator是Netflix公司开源的一套zookeeper客户端框架.解决了很多Zookeeper客户端非常底层的细节开发工作,包括连接重连、反复注册Watcher和NodeExistsException异常等等。Curator被看做是zookeeper客户端框里面的瑞士军刀(牛逼了)。Curator使得我们开发zookeeper客户端程序...
2019-08-18 22:34:35
1716
原创 TrueLicense实现license验证
TrueLicense是一个开源的证书管理引擎,可以用于license的生成和有效性的验证。一 使用keytool生产密钥对 keytool是jdk里面自带的命令。我们直接用keytool命令来生成密钥对。需要执行的命令如下(命令里面的参数大家根据情况不同做相应的调整)## 1. 生成私...
2019-08-17 14:38:48
12986
8
原创 JAVA常用的锁机制
在开发多线程应用的时候(并发编程),为了防止多个线程同时去修改一个变量的时候产生数据不一致性。这个时候就必须要用到锁机制。有一个线程在修改的时候我先加锁,等修改完了在释放锁。资源被锁住的时候不允许其他线程修改。这也是我们JAVA里面锁的初衷。咱们JAVA里面的锁有:synchronized、ReentrantLock、ReadWriteLock...
2019-07-31 20:43:08
1705
4
原创 JAVA NIO编程介绍
传统的IO操作是同步阻塞IO模式(BIO),数据的读取写入必须阻塞在一个线程内等待其完成。NIO则是同步非阻塞IO模式。BIO面向流操作,NIO面向缓冲区操作。 NIO主要有三大核心部分:Channel(通道),Buffer(缓冲区), Selector。传统IO基于字节流和字符流进行操作,而N...
2019-07-27 14:26:23
732
原创 JDK Stream流使用介绍
Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作,或者大批量数据操作。通常我们需要多行代码才能完成的操作,借助于Stream流式处理可以很简单的实现。 Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的...
2019-07-20 08:54:46
2639
原创 Google Guava 原生类型
这一章我们主要讲Guava 里面针对Java的原生类型(byte、short、int、long、float、double、char、boolean)提供的一些工具类。里面的内容也很简单。一 工具类 JAVA 原生类型对应的工具类原生类型Guava工具类(都在com.google...
2019-07-16 19:23:07
652
原创 Google Guava Ranges(区间)
区间,有时也称为范围。Guava用类型Range表示区间。所有区间实现都是不可变类型。接下来我们对Guava中的Range做一个简单的介绍。我们先看下Range类里面每个函数的介绍,在说具体的使用。Range常用函数介绍public final class Range<C extends Comparable> extend...
2019-07-15 20:32:38
1967
原创 Google Guava IO 操作
关于IO操作Guava给我们提供了很多工具类,大大提高了我们开发效率.下面我们将对Guava IO 提供的相关工具类做一个简单的介绍.涉及到的工具类主要有:ByteStreams,CharStreams,Resources,Closeables,Flushables,Files,MoreFiles.一 ByteStreams &...
2019-07-14 15:52:25
1865
原创 Google Guava EventBus(事件总线)
EventBus是Guava的事件处理机制,是设计模式中的观察者模式(生产/消费者编程模型)的优雅实现。对于事件监听和发布订阅模式,EventBus非常优雅使用起来也非常的简单,这个可不是吹的是真的非常的简单。 EventBus内部实现原理不复杂(源码不复杂,强烈推荐大家去看下)。我们简单的...
2019-07-11 18:42:00
24400
2
原创 Google Guava 数学运算
为什么使用Guava MathGuava Math针对各种不常见的溢出情况都有充分的测试;对溢出语义,Guava文档也有相应的说明;如果运算的溢出检查不能通过,将导致快速失败。Guava Math的性能经过了精心的设计和调优;虽然性能不可避免地依据具体硬件细节而有所差异,但Guava Math的速度通常可以与Apache Commo...
2019-07-10 22:40:52
1426
原创 Google Guava 反射机制工具类
一 TypeToken Guava TypeToken类是用来帮我们解决java运行时泛型类型被擦除的问题的。 这里用一个具体的实例来解释下什么是类型檫除,特别是使用泛型的时候容易出现类型檫除。 ArrayList<String> stringList = Lis...
2019-07-08 17:58:53
6110
3
原创 Google Guava 字符串处理
为了方便我们对字符串的处理,Guava给我们提供了好多很方便的工具类,接下来我们对Guava里面字符串相关的帮助类做一个简单的介绍。一 连接器 – Joiner Joiner用于帮助我们把多个字符串通过连接符连接起来。Joiner里面也提供和很多很有用的方法,比如null提花,跳过null...
2019-07-06 08:51:05
3057
原创 Google Guava 并发编程 - ListenableFuture
并发编程在咱们实际开发过程中肯定经常用到。比如线程池呀、通过Future去获取任务的执行结果呀等等。Guava从实际出发,为了方便我们的使用对JDK里面原生的一些并发编程方式做了增强。 Guava 里面并发编程相关的类非常多,我们对嘴常用的三个类MoreExecutors、Futures、L...
2019-07-03 20:20:34
2813
原创 Google Guava Service(服务)简单介绍
Guava包里的Service框架可以帮助我们把异步操作封装成一个Service服务。让这个服务有了运行状态(我们也可以理解成生命周期),这样我们可以实时了解当前服务的运行状态。同时我们还可以添加监听器来监听服务运行状态之间的变化。 Guava里面的服务有五种状态,如下所示:Servic...
2019-06-30 07:57:41
3094
原创 RXTX实现JAVA串口编程
给大家分项下用RXTX库实现JAVA串口编程。一 准备工作1.1 下载资源文件 首先下载RXTX库对应的资源文件。下载地址 http://fizzed.com/oss/rxtx-for-java 大家根据自己的系统下载对应的文件。Windows-x64 对应windows 64位系...
2019-06-26 20:30:32
5722
13
原创 Angular装饰器介绍
装饰器的作用就是在添加装饰器的地方在不改动原有代码的情况下增加额外的功能。Angular框架中装饰器是一个函数。他将元数据添加到类、类成员(属性、方法)和函数参数上。让它们在不需要做任何代码变动的前提下增加额外功能。1 类装饰器 类装饰器负责把元数据附加到类上,以了解类的设计意图以及这个类...
2019-06-01 15:50:14
4918
原创 Angular依赖注入介绍
依赖注入(DI – Dependency Injection)是一种重要的应用设计模式。Angular里面也有自己的DI框架,在设计应用时经常会用到它,它可以我们的开发效率和模块化程度。 依赖,是当类需要执行其功能时,所需要的服务或对象。DI是一种编码模式,其中的类会从外部源中请求获取依赖,...
2019-06-01 15:39:43
1657
MemoryAnalyzer-1.10.0.20200225-win32.win32.x86_64.zip
2020-04-04
Android缓存分析
2017-04-10
Android 自定义饼状图
2016-12-18
DisplayingBitmaps
2016-06-14
AnimatorDemo
2016-06-05
SwipeDismissBehaviorDemo
2016-04-15
Android嵌套滑动Demo
2016-04-10
Android Properties使用实例
2016-03-15
WebView实现仿QQ的帮助菜单
2015-12-21
Android Fragment 间通信
2015-11-16
ListView 分组分类的实现
2015-10-30
Group ListView Demo
2015-10-30
Linux + C + Epoll实现高并发服务器(线程池 + 数据库连接池)
2015-09-27
android code style
2015-09-26
apache_mina_maven 客户端测试程序
2015-09-16
apache_mina_maven
2015-09-16
apache-maven-3.2.3-bin.tar.gz
2015-09-14
Android Studio AIDL 非常非常简单的例子
2015-07-19
TS流解析(代码)
2013-05-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人