自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(192)
  • 资源 (1)
  • 收藏
  • 关注

原创 设计哈希映射

【代码】设计哈希映射。

2023-03-01 16:04:59 195 1

原创 最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。

2023-03-01 16:03:32 183

原创 找出字符串中第一个匹配项的下标

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1。

2023-03-01 12:52:55 188

原创 在排序数组中查找元素的第一个和最后一个位置

/运用二分查找 class Solution {} //第一次查找 int first = firstPosition(nums , target);} //第二次查找 int last = lastPosition(nums , target);//这个一定要+1!!!!//这部分不一样,因为如果第一次知道了之后,中间值跟target相等,那么一定在右侧(左侧已经查完了) } else if(nums [ mid ] == target) {} }

2023-02-28 20:42:53 119

原创 python入门——基础语法

单行注释:使用#多行注释:使用“”"“”"type():查看数据的类型int():转化为整数float():转化为浮点数str():转化为字符串标识符不可以使用这些字符串拼接:input():从键盘上获取输入注意:空格也算字符串

2022-12-03 20:49:14 360

原创 云e办(后端)——更新头像

注1:tracker_server指向您自己IP地址和端口,1-n个。注2:除了tracker_server,其它配置项都是可选的。在工具类里面,进行相应的操作。最后通过工具类操作文件上传。用FASTDFS实现更新头像(下载,上传等)

2022-11-12 15:59:39 179

原创 云e办(后端)——个人中心

在Spring Security中提供了一个 Authentication 对象,我们可以在 Controller 或者 Service 中,直接注入 Authentication ,注入成功后,就能直接使用。在普通项目中需要获取当前登录用户的信息,一般做法是在登录成功后,将当前用户信息存入session中。更新用户信息也是直接通过数据库进行相应的更新。在Spring Security中更新用户信息,除了正常的去数据库进行相应的更新之外,,这样才能在项目中正确的获取到更新后的用户信息。

2022-11-12 15:58:49 435

原创 云e办(后端)——WebSocket 网上聊天

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。较少的控制开销更强的实时性保持连接状态。

2022-11-11 11:19:16 317

原创 云e办(后端)——工资账套实现

虽然是说员工账套,但是查询的是员工表,员工表是需要关联外键id(salaryId),其中有对应的工资情况。给员工类添加工资属性。

2022-11-11 11:18:58 296

原创 云e办(后端)——RabbitMQ生产可靠性及消费端幂等性(邮件发送)

/消息投递中 public static final Integer DELIVERINg = 0;//消息投递成功 public static final Integer SUCCESS = 1;//消息投递失败 public static final Integer FAILURE = 2;//最大重试次数 public static final Integer MAX_TRY_CONT = 3;

2022-11-10 10:21:50 742

原创 云e办(后端)——邮件发送(员工入职时发送邮件)

IMAP,即Internet Message Access Protocol(互联网邮件访问协议),您可以通过这种协议从邮件服务器上获取邮件的信息、下载邮件等。IMAP与POP类似,都是一种邮件获取协议。例如:新员工入职时,会填写个人信息。当添加成功后,系统会给该员工发送一封欢迎邮件。包含:工号、职称、职位等信息。在main下创建resources /conf/application.yml。我是通过网易邮箱进行注册办理。

2022-11-10 10:21:34 2434

原创 云e办(后端)——导入导出员工数据(EasyPoi注解使用)

poi :poi就是批量的操作文件或数据的导入以及导出 ,但是因为其使用起来需要过多的编辑代码,所以我们在此采用easypoi。国内有很多开源项目对poi进行了封装,大大减少代码量,使其能够更简单的被我们使用并提高开发效率,例如EasyPoi,Excel4J,HuTools等优秀的开源项目。我们这次以EasyPoi为例。

2022-11-09 10:50:43 1112

原创 云e办(后端)——员工管理

*** Mybatis分页配置,分页插件** 配置Bean} }

2022-11-08 10:49:42 383

原创 云e办(后端)——操作员与操作员权限管理

可以通过搜索操作员的名字,来单独显示操作员的信息。展示所有操作员的时候,不会把自己当前登录的操作员显示出来。操作员涉及了权限:操作员拥有哪些角色,在根据角色再去拥有哪些菜单的权限。

2022-11-07 11:30:15 199

原创 云e办(后端)——数据库储存过程对部门分部管理

存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。通俗来讲:存储过程其实就是能完成一定操作的一组SQL语句优点:存储过程可封装,并隐藏复杂的商业逻辑。存储过程可以回传值,并可以接受参数。

2022-11-06 14:22:30 368

原创 云e办(后端)——权限角色和权限菜单功能的实现

admin_role用户角色表:id=6对应用户角色表中是adminId=6。menu_role菜单角色表:rid=8所对应的mid=7/23/25/26。menu菜单表:7/23/25/26:基本资料、基础信息、权限组、操作员。也就是说明:测试管理员角色能访问的菜单有:基本资料、基础、权限、操作员。菜单功能的相关操作:查询所有菜单、根据角色查询菜单、更新角色的菜单。role角色表:rid=8对应的角色表中是测试管理员的角色。角色功能的相关操作:查询角色、添加角色、删除角色。菜单表:有三级菜单。

2022-11-05 19:38:30 641

原创 云e办(后端)——全局异常处理

程序中可能有很多的异常,比如像这个sql语句的异常,空指针异常,不能每个都能判断到,并给出提出信息。全局异常处理。我们知道,系统中异常包括:编译时异常(会通过try catch捕获)和运行时异常 RuntimeException ,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。

2022-11-05 19:37:51 627

原创 云e办(后端)——职位管理与职称管理功能

权限的问题:整个权限通过menu来配合权限配置。所以说职位管理要放在系统管理里面的,系统管理是:/system/config/**只需要写controller层即可,mybatis-plus已经生成了service层mapper层。该模块提供职位的常用操作,例如查询职位,添加职位,更新职位,删除职位等方法。该模块提供职位的常用操作,例如查询职位,添加职位,更新职位,删除职位等方法。controller调用IservleBase,service层即可。职位表中会将时间进行展示,而只需要将年月日进行展示即可,

2022-11-05 10:16:11 323

原创 云e办(后端)——权限管理RABC

RBAC是基于角色的访问控制( Role-Based Access Control )在RBAC中,权限与角色相关联,用户通过扮演适当的角色从而得到这些角色的权限。所以在实体设计上用户与角色间增加用户角色实体,将多对多的对应关系拆分为一对多,同理,角色与资源多对多对应关系拆分出中间实体对象权限实体。用户表(admin),角色表(role),用户角色表(admin_role),菜单表(menu),菜单角色表(menu_role),这样就设计到权限的概念。多对多,会用到中间表。用户与角色实体对应关系为多对多。

2022-11-04 11:05:27 465

原创 云e办(后端)——Redis集成菜单功能

菜单大部分情况下是不会出现变化,但是需要被频繁的读取和渲染,完全把菜单放到redis中,我们可以将其放入 Redis 加快加载速度。

2022-11-04 11:04:31 252

原创 云e办(后端)——根据id查询菜单

代码层从上往下写:controller/service/Mapper/mapperxml…我们的菜单是分级的。会通过父id去关联,并且对应的id会有对应的权限。菜单分两级,一级菜单下面有子菜单,我们修改下Menu对象。

2022-11-03 17:46:55 549

原创 云e办(后端)——登录验证码

图形验证码,在登录的时候就需要获取。那么就需要在securityconfig配置里面的进行图形验证码放行。图像验证码显示功能使用 google Kaptcha 验证码产品 实现前台验证码显示功能。登录返回token的接口:LoginController。此时我们只是生成了验证码,并不能进行验证。

2022-11-02 13:27:10 349

原创 云e办(后端)——Swagger2接口文档

现在用的是jwt登录,返回的是jwt令牌,令牌是放在前端的请求头里面的,那么swagger文档也可以这样:先登录,然后把令牌放在全局的Authentication里面,然后文档相当于访问hello接口时,会携带jwt令牌,刚刚写的jwt令牌拦截器,如果有令牌就会自动登录,就可以访问的接口了。那么如果想访问那么必须先登录,才能访问其他接口。发现接口访问失败,提示暂未登录或token已经过期。:在前后端分离开发的项目中,后端写完代码后,需要将接口文档整理好发给前端,前端根据接口文档再去开发。

2022-11-01 12:07:23 471

原创 云e办(后端)——登录功能(JWT与spring security)

*** 当未登录或者token失效时访问接口时,自定义的返回结果*RespBean bean = RespBean . error("权限不足,请联系管理员!");} }

2022-10-31 19:43:51 635

原创 云e办(后端)——AutoGenerator的使用

AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Pojo、Mapper、Mapper XML、Service、Controller 等各个模块的代码。AutoGenerator本身和我们项目没有关联,所以可以单独新建为一个Project,这边也做成Maven聚合项目里的一个子项目。无法生成service,controller的代码。

2022-10-28 19:19:44 348

原创 云e办(后端)——项目介绍及搭载项目

本项目目的是实现中小型企业的在线办公系统,云E办在线办公系统是一个用来管理日常的办公事务的一个系统,他能够管的内容有:日常的各种流程审批,新闻,通知,公告,文件信息,财务,人事,费用,资产,行政,项目,移动办公等等。它的作用就是通过软件的方式,方便管理,更加简单,更加扁平。更加高效,更加规范,能够提高整体的管理运营水平。本项目在技术方面采用最主流的前后端分离开发模式,使用业界最流行、社区非常活跃的开源框架Spring Boot来构建后端,旨在实现云E办在线办公系统。

2022-10-27 18:28:03 1149

原创 Nginx 简单使用,适合新手阅读

1、什么是 nginxNginx 是高性能的 HTTP 和反向代理的服务器,处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。2、正向代理需要在客户端配置代理服务器进行指定网站访问3、反向代理暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。4、负载均衡增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡5、动静分离。

2022-10-24 08:00:00 106

原创 Swagger是什么

通俗的来讲,Swagger 就是将项目中所有(想要暴露的)接口展现在页面上,并且可以进行接口调用和测试的服务。swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息的等等。@ApiOperation:描述一个类的一个方法,或者说一个接口。@ApiProperty:用对象接收参数时,描述对象的一个字段。@Api:修饰整个类,描述Controller的作用。@ApiImplicitParam:一个请求参数。@ApiModel:用对象来接收参数。@ApiParam:单个参数描述。

2022-10-22 16:01:05 2997 1

原创 lombok的介绍

Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注解实现这一目的。它大致意思是:Lombok是一个很牛批的插件(本质是个Java库),项目里一旦引入了Lombok神器之后,你项目中所有诸如:对象的构造函数、 equals()方法,属性的 get()/set()方法等等,这些没有技术含量的代码统统都不用写了,Lombok帮你搞定一切,全部帮你自动生成!

2022-10-22 15:56:32 777

原创 MySQL详讲,最全最合适

select...from...where...group by...having...order by...以上关键字只能按照这个顺序来,不能颠倒。执行顺序?1. from2. where4. having5. select从某张表中查询数据,先经过where条件筛选出有价值的数据。对这些有价值的数据进行分组。分组之后可以使用having继续筛选。select查询出来。最后排序输出!

2022-10-05 10:53:48 917 1

原创 JVM大全——面试必考,学了就比别人强很多

Program Counter Register 程序计数器(寄存器)的作用,是记住下一条jvm指令的执行地址。

2022-10-04 10:04:58 329 1

原创 Mybatis基础全集适合新手(面试大全)

MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下, iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github。iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。 iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。1) M

2022-10-03 14:53:59 537 1

原创 Mybatis——逆向工程与分页查询

正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表。navigatepageNums:导航分页的页码,[1,2,3,4,5]navigatePages:导航分页的页码数(建议大家写奇数)navigatePages:导航分页的页码数。b>创建MyBatis的核心配置文件。pageSize:每页显示的条数。pageSize:每页显示的条数。size:当前页显示的真实条数。nextPage:下一页的页码。pageNum:当前页的页码。pageNum:当前页的页码。prePage:上一页的页码。

2022-10-02 12:47:23 175

原创 Mybatis——动态SQL及缓存

Mybatis框架的动态SQL技术是一种根据特定条件动态拼装SQL语句的功能,它存在的意义是为了解决拼接SQL语句字符串时的痛点问题。存在SLF4J时,作为简易日志的log4j将失效,此时我们需要借助SLF4J的具体实现logback来打印日志。trim用于去掉或添加标签中的内容(若标签中无内容时,trim也没有任何效果(不会只剩下where))属性的表达式进行判断,若表达式的结果为true,则标签中的内容会执行;查询的数据会被缓存,下次查询相同的数据,就会从缓存中直接获取,不会从数据库重新访问。

2022-09-30 11:21:35 493

原创 MyBatis——特殊SQL的执行及自定义映射resultMap

在最下面介绍了一些MySQL的条件查询的关键字/*** 测试模糊查询* @return

2022-09-29 10:57:09 248

原创 MyBatis——获取参数值的两种方式(重点)及查询功能

一定不能通过实体类对象接收,此时会抛异常TooManyResultsException。MyBatis中设置了默认的类型别名。1、若查询出的数据只有一条。2、若查询出的数据有多条。

2022-09-28 10:57:35 504 1

原创 Mybatis——操作增删改查及核心配置文件详讲

1、查询的标签select必须设置属性resultType或resultMap,用于设置实体类和数据库表的映射关系。但是若查询的数据只有一条,可以使用实体类或集合作为返回值。2、当查询的数据为多条时,不能使用实体类作为返回值,只能使用集合,否则会抛出异常。4、查询一个实体类对象。

2022-09-27 10:11:22 258

原创 Mybatis——简介及搭建

MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下, iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github。iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。

2022-09-26 10:45:40 79

原创 Redis大全,全网超详细笔记,面试足以(建议收藏)

技术的分类1、解决功能性的问题:Java、Jsp、RDBMS、Tomcat、HTML、Linux、JDBC、SVN2、解决扩展性的问题:Struts、Spring、SpringMVC、Hibernate、Mybatis3、解决性能的问题:NoSQL、Java线程、Hadoop、Nginx、MQ、ElasticSearchWeb1.0的时代,数据访问量很有限,用一夫当关的高性能的单点服务器可以解决大部分问题。随着Web2.0的时代的到来,用户访问量大幅度提升,同时产生了大量的用户数据。加上后来的智能移

2022-09-25 10:10:36 748

原创 Redis——应用问题解决

1、加锁// 1. 从redis中获取锁,set k1 v1 px 20000 nx String uuid = UUID . randomUUID() . toString();2、使用lua释放锁(保证原子性,只删自己的锁)// 2. 释放锁 del String script = "if redis.call('get', KEYS[1]) == ARGV[1] then return redis.call('del', KEYS[1]) else return 0 end";

2022-09-24 15:46:34 721

java创意画板全功能.zip

包含图像重绘,迭代图像,递归图形等全功能的创意画板

2021-08-10

空空如也

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

TA关注的人

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