自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 spring的singleton和prototype

1.singleton:单例模式指的是无状态bean,spring IOC容器中只会有一个共享的Bean,每次getBean时获取的都是同一个对象,是线程不安全的2.prototype:原型模式每次使用时创建,每次getBean时都生成一个新的对象,有状态Bean,与其他作用域相比,Spring并不管理原型bean的完整生命周期。容器实例化、配置和组装一个原型对象,并将其传递给客户端,而不需要进一步缓存该原型实例。因此,尽管初始化生命周期回调方法在所有对象上都被调用,而不管作用域如何,但在原型的情况下,配

2022-06-26 11:34:37 2385

原创 RabbitMQ的ack机制

1、什么是消息确认ACK。答:如果在处理消息的过程中,消费者的服务器在处理消息的时候出现异常,那么可能这条正在处理的消息就没有完成消息消费,数据就会丢失。为了确保数据不会丢失,RabbitMQ支持消息确定-ACK。2、RabbitMQ的ACK的消息确认机制。ACK机制是消费者从RabbitMQ收到消息并处理完成后,反馈给RabbitMQ,MQ收到反馈后才将此消息从队列中删除。消息的ACK确认机制默认是打开的。如果一个消费者在处理消息出现了网络不稳、服务器异常等现象,那么就不会有ACK反馈,Rabbi

2022-04-13 14:44:51 7766 1

原创 rabbitMQ如何避免重复消费

一、 为什么会出现消息重复?消息重复的原因有两个:1.生产时消息重复,2.消费时消息重复。1.1 生产时消息重复由于生产者发送消息给MQ,在MQ确认的时候出现了网络波动,生产者没有收到确认,实际上MQ已经接收到了消息。这时候生产者就会重新发送一遍这条消息。生产者中如果消息未被确认,或确认失败,我们可以使用定时任务+(redis/db)来进行消息重试1.2消费时消息重复消费者消费成功后,再给MQ确认的时候出现了网络波动,MQ没有接收到确认,为了保证消息被消费,MQ就会继续给消费者投递之前的消息。这

2022-04-13 14:37:25 7254

原创 算法学习---删除中间节点

这可能是个面试题若链表中的某个节点,既不是链表头节点,也不是链表尾节点,则称其为该链表的「中间节点」。假定已知链表的某一个中间节点,请实现一种算法,将该节点从链表中删除。例如,传入节点 c(位于单向链表 a->b->c->d->e->f 中),将其删除后,剩余链表为 a->b->d->e->fpublic void deleteNode(ListNode node) { node.val=node.next.val;

2022-01-06 18:08:54 443

原创 算法学习--移除链表元素

1.首先判断链表是不是为空2.判断链表的头部是不是目标元素3.设定上一个节点和当前节点,当前节点为空,循环结束4.如果当前节点为目标节点,上一个节点指向当前节点的下一个节点,当前节点更新为下一个节点;如果不是的话,当前节点和上一个节节点后移public static ListNode removeElements(ListNode head, int val) { while(head!=null&&head.val==val){ head=

2022-01-06 17:16:39 275

原创 算法学习---长度最小的子数组

1.暴力双循环(双指针)class Solution { public int minSubArrayLen(int target, int[] nums) { int j=0; int sum; int begin=0; int end=nums.length; int flag=0; for(int i=0;i<nums.length;i++){ j=i;

2022-01-04 15:04:23 77

原创 算法学习--合并两个有序数组

1.将两个数组合并了进行全局排序 public static void merge(int[] nums1, int m, int[] nums2, int n) { int j=0; for(int i=m;i<m+n;i++){ nums1[i]=nums2[j++]; } Arrays.sort(nums1); }2,。双指针 public static void merge(int[] n

2022-01-04 15:03:19 243

原创 有序数组的平方

1.暴力排序class Solution { public int[] sortedSquares(int[] nums) { for(int i=0;i<nums.length;i++){ nums[i]=nums[i]*nums[i]; } sort(nums,0,nums.length-1); return nums; } public static void sort(i

2022-01-02 22:06:26 355

原创 三种经典排序算法

1.选择排序 /** * 选择排序 * @param nums * @return */ public static int[] sort(int[] nums){ for(int i=0;i<nums.length-1;i++){ for (int j=i+1;j<nums.length;j++){ if(nums[i]>nums[j]){

2021-12-29 18:03:52 401

转载 必知必会 RabbitMQ面试题 33道(附答案)

今天我们来分享RabbitMQ消息队列。 其中,MQ(Message Queue)翻译过来就是消息队列的意思。RabbitMQ作为消息队列中的优秀平台且开源,被很多公司使用。RabbitMQ服务器是用Erlang语言编写的,基于AMQP,本篇给大家总结了29道RabbitMQ知识点或者说面试题,可以收藏一波了,持续更新中... Rabbit核心知识总结 下面使用一张思维导图来总结Rabbit消息队列: RabbitMQ的30道题目如下 1.RabbitMQ是什么? 2....

2021-08-14 14:01:20 592

原创 算法学习---二分查找

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1源代码public static

2021-06-16 16:02:24 76

原创 比较反射与传统方式调用的运行效率与反射的优化

最近学习spring源码时,发现反射的掌握相对薄弱,所以回来学习了下反射。在练习中发现反射调用的效率与普通调用相比,效率要低很多,证明如下:1.首先声明一个cat的实体类:public class Cat { public void eat(){ //System.out.println("猫咪爱吃肉"); }}2.在测试类中传统方式调用eat方法public static void m1(){ Cat cat=new Cat();

2021-06-07 15:50:52 318

原创 单体架构、SOA架构、微服务架构的优点缺点以及区别联系

1、单体架构优点:开发、调试、部署、横向扩展比较简单。缺点:(1)维护困难,开发人员很难整体理解整个系统(2)容错性差,因为整个系统是一个进程,如果系统报错,整个系统容易宕机(3)资源不能进行合理利用,一个系统中不同的功能被被调用的频率不同,如果是单体应用的话,需要将整个应用水平扩展,造成了资源的浪费。(4)不利于技术的扩展,传统的单体架构如果要更新某个技术,就需要重新开发整个系统(5)难以扩展,不能按需扩展,而要扩展整个系统。代码库比较复杂,进行修改维护容易影响到别的功能2.SOA架构优点

2020-08-26 15:48:08 4483

原创 Java线程的6种状态

Java线程有六种状态public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED;}1.NewNew状态指的是线程被声明出但是还没有调用start方法时的状态。注:start方法可以被重复调用吗?public synchronized void start() { if (threadStatus != 0) t

2020-08-21 13:59:56 171

原创 线程组

1.线程组可以对多个线程进行统一管理,Java中用ThreadGroup来代表线程组,如果没有在声明Thread时指定,那么Java默认将父线程线程组设置为当前线程的线程组。实例如下:public class MyRunnerable1 implements Runnable { public void run() { System.out.println("当前线程组名:"+Thread.currentThread().getThreadGroup().getName());

2020-08-13 17:28:01 180

原创 oracle实现主键自增

1.首先创建一个表create table users ( id number(2), username varchar(100), password varchar(100), password_salt varchar(100), constraint pk_users primary key(id))2.创建序列create sequence seq_usersminvalue 1nomaxvaluestart with 1increment by 1n

2020-06-12 11:12:27 166

转载 oracle中int与number的区别

oracle本来就没有int类型,为了与别的数据库兼容,新增了int类型作为number类型的子集。int类型只能存储整数;number可以存储浮点数,也可以存储整数;number(8,1)存储小数位为1位,总长度为8的浮点数,如果小数位数不足,则用0补全;number(8)存储总长度为8的整数;int相当于number(22),存储总长度为22的整数。举例说明:–创建表结构SQL> create table tab(id0 int,id1 number,id2 number(8,1)

2020-06-12 09:54:20 1530

原创 设置idea查找资源目录文件

选中resource右键 Mark as Resource root;选中Java文件夹 标记为resource roottest标记为testresource root

2020-06-11 16:05:47 834

转载 枚举类

版权协议,转载请附上原文出处链接和本声明。 ...

2019-12-02 16:08:16 126

原创 对象的内存图解

class Person { private int age; public int getAge() { return this.age; } public void setAge(int age) { this.age = age; }}public class PersonDemo { public static void main(String[] args) {...

2018-12-04 21:09:20 175

原创 基于ssm,Oracle,freemark的分页

page类package mock.model;import java.util.List;public class Page&lt;T&gt; { //已知数据 private int current=3;//当前页,默认为3 private int numPerPage=15;//每页多少条,默认为15 private int totalCount;// 总记录数,查...

2018-11-20 14:37:26 182

原创 基于freemark,ssm和Oracle实现的分页功能

freemark页面`&amp;lt;#list mesgList as mesg&amp;gt;mesg.msgNo&amp;amp;lt;/button&amp;amp;gt;&amp;amp;lt;/td&amp;amp;gt;&amp;amp;lt;td&amp;amp;gt;{mesg.msgNo}&amp;amp;lt;/button&amp;amp;gt;&amp;amp;lt;/td&amp;

2018-11-19 14:08:43 350

空空如也

空空如也

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

TA关注的人

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