自定义博客皮肤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学习笔记、学习心得、Bug总结,palewl.cn

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

原创 Sharding Jdbc强制路由主库

Sharding JDBC 主从模式下,`查询`使用从库,`添加`、`更新`以及`删除`数据操作时使用主库,但是在某些`实时性`比较高的场景,因为`主从延时`,从库还未同步数据,导致查询不到数据,因此需要强制路由到主库

2024-05-11 11:21:20 159 1

原创 Flutter+SpringBoot实现ChatGPT流实输出

最终实现Flutter的流实输出+上下文连续对话。这里就是提供一个简单版的工具类和使用案例,此处页面仅参考。

2023-10-03 18:03:33 2973 1

原创 Springboot 集成WebSocket作为客户端,含重连接功能,开箱即用

做到开箱即用的Springboot WebSocket客户端简易工具,内部封装了失败重连接、断线重连接等功能。

2023-09-22 09:07:26 1146

原创 华为PMS API client token auth failed

对接华为pms时出现问题,提示华为PMS API client token auth failed。主要是权限的问题,创建项目的时候选择N/A。

2023-08-02 10:12:25 1019

原创 Flutter ios真机调试连接断开后应用闪退

使用ios真机调试的时候,能过正常打开应用,但是当数据线断开连接的时候,应用就会关闭,重新打开就会闪退。原因是flutter默认在开发过程中使用debug模式编译。只需要将debug选择为release。

2023-07-29 23:36:50 1566

原创 解决Jenkins中Maven本地仓库更新不及时的问题

当私服的内容发生变动或有其他依赖更新时,使用Jenkins构建镜像时还使用老的依赖导致构建失败。

2022-09-19 16:47:06 1824 1

原创 SimpleDateFormat性能优化

每一次时间格式化的时候都会去手动new SimpleDateFormat,每一次new都是一次较大的性能开销,因此想到的是用单例的形式来提高性能。由于SimpleDateFormat是线程不安全的,因此可以借助ThredLocal来实现线程安全。代码如下:测试100万,500万,1000万循环不断的format时间测试性能:100万的时候500万的时候100万的时候性能是有所提升的。............

2022-06-23 23:23:38 1005

原创 力扣两数之和-java实现

题目描述给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:示例 2:示例 3:答案:使用Map,此时只需要循环一次即可。结果:通过执行用时:1 ms, 在所有 Java 提交中击败了99.28%的用户内存消耗:41.5 MB, 在所有 Java 提交中击败了55.01%的用户通过测试用例:

2022-06-23 10:12:15 436

原创 自定义注解+AOP实现字典值的翻译

字典部分这一块无论是前端和后端都可以做,在目前所接触的项目环境中是前端来做会比较方便的,但是有遇到需要不断远程调用查询的场景,类似的动作不断重复的代码,因此就自己写了个注解实现字典翻译,故此来记录一下过程。环境:SpringBoot+Mybatis-plus很多场景下,我们存储的数据是需要经过翻译的,就比如:这些数据存在系统的字典中,表数据存储的时候为了性能考虑不直接存 男 、 女,只是存1 或 0 ,前台展示的时候就需要把该值进行翻译。每个业务都写的话会比较多类似的操作,可以使用AOP的形式简化工作。一般

2022-06-22 15:19:05 1761 1

原创 Erlang并发编程总结

并发编程使用并发spawn创建一个并行进程, send向某个进程发送消息, receive则是接收消息Erlang的并发是基于进程( process)的。进程是一些独立的小型虚拟机,可以执行Erlang函数 ,在Erlang里,进程隶属于编程语言,而非操作系统。Erlang中的进程会执行某个特点方法,并且执行过程是以一个并发的形式执行的spawn(Mod, Func, Args) -> Pid,进程标识符 ,以用Pid来给此进程发送消息可以使用 Pid ~Message 的形式给进程Pid

2022-04-21 09:57:42 814

原创 Erlang基础知识学习总结

第一章 顺序编程文章目录第一章 顺序编程1.数据类型2.简单的运算3.元组基础修改元组的数据4.列表定义及使用自定义列表提取列表元素列表合并列表推导5.模式匹配6.函数lists类库列表增删改查函数返回内置函数7.关卡8. If and case9.记录和映射记录Record映射组Map映射组的增删改查10.递归和尾递归1.数据类型Erlang数据类型:原子、整数、浮点数、字符串、列表(list)、元组(tuple)、记录(record)、映射(map)如:在输入shell命令%% 整数1&gt

2022-03-17 15:58:06 901

原创 秒杀抢红包的思考和总结

序言这是一个导师的作业,要求在理论上实现发红包、抢红包的操作,且不使用Redis、MQ等不属于Java语言的技术,思考如何做秒杀内容。因此记录下整个作业流程,方便以后学习。需求描述在游戏中,玩家A向全服玩家发送红包,其他玩家可以通过“抢红包”的操作来获得红包中的部分奖励尝试思考,当有1000名玩家几乎同时发起“抢红包”操作时,如何保证每个玩家的操作延时在 10ms以下?文章目录序言需求描述(一) 实现思路和难点论证实现思路难点论证(二) 整体流程和伪代码整体流程代码及数据库设计(三) 关键逻辑

2022-02-28 21:10:08 1238 1

原创 Feign出现The bean ‘seckill.FeignClientSpecification‘, defined in null, could not be registered. A be

原因在于,写了多个:@FeignClient(name= “”),而SpringCloud升级后就不再支持写多个feign指定一个服务,因此需要合并文件即可

2021-12-23 11:24:34 340

原创 (详细)在Win10环境下安装Erlang,并安装IDEA插件

首先先下载Erlang:http://erlang.org/download/otp_win64_24.1.exe安装需要记住这个安装路径:C:\Program Files\erl-24.1一路Next下去即可点击桌面上我的电脑,右键属性,点击系统高级设置点击高级下的环境变量点击新建变量名:ERLANG_HOME变量值:C:\Program Files\erl-24.1此处变量值要写你的安装路径编辑Path,新增:;%ERLANG_HOME%\bin...

2021-12-19 20:57:20 1298

原创 Feign调用时报错Method has too many Body parameters: public abstract entity

使用Get的请求时,报了Method has too many Body parameters: public abstract entity的错误。修正:GET请求需要加上@RequestParam这个注解 @GetMapping("/current/select") public Result<List<Order>> listCurrentOrderBySelect(@RequestParam("semester") String semester , @R

2021-12-15 15:28:06 1805

原创 使用RedisTemplate实现分布式乐观锁

前言使用乐观锁能够在不上锁的情况下实现线程安全,常用的实现方式就是使用CAS自旋的形式实现。通常在分布式系统中有三种实现方式数据库行级锁Zookeeper实现分布锁Redis实现乐观锁三种方式各有优点,其中Redis和Zookeeper最常用,Redis性能最高,Zookeeper可靠性最高代码实现基于RedisTemplate,封装使用,通过IOC控制的方式实现:import entity.StatusCode;import exception.CourseException;

2021-11-25 15:22:05 1797 1

原创 微信小程序统一封装request请求,统一拦截校验

前言因为用习惯了Vue的axios,将请求统一封装,这样可以编写一处请求,然后让需要的模块直接引用调用即可,同时也可以做拦截器,token状态刷新等等操作,或者响应特定的东西。因此就试着封装request,并且使用风格上尽量偏向于跟vue admin template里的request类似,这样也好让自己上手。代码实现封装wx.request,在utils创建文件,request.js:const app = getApp();var baseURL = app.getURL();//将url定

2021-11-01 09:42:41 3612 1

原创 SpringBoot使用自定义注解校验Token及角色权限

最近学习时,自己项目中用到了Token,涉及到User和Admin两个角色,普通的用户并没有很大的权限,和Admin拥有较大的权限。每次在写代码前都需要重复校验角色,根据角色来决定是否有操作这个接口的权限。项目没有涉及到RBAC模式,就划分Admin和User,因此思路还是比较好理解的。1.定义一个Token注解import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lan

2021-09-23 15:19:17 1020

原创 让微服务只允许来自网关的请求

让微服务只允许来自网关的请求一般各个微服务的请求都是通过网关转发的,但是想要让微服务只允许来自网关的请求,可以操作:在网关中:添加一个参数systemFrom,值为gateway,一起转发给微服务,微服务只需要判断值是不是gateway即可@Componentpublic class AuthorizeFilter implements GlobalFilter, Ordered { @Override public Mono<Void> filter(Server

2021-09-20 17:19:14 2311

原创 解决SpringCloud Gateway网关跨域问题

前后端分离项目,非同源地址会发生跨域问题。因此需要解决跨域问题总的来说,解决方案:NGINX解决跨域问题在网关处解决跨域问题这里记录自己在网关处解决跨域的方法:技术:Springcloud Gatewayspringboot版本:2.1.4方法1:在application.xml:spring: cloud: # 跨域配置 gateway: globalcors: cors-configurations: '[/**]': #

2021-09-20 17:10:33 2986 1

原创 Java全链路复习面经-基础篇(2.5万字全文)

序言基础篇谈谈对面向对象思想的理解面向对象是一种编程思想。面向对象程序设计的核心思想是以对象为核心。除了面向对象之外还有面向过程,二者是两种不同的开发思想。当我们需要完成生成随机数这一个功能时,如果是以面向过程的思想进行开发,则更加专注于设计的这个实现的算法;但是以面向对象的特性来完成这个功能时,我们更强调的是对象,通过找一个能够生成随机数功能的对象来帮我们完成(如Random),作为开发者并不需要关注这个代码是怎么实现的,找到合适的对象,然后调用对象的方法即可。面向对象的四大特性:封装、集成、多

2021-09-01 20:56:54 462 1

原创 JVM虚拟机学习总结

分代垃圾回收算法分代回收算法的特点就是根据对象的生命周期不同,将存放对象的区域划分为新生代和老年代老生代的特点是每次垃圾回收时只有少量对象需要被回收,存放在老年代的对象一般为频繁使用或占用内存较大的对象新生代的特点是每次垃圾回收时会有大量的对象需要被回收,绝大部分新生对象在新生代。新生代划分了三个区域,分别是Eden、from survivor、to survivor新生代使用了Copy算法对内存对象进行回收。流程:新生对象在伊甸园出生当触发MinorGc时,会将幸存下来的对象放入fro

2021-08-20 08:34:01 205

原创 Linux常用命令总结

查看当前文件路径pwd切换文件目录使用cd命令 cd /文件路径# 访问usr路径cd /usr# 访问多级路径 usr路径下的local文件cd /usr/local # 返回上一级cd ..# 返回当前用户所在目录cd ~# 返回根目录cd /# 返回上一级目录cd -可以使用tab键补齐如访问 / 目录下的User,此时输入Us 再按tab键即可补齐文件列表使用ls命令# 查看文件ls # 显示所有文件(包括隐藏文件)ls -a# 显示文件详细信

2021-07-26 22:13:38 140 1

原创 在IDEA中导入Eclipse出现各种各样的BUG的解决方案

最近在IDEA中导入Eclipse的项目,虽然使用了MAVEN创建的,但是还是出现了各种各样的奇葩BUG,因此写下记录记录。出现各种各样不知道此类,不报错却在编译时提示找不到相关的包,但是MAVEN却不在依赖中报任何错。在MAVEN中尝试了REport也不行,重新导依赖也不行,一开始以为是本地仓库不行,也重删除了本地仓库重来,也不行。考虑到是编译不通过,那么我就去设置了一下编译如图,发现默认使用的JavaC编译,考虑到项目比较老旧,有些部分是一直迭代更新过来的,因此设置为Eclipse编译器,具体的

2021-07-18 22:05:10 2355 2

原创 Java实习生第一天及未来规划

前言说说目前自己的情况,目前就是一个准大四的学生,因为大四的课程每周只有一天的课,所以就决定暑假开始实习,做一个打工人。实习生真的要求基础掌握的要比较好,培训机构那些高大上的技术只是加分项(比如es/mq等等),算法和数据结构以及计算机相关的知识是进入大企业的必须项,小公司更多要求你能干活,但是大公司看中你的可塑性和学习能力。我的技术基本都是在b站学那些培训机构的,敲过视频上的分布式项目,包括社交类的、电商类的、企业管理系统类的项目,在校自己也做过小程序,自己敲过vue等等,比不上真正的企业级开发,但

2021-07-06 10:00:25 2039

原创 电子商务期末大作业代码

电子商务代码效果图建议拿来自己改一下,图片地址,框框大小都有,还有大量的注释提醒你这个参数是干嘛的,考试雷同就怪自己吧。使用流程先在登录框中输入账户密码,点击登录登录后凯撒加密第一个框就会出现账户和密码,格式为 账户:密码第二个框中输入秘钥(自定义,随便输入,加密解密保持一致即可)点击加密按钮 -> 加密结果会在第三个框中出现登录框 Login,项目在这个类中运行的import java.awt.*;import java.awt.event.ActionEvent;i

2021-06-09 18:10:44 358 1

原创 利用RabbitMQ的TTL实现延迟队列

在这里插入图片描述

2021-06-08 22:07:50 204 3

原创 一道关于操作i++和++i的面试题

题目:public static void main(String[] args) { int i = 1; i = i++; int j = i++; int k = i + ++i * i++; System.out.println("i=" + i); System.out.println("j=" + j); System.out.println("k=" + k); }i = ?j = ?k = ?答案->->->->

2021-06-08 16:03:35 392

原创 Eureka及Nacos微服务开发常用配置

微服务开发常用配置父工程Maven<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven

2021-05-31 18:57:18 240

原创 Redis复习-主从复制-哨兵-雪崩等-面试知识总结

Redis知识汇总-含面试知识总结(一) Redis简介简介与使用场景Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言 编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API ——源自百度百科。Redis是属于NoSql系列的非关系型数据库,广泛应用于缓存。应用场景:(1)为热点数据加速查询(主要场景)。如热点商品、热点新闻、热点资讯、推广类等高访问量信息等。(2)即时信息查询。如各位排行

2021-05-30 20:39:15 216 3

原创 使用消息队列完成微信支付(含内网穿透)

序言记录一下这个Demo,结合RabbitMQ实现微信支付(二维码版),使用内网穿透的条件下完成消息异步回调。要实现微信支付的话必须要有企业认证的微信公众号->个人是无法使用的。实现步骤微信开发目前官网有很完善的步骤,可访问官网:https://pay.weixin.qq.com/wiki/doc/api/index.html要实现的是结合自己的项目,利用消息队列的形式解耦。以下是官网开发的步骤:![](https://img-blog.csdnimg.cn/img_convert/c5b

2021-05-28 11:03:43 9850

原创 从开发的角度说明抽象类与接口之间的区别

抽象类与接口之间的区别:从语法来说:抽象类:方法可以有抽象的,也可以有非抽象, 有构造器接口:方法都是抽象,属性都是常量,默认有public static final修饰JDK1.8之后:接口里面可以有实现的方法,注意要在方法的声明上加上default或者static从开发的角度:抽象类:​ 抽象类可以有抽象方法也可以有具体的方法,如在MVC三层架构中,Dao层编写多个UserDao,此时可以抽象类,抽取常用的CRUD方法作为每一个dao的通用方法,而需要同一个方法的不同

2021-04-25 16:37:13 109

原创 爬虫之爬取易班推文信息

简介趁着周末有空,最近又在做爬虫相关的功能,想将易班的推文信息放到自己的小程序里,于是就研究了一下易班推文的爬取,设置定时任务去爬取,在爬取信息成功之后打印爬虫的信息。效果图:分析...

2021-04-17 22:29:47 1282

原创 爬虫之模拟强智系统登录

简介趁着周末有空,最近又在做爬虫相关的功能,就研究了一下强智教务系统,模拟登录,在登录成功后得到学号、姓名、学院等信息。将写好的Demo也一起放在了码云。码云地址:https://gitee.com/palewl/spder_pz_login广告:个人博客,网页版:palewl.cn小程序端:培正Lite使用技术:java为前提,使用HttpClient和Jsoup。使用工具:结合psotMan进行测试分析强智系统以广东培正学院强智教务系统为例:http://qzjw.peizheng.e

2021-04-13 23:00:40 3712 1

原创 JavaSe阶段一复习与面试(上)

JavaSe阶段一复习(上)第一部分1.0 局部变量和成员变量局部变量存在方法中,成员变量存在于方法外局部变量定义时没有默认值,成员变量有默认值局部变量存在于栈中,成员变量存在堆中。局部变量在方法进栈时诞生,随着方法出栈时消亡。成员变量在堆中与new出来的对象生命周期一致,随着Java虚拟机的垃圾回收而消亡。1.1 This和构造方法This:是关键字,表示当前调用的对象,即 谁调用,谁就是this构造方法:​ 构造方法就是用来创建对象的方法。构造方法注意事项:构造方法的名称需要和

2021-03-29 20:46:01 120

原创 ArrayList和LinkedList源码初看

无论是是ArrayList还是LinkedList,都是List的子类,因此它就自然而然的继承了List的特点;特点:有序排列,存取的规律为先进先出,如存入的顺序为[1,2,3,4],那么取出时的顺序也为[1,2,3,4允许重复元素,与Set集合相反自带索引,通过索引就可以操作集合中的每个元素。ArrayList的存储的结构是数组结构。内部的实现原理能够让其动态增长和缩减正因为是动态的数组结构,因此ArrayList元素增删慢,查找快ArrayList底层源码是基于数组来实现的,并且默

2021-03-23 20:41:34 96

原创 软件工程、MVC设计-面向对象总结

软件工程总结序言主要总结这几天考过了的班级的题目。(一) 软件工程的生命周期软件生命周期有:问题定义、可行性研究、需求分析、概要设计、详细设计、编码与测试、综合测试、软件运行与维护1、问题定义确定好要解决的问题是什么,通过对客户的访问调查,系统分析员扼要的写出关于问题性质、工程目标和工程规模的书面报告,经过讨论和必要的修改之后这份报告应该得到客户的确认。2、可行性研究确定该问题是否存在一个可以解决的方案。这个阶段的任务不是具体解决问题,而是研究问题的范围,套索这个问题是否值得去解决,是否有可

2020-12-30 20:06:28 385 1

原创 MYSQL数据库原理与应用-个人总结(上)

序言此复习为个人整理的有关MySql的复习,大量知识点来自老师上课复习、个人总结、以及部分网上资料,以便能够提供给自己复习时的内容。此资料含有大量的执行语句,并且每一条都是自己亲自试验,只得没问题之后才敢放上来,但不免有疏忽的地方,欢迎指出。第一章 数据库概述(一) 数据库概述数据库(DataBase,DB): 数据库是指可永久存储在计算机内、有组织、可共享的大量数据的集合**关键词:**可永久存储、有组织、可共享数据库管理系统(DBMS):安装在操作系统之上,是一个管理、控制数据库中各种数据库

2020-12-26 20:18:40 4815 4

原创 使用git将项目上传到码云

首先必须先登录码云,并创建一个仓库点击新建仓库之后,这里可以确定是公开还是私有创建成功后,复制git地址新建一个空白的文件夹,作为你项目的本地仓库在这个新建的空白的文件夹下,右键选择git的命令行工具输入命令:git clone 你在码云上建立的仓库地址如: git clone https://gitee.com/palewl/liehu.git成功后发现已经有项目克隆下来了将你要上传的文件丢到这个liehu的文件夹下在git中ls一下,发现文件已经被包含进来了将

2020-12-01 16:49:22 197

原创 Docker的安装-redis-rabbit等常用开发环境

因为学习的需要,最近学习了Docker,在这里记录一下安装的过程,以备以后需要。什么是Docker以下是百度百科的定义:简单来说,Docker就是一个大的容器,里面可以装载我们开发所需要的各种环境,如Mysql环境、Redis环境,MongoDB环境等等,并且每个容器之间是互相隔离不影响对方的。在开发当中,一般会有三个阶段。第一个为开发阶段,这个阶段就会对整个项目进行开发,那么开发就必定会有开发相应的环境:如,开发人员用jdk8,mysql5.7,redisxx等等。第二阶段为测试阶段,顾名思

2020-10-24 22:35:17 155

空空如也

空空如也

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

TA关注的人

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