自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计者模式

在实际开发过程中,并不是一定要求所有代码都遵循设计原则,而是要综合考虑人力、时间、成本、质量,不刻意追求完美,要在适当的场景遵循设计原则。开闭原则的意思是:对扩展开放,对修改关闭。行为型模式,共十一种: 策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。结构型模式,共七种: 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。创建型模式,共五种: 工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

2023-12-06 14:55:31 45

原创 Redis持久化方式两种方式:RDB(默认)和AOF

1 : RDB持久化原理:通过bgsave命令触发,然后父进程执行fork操作创建子进程,子进程创建RDB文件,根据父进程内存生成临时快照文件,完成后对原有文件进行原子替换(定时一次性将所有数据进行快照生成一份副本存储在硬盘中)1,缓存穿透: 缓存中没有对应数据,且数据库也没有对应数据,并用户频繁访问如(id=-1)导致数据库压力过大(考虑攻击者)2, 缓存击穿:缓存中对应得数据过期,数据库有对应数据,又有大批用户访问该数据导致数据库压力过大。原因2 :是内存中的,使用内存的,可以减少磁盘的io。

2023-08-14 15:39:16 256

原创 JAVA-JMM特性

线程的工作内存中保 存了被该线程使用的变量的主内存副本,线程对变量的所有操作(读取、赋值等)都必须在工作内。指一个操作是不可中断的,即多线程环境下,操作不能被其他线程干扰。存中进行,而不能直接读写主内存中的数据。2.工作内存与主内存的交互。1.工作内存与主内存。

2023-04-19 16:30:48 97

原创 MYSQL 存储过程

mysql 存储过程

2022-11-21 16:27:26 264

原创 JAVA逃逸分析

java逃逸分析

2022-08-15 17:32:09 141

原创 springboot集成kakfa

spingboot集成kafka

2022-07-13 17:14:33 388

原创 mysql三范式

1 数据库表中字段都是单一属性,不可再分2 在第一范式基础上 非主键完全依赖主键,并不是依赖主键的一部分3 在第二范式基础上 非主键列只依赖主键,不依赖其他非主键

2022-05-23 10:19:34 130

原创 volatile关键字及对象生成过程

作用:1:线程可见性2:防止指令重排序对象生成得过程 :A : new 对象(申请一块内存) 比如T对象里面有个m int值的成员变量等于8 当new对象的时候 m是给与默认值0 最后形成 T对象和m成员变量B : dup (验证是否符合class文件规范)C : invokespecial <T.init> (执行该类的构造方法 并赋值m=8)D : astore_1 (把T类和m成员变量关联)F : return 返回...

2022-05-23 10:17:25 155

原创 Mysql创建定时任务

#1查看权限 event_scheduler 是否为ON show variables like '%sche%';#如果不是NO设置为1set global event_scheduler=1;#2创建存储过程CREATE PROCEDURE insert_monitor()#(过程名称) #以下可以写任何sql语句 (以insert为案例)INSERT INTO `表明` (表字段)VALUES('值')#过程语句;#3创建定时任务create event if not exist

2021-12-17 10:02:07 799

原创 mysql函数示例

CREATE FUNCTION `test`(total INT(11),up INT(11),low INT(11)) RETURNS varchar(2) CHARSET utf8BEGINDECLARE V_RETURN TINYINT(2);IF up >= stock and stock >= low then set V_RETURN = 0; elseif low > stock then set V_RETURN = 1; elseif stock

2021-11-25 13:33:20 797

原创 SpringBoot 集成 ActiveMQ及Linux搭建ActiveMQ

1,首先搭建linux上的activeMqhttps://activemq.apache.org/ 去官网下载包下载后上传服务器我自己喜欢放root目录下让后解压到 /usr/local/目录下解压命令tar -zxvf apache-activemq-5.15.15-bin.tar.gz -C /usr/local/conf 目录配置一 Web 控制台安全/conf/jetty-realm.properties 设置用户名和密码,格式为–> 用户名:密码,

2021-05-09 17:47:20 204

原创 LINUX安装postgreSQL数据库(一次搞定)

1,(下载最新版本,当前为13)yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpmyum search postgresql2,安装postgresqlyum install postgresql13yum install postgresql13-server3、查看版本psql --version4、初始

2021-02-01 19:16:08 982 4

原创 LINUX搭建gitlab(一次搞定)

1,安装gitlab(一)安装环境:(1)CentOS 6或者7 (此处使用7)(2)2G内存(实验)生产(至少4G),不然会很卡(3)安装包:gitlab-ce-10.2.2-ce(4)禁用防火墙,关闭selinux (后期开启自己调防火墙权限)(二)安装软件:(1)安装依赖 [root@根目录~]# yum install -y curl policycoreutils-python openssh-server (2) 下载软件包 [root@根目录~]# w

2021-01-26 11:17:34 797

转载 mysql内置函数

MySQL内置函数链接(本人感觉很实用)要是有其他函数或方法,欢迎留言!

2021-01-22 09:30:22 135

原创 缓存(穿透,击穿,雪崩)说明及解决方案

1,缓存穿透: 缓存中没有对应数据,且数据库也没有对应数据,并用户频繁访问如(id=-1)导致数据库压力过大(考虑攻击者)解决方案:加以(接口层,用户,id)等校验方式2, 缓存击穿:缓存中对应得数据过期,数据库有对应数据,又有大批用户访问该数据导致数据库压力过大解决方案:(1)可设置热点数据长期有效 (2)加互斥锁3,缓存雪崩:缓存中大量得数据过期(而不是某一条)导致数据库压力过大甚至宕机解决方案:(1)控制数据过期时间段不一致 (2)缓存数据分部署对应数据存不同数据库 (3)可设置热点数据长

2021-01-14 11:34:42 138

原创 浅谈Tomcat服务器优化方法

对于JavaWeb开发人员而言,Tomcat已成为默认的web服务器,但是在生产环境下使用Tomcat部署应用,我们如果采用Tomcat默认的配置,尤其是内存和线程的配置,其配置都很低,容易成为性能瓶颈,所以我们需要对Tomcat服务器进行优化,提升其运行性能,下面我们一起来看看Tomcat如何优化?一、Tomcat内存优化,启动时告诉JVM需要多大内存(调优内存是最直接的方式)Windows 下的 catalina.batLinux 下的 catalina.sh在该文件中配置jvm的内存空间,如:

2020-12-09 17:35:44 137

原创 Java单例设计模式的理解与常规实现方式

1:Java中单例模式是一种常见的设计模式,单例模式有以下特点: 单例类只能有一个实例。 单例类必须自己创建自己的唯一实例。 单例类必须给所有其他对象提供这一实例。单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。2:java中单例模式的写法也有很多种,我在这里列举几张常用的方式: 1、饿汉式,线程安全 但效率比较低:/**单例模式的实现:饿汉式,线程安全 但效率比较低*/public class SingletonTest {// 定义一个私有的构造

2020-10-16 13:31:54 99

原创 java 双亲委派机制

JDK默认ClassLoaderJDK 默认提供了如下几种ClassLoaderBootstrp loader(启动类加载器)Bootstrp加载器是用C++语言写的,它是在Java虚拟机启动后初始化的,它主要负责加载%JAVA_HOME%/jre/lib,-Xbootclasspath参数指定的路径以及%JAVA_HOME%/jre/classes中的类。ExtClassLoader (标准扩展类加载器)Bootstrp loader加载ExtClassLoader,并且将ExtCla

2020-09-01 15:29:07 113

原创 java二分算法示例

public static void main(String[] args) { // TODO Auto-generated method stub //1 2 3 4 5 6 7 8 9 int [] a = {1,2,3,4,5,6,7,8,9}; System.out.println(bsearch(a,6));}public static int bsearch (int [] a,int key){ int low = 0; int high = a.length

2020-08-28 02:00:57 174

原创 Java基础面试题i = i++ 执行原理

直接来代码吧:public static void main(String[] args) {int i = 10;i = i++;// 输出结果为: i = 10System.out.println("i = " + i);/*i = i++;这条语句相当于以下三条语句:1) int temp = i; 先把i变量的值10保存到临时变量中2) i = i+1; i变量的值加1操作3) i = temp; 再把临时变

2020-07-28 18:34:20 711

原创 一篇文章掌握Java注解

什么是注解?用一个词就可以描述注解,那就是元数据,即一种描述数据的数据。所以,可以说注解就是源代码的元数据。比如,下面这段代码:@Overridepublic String toString() {return “This is String Representation of current object.”;}上面的代码中,我重写了toString()方法并使用了@Override注解。但是,即使我不使用@Override注解标记代码,程序也能够正常执行。那么,该注解表示什么?这么写有什么好

2020-07-20 13:55:29 123

原创 一文梳理REST API的设计原则

什么是 REST ?REST架构风格描述了六个约束。应用于体系结构的这些约束最初由Roy Fielding在他的博士论文中提出(参见 https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm)该文是RESTful-style的基础 。这六个约束是:Uniform Interface (统一接口)统一接口约束定义了客户端和服务器之间的接口。它简化并解耦了架构,使每个部件都能独立演变。 统一接口的四个指导原则是:Re

2020-07-01 16:37:55 486

原创 探讨Web开发中的Session存储与管理

我们都知道,由于HTTP协议是无状态的协议,一次浏览器和服务器的交互过程就是:浏览器:你好吗?服务器:很好!这就是一次会话,对话完成后,这次会话就结束了,服务器端并不能记住这个人,下次再对话时,服务器端并不知道是上一次的这个人,所以服务端需要记录用户的状态时,就需要用某种机制来识别具体的用户,这个机制就是Session;服务端如何识别特定的客户?这个时候需要使用Cookie;每次HTTP...

2020-03-26 09:29:03 129

原创 高性能HTTP及反向代理服务器Nginx

Nginx (engine x) 是一个高性能的Web服务器和反向代理服务器,也可以作为邮件代理服务器。Nginx 是由俄罗斯人 Igor Sysoev 采用C语言开发编写的,第一个公开版本0.1.0发布于2004年10月4日;Nginx的作者Igor SysoevIgor Sysoev出生于1970年的阿拉木图(哈萨克斯坦共和国城市),也就是前苏联,1991年苏联解体,哈萨克斯坦宣布独立,...

2020-01-14 16:52:23 235

原创 为互联网应用文件存储而生之FastDFS

分布式文件系统 (Distributed File System) 是一个用来管理文件的软件或软件服务器,但这个软件所管理的文件通常不是在一个服务器节点上,而是在多个服务器节点上,这些服务器节点通过网络相连构成一个庞大的文件存储服务器集群,这些服务器都用于存储文件资源,通过分布式文件系统来管理这些服务器上的文件;常见的分布式文件系统有:FastDFS、GFS、HDFS、Lustre 、Ceph ...

2020-01-02 11:45:02 178

原创 讨论JMS与ActiveMQ的内部逻辑

两个系统之间或者分布式系统之间的信息通信,是我们开发中比较常见的场景,比如系统A要把信息发送给系统B,这个问题我们应该如何去处理?1999年,原来的SUN公司领衔提出了一种面向消息的中间件服务–JMS规范(标准);JMS即Java消息服务(Java Message Service的简称),是Java EE 的标准/规范之一。这种规范(标准)指出:消息的发送应该是异步的、非阻塞的。也就是说消...

2019-12-27 18:18:32 163 2

原创 静态方法需要调用spring注入的非静态变量的解决方案

当你编写一个需要调用mybatis的dao层的类时,会先通过spring依赖注入该变量,但是由于你需要用到该变量在静态方法中,所以无法使用,此时你将该变量改为静态变量,发现无法注入了解决方案:需要一个私有静态类变量 DateUtils@PostConstruct 会在spring依赖注入后,自动执行,并且只执行一次,将当前类对象的地址付给了我们自己定义的静态变量此时我们才可以获取到...

2019-12-13 18:22:22 767 6

原创 Spring Boot 应用程序启动流程分析

SpringBoot 有两个关键元素:@SpringBootApplicationSpringApplication 以及 run() 方法SpringApplication 这个类应该算是 Spring Boot 框架的“创新”产物了,原始的 Spring 中并没有这个类,SpringApplication 中封装了一套 Spring 应用的启动流程,然而这对用户完全透明,因此我们上手 S...

2019-12-05 18:24:56 114

原创 一次搞定continue,break和return

continuecontinue,结束当前当次循环,进行下一次内循环for (int i = 0; i < 4; i++ ){System.out.println(“i==>”+i);for (int j = 0; j < 3; j++ ){if( j==1){continue;}System.out.println(j);}}输出如下:i==>...

2019-11-18 18:33:59 141

原创 事务的隔离级别

事务隔离级别:@Transactional(isolation = Isolation.READ_UNCOMMITTED):读取未提交数据(会出现脏读, 不可重复读) 基本不使用@Transactional(isolation = Isolation.READ_COMMITTED):读取已提交数据(会出现不可重复读和幻读)@Transactional(isolation = Isolatio...

2019-10-25 15:42:39 135

原创 MySQL开发规范

一、基础规范1) 使用InnoDB存储引擎2) 数据库字符集使用UTF8,校对字符集使用utf8_general_ci3) 所有表、字段都尽量添加注释4) 库名、表名、字段名使用小写字母,禁止超过32个字符,须见名知意5) 非唯一索引以 “idx_字段1_字段2” 命名,唯一索引必须以 “uniq_字段1_字段2” 命名二、查询规范SQL语句尽可能简单...

2019-10-17 15:42:15 113

原创 java虚拟机内存结构

1,画的比较low,但是能够初步的了解java的内存结构,关于一些底层的原理,我再继续学习,然后拿出来希望大家多提意见。

2019-10-08 15:15:44 91

原创 Java数据结构

Java数据结构中常用的数据结构包含如下8种:1:数组(Array)2:栈(Stack)3:队列(Queue)4:链表(LinkedList)5:树(Tree)6:哈希表(Hash)7:堆(Heap)8:图(Graph)这几个搞定对后期的发展非常有帮助,在此我用图给大家展示一下:希望对大家有所帮助,为了在以后的工作中写出大神之作,我工作之余经常研究数据结构和常用算法,希望...

2019-09-24 15:19:47 114

原创 java集合类部分介绍

ArrayList、LinkedList:实现分别是数组和链表,所以区别就是数组和链表的区别。多搜索用ArrayList,多增删用LinkedListVector: 底层也是采用 数组 来存储数据,和 ArrayList 一样(准确说是 ArrayList 与 Vector 一样,毕竟是先有 Vector 后有 ArrayList)。区别是:Vector 是线程安全的,对外提供的读写方法,都是 ...

2019-09-10 14:32:05 121

原创 如何处理高并发思路

可以分为以下 6 点:系统拆分缓存MQ分库分表读写分离ElasticSearch系统拆分将一个系统拆分为多个子系统,用 dubbo 来搞。然后每个系统连一个数据库,这样本来就一个库,现在多个数据库,不也可以扛高并发么。缓存缓存,必须得用缓存。大部分的高并发场景,都是读多写少,那你完全可以在数据库和缓存里都写一份,然后读的时候大量走缓存不就得了。毕竟人家 redis 轻轻松松单...

2019-09-06 16:59:28 571

原创 MySQL主从复制原理简单了解

MySQL 主从复制原理的是啥?主库将变更写入 binlog 日志,然后从库连接到主库之后,从库有一个 IO 线程,将主库的 binlog 日志拷贝到自己本地,写入一个 relay 中继日志中。接着从库中有一个 SQL 线程会从中继日志读取 binlog,然后执行 binlog 日志中的内容,也就是在自己本地再次执行一遍 SQL,这样就可以保证自己跟主库的数据是一样的。这里有一个非常重要的一...

2019-09-06 16:52:59 227

原创 项目中自己搭建框架集成的思路

从零搭建 >刚开始的时候,也就是创业初期或网站/产品初期,业务功能比较少,访问量也不大,通过就是采用经典的MVC架构,采用单体应用的模式进行开发,然后发布到Tomcat容器中运行,这时候我们的文件,数据库,应用都在一个服务器上,没有缓存,不追求性能优化与网站架构。服务分离 >随着业务的发展,系统功能的增多,访问用户量的增加,显然采用单台服务器已无法满足系统的负载,这时候,我们就...

2019-09-05 17:19:55 887

原创 谈谈接口中的几种限流实现

为什么需要限流按照服务的调用方,可以分为以下几种类型服务1、与用户打交道的服务比如web服务、对外API,这种类型的服务有以下几种可能导致机器被拖垮:用户增长过快(这是好事)因为某个热点事件(微博热搜)竞争对象爬虫恶意的刷单这些情况都是无法预知的,不知道什么时候会有10倍甚至20倍的流量进来,如果遇到此类情况,扩容是根本来不及的,弹性扩容也是来不及的;2、对内的RPC服务一个服...

2019-09-05 17:13:52 235

原创 浅谈MySQL中SQL优化的常用方法

1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。3、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is nul...

2019-07-19 15:13:54 114

原创 java Date时间出入数据库值不对问题

spring.datasource.url=jdbc:mysql://xxxxxxxx.xxxx:xxxx/xxxxxxx?useSSL=false&useUnicode=true&characterEncoding=utf-8&rewriteBatchedStatements=true&autoReconnect=true&serverTimezone=G...

2019-07-18 11:45:18 552

空空如也

空空如也

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

TA关注的人

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