自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

邱鑫不甜的博客

你若盛开清风自来!

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

原创 Redis主从复制

CAP的A AP模型单机Redis是无法保证高可用性的,当Redis服务器宕机后,即使在有持久化的机制下也无法保证不丢失数据。当客户端向从服务器发送slaveof(replicaof) 主机地址(127.0.0.1)端口(6379)时:从服务器将主机ip(127.0.0.1)和端口(6379)保存到redisServer的masterhost和masterport中。=“”),从需要设置密码(masterauth=主的requirepass的值)或者从通过auth命令向主发送密码。

2024-03-31 15:52:01 847

原创 windows上配置Redis主从加哨兵模式实现缓存高可用

哨兵(sentinel)是Redis的高可用性(High Availability)的解决方案:由一个或多个sentinel实例组成sentinel集群可以监视一个或多个主服务器和多个从服务器。1、下载windos版本redis安装包: https://github.com/redis-windows/redis-windows/ (我下载的版本是7.2.2)1、修改sentinel.conf :sentinel节点数最好为奇数(这个关系到主节点挂了后,投票选取从节点为主节点的策略)

2024-03-31 15:30:34 746

原创 数据库设计之三范式

1.尽量根据三范式规则去设计数据库2.可以合理的加入冗余字段减少join操作让数据库执行的更快。

2023-12-03 20:39:14 361

原创 Java内存溢出问题

新产生的对象最初分配在新生代,新生代满后会进行一次 Minor GC ,如果 Minor GC 后空间不足会把该对象和新生代满足条件的对象放入老年代,老年代空间不足时会进行 Full GC ,之后如果空间还不足以存放新对象则抛出 OutOfMemoryError 异常。栈容量只能由-Xss参数来设定。

2022-11-08 22:54:57 370 1

原创 数据库客户端连不上Oracel数据库

修改协议版本号:SQLNET.ALLOWED_LOGON_VERSION=8

2022-10-30 18:09:31 175

原创 JVM优化

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。主流虚拟机虚拟机名称介绍HotSpotOracle/Sun JDK和OpenJDK都使用HotSPot VM的相同核心J9J9是IBM开发的高度模块化的JVMJRockit。

2022-10-30 18:08:16 397

原创 用命令导出导入数据库常见操作

一、Oracle导出数据库1.创建逻辑目录,别名data_dirSQL> create directory data_dir as 'D:\tableStruct';Directory created.2.用sys管理员给你的指定用户赋予在该目录的操作权限(如果非管理员创建则不需要这一步)SQL> grant read,write on directory data_dir to user;Grant succeeded.3.退出sqlplus然后执行以下命令expdp cd

2022-05-01 01:31:09 2687

原创 could not open error log file: CreateFile() “logs/error.log“ fail

window上使用以下命令启动nginx报错nginx: [alert] could not open error log file: CreateFile() "logs/error.log" failed (3: The system cannot find the path specified)2022/04/24 20:57:16 [warn] 2880#1980: the "ssl" directive is deprecated, use the "listen ... ssl" dir

2022-04-24 21:53:10 6556

原创 线程模型介绍

一. 线程模型基本介绍1.传统阻塞 I/O 服务模型2.Reactor 模型根据 Reactor 的数量和处理资源池线程的数量不同,有 3 种典型的实现单 Reactor 单线程单 Reactor 多线程主从 Reactor 多线程二.传统阻塞 I/O 服务模型采用阻塞 IO 模式获取输入的数据, 每个连接都需要独立的线程完成数据的输入 , 业务处理和数据返回工作存在问题:当并发数很大,就会创建大量的线程,占用很大系统资源连接创建后,如果当前线程暂时没有数据可读,该线程会阻塞在

2022-03-31 22:35:56 2319

原创 JAVA中I/O模型详解

一.说明I/O 模型简单的理解:就是用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能Java 共支持 3 种网络编程模型/IO 模式:BIO(同步并阻塞)、NIO(同步非阻塞)、AIO(异步非阻塞)阻塞与非阻塞主要指的是访问IO的线程是否会阻塞(或处于等待)线程访问资源,该资源是否准备就绪的一种处理方式同步和异步主要是指的数据的请求方式同步和异步是指访问数据的一种机制二.BIO(同步并阻塞)Java BIO就是传统的 socket编程.BIO(blockin

2022-03-31 21:54:16 385

原创 如何理解Redis中的事务

1.Redis事务Redis的事务是通过multi、exec、discard和watch这四个命令来完成的。Redis的单个命令都是原子性的,所以这里需要确保事务性的对象是命令集合。Redis将命令集合序列化并确保处于同一事务的命令集合连续且不被打断的执行 Redis不支持回滚操作注意:1.Redis: 命令是顺序执行的,在一个事务中,有可能被执行其他客户端的命令的2.Redis有持久化但不保证 数据的完整性2.事务命令multi:用于标记事务块的开始,Redis会将后续的命令逐个放入

2021-11-20 22:29:38 1846

原创 删除排序数组中重复元素之双指针解法

题目给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:输入: nums = [1,1,2]输出:2, nums = [1,2]解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。示例 2:输入:nums = [0,0,1,1,1,2,2,3,3,4]

2021-11-11 22:35:39 436

原创 使用netty-socketIO实现服务端向客户端推送消息

1.功能概述​ Netty-SocketIO是一个开源的、基于Netty的、Java版的即时消息推送项目。通过Netty-SocketIO,我们可以轻松的实现服务端主动向客户端推送消息的场景。它和websocket有相同的作用,只不过Netty-SocketIO可支持所有的浏览器。​ Socket.IO除了支持WebSocket通讯协议外,还支持许多种轮询(Polling)机制以及其它实时通信方式,并封装成了通用的接口,并且在服务端实现了这些实时机制的相应代码。Socket.IO能够根据浏览器对通讯

2021-10-26 22:25:35 2132

原创 跨域问题中常见2种解决方法

1.使用JSONP解决跨域问题缺点:只支持get请求2. 使用CORS解决跨域问题

2021-10-25 22:30:45 212

原创 链表+快慢指针判断链表中是否有环

题目给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。来源:力扣(LeetCode)示例 1:输入:head = [3,2,0,-4], pos = 1输出

2021-10-23 21:20:21 207

原创 Java队列实现最近的请求次数

1.题目写一个 RecentCounter 类来计算特定时间范围内最近的请求。请你实现 RecentCounter 类:RecentCounter() 初始化计数器,请求数为 0 。int ping(int t) 在时间 t 添加一个新请求,其中 t 表示以毫秒为单位的某个时间,并返回过去 3000 毫秒内发生的所有请求数(包括新请求)。确切地说,返回在 [t-3000, t] 内发生的请求数。保证 每次对 ping 的调用都使用比之前更大的 t 值。来源:力扣(LeetCode)示例:输

2021-10-21 22:27:17 212

原创 JVM中jps与jstat等指令用法

1.jps命令(java process Status Tool), Java版的ps命令,查看java进程及其相关的信息,如果你想找到一个java进程的pid,那可以用jps命令替代linux中的ps命令了,简单而方便。jps [options] [hostid]options参数解释:-l : 显示进程id,显示主类全名或jar路径-q : 显示进程id-m : 显示进程id, 显示JVM启动时传递给main()的参数-v : 显示进程id,显示JVM启动时显示指定的JVM参数host

2021-10-17 22:50:08 508

原创 两数相加更优解法

题目:给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.分析:实现:/** * 最优解:数学思维解法 * 1.遍历两个链表 * 2.对应位置的节点数值相加 * 3.将计算结果插⼊新链表

2021-10-10 21:50:51 294

原创 整数反转更优解法

题目:给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-integer著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。分析:实现/*** 解法一,暴力解法 思路:* 1.整数转

2021-10-10 17:02:17 189

原创 Oracle给锁定用户解锁

1.查询数据库所有用户的状态select username,account_status from dba_users;2.给锁定的用户解锁alter user 用户名 account unlock;3.查询密码有效期SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';4.修改密码有效期为无限期ALTER PROFILE DEFAULT LIMIT PASSWO

2021-10-09 22:47:22 4990

原创 kafka服务端参数配置

1.server.properties中连接zookeeper配置如下单个节点#/myKafka 目的是用来在zookeeper指定一个节点存放kafka的元数据信息zookeeper.connect=localhost:2181/myKafka多个节点(只需用逗号分隔多个地址)#/myKafka 目的是用来在zookeeper指定一个节点存放kafka的元数据信息zookeeper.connect=localhost:2181,localhost1:2181/myKafka2.liste

2021-09-20 20:43:04 489

原创 MySQL运行机制

2021-08-25 22:49:09 159

原创 微服务中遇到雪崩一般怎么处理

前提:从可⽤性可靠性着想,为防⽌系统的整体缓慢甚⾄崩溃,采⽤的技术⼿段;下⾯,我们介绍三种技术⼿段应对微服务中的雪崩效应,这三种⼿段都是从系统可⽤性、可靠性⻆度出发,尽量防⽌系统整体缓慢甚⾄瘫痪。服务熔断熔断机制是应对雪崩效应的⼀种微服务链路保护机制。我们在各种场景下都会接触到熔断这两个字。⾼压电路中,如果某个地⽅的电压过⾼,熔断器就会熔断,对电路进⾏保护。股票交易中,如果股票指数过⾼,也会采⽤熔断机制,暂停股票的交易。同样,在微服务架构中,熔断机制也是起着类似的作⽤。当扇出链路的某个微服务

2021-05-23 22:21:43 397 1

原创 Optional之应用场景

场景:NullPointerException 问题在实际开发中经常会做如下一些判空操作: String result = "ABC"; //某些操作方法返回后的结果 if(result != null) { //doSomething }ofNullable的用法 String result = null; System.out.println(">>>>>>>&g

2021-05-05 22:25:21 812

原创 一致性Hash算法在分布式场景的应用

Nginx ip_hash策略示意图下面是上面策略的简单代码实现,模拟出它是如何将客户端请求分配到不同节点,而且还保证session的一致性。package demo;import java.util.ArrayList;import java.util.List;/** * * @author qiu * */public class HashUtils { public static void main(String[] args) { //模拟客户端

2021-02-27 22:12:38 769 7

原创 Nginx核⼼配置⽂件详解

Nginx的核⼼配置⽂件conf/nginx.conf包含三块内容:全局块、events块、http块全局块从配置⽂件开始到events块之间的内容,此处的配置影响nginx服务器整体的运⾏,⽐如worker进程的数量、错误⽇志的位置等events块events块主要影响nginx服务器与⽤户的⽹络连接,⽐如worker_connections 1024,标识每个workderprocess⽀持的最⼤连接数为1024http块http块是配置最频繁的部分,虚拟主机的配置,监听端⼝的配置,

2021-02-19 22:42:35 141

原创 Nginx应⽤场景之反向代理

在了解反向代理之前,先了解下什么是正向代理:正向代理在浏览器中配置代理服务器的相关信息,通过代理服务器访问⽬标⽹站,代理服务器收到⽬标⽹站的响应之后,会把响应信息返回给我们⾃⼰的浏览器客户端反向代理浏览器客户端发送请求到反向代理服务器(⽐如Nginx),由反向代理服务器选择原始服务器提供服务获取结果响应,最终再返回给客户端浏览器应用1.为一个目标服务做反向代理部署tomcat,保持默认监听8080端⼝修改nginx配置,并重新加载2.为两个目标服务做反向代理再部

2021-02-18 22:29:54 185 3

原创 Nginx应⽤场景之负载均衡

Nginx负载均衡策略轮询默认策略,每个请求按时间顺序逐⼀分配到不同的服务器,如果某⼀个服务器下线,能⾃动剔除upstream lagouServer{server 111.222.333.110:8080;server 111.222.333.110:8082;}location /abc {proxy_pass http://xxxServer/;}weightweight代表权重,默认每⼀个负载的服务器都为1,权重越⾼那么被分配的请求越多(⽤于服务器性能不均衡的场景).

2021-02-18 21:48:03 127

原创 Tomcat性能优化

调整tomcat线程池调整tomcat连接器禁用AJP连接器调整IO模式动静分离

2021-02-17 22:21:14 112

原创 Java一些常用对List集合的操作方法

过滤操作:filterList.stream().filter(s -> 过滤条件).collect(Collectors.toList());对一个集合去重:distinctList.stream().distinct().collect(Collectors.toList());匹配(Match方法): matchList.stream().anyMatch(s -> 匹配条件); 返回类型boolean。拿到集合中对象中的某个属性的集合:myList.stream().map(对象.

2021-02-10 09:08:53 270 1

原创 浏览器访问服务器的流程

2021-01-24 17:12:49 358

原创 DispatcherServlet类请求结构

2020-12-10 22:31:57 115

原创 活剥CAS原理

Synchronized保证有序原理我们加Synchronized后,依然会发生重排序,只不过,我们有同步代码块,可以保证只有一个线程执行同步代码中的代码。Synchronized的特性1.可重入:一个线程可以多次执行Synchronized.重复获取同一把锁原理:Synchronized的锁对象中有一个计数器(recursions遍量)会记录线程获得几次锁好处:避免死锁、可以更好地封装...

2020-12-10 21:42:32 150

原创 自己实现一个简单的SpringMVC框架

springmvc框架大致执行原理流程如下:第一步:在web.xml中引入自定义的前端控制器 <servlet> <servlet-name>sunwaymvc</servlet-name> <servlet-class>com.sunway.qiu.mvcframework.servlet.DispatcherServlet</servlet-class> </servlet>第二步:编写自定义注解/

2020-12-10 21:32:08 385

原创 过滤器、拦截器、监听器作用时机图

2020-12-05 22:30:36 146

原创 SpringBean循环依赖图

2020-11-24 23:03:22 240

原创 Spring Bean生命周期图

SpringBean生命周期图

2020-11-07 16:22:36 242

原创 SpringIOC容器之高级特性(后置处理器)

后置处理器Spring提供了两种后处理bean的扩展接口,分别为BeanPostProcessor和BeanFactoryPostProcessor,两者在使用上是有区别的。工厂初始化(BeanFactory)--------> Bean对象 在BeanFactory初始化之后可以使用BeanFactoryPostProcessor 进行后置处理做一些事情。在Bean对象实例化之后可以使用BeanPostProcessor进行后置处理做一些事情。...

2020-11-07 16:20:33 226

原创 深入理解Java内存模型JMM与volatile关键字

并发编程三大特性:可见性、原子性、有序性volatile保证可见性与有序性,但是不保证原子性,保证原子性需要借助synchronized这样的锁机制多核并发缓存架构:Java线程内存模型跟cpu缓存模型类似,是基于cpu缓存模型来建立的,Java线程内存模型是标准化的,屏蔽掉了底层不同计算机的区别。以下测试程序,测试线程会在工作内存中保存一个共享变量的副本。package demo6...

2020-04-28 13:30:15 286

原创 活剥HashMap

JDK1.7的HashMap底层是:数组+链表 (传说中解决hash冲突的链地址法)我们都知道HashMap中存入一个entry(key-value键值对)使用put方法,那么问题来了它是怎么放进数组里面去的呢?我们常见数组存放的方式是通过下标如arr[i]来存入数据的,我们看一看HashMap中put的底层实现吧。下面这个table就是HashMap用的那个table.这个ta...

2020-04-27 19:52:50 197

空空如也

空空如也

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

TA关注的人

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