自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2022企业级常见面试题

索引、线程池

2022-10-20 10:16:18 426 1

原创 工作中常见的linux命令

工作中常见的linux命令

2022-08-30 09:37:51 524

原创 什么才是大型网站项目

首先问一个问题:hao123 网站访问量很大吧,他是属于大型项目嘛。其实算是半对吧,为什么呢?这个网站的访问量是非常巨大的,但这样的网站,都是提供了一个静态页面,用户点击是跳转到其他网站,这些网站本身是不具备庞大的数据量的。用户当成一个菜单使用,相当于Web1.0 时代的小型网站。再看一下京东、淘宝、天猫,这些网站无疑都是大型网站,首先有庞大的访问量,请求量,数据存储量也是非常庞大的,拥有海量数据,并且结合了大数据分析,分析给你推荐的商品等等。大型网站的特点有很多:1、高并发,流量大:一个网站从小做

2022-04-13 15:49:36 338

原创 常见数据源有哪些?

数据源(顾名思义就是数据库的来源)目前常用的数据源主要有:原生态:JDBC封装:dbcp,c3p0,druidSpring 推荐使用dbcp;Hibernate 推荐使用c3p0和proxool1、druid<!-- 数据源配置 --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <!--配置驱动类名字--> <property name="dri

2022-04-11 15:18:04 5408

原创 spring boot配置定时任务及cron表达式详解

如何使用定时任务1、在启动类上加入@EnableScheduling注解;2、创建定时任务的类ScheduledTasks,并加上注解@Component,将类注入到Spring容器中;ScheduledTasks类中,将需要定时执行的方法加上@Scheduled注解,配置定时策略。@Schedule的三种配置策略每五秒执行一下,三种方式:● @Scheduled(cron = “0/5 * * * * ?”) //通过表达式来配置任务执行时间● @Scheduled(fixedRate

2022-03-28 17:14:47 1473

原创 面试复盘总结

Object常见方法?1、hashCode和equale函数用来判断对象是否相同,2、wait(),wait(long),wait(long,int),notify(),notifyAll()3、toString()和getClass,4、clone()5、finalize()用于在垃圾回收java8新特性?1、Lambda表达式;2、方法引用;3、默认方法;4、新编译工具;5、Stream API;6、Date Time API;7、Option;8、Nashorn javas

2022-03-25 18:06:26 2850

原创 什么是缓存穿透,怎么解决呢?

缓存穿透是指缓存和数据库中都没有的数据,导致所有的请求都落到数据库上,造成数据库短时间内承受大量请求而崩掉。用户-》查询-》查询不到直接库中返回;解决方案:接口层增加校验,如用户鉴权校验,id做基础校验,id《=0的直接拦截。从缓存中取不到的数据,在数据库中也没有取到,这时也可以将key-null写入,缓存有效时间可以设置短一些,这样可以防止同一个id进行暴力攻击。布隆过滤器在读取缓存前,先读取布隆过滤器,实现原理:进行hash通过和长度取模计算出对应的位置,判断是否可以通过。有一个缺点,可

2022-03-23 16:29:46 1061

原创 如何保证缓存与数据库读写时的数据一致性

更新缓存方案1、先更新缓存,再更新DB这个方案方案我们一般不考虑,原因是更新缓存成功了,更新数据库出现了异常,导致缓存和数据库完全不一致,而且很难察觉,因为缓存中的数据一直存在。2、先更新DB,再更新缓存以上同理3、先删除缓存,后更新DB该方案也会出现问题,具体原因如下。此时来了两个请求,请求A(更新操作)和请求B(查询操作)请求A会先删除Redis中的数据,然后去数据库进行更新操作。此时请求B看到Redis中的数据是空的,就会去数据库中查询该值,补录到Redis中。但是此时请求A并没有

2022-03-23 15:56:50 976

原创 线程池入门

一、线程池是一种池化思想:线程池,字符串常量池,数据库连接池提高资源的利用率1、需要手动创建线程对象2、执行任务3、执行完毕,释放线程对象排队,出现等待队列线程的优点:1、提高线程的利用率2、提高程序的响应速度3、便于统一管理线程对象4、可以控制最大并发数例如银行业务办理,默认开通3的窗口,业务繁忙时会增加业务办理窗口开放,最多开放5个窗口,等候区最多3人等待,再进一人会触发拒绝策略。 // corePoolSize: 线程池核心线程数 // maximumPo

2022-02-28 15:06:32 465

原创 MySQL的事务问题与锁

脏读:一个事务进行数据修改,还未提交,另一个事务对此数据进行使用。不可重复读:一个事务内,多次读同一个数据,另一个事务进行修改,第一个事务两次读取的数据不一样。幻读:一个事务进行数据的每行修改,另一个事务进行了插入一行,第一个事务发现表中还有未改数据,就像发生了幻觉。窗口一set autocommit=0; @1update test_innodb_lock set b = ‘a4’ where a=1 or a=2;@2select * from test_innodb_lock;@3com

2022-02-22 11:29:35 382

原创 mybatis缓存

mybatis缓存一、什么是缓存?查询-》数据库 问题:耗资源!一个查询的结果,给他暂存一个可以直接取的地方。-〉内存:缓存我们再次查询相同数据的时候,直接走缓存,就不用走数据库了。解决了高并发系统的性能问题。二、为什么使用缓存?减少和数据库的交互次数,减少系统开销,提高系统效率。三、什么样的数据库能使用缓存?经常查询并且不经常改变的数据。mybatis缓存mybatis包含一个非常强大的查询缓存特性,他可以非常方便地定制和配置缓存。缓存可以极高提供查询效率。myba

2022-02-21 09:54:28 448

原创 高并发Redis微博点赞实战

微博点赞实战代码地址:https://gitee.com/zhangmengxiang123/like一、微博点赞业务场景分析梳理点赞的业务场景,它由两个接口:第一个:点赞或取消点赞,用户点击功能第二个:查看帖子信息:通过用户id 和帖子id查看改帖子,查看该帖子点赞数,查看该用户是否点赞状态。二、微博点赞的技术方案点赞的关键技术就是要判断该用户是否点赞,已点赞的用户不允许重复点赞,即过滤重复,虽然业务不复杂,可以采用数据库直接实现,但是对应微博这种高并发的场景,不可能查数据的,一般是缓存,

2022-01-19 14:04:32 2686

原创 知识在脑中回荡,累了困了敲一敲

public static void main(String[] args) { //String、StringBuffer、StringBuilder //String final 修饰,不可变的,每次操作都会产生一个新的对象 //StringBuffer 在原对象进行操作,StringBuffer是线程安全的,效率低,中的每个方法都是被synchronized修饰的 //StringBuilder 在原对象进行操作,线程不安全的,效率高,单

2022-01-14 10:44:12 83

原创 java.math.BigInteger cannot be cast to java.lang.Integer的解决方法

在使用hibernate2进行原生的sql的单个结果的查询时,例如sql:select ifnull(count(1), 0) as insurance_count from 表,返回的是一个object类型的值。转换为int类型:1、先转成String类型,String str=obj.toString();2、然后使用Integer的parseInt(str)或者valueOf(str)转换成int类型就行了int num = Integer.valueOf(str);...

2022-01-12 14:12:32 1122

原创 jdk1.8中HashMap底层链表转红黑树的阈值为什么是8?链表查询慢为啥不直接用红黑树?

总结一下:jdk1.8中HashMap底层链表转红黑树的阈值为什么是8?链表查询慢为啥不直接用红黑树?1、红黑树插入效率慢,例如我插入一个001、002、003会进行左旋,进行数据交换,效率较低,阈值为8是想达到一个平衡。2、红黑树中的TreeNode是链表中的Node所占空间的2倍。3、虽然红黑树的查找效率为o(logN),要优于链表的o(N),但是当链表长度比较小的时候,即使全部遍历,时间复杂度也不会太高。4、实验证明,之所以是8,hash碰撞发生8次的概率已经降低到了0.00000006。

2022-01-11 11:01:09 1054

原创 Java内存模型(JVM)

JVM 内存模型共分为5个区:Java虚拟机栈、本地方法栈、堆、程序计数器、方法区(元空间)本地方法栈:用于管理本地方法的调用,里面并没有我们写的代码逻辑,其由native修饰,由 C 语言实现。程序计算器:程序当前执行的位置。它是一块很小的内存空间,主要用来记录各个线程执行的字节码的地址,例如,分支、循环、线程恢复等都依赖于计数器。Java 虚拟机栈:用于存储局部变量表、操作数栈、动态链接、方法出口等信息。(栈里面存的是地址,实际指向的是堆里面的对象)堆:Java 虚拟机中内存最大的一块,是被.

2021-12-16 17:55:59 919

原创 Java基础知识总结笔记一

equals()和==区别。为什么重写equal要重写hashcode?== 号是运算符,equals来自于object定义的一个方法;== 可以用于基本数据类型和引用数据类型,equals只能用于引用类型;== 两端如果是基本数据类型,比较的值;equals重写之后,判断两个对象的属性值是否相同;equals不重写,其实就是==号;重写equals可以让我们自己定义判断两个对象是否相同的条件;Object中定义的hashCode方法生成的哈希码能保证同一个对象的哈希码一定是不同的;当equ

2021-12-15 18:18:58 689

原创 Thymeleaf模板引擎详细介绍

一、模板引擎工作原理二、SpringBoot推荐的Thymeleaf模板引擎;语法更简单,功能更强大;2.1 引入 thymeleaf<!--thymeleaf 组件--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> <

2021-12-01 17:22:30 1717

原创 mybatis plus 条件构造器queryWrapper学习

//查询名字中包含a,年龄大于等于10小于等于15,email不为空的用户 @Test public void test1() { //组装查询条件 QueryWrapper<IfUser> queryWrapper = new QueryWrapper<>(); queryWrapper.like("name", "a");//模糊查询 queryWrapper.between("age", 10, .

2021-11-29 18:37:50 418

原创 springboot整合mybatis-plus 乐观锁

一、环境搭建环境搭建链接二、表创建create table product( id bigint auto_increment comment '主键ID' primary key, name varchar(30) null comment '商品名称', price int default 0 null comment '价格', version int default 0 null comment '乐观锁版本号');

2021-11-29 15:27:00 477

原创 苞米豆 mybatisplus annotation常用注解

一、@TableName(value = “if_user”) 或 @TableName(“if_user”)@TableName注解主要是实现实体类型和数据库中的表实现映射。二、@TableId默认情况下数据库的id列使用的是基于雪花算法的策略生成。背景数据库的扩展方式主要包括:业务分库、主从复制、数据库分表。2.1、垂直分表垂直分表适合将表中某些不常用且占了大量空间的列拆分出去。例如:一张用户信息表,条件查询常用的年龄、性别 为一张表,另开一张表存储用户其他详细信息,user 用户表、u

2021-11-27 20:47:57 2966

原创 MyBatis-Plus快速搭建入门,看这一篇就足够了

一、环境快速搭建1、创建数据库 mybatis_plus,创建表 if_user 表。create table if_user( id bigint not null comment '主键ID' primary key, name varchar(30) null comment '姓名', age int null comment '年龄', email varchar(50) null comment '邮箱'

2021-11-27 16:53:00 1084

原创 微信公众号模板消息推送问题汇总

总结:经常遇到的微信模版消息推送返回失败情况!1、{“errcode”:40037,“errmsg”:“invalid template_id hint: [2ZVwjA0418ge29]”}原因:template_id不存在排查步骤:1.1 检查template_id是否正确1.2 是否是对应环境的公众号下配置的消息模版2、{“errcode”:40001,“errmsg”:“invalid credential, access_token is invalid or not latest

2021-11-11 15:56:49 6790

原创 懒/饿汉式

/** * 懒汉式 */public class Lazz { private volatile static UserInsurePerson userInsurePerson;//volatile 防止指令重排 public UserInsurePerson getUserInsurePerson() { if (userInsurePerson == null) { synchronized (Lazz.class) { //保证程序安

2021-11-11 15:33:46 60

原创 面试复盘错题笔记一

1. Integer 取值范围内-128-127 == 比较为true,否则为false2. 异常体系3. Redis list队列咋使用的。lastpop尾部获取4. 接口和抽象类区别?一个类只能继承一个抽象类,而一个类可以实现多个接口。 抽象类可以有构造方法,接口中不能有构造方法。抽象类中可以有成员变量,接口中没有成员变量。(被final修饰变成了常量)抽象类中可以有普通方法,接口中所有方法都必须是抽象的。(1.8后允许接口定义非抽象方法)抽象类中抽象方法的访问类型可以是public,

2021-11-11 15:16:37 930

原创 撸鸭撸 Redis入门第二章

Set (集合)set中的值是不能重复的。 sadd myset "hello" #添加一个值 smembers myset # 查看指定set值sismember myset hello #判断某一个元素是否在set中 scard myset # 获取集合中的元素个数值 sremmyset a1 #移除set指定元素 set是无序,不重复集合 srandmember myset #随机抽set元素 spopmyset #随机删除set元素 smove sa sb a1 #将一个库里指定的值移动到

2021-07-28 18:24:48 449

原创 撸鸭撸 Redis入门第一章

1.什么是Redis?使用C语言编写,一款开源的高性能基于内存运行的键值对NoSql数据库。2.特点2.1 持久化,数据保存在磁盘中,重启之后可以将数据再次加载到内存中2.2 支持多种数据类型,处了KV类型的数据,还支持list、set、hash等数据结构3.Redis的应用场景3.1 热点数据加速查询,如热点商品,热点信息等访问量较高的数据3.2 即使的信息查询,如公交车到站信息,在线人数等3.3 时效性信息控制,如验证码控制,股票控制4.基础知识4.1 Redis默认有

2021-07-19 11:29:11 326 1

原创 Mysql理论

存储引擎:表的存储方式 InnoDB 引擎 字符集 utf-8常见的存储引擎:1. NYISAM 存储引擎 不支持事务 MYSQL最常用的 但是不是默认的使用三个文件表示 每个表:格式文件 - 存储表结构的定义(mytable.frm)数据文件 - 存储表行的内容(mytable.MYD)索引文件 - 存储表上索引(mytable.MYI)优点:可被压缩,节省存储空间,并且可以转换为只读表,提高检索效率缺点:不支持事务2. InnoDB 存储引擎表结构存储在xxx.frm文件中表数

2020-12-18 11:40:00 121

原创 Mybatis 使用maven插件mybatis-generator自动生成entities和SQL和mapper

因数据库表有点多,又不想一个一个写javabean,今天想试试同学说过的idea的一个插件,进行mysql数据库的表直接生成javaBean类安装一个插件安装idea-mybatis-generator 插件,重启idea增加一个Maven启动器mybatis-generator:generate -e编写MyBatisGenerator.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfigu

2020-07-08 17:42:30 158

转载 SQLServer分页

–创建数据库CREATE TABLE [dbo].[Student]( [id] [int] NOT NULL, [name] [nvarchar](50) NULL, [age] [int] NULL)–查询所有学生SELECT * FROM Student–创建测试数据declare @i intset @i=1while(@i<10000)begin insert into Student select @i,left(newid(),7),@

2020-06-16 09:04:31 127

原创 eclipse maven配置问题(pom.xml第一行报错)

使用eclipse 创建maven项目后pom 第一行pom出现红色叉号如何解决呢?在properties 标签里添加这个就解决了<properties> <maven-jar-plugin.version>2.6</maven-jar-plugin.version></properties>...

2020-06-03 09:42:31 578

原创 $%7BpageContext.request.contextPath%7D

pageContext.request.contextPath被解析成{pageContext.request.contextPath}被解析成pageContext.request.contextPath被解析成%7BpageContext.request.contextPath%7D1. jsp代码2. 页面解决方案:查看web.xml 如果低于2.4,更换代码 如下web.xml<?xml version="1.0" encoding="UTF-8"?><web-

2020-05-29 17:40:50 338

原创 线程8大核心基础知识【2】-- 启动线程的正确和错误方式

终于有时间写 线程8大核心基础知识【2】-- 启动线程的正确和错误方式。跟我一起学习,一起攻破Java并发吧!为了能拿到offer,为了美好生活,为了明天,加油!启动线程的正确和错误方式start()和run()的比较代码演示start()方法原理解读run()方法原理解读彩蛋:Java名字的由来常见面试问题...

2020-05-18 18:09:29 165

原创 快速排序-java实现

昨天参加笔试,里面有一道题就是手写快速排序,检查了一遍,很遗憾,发现写错了!今天写篇文章,以后忘记了可查看巩固快速排序基本思想1.选定p中心轴(随便取值)2.将大于p的数字放在p的右边3.将小于p的数字放在p的左边4.分别对左右子序列重复前三步操作(使用递归)快速排序执行规则和流程快速排序代码实现public class test01 { public static void main(String[] args) { int[] a = {9, 9, 6, 7,

2020-05-17 10:31:08 142

原创 Java面试基础问题面试题3(2020年面试题)

此文章整理的是2020年真实面试题get和post的区别get是不安全的,请求是在URL中;post较安全,数据存放在请求体中不可见get传送的数据量较小,post传输数据量较大,一般不受限制get执行效率比post方法好,get是from提交的默认方法get限制from表单的数据集的值必须为ASCll字符;而post支持整个ISO10646字符集请求转发和重定向区别地址栏是否改变:forward浏览器端网址不会发生变化,redirect浏览器端地址会变是否可共享请求参数:forw.

2020-05-11 16:11:52 204

原创 IDEA插件加载不出、使用Lombok时无法找到Get/Set方法等常见问题

IntelliJ IDEA 2018.3.5 x64 -> IntelliJ IDEA 2019.1.3 x64 今天打算把IDEA升个级 换成2019版本的发现插件加载不出,Lombok安装缺无效等问题,记录一下打开项目发现 lombok 的get set 方法不能使用检查是否安装Lombok插件可能会导致的问题 就是插件加载不出来解决方案检查网络,防火墙重复重启IDEA,进行尝试System Settings–>updates 去掉Use secure

2020-05-11 13:04:12 1148

原创 Java面试基础问题面试题2(连环炮)

这里写自定义目录标题什么是Java(待视频观看)JDK和JRE的区别?JDK环境配置讲一讲Java内存的堆(heap)、栈(stack)和方法区(method)面向对象的基本特征JDK和JRE的区别?JDK和JRE的区别?JDK和JRE的区别?你可以找到更多关于的信息 LaTeX 数学表达式[here][1].什么是Java(待视频观看)JDK和JRE的区别?JRE:是Java Run...

2020-05-08 16:50:14 532

原创 线程8大核心基础知识【1】-- 实现多线程的方法

这些问题都是面试常考问题。跟我一起学习,一起攻破Java并发吧!为了能拿到offer,为了美好生活,为了明天,加油!1.实现多线程的方法有1种2种还是4中?百度搜索一下先:在此图中有2种,3种,4种各不相同,鱼龙混杂那到底为有几种呢?答案是2种,一些人又质疑了,凭啥信你?不权威!辩论:Oracle官网的文档是如何写的呢?这就很权威了吧!Oracle官网的文档是如何写的?方法一...

2020-05-04 19:25:42 326 1

原创 基本 引用数据类型面试题1(连环炮)

小编上一篇文章为框架整理,这篇文章就整理整理java基础面试问题吧!此面试题就像连环炮一样,面试官老师想到什么就问什么!1. java有哪几种基本数据类型,都是什么?八种基本数据类型:字节型:byte 8位 短整型:short 16位 整数:int 32位长整型:long 64位 单精度:float:32位 双精度:double 64位字符型:char 8位 布尔型:boolean 8...

2020-04-27 08:24:31 522

原创 java框架常见的面试题整理

最近本人要出去找工作了,来过一过学过的框架,嘿嘿~根据招聘需求,捋一捋框架,嘿嘿~注:此为本人整理,整理的不规范,尽请谅解一. SSH (了解)设为了解,没使用过,但招聘需求包含,咱得了解了解基于MVC开发,分为表现层、业务逻辑层、数据访问层、模块层。用于短期环境搭建结构,web应用程序开源框架,市场上流行的框架有主要有SSH和SSM,相比较于SSH,SSM现在使用更多,但例如JSP,S...

2020-04-23 10:46:05 573 1

空空如也

空空如也

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

TA关注的人

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