自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 MySQL索引创建于是否失效的情况

基础概念索引:索引是对表中的一列或者多列的数据进行排序的物理结构。联合索引:两个或更多个列上的索引被称作联合索引,联合索引又叫复合索引。测试前准备MySql数据库版本5.7.29 MySQL Community Server (GPL)建表语句CREATE TABLE t_user ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), age INT, msg VARCHAR(255..

2020-10-28 11:48:33 212 1

原创 JavaWeb项目代码如何分层

一个好的层次划分不仅使代码结构更加清楚,还使项目分工更加明确,可读性大大提升,更加有利于后期的维护和升级。从另外一个角度来看,好的代码分层架构,应该是可以很好的匹配上单一职责原则的。这样就可以降低层与层之间的依赖,还能最大程度的复用各层的逻辑。本文介绍下Java Web项目的代码到底应该如何分层。三层架构在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或称为领域层)、表示层。这也是Java Web中.

2020-07-23 11:08:26 993

原创 git操作及fatal: Authentication failed for错误解决

1、配置用户信息git config --global user.name [username]git config --global user.email [email]2、查询用户信息git config --list3、如果push遇到在输入密码输错后,就会报这个错误fatal: Authentication failed for解决办法:git config --system --unset credential.helper之后你在push就会提示输入名称和密码

2020-07-16 14:50:07 549

原创 Git远程仓库 配置SSH

本地Git仓库和GitHub仓库之间的第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:$ ssh-keygen -t rsa -C "youremail@example.com"可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SS

2020-06-22 11:38:44 299

原创 Java集合之——Map的clear与new Map的区别

对于clear与new Map的区别。我们首先来看一个例子,需求就是将map放入到list中,有两种实现方式,分别是:// 方案一Map<Integer, Integer> map1 = new HashMap<>();List<Map<Integer, Integer>> list1 = new ArrayList<>();for (int i = 0; i < 5; i++) { map1.clear();

2020-06-16 11:39:54 1733

原创 Hystrix之四种触发fallback情况

使用Hystrix时,下面的情况会触发fallback:非HystrixBadRequestException异常:当抛出HystrixBadRequestException时,调用程序可以捕获异常,此时不会触发fallback,而其他异常则会触发fallback,调用程序将获得fallback逻辑的返回结果。run()/construct()运行超时:执行命令的方法超时,将会触发fallback。熔断器开启:当熔断器处于开启的状态,将会触发fallback。线程池/信号量已满:当线程池/信号量已

2020-06-06 17:51:55 3934

原创 CPT、CPM、CPC、CPA、CPS

网络营销之所以越来越受到重视一个主要的原因就是因为“精准”。相比较传统媒体的陈旧广告形式,网络营销能为广告主带来更为确切的效果与回报,更有传统媒体所没有的即时互动性。几个常见基本术语:CPA、CPS、CPM、CPT、CPC他们的英文全称与基本含义分别是:1.CPA(Cost Per Action) 每行动成本。CPA是一种按广告投放实际效果计价方式的广告,即按回应的有效问卷或注册来计费,而不限广告投放量。电子邮件营销(EDM)现在有很多都是CPA的方式在进行。2.CPS(Cost Per S

2020-06-04 16:27:39 544

原创 Java程序导致服务器CPU占用率过高的问题排除过程

1. CPU占用过高问题定位step1:定位问题进程使用top命令查看资源占用情况,找占用大量的CPU资源的进程的pid;step2:定位问题线程使用ps -mp [ pid ] -o THREAD,tid,time命令查看该进程的线程情况,发现该进程的多个线程占用率很高step3:查看问题线程堆栈(1) 挑选指定TID的线程,查看该线程的堆栈情况,先将线程id转为16进制,使用printf “%x\n” tid命令进行转换(2) 再使用jstack命令打印线程堆栈信息,命...

2020-05-21 20:25:22 376

原创 高并发情景下的抢红包设计方案

假设一个需求,在某个预告活动中准备了10w个红包,100w人在某个时间点去开抢,每人只能抢1次,如何保证性能和准确性:分析瓶颈 查询用户是否已参与过活动 获取一个可抢的红包,保证多个人不能获取到同一个红包 建立红包与用户的关系 设计数据结构解决瓶颈问题 查询用户是否已参与过活动:可以使用Set的特性,集合中不能出现重复的数据,每个用户发起抢的动作就将用户标识放入Set中,如果...

2020-01-02 13:50:13 3673 1

原创 java8将list转为map及Collectors groupingBy

List集合的stream().collect()方法Map<Byte, List<String>> levelList = bottles.stream().collect(Collectors.groupingBy(ProductBottle::getLevel, Collectors.mapping(ProductBottle::getQrcode, Co...

2019-11-01 14:43:26 6032

原创 使用java8的lambda将list转为map

常用方式代码如下:public Map<Long, String> getIdNameMap(List<Account> accounts) { return accounts.stream().collect(Collectors.toMap(Account::getId, Account::getUsername));}收集成实体本身ma...

2019-11-01 14:41:24 507

转载 java 面向接口编程

定义:现在我们要开发一个应用,模拟移动存储设备的读写,即计算机与U盘、MP3、移动硬盘等设备进行数据交换。上下文(环境):已知要实现U盘、MP3播放器、移动硬盘三种移动存储设备,要求计算机能同这三种设备进行数据交换,并且以后可能会有新的第三方的移动存储设备,所以计算机必须有扩展性,能与目前未知而以后可能会出现的存储设备进行数据交换。各个存储设备间读、写的实现方法不同,U盘和移动硬盘只有这两个方...

2019-02-27 16:14:46 1502

原创 正则表达式

1. 正则表达式规则1.1 普通字符     字母、数字、汉字、下划线、以及后边章节中没有特殊定义的标点符号,都是"普通字符"。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。    举例1:表达式 "c",在匹配字符串 "abcde" 时,匹配结果是:成功;匹配到的内容是:"c";匹配到的位置是:开始于2,结束于3。(注:下标从0开始还是从1开始,因当前编程语言的不...

2018-12-19 10:56:39 132

原创 web.xml中Listener的作用

Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener 接口的服务器端程序,它也是随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。主要作用是: 做一些初始化的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等等。下面利用监听器对数据库连接池DataSource的初始化演示它的使用:MySe...

2018-08-22 10:49:09 128

转载 JVM调优总结(四)分代垃圾回收

为什么要分代分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象、线程、Socket连接,这类对象跟业务直接挂钩,因此生命周期比较长。但是还有一些对象,主要是程序运行过程中生成的临时变量,这些对象生命...

2018-05-18 15:19:41 105

转载 JVM调优总结(三)垃圾回收面临的问题

如何区分垃圾上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断。垃圾回收程序收集计数为0的对象即可。但是这种方法无法解决循环引用。所以,后来实现的垃圾判断算法中,都是从程序运行的根节点出发,遍历整个对象引用,查找存活的对象。那么在这种方式的实现中,垃圾回收从哪儿开始的呢?即,从哪儿开始查找哪些对象是正在被当前系统使用的。上面分析的堆和栈的区别,其中栈是真正进行程序执行地方,所...

2018-05-17 18:53:55 104

转载 JVM调优总结(二)基本垃圾回收算法

按照基本回收策略分引用计数(Reference Counting):比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。标记-清除(Mark-Sweep):此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除。此算法需要暂停整个应用,同...

2018-05-17 18:35:56 100

转载 JVM调优总结(一)基本概念

数据类型Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress引用类型包括:类类型,接口...

2018-05-17 18:21:24 199

原创 JVM的工作原理分析

1.JVM简析:     作为一名Java使用者,掌握JVM的体系结构也是很有必要的。     说起Java,我们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示:     Java平台由Java虚拟机和Java应用程序接口搭建,Java语言则是进入这个...

2018-05-17 16:08:05 125

原创 JVM之守护线程

在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆:只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。Daemon的作用是为其他线程的运行提供便利服务,守护线程最典型的应用就是 GC (垃圾...

2018-05-17 14:43:05 1473

原创 Spring框架的简单理解

软件框架       框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。框架就是制定一套规范或者规则(思想),程序员在该规范或者规则下工作。或者说就是使用别人搭好的舞台,你来做表演。       软件框架,通常指的是为了实现某个业界标准或完成特定基本任务...

2018-05-16 17:47:41 1332

原创 SpringMVC 框架的浅析

SpringMVC的工作原理图:SpringMVC流程1、  用户发送请求至前端控制器DispatcherServlet。2、  DispatcherServlet收到请求调用HandlerMapping处理器映射器。3、  处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。4、  Dispa...

2018-05-16 11:02:00 306

原创 SSH框架工作原理浅析

Hibernate工作原理及为什么要用?原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.xml中的&lt;mapping resource="com/xx/User.hbm.xml"/&gt;读取并解析映射信息3.通过config.buildSessionFactory();//创建Sess...

2018-05-15 18:40:09 523

原创 JAVA protected详解

很多介绍Java语言的书籍(包括《Java编程思想》)都对protected介绍的比较的简单,基本都是一句话,就是: 被 protected 修饰的成员对于本包和其子类可见。这种说法有点太过含糊,常常会对大家造成误解。实际上,protected的可见性在于两点:基类的 protected 成员是包内可见的,并且对子类可见;若子类与基类不在同一包中,那么在子类中,子类实例可以访问其从基类继承而来的p...

2018-05-10 15:46:11 497

原创 java 进阶书籍

 1.《深入理解Java虚拟机:JVM高级特性与最佳实践》  如果你不满足于做一个只会写if…else…的Java程序员,而是希望更进一步,那 么Java虚拟机是你必学的一门技术。《深入理解Java虚拟机:JVM高级特性与最佳实践》作者是周志明,这本书可以说是国内写得最好的有关Java虚拟机的书籍。      2.《Java并发编程实战》  这本书常常被列入Java程序员必读十大书籍排行榜前几位,...

2018-05-08 18:45:40 252

原创 java 连接消息队列

Java 消息对列 --ActiveMQ入门实例 1.下载ActiveMQ去官方网站下载:http://activemq.apache.org/2.运行ActiveMQ解压缩apache-activemq-5.5.1-bin.zip,然后双击apache-activemq-5.5.1\bin\activemq.bat运行ActiveMQ程序。启动ActiveMQ以后,登陆:http://local...

2018-05-08 17:53:07 427

原创 java小问题

考一下,下面这段代码会不会打印error?public class P1 {     private long b = 0;     public void set1() {        b = 0;    }     public void set2() {        b = -1;    }     public void check() {        System.out.prin...

2018-05-07 14:23:06 111

原创 java 原子操作深入浅出

Java中的原子操作包括:1)除long和double之外的基本类型的赋值操作2)所有引用reference的赋值操作3)java.concurrent.Atomic.* 包中所有类的一切操作count++不是原子操作,是3个原子操作组合1.读取主存中的count值,赋值给一个局部成员变量tmp2.tmp+13.将tmp赋值给count可能会出现线程1运行到第2步的时候,tmp值为...

2018-05-07 14:05:19 218

原创 java线程安全问题

多线程不安全,主要因为cpu分配机制,谁获得了cpu谁就能执行,因此造成了线程的不安全.现在总结一下判断线程安不安全的方法:1.明确哪些代码是多线程运行的代码, 2.明确共享数据 3.明确多线程运行代码中哪些语句是操作共享数据.通过以上三点,写一段代码,package com.niuli.develop;public class Test { public static void ma...

2018-05-07 13:16:34 146

空空如也

空空如也

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

TA关注的人

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