自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不积跬步无以至千里,不积小流无以成江海。一个喜欢学习分享的程序员

欢迎一起学习交流,如果私信/评论必会抽空回复,希望能帮到您。

  • 博客(31)
  • 资源 (4)
  • 收藏
  • 关注

原创 HashMap源码解读(jdk1.8)

本文基于jdk1.8解读HashMap关键代码HashMap是非线程安全的,在多线程环境下要使用ConcurrentHashMap存储结构HashMap的存储结构是数组 + 链表 + 红黑树,当链表的长度大于等于8时,链接转成红黑树初始化HashMap初始容量是16,默认负载因子是0.75当然初始化的时候也可以传入指定容量大小。那么是不是传入多少,初始化的容量就是多少呢?/** ...

2018-11-29 10:17:45 155

原创 数据库幻读_脏读_不可重复读

要清楚幻读、脏读、不可重复读,必须先搞清楚事务的隔离级别事务隔离级别数据库事务的隔离级别有4个,由低到高依次为Read uncommitted 、Read committed 、Repeatable read 、Serializable ,这四个级别可以逐个解决脏读 、不可重复读 、幻读 这几类问题。隔离级别脏读不可重复读幻读Read uncommitted√√...

2018-11-26 12:58:44 986

原创 如何对map进行排序

Map介绍常用的Map有HashMap,TreeMap,LinkedHashMapHashMap:最常用的Map,根据key的HashCode值来存储数据,根据key可以直接获取它的Value,具有很快的访问速度。HashMap最多只允许一条记录的key值为null(多条会覆盖);允许多条记录的Value为null。非线程安全TreeMap: 根据key排序,默认是按升序排序,也可以指定排序...

2018-11-22 16:05:40 40567

原创 多线程之Future使用详解

什么是FutureFuture是一个未来对象,里面保存这线程处理结果,它像一个提货凭证,拿着它你可以随时去提取结果什么时候使用在两种情况下,离开Future几乎很难办。一种情况是拆分订单,比如你的应用收到一个批量订单,此时如果要求最快的处理订单,那么需要并发处理,并发的结果如何收集,这个问题如果自己去编程将非常繁琐,此时可以使用CompletionService解决这个问题。Comple...

2018-11-22 16:03:28 7326 1

原创 Memcached安装及配置

文章目录准备安装安装libevent安装memcached安装memcached-replication启动测试基本 memcached 客户机命令memcached 修改命令参数缓存管理命令参考资料java客户端与hibernate集成参考资料memcached-session-manager介绍环境准备的jar包配置参考资料准备从http://memcached.org/下载最新版的mem...

2018-11-21 14:50:15 4797

原创 JAVA实现网页抓取(htmlunit)

准确条件加入依赖jar包<dependency> <groupId>net.sourceforge.htmlunit</groupId> <artifactId>htmlunit</artifactId> <version

2018-11-21 14:13:38 8412

原创 mysql存储过程批量更新

mysql存储过程批量更新以下sql单独运行没问题,但是在存储过程中执行2次就会报错update tbl_a a ,tbl_b b set a.name =b.name where a.id=b.id在存储过程中,取代的方案是使用游标循环更新drop procedure IF EXISTS test_proc;delimiter //create procedure test_pro...

2018-11-21 13:47:38 1277

原创 不用使用中间变量让两个int变量的值互换

不用使用中间变量让两个int变量的值互换这个问题在面试的时候出现概率很高,相信还有很多人不会在回答这个问题前,让我们先看看异或这个运算符什么是异或变量的值不同时结果为1,值相同时结果为0在java中异或的符号是 ^,具体运算结果看下表:ab值000011110101正确做法了解了什么是异或后,我们在看看看正确的做法,代码如...

2018-11-20 20:16:12 917

原创 JWTs结合SpringCloud使用代码示例

文章目录什么是JWT在什么时候使用JWTsJWTs结合SpringCloud使用首先,需要创建一个独立的gate服务后台服务工程添加过滤器总结什么是JWTJSON Web Token (JWT)是一种基于 token 的认证方案。简单的说,JWT就是一种Token的编码算法,服务器端负责根据一个密码和算法生成Token,然后发给客户端,客户端只负责后面每次请求都在HTTP heade...

2018-11-18 11:17:49 6440 4

原创 红黑树简介

什么是树树是一种数据结构,有一个根节点每个节点包含n(n>=0)个子节点没有子节点的节点称为叶子节点二叉树二叉树是每个节点最多有两个子树的树结构通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)二叉树常被用于实现二叉查找树和二叉堆二叉树的节点放置规则是:任何节点的键值一定大于其左子树中的每一个节点的键值,并小于其右子树中每一个节点的...

2018-11-17 23:35:16 186

原创 一致性hash算法代码实现

什么是一致性hash一致性哈希算法(Consistent Hashing Algorithm)是一种分布式算法,常用于负载均衡。Memcached client也选择这种算法,解决将key-value均匀分配到众多Memcached server上的问题。它可以取代传统的取模操作,解决了取模操作无法应对增删Memcached Server的问题(增删server会导致同一个key,在get操作时...

2018-11-16 20:55:08 693

原创 使用zookeeper作为服务注册中心

zookeeper作为服务注册中心下载安装zookeeper官网下载最新版,修改conf/zoo.cfg配置文件,如果是windows系统必须指定dataDir具体路径运行bin/zkServer.cmd启动zookeeper服务注意,zookeeper版本必须高于工程依赖的zookeeper客户端版本工程配置pom文件添加依赖<dependency> &...

2018-11-15 16:35:52 526

原创 maven发布插件:maven-release-plugin

maven发布插件:maven-release-plugin提供自动化发布功能,自动升级版本,并将代码提交git服务器添加插件依赖,pom.xml配置配置插件<plugin> <groupId>org.apache.maven.plugins</groupId> <artifa

2018-11-15 16:31:51 3210

原创 SpringBoot SpringCloud学习

文章目录SpringBoot SpringCloud学习1. 创建基本maven工程,修改pom.xml,完整内容如下2. 新建Application.java类,添加注解配置3. 添加main方法4. 使用RestTemplate调用远程服务5. 配置数据源6. 集成zookeeper7. 集成eureka服务eurekaServer配置eurekaClient配置8. 其他配置9. 单元测试1...

2018-11-15 16:16:26 439

转载 http 协议简单介绍

httpHTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。http 请求客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request ...

2018-11-14 17:06:06 202

原创 ArrayList源码解读

本文基于jdk1.8解读ArrayList关键代码ArrayList是非线程安全的,在多线程环境下要使用CopyOnWriteArrayList存储结构ArrayList内部存储结构是数组,ArrayList的容量就是数组的长度/** * The array buffer into which the elements of the ArrayList are stored. * Th...

2018-11-14 11:21:47 126

转载 高可用架构设计思路

什么是高可用高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。如何保障高可用减少单点,服务器集群化服务分层,并且每层都是集群,当集群中一个节点发生故障时,要自动将请求转移到可用节点上,此转移过程要对调用方透明常见的服务分层思路客户端层:典型调用方是浏览器browser或者手机应用APP反向代理...

2018-11-14 10:23:35 1051

原创 mysql数据库空间大小查询

前台线程定义:普通线程又可以称为用户线程,只完成用户自己想要完成的任务,不提供公共服务。通过new Thread()产生的线程默认都是前台线程。前台线程在程序执行完成后,才会自己退出,不会随着主线程的退出而退出。假设main线程已经退出了,但是该线程还未执行完成,还会继续执行直到线程自己退出。java线程池启动的是前台线程后台线程定义:指在程序运行的时候在后台提供一种通用服务的线程,并...

2018-11-12 20:28:53 182

原创 SpringBoot集成Swagger

文章目录SpringBoot集成Swagger引入jar包编写配置类文档注解示例常用注解说明启动并访问参考资料SpringBoot集成Swagger引入jar包<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2&am

2018-11-09 19:47:10 207

原创 logstash+elasticsearch+kafka统一日志收集

文章目录logstash+elasticsearch+kafka统一日志收集环境准备参数配置其他说明通过kafka搜集日志引入第三方包kafka-log4j-appender配置kafka appenderlogstash配置kafka输入参考资料logstash+elasticsearch+kafka统一日志收集环境准备以下相关软件可从(http://pan.baidu.com/s/1c1...

2018-11-09 19:28:37 4689 1

原创 Redis集群配置

Redis集群配置编译安装redis参考redis安装创建redis节点先每个节点单独创建一个配置文件如redis1.conf,redis2.conf,redis3.conf,redis4.confbind 192.168.1.41daemonize yes //redis后台运行pidfile /var/run/redis...

2018-11-09 18:56:59 168

原创 Redis 安装使用

redis 安装使用说明高性能缓存中心。发布/订阅,支持消息事务,支持lua脚本,支持数据存储支持master/slave主从配置3.0以后版本支持分布式下载安装从官网下载3.0之后的版本 下载linux安装wget http://download.redis.io/releases/redis-3.2.1.tar.gztar xzf redis-3.0.6.tar.gz...

2018-11-09 18:55:51 170

原创 jdk8 Lambda 表达式详解

lambda表达式主要是用来替换匿名内部类。必须配合函数接口一起使用。JDK中大多数接口已经被声明为函数接口函数接口必须使用@FunctionalInterface声明,并且,接口中只能有一个抽象方法,可以有其他的默认方法(default)或静态方法(static)@FunctionalInterfacepublic interface Formula { //抽象方法 ...

2018-11-08 17:49:12 270

原创 java前台线程和后台线程

前台线程定义:普通线程又可以称为用户线程,只完成用户自己想要完成的任务,不提供公共服务。通过new Thread()产生的线程默认都是前台线程。前台线程在程序执行完成后,才会自己退出,不会随着主线程的退出而退出。假设main线程已经退出了,但是该线程还未执行完成,还会继续执行直到线程自己退出。java线程池启动的是前台线程后台线程定义:指在程序运行的时候在后台提供一种通用服务的线程,并...

2018-11-08 17:47:47 252

原创 【Java进阶】Java线程间通讯的几种方式

一、使用同一个共享变量控制Synchronized、wait、notifyLock、Condition利用volatile利用AtomicInteger二、PipedInputStream、PipedOutputStream三、利用BlockingQueue

2018-11-06 20:28:29 20357 2

原创 升级springBoot2.0注意事项

升级springBoot2.0注意事项配置修改server.servlet.context-path:/baseureka server<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-sta

2018-11-06 18:41:43 459

原创 微信支付对接【踩坑实录】

文章目录微信支付对接【踩坑实录】公众号支付必备条件注意点环境配置页面开发微信支付对接【踩坑实录】公众号支付必备条件拥有一个认证过的公众号公众号开通微信支付注意点timestamp参数js使用的是小写,后台签名使用的是timeStamp(大写S)签名算法必须使用MD5,并且下单的签名算法也必须是MD5(微信的demo sdk留下一个巨大的坑,判定Sandbox环境使用MD5,其...

2018-11-06 18:24:31 417

原创 vue简介

文章目录vue简介安装命令行工具 (CLI)Vue 实例数据与方法模板语法文本原始 HTML特性使用 JavaScript 表达式指令参数修饰符缩写v-bind 缩写v-on 缩写计算属性和侦听器计算属性 vs 侦听属性计算属性的 setterClass 与 Style 绑定绑定 HTML Class数组语法条件渲染列表渲染事件处理监听事件事件修饰符按键修饰符表单输入绑定修饰符组件使用组件全局注册...

2018-11-06 18:22:20 173

原创 Java泛型通配符extends与super

java 泛型关键字说明? 通配符类型<? extends T> 表示类型的上界,表示参数化类型的可能是T 或是 T的子类<? super T> 表示类型下界(Java Core中叫超类型限定),表示参数化类型是此类型的超类型(父类型),直至Objectextends 示例static class Food{}static class Fruit e...

2018-11-06 18:15:01 321

原创 Lock和synchronized的区别和使用

Lock和synchronized的区别和使用同步的三个特性:原子性、可见性、有序性synchronized没办法手动释放锁,正因为这样,有可能会导致死锁加锁的三个位置:实例方法,以当前实例对象为锁静态方法,以当前class为锁代码块,指定锁对象java虚拟机对Synchronized的优化锁的状态分四种:无锁状态、偏向锁、轻量级锁、重量级锁随着锁的竞争,锁可以从偏向锁升级...

2018-11-06 17:37:56 267

原创 模板引擎thymeleaf简介

文章目录模板引擎thymeleaf简介配置,结合springBoot语法简介基本表达式工具类表达式示例,格式化日期th:object 选中对象(*号表达式)th:block标签Expression inliningth:removeEL表达式直接调用bean方法表达式参考资料模板引擎thymeleaf简介Thymeleaf是一个XML/XHTML/HTML5模板引擎,可用于Web与非Web环境...

2018-11-06 17:35:10 466

echarts 显示中国地图以及省份

echarts 显示中国地图以及省份

2024-09-10

视频解说设计模式,设计模式的由来,分类,以及关联

设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。 使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。

2024-01-03

快速排序算法解说,动画演示

快速排序是一种分治思想的排序算法,它的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后再分别对这两部分记录继续进行排序,以达到整个序列有序的目的。 快速排序的时间复杂度为O(nlogn),它的性能比冒泡排序和插入排序要好得多,特别是在大型列表上。

2024-01-03

归并排序解说,动画演示

归并排序是一种分治思想的排序算法,它的基本思想是将待排序的数组分成若干个子序列,每个子序列都是有序的,然后再将子序列合并成一个有序的数组。 归并排序的时间复杂度为O(nlogn),它的性能比冒泡排序和插入排序要好得多,特别是在大型列表上。

2024-01-03

希尔排序算法解说,动画演示

希尔排序是一种改进的插入排序算法,它的基本思想是将待排序的数组按照一定的间隔进行分组,对每组使用插入排序算法进行排序,然后缩小间隔,再对分组进行排序,直到间隔为1为止。 逐渐减小间隔大小的方法有助于提高排序过程的效率,可以减少比较和交换的次数。这是希尔排序算法的一个关键特点。 希尔排序的时间复杂度为O(n^2),但实际上它的性能比插入排序要好得多,特别是在大型列表上。希尔排序的性能取决于间隔序列的选择,但是目前还没有一种最优的间隔序列。

2024-01-03

选择排序算法解说,动画演示

选择排序是一种简单的排序算法,它的基本思想是每次从待排序的元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的元素排完。 选择排序的时间复杂度为O(n^2),这使得它在大型列表和实际应用中效率低下。但是,由于其简单性,它是向初学者教授排序的好算法。

2024-01-03

排序算法详解,动画演示

冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就交换位置。这个过程持续对数列的末尾进行,直到整个数列都排序完成。 冒泡排序的时间复杂度为O(n^2),这使得它在大型列表和实际应用中效率低下。但是,由于其简单性,它是向初学者教授排序的好算法。

2024-01-03

Spring2.0中文教程

Spring2.0中文教程 文档清晰、全面、非扫描件

2011-06-23

Oracle性能优化-SQL编写的一般规则

Oracle性能优化-SQL编写的一般规则。总结了oracle性能问题的方方面面

2011-06-23

project培训手册

写的非常好。简单明了,归纳的非常精确,值得大家一看

2011-06-19

空空如也

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

TA关注的人

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