自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 资源 (13)
  • 收藏
  • 关注

原创 辣妈程序员挑战20天学习java并发编程

为什么要发起这样的挑战呢?java并发编程,怀孕之前也系统学过,看过源码。现在宝宝11个月多点,仿佛之前学的那些都忘记了。想重新温习一下。20天学习java并发编程应该很容易实现啊,为什么说挑战呢?我是一个996工作模式的宝妈,时间对我来说真的就是海绵里的水,要用力挤才能有。我的能力已经无法胜任现在的工作,所以我要迫切的学习。挑战20天,逼自己努力!!6月5号~6月25号20天规划如下:第一天深入分析 synchronized 的实现原理第二天深入分析 volatile...

2020-06-04 23:08:28 348

原创 高性能缓存架构

跟华仔从0开始学架构-高性能缓存架构-笔记缓存基本架构缓存穿透:缓存穿透指缓存没有发挥作用,业务系统虽然查缓存,但是缓存中没有数据,业务系统需要再次去存储系统查询数据。通常有以下原因导致:1、存储数据不存在被访问的数据真实不存在,则在缓存中不会存储相应的数据。通常情况,这种场景不会太多,一旦出现异常情况,如黑客攻击,故意大量访问读取不存在的数据业务,有可能将存储系统拖垮...

2020-04-17 23:14:03 277

原创 jmeter 5.0基础

基本设置:header在线程->配置原件->HTTP信息头管理器如果线程内域名,路径相同则可添加请求默认值:线程->配置原件->HTTP请求默认值1. 参数化之用户变量新增用户参数(前置处理器) 新增http请求(取样器->HTTP请求)2. 从文件中读取数据新增CSV 数据文件设置(配置原件->CSV数据文件设置) 新增h...

2018-11-05 17:46:45 1319

翻译 自学精准测试

精准测分系统:1. 差异化:破全面回归.主要解决的事改什么,测什么的问题,要旨: 通过差异化的测试分析得到测试范围的集合2.技术治理:破耦合,耦合影响内容不能漏测,也不能多测.能够快速准确的分析出耦合影响,为了搞清楚改什么,影响什么要旨:快速准确分析耦合影响(难点)3. 测试精准度:即代码覆盖率. (OpenCppCoverage软件)    覆盖率无需将所有代码都覆盖,仅...

2018-10-22 21:15:46 746

原创 软件测试之耦合

研发修改完某个独立的bug亦或者提测了某个需求,测试人员接到后,仔细看了开发的代码影响,经常会遇到这样的问题:修改了n处代码,形象了很多文件,相比之前的黑盒测试,范围一点都没有少.造成这个问题的主要原因就是耦合.我理解的耦合即是对软件结构内各个模块之间互连成都的度量,说简单点就是你影响我,我也影响你.在软件架构方面,高内聚,低耦合的设计是呗推崇的.从工作和网上梳理了几个点,分享一下:数据库...

2018-10-19 21:59:16 4906

原创 戏说软件测试

每个测试人员都会面对过类似这样的问题:测试员之路在何方?要想回答这个问题,首先就先问自己:"你问什么要做测试"这个问题的答案似乎是千篇一律:1.我热衷于发现bug的乐趣2.我比较细心/适合做测试 等等.我们听到这样的答案,都会会心一笑,因为你懂得.真正的答案只有一个,测试的门槛低.不管你是否愿意承认,这绝对是绝大部分入行的真正原因.入门易,精通难.这是测试行业的现状,黑盒测试占了主导地位....

2018-10-19 20:53:12 229

原创 线上问题排查实战

我们团队组织了线上问题排查实战演练,都是经典题目,在此记录下来方面后续遇到问题使用题目一:某服务器的sshd的监听端口是22,如何统计这台服务器的sshd服务各种状态(TIME_WAIT/CLOSE_WAIT/ESTABLISHED)的连接数,以便快速定位问题题目目的:了解机器连接数情况,便于排查问题参考答案:netstat -n | grep -i 22|awk '/^tcp/ {++S[$NF...

2018-06-30 22:47:17 2603 1

原创 redis的安装及简单命令

redis下载下载地址: https://redis.io/redis解压及安装1.命令进入下载目录: cd /home/t/soft 2.命令解压: tar -xzvf redis-3.2.8.tar.gz 3.命令进入到解压后的目录 cd /redis-3.2.8 4.命令make 5.命令进入src文件夹: cd /src 6.安装: make install 7.进入utils

2017-04-20 17:52:38 462

原创 大数据高并发网站基础架构

大数据高并发网站一般使用的架构模式1、负载均衡; 2、页面静态化; 3、动静分离; 4、缓存; 5、数据队列; 6、数据库集群; 7、数据库库表水平垂直拆分;在网上找了一张图,如下所示:当客户端发起请求,nginx会判断,请求的是否为静态资源,如图片,js,css等, 若是静态资源,则发送到静态web节点集群(1),若是动态资源,则会发送到动态web节点集群(2),(1)和(2)共用文件

2017-04-08 22:03:52 617

原创 主从数据库配置实战

一、配置Master(主)服务器1、下载Mysql 下载MySQL Community Server 5.6.35 下载地址:https://dev.mysql.com/downloads/mysql/5.6.html#downloads2、修改配置文件 解压MySQL压缩包 将以下载的MySQL压缩包解压到自定义目录下,我的解压目录是: “D:\mysql-5.6

2017-04-08 13:25:48 468

原创 主从架构原理

影响数据库性能的几个方面: 1、读写竞争 2、事务竞争 3、频繁的事务处理解决方案:数据库读写分离如何提高数据库性能呢? 分库–分布式数据库分库之后可能出现的问题? 1、数据库中数据的同步,不能出现两个或多个版本 2、保证数据库的可用性主从数据库(单主多从) 1、凡是写操作(增、删、改)均访问主数据库,得到数据库日志(记录数据库操作步骤的二进制日志) 2、从数据库,可以有很多的从数据

2017-04-07 22:11:13 4768

原创 网站架构演变

网站架构演变过程阶段一:单机服务器架构Web请求直接请求数据库,数据库返回数据直接到web,随着互联网发展,网络请求变得非常多,单机架构时,访问数据库会使得频度非常高,服务器响应慢;阶段二:增加缓存服务器(页面缓存,数据缓存) 当请求发起后,先从缓存区获取数据,当缓存区没有,才去数据库取数据,大大减小数据库压力 阶段三:服务器集群 假如我们现在服务器做以下服务: 1、得到用户请求 2、验证

2017-04-07 17:46:52 421

原创 JAVA8 十大新特性详解

一、接口的默认方法在接口中新增了default方法和static方法,这两种方法可以有方法体 1、static方法 示例代码:public interface DefalutTest { static int a =5; default void defaultMethod(){ System.out.println("DefalutTest defalut 方法

2017-03-30 22:14:17 46921 13

原创 JAVA反射机制

在运行状态中,对任意一个类(class文件),能够知道这个类的所有属性和方法,对任意一个对象都可以调用其属性和方法,这种动态获取信息以及调用对象的方法的功能称之为java反射机制。好处:提高了程序扩展性;类加载器如何工作的,参加文章: http://blog.csdn.net/cdw8131197/article/details/67056507准备类:import java.util.Date;

2017-03-29 22:49:59 450

原创 JVM-Class文件结构

Class文件结构Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部都是程序运行的必要数据,没有空隙存在。当遇到需要占用8位字节以上的空间的数据项时,则会按照高位在前的方式分割成若干个8位字节进行存储。 根据Java虚拟机规范的规定,Class文件格式采用一种类似于C语言结

2017-03-28 22:49:45 315

原创 JVM-堆分析

一、内存溢出的原因分析堆溢出:创建的对象太多或太大,占用大量的堆内存,而且未及时GC;示例代码:import java.util.ArrayList;public class OOMTest { public static void main(String[] args) { ArrayList<byte[]> list=new ArrayList<byte[]>();

2017-03-28 12:42:17 359

原创 JVM-类装载器

一、class装载流程加载: 加载是装在类的第一个阶段,在此阶段是取得类的二进制流,转为方法区数据结构,在java堆中生成对应的java.lang.class对象链接: 链接分为三个步骤:验证、准备、解析1、验证: 目的:保证Class流的格式是正确的 文件格式的验证:是否以0xCAFEBABE开头;版本号是否合理….等等 元数据验证:是否有父类,若有父类验证父类class是否存在;继承了

2017-03-27 22:43:44 1323

原创 JVM-GC参数

一、堆的回顾堆(java heap)包括新生代(Young Generation)和老年代 (old); 其中新生代包括区域(eden、s0、s1); 大多数新创建的对象在新生代产生,有两种情况回使java新创建的对象在老年代,一种是大的数组对象,且对象无外部引用;另一种是通过启动参数设置上面的新生代区域很小,使得新创建的对象大小超出新生代大小,则对象会被直接分配到老年代; s0,s1(幸存代

2017-03-26 15:21:14 491

原创 JVM-GC算法与种类

基础概念根节点: 1、栈中引用的对象; 2、方法区中静态成员或者常量引用的对象(全局对象); 3、JNI方法栈中引用对象;可达性分析(Reachability Analysis):从根节点开始向下搜索,搜索所走过的路径称为引用链。当一个对象到根节点有引用链相连时,则证明此对象是可达对象;可复活对象:在finalize()方法中复活的对象;不可达对象:既没有引用链又不可复活的对象,称之为不可达对

2017-03-24 17:30:31 405

转载 JVM配置参数

原文地址:http://www.cnblogs.com/smyhvae/p/4736162.html【声明】 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/文章来源:http://www.cnblogs.com/smyhvae/p/4736162.html联系方式:smyhvae@163

2017-03-23 18:06:13 409

原创 JVM

JVM基本结构PC寄存器 每个线程拥有一个PC寄存器 在线程创建时 创建 指向下一条指令的地址 执行本地方法时,PC的值为undefined方法区 保存装载的类信息 类型的常量池 字段,方法信息 方法字节码 通常和永久区(Perm)关联在一起Java堆 和程序开发密切相关 应用系统对象都保存在Java堆中 所有线程共享Java堆 对分代GC来说,堆也是分代的 GC的主要工

2017-03-23 17:39:11 304

原创 JDK1.8的并发新特性

JDK1.8中有一些并发的新特性,可以提高变成的效率。本文写的主要是LongAdder和stampedlock的特性。 多线程发生死锁时dump查看方式: 使用命令jps:如下所示 通过这个命令我们可以得到死锁号,然后再通过命令jstack查看如下所示: LongAdderLongAdder是什么? 在大数据处理过程,为了方便监控,需要统计数据,少不了原子计数器。为了尽量优化性能,需要采用

2017-03-23 15:03:38 5245 1

原创 Executor线程池扩展

线程池杂记,想到哪就写到哪了。线程池的种类new FixedThreadPool new SingleThreadExecutor new CachedThreadPool new ScheduledThreadPool分析:newFixedThreadPoolJDK源码: public static ExecutorService newFixedThreadPool(int nThr

2017-03-17 18:36:39 887

原创 ForkJoinPool的使用

我在工作中遇到过这样一个问题,是给网站用户发送营销短信。我记得我们网站会员大约有7万个,要给这7万个用户发送营销短信。而短信运营商那边要求每次发送的手机号码最好要少于3000。 那时候的我,没有什么经验,不会使用多线程,将整个程序顺序写下来,大体思路如下:这样做的后果,整个完成7万条短信的发送,需要10多分钟。最要命的是,当时我们使用nignx,或许是没配置好的原因,当一个程序执行超过6分钟没有完

2017-03-17 17:59:10 13431 4

原创 Go语言学习(4)-流程控制

1、条件语句if a < 5 { return 0} else { return 1}关于条件语句,需要注意以下几点: 条件语句不需要使用括号将条件包含起来(); 无论语句体内有几条语句,花括号{}都是必须存在的; 左花括号{必须与if或者else处于同一行; 在if之后,条件语句之前,可以添加变量初始化语句,使用;间隔; 在有返回值的函数中,不允许将“最终的”return语句

2017-02-08 10:56:07 404

原创 Go语言学习(3)-类型

Go语言内置的基础类型:布尔类型:bool; 整型:int8、byte、int16、int、uint、uintptr等; 浮点类型:float32、float64; 复数类型:complex64、complex128; 字符串:string; 字符类型:rune; 错误类型:error; 此外,Go语言也支持以下这些复合类型: 指针(pointer) 数组(array) 切片(s

2017-02-08 10:52:03 482

原创 Go语言学习(2)-常量

常量1、常量定义 通过const关键字func main(){ const pi float64 = 3.1415926 const zero = 0.0 //无类型浮点常量 const( size int64 =1024 eof = -1 ) const u,v float32 =0,3 //多重赋值 const a

2017-02-08 10:45:26 290

原创 Go语言学习(1)-变量

一、变量1、声明变量 Go语言引入了关键字var,而类信息放在变量名之后: 如: func main(){var a intvar b stringvar c [10]int //数组类型var d []string //切片数组var e struct{ f int g string} //结构体var k *int //指针类型var o map[string

2017-02-08 10:42:56 317

原创 线程池

线程池Executors是个线程的工厂类,方便快速地创建很多线程池,也可以说是一个线程池的工具类。在Executors类里面提供了一些静态工厂, 生成一些常用的线程池。常用的方法有以下三种: 1、newSingleThreadExecutor:创建一个单线程的线程池 2、newFixedThreadPool:创建固定大小的线程池 3、newCachedThreadPool:创建一个可缓存的线

2017-01-04 16:54:18 335

原创 一点一滴学习Spring(八)之Spring数据源配置

通过Spring和JDBC征服数据库 Spring的数据访问异常均继承自DataAccessException DataAccessException的特殊之处在于他是一个非检查型异常。即,没有必要捕获Spring所抛出的异常。一、配置数据源无论选择Spring的那种数据访问方式,都需要配置一个数据源的引用。Spring提供了在Spring上下文中配置数据源bean的多种方式。 包括: 1、

2016-12-26 14:09:45 2770

原创 一点一滴学习Spring(七)之Spring MVC的高级技术

Servlet 3.0提供了既能在容器中动态注册servlet的方法,也提供了通过实现ServletContainerInitializer接口的方法实现在容器启动阶段为容器动态注册Servlet、Filter和listeners。 容器会在应用的启动阶段,调用所有实现ServletContainerInitializer接口类中的onStartup()方法。 而Spring 3.2中,则进一步

2016-12-15 21:29:48 1531

原创 一点一滴学习Spring(六)之Spring MVC视图解析器

渲染Web视图Spring自带的13个视图解析器 视图解析器:描述 BeanNameViewResolver:将视图解析为Spring应用上下文的bean,其中Bean的ID与视图名称相同 ContentNegotiatingViewResolver:通过考虑客户端需要的内容类型来解析视图,委托给另一个能产生对应内容类型的视图解析器 FreeMarkerViewResolver:将视图解析为

2016-12-14 21:46:06 562

原创 一点一滴学习Spring(五)之Spring MVC

一、request请求过程1、请求的第一站是Spring的DispatcherServlet。与大多数基于Java的Web框架一样,Spring MVC所有的请求都会通过一个前端控制器。在Spring MVC中,DispatcherServlet就是前端控制器; DispatcherServlet的任务是将请求发送给Spring MVC的控制器controller。控制器是一个用于处理请求的Spr

2016-12-14 21:39:41 381

原创 一点一滴学习Spring(四)之AOP

一、AOP术语描述切面的常用术语有通知(advice)、切点(pointcut)和连接点(joinpoint)通知(Advice):Spring切面可以应用5种类型的通知: 1、前置通知(Before):在目标方法被调用之前调用通知功能; 2、后置通知(After):在目标方法完成之后调用通知,此时不会关心方法的输出是什么; 3、返回通知(Afert-returning):在目标方法成功执行之

2016-12-14 21:25:59 787

原创 一点一滴学习Spring(三)之bean高级装配

环境与profile在3.1版本中,Spring引入了bean profile的功能。要使用profile,你首先要将所有不同的bean整理到一个或多个profile之中, 再将应用部署到每个环境时,要确保对应不同的profile处于激活(active)的状态。 在java配置中,可以用@Profile注解指定某个bean属于哪一个profile实例代码:@Configuration@Prof

2016-12-09 17:18:50 663

原创 多线程之间的交互:阻塞队列之ArrayBlockingQueue

ArrayBlockingQueue概念基于数组的阻塞队列实现,在ArrayBlockingQueue内部,维护了一个定长数组,以便缓存队列中的数据对象,这是一个常用的阻塞队列,除了一个定长数组外,ArrayBlockingQueue内部还保存着两个整形变量,分别标识着队列的头部和尾部在数组中的位置。队列的头部是在队列中存在时间最长的元素。对列的尾部是在队列中存在时间最短的元素。新元素插入到队列的尾

2016-12-08 23:16:00 498

原创 一点一滴学习Spring(二)之装配bean简单方式

Spring装配bean的三种方式1、在xml中进行显示配置 2、在javaConfig中进行显示配置 3、隐式的bean发现机制和自动装配本次将详细介绍前两种装配方式通过JAVA代码装配bean步骤: 1、创建JavaConfig配置类 关键在于在JavaConfig类上添加@Configuration注解 @Configuration注解表明该类是一个配置类 2、在配置类中声明简单的

2016-12-08 17:28:35 378

原创 多线程之间的交互:线程阀(一)之阻塞队列BlockingQueue简介

投入多少,收获多少;参与多深,领悟多深 参考文献:Java并发变成从入门到精通线程阀是一种线程与线程之间相互制约和相互交互机制阻塞队列BlockingQueueQueue(队列):用于保存一组原色,不过在存储元素的时候必须遵循先进先出原则。队列是一种特殊的线性表,它只允许在表的前段进行删除操作,而在表的后端进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为对头。对列中没有元素时称为空队列

2016-12-07 22:42:36 537

原创 线程安全的集合类

java中常用的线程安全集合类java.util.HashtableHashTable的实例中有两个参数影响其性能:初始容量和加载因子 初始容量:Hash表创建时的容量 加载因子:对hash表在其容量自动增加之前可以达到多满的一个尺度,通常默认是0.75Hashtable 的函数都是同步的,意味着它是线程安全的。它的key和value都不可以为null。此外,hashtable中的映射不是有序的

2016-12-06 22:58:31 997

原创 一点一滴学习Spring(一)

我在项目中经常用到Spring框架,虽然可以应用,可是回顾一下,我竟然都没有好好的学习过Spring,So,打算学习一下Spring,为了之后的项目更好的应用。学习过程:Spring简单应用 -> Spring 高级篇重点内容重点内容Spring是什么?Spring 是开源的控制反转和面向切面的容器框架,它主要目的是简化企业开发。控制反转:应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由

2016-10-23 18:49:54 659

web性能权威指南

web性能权威指南

2017-05-01

mysql 加锁处理分析

mysql 加锁处理分析

2017-04-30

Spring揭秘

没有教程似的训导,更多的是说故事般的娓娓道来,本书是作者在多年的工作中积累的第一手Spring框架使用经验的总结,深入剖析了Spring框架各个模块的功能、出现的背景、设计理念和设计原理,揭开了Spring框架的神秘面纱,使你“知其然,更知其所以然”。每部分的扩展篇帮助读者活学活用Spring框架的方方面面,同时可以触类旁通,衍生出新的思路和解决方案。, 本书内容全面,论述深刻入理,必将成为每个Java专业开发人员必备的Spring图书。

2017-04-30

jdk1.8 api

jdk1.8 api 英文版

2017-03-30

java api 1.7

java api 1.7

2017-03-30

go语言编程

go语言编程

2017-03-29

Spring实战(第4版)

Spring实战(第4版)

2017-03-24

memcache dome

memcache dome

2017-03-24

hibernate jar包

hibernate jar

2016-12-26

mybites-Jar

mybites jar

2016-12-26

spring-aop-jar

aopalliance.jar、spring-aop-4.1.6.RELEASE.jar、spring-aspects-4.1.6.RELEASE.jar

2016-12-14

commons-pool2-2.4.1

commons-pool

2016-09-14

jedis-2.7.2

jedis redis客户端

2016-09-14

空空如也

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

TA关注的人

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