自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Excel导入优化

导入优化过程

2022-10-11 14:51:18 126 1

原创 Spring中涉及的设计模式

1.简单工厂(非23种设计模式中的一种) 实现方式:BeanFactory。Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。 实质:由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。 实现原理: bean容器的启动阶段: 读取bean的xml配置文件,将bean元素分别转换成一个BeanDefinition对象。 然后通过BeanDefinitionReg

2021-10-02 17:10:17 88

原创 线上排查问题大全

CPU 一般来讲我们首先会排查cpu方面的问题。cpu异常往往还是比较好定位的。原因包括业务逻辑问题(死循环)、频繁gc以及上下文切换过多。而最常见的往往是业务逻辑(或者框架逻辑)导致的,可以使用jstack来分析对应的堆栈情况。 使用jstack分析cpu问题 我们先用ps命令找到对应进程的pid(如果你有好几个目标进程,可以先用top看一下哪个占用比较高)。 接着用top -H -p pid来找到cpu使用率比较高的一些线程 然后将占用最高的pid转换为16进制printf '%x\n' pid得到n

2021-10-02 16:30:40 178

原创 日志性能之王Log4j2

Log4j2简介 Apache Log4j 2是 Log4j(1) 的升级版,比它的祖先 Log4j 1. x 有了很大的改进,和logback对比有很大的改进。除了内部设计的调整外,主要有以下几点的大升级: 更简化的配置 更强大的参数格式化 最夸张的异步性能 Log4j 2中,分为API(log4j-api) 和 实现**(log4j-core)** 两个模块。API 和slf4j 是一个类型,属于日志抽象/门面,而实现部分,才是Log4j 2的核心。 org.apache.logging.log4

2021-10-01 17:22:47 291

原创 分库分表。

1 库表会在哪天到达瓶颈? 1.1 苏宁拼购百万级库表拆分之前 苏宁拼购,苏宁易购旗下的电商App,18年7月累计用户突破3000万。 面对千万级日活 + 千万级日新增SKU + 千万级日均订单,拼购的单库每天增长数据超1亿,峰值10万QPS并发,每个月要搞一次数据迁移。 庞大的数据量,对数据库压力和数据运维成本造成了很大的困扰,并且,一旦有一条未命中缓存的SQL,对于整个应用都是灾难级的。 所以,不得不考虑系统的稳定性和长远的业务支撑。 **1.2 京东配运平台库表拆分之前 ** 起初,用SQL Se

2021-09-30 15:02:05 148

原创 MySQL 定时备份数据库

在操作数据过程中,可能会导致数据错误,甚至数据库奔溃,而有效的定时备份能很好地保护数据库。本篇文章主要讲述了几种方法进行 MySQL 定时备份数据库。 一. mysqldump命令备份数据 在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump,首先我们简单了解一下mysqldump命令用法: #MySQLdump常用 mysqldump -u root -p --databases 数据库1 数据库2 > xxx.sql

2021-09-28 17:13:54 78

原创 Cookie Session Token JWT jwt的框架:JJWT

一切的根源就是因为 HTTP 是一个无状态的协议。 HTTP 是一个无状态的协议 什么是无状态呢?就是说这一次请求和上一次请求是没有任何关系的,互不认识的,没有关联的。 看过电影《夏洛特烦恼》的小伙伴肯定记得夏洛和大爷的一段对话: 夏洛:大爷,楼上322住的是马冬梅家吗? 大爷:马冬什么? 夏洛:马冬梅。 大爷:什么冬梅啊? 夏洛:马冬梅啊。 大爷:马什么梅啊? 夏洛:……行,大爷,您先凉快吧。 「打岔」大爷记不住马冬梅,就如同 HTTP 协议记不住上一次请求。说得通俗一点:HTTP 的记忆力不太好,需

2021-09-28 16:52:42 162

原创 jvm摘录

jvm模型 JVM包含两个子系统和两个组件,两个子系统为Class loader(类装载)、 Execution engine(执行引擎);两个组件为Runtime data area(运行时数据区)、Native Interface(本地接口)。 Class loader(类装载):根据给定的全限定名类名(如:java.lang.Object)来装载class文件到Runtime data area中的method area。 Execution engine(执行引擎):执行classes中的指令。

2021-07-19 20:39:52 110

转载 JAVA定时任务的创建方式

Quartz表达式生成地址:http://cron.qqe2.com/ 支持生成定时任务表达式和反解析,使用Quartz表达式的定时任务如下 xxl-job springboot 的 @Scheduled Quartz 框架 一、job 定时任务的五种创建方式 1、使用线程创建 job 定时任务 /** * TODO 使用线程创建 job 定时任务 * @author 曹德顺 */ public class JobThread { public static class Demo01

2021-07-11 17:19:42 328

原创 Spring容器中的Bean是否线程安全

Spring容器中的Bean是否线程安全,容器本身并没有提供Bean的线程安全策略,因此可以说Spring容器中的Bean本身不具备线程安全的特性,但是具体还是要结合具体scope的Bean去研究。 Spring 的 bean 作用域(scope)类型 singleton:单例,默认作用域。 prototype:原型,每次创建一个新对象。 request:请求,每次Http请求创建一个新对象,适用于WebApplicationContext环境下。 session:会话,同一个会话共享一个实例,不同会话使

2021-07-01 11:31:04 127

原创 nginx2.0

1、什么是Nginx,谈谈个人都理解,项目中是否用到,为什么要用,有什么优点? Nginx ,是一个 Web 服务器和反向代理服务器用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。 主要功能如下: 1、正向、反向代理 2、负载均衡、分流 3、虚拟主机(绑定host) 优点: 跨平台、配置简单,非阻塞、高并发连接、内存消耗小、成本低廉。 2、正向代理和反向代理的区别是什么? 正向代理是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定原始服务

2021-06-30 17:19:33 187

原创 并发问题ConcurrentHashMap、CopyOnWriteArrayList

线程重用导致用户信息错乱 生产环境中,有时获取到的用户信息是别人的。查看代码后,发现是使用了ThreadLocal缓存获取到的用户信息。 ThreadLocal适用于变量在线程间隔离,而在方法或类间共享的场景。若用户信息的获取比较昂贵(比如从DB查询),则在ThreadLocal中缓存比较合适。问题来了,为什么有时会出现用户信息错乱? 案例 使用ThreadLocal存放一个Integer值,代表需要在线程中保存的用户信息,初始null。先从ThreadLocal获取一次值,然后把外部传入的参数设置到Th

2021-06-30 17:06:21 435

转载 nginx入门

Nginx 概述 Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7*24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新。 性能是 Nginx 最重要的考量,其占用内存少、并发能力强、能支持高达 5w 个并发连接数,最重要的是, Nginx 是免费的并可以商业化,配置使用也比较简单。 Nginx 特点 特点如下: 高并发、高性能。 模块化架构使得它的扩展性非常好。 异步非阻塞的事件驱动模型这点和 Node.js 相

2021-06-06 13:26:58 331

原创 反射机制的理解

一.概念 反射就是把Java的各种成分映射成相应的Java类。 Class类的构造方法是private,由JVM创建。 反射是java语言的一个特性,它允程序在运行时(注意不是编译的时候)来进行自我检查并且对内部的成员进行操作。例如它允许一个java的类获取他所有的成员变量和方法并且显示出来。Java 的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如,Pascal、C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息。(来自Sun) JavaBean 是

2021-05-31 16:59:47 128

原创 java技术点汇总介绍

站在运筹帷幄的角度来看,一名厉害的 Java 后端程序员都需要懂得哪些知识呢?我想,这也是很多读者迫切想知道的一个问题,因为如果不站在一个宏观的角度的话,所有学过的知识点都是零散的,就感觉像一只迷路的小鹿,跌跌撞撞的,总感觉欠点火候,对吧? 怎么把知识点串联起来,形成知识图谱或者知识体系,就显得非常重要了。接下来,我根据这些年磨破滚打的一些经验,给大家简单科普一下,如果有漏掉的内容,希望读者朋友们在留言区指出来。 1)MVC 框架:MVC 模式是软件工程中的一种软件架构模式,可以把软件系统分为三个基本部分:

2021-05-31 16:49:11 475

原创 消息队列技术

消息队列连环炮 项目里怎么样使用 MQ 的? 为什么要使用消息队列? 消息队列有什么优点和缺点? kafka,activemq,rabbitmq,rocketmq 都有什么去呗? 如何保证消息队列高可用? 如何保证消息不被重复消费? 如何保证消息的可靠性传输? 如何保证消息的顺序性? 写一个消息队列架构设计? 消息队列技术选型 解决的问题: 解耦 异步 削峰 不用 MQ 系统耦合场景 A 系统产生了一个比较关键的数据,很多系统需要 A 系统将数据发过来,强耦合(B,C,D,E 系统可能参数不一样、一会需

2021-05-31 16:43:25 485

原创 SpringBoot 并发登录人数控制

通常系统都会限制同一个账号的登录人数,多人登录要么限制后者登录,要么踢出前者,Spring Security 提供了这样的功能,本文讲解一下在没有使用Security的时候如何手动实现这个功能 demo 技术选型 SpringBoot JWT Filter Redis + Redisson JWT(token)存储在Redis中,类似 JSessionId-Session的关系,用户登录后每次请求在Header中携带jwt 如果你是使用session的话,也完全可以借鉴本文的思路,只是代码上需要加些改动 两

2021-05-27 14:56:02 134

原创 dockerfiels实战

Docker通过读取Dockerfile中的指令自动构建镜像,一个文本文件包含构建镜像的所有指令。Dockerfile遵循特定的格式和指令集,您可以在Dockerfile中引用它们。 Docker镜像由只读层组成,每一层代表一个Dockerfile指令集。每一层都是前一层变化的增量。考虑这个Dockerfile: FROMubuntu:18.04 COPY . /app RUN make /app CMD python/app/app.py 每条指令创建一个层: FROM 从ubuntu:18.04基础镜像

2021-05-27 11:16:22 172

原创 分布式系统理论

说到分布式系统,不得不说集中式系统。传统集中式系统中整个项目所有的东西都在一个应用里面。 一个网站就是一个应用,当系统压力较大时,只能横向扩展,增加多个服务器或者多个容器去做负载均衡,避免单点故障而影响到整个系统。 集中式最明显的优点就是开发,测试,运维会比较方便,不用考虑复杂的分布式环境。 弊端也很明显,系统大而复杂、不易扩展、难于维护,每次更新都必须更新所有的应用。 集中式系统拓扑图 鉴于集中式系统的种种弊端,促成了分布式系统的形成,分布式系统背后是由一系

2021-05-27 11:03:28 319 1

原创 JAVA性能优化分析

1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 第一,控制资源的使用,通过线程同步来控制资源的并发访问; 第二,控制实例的产生,以达到节约资源的目的; 第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。 2. 尽量避免随意使用静态变量 当某个对象被定义为static变量所引用,那么GC通常是不会回收这个对象所占有的内存,如 public class A{ pri

2021-05-27 10:43:56 147

原创 java工程师入门以及学习路线

学习基础教程,了解 Java基础首先去找一个Java的基础教程学一下,网上有很多,这里不赘述。 学习Java基础的时候,应该尽量多动手,很多时候,你想当然的事情,等你写出来运行一下,你就会发现不是这么回事儿,不信你就试试。 学完以上内容以后,你应该对Java有一个基本的了解了,你可以用Java语言写出一些简单的程序,并且你用的是最简单的编辑器,比如记事本。这个时候,不要急于进入下一部分,留下几天好好写一些程序,尽可能熟悉这些基础内容。 02 尝试写页面 Web开发等你写上几天程序以后,你往往会比较迷茫,因为

2021-05-25 14:57:47 193

原创 spring 69问

什么是spring? Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。 使用Spring框架的好处是什么? 轻量:Spring 是轻量的,基本的版本大约2MB。 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。 面向切面的编程(AOP):Spring支持面向..

2021-05-25 14:51:19 27

原创 my first Blog

学习目标: 如何消除if else 学习内容: 策略模式+ 工厂+单例 学习时间: 学习产出:

2021-03-31 14:40:12 65

空空如也

空空如也

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

TA关注的人

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