自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Wall的博客

码农的进阶

  • 博客(59)
  • 收藏
  • 关注

原创 面试题:两个线程交替打印、三个线程交替打印、拓展:N个线程交替打印

目录利用condition等待队列实现两个线程的交替打印利用condition等待队列和计数count实现三个线程的交替打印拓展:N个线程交替打印利用condition等待队列实现两个线程的交替打印代码如下import java.util.concurrent.locks.Condition;import java.util.concurren...

2019-09-16 11:20:54 1087 1

原创 面试题:数据库优化的方法

一、表的设计合理化,符合三大范式(3NF)数据库满足数据库的三大范式可以避免数据冗余。简单来说三句话:1NF、列不可分;2NF、非主键列完全依赖主键,不存在部分依赖;3NF、非主键列必须直接依赖主键,不存在传递依赖。第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列。考虑这样一个表:【联系人】(姓名,性别,电话)如果在实际场景中,一个联系人有家...

2019-09-16 10:12:16 3489

原创 [算法]并查集(Java版)之矩阵中相邻的元素

参考博客:并查集算法通俗讲解 参考博客:可以使用并查集算法解决的算法题矩阵中相邻的数题目描述一个矩阵5*5,矩阵成员如下:[[1,2,3,4,5],[11,12,13,14,15],[21,22,23,24,25],[31,32,33,34,35],[41,42,43,44,45]]输入6个矩阵元素,判断这6个元素是否为一个群组。输入描述包含6个矩...

2019-08-29 13:20:13 1521

原创 [MySQL]感受InnoDB引擎中的行锁,表锁,记录锁,Next-Key锁

目录先下结论再感受锁的存在1.感受共享锁、排它锁的存在2.感受记录锁的存在3.感受Next-Key Lock的存在4.感受聚簇索引(聚集索引),唯一索引使用的是记录锁5.当查找为范围查找时,无论是聚集索引还是普通索引,锁定的是一个范围6.将MySQL的隔离级别设为Read Committed,演示幻读现象。7.当对非索引字段进行加锁时,使用的是表锁。先下结论...

2019-08-22 10:31:15 947

原创 Java面试题:进程和线程的区别,进程通信,线程通信,多线程和多进程区别

进程和线程的区别引入线程的目的:在传统的操作系统中,拥有资源和程序执行的基本单位都是进程,但是为了提高操作系统的并发性能,引入线程作为基本的CPU执行单元。 进程和线程的关系:一个进程可以由多个线程组成,同一进程的线程可以并发执行,进程拥有独立的地址空间,同一进程的线程可以共享进程的资源,所以同一进程内的线程切换时,时空开销很少。 资源拥有方面:进程是拥有资源的基本单位,线程自己不拥有系...

2019-08-13 21:06:42 577

原创 JVM调优之处理频繁Full GC问题

首先需要知道可能触发Full GC的机制,才可对症下药 老年代空间不足。 永生代或者元数据空间不足。 System.gc()方法调用。 CMS GC时出现promotion failed和concurrent mode failure YoungGC时晋升老年代的内存平均值大于老年代剩余空间 有连续的大对象需要分配 接下来介绍两种方...

2019-08-07 01:15:36 2071

原创 面试题:linux常用命令

目录查看端口被哪个进程占用查看进程查看日志的指定行数查看linux目录剩余空间大小添加文件权限解压文件设置环境变量top指令设置防火墙查看系统版本号mv(重命名)用户的操作whatis(命令的作用)whereis(命令的位置)find(查找文件)查看端口被哪个进程占用lsof -i:端口号 netstat -anp|grep ...

2019-08-05 16:31:55 7856 1

原创 redis 常用的命令、redis缓存机制、redis数据结构、redis分布式锁

本篇博客将结合redis在电商项目中的使用,说明redis的常用命令redis中的数据结构:业务场景一:缓存商城首页不同分类栏中的商品信息,以优化商城首页的访问速度。Forexample:以淘宝网为例1.1.有好货分类栏中的商品广告信息1.2.爱逛街分类栏中的商品广告信息等等(可以去淘宝网自己参考)。1.3 redis实现的缓存机制:(缓存机制的一般规...

2019-08-01 10:43:57 228

原创 面试题:实现一个死锁(Java版),产生死锁的四大必要条件,如何避免死锁,如何解决死锁

实现一个最简单的死锁(Java版)/** * @author wall * @date 2019/7/29 16:42 * @description 实现一个死锁:A线程获取B线程占有的锁,B线程获取A线程占有的锁 */public class DeadLock { //定义两把锁 private static ReentrantLock lockA = ne...

2019-07-29 21:51:19 3497 2

原创 面试题:B(B-)树,B+树,B树和B+树的区别,B树和B+树的优点

M阶B树(B-树)特点一种二叉搜索树。 除根节点外的所有非叶节点至少含有(M/2(向上取整)-1)个关键字,每个节点最多有M-1个关键字,并且以升序排列。所以M阶B树的除根节点外的所有非叶节点的关键字取值区间为[M/2-1(向上取整),M-1]。 每个节点最多有M-1个关键字。B树示例:4阶B树 下面是往B树中依次...

2019-07-29 21:36:59 56574 7

原创 面试题:索引失效的几种情况(MySQL)

1.前导模糊查询不能利用索引(like '%XX'或者like '%XX%')  假如有这样一列code的值为'AAA','AAB','BAA','BAB' ,如果where code like '%AB'条件,由于前面是  模糊的,所以不能利用索引的顺序,必须一个个去找,看是否满足条件。这样会导致全索引扫描或者全表扫  描。如果是这样的条件where code like 'A %...

2019-07-29 20:49:42 4364

原创 1.[SpringAOP源码解析]之为容器中的bean创建代理类的流程

个人理解:SpringAOP是SpringIOC的扩展功能,IOC功能返回的是Spring容器中的实际对象,而AOP功能返回的是Spring容器中实际对象的代理对象。1.准备工作AOP的简单使用示例:创建目录结构如下 AOP类,切面类定义如下//切...

2019-07-25 19:55:26 391

原创 4.[Spring源码解析]Spring解决bean的循环依赖问题为何需要三级缓存,而不是两级缓存?

1.知识回顾1.1 何为循环依赖?所谓的循环依赖是指,A 依赖 B,B 又依赖 A,它们之间形成了循环依赖。或者是 A 依赖 B,B 依赖 C,C 又依赖 A。它们之间的依赖关系如下: 1.2 哪三级缓存?DefaultSingletonBeanRegistry类的三个成员变量命名如下:/** sin...

2019-07-24 20:30:49 14340 39

原创 [算法]背包问题(Java版)

参考博客:背包问题之回溯法,贪婪算法解法参考博客:背包问题动态规划解法的讲解参考博客:背包问题模板解法背包问题的分类一个背包总容量为V, 现在有N个物品, 第i个物品容量为weight[i], 价值为value[i], 现在往背包里面装东西, 怎样装才能使背包内物品总价值最大.主要分为3类:0-1背包, 每个物品只能取0个,或者1个. 完全背包, 每个物品可以取无限次. 多重背...

2019-07-22 20:14:53 534

原创 JDBC中preparedstatement与statement的区别

①概念 PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程。②区别...

2019-07-18 14:57:17 234

原创 1.[Mybatis源码]一级缓存、二级缓存

参考博客:https://www.cnblogs.com/happyflyingpig/p/7739749.htmlMybatis的执行器BaseExecutor执行器使用的是一级缓存CachingExecutor执行器使用的是二级缓存1.一级缓存1.1整体架构图1.2一级缓存的实现(源码级别) 一级缓存其实通俗地来讲就是,在sqlses...

2019-07-17 10:19:15 146

原创 使用LinkedHashMap实现LRU算法

①重写LinkedHashMap中的removeEldestEntry方法,设置移除元素的时机(模板方法)②LinkedHashMap继承HashMap,在HashMap插入元素的putVal方法中,调用了LinkedHashMap实现的afterNodeInsertion方法(模板方法)③LinkedHashMap的afterNodeInsertion方法...

2019-07-16 16:48:56 568

原创 java的SPI机制

①SPI的简介SPI是Service Provider Interfaces的简称。根据Java的SPI规范,我们可以定义一个服务接口,具体的实现由对应的实现者去提供,即Service Provider(服务提供者)。然后在使用的时候只要根据SPI的规范去获取对应的服务提供者的服务实现即可。②使用场景一般使用接口的实现类都是静态new一个实现类赋值给接口引用,如下:Hello...

2019-07-10 16:00:46 412

原创 3.【spring源码】之整合mybatis

①spring配置文件中的mybatis配置②根据配置文件将SqlSessionFactoryBean,MapperScannerConfigurer两个bean注入到Spring容器中。MapperScannerConfigurer的作用:注册mapper接口③SqlSessionFactoryBean的作用:将mybatis创建完成的SqlSessionFactory(new ...

2019-07-09 15:05:19 127

原创 2.【spring源码解析】之FactoryBean

参考博客:https://blog.csdn.net/zknxx/article/details/79572387 https://blog.csdn.net/zknxx/article/details/79588391#commentBox①FactoryBean的使用②FactoryBean在spring中的实现流程图③FactoryB...

2019-07-05 11:34:34 230

原创 1.【spring源码解析】俯瞰spring bean的生命周期

一、Spring 容器高层视图(高度概括版)Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配号Bean之间的依赖关系,为上层应用提供准备就绪的运行环境。①创建springIOC容器的两种方式②以JavaConfig风格+注解的方式来创建IOC容器为例查看创建的过程//根据...

2019-07-03 17:30:44 117

原创 SpringBoot集成mybatis拦截器的实现

①创建SpringBoot工程项目目录:②导入jar包<!--SpringBoot与mybatis的整合--><dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starte...

2019-06-20 22:14:10 9177 1

原创 2.电商订单系统的设计

参考博客:大众点评是如何实现分库分表的http://www.360doc.com/content/18/0126/10/40769523_725195148.shtml①订单部分数据库的设计②订单号的生成(全局唯一ID)由于订单号的高并发,使用百度开源的,基于Snowflake算法的全局唯一ID生成器UidGenerator。源码地址:https://github....

2019-06-19 21:31:08 1454

原创 1.电商商品数据库设计

参考博客:https://blog.csdn.net/qq_39218605/article/details/81564120①如何解决不同类商品的不同规格参数?(使用json格式)(补充:商品表(SPU)添加商家ID字段)②将商品库存单独创建一张表,因为需要频繁操作库存表。...

2019-06-19 21:28:48 5246

原创 ssh: connect to host github.com port 22: Connection timed out的解决方法

在提交基于zookeeper实现的分布式锁时,遇到如下问题:一、问题情景git pull 时报错二、可能的原因:在GitHub端的公钥失效三、我的解决方法①利用HTTPS进行传输,选择HTTPS的URL②利用HTTPS的URL建立本地仓库与远程仓库的连接git remote add 连接名称 URL这时会存在这样的问...

2019-05-18 14:44:56 7659

原创 MySQL实现连续排序,顺序排序,跳跃排序

数据表如下:①DENSE_RANK()排序oracle中的dense_rank()排序排序效果如下:MySQL实现的语句代码如下:方法一:SET @RANK=0;SET @PREScore=0;SELECT Score,CASEWHEN @PREScore=Score THEN @RANKWHEN @PREScore:=Score THEN...

2018-10-26 16:46:08 3822

原创 将项目打包成war包

①到指定目录②运行maven命令mvn package -Dmaven.skip.test=true③到指定目录找到该war包

2018-10-15 20:52:21 950

原创 在阿里云上配置Java Web项目部署环境

①安装前准备在安全组中放行 8080 端口。(参考:https://help.aliyun.com/document_detail/25471.html?spm=a2c4g.11186623.2.12.36576443kPikFA#concept_sm5_2wz_xdb)②配置环境1.jdk的安装1.1 gzip: stdin: not in gzip format 问题的解决...

2018-10-15 20:46:15 527

原创 使用Docker部署Jenkins之No such plugin: cloudbees-folder

解决方案:地址栏里面输入:ip:端口号/restart

2018-09-10 21:19:05 1322 2

原创 使用maven构建多模块项目

①首先创建一个springboot项目②再new一个新的模块(新模块依然是springboot项目,同理可以继续创建需要的新模块)目录结构如下图所示③构建模块的依赖关系,模块之间的依赖如下图所示在父模块的pom文件中添加项目的所有依赖,子模块可以继承父模块的依赖。&lt;dependencies&gt;&lt;!--redis--&gt;&lt;depende...

2018-08-28 15:40:32 1854

原创 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column ' studentname' in 'where

 SQL语句拼写错误,字段名拼写错误。

2018-08-28 15:35:40 3439

原创 java.sql.SQLException: Access denied for user ''@'localhost' (using password: YES)

springboot连接数据的参数名称错误,错误示例如下:或是解决方案:正确的参数名称为:

2018-08-28 15:34:25 348

原创 org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type

解决方案:在springboot项目中,DAO层接口需要加@Mapper注解。

2018-08-28 15:31:18 558

原创 springboot之aspectj实现的aop

①需要的依赖包&lt;!--AOP--&gt;&lt;dependency&gt;&lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;&lt;artifactId&gt;spring-boot-starter-aop&lt;/artifactId&gt;&lt;version&gt;2.0.0.RELEASE&lt;/

2018-08-03 11:29:40 1683

原创 springboot与mybatis的整合之基于注解和基于xml的两种方式

基于注解的参考博客https://www.cnblogs.com/cc11001100/p/7811257.html①需要导入的jar包&lt;!--数据库驱动--&gt;&lt;dependency&gt;&lt;groupId&gt;mysql&lt;/groupId&gt;&lt;artifactId&gt;mysql-connector-java&lt;/artifactI...

2018-08-03 10:25:33 1031

原创 Aspecj实现的AOP,AOP实现的登录校验

①需要导入的jar包&lt;!--AOP--&gt;&lt;dependency&gt;&lt;groupId&gt;org.springframework&lt;/groupId&gt;&lt;artifactId&gt;spring-aop&lt;/artifactId&gt;&lt;version&gt;${spring.version}&lt;/version&amp

2018-07-25 14:10:10 682

原创 ubuntu16.04上安装CUDA 8.0,报如下错误:The driver installation is unable to locate the kernel source并附解决方案(亲测)

安装CUDA的官方文档:https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html①引言        报错的原因是因为我是选择在CUDA的安装过程中安装NVIDIA显卡驱动的,而我的ubuntu内核不支持NVIDIA显卡驱动的安装,所以解决的方法很简单,替换ubuntu系统的内核。②替换ubuntu的内核...

2018-07-16 21:44:52 5612 6

原创 SSM框架中封装后端返回的Json数据

①首先需要一个封装类(泛型类)/*** 封装后端返回的Json数据*///保证序列化json时,如果是null的对象,key也会消失@JsonInclude(JsonInclude.Include.NON_NULL)public class ServerResponse&lt;T&gt; {//状态码private int statu;//数据private T data;//描述信息privat...

2018-07-14 11:28:24 7060 2

原创 SSM框架中基于session的登录校验

①DAO层/*** 登录校验* @return*/User loginCheck(@Param("userId")Integer userId,@Param("userPassword")String userPassword);②service层@Overridepublic ServerResponse&lt;User&gt; loginCheck(String userId, String ...

2018-07-14 11:27:17 9489 1

原创 SSM框架中mybatis传递多个参数实现联合查询的两种方法

①将多个参数封装成一个类1.首先创建一个类,将参数作为类的属性public class Student {private int studentId;private String studentName;private String studentClassid;public int getStudentId() {return studentId;}public void setStudentI...

2018-07-13 15:38:33 8224 1

空空如也

空空如也

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

TA关注的人

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