技术文章
Stalary
Knowledge never overflow
展开
-
mysql桶思想的应用
原来一直没有想过数组是可以存到mysql中的,当今天真正使用时,才发现了桶思想的强大之处。什么是桶思想呢?桶排序大家一定都知道,这是一个牺牲了空间,来将时间复杂度降低到了线性的算法,而它的特点就是先划分出一定数量的桶,然后再将数字映射到各自的桶中,再对非空桶进行快速排序。何时会用到这种思想呢?例如我们我们需要统计一组数据时,其实使用一个字段就可以实现,例如我们需要统计一套试原创 2018-01-31 00:40:26 · 591 阅读 · 0 评论 -
java海量数据的简单清洗
这周接到了一个对爬取数据进行清理的任务,具体需求为,有一张接近百万的key值表,每一个key对应一个对象,但是在es中存在大量的相似对象,需要按照相似度清除key值表中重复的对象。下面简单的介绍一下本人的思路。文件准备因为百万级数据的清理在单机模式下其实是很耗时的操作,所以我们需要考虑到一些异常的发生,并且要暂存一下重复的key值,所以需要构建三个临时文件 touch ou...原创 2018-05-09 14:16:09 · 12375 阅读 · 2 评论 -
打出指定类的jar包
最近接到了一个需求,由于两个服务较为耦合,需要复制多个pojo,为了防止这种冗余操作,所以选择了引入jar包的方法,今天来介绍一下如何打出指定类的jar包首先拿我原来写的用户中心为例子,在调用时,我可能需要一些pojo来进行反序列化对象首先使用maven插件进行打包 然后我们找到这个jar,将其解压 可以看出,这个jar包中包括了我们整个项目,但我们只需要data包,这是我们删除...原创 2018-04-23 14:11:33 · 993 阅读 · 0 评论 -
向SpringBoot2.0迁移的爬坑指南
公司的项目需要从SpringMVC迁移到SpringBoot2.0,本人用了三天的时间才基本完成迁移,今天就来大体的做一下总结HikariCPSpringBoot2.0将HikariCP替换原来的Tomcat作为默认的数据库连接池(众心所向)。下面就说一下在配置中我们需要做的变化原来我们在配置读写分离的数据库,是这样配置的spring.datasource.readwr...原创 2018-03-21 23:11:09 · 1215 阅读 · 0 评论 -
基于kafka+logback的异步持久化日志
最近一直在忙着攻克个人开源的用户中心中异步日志的功能,今天终于完成了这个困扰我许久的问题。服务器kafka如何配置当我们没有修改配置时,会遇到生产者连接服务器失败的情况advertised.host.name=47.94.248.38我们需要把host设置为当前服务器的iplogback配置<?xml version="1.0" encoding="U...原创 2018-04-07 20:17:34 · 1966 阅读 · 1 评论 -
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 · 1875 阅读 · 0 评论 -
Redis在项目中的几种使用
今天来讲一讲项目中使用redis的几种用法实现赞踩可以使用集合或者哈希表来完成赞踩 使用集合的sadd和srem来完成时,首先我们需要创建两个集合,一个赞集合,一个踩集合点赞时:向赞集合添加该用户,删除踩集合中的该用户踩时:向踩集合添加该用户,删除赞集合中的该用户demo:public class JedisDemo { private static J...原创 2018-02-25 17:43:43 · 7215 阅读 · 3 评论 -
HashMap源码分析
今天来分析一下HashMap的实现原理,虽然枯燥但却是我们java学习的必经之路HashMap的特点线程不安全(未使用同步)可以存储null的键和值(null存储在数组的第一个元素)使用数组+链表+红黑树(1.8新增)实现上面这张图很清晰的描述了HashMap的存储原理源码分析putpublic V put(K key, V value) { ...原创 2018-03-15 22:13:05 · 122 阅读 · 0 评论 -
Iterator源码分析
除夕夜,当然也不能忘记了敲代码,今天来分享一下Iterator的一些小知识Iterator的源码分析// 判断是否还有下一个元素boolean hasNext();// 获取游标当前元素E next();// 删除游标当前元素default void remove() { throw new UnsupportedOperationException("r...原创 2018-02-15 21:32:27 · 195 阅读 · 0 评论 -
常用排序的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 · 136 阅读 · 0 评论 -
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 · 1786 阅读 · 1 评论 -
分布式Session
今天我们来讲解一下分布式Session的几种实现方法为什么要使用分布式Session在分布式场景下,负载均衡会将用户请求随机分发,如果单机存储Session,会造成用户需要频繁登陆。分布式Session的实现方式粘性Session(将用户请求固定在一台服务器)服务器Session复制(广播实现Session同步)缓存存储(Sticky模式和Non-Sticky模式)持久...原创 2018-02-12 00:17:00 · 269 阅读 · 0 评论 -
java虚拟机浅显分析
普及一下虚拟机中的一些区域,垃圾收集算法,垃圾收集器等。运行时数据区域程序计数器线程私有一块较小的内存空间记录正在执行的java方法的虚拟机字节码指令的地址(native方法为空)没有OutOfMemoryError的情况Java虚拟机栈线程私有为虚拟机执行java方法服务与线程的生命周期相同当线程请求的栈深度大于虚拟机所允许的深度,抛出Stack原创 2018-02-02 14:27:29 · 162 阅读 · 0 评论 -
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 · 462 阅读 · 0 评论 -
Redis发布订阅模式浅析
最近写一个模块时,用到了缓存,由于是两个服务之间的通信,所以会遇到数据不一致的情况,最后选择了使用Redis的发布订阅模式进行解决。什么是发布订阅?这就如同是我们常用的朋友圈,我们发送朋友圈时就是一个发布者,而能看到这条朋友圈的人就是一个订阅者,订阅者可以根据自己的喜好对发布的消息进行点赞,评论等操作。下面贴一张形象的图片: 一个完整的发布订阅需要经过三个步骤:订阅者对发布原创 2018-01-31 00:44:05 · 2944 阅读 · 0 评论 -
Comparable和Comparator
今天来分析一下Comparable和Comparator的区别,以及源码的解读。Comparable源码:public interface ComparableT> { public int compareTo(T o);}我们可以发现Comparable只是一个简单的泛型接口,内部含有一个compareTo接口。 根据接口的说明可知: 1. 实现了这个接口的集合(原创 2018-01-31 00:43:28 · 144 阅读 · 0 评论 -
跨域丢失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 · 8388 阅读 · 0 评论 -
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 · 1812 阅读 · 3 评论 -
博客停更,迁移到简书
博客停更,迁移到简书,简书地址为:https://www.jianshu.com/u/0ba99b42e043原创 2018-06-04 19:35:44 · 311 阅读 · 0 评论