自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (8)
  • 收藏
  • 关注

原创 1.8HashMap源码分析

1、类的基本结构HashMap则是采用拉链法解决哈希冲突最具代表性且最广泛被使用的应用。在1.7及之前版本完全是采用链表来解决,而1.8版本中则比较复杂,在链表的基础上,当链表达到一定长度的时候会转换为红黑树。先读下API文档Hash table based implementation of the Map interface. This implementation provides all of the optional map operations, and permits null va

2021-08-20 01:05:35 335

原创 inheritableThreadLocal源码分析

InheritableThreadLocal是ThreadLocal的子类,当父线程创建一个InheritableThreadLocal对象之后,InheritableThreadLocal的内容能够在这个父线程的所有子线程中共享。这个实现相当有意义。比如可以利用这个类实现多线程的共享事务。这个类实际上非常简单,在Thread源码中对其做了支持。一、使用1、测试有如下测试类,在main函数的主线程中给InheritableThreadLocal设置了一个字符串。之后在这个主线程的各个子线程中进行

2021-08-20 01:03:50 247

原创 ThreadLocal源码分析

一、使用1、使用例子看如下示例代码,我们有两个线程,a和b,线程a启动之后,sleep 2秒,从threadlocal t1中取获取person实例 p,线程b,启动之后,sleep 1秒,然后set Person的实例p到threadlocal t1中去。public class ThreadLocalTest { volatile static Person p = new Person(); static ThreadLocal<Person> t1 =

2021-08-19 16:33:59 188

原创 MYSQL行与列限制

1、列数量限制从mysql官网可知每个数据表限制列数量为4096,官网也说了一般比这个更小,取决于以下几个因素:最大行大小会影响表的列数,因为总的列长度不能超过该大小存储引擎、字符集、排列方式、存储格式也有一定的影响功能性的key也会有影响,比如索引就会生成一个隐含的虚拟列,其他也是如此,对列数量也有一定限制2、行大小限制mysql内部机制允许每一个表有一个最大的行大小为6553...

2019-10-08 17:55:39 4001

原创 MYSQL锁机制

1、准备create table mylock( id int not null primary key auto_increment, `name` varchar(20)) ENGINE myisam;insert into mylock(name) values ('a');insert into mylock(name) values ('b');insert into m...

2019-10-08 17:04:22 159

原创 MYSQL索引优化建议

1、索引失效1.1 基本原则全值匹配我最爱最佳左前缀法则,对于多列索引,查询从最左前列开始,不跳过索引中的列不在索引列上做任何操作,计算、函数、自动/手动类型转换),否则会导致索引失效导致全表扫描存储引擎不能使用索引中范围条件右边的列尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致)),减少select *mysql在使用不等于(!=或者<>)的时候无法使用索引...

2019-10-08 17:03:46 216

原创 MYSQL 表优化

一、单表优化1、准备create table if not EXISTS `article`( `id` int(10) UNSIGNED not NULL PRIMARY key AUTO_INCREMENT, `author_id` int(10) UNSIGNED not NULL, `category_id` int(10) UNSIGNED not NULL, `views`...

2019-10-08 17:02:08 192

原创 MySQL explain关键字详解

1、explain输出列mysql> explain select tm.* from ((select * from t1) union (select * from t2) union (select * from t3)) tm;+------+--------------+--------------+------------+------+---------------+--...

2019-10-08 17:00:26 315

转载 记一次环境变量导致的elasticsearch启动错误:max file descriptors [65535] for elasticsearch process is too low, incre

 问题描述,elasticsearch启动时报max file descriptors错误: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2...

2019-01-25 10:35:02 7475

原创 Jenkins+gitlab常见错误

gitlab:502一般是电脑配置不够(预留4G内存是最好,不过谷歌浏览器访问时会有些问题,此时清空缓存即可)、端口冲突422错误的话,就是清空缓存/cookie试试,不行就重装,不知道什么意思!!! Jenkins默认端口8080,密码这些都提示,然后可能会发生端口占用,然后无法通过web访问,修改配置文件/etc/sysconfig/jenkins即可 Jenkins整合g...

2018-12-03 13:32:49 2945 1

原创 深入理解动态代理

1、代理特点执行者、被代理人对于被代理人来说,这件事情一定要做,但是又不想去做或者没时间去做需要获取被代理人的个人资料2、jdk动态代理这里以一个买票的实例进行深入买票服务public interface Person { //买票 void butTicket(); String getBegin(); String getNam...

2018-12-03 13:21:06 186

转载 看懂UML类图和时序图

1、从一个示例开始车的类图结构为&lt;&lt;abstract&gt;&gt;,表示车是一个抽象类; 它有两个继承类:小汽车和自行车;它们之间的关系为实现关系,使用带空心箭头的虚线表示; 小汽车为与SUV之间也是继承关系,它们之间的关系为泛化关系,使用带空心箭头的实线表示; 小汽车与发动机之间是组合关系,使用带实心箭头的实线表示; 学生与班级之间是聚合关系,使用带空心箭头的实线表...

2018-11-26 13:39:28 335

转载 持续集成之 Jenkins 的安装与配置(一)

一、持续集成的概念Jenkins 是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,功能包括:持续的软件版本发布/测试项目。 监控外部调用执行的工作。 1、持续集成 持续集成是指开发者在代码的开发过程中,可以频繁的将代码部署集成到主干,并进程自动化测试 。 2、持续交...

2018-11-10 18:08:43 209 1

转载 数据库实战技巧

述十四个技巧,是许多人在大量的数据库分析与设计实践中,逐步总结出来的。对于这些经验的运用,读者不能生帮硬套,死记硬背,而要消化理解,实事求是,灵活掌握。并逐步做到:在应用中发展,在发展中应用。       1. 原始单据与实体之间的关系          可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。在特殊情况下,它们可能是一对多...

2018-11-09 14:11:36 196

原创 maven常用技巧

1、查看依赖树:mvn denpendency:tree &gt; d.txt,常用于排查jar包冲突2、mvn versions:set -DnewVersion=1.1-SHAPSHOT,前提得有依赖:&lt;plugin&gt; &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt; &lt;artifactId&gt;ve...

2018-11-04 21:43:25 235

转载 dependencies与dependencyManagement的区别

1、DepencyManagement应用场景         当我们的项目模块很多的时候,我们使用Maven管理项目非常方便,帮助我们管理构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。         由于我们的模块很多,所以我们又抽象了一层,抽出一个itoo-base-parent来管理子项目的公共的依赖。为了项目的正确运行,必须...

2018-11-04 03:18:19 131

转载 浅谈maven中的scope,systempath

scope  maven中scope的默认值是compilescope的分类1)compile 默认是compile。compile表示被依赖项目需要参与当前项目的编译,包括后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。2)test 表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行。比较典型的如junit3)runtime 表示被依赖项...

2018-11-04 03:11:47 505

原创 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4根据异或的运算法则,2^2^3^1^1=0^3^0=3;所以:class Solution ...

2018-10-04 16:28:27 5649 1

原创 实践杂谈

1、微服务项目结构1、传统项目中一般分为三层架构MVC,缺点就是某个功能出错可能会导致整个项目崩溃,而且随着项目越来越大,维护起来也比较困难,开发时,对于项目的代码整合也是一个比较大的难题。2、分布式系统开发,其实就是将一个大的项目分为不同的系统(记住不是服务)进行开发,这里所指的系统可能包括多个服务,系统之间互不影响,独立运行。3、SOA在分布式开发的基础上,按照服务进行业务的划...

2018-09-07 05:59:39 185

原创 多个application.yml

在项目中,如果是多个模块进行开发,每个模块又都有自己的application.yml,此时加载时只会加载启动类的配置文件,也就是只能加载一个application.yml。解决?将那个需要添加进主项目的配置文件改名比如application-common.yml然后spring: profiles: include: common在主类如此添加即可引用common...

2018-09-04 11:40:53 4856 1

原创 Dubbo

1 dubbo概述Dubbo是一个分布式开源框架,致力于提供高性能以及透明化的RPC远程服务调用方案,SOA服务治理方案,说白了本质上就是一个远程服务调用的分布式框架。核心:1、远程通讯:提供对多种基于长连接的NIO框架抽象封装,包括多线程模型2、集群容错:提供基于接口方法的透明远程小勇,包括多种协议,以及负载均衡、失败容错、集群、地址路由、动态匹配值等3、自动发现:基于注册中...

2018-08-28 06:47:59 159

原创 Zookeeper

1 Zookeeper概述1.1 什么是zookeeperzookeeper是一个分布是开源框架,提供了协调分布式应用的基本服务,它向外部暴露了一组通用服务——分布式同步、命名服务、集群维护等。它主要是简化了分布式应用协调及其管理的难度。提供高性能的分布式服务。为别的分布式程序服务,本身就是一个分布式程序。一般有这几个功能:发布订阅、负载均衡、分布式锁、分布式文件配置中心、master...

2018-08-27 20:51:56 414

原创 微服务

1 微服务简介1.1 项目演变过程项目演变过程分为三个阶段:传统项目——&gt;面向服务架构(SOA)——&gt;微服务传统项目其实就是基于MVC架构的单点应用,将所有的业务逻辑、数据访问层、控制层都放到一个项目中。优点:适合小项目小团队开发,不适用于大的项目开发。为什么?因为一个大的项目肯定有很多人一起开发,每个人需要开发一些功能然后整合到项目中,比如两个人同时修改了同一个类或者一个...

2018-08-27 01:40:20 324

原创 分布式任务调度

1 任务调度定时JOB,在什么时间进行执行代码任务。1.1 使用线程方式public static void main(String[] args) { Runnable runnable = new Runnable() { @Override public void run() { while (true) { try { Threa...

2018-08-25 02:08:41 2704 2

原创 message中间件

1 中间件1.1 同步请求传统的基于请求/响应的通讯方式,如上图会发生很多问题,比如A通过httpclient调用B的接口(对外暴露的API)请求数据时,在B处理请求以及响应的过程中,A一直阻塞等待响应,在这个过程中还可能由于网络问题导致B的响应没有及时到达,而A由于超时会触发重试机制,不仅占用宽带而且增加了B的压力。甚至可能因为B服务器挂掉之后,对于A要同步到B的数据没有及时同步而产...

2018-08-24 06:48:10 714

原创 Nginx

1 Nginx入门1.1 Nginx概述Nginx是一款高性能的http服务器/反向代理服务器以及邮件服务器,cpu、内存资源消耗小,并发量高(5万)。反向代理、代理服务器、静态服务器。作用:集群(减轻单台服务器压力)、反向代理(不暴露真实ip地址)、虚拟服务器(一台服务器提供多个网站)、静态的服务器(动静分离)。选择Nginx?性能好、占用内存CPU资源少、轻量级服务器、同时...

2018-08-22 21:20:33 370

原创 Java缓存机制

1 Java缓存1.1 jvm内置缓存Java中实现缓存的方式有很多,比如用static hashMap基于内存缓存的jvm内置缓存,简单不实用,保对象的有效性和周期无法控制,容易造成内存急剧上升。常用的有Oscache(主要针对jsp页面),Ehcache(主要针对数据库访问层),Jcache,Jbosscache等等很多缺点:容易内存溢出、没有持久化(服务重启后丢失)、线程安全、多...

2018-08-21 02:53:25 61118 2

原创 Spring boot性能优化

1 Spring boot性能优化1.1 扫包优化@SpringBootApplication注解自动获取应用的配置信息,会给应用带来一些副作用。由自动配置( auto-configuration )和 组件扫描 ( component scanning )组成,这跟使用 @Configuration、@EnableAutoConfiguration 和 @ComponentScan 三个...

2018-08-19 22:17:17 21084

原创 SpringBoot

1 SpringBoot概述敏捷开发(整合框架,直接加入依赖就好,自动配置);无须Tomcat(Java应用程序方式运行,实际jar包),内置Tomcat减少xml配置(甚至没有),配置文件properties/yml注解形式SpringBoot 是一个快速开发的框架,能够快速的整合第三方框架,简化XML配置,全部采用注解形式,内置Tomcat容器,帮助开发者能够实现快速开发,...

2018-08-19 16:34:55 3804 2

原创 spring源码分析

1、spring ioc源码分析 Spring IOC中bean的创建是利用反射+xml解析实现的,因此这里也围绕这个来做分析。ClassPathXmlApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");Spring所有的工作由这一句代...

2018-08-17 02:51:18 12400 11

原创 Spring事务

1、事务概述事务是一系列的动作,他们综合在一起才是一个完整的工作单元,这些动作必须全部完成,如果有一个失败的话,那么事务就会会滚到最开始的状态,仿佛什么都没发生过一样,用来保证数据的完整性和一致性。特性:1、原子性:事务中包含的所有操作要么全部成功,要么全部失败回滚,不可再分。2、一致性:就是说一个事务执行之前和执行之后都必须处于一个一致性状态。,比如a和b两个用户,a向b转账后,...

2018-08-13 10:05:37 130

原创 spring IOC和AOP

1 Spring概述企业级 Java 应用程序开发框架。开源的 Java 平台。轻量级的框架,其基础版本只有 2 MB 左右的大小。扩展性好。我的理解:Spring是一个解决bean(对象)的创建以及与其他对象之间依赖关系的一种框架(容器)。且可以和洽谈的一些框架进行整合使用,例如struts2、mybatis、hibernate等。那么我们为什么需要这个东西?这个就要说到...

2018-08-12 21:59:06 251

原创 mybatis基础

1、mybatis简单例子MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数库中的记录.mybatis和hibernate区别...

2018-08-11 14:22:34 345

原创 Mysql优化

1 数据库设计要合理(3F)为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。关系型数据库中这种规则称为范式。1.1 三大范式1.1.1 第一范式1NF是对属性的原子性约束,要求属性列具有原子性,不可再分解;id name address 1   xiaoming  广州市番禺区大山村 以上图User表为例,所谓的原子性其实取决...

2018-08-11 10:48:09 338

原创 Web开发高级技术

1 http长连接与短连接HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。1.1 如何理解HTTP协议是无状态的HTTP协议是无状...

2018-08-09 03:52:46 5278

原创 Http协议入门

1 什么是http协议http协议:浏览器客户端和服务器端之间数据传输的格式规范1.1 Http请求GET /hello HTTP/1.1 -请求行Host: localhost:8080 --请求头(多个key-value对象)User-Agent:Mozilla/5.0 (Linux; Android 6.0;...

2018-08-07 14:43:12 490

原创 Web开发入门

1 Web基础1.1 javaee和javasejavase: java桌面程序,控制台控制,,多线程,IO,网络(socket), gui界面javaee:java web程序。浏览器控制1.2 软件的结构一般软件结构有两种B/S和C/S两种。C/S(Client-Server 桌面应用程序-&gt;客户端-服务端):特征:需要下载安装包才能运行,服务端升级时客户端也...

2018-08-06 09:54:45 177

原创 垃圾回收机制算法

 1 垃圾回收机制概述Java垃圾回收机制其实就是GC线程不定时的回收堆内存中的不可达对象。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存。1.1 垃圾回收过程注意:不可达对象并不会马上就被直接回收,而是至少要经过两次标记的过程。 第一次被标记过的对象,会检查该对象是否重写了f...

2018-08-06 07:05:40 4926

原创 netty编程

目录1 netty概述2 Netty服务端3 Netty客户端4 长连接和短连接区别5 粘包/拆包怎么解决呢?6 序列化与自定义序列化协议8 几种流行的序列化协议比较8.1XML8.2 JSON8.3 Fastjson8.4 Thrift8.5 Avro8.6 Protobuf8.7 其它8.8 性能对比图解选型建议1 net...

2018-08-04 13:37:30 384

原创 NIO编程

1 NIO概述Java NIO(New IO)是一个可替代Java IO API(从Java1.4开始),JAVA NIO提供了与标准IO不同的工作方式。Java NIO:Channels and Buffers(通道和缓冲区)标准的IO基于字节流或者字符流进行操作,而NIO基于通道和缓冲区进行操作,数据是总是从通道读取的缓冲区中,或者从缓冲区写入到通道中。Java NIO:Non...

2018-08-03 05:09:27 6200 2

dubbo-amdinUI

一个基于可视化的管理dubbo服务的平台,可实现负载均衡、服务治理、动态配置、路由等

2018-08-28

zookeeper开发工具

一种分布式的开源框架、用于分布式应用系统之间的协调与维护

2018-08-27

active-windows

Apache下的一个子项目。 类似于ZeroMQ,它能够以代理人和点对点的技术实现队列。

2018-08-23

nginx-Linux

在Linux环境下安装nginx,一款高性能的http服务器、反向代理服务器

2018-08-22

Nginx-windows

一款高性能的http服务器、反向代理服务器、邮件服务器、解决跨域问题(搭建企业级api接口网关)、房dos攻击等

2018-08-21

linux-redis

Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。

2018-08-20

redis-client

RedisClient是Redis客户端的GUI工具,使用Java swt和jedis编写,可以方便开发者浏览Redis数据库。该软件支持简体中文,非常适合国内用户使用,不需要汉化就可以直接使用

2018-08-20

redis-windows

windows环境下的的redis数据库,完全开源免费的,遵守BSD协议,高性能的key-value菲关系型数据库

2018-08-20

空空如也

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

TA关注的人

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