- 博客(118)
- 资源 (2)
- 收藏
- 关注
原创 springboot---四大核心
springboot项目中几乎项目依赖中基本上全是各种各样的starter, 那么到底什么是starter?starter是一组方便的依赖描述符,当我们使用它时,可以获得所有需要的Spring和相关技术的一站式服务,典型的如spring-boot-starter-web,引入之后,自动引入所有有关spring web项目相关的依赖。--监控依赖-->
2024-01-31 16:23:27 975
原创 JAVA系列---线程池
如流程图所示,当提交任务后,线程池首先会检查当前线程数,如果此时线程数小于核心线程数,比如最开始线程数量为 0,则新建线程并执行任务,随着任务的不断增加,线程数会逐渐增加并达到核心线程数,此时如果仍有任务被不断提交,就会被放入 workQueue 任务队列中,等待核心线程执行完当前任务后重新从 workQueue 中提取正在等待被执行的任务。,它的第二个参数是个布尔值,如果布尔值传入 true 代表增加线程时判断当前线程是否少于 corePoolSize,小于则增加新线程,大于等于则不增加;
2023-12-29 15:12:08 856
原创 JAVA系列---Servlet详解
CGI、WSGI、servlet 和类似的东西。其作用大同小异, 实质就是服务器运行脚本并发送其输出的一种方式,而不是一些静态网页。Web 开发昨天还没有诞生,标准(和名称)还没有被某个神圣的实体透露。人们尝试了不同的方法来使相同(或类似)的东西工作,而通用网关接口(interface)一直是旨在标准化这些东西的规范。嗯,在 20 多年前的那个时代,互联网(和网络开发)主要是一项学术业务,学者们喜欢“大”名(嗯,营销人员更喜欢他们)。
2023-11-23 18:49:26 175
原创 大局观场景
但是,由于与开发整体式应用程序所需的长期成本相比,资源成本通常较低,且具有能够横向扩展应用程序的某些区域的优点,因此增加资源使用量好过使用大型、长期应用程序。像这类游戏,都是对网络,内存,CPU 的优化需求很高,整个游戏进行过程中,几乎不存在什么 RPC call,真的需要 remote data,也应该是 prefetch,就是在游戏刚开始的时候加载好。账号系统,符文系统,英雄系统,皮肤系统,好友系统,好友之间 messaging,这些都是常规操作,如果流量足够大,当然可以用微服务的架构去做。
2023-11-13 17:37:47 126
原创 MySQL系列---Online DDL
适用于mysql的5.7及以上的版本:增加、删除索引不会锁表,且删除索引速度非常快,即使表很大的情况下,无关CREATE INDEX语句还是ALTER TABLE语句,CREATE INDEX的内部执行逻辑也是ALTER TABLE。无限制条件的update语句也不会锁表:UPDATE jml_qrcode SET aaa = ‘22’;它的执行逻辑应该是逐行修改,总之不会锁表,最多锁行。修改字段默认值及修改字段限制也不会锁表,应该都是逐行;
2023-10-13 11:46:02 276
原创 MySQL系列---分区表实验
任意表达式 + 正整数分区数量 + 服务器内置算法对任意数据类型求hash + 分区表达式非整数时极易分区不均衡。VARCHAR(99) NOT NULL, 为key分区字段。整数表达式 + 连续递增区间 + switch判断逻辑。datetime NOT NULL, 为key分区字段。整数表达式 + 不重复离散值逗号分隔。整数表达式 + 正整数分区数量。分区表达式where查询。分区表达式where查询。分区表达式为穷尽离散值。
2023-08-02 15:00:39 199
原创 springboot---定时任务实现
如果15号正好是周六,则找最近的周五(14号)触发, 如果15号是周未,则找最近的下周一(16号)触发.如果15号正好在工作日(周一至周五),则就在该天触发。#序号(表示每月的第几个周几),例如在周字段上设置”6#3”表示在每月的第三个周六.注意如果指定”#5”,正好第五周没有周六,则不会触发该配置(用在母亲节和父亲节再合适不过了);L 表示最后的意思。在日字段设置上,表示当月的最后一天(依据当前月份,如果是二月还会依据是否是润年[leap]), 在周字段上表示星期六,相当于”7”或”SAT”。
2023-07-08 14:39:03 3121
原创 springboot---IoC 和 AOP
创建了许多重复对象,造成大量资源浪费;更换实现类需要改动多个地方;创建和配置组件工作繁杂,给组件调用方带来极大不便。切面逻辑编写繁琐,有多少个业务方法就需要编写多少次。
2023-05-18 18:47:13 892
原创 计算机原理---常见网络问题
我们知道,在Internet上有千百万台主机,为了区分这些主机,人们给每台主机都分配了一个专门的地址,称为IP地址。通过IP地址就可以访问到每一台主机。IP地址由4部分数字组成,每部分都不大于256,各部分之间用小数点分开。例如“百度搜索”主机的IP地址就是:“119.75.217.109,”在浏览器上输入这个IP地址,就可以访问到百度的主页。我们的每个虚拟主机用户,都分配一个永久的IP地址。
2023-05-10 13:52:19 740
原创 springboot---检验请求参数
举例说明自定义注解的实现:需要一个自定义注解来校验入参name不能和已存在name重名自定义注解@Target({//下面三个属性是必须有的属性 String message();Class
2023-03-23 14:15:40 706
原创 JAVA系列---优化 if/else
但是,大量使用if / else 会使程序变得臃肿和冗长,而且随着时间推移,业务的增加,也会导致代码逻辑复杂,维护性差,而且改一点就需要回忆整个逻辑。判断可以说是我们程序中必不可少的逻辑处理方式,最简单的就是 if / else 语句,以上就是最常见if/else if,用时候确实很爽。场景:只有 if 和else ,符合/不符合条件的操作无交集。场景:符合/不符合条件操作后的返回值不同。场景:不同条件下执行的操作或返回的值不一样。场景:需要对值进行 null 判断。场景:不同条件下需要执行不同的操作。
2023-03-22 13:31:27 831
原创 JAVA系列---内存泄露示例
这绝大概率就是内存泄漏了啊。但是在生产上的内存走势图完全看不出来这个趋势,我前面说了,主要因为 GC 情况的数据只会保留一周时间,所以就算把整个图放出来也不是那么直观。我再带着你看看另外一个视角,这是我真正定位到问题的视角。就是分析内存 Dump 文件。分析内存 Dump 文件的工具以及相关的文章非常的多,我就不赘述了,你随便找个工具玩一玩就行。我这里主要是分享一个思路,所以就直接使用 idea 里面的 Profiler 插件了,方便。
2023-03-20 18:17:37 881
原创 springboot---循环依赖
一个@Async注解引发了项目报错实际报错:核心报错其实就一句:百度翻译:大白话:在创建bean名称commonServiceImpl时,发现commonServiceImpl在循环依赖中已经以原始bean实例引用注入到其他bean(jmlMoneyflowingServiceImpl)中,但是最终bean实例commonServiceImpl被进行包装,导致前后不一致,出现了多个版本实例。但是,如上伪代码,将@Async注解去掉,项目启动则不会报错,即有@Async注解则出现循环依
2022-11-17 21:13:42 5794 6
原创 MySQL系列---隔离级别与存储引擎
加锁不是一件好事,加锁时一定要慎之又慎,如果可以用逻辑处理并发影响或者依赖数据库处理那么就不要加锁,加锁对性能的影响极大,如果没有感受到影响,无他,并发量太小未达到瓶颈罢了,加锁的影响无论何时何地都是切实存在的。,是的,完全同步,不要想会不会这么巧,你是不是扯犊子,使用锁不就是因为完全同步的线程执行时会出现问题,锁的目的不就是为了禁止完全同步的程序往下执行吗?个人历程,从最开始的不加锁,到加锁,再到滥用锁,再到精准用锁,最后到锁合并。晚上睡觉的时候一直睡不着,想着自己的锁是不是有漏洞。
2022-08-19 13:56:10 23
原创 服务部署---常见问题
文章目录1. 启动服务时如果有关pid错误1. 启动服务时如果有关pid错误启动服务时如果有关pid错误,可以查看是否服务冲突程序和进程:PID和PPID特别说明
2022-05-18 22:01:22 122
原创 JAVA系列---synchronized的用法
1. 背景1.1 多线程操作同一个对象1.1.1 不加锁public class HandleThread { public static void main(String[] args) { SyncThread s1 = new SyncThread(); SyncThread s2 = new SyncThread(); Thread t1 = new Thread(s1);// Thread t2 = new Threa
2022-04-28 22:23:54 4568
原创 MySQL系列---事务与锁详解
table of contents1. 背景2. 事务隔离级别2.1. 事务及其ACID属性2.2. 并发事务带来的问题1. 背景MySQL默认存储引擎是InnoDB,代替了之前的MyISAM存储引擎。InnoDB与MyISAM相比,InnoDB支持事务,支持多种锁机制,有行锁和表锁,行锁支持事务。MyISAM只支持表锁,且不支持事务。2. 事务隔离级别2.1. 事务及其ACID属性事务是由一组SQL语句组成的逻辑处理单元。事务具有以下4个属性,简称为ACID。原子性(Atomicity
2022-04-26 19:15:10 2310
原创 MySQL系列---索引详解
文章目录1. 背景2. 索引概念2.1. 索引分类2.1.1. 从数据结构角度区分2.1.2. 从物理存储角度区分2.1.3. 从逻辑角度区分2.1.4. 从主键角度区分2.1.5. 从查询角度区分2.2. 创建索引2.3. 修改(添加)索引2.4. 删除索引2.5. 查看索引2.6. 常用关键字3. 索引结构演化及实现原理3.1. 二叉查找树(Binary Search Tree,简称BST)3.1.1.特点3.1.2. 缺点3.2. 平衡二叉树(Balanced Binary Search Trees
2022-04-20 14:50:34 344
原创 MySQL系列---架构与SQL执行流程详解
文章目录1. 背景2. 架构体系2.1 架构图2.2 模块详解2.3 架构分层3. 查询SQL语句执行流程3.1 连接3.1.1 MySQL支持的通信协议3.1.2 通信方式3.2 缓存3.3 解析器3.4 查询优化器和查询执行计划3.4.1 优化器3.4.2 执行计划3.5 执行引擎3.6 存储引擎4. 更新SQL语句执行流程4.1 缓冲池 Buffer Pool4.2 InnoDB 内存结构和磁盘结构4.2.1 内存结构4.2.2 磁盘结构4.2.3 更新操作流程图4.2.4 后台线程4.3 Binlo
2022-04-17 12:39:05 400
原创 springboot---建一个web项目
搭建过程1. File->new->project2. 选择“Spring Initializr”,jdk选择8最好,或者默认3. 完善项目信息组名可不做修改,项目名可做修改;最终建的项目名为:test,src->main->java下包名会是:com->example->test;点击next;4. Web下勾选Spring Web Start网上创建springboot项目多是勾选Web选项,而较高版本的Springboot没有此选项,勾选Spring
2021-12-13 21:15:34 15956
原创 springboot---连接mysql数据库
1. 准备工作建一个简单的数据库,名为springboot_db,在其下建一个表,名为t_author,脚本如下:CREATE DATABASE /*!32312 IF NOT EXISTS*/`springboot_db` /*!40100 DEFAULT CHARACTER SET utf8 */; USE `springboot_db`; DROP TABLE IF EXISTS `t_author`; CREATE TABLE `t_author` ( `id` bigint
2021-12-12 19:26:59 1864
原创 复习专栏之---数据库(redis)
文章目录1. Redis数据类型2. String类型2.1 String基本信息2.2 常用命令2.3 业务场景2.3.1 String类型作为数值时的增减2.3.2 String 数据时效性设置2.3.3 String类型之高热度数据访问加速3. Hash类型3.1. Hash基本信息3.2. 常用命令3.3. 业务场景3.3.1. 电商网站购物车的设计与实现3.3.2. Hash实现抢购,限购发放优惠券,激活码等4. List类型4.1. List基本信息4.2. 常用命令4.3. 业务场景4.3.1
2021-07-08 13:25:21 174
原创 复习专栏之---设计模式(java)
设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。它不同于框架,只是一种书写代码的习惯,初期刻意使用,受益无穷。它是由很多程序员总结出来的最佳实
2021-04-30 19:39:25 511
原创 MyBatis系列---resultMap
mybatis就是ssm中的m,后端开发中持久层最重要的组件,在此只讲述面试及开发过程中的核心点:<resultMap>。resultMap 元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出来, 并在一些情形下允许你做一些 JDBC 不支持的事情。 实际上,在对复杂语句进行联合映射的时候,它很可能可以代替数千行的同等功能的代码。 ResultMap 的设计思想是,简单的语句不需要明确的结果映射,而复杂一点的语句只需要描
2021-03-17 15:30:33 5456
原创 MySQL系列---实践总结
基础术语数据库:DB(简称),database(全称)数据库管理系统:DBMS(简称),database management system(全称)DBMS大致分类:关系型:Oracle/Mysql/Sql server/Db2—服务按核收费/开源免费/微软产品/ibm产品非关型:redis/hbase/mongdb/neo4j—内存缓存/列存储/文档存储/图存储客户端软件:多用navicat命令分类初登登录:mysql -uname -p Enter password:xxx
2021-03-16 17:59:04 964
原创 linux系列---常见命令
目录结构/:根目录,其中有多个特定功能的目录,不要删除或添加目录(文件)/bin = Binaries (二进制文件) :存放可执行的二进制文件(ls,cat,mkdir等),常用命令一般都在这里/sbin = Superuser Binaries (超级用户的二进制文件):同 /bin/home:普通用户的家目录,每创建用户都会创建同名的文件夹在该目录下/root:管理员用户的家目录,存放管理员用户的数据/dev = Devices (设备) :设备文件目录,添加外部设备会以文件形式存储于此
2021-03-11 15:14:17 676 1
原创 springboot---接收前端请求
对于Url类请求(注意是纯url请求),客户端是不能通过body写出数据的,服务端拿到的body是空的。因此一般情况下,我们提供的HttpClient被Url类的请求getOutputStream()的时候会抛一个异常,而HttpServer接受到Url类的请求后getInputStream()的时候也会抛一个异常,这都是为了告诉调用者这是不合理的。因此综上所述,如果为get请求时,后台接收参数的注解应该为RequestParam,如果为post请求时,则后台接收参数的注解就是为RequestBody。
2021-03-10 13:50:42 7518 2
原创 springboot---配置文件
Springboot中配置文件配置大全转载于:https://blog.csdn.net/zhuzhezhuzhe1/article/details/80560306配置############################################################## mvc#############################################################spring.mvc.async.request-timeout=
2021-03-02 14:52:10 4630
原创 springcloud---学习
Spring Cloud 概述: 一文看懂 Spring Cloud 到底在干嘛Spring Cloud 实战: 手把手带你用 Netflix Eureka 实现微服务注册/发现(Service Discovery)Spring Cloud 实战: 使用 Netflix Ribbon 实现服务发现 & 负载均衡(Service Discovery & Load Balancing)Spring Cloud 实战: Open Feign 强化版的 Ribbon,实现更优雅的声明式服
2020-12-30 17:14:44 62
原创 微服务---起点(什么是微服务)
微服务对应的是单体服务微服务架构区别于传统的单体软件架构,是一种为了适应当前互联网后台服务的「三高需求:高并发、高性能、高可用」而产生的的软件架构。 由于工作需要,调研了一下微服务相关内容,其实微服务也没什么神秘的,今天就用图解的形式了来和大家唠唠什么是微服务?单体式应用程序与微服务相对的另一个概念是传统的单体式应用程序( Monolithic application ),单体式应用内部包含了所有需要的服务。而且各个服务功能模块有很强的耦合性,也就是相互依赖彼此,很难拆分和扩容。 说在做的各位都写
2020-12-30 17:07:26 601
原创 http系列---OpenSSL生成根证书CA及签发子证书
系统:CentOS7 32位目标:使用OpenSSL生成一个CA根证书,并用这个根证书颁发两个子证书server和client。先确保系统中安装了OpenSSL,若没安装,可以通过以下命令安装:sudo yum install openssl修改OpenSSL的配置安装好之后,定位一下OpenSSL的配置文件openssl.cnf:locate openssl.cnf如图,我这里的目录是/etc/pki/tls/openssl.cnf。修改配置文件,修改其中的dir变量,重新设置SSL
2020-11-02 20:18:49 10478 3
原创 Linux系列---软件安装
一、简介FTP(File Transfer Protocol),中文名文件传输协议,是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输
2020-05-28 12:00:47 3993
ftp_install_offline_Centos8.zip
2020-05-28
ftp_install_offline_Centos7.zip
2020-05-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人