自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

stalary的博客

奋斗中的小码农

  • 博客(25)
  • 收藏
  • 关注

原创 博客停更,迁移到简书

博客停更,迁移到简书,简书地址为:https://www.jianshu.com/u/0ba99b42e043

2018-06-04 19:35:44 290

原创 java海量数据的简单清洗

这周接到了一个对爬取数据进行清理的任务,具体需求为,有一张接近百万的key值表,每一个key对应一个对象,但是在es中存在大量的相似对象,需要按照相似度清除key值表中重复的对象。下面简单的介绍一下本人的思路。文件准备因为百万级数据的清理在单机模式下其实是很耗时的操作,所以我们需要考虑到一些异常的发生,并且要暂存一下重复的key值,所以需要构建三个临时文件 touch ou...

2018-05-09 14:16:09 12276 2

原创 打出指定类的jar包

最近接到了一个需求,由于两个服务较为耦合,需要复制多个pojo,为了防止这种冗余操作,所以选择了引入jar包的方法,今天来介绍一下如何打出指定类的jar包首先拿我原来写的用户中心为例子,在调用时,我可能需要一些pojo来进行反序列化对象首先使用maven插件进行打包 然后我们找到这个jar,将其解压 可以看出,这个jar包中包括了我们整个项目,但我们只需要data包,这是我们删除...

2018-04-23 14:11:33 958

原创 基于kafka+logback的异步持久化日志

最近一直在忙着攻克个人开源的用户中心中异步日志的功能,今天终于完成了这个困扰我许久的问题。服务器kafka如何配置当我们没有修改配置时,会遇到生产者连接服务器失败的情况advertised.host.name=47.94.248.38我们需要把host设置为当前服务器的iplogback配置<?xml version="1.0" encoding="U...

2018-04-07 20:17:34 1915 1

原创 向SpringBoot2.0迁移的爬坑指南

公司的项目需要从SpringMVC迁移到SpringBoot2.0,本人用了三天的时间才基本完成迁移,今天就来大体的做一下总结HikariCPSpringBoot2.0将HikariCP替换原来的Tomcat作为默认的数据库连接池(众心所向)。下面就说一下在配置中我们需要做的变化原来我们在配置读写分离的数据库,是这样配置的spring.datasource.readwr...

2018-03-21 23:11:09 1199

原创 JPA和Hibernate5.2.1和Mybatis的对比

最近,项目正在逐渐从SpringMVC迁移到SpringBoot,发现原来Hibernate使用的Criteria已经被标记为淘汰,所以今天对dao中三种使用方式进行总结### JPA
 JPA的方便之处在于,如果方法名规范,可以直接映射到sql语句,缺点是有些复杂的sql语句会不太灵活下面看一个demo// 传入Pageable对象和quizId,返回一个Page对象publ...

2018-03-20 16:46:10 1856

原创 HashMap源码分析

今天来分析一下HashMap的实现原理,虽然枯燥但却是我们java学习的必经之路HashMap的特点线程不安全(未使用同步)可以存储null的键和值(null存储在数组的第一个元素)使用数组+链表+红黑树(1.8新增)实现上面这张图很清晰的描述了HashMap的存储原理源码分析putpublic V put(K key, V value) { ...

2018-03-15 22:13:05 108

原创 volatitle深入解析

今天来介绍一下volatitlevolatile是什么volatitle是一个确保共享变量能够被准确和一致地更新的关键字(保证可见性),只能对变量使用volatile是如何保证可见性的在对有volatile修饰符修饰的共享变量进行写操作时,汇编代码回多一条lock前缀的指令。该指令有如下两个作用:将当前缓存行的数据回写到内存中使其他cpu里缓存了该内存地址的数据无效...

2018-03-01 11:50:14 4097

原创 ReentranLock重入锁源码分析

今天来分析一下重入锁的源码ReentranLock定义重入锁ReentranLock是一种支持重进入的锁,表示该锁可以支持一个线程对资源重复加锁,并且分为公平锁和非公平锁synchronizedsynchronized大家一定都很熟悉了,这也是一种隐式的重入锁,是一种非公平锁重进入的实现当线程再次获取锁时,锁需要先判断该线程是否为当前占据锁的线程,如果是则再次...

2018-02-27 00:09:35 433

原创 常用排序的java实现

今天来讲解一下几种常用的排序以及java的实现方法冒泡排序时间复杂度为O(n^2)原理:每次比较相邻两个元素,如果顺序错误就交换实现private static int[] bubbleSort(int[] a, int n) { if (a == null || n < 2) { return a; } // 首先比较整体数组,最大...

2018-02-26 22:20:51 123

原创 Redis在项目中的几种使用

今天来讲一讲项目中使用redis的几种用法实现赞踩可以使用集合或者哈希表来完成赞踩 使用集合的sadd和srem来完成时,首先我们需要创建两个集合,一个赞集合,一个踩集合点赞时:向赞集合添加该用户,删除踩集合中的该用户踩时:向踩集合添加该用户,删除赞集合中的该用户demo:public class JedisDemo { private static J...

2018-02-25 17:43:43 7172 3

原创 Iterator源码分析

除夕夜,当然也不能忘记了敲代码,今天来分享一下Iterator的一些小知识Iterator的源码分析// 判断是否还有下一个元素boolean hasNext();// 获取游标当前元素E next();// 删除游标当前元素default void remove() { throw new UnsupportedOperationException("r...

2018-02-15 21:32:27 179

原创 分布式Session

今天我们来讲解一下分布式Session的几种实现方法为什么要使用分布式Session在分布式场景下,负载均衡会将用户请求随机分发,如果单机存储Session,会造成用户需要频繁登陆。分布式Session的实现方式粘性Session(将用户请求固定在一台服务器)服务器Session复制(广播实现Session同步)缓存存储(Sticky模式和Non-Sticky模式)持久...

2018-02-12 00:17:00 243

原创 并发框架之Fork/Join框架

今天来介绍一下java并发框架之Fork/Join初探Fork/Join:分割任务 使用一个fork类来把大任务分割成子任务,当子任务还较大时,不停的分割,直到分割到子任务足够小。(类似于归并排序的分化阶段)执行任务合并结果 分割后的子任务分别放在双端队列里,然后开启多线程分别从双端队列获取任务执行,子任务执行完的结果都放在一个队列里,然后启动一个线程从队...

2018-02-08 17:43:45 280 1

原创 java中this的几种用法

今天来分析一下Java中this关键字this的几种用法调用其他构造函数public class ThisDemo { private int age; private String name; public ThisDemo(String name) { this(); this.name = name;

2018-02-06 22:18:38 1754 1

原创 偏向锁、轻量级锁、重量级锁的升级以及区别

今天来讲一下偏向锁、轻量级锁、重量级锁的升级以及区别。锁的状态:无锁状态偏向锁状态轻量级锁状态重量级锁状态四种状态会随着竞争的情况逐渐升级,而且是不可逆的过程,即不可降级。 要注意的是,这四种状态都不是Java语言中的锁,而是Jvm为了提高锁的获取与释放效率而做的优化(使用synchronized时)。首先通过一个小例子来解释一下三种锁的区别: 假如

2018-02-04 20:22:54 2749 1

原创 java虚拟机浅显分析

普及一下虚拟机中的一些区域,垃圾收集算法,垃圾收集器等。运行时数据区域程序计数器线程私有一块较小的内存空间记录正在执行的java方法的虚拟机字节码指令的地址(native方法为空)没有OutOfMemoryError的情况Java虚拟机栈线程私有为虚拟机执行java方法服务与线程的生命周期相同当线程请求的栈深度大于虚拟机所允许的深度,抛出Stack

2018-02-02 14:27:29 146

原创 spring-boot+jpa的简单使用

新手入门Hibernate和Mybatis以及配置繁重的Spring-MVC还有些难度,今天就从实用出发,从零开始搭建一个Spring-Boot+Jpa的服务什么是Jpa?Jpa是Java Persistence API的简称。 致力于通过操作对象,执行CURD操作,使开发者从繁重的jdbc和sql中脱离出来的一种规范。 而Hibernate ORM框架则是Jpa规范的一种实现。

2018-02-01 11:23:39 434

原创 五种java线程池的使用与比较

今天对五种常见的java内置线程池进行讲解。线程使用的demopublic static void cache() { ExecutorService pool = Executors.newCachedThreadPool(); long start = System.currentTimeMillis(); pool.execut...

2018-01-31 00:44:35 2243

原创 Redis发布订阅模式浅析

最近写一个模块时,用到了缓存,由于是两个服务之间的通信,所以会遇到数据不一致的情况,最后选择了使用Redis的发布订阅模式进行解决。什么是发布订阅?这就如同是我们常用的朋友圈,我们发送朋友圈时就是一个发布者,而能看到这条朋友圈的人就是一个订阅者,订阅者可以根据自己的喜好对发布的消息进行点赞,评论等操作。下面贴一张形象的图片: 一个完整的发布订阅需要经过三个步骤:订阅者对发布

2018-01-31 00:44:05 2916

原创 Comparable和Comparator

今天来分析一下Comparable和Comparator的区别,以及源码的解读。Comparable源码:public interface ComparableT> { public int compareTo(T o);}我们可以发现Comparable只是一个简单的泛型接口,内部含有一个compareTo接口。 根据接口的说明可知: 1. 实现了这个接口的集合(

2018-01-31 00:43:28 125

原创 跨域丢失cookie的问题

2018年的第一篇博客,新的开始,新的起点前几天在写一个利用cookie存储token的登陆demo时遇到了跨域丢失token的问题,在这里分享一下解决的方法。案例分析前端使用了vue-reource的$http进行请求后台接口this.$http({ url: "http://120.24.5.178:8100/user/login",

2018-01-31 00:42:58 8235

原创 spring-boot从创建到部署(内含swagger配置)

今天介绍一下spring-boot这个开箱即用的框架,从创建到部署创建spring-boot项目首先点击creat new project 然后点击spring initializr 输入组名和项目名 选择web finsh完成创建 pom.xml配置文件project xmlns="http://maven.apache.org/POM/4.0.0" x

2018-01-31 00:42:30 1794 3

原创 并发工具包之CountDownLatch|CyclicBarrier|Semaphore

在java的并发包中为我们提供了三种并发控制的手段,他们分别是CountDownLatch|CyclicBarrier|Semaphore,今天我们分别来讲解一下这三种方法以及使用场景CountDownLatch特点: 首先设置一个计数器,在线程完成数达到计数器阈值之前,其他的一个或多个线程都会等待。计数器无法重置,一旦到达阈值,就会释放所有线程适用场景: 实现并行(可以用来...

2018-01-31 00:41:41 178

原创 mysql桶思想的应用

原来一直没有想过数组是可以存到mysql中的,当今天真正使用时,才发现了桶思想的强大之处。什么是桶思想呢?桶排序大家一定都知道,这是一个牺牲了空间,来将时间复杂度降低到了线性的算法,而它的特点就是先划分出一定数量的桶,然后再将数字映射到各自的桶中,再对非空桶进行快速排序。何时会用到这种思想呢?例如我们我们需要统计一组数据时,其实使用一个字段就可以实现,例如我们需要统计一套试

2018-01-31 00:40:26 566

空空如也

空空如也

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

TA关注的人

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