生活感悟

pagehelper分页原理如何实现的?

Harries 发布于 2018-08-16

1.pagehelper原理 PageHelper做的是什么呢?它封装了分页的后台部分,说得更简单点,就是你不需要每个POJO类的增删改查里都包括那两个方法了,它帮你做了。你只需要有一个selectAll的方法,它会根据你使用的数据库来将你selectAll的sql改装成一个分页...

阅读(9)评论(0)赞 (0)

java递归实现导航菜单

2

Harries 发布于 2018-08-10

需求背景 由于项目需要将目录显示在首页导航上,并且实现菜单联动,如何实现呢?这就是今天我们要讲的内容。通过递归来实现无限极菜单。 代码实现 数据库结构是这样子的 后台代码 /** * MIT License * Copyright (c) 2018 haihua.liu * Pe...

阅读(45)评论(0)赞 (0)

freemarker自定义标签

Harries 发布于 2018-08-10

写在前面 上节课程主要讲了在springboot上集成freemaker,本文主要介绍freemarker如何自定义标签,自定义标签的好处,可以在页面上实现复用。不多说废话,直接进入今天的主题 后台代码实现 /** * MIT License * Copyright (c) 20...

阅读(18)评论(0)赞 (1)

时间标准简介GMT,CST,UTC

Harries 发布于 2018-08-07

UTC(世界标准时间) 协调世界时,又称世界标准时间或世界协调时间,简称UTC(从英文“Coordinated Universal Time”/法文“Temps Universel Coordonné”而来),是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼...

阅读(21)评论(0)赞 (0)

springboot集成freemarker【JWordPress前台项目实战】

1

Harries 发布于 2018-08-01

写在前面 通过前面几篇文章,我么已经可以搭建后台通用一个增删改查框架,这节课我们主要讲如何如前端页面交互。通常的做法一般分为2种: 后端提供restfull接口,前端页面由专业的前端开发人员去做,这样子适合前后端分离 后台开发包圆前端页面的开发任务,通过cotroller 实现于...

阅读(74)评论(0)赞 (0)

分布式存储系统关键问题

3

Harries 发布于 2018-08-01

(一)关键问题 数据分布 对于存储系统,最重要的问题就是数据分布,即什么样的数据放置在什么样的节点上。数据分布时需要考虑数据是否均衡、以后是否容易扩容等一系列问题。不同的数据分布方式也存在不同的优缺点,需要根据自身数据特点进行选择。 1)哈希分布 => 随机读取 取模直接哈...

阅读(75)评论(0)赞 (0)

用Elasticsearch构建电商搜索平台,一个极有代表性的基础技术架构和算法实践案例

15

Harries 发布于 2018-07-26

电商数据系统主要类型 一个中等的电商平台,每天都要产生百万条原始数据,上亿条用户行为数据。一般来说,电商数据一般有3种主要类型的数据系统: 关系型数据库 ,大多数互联网公司会选用mysql作为关数据库的主选,用于存储商品,用户信息等数据。 关系型数据库对于事务性非常高的OLTP操...

阅读(108)评论(0)赞 (0)

基于Elasticsearch实现搜索建议

4

Harries 发布于 2018-07-26

搜索建议是搜索的一个重要组成部分,一个搜索建议的实现通常需要考虑建议词的来源、匹配、排序、聚合、关联的文档数和拼写纠错等,本文介绍一个基于Elasticsearch实现的搜索建议。 问题描述 电商网站的搜索是最基础最重要的功能之一,搜索框上面的良好体验能为电商带来更高的收益,我们...

阅读(76)评论(0)赞 (0)

Java 集合框架 ArrayList 源码剖析

3

Harries 发布于 2018-07-24

ArrayList实现了List接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null元素,底层通过数组实现。除该类未实现同步外,其余跟Vector大致相同。每个ArrayList都有一个容量(capacity),表示底层数组的实际大小,容器内存储元素的个数不能多...

阅读(51)评论(0)赞 (0)

Java 集合框架 HashSet 和 HashMap 源码剖析

4

Harries 发布于 2018-07-24

总体介绍 之所以把HashSet和HashMap放在一起讲解,是因为二者在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也就是说HashSet里面有一个HashMap(适配器模式)。因此本文将重点分析HashMap。 HashMap实现了Map接口,允许放入null元素...

阅读(60)评论(0)赞 (0)

那些证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等)

Harries 发布于 2018-07-23

之前没接触过证书加密的话,对证书相关的这些概念真是感觉挺棘手的,因为一下子来了一大堆新名词,看起来像是另一个领域的东西,而不是我们所熟悉的编程领域的那些东西,起码我个人感觉如此,且很长时间都没怎么搞懂.写这篇文章的目的就是为了理理清这些概念,搞清楚它们的含义及关联,还有一些基本操...

阅读(61)评论(0)赞 (0)

BigInteger实现原理

Harries 发布于 2018-07-23

1、把数字存在字符串中,大数之间的四则运算及其它运算都是通过数组完成; 2、JDK实现,那就是BigInteger; 3、BigInteger已实现的接口:Serializable, Comparable 4、signum属性是为了区分:正负数和0的标志位,整数用1表示,负数用-...

阅读(35)评论(0)赞 (0)

利用cookies实现对弹出窗口频率的控制

1

Harries 发布于 2018-07-13

原理: 当用户第一次访问网站时候,此时没有设置cookies参数,并且设置过期,弹出显示对话框,弹完之后,设置cookies参数”popped=yes;expires=”+date.toGMTString()”,第二次加载时候,判断存在这个参数...

阅读(168)评论(2)赞 (1)

Semaphore源码分析

Harries 发布于 2018-07-09

源码解析 Semaphore有两种模式,公平模式和非公平模式。公平模式就是调用acquire的顺序就是获取许可证的顺序,遵循FIFO;而非公平模式是抢占式的,也就是有可能一个新的获取线程恰好在一个许可证释放时得到了这个许可证,而前面还有等待的线程。 构造方法 Semaphore有...

阅读(36)评论(0)赞 (0)

咱们来聊聊并发工具类Semaphore

Harries 发布于 2018-07-09

什么是Semaphore? Semaphore是计数信号量。Semaphore管理一系列许可证。每个acquire方法阻塞,直到有一个许可证可以获得然后拿走一个许可证;每个release方法增加一个许可证,这可能会释放一个阻塞的acquire方法。然而,其实并没有实际的许可证这个...

阅读(39)评论(0)赞 (0)

用栅栏(CyclicBarrier)实现高并发测试

Harries 发布于 2018-07-06

CyclicBarrier 含义 栅栏允许两个或者多个线程在某个集合点同步。当一个线程到达集合点时,它将调用await()方法等待其它的线程。线程调用await()方法后,CyclicBarrier将阻塞这个线程并将它置入休眠状态等待其它线程的到来。等最后一个线程调用await(...

阅读(41)评论(0)赞 (0)

stresstester源码分析

1

Harries 发布于 2018-07-06

写在前面 stresstester-1.0.jar是早期淘宝的一个压力测试工具,很方便开发人员进行本地代码的压力测试,其他专门压力测试工具也有很多,如:jmeter  loadrunner 等等,本篇文章主要讲一下stresstester的源码设计 先来张类图 从上图可以看出St...

阅读(127)评论(0)赞 (0)