自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王海涛的博客

脚踏实地--真真切切的学习技术。

  • 博客(37)
  • 资源 (2)
  • 收藏
  • 关注

原创 多线程(8)-Concurrent包下的Collection

大家知道hashset和hashmap等是线程不安全的。java1.5之前使用的是synchronized如Collection.synchronizedMap(),这就是使用代理,在使用方法真正的方法之前用synchronized锁住方法就同步了,Java1.5之后concurrent包下提供了特殊的Collection,包括ConcurrentHashMap,ConcurrentSki...

2018-11-08 01:34:19 276 2

原创 多线程(7)-阻塞队列

本文主要说下阻塞队列BlockQueue队列是先进先出的,创建时可以固定大小,也可以不固定。BlockQueue有很多实现,这里简单介绍ArrayBlockingQueue;在增加时阻塞,和删除时为空,查看帮助文档put() 阻塞住直到然后放入,take()offer()返回false,poll()返回nulladd()抛异常 ,remove()抛异常上代码pub...

2018-11-08 01:10:27 235 1

原创 多线程(6)-同步工具Semaphere,CyclicBarrier,CountDownLatch,Exchanger

多线程的同步工具Semaphere,CyclicBarrier,CountDownLatch,Exchanger的使用介绍Semaphere信号灯new Semaphere(3)创建出来就是三盏灯的意思,线程只要拿到许可就可以执行,执行完可以释放灯;上代码public class SemaphoreTest { public static void main(String[] ...

2018-11-08 00:20:35 235

原创 多线程(5)-线程锁的技术

本文主要介绍LocksLock比synchronized更加面向对象,对比synchronized我们直接上代码Lock lock = new ReentrantLock(); public void output(String name){ int len = name.length(); lock.lock(); try{ for(int i=0;i&l...

2018-11-07 23:02:56 248

原创 多线程(4)-线程池

Java5之后提供了线程池ThreadPool,concurrent包下的Executors提供了很多创建线程池的方法,根据不同需要,分开使用。包括但不限于newFixedThreadPool固定大小的线程池,newCachedThreadPool缓存线程池(根据线程多少创建线程数),newSingleThreadExecutor单线程(保证有一个线程),newScheduledThrea...

2018-11-07 18:33:06 126

原创 多线程(3)-多线程访问共享对象和数据的方式

在多线程(2)-ThreadLocal,我们讨论了线程范围内的数据共享,本篇文章我们讨论线程之间即多线程访问共享对象和数据的方式一:Java5之前给共享数据加上锁synchronized,上代码public class MultiThreadShareData { public static void main(String[] args) { ShareData1 data2...

2018-11-07 17:49:37 1138

原创 多线程(2)-ThreadLocal线程范围内的共享数据

本文主要介绍下ThreadLocal,重要的概念是线程范围内的数据共享线程之间的数据不相互干扰,int data = 0;A线程取A线程的数据data,B线程取B线程的数据data。怎样才能使上例子完成?我们直接上例子吧public class ThreadScopeShareData { private static int data = 0; private static Ma...

2018-11-07 16:07:34 2745

原创 多线程(1)传统线程回顾

本文介绍的传统线程的回顾是Java1.5之前回顾,你可以选择跳过。Thread类即线程类一线程的创建  1.1通过new Thread写出子类重写run方法Thread thread = new Thread(){ public void run(){System.out.println("")};}; thread.start();即可运行thread里面的...

2018-11-07 15:04:55 167

原创 秒杀的思路和部分技术概述

关于秒杀,给你做,你会怎么做?从架构角度思考怎么实现。一秒杀的场景业务分析关于秒杀、抢购、群红包、抽奖等等类似的业务场景可参考本文技术(提供方向),业务特点为大幅推广,持续时间短,瞬时高并发,针对业务需要的技术特点为读多写少,高并发,资源冲突为此技术选型:读多写少选择使用缓存,                         高并发选择缓存、限流、负载均衡、异步和队列 ...

2018-11-06 23:06:34 389 1

原创 nginx限流算法-令牌桶和漏桶

本篇文章简要介绍下nginx的令牌桶算法和漏桶算法令牌桶算法,桶的大小是固定,一固定的速度往桶里丢令牌,桶满了后,后面添加的令牌都将添加不进来,取令牌时,桶里有令牌,则处理这个取令牌操作;没令牌时,取令牌操作将被拒绝 漏桶算法(漏斗算法)桶的大小是固定,桶是有洞的。桶满后,水进不来;桶内的水会以固定速率漏水...

2018-11-06 22:24:07 3702 1

原创 spring事务的概述

spring提供了三个接口PlatformTransactionManager,TransactionDefinition,TransactionStatus PlatformTransactionManager这是一个顶层接口,长这样。 TransactionDefinition在TransactionDefinition中定义了大量的常量,最重要的应该是传播性和隔离...

2018-11-01 22:39:47 262

原创 spring事务管理实现原理-源码-传播属性-工作小结

本博客分为两点,一个是spring事务实现原理源码解读(个人能力,初步解读),二是spring事务的传播属性 简单案例,保存订单,修改商品数量就是这两个方法,第一个方法中引用了第二个方法,都用@Transactional注解。debug调用shopping方法。 spring事务实现的源码在调用方法时会扫描@Transactional,进入方法前会判断是否有注解(在...

2018-11-01 20:59:22 8492 1

原创 Java多线程和并发库

看了张孝祥老师的视频,准备总结下Java的多线程和并发库的知识,因为Java有更新,打算看完新版本的Java之后再出个专栏。留此博客,提醒自己有时间写专栏。(其实是想在1024时水个文章)Java多线程和并发库-专栏地址...

2018-10-24 23:25:15 1127

原创 sql经典笔试题

详见此处 表结构1.自行添加测试数据2.查询平均成绩大于60分的同学的学号和平均成绩;SELECT t1.sid 学生编号, AVG( t2.number ) 平均分 FROM student t1 LEFT JOIN score t2 ON t1.sid = t2.student_id GROUP BY t1.sid HAVING AVG( t2.nu...

2018-10-14 10:22:52 20690 2

原创 mysql优化之读写分离

读写分离我没有实际的操作,留下这篇文章等待实际学习和校验目前知道的概念是项目中读操作较多,会从slave数据库中读取,减轻负担,dml操作(insert update delete)从master数据库中操作,然后再进行master slave的复制,保持数据一致。等待具体操作和校验,留下思想,等我学习。 待续。。。...

2018-10-12 00:10:15 205

原创 分表技术

分表包括水平分表和垂直分表分表技术有(水平分割和垂直分割) 当一张越来越大时候,即使添加索引还慢的话,我们可以使用分表水平分表以qq用户表来具体的说明一下分表的操作.思路如图 :首先我创建三张表 user0 / user1 /user2 , 然后我再创建 uuid表,该表的作用就是提供自增的id,思路是根据ID除以3取余,余数为0/1/2不同,分别在三张表中,插入和...

2018-10-12 00:06:13 472

原创 如何选择mysql的存储引擎

在开发中,我们经常使用的存储引擎 myisam / innodb/ memorymyisam 存储: 如果表对事务要求不高,同时是以查询和添加为主的,我们考虑使用myisam存储引擎. ,比如 bbs 中的 发帖表,回复表. INNODB 存储: 对事务要求高,保存的数据都是重要数据,我们建议使用INNODB,比如订单表,账号表. 问 MyISAM 和 INNODB的区别1...

2018-10-11 23:00:25 195

原创 sql语句小技巧-持续更新

 sql语句的小技巧-之前的项目使用的是hibernate+jpa,几乎没写过sql,还是要继续学习,以后在这里持续更新sql语句小技巧,也会学习其他大佬的文章和技巧。 在使用group by 分组查询是,默认分组后,还会排序,可能会降低速度. 比如:在group by 后面增加 order by null 就可以防止排序. 2.有些情况下,可以使用连接来替代子查...

2018-10-11 22:57:29 488

原创 mysql优化之explain 指令

网上已经有很好的explain指令的资料,mysql手册也提供了帮助。本文通过图片小结下。图片来源自韩顺平老师教学explain 可以帮助我们在不真正执行某个sql语句时,就执行mysql怎样执行,这样利用我们去分析sql指令....

2018-10-11 22:52:39 463

原创 创建索引后,速度变快原因?以及索引失效总结

总结自韩顺平老师教学速度变快是因为搜索引擎的选择,一般是Btree,二叉树的话是logn的时间复杂度;索引失效的总结。以下是具体描述。原理示意图: . 索引使用的注意事项索引的代价:占用磁盘空间 对dml操作有影响,变慢 在哪些列上适合添加索引?  总结: 满足以下条件的字段,才应该创建索引.a: 肯定在where条经常使用 b: 该字段...

2018-10-11 22:49:07 635

原创 mysql四种索引

四种索引(主键索引/唯一索引/全文索引/普通索引) 添加 1.1主键索引添加当一张表,把某个列设为主键的时候,则该列就是主键索引create table aaa(id int unsigned primary key auto_increment ,name varchar(32) not null defaul ‘’);这是id 列就是主键索引. 如果你...

2018-10-11 22:34:07 1194

原创 Sql语句本身的优化-定位慢查询

如何从一个大项目中,迅速的定位执行速度慢的语句. (定位慢查询)大部分内容总结自韩顺平老师教学首先我们了解mysql数据库的一些运行状态如何查询(比如想知道当前mysql运行的时间/一共执行了多少次select/update/delete.. / 当前连接) show status(用处很多,自己看文档,在此列举常用的) 常用的:show status like ‘up...

2018-10-11 22:28:29 1737

原创 三范式-简单理解

文章部分内容截取自韩顺平老师教学资料。什么样的表才是符合3NF (范式)表的范式,是首先符合1NF, 才能满足2NF , 进一步满足3NF 1NF: 即表的列的具有原子性,不可再分解,即列的信息,不能分解, 只有数据库是关系型数据库(mysql/oracle/db2/informix/sysbase/sql server),就自动的满足1NF 2NF: 表中的记录是唯一的,...

2018-10-11 22:00:43 19719 5

转载 MySQL优化---存储过程和存储函数-1-转自博客园

转自互联网.mysql优化  当一个大型系统在建立时,会发现,很多的SQL操作是有重叠的,个别计算是相同的,比如:业务系统中,计算一张工单的计算方式。当遇到这些情况时,我们运用存储过程就是一个非常棒的优化啦。那么,什么是存储 过程和存储函数呢?一、MYSQL储存过程简介(技术文):储存过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不...

2018-10-11 21:29:09 139

转载 位运算小结

在看hashmap里看到了hash算法,有提到关于n对16取余,用的位与运算,在这里稍微总结下位运算,以后继续更新。 相关地址:http://www.cnblogs.com/shangxiaofei/p/5806346.html 按位与运算符(&)参加运算的两个数据,按二进制位进行“与”运算。运算规则:0&0=0;   0&1=0;    1&amp...

2018-10-10 18:29:03 105

转载 大数据工程师-学习路线-转

原文地址 https://blog.csdn.net/gitchat/article/details/78341484   【不要错过文末彩蛋】申明:本文旨在为普通程序员(Java程序员最佳)提供一个入门级别的大数据技术学习路径,不适用于大数据工程师的进阶学习,也不适用于零编程基础的同学。前言:一、背景介绍 二、大数据介绍正文:一、大数据相关的工作介绍 二...

2018-09-26 11:24:58 1492

转载 JDBC上关于数据库中多表操作一对多关系和多对多关系的实现方法--转

 原文地址----https://www.cnblogs.com/pangguoming/p/7028322.html黑马程序员我们知道,在设计一个Java bean的时候,要把这些BEAN 的数据存放在数据库中的表结构,然而这些数据库中的表直接又有些特殊的关系,例如员工与部门直接有一对多的关系,学生与老师直接又多对多的关系,那么这些表的关系如何表示呢?首先在建立数据库的时候就应该...

2018-09-20 10:52:51 1023

转载 java关于Timer schedule执行定时任务-转

java关于Timer schedule执行定时任务1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。private java.util.Timer timer; timer = new Timer(true); timer.schedule(new java.util.Timer...

2018-09-19 11:54:34 3452

转载 正则表达式matcher.group用法--转自winter8

正则表达式matcher.group用法博客分类:  算法 本贴来自       http://hi.baidu.com/cnjsp/blog/item/f5449d824c5102b46c8119cb.html  原来,group是针对()来说的,group(0)就是指的整个串,group(1) 指的是第一个括号里的东西,group(2)指的第二个括号里的东西。 最近学习正则表达式...

2018-09-11 15:09:14 113

转载 o(1), o(n), o(logn), o(nlogn) 随数据量的增大,耗时的增大-转载

在描述算法复杂度时,经常用到o(1), o(n), o(logn), o(nlogn)来表示对应算法的时间复杂度, 这里进行归纳一下它们代表的含义: 这是算法的时空复杂度的表示。不仅仅用于表示时间复杂度,也用于表示空间复杂度。 O后面的括号中有一个函数,指明某个算法的耗时/耗空间与数据增长量之间的关系。其中的n代表输入数据的量。 比如时间复杂度为O(n),就代表数据量增大几倍,耗时也增大几倍...

2018-08-31 11:23:35 634

原创 Mapstruct

给自己提个醒,有的时候需要不同类型的转化,此时自定义转化类的时候,需要加上注解@component注解具体的用法,大家自行百度,很简单。

2018-02-07 20:10:58 519

转载 swagger配置-转载

在知乎上看了这篇文章,简单明了上手swagger,我自己懒得写了。这个以后可以对着他写。码代码。Spring Boot中使用Swagger2构建强大的RESTful API文档由于Spring Boot能够快速开发、便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API。而我们构建RESTful API的目的通常都是由于多终端的原因,这

2018-01-16 21:14:46 9634 2

原创 玩了下循环

in:for(String strng :String[]){xxbreak in;}感觉很优雅,一年多前学习break ,continue,return的时候就把循环玩的飞起,当时没在意这个标记,现在在稍微复杂的地方,好用到飞起啊。小细节,大神莫见怪。

2018-01-16 20:47:21 114

原创 低级错误-多个if判断

多个if判断,如果都没成功走else,应该用if(){};else if(){};else if(){};else{};低级错误,警醒自己。

2018-01-11 23:19:06 234

原创 集合排序

用这个工具类Collections.sort(list)(当然你可以用Arrays排序数组,我说的集合)其中的list需要是实现了Comparable重写方法:@overritepublic int compareTo(T o){if(o == null){return -1;}if (this == o)return 0;return this.name.compareTo(

2018-01-11 23:06:18 361

原创 swagger常用注解

---------------------一:在controller层,1.1类上@Api(description="这是对这个controller的简介");1.2.方法上@ApiPeration(value="对这个方法的描述"),方法形参上有好几种,1.2.1(@RequestBody @ApiParam(name="UserModel") @Valid UserModel

2018-01-10 15:44:59 235

原创 swagger升级更高级jar包后,浏览器没出来效果。

早就想写,好友博臣写得很溜了,向他学习,这是我第一次写。1写了以后提醒自己,2以后也可以和大家交流,最终目的为了自己技术上的进步-------------------------------------好,言归正传。这已经是第二次犯这个错了,后来发现就是浏览器缓存的原因,你清一下浏览器的缓存就好了,就这么简单。这里有深层的原因,以后有时间再来看,先改BUG

2018-01-10 15:16:24 1023 2

ideaworkspace.zip

简单例子,给自己看的,是一个简单的实例。里面包括了socket的实例,cloud简单实用。

2019-07-31

zookeeper集群搭建

里面介绍了zookeeper的集群搭建和leader算法,是开课吧的资料,大家可以看下。

2018-11-08

空空如也

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

TA关注的人

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