- 博客(152)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注
原创 动手写一个二叉平衡树
前面已经实现了一个二叉搜索树比较复杂的就是在删除的时候,需要做比较多的判断,总体没那么难理解。在二叉树的基础上,有一个叫做二叉平衡树的数据结构,实现起来难度还是比较大的。具体代码可参考:AVLTree...
2019-11-30 14:30:29
313
原创 动手写一个二叉搜索树
前面已经手写了一个简单的双向链表在此基础上再写一个简单的二叉搜索树【这里仅简单实现】。二叉搜索树在结构上跟双向链表比较相似,将左节点看做左子树,将右节点看做父节点,只是多个右字数的对应。package com.tree;import java.util.List;/** * 实现二叉搜索树(又叫二叉排序树) * 先思考正常情况,再考虑特殊情况,否则会进入到死胡同 * @aut...
2019-11-30 14:19:10
326
原创 海量数据快速查找出现频率topN
海量数据寻找出现频率最多的topN,且内存受到限制,该如何处理呢?主要思想就是分治。如果使用框架处理,hadoop的MapReduce运算框架是可以解决的,且是分布式的处理。但是单机版该如何处理呢。空闲时间使用python3实现了一版,做一下记录。import collectionsimport reimport sysimport time"""找出一个超大文件中出现频率最高的10...
2019-11-29 10:20:04
1394
原创 动手写一个双向链表
单向链表就不写了,进来直接写双向链表。首先需要了解双向链表的接口。将链的节点抽象为一个对象,对象存在两个指针,一个指向前面一个节点,一个指向后面一个节点。实现双向链表的功能就是对链的指针操作。package com.linked;/** * 实现双向链表 * @author T */public class LinkedTable<T> { private No...
2019-11-14 14:03:39
358
原创 BeanUtils.copyProperties解决null值覆盖问题
这里使用的是Spring提供的BeanUtils的工具类(commons-lang3可参考)。在做数据变更的时候,使用BeanUtils.copyProperties(newdata,dbdata)进行数据变更的时候,由于前台展示的数据不完整。导致前台传递的数据将后台的原始数据全部覆盖掉。那么如何解决这种null值的覆盖呢。BeanUtils.copyProperties()可以通过添加可变长参数...
2019-10-18 09:58:55
10157
4
原创 Springboot2+hibernate5 sessionFactory配置
老的工程,使用的是Hibernate3,打算升级为SpringBoot工程。底层封装了很多,短时间无法迁移到其他持久化框架,所以分两步,先使用Hibernate过渡,然后再进行其他的迁移。迁移的过程中,发现sessionFactory无法注入,找了一堆的资料。发现千变一律,都解决不了问题。最后找到的方法是:在BaseDaoImpl中配置如下信息。 @Autowired pri...
2019-08-13 10:36:37
3614
1
转载 Hbase查询流程
加深一下印象https://www.imooc.com/article/73049https://blog.csdn.net/map_lixiupeng/article/details/40857825
2019-07-27 21:56:33
6070
原创 elasticsearch常见的几个报错解决方案
(1)max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]切换到root用户,编辑limits.conf添加如下内容vim /etc/security/limits.conf#添加如下配置,*代表所有用户,也可以在前面写指定的用户* soft nofil...
2019-07-25 15:21:29
984
转载 ZooKeeper 典型应用场景-Master选举
使用Zookeeper,大多数都是使用Zookeeper的服务注册和发现,Master选举。1)什么是注册?怎么注册?2)什么是发现?怎么发现?3)什么是选举?为什么选举?怎么选举?4)临时节点的生命周期是什么?5)心跳的作用是什么?可以参考https://www.cnblogs.com/sky-sql/p/6804467.html没有讲心跳检测...
2019-06-05 18:57:16
229
原创 关于Logstash中grok插件的正则表达式例子
logstash filter gork match中的正则匹配,不是随便自己写的,需要按照一定的格式匹配。具体字段可以参考https://www.cnblogs.com/stozen/p/5638369.html
2019-06-04 18:37:19
419
转载 SpringMVC Controller单例和多例,静态变量和普通成员变量
对于SpringMVC Controller单例和多例,下面举了个例子说明下.第一次:类是多例,一个普通属性和一个静态属性。参考:https://blog.csdn.net/qq_27026603/article/details/67953879同样的结果,可以引申到struts2,和其他多线程问题。在多线程的环境下,是否存在静态变量不安全的问题。...
2019-03-22 09:37:25
3362
1
转载 maven配置多环境springboot配置多环境
Java项目多环境配置Maven方式使用SpringbootMaven方式使用maven 本地环境、开发环境 、测试环境、生产环境打包。在平常开发的过程中,我们的项目配置文件经常有有几套分别对应自己本地的环境、开发环境、测试环境、以及生产环境。因为在不同的环境中项目的相关配置也会有相关的不同,我们在不同的环境中部署就要手动修改为对应环境的配置,这样太麻烦了以及这样也会很容易出错。目前JAV...
2019-02-25 11:56:04
1268
1
转载 HBase基本架构及原理
HBase框架简单介绍HBase是一个分布式的、面向列的开源数据库,它不同于一般的关系数据库,是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。HBase使用和 BigTable非常相同的数据模型。用户存储数据行在一个表里。一个数据行拥有一个可选择的键和任意数量的列,一个或多个列组成一个ColumnFamily,一个Fmaily下的列位于一个HFile...
2018-11-15 09:40:20
201
转载 TCP的拥塞控制
1.拥塞即对资源的需求超过了可用的资源。若网络中许多资源同时供应不足,网络的性能就要明显变坏,整个网络的吞吐量随之负荷的增大而下降。拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提:网络能够承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机、路由器,以及与降低网络传输性能有关的所有因素。流量控制:指点对点通信量的控制,是...
2018-10-25 17:40:30
593
原创 springmvc-文件上传配置的几种方式
研究了4中配置。在这里记录和共享一下。上一篇springmvc-没有web.xml和springmvc.xml你还可以运行起来springmvc吗介绍了springmvc的搭建以及jar包依赖。这一次还是延续上一篇的配置,进行下面的配置,建议先看一下前面的配置,以免混淆。包引入spring的文件上传需要依赖commons-fileupload和commons-io包,所以先将这两个包引入进...
2018-10-24 18:32:47
6010
1
原创 springmvc-没有web.xml和springmvc.xml你还可以运行起来springmvc吗
前面也写了几篇有关springboot的简单使用的文章,也写了几篇有关springcloud的文章,不过springcloud是基于springboot的。所以就来纠结一下springboot的吧。springboot之所以可以不用使用任何的xml配置文件就可以实现web的配置和发布,在前期的spring中已经加入了很多的元素,用于实现这些功能。本篇主要介绍两个内容:1)不使用web.xml发...
2018-10-24 15:06:49
5172
转载 单例模式双重校验
单例模式从开始学习java就听说过,理解单例模式的作用很简单,写一个单例模式并没有那么接单。单例模式双重校验的再理解双重校验模式是写单例模式时经常见到的,但是双重校验也有很多的坑。 是否会有问题呢?volatile关键字真的可以解决单例模式么?使用内部类能够实现单例模式?为什么?引入思考。同时推荐上面那边文章,以图形的方式说明指令重排的问题,非常通俗易懂。...
2018-09-10 15:21:30
3202
原创 CyclicBarrier用法
前面介绍了CountDownLatch,可以实现计数。达到指定的数后,就会同时执行。 那么CyclicBarrier跟CountDownLatch实现的功能差不多。import java.util.Random;import java.util.concurrent.*;/** * await()就好比是屏障,经过指定数量的屏障才可以执行最后的线程。 * 或者说是一直等待,直到aw...
2018-08-23 18:59:44
3914
原创 CountDownLatch用法
官方定义:A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes. 有道翻译:一种同步辅助程序,允许一个或多个线程等待,直到在其他线程中执行的一组操作完成。个人理解,实际就是一个倒计时计数...
2018-08-23 17:47:31
211
原创 记学习线程池过程中遇到的一个坑
这篇实际上是跟上一篇想实现的功能一样,想完成线程状态的跟踪。通过学习线程池,了解到了:ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);这个线程池可以完成实现心跳检测的功能。所以就想想用它来实现一个监听器的功能,定时的监听我开启的线程状态,如果某个线程出...
2018-08-22 16:46:28
862
原创 观察者模式管理多个线程
如果有多个线程在执行,其中的某一个线程死掉了怎么办呢?如上一篇所说,可以通过线程池的形式重启该线程。本次不在使用线程池,而是通过JDK自带的观察者来实现:如果有线程死掉,重新启动该线程。观察者模式的思想是定义观察者和被观察者,使用观察者来管理被观察者。观察者:import java.util.Observable;import java.util.Observer;/** * ...
2018-08-21 17:23:34
730
原创 一个线程池处理线程死亡造成的血案
真不知道大家有没有遇到过这种问题: 1.任务处理一半,线程挂了怎么办? 2.线程池有没有补齐线程的功能?这里举一个小demo,用来处理线程死掉,重启线程处理任务。 并未使用多个线程,而是使用一个线程来处理:在抓去到异常的时候,在catch中将该任务重新调用。import java.util.concurrent.ExecutorService;import ja...
2018-08-21 14:43:26
6876
4
原创 一个例子理解ThreadPoolExecutor
一个例子理解线程池的执行过程,及参数的配置。package com.threadpool;import java.util.concurrent.*;/** * 自定义的线程池 * * corePoolSize核心线程1个: * 没有任务需要执行的时候线程池的大小,如果任务数比较多会开启其他线程,但是不会超过最大线程数。 * 在刚刚创建ThreadPool...
2018-08-21 12:50:22
1323
原创 动手写一个阻塞队列
之前看队列,都是停留在看和使用的阶段。再次看队列的时候,忽然发现并没有深入到底层。比如:阻塞队列时如何阻塞的呢?是监听,还是等待呢?然后看着看着就看到了Lock和ReentrantLock,为什么不使用synchronized呢?为什么使用Condition,Condition是什么呢?wait,notify,notifyAll和await,signal,signalAll有什么区别呢?能不能...
2018-08-20 11:59:43
5879
5
转载 HashMap和LinkedHashMap
转自:https://blog.csdn.net/justloveyou_/article/details/71713781HashMap的结构:数组+链表 可以解决快速查找问题,但是HashMap是无序的。如果想要一个有序的Map该怎么办呢?使用LinkedHashMap类怎么实现有序的存储呢? 对HashMap进行了一层包装,HashMap使用的是单向链表,而LinkedHas...
2018-08-19 12:29:34
152
转载 HashMap和HashTable到底哪不同
转自:http://www.cnblogs.com/xinzhao/p/5644175.htmlHashMap和HashTable有什么不同?在面试和被面试的过程中,我问过也被问过这个问题,也见过了不少回答,今天决定写一写自己心目中的理想答案。代码版本 JDK每一版本都在改进。本文讨论的HashMap和HashTable基于JDK 1.7.0_67。源码见这里时间 HashTab...
2018-08-19 10:22:49
147
转载 字符编码问题
为什么字符串经过几轮转换,打印或者显示出来的中文就乱码了? 为什么文件的内容,读出来然后打印或者显示出来就乱码了呢?可能是你没有搞懂编码问题转载:https://blog.csdn.net/yrc_Note/article/details/69183865...
2018-08-18 22:52:09
122
原创 log4j按照日期或时间格式生成备份日志文件
1.写在前面: log4j使用的是log4j 1.2.x。 配置文件使用的是log4j.xml配置文件格式,没有使用log4j.properties文件形式,但是基本差不多。2.需求 多线程,多节点,每天一个模块要产生2-3GB的日志,分散到8个节点,每个节点差不多400-500MB。打开和查询非常麻烦,而且不能够使用ctrl+f全文搜索,每次使用全文搜索,CPU占用率都会达到85+%。...
2018-07-27 10:51:52
3924
原创 redis-bitMap
记录一下使用bitMap的一些操作。 bit操作保存的数据只能是0或者1,这对于判断true/false的统计具备天然的优势。 比如签到签退等等。同时也记录一下踩过的一些坑:进行setbit操作之后,使用bitcout统计数据总是有问题,就一直纠结为啥,后来想着是不是跟hbase一样,按照前缀进行匹配的呢? 试了一试,仍然不行,后来就查了很多的资料,才发现是bit和byte的差别。...
2018-06-22 17:25:14
474
原创 redis-pub/sub
使用redis实现简单的发布订阅功能,很简单看看小例子RedisUtil工具类package com.redis.util;import org.apache.log4j.Logger;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.J...
2018-06-22 14:42:36
236
原创 redis-Geo
Redis在3.2版本里面新增的一个功能就是对GEO(地理位置)的支持。地理位置大概提供了6个命令,分别为: 1.GEOADD 2.GEODIST 3.GEOHASH 4.GEOPOS 5.GEORADIUS 6.GEORADIUSBYMEMBER 这个功能在现在互联网行业用处还是很多的,比如: 附近的人,网约车,外卖…. 试验了一下,感觉非常好用,记录下来package...
2018-06-22 13:37:49
427
转载 Redis-HyperLogLog
HyperLogLog命令是redis在2.8版本中加入的,Redis中HyperLogLog是用来做基数统计的。HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的,因此每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 264 个不同元素的基数。但是HyperLogLog也存在缺点,就是它是估计基数的算...
2018-06-22 10:03:48
538
原创 Redis-Jedis-String
package com.redis.string;import com.redis.util.RedisUtil;import org.junit.jupiter.api.Test;import redis.clients.jedis.Jedis;import java.util.List;public class StringTest { /** * get...
2018-06-20 18:00:53
279
原创 GIT的安装及上传代码到码云
1.前言 Git是一款免费、开源的分布式版本控制系统,可以敏捷高效地处理任何或小或大的项目。之前接触过git,可能由于觉着难用,所以一直没有研究。码云是一个可以开源文件平台,也经常从上面下载项目,但是从来没有共享过自己的资源。由于近期在研究springcloud,在config章节,发现配置资源问题,所以不得好好看看git相关。这里也是不断的探索,发现的操作,也算是一篇记录,记录一下操作的全过程...
2018-06-07 17:18:07
1423
原创 SpringCloud学习-(7)网关服务(Zuul)
1.Zuul是什么zuul 是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用。 zuul 在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。 zuul的例子可以参考 netflix 在github上的 simple webapp,可以按照netfli...
2018-05-25 13:39:21
264
原创 SpringCloud学习-(6)熔断器(Hystrix)
1.Hystrix说明1.1 服务雪崩效应:是一种因 服务提供者 的不可用导致服务调用者 的不可用,并将不可用 逐渐放大 的过程。如: A为服务提供者,B为A的服务调用者,C和D是B的服务调用者。当A的不可用,引起B的不可用,并将不可用逐渐放大C和D时,服务雪崩就形成了。1.2 雪崩原因:(1)服务提供者不可用 a.硬件故障: 硬件损坏造成的服务器主机宕机、网络硬件故障造成的服...
2018-05-24 16:42:11
765
原创 SpringCloud学习-(5)服务消费与负载均衡(feign)
前面两篇SpringCloud学习-(3)服务消费与负载均衡(ribbon) 和 SpringCloud学习-(4)服务消费与负载均衡(自定义ribbon) 介绍了使用ribbon+restTemplate实现负载均衡消费服务,本篇将介绍Feign实现服务的消费。1.Feign Feign is a declarative web service client. It makes wr...
2018-05-22 13:43:17
296
原创 SpringCloud学习-(4)服务消费与负载均衡(自定义ribbon)
前面一篇 SpringCloud学习-(3)服务消费与负载均衡(ribbon) 介绍了ribbon对客户端请求的负载均衡操作,从刷新浏览器端口变化规律可以看到ribbon默认使用的是轮询的方式对服务提供者提供的服务进行访问。那么如果我们想按照自己的规则进行负载均衡该怎么操作呢。本篇将介绍如何自定义负载均衡规则。本篇继续延续前面几篇介绍的例子向下进行,不建议读者从本篇文章作为起始点阅读。...
2018-05-21 20:11:09
355
2
原创 SpringCloud学习-(3)服务消费与负载均衡(ribbon)
前面一篇SpringCloud学习-(2)服务的注册与发现(Eureka),提供者向eureka注册中心注册了一个sayHello服务,然后访问提供者即可(是不是感觉有点儿绕路了呢?肯定有用啦,慢慢看)。1.启动eureka注册中心和服务提供者 延续上一篇的项目(读者尽量不要从这里开始看,而是从SpringCloud学习-(2)服务的注册与发现(Eureka)开始) springcloud...
2018-05-21 18:05:04
263
原创 SpringCloud学习-(2)服务的注册与发现(Eureka)
前面SpringBoot已经介绍了SpringBoot相关使用,如果对SpringBoot不了解可以先看一下。1.SpringCloud介绍 SpringCloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等,运行环境简单。SpringCloud是基于SpringBoot的。2.创建服务注册中心 ...
2018-05-21 15:33:51
494
基于不同字段的文字检索,mysql
2016-03-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人