自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

菜鸟玩Java

在菜鸟的道路上越飞越远

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

原创 ChatGLM-6B云服务器部署教程

现在市面上好多教chatglm-6b本地化部署,命令行部署,webui部署的,但是api部署的方式企业用的很多,官方给的api没有直接支持流式接口,调用起来时间响应很慢,这次给大家讲一下流式服务接口如何写,大大提升响应速度。

2023-06-16 18:58:36 2687

原创 设计模式-装饰者模式(Decorator Pattern)

1.装饰者模式1.1装饰者模式介绍装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。如图看上去有点像套娃,而装饰器的核心是再不改变原有类的基础上添加功能,有的同学就想到用继承、AOP切面,当然都可以实现,单单继承实现是有局限性的,且会造成子类过多,AOP实现较为复杂。装饰者模式会是一种更加灵活的思路,都避免了以上问题。**主要解决:**一般的,我们为了扩展一个类经常使用继承方式实现

2022-04-20 23:31:31 761

原创 基于AMQP的RabbitMQ整合SpringBoot

1. AMQP(Advanced Message Queue Protocol)AMQP(Advanced Message Queue Protocol)高级消息队列协议。协议无非就是需要遵循一定的数据规范,是在线路层上建立的,也就是应用层协议的一个开放标准,定义了网络交互的数据格式,而不是API接口(例如JMS),这使得AMQP和JMS从本质上的区别。它天然就是跨平台的,就像SMTP、HTTP 等协议样,只要开发者按照规范的格式发送数据,任何平台都可以通过AMQP进行消息交互。像目前流行的 StormM

2022-03-03 11:46:19 1642

原创 基于JMS的ActiveMQ整合SpringBoot

目录一、消息队列MQ(Message Queue)1. JMS(Java Message Service)2.ActiveMQ简介3. ActiveMQ安装4. ActiveMQ整合SpringBoot一、消息队列MQ(Message Queue)参考书籍:《Spring Boot+Vue全栈开发实战》消息队列( Message Queue )是种进程间或者线程间的异步通信方式,消息生产者在产生消息后,会将消息保存在消息队列中,直到消息消费者来取走它 ,即消息的发送者和接收者不需要同时与消息队列交

2022-03-03 11:25:10 541

原创 JVM-双亲委派机制

JVM自带的加载器(在JVM的内部所包含,c++语言编写)。用户自定义加载器(独立与JVM之外的加载器,java编写)。

2022-02-21 23:47:41 525

原创 React虚拟DOM有什么特点?

一、React的特点采用组件化模式、声明试编码,提高开发效率以及组件复用效率。在React Native中可以使用React语法进行移动端开发。使用虚拟DOM + 优秀的Diffing算法,尽量减少与真实DOM的交互。1.虚拟DOM:先将数据加载到虚拟DOM中,然后再渲染到真实的DOM中,其中虚拟DOM会与真实DOM进行比较,虚拟DOM会渲染到与真实DOM不同的组件,相同的地方不会重复渲染。2.React包介绍react.developement:react的核心库。react-do

2022-02-21 23:09:16 238

原创 JVM II(Java虚拟机,Java Virtual Machine)

当GC回收一个虚引用对象时,就会将虚引用放入到引用队列中,之后(当引用出队之后)再去回收该对象。因此,我们可以使用虚引用和引用队列实现。

2022-02-21 23:06:52 675

原创 Java有关面试题

因为链表插入删除效率高,查找元素慢,所以需要将链表构建成红黑树来提高查询效率。当阈值(TREEIFY_THRESHOLD)值大于8时,采用红黑树,否则采用普通方法(数组和链表方式)。

2022-02-21 23:00:45 688 2

原创 Zookeeper 3.5.7(铲屎官)学习教程

目录一、Zookeeper介绍二、Zookeeper的选举机制1.服务器启动初始化2.非第一次启动三、脚本案例1.启动脚本2.客户端命令操作四、动态监听服务器上下线1.具体实现五、Zookeeper分布式锁1.实现Zookeeper分布式锁2.Curator实现分布式锁2.1官网解释:2.2原生API缺点:2.3curator实现案例六、算法基础1.拜占庭将军问题2.Paxos算法3.ZAB协议3.1ZAB介绍4.CAP理论七、详细流程1.Zookeeper服务端初始化流程2.Zookeeper选举流程一

2022-02-21 22:44:30 2529

转载 java将pdf转换为jpg图片格式

引入依赖<dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>fontbox</artifactId> <version>2.0.1</version></dependency><dependency> <groupId>org.apache.pdfbox</groupId&g

2021-06-22 20:07:17 1109

转载 编程中取余和取模有什么区别?

目录:参考链接:描述:符号相同:符号不同:原则定义:参考链接:https://www.cnblogs.com/cnwanj/p/14857899.html描述:取余和取模是极其相似,常常会让人以为两者是同一样性质,其实不然。在符号相同时,两者不会冲突,符号不同时就会有以下区别:取余:向0舍入。取模:向负无穷舍入。符号相同:比如:9 / 5 = 1.8,会有两个商1和2。9 = 5 * 1 + 4或9 = 5 * 2 + (-1),因为是向0舍入,取前者计算结果,9 余 5 = 4,

2021-06-07 16:45:55 706

原创 MySQL分组group by获取日期最新一条数据再排序order by

1.分组获取日期最新一条数据现在有一个需求,先根据age分组,再获取分组中日期的最新一条。解决:左连接查询,对笛卡尔积进行条件筛选,如下:select * from user a left join user b on a.age= b.ageand a.date_time < b.date_timewhere b.date_time is null如果需要添加条件可以进行如下条件筛选:select * from user a left join user b on a.age=

2021-05-26 20:51:07 1017

原创 git通过.gitignore忽略并过滤无效文件提交

背景由于在本地开发过程中会产生各种各样的无效文件,如:.idea、.iml、/target/等文件,这时候就需要通过.gitignore文件进行过滤,达到项目文件净化的效果。步骤1、项目根目录创建.gitignore文件在.gitignore文件中添加自己要过滤的文件.idea*.iml.settings.project.classpath*.class/target//out/.gitignore2、将本地git进行清除(这个很重要)git rm -r -f --cache

2021-05-12 15:38:02 355

原创 MySQL索引失效原则

索引失效原则不要再索引上进行任何操作(计算、函数、类型转换),否则索引失效。不要在索引上进行加减乘除计算,例如:where t.tid * 3 = ‘’;乘与3为计算,会导致索引失效。不能使用不等于(!=、<、>、is null、is not null),模糊查询like以百分号%开头(’%参数%’)。对于复合索引。不要跨列使用或无需使用(满足最佳左前缀)。尽量使用全索引匹配,复合索引中将不用的索引去掉。左边的索引失效会导致右边的索引失效。1.计算,导致索引失效# 该查

2021-04-09 15:19:38 892

原创 MySQL存储引擎为何弃用MyISAM而投向InnoDB的怀抱(MyISAM和InnoDB的区别)

1.What is engines?自从MySQL5.5版本之前,默认采用MyISAM作为存储引擎,而5.5之后则默认采用InnoDB,为什么?存储引擎到底是个什么?通过执行一下命令可以查看数据引擎:# 显示存储引擎show engines可以看到MyISAM和InnoDB都支持,而InnoDB是默认开启,并且支持事务、行级锁。外键关联。一条SQL语句的执行会经过哪些步骤?连接层:客户端与服务端建立链接。服务层:提供了SQL的优化器,会对SQL语句进行优化。引擎层:提供了各种存

2021-04-09 13:58:10 492

原创 git常见报错:error: GE007: xxx private email address、OpenSSL SSL_read: Connection was reset...

1、注意:若发生报错error: GE007: Your push would publish a private email address可以开启gitee中的邮箱权限,把打勾去掉如下:2、若需要登录github账号,且登录失败报错:fatal: unable to access ‘https://github.com/xxx/xxx.git/’: OpenSSL SSL_read: Connection was reset, errno 10054更新git:git update-git-f

2021-04-04 11:19:33 702 1

原创 git分别提交到master分支和dev分支

一、git分别提交到master分支和dev分支1.推送到master分支初始化:git init添加到本地暂存区:git add .添加备注:git commit -m “备注”本地与远程关联:git remote add origin https://gitee.com/cnwanj/springcloud-config.git推送到远程master分支:git push -u origin master2.推送到dev分支新建本地分支:git checkout -b dev

2021-03-23 22:25:05 2768

原创 Java中volatile关键字解析

1.volatile关键字概念:JVM提供的一个轻量级的同步机制。作用:防止JVM对long/double等64位非原子性协议进行误操作(读取半个数据)。可以使变量对所有的线程立即可见(某一个线程如果修改了工作内存中的变量副本,那么加上volatile之后,该变量就会立刻同步到其他线程的工作内存中)。禁止指令的“重排序”优化。原子性:不可拆分(num = 10)。非原子性:可以拆分为原子性(int num = 10 -> int num 和 num = 10)。重排序:排序

2021-02-06 22:20:16 157 1

原创 设计模式-单例模式5种方式(饿汉、懒汉、双重锁、静态内部类、枚举)

单例模式主要有5种模式:饿汉模式:实例在初始化就已经创建好对象。懒汉模式:在使用实例时进行判断,若不为null则创建对象,否则直接调用。双重检查:通过锁来双重判断实例是否为null。1.饿汉模式实例在初始化就已经创建好对象,不管有没有使用都会创建,会造成资源浪费。public class Main { private static Main instance = new Main(); private Main(){} public stati

2021-02-06 21:59:15 370

原创 React组件间props通信(参数传递,父传子、子传父)

1、父传子通过在引入子组件的地方直接传递参数。子组件通过props来直接获取参数。class Parent extends React.Component { render() { // 将“你好呀”传入到子组件中 return ( <div> <Children name="你好呀"/> </div> ) }}class Ch

2021-02-04 00:36:13 984

原创 idea热部署插件-JRebel

一、JRebel介绍:JreBel是Idea中最热门的一款热部署插件之一,进入JreBel官网https://www.jrebel.com/products/jrebel:翻译过来:JRebel使开发人员能够创建更好的应用程序。使用JRebel,开发人员可以在Java开发过程中跳过重建和重新部署,同时维护应用程序状态。这使开发人员能够实时查看代码更改对应用程序的影响。二、JRebel安装搜索JreBel热部署插件进行安装,如下:安装完成后将idea进行重启。三、激活JRebel重启完成后会

2021-01-04 13:35:28 1182

原创 JVM运行时数据5个区域-堆(Heap)

JVM运行时的数据区域运行时的数据区分为私有线程和共享线程两个区域u,其中堆Heap属于共享线程。描述:存放对象实例,如对象(new Person())、数组(new Person[2])。堆是jvm区域中最大的一块(对象会在多个地方进行创建),在jvm启动时就已经创建完毕(堆容器)。堆本身是线程共享,但在堆内部可以划分出多个线程的私有缓冲区。GC主要管理的区域。堆允许物理空间不连续,只要逻辑连续即可(对象会在堆中到处存放,但是都属于同一类对象)。堆的详细图解如下:新生代和老生代:

2020-12-31 11:11:40 304 7

原创 八大排序算法之-堆排序(HeapSort)

堆排序:堆排序的数据结构是完全二叉树,需要转换为大顶堆,即每个节点的值都大于或者等于它的左右子节点的值,小顶堆则反之。思路:从尾部到首部进行遍历。将第0个节点到第i个节点进行大顶堆构建。不断的比较第i个节点的父节点与子节点,若父节点大于子节点则进行交换。进行i–操作继续交换,直到完成大顶堆构建。每完成一次大顶堆构建,就将第0个元素与第i个元素进行交换。public class HeapSort { public static void main(String[] args) {

2020-12-28 16:37:42 156

原创 MySQL通过存储函数和存储过程插入80万条数据

存储过程无return,需要单独执行。存储函数有return,可以随处调用。1、创建部门表(dept)和员工表(emp)# 创建数据库create database testdata;use testdata;# 创建部门表create table dept( dno int(5) primary key default 0, dname varchar(20) not null default '', loc varchar(30) default '') e.

2020-12-26 11:11:42 407

原创 八大排序算法之-希尔排序(ShellSort)

希尔排序图解:希尔排序是简单插入排序改进后的一个高效版本。以下版本是采用普通的交换法,效率比较低;10000000个元素排序需要的时间大概:13698ms。import java.util.Arrays;public class InsertSort { public static void main(String[] args) { // int[] arr = {8, 9, 1, 7, 2, 3, 5, 4, 6, 0}; // f2(arr); // System.o

2020-12-20 15:08:10 128

原创 八大排序算法之-插入排序(InsertionSort)

插入排序图解:思路:定义待插入的元素。定义待插入的元素前一位下标。判断该下标是否大于0,及前一位数是否大于待插入的数。将前一位数赋给待插入数位置。下标-1,往前移动。将待插入的数插入到前一位数。import java.util.Arrays;public class InsertionSort { public static void main(String[] args) { int[] arr = {17, 3, 25, 14, 20, 9}; f(

2020-12-20 11:18:55 199 1

原创 八大排序算法之-冒泡排序(BubbleSort)

冒泡排序算法图解:思路:元素之间两两交换,将最大的元素往后冒。若当前元素大于后一个元素,进行交换。import java.util.Arrays;public class DubbleSort { public static void main(String[] args) { int[] arr = {8, 3, 5, 2, 3, 6, 1, 7, 9}; f(arr); System.out.println(Arrays.t

2020-12-19 21:17:00 183 1

原创 八大排序算法之-选择排序(SelectionSort)

选择排序图解:以arr[i]为基准数。找出i后面的最小数min。若arr[i]大于min则进行交换。import java.util.Arrays;public class SelectionSort{ public static void main(String[] args) { int[] arr = {5,43,6,7,1,2,4,9}; f(arr); System.out.println(Arrays.toString(arr)); } static voi

2020-12-19 20:47:57 208 4

原创 八大排序算法之-快速排序(QuickSort)

快速排序图解:执行步骤:指定中轴数为基准数,左边从第一位开始遍历,右边从倒数最后一位开始遍历。若左下标小于右下标,循环遍历。左元素小于中轴数,左下标+1,进入循环;右元素小于中轴数,右下标-1。判断左下标是否大于右下标。将左右元素互换。左元素等于中轴数,右下标-1;右元素等于中轴数,左下标+1。若左右下标相等,将其错位移开。向左递归,向右递归。import java.util.*;public class Main { public static void main(Stri

2020-12-18 19:54:54 261 1

原创 MySQL索引类型(type)分析

type索引类型:ststem > const > eq_ref > ref > range > index > all优化级别从左往右递减,没有索引的一般为’all’,需要对type进行优化前提是有索引。其中’system’和’const’只是理想型,实际只能达到’ref’和’range’。注意:这里主要针对MySQL5.6进行讲解,与其他版本有区别,但是原理过程一致创建两张表teacher和teacherCard# 教师表create table

2020-12-17 11:45:04 1976

原创 MySQL常用sql语句(DDL)

# 外键知识CASECADE:父表delete、update时,子表会delete、update关联记录SET NULL:父表delete、update时,子表外键设为null,注意不要将外键设置为not nullRESTRICT:父表delete、update时,若关联的子表存在记录,则不能删除父表记录NO ACTION:同RESTRICT,需要检查外键# 登录数据库mysql -u root -p# 显示数据库show databases# 显示表show tables

2020-12-03 15:26:05 167

原创 nginx启动报错,Job for nginx.service failed because the control process exited with error code. See “syst

按照提示输入命令查看systemctl status nginx.service提示58行错误将该行注释掉重启nginxsystemctl sstart nginx

2020-12-02 18:03:57 554

原创 SpringBoot类中读取properties,yml配置文件的3种方法

1. Environment方式yml文件server: port: 8082Controller控制器中的代码如下import org.springframework.beans.factory.annotation.Autowired;import org.springframework.core.env.Environment;import org.springframework.web.bind.annotation.GetMapping;import org.springfra

2020-12-01 18:20:35 857

原创 2018年第九届蓝桥杯真题决赛(国赛)JAVA B组-整理玩具答案及思路分享

标题4:整理玩具小明有一套玩具,一共包含NxM个部件。这些部件摆放在一个包含NxM个小格子的玩具盒中,每个小格子中恰好摆放一个部件。 每一个部件上标记有一个0~9的整数,有可能有多个部件标记相同的整数。 小明对玩具的摆放有特殊的要求:标记相同整数的部件必须摆在一起,组成一个矩形形状。如以下摆放是满足要求的:0002200033444441224412244122330123456789以下摆放不满足要求:111221112233311111111122221122

2020-11-12 17:15:46 363 1

原创 2016年第七届蓝桥杯真题决赛(国赛)JAVA B组-路径之谜答案及思路分享

4、路径之谜小明冒充X星球的骑士,进入了一个奇怪的城堡。城堡里边什么都没有,只有方形石头铺成的地面。假设城堡地面是 n x n 个方格。【如图1.png】所示。按习俗,骑士要从西北角走到东南角。可以横向或纵向移动,但不能斜着走,也不能跳跃。每走到一个新方格,就要向正北方和正西方各射一箭。(城堡的西墙和北墙内各有 n 个靶子)同一个方格只允许经过一次。但不必做完所有的方格。如果只给出靶子上箭的数目,你能推断出骑士的行走路线吗?有时是可以的,比如图1.png中的例子。本题的要求就是已知箭

2020-11-12 16:48:15 523 5

原创 2019年第十届蓝桥杯真题决赛(国赛)B组-第五题答案及思路分享

【题目】在一个55的方格上走边界点,其实也就是66的图,从左上角开始走,不走重复点且在12步之内走回左上角点【思路】dfs从起点往右边位置(0, 1)遍历遍历到起点的下方位置(1, 0)时算完成一次将结果乘与2答案:206public class Main5 { static int N = 6, count = 0, num = 0; static int[][] a = new int[N][N], xy = {{-1, 0}, {0, 1}, {1, 0},

2020-11-10 20:30:45 635 1

原创 2015年第六届蓝桥杯真题决赛(国赛)JAVA B组-穿越雷区答案及思路分享

试题D:穿越雷区X星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运某坦克需要从A区到B区去(A,B区本身是安全区,没有正能量或负能量特征),怎样已知的地图是一个方阵,上面用字母标出了A,B区,其它区都标了正号或负号分别表示例如:A + - + -- + - - +- + + + -+ - + - +B + - + -坦克车只能水平或垂直方向上移动到相邻的区。数据格式要求:输入第一行是一个整数n,表示方阵的大小, 4<=n<100接下来是n行,

2020-11-01 15:47:34 338

原创 2015年第六届蓝桥杯真题决赛(国赛)JAVA B组-五星填数答案及思路分享

试题B:五星填数如【图1.png】的五星图案节点填上数字:1~12,除去7和11。要求每条直线上数字和相等。如图就是恰当的填法。请你利用计算机搜索所有可能的填法有多少种。注意:旋转或镜像后相同的算同一种填法。请提交表示方案数目的整数,不要填写任何其它内容。【思路】全排列,下图红色数字表示数组下标答案12import java.util.Arrays;public class Main2 { static int[] a = {1, 2, 3, 4, 5, 6, 8,

2020-11-01 15:46:41 299

原创 2015年第六届蓝桥杯真题决赛(国赛)JAVA B组-分机号答案及思路分享

试题A:分机号X老板脾气古怪,他们公司的电话分机号都是3位数,老板规定,所有号码必须是降序排列,且不能有重复的数位。比如:751,520,321 都满足要求,而,766,918,201 就不符合要求。现在请你计算一下,按照这样的规定,一共有多少个可用的3位分机号码?请直接提交该数字,不要填写任何多余的内容。【思路】倒序初始化数组9-0,再进行元素抽取全排列答案:120public class Main1 { static int[] a1 = {9, 8, 7, 6, 5, 4

2020-11-01 15:45:42 328

原创 2016年第七届蓝桥杯真题决赛(国赛)JAVA B组答案及思路分享

1、愤怒小鸟X星球愤怒的小鸟喜欢撞火车!一根平直的铁轨上两火车间相距 1000 米两火车 (不妨称A和B) 以时速 10米/秒 相对行驶。愤怒的小鸟从A车出发,时速50米/秒,撞向B车,然后返回去撞A车,再返回去撞B车,如此往复…两火车在相距1米处停车。问:这期间愤怒的小鸟撞 B 车多少次?注意:需要提交的是一个整数(表示撞B车的次数),不要填写任何其它内容。【思路】速度 = 路程 / 时间(v = d / s)。鸟飞行的距离 = 总距离 - 火车行走的路程。50 * t = B

2020-10-30 18:37:55 358

空空如也

空空如也

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

TA关注的人

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