自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(128)
  • 资源 (1)
  • 收藏
  • 关注

原创 Assert断言的使用

断言方法说明:单元测试中,常用的断言方法介绍:Assert.AreEqual() 测试指定的值是否相等,如果相等,则测试通过;Assert.Inconclusive() 表示一个未验证的测试;Assert.IsTrue() 测试指定的条件是否为True,如果为True,则测试通过;Assert.IsFalse() 测试指定的条件是否为False,如果为False,则测试通过;Asser...

2019-09-06 16:48:31 608 1

原创 mock服务搭建-papi接口管理平台

内网部署(以RHEL/CentOS为例)环境要求nodejs(7.6+)mongodb(2.6+)1.安装nodejscurl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -yum -y install nodejs***如果没有编译环境,则需要yum install g...

2019-06-05 09:54:55 1346

原创 Mock服务搭建——mongo的连接

一、安装 mongodb1.install 之前,iTerm2 下用 brew 查看已安装软件、搜索 mongodb: 1 2 brew list brew search mongodb 2.安装 mongodb : 1 brew install mongodb 此处需要稍等一段时间,成功后...

2019-06-04 18:46:31 782

原创 事务回滚时的异常处理机制

一、Java异常1.运行时异常和非运行时异常(1)运行时异常特点是Java编译器不会检查它;(2) 非运行时异常(编译期异常):如果不处理,程序就不能编译通过。如IOException、SQLException;二、使用事务时对异常的处理1.声明式事务只对运行期异常RuntimeException做rollback,特殊情况下需要对编译器异常转换为运行期异常。2.spri...

2019-05-09 16:13:28 1356

原创 遍历中修改HashMap的Key

public static void main(String[] args) { HashMap<String, String> hashMap = new HashMap<>(); for (int i = 0; i < 6; i++) { hashMap.put("key-" + i, "valu...

2019-05-07 16:49:01 2853

转载 分布式定时任务的异步处理

最近项目中遇到一个问题 , 在SpringBoot中设置了定时任务之后 , 在某个点总是没有执行 . 经过搜索研究发现 , spring 定时器任务scheduled-tasks默认配置是单线程串行执行的 . 即在当前时间点之内 . 如果同时有两个定时任务需要执行的时候 , 排在第二个的任务就必须等待第一个任务执行完毕执行才能正常运行.如果第一个任务耗时较久的话 , 就会造成第二个任务不能及时执行...

2019-05-05 11:20:13 868

转载 项目集群部署

目录1.1 Nginx的安装1.2 Nginx的配置测试:欢迎访问我的个人网站O(∩_∩)O哈哈~希望大佬们能给个star,个人网站网址:http://www.wenzhihuai.com,个人网站代码地址:https://github.com/Zephery/newblog。洋洋洒洒的买了两个服务器,用来学习分布式、集群之类的东西,整来整去,感觉分布式这种东西没人指导一下真的是太抽象了...

2019-04-23 16:35:18 14008

转载 Redis在高并发下常见的错误场景

在使用Redis场景下,很多同学在使用中不注意,一旦系统并发比较高的时候,往往请求还是直接打到数据库,并没有击中缓存。下面我说几种场景,已经解决方案。第一种,看看自己是否已经入坑了。//判断Redis缓存是否有数据if(!jedis.exists("testlockListV_1")){System.out.println("多线程情况下多次击穿缓存,直接访问数据库");Str...

2019-04-20 10:44:56 1876 1

原创 java8 lambada表达式使用

@Transactional@Overridepublic void setMenuToRole(Long roleId, Set<Long> menuIds) { if (!CollectionUtils.isEmpty(menuIds)) { menuIds.forEach(menuId -> { sysMenuRepos...

2019-04-08 16:59:24 931

原创 深入了解Kafka底层原理

一、Kafka基础1.kafka的基本运行原理?kafka的架构部署?(1)Kafka通过多副本机制实现故障自动转移;2.kafka的文件存储机制?3.kafka如何确保消息的精确传输?如何确保消息的准确存储?如何确保消息的正确消费?4.kafka的常用名词?(1)LEO(LogEndOffset):表示每个partititon中最后一条message的位置;(2)HW...

2019-03-18 23:56:31 2099

原创 微服务拆分

1.传统方式和微服务之间的区别二、服务拆分1.水平复制:将应用程序水平复制,通过负载均衡运行程序的多个副本,达到应用程序的伸缩性;2.数据分区:每个服务器运行的代码是一样的;3.功能解耦:将不同的模块分成不同的服务。(1)单一职责,松耦合,高内聚(2)关注点分离三、项目实战...

2019-03-17 22:12:52 225

原创 浅谈分布式应用——基于zookeeper+kafka

1.实现分布式应用的基本要求是主备节点的切换。

2019-03-14 22:36:22 217

原创 记录一次数据处理问题

1.数据处理要求,向result中插入一条username的数据,数据结构如下图所示。2.代码//转换成json串String response = HttpClientUtil.executeGet(interfaceUri.getUrl()+"/trade/find", param, header, 2000); //1.将string字符串转换为map ...

2019-03-13 13:47:49 200

原创 ftp账号使用

1.查看ftp账号信息vim /etc/vsftpd/chroot_list2.重置ftp账号密码passwd username

2019-03-13 09:53:19 1442

原创 整合springboot父子项目时出现的一个问题

1.报错springboot版本2.1.3.RELEASE解决:将tomcat更换为jetty就好了。java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getHttpServletMapping()Ljavax/servlet/http/HttpServletMapping; at org.apache...

2019-03-11 20:00:27 1041

原创 详解hashmap底层原理

一、hashmap的源码问题,hashmap的底层结构?put操作?1.底层结构(基于Java8)性能:O(1)、O(n)、O(logn)注:当链表大小超过8,会被改成红黑树;当低于6时,又会被改为链表;2.put操作流程:(1)先调用putVal()方法,当table数组为空时调用resize()方法,进行初始化;(2)对key进行求hash值(是hash方法...

2019-03-10 23:48:00 392

原创 关于net.sf.json的使用

一、关于net.sf.json的使用1.将linkedHashmap先转成jsonarrayJSONArray list = JSONArray.fromObject(map);2.然后把JSONArray转成IteratorIterator&lt;Object&gt; it = (Iterator&lt;Object&gt;) list.iterator();3.将itera...

2019-03-08 22:02:15 1225

原创 Java内存泄漏的排查总结

1.什么是内存泄漏?(1)程序在申请内存后,无法释放已经申请的内存空间。内存泄漏是纯代码层的问题。主要是因为一些对象占用内存,却不会被GC回收。(2)这些对象的特点是可达的、无用的。二、内存泄漏的排查案例1.确定频繁GC的对象(1)使用jps找出正在运行的虚拟机进程;(2)使用jstat监视虚拟机的各种运行状态信息;2.找出频繁GC的原因(1)使用jmap初步分析内...

2019-02-21 11:18:53 1234

原创 如何处理高并发的问题?

1.前后端分离(1)页面静态化处理+网站静态资源部署在CDN上(2)文件服务器+图片服务器2.服务器采用负载均衡+反向代理3.增加缓存,使用nosql4.数据库采用集群、读写分离、分库分表...

2019-02-19 10:44:42 1011

原创 单例的双重检测实现

//改进

2019-01-30 14:14:20 591

原创 Java8 新特性

一、Lambda表达式:Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中。)Lambda表达式可以说是Java 8最大的卖点,她将函数式编程引入了Java。Lambda允许把函数作为一个方法的参数,或者把代码看成数据。一个Lambda表达式可以由用逗号分隔的参数列表、–&gt;符号与函数体三部分表示。例如:Arrays.asList( "p", "k", "u","f...

2019-01-28 00:35:47 129

原创 自定义Classloader实现类加载

1.testpackage com.interview.javabasic.reflect;public class ClassLoaderChecker { public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationExce...

2019-01-27 16:07:23 508

原创 happen-before原则

1.什么是happen-before(1)编写的程序都要经过优化(编译器和处理器会对程序进行优化)后才会被运行,优化分为很多种,其中有一种优化叫做重排序,重排序需要遵守happens-before规则。(2)a happens-before b :happens-before关系保证a操作将对b操作可见。2.happen-before原则(前一个操作的执行结果必须对后一个操作可见)...

2019-01-24 22:40:39 3838 2

原创 volatile关键字——JVM提供的轻量级同步机制

一、线程安全性1.Java内存模型中的可见性、原子性、有序性。(1)可见性:一个线程修改的状态对另一个线程是可见的;(2)原子性:同一时刻只有一个线程可以对它进行操作;(3)有序性:保证线程之间操作的有序性。二、volatile关键字1.jvm内存模型(1)普通变量:每个线程先从内存拷贝变量到CPU缓存中,如果计算机有多个CPU,每个线程可能在不同的CPU上被处理,...

2019-01-24 22:22:23 327

原创 java内存屏障+可见性

1.内存屏障:(如果字段是volatile,Java内存模型将在写操作后插入一个写屏障指令,在读操作前插入一个读屏障指令)(1)内存屏障(memory barrier)是一个CPU指令。这条指令可以确保一些特定指令的执行顺序,影响一些数据的可见性(可能是某些指令执行后的结果)。(2)插入一个内存屏障,相当于告诉CPU和编译器先于这个命令的必须先执行,后于这个命令的必须后执行。内存屏障另一个...

2019-01-24 21:45:58 1506

原创 数据库基础:视图和临时表

视图是一个预编译的sql语句,不保存实际的数据,而临时表是保存在tempdb中的实际的表。一、视图1.什么是视图?从一个或多个表中导出的表。2.视图的特点?(1)视图是一条预编译的SQL语句,并不保存实际数据、数据库只存储视图的定义;(2)视图不分配空间;(3)视图主要用于系统的安全、查询和效率;3.视图的应用场景?(1)保密工作,比如有一个员工工资表,如果你只...

2019-01-22 17:58:03 1589

原创 数据库基础:触发器

一、触发器1.什么是触发器?(1)触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行,常用来同步更新数据,使用触发器可以更高效的维护数据;(2)特点:触发事件的操作和触发器里的SQL语句是一个事务操作,具有原子性,要么全部执行,要么都不执行;(3)作用:保证数据的完整性,起到约束的作用;2.创建触发器(建立触发器时就要指定该触发器的用途)(1)语法规则...

2019-01-22 15:34:46 593

原创 浅谈mysql B+树

叶子节点存储数据(数据记录)、B+树的非叶子节点只是存储key。1.b+树是什么?(1)是多叉树不是二叉树,且每个节点可以包含更多的节点(为了降低树的高度;另外一个是将数据范围变为多个区间,区间越多,数据检索越快。)(2)叶子节点两两相连,为顺序查询提供了帮助;(3)非叶子节点存储key,叶子节点存储key和数据;(4)每个节点不再只是存储一个key了,可以存储多个key;...

2019-01-21 21:14:45 2286 1

原创 mysql的innodb索引数据结构是B+树,而不是hash?

一、基础1.什么是聚簇索引?innodb中,主键的索引结构中,既存储了主键值,又存储了行数据。2.B+树和B-树的区别?(1)B+树只有叶节点存放数据,其余节点用来索引;(2)而B-树是每个索引节点都会有Data域。二、mysql的innodb索引数据结构是B+树,而不是hash?1.哈希索引适用的场景适合等值查询(前提是不存在大量重复键值,如果存在重复键就会出现哈...

2019-01-21 21:14:23 1952

原创 Mysql插入中文时提示:ERROR 1366 (HY000): Incorrect string value: '\xE5\x8F\xB0\xE5\xBC\x8F...' fo

1.修改表的编码方式ALTER TABLE `sales` DEFAULT CHARACTER SET utf8;2.修改字段的编码方式:ALTER TABLE `sales` CHANGE `sname` `sname` VARCHAR(36) CHARACTER SET utf8 NOT NULL; 

2019-01-21 16:37:17 312

原创 mysql主从复制

一、什么是主从复制?1.用来建立一个和主数据库完全一样的数据库环境,称为从数据库。主数据库一般是准实时的业务数据库。在master中创建数据库,创建表,进行增删改操作都会被同步到所有slave中。2.从库只能读数据,因为当从库写了数据positon会变化,且从库的版本要高于或等于主库。二、主从复制的原理?(1)主库db的更新事件(update、insert、delete)被写到...

2019-01-19 17:28:19 179

原创 关于mysql索引的问题

什么样的字段适合建索引?唯一、不为空、经常被查询的字段。一、mysql索引的概念1.数据库索引是一种特殊的文件,通俗来说就像一本书的目录。(注:一般数据库默认都会为主键生成索引)二、MySQL索引方法有几种?(mysql索引结构)常见的有B+树和hash. 详情见https://blog.csdn.net/Michaeles/article/details/86532876三、...

2019-01-18 00:04:42 233

原创 mysql索引常见的数据结构

1.B+树、hash

2019-01-17 23:13:40 358

原创 详解mysql间隙锁

1.什么是间隙锁?(1)对于键值在条件范围内但并不存在的记录(在相等条件下请求给一个不存在的记录也会加锁),叫做“间隙(GAP)”,InnoDB也会对这个“间隙”加锁,这种锁机制就是所谓的间隙锁(Next-Key锁)。(2)查询使用的范围条件不是相等条件,InnoDB会给符合条件的已有数据记录的索引项加锁;2.举例mysql&gt; select * from emp where...

2019-01-17 18:51:00 2113

原创 详解synchronized和reentrantlock的区别

一、synchronized和reentrantlock的区别?(1)可重入锁比Synchronized多了锁投票、定时锁等候、中断锁等候;线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定,如果使用 synchronized ,如果A不释放,B将一直等下去,不能被中断如果 使用ReentrantLock,如果A不释放,可以使B在等待了足够长的时间以后...

2019-01-16 01:18:30 2933

原创 Java实现线程同步的几种方式?

1.为什么要使用同步?使用多线程时,保证数据的唯一性和准确性。二、Java实现同步的几种方式//通过加synchronized关键字实现多个线程同时访问共享资源时出现的问题,当有申请者申请该资源时,如果资源没有被占用,就给这个申请者使用,否则不能使用该资源。1.synchronized关键字(1)同步方法public synchronized void save(){}...

2019-01-16 00:24:05 10169

原创 mysql事务隔离级别

一、事务的基本元素(1)原子性(Atomicity):事务开始后,要么全做完,要么都不做。(2)一致性(consistency):事务开始前和结束后,数据库的完整性约束没有被破坏,比如A向B转账,不可能A扣了钱,B却没收到。(3)隔离性(isolation):多个并发事务之间相互隔离。对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后...

2019-01-14 22:22:02 139

原创 数据库常用的锁有哪些

一、数据库为什么需要锁?为了保证数据的一致性。mysql数据库存在多种数据引擎,MySQL各存储引擎使用了三种类型(级别)的锁定机制:表级锁定,行级锁定和页级锁定。二、表级锁1.表级锁(表级锁一次会将整个表锁定,所可以很好的避免死锁问题)(1)锁定粒度大,锁冲突概率高、并发度低;(2)好处是不会出现死锁、开销小、获取锁和释放锁的速度很快;(3)使用表级锁定的主要是MyISA...

2019-01-14 22:13:12 31616 8

原创 详解mysql死锁的问题

一、死锁1.死锁:两个或以上的进程在执行过程中因争夺资源造成的相互等待的现象(1)表级锁不会产生死锁,所以解决死锁主要还是针对于最常用的InnoDB.(2)产生死锁的关键:两个(或以上)的Session加锁的顺序不一致。(解决:让加锁有顺序)二、代码举例 mysql索引的使用明天要看...

2019-01-14 21:58:04 2479

原创 mysql中悲观锁的使用

一、普通用法场景举例:商品goods表中有一个字段status,status为1代表商品未被下单,status为2代表商品已经被下单,那么我们对某个商品下单时必须确保该商品status为1。假设商品的id为1。如果不采用锁,那么操作方法如下:/1.查询出商品信息select status from t_goods where id=1;//2.根据商品信息生成订单insert i...

2019-01-14 21:02:20 2773

jstl-1.2 搭建springmvc所需的jar包

jstl-1.2jar包,是一种语言规范,他把复杂的jsp函数封装成简单的<>标签形式,在写jsp页面的时候更方便一些。不用也能写页面,更方便而已。

2017-09-20

空空如也

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

TA关注的人

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