- 博客(217)
- 收藏
- 关注
原创 常用Linux命令(持续更新)
防火墙添加端口firewall-cmd --zone=public --add-port=80/tcp --permanent (–permanent永久生效,没有此参数重启后失效)删除端口firewall-cmd --zone= public --remove-port=80/tcp --permanent重新载入firewall-cmd --reload查看所有打开的端口firewall-cmd --zone=public --list-ports...
2024-03-21 17:33:17 153
转载 Gradle构建工具
简介Gradle,这是一个基于 JVM 的富有突破性构建工具。Gradle 正迅速成为许多开源项目和前沿企业构建系统的选择,同时也在挑战遗留的自动化构建项目。
2022-04-06 16:43:40 566
转载 Groovy语言
简介Groovy是一种基于Java平台的面向对象语言。 Groovy 1.0于2007年1月2日发布,其中Groovy 2.4是当前的主要版本。 Groovy通过Apache License v 2.0发布。Groovy中有以下特点:同时支持静态和动态类型。支持运算符重载。本地语法列表和关联数组。对正则表达式的本地支持。各种标记语言,如XML和HTML原生支持。Groovy对于Java开发人员来说很简单,因为Java和Groovy的语法非常相似。可以使用现有的Java库Groovy扩展
2022-04-06 16:04:06 323
转载 SOAP协议
简介SOAP 是基于 XML 的简易协议,可使应用程序在 HTTP 之上进行信息交换。简单来说,SOAP 是用于访问网络服务的协议。为啥要使用SOAP?对于应用程序开发来说,使程序之间进行因特网通信是很重要的。目前的应用程序通过使用远程过程调用(RPC)在诸如 DCOM 与 CORBA 等对象之间进行通信,但是 HTTP 不是为此设计的。RPC 会产生兼容性以及安全问题;防火墙和代理服务器通常会阻止此类流量。通过 HTTP 在应用程序间通信是更好的方法,因为 HTTP 得到了所有的因特网浏览器
2022-03-30 16:31:35 1005
原创 java版本
JDK11中引入String.strip()String.trim() 可以去除字符串前后的“半角”空白字符String.strip() 可以去除字符串前后的“全角和半角”空白字符在输入法中存在全角和半角字符的概念,比如说“逗号”存在“全角逗号和半角逗号”,体现在Unicode中就是两个不同的码位。通常全角字符占两个半角字符的位置,中文输入法下的“中文字符和标点符号”为全角字符,但空白字符默认仍然是半角字符,所以除非刻意使用全角空白符,否则一般都是半角空白符。@ 全角半角和中文英文输入法没关系,中
2022-03-21 09:44:20 185
转载 SpringBoot中处理校验逻辑的两种方式
平时在开发接口的时候,常常会需要对参数进行校验,这里提供两种处理校验逻辑的方式。一种是使用Hibernate Validator来处理,另一种是使用全局异常来处理,下面我们讲下这两种方式的用法。Hibernate ValidatorHibernate Validator是SpringBoot内置的校验框架,只要集成了SpringBoot就自动集成了它,我们可以通过在对象上面使用它提供的注解来完成参数校验。常用注解我们先来了解下常用的注解,对Hibernate Validator所提供的校验功能有个印
2022-03-21 09:41:04 342
原创 SpringCloud 问题杂集
为什么添加了 Ribbon 后报No instances available forSPRINGCLOUD-PROVIDER…错误?原因一:没有开启注册于发现功能原因二:因为 spring-cloud-starter-netflix-eureka-client 包集成了ribbon,不需要再导入spring-cloud-starter-netflix-ribbon 包...
2021-12-30 14:33:15 266
原创 关于数据库设计的几条建议
数据库设计是一个比较重要的环节,会影响后续的一系列工作,好的设计不仅可以便于程序员处理逻辑业务、编写代码,还能提高查询效率,加快网站访问速度,从而提高用户的体验感等。一、原子性保证每列不可再分解,是一个清晰的字段,而不是包含笼统的范围信息。二、主键主键一般不要与业务有一定的联系,最好是UUID或自增。根据数据库三大范式,尽量保证列数据与主键直接相关。三、频繁修改字段对于那些经常修改的字段(例如状态)最好用独立数字或单个字母表示,而不是汉字或长字符。四、字段长度不能过大,在进行查询的时候索引在
2021-11-03 10:22:49 491
原创 算法解题可能会用到的知识/方法
MathMath.sqrt(xx)对xx进行开方StringcharAt(xx)xx字母在字符串中的位置compareTo(xx)比较两个字符串首字母的字典顺序大小,如果首字母相同则会比较第二个字母,以此类推PriorityQueuePriorityQueue(优先级队列):在Java1.5中引入。PriorityQueue是基于优先堆的一个无界队列,这个优先队列中的元素可以默认自然排序或者通过提供的Comparator(比较器)在队列实例化的时排序。要求使用Java Compar
2021-10-22 14:35:08 496
转载 排序算法(含动图、代码)
术语说明稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;不稳定:如果a原本在b前面,而a=b,排序之后a有可能会出现在b的后面;内排序:所有排序操作都在内存中完成;外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;时间复杂度:描述算法运行时间的函数,用大O符号表述;空间复杂度:描述算法所需要的内存空间大小。图片名词解释:n:数据规模k:"桶"的个数In-place:占用常数内存,不占用额外内存Out-place:占用额外内存算
2021-10-11 18:06:55 193
原创 MongoDB配置(SSM版)
依赖包 <!-- mongodb --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>1.10.1.RELEASE</version> </dependency>
2021-10-11 10:58:30 547
原创 关于拓展/自定义字段的一些想法
目前大概有那么几种:1.直接修改数据库表可能可以通过某些方式用代码来达到修改数据库表的效果,不过个人感觉比较危险,且过程较为繁杂,不过也有些技术较为成熟。例如“新表+触发器+迁移数据+rename”方案(pt-online-schema-change),说是是业内非常成熟的扩展列的方案。基本原理是:(1)先创建一个扩充字段后的新表user_new(uid, name, passwd, age, sex)(2)在原表user上创建三个触发器,对原表user进行的所有insert/delete/upd
2021-10-09 18:04:06 532
转载 nginx入门
安装所需插件1、安装gccgcc是linux下的编译器在此不多做解释,感兴趣的小伙伴可以去查一下相关资料,它可以编译 C,C++,Ada,Object C和Java等语言命令:查看gcc版本gcc -v一般够买的centOS7里面是都有的,没有安装的话会提示命令找不到,安装命令:yum -y install gcc2、pcre、pcre-devel安装pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式,所以需要安装pcre库
2021-09-24 11:05:12 132
原创 工作实际问题
复合主键与单主键复合主键会使字表产生冗余字段,如需更新需要同步更新,但查询比较方便,单表数据较完整单主键+复合唯一索引则相反,更新关联数据简便冗余字段也较少,编程方便,但查询起来麻烦,查询可是个频繁的操作‘’感觉还是得结合实际业务本身,子表的数量,会不会出现滚雪球效应,联表数量,复合主键是否有需要更新的可能等等…...
2021-07-29 11:14:00 160
原创 Java后台过滤要传给前台的数据
首先,列出需要的属性名,把不需要的去掉例: String[] fields = new String[] { "id", "name", "age", "sex", ... };接着查出数据源List<User> dataList = userMapper.queryPage(User, page);最后过滤数据并传回传入数据源和属性名数组 public static <T> List<JSONObject> formatLi
2021-07-28 17:34:58 809
原创 web打印插件hiprint
简介hiprint 是一个web 打印的js组件,无需安装软件。支持移动端,PC端浏览器,angular,vue,react, 等 分页预览,打印,操作简单,运行快速。预览界面为css+html 。支持数据分组,批量预览。生产pdf,图片更方便hiprint 插件依赖jquery,(也就是说,jquery必须在所有插件之前引入页面),如果要使用二维码和条形码功能,需另外引入两个js组件JsBarcode.all.js和qrcode.js。此2款条码插件均是MIT协议,可以到github搜索下载最新版地
2021-07-23 11:50:09 3443 2
原创 webSocket
简介**WebSocket是一种在单个TCP连接上进行全双工通信的协议。**WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。Vue webSocketLink(){ let _this = this; // 心跳检测 var heatCheck = {
2021-07-23 11:39:56 190
转载 使用Redis+AOP优化权限管理功能
之前有很多朋友提过,mall项目中的权限管理功能有性能问题,因为每次访问接口进行权限校验时都会从数据库中去查询用户信息。最近对这个问题进行了优化,通过Redis+AOP解决了该问题,下面来讲下我的优化思路。
2021-05-24 15:28:16 257
转载 SpringBoot中处理校验逻辑的两种方式
平时在开发接口的时候,常常会需要对参数进行校验,这里提供两种处理校验逻辑的方式。一种是使用Hibernate Validator来处理,另一种是使用全局异常来处理,下面我们讲下这两种方式的用法。
2021-05-24 15:11:31 360
原创 前后端分离项目,引入spring Cloud Gateway产生的跨域问题
随着项目架构的越来越复杂,引入了新的技术,新的问题也在产生,本文将讲述一个由于网关引起的前端调用问题。
2021-05-24 14:14:22 207
转载 前后端分离项目,优雅实现文件存储
学前准备学习本文需要一些MinIO的基础知识,还不了解的小伙伴可以参考下:Github标星19K+Star,10分钟自建对象存储服务!结合SpringBoot使用接下来我们将结合SpringBoot来实现一个完整的图片上传与删除操作。上传流程示意图:在pom.xml中添加MinIO的相关依赖: <!--MinIO JAVA SDK--> <dependency> <groupId>io.minio</groupId>
2021-05-21 19:17:09 575
转载 整合SpringSecurity+JWT实现登录认证
整合步骤这里我们以mall-portal改造为例来说说如何实现。第一步,给需要登录认证的模块添加mall-security依赖: <dependency> <groupId>com.macro.mall</groupId> <artifactId>mall-security</artifactId> </dependency> 第二步,添加MallSecurityConfig配置类,继承mall
2021-05-21 18:32:56 811
转载 Java 8 引入的 Stream API
Java 8 引入了全新的 Stream API,可以使用声明的方式来处理数据,极大地方便了集合操作,让我们可以使用更少的代码来实现更为复杂的逻辑,本文主要对一些常用的Stream API进行介绍。
2021-05-21 17:57:52 493
转载 前后端分离项目,如何解决跨域问题
跨域资源共享(CORS)是前后端分离项目很常见的问题,本文主要介绍当SpringBoot应用整合SpringSecurity以后如何解决该问题。
2021-05-21 17:27:09 477
转载 SpringBoot应用整合ELK实现日志收集
ELK即Elasticsearch、Logstash、Kibana,组合起来可以搭建线上日志系统,本文主要讲解使用ELK来收集SpringBoot应用产生的日志。
2021-05-21 16:22:26 149
转载 SpringBoot应用中使用AOP记录接口访问日志
本文主要讲述AOP在mall项目中的应用,通过在controller层建一个切面来实现接口访问的统一日志记录。
2021-05-21 15:58:50 185
转载 Elasticsearch实现商品搜索
本文主要讲解mall整合Elasticsearch的过程,以实现商品信息在Elasticsearch中的导入、查询、修改、删除为例。
2021-05-19 17:45:28 863
转载 SpringSecurity和JWT实现认证和授权
本文主要讲解mall通过整合SpringSecurity和JWT实现后台用户的登录和授权功能,同时改造Swagger-UI的配置使其可以自动记住登录令牌进行发送。
2021-05-19 09:47:04 980 1
原创 知识杂录
一档:集合(HashMap、ArrayList)、并发编程(线程池、synchronized、CAS、Lock、AQS、ThreadLocal、volatile)、MySQL(索引、锁)、Redis(缓存、分布式锁、高可用)、JVM(运行时数据区、GC、CMS、G1)二档:Spring(IoC、AOP)、MQ(Kafka)、Zookeeper(注册中心、分布式锁)、RPC(Dubbo)三档:MyBatis、设计模式(单例、代理)、算法(剑指offer)、分布式理论(BASE、CAP、2PC、TCC).
2021-05-19 09:33:50 96
原创 IDEA
快捷键Ctrl快捷键介绍Ctrl + F在当前文件进行文本查找 (必备)Ctrl + R在当前文件进行文本替换 (必备)Ctrl + Z撤销 (必备)Ctrl + Y删除光标所在行 或 删除选中的行 (必备)Ctrl + X剪切光标所在行 或 剪切选择内容Ctrl + C复制光标所在行 或 复制选择内容Ctrl + D复制光标所在行 或 复制选择内容,并把复制内容插入光标位置下面 (必备)Ctrl + W递进式选择代码块。可选
2021-05-08 15:59:10 311
原创 Webpack
简介Webpack 是一个前端资源加载/打包工具,可以将多种静态资源js、css、less 装换成一个静态文件,减少页面的请求。安装npm install -g webpack webpack-cli # 全局安装webpack -v # 版本号步骤创建一个nodejs项目 npm init -y创建一个src目录在src存放两个需要合并的util.js和common.js准备一个入口文件 main.js,其实就是模块集中进行引入在根目录下定义个webpack.config.js
2021-04-09 23:14:11 71
原创 模块化
commons js 模块化开发export / require// 导出const sum = function(a,b){ return a+b;}module.exports = { sum}// 导入const m = require('example.js');console.log(m.sum(1,2));es6 模块化开发export / import// 导出export default{ getList(){ //... }, save(){
2021-04-09 22:24:18 59
原创 Babel
简介ES6的某些高级语法在浏览器环境甚至是Node.js环境中无法执行。Babel是一个转码器,可以将ES6代码转化为ES5代码安装npm install -g babel-clibabel --version # 查看版本号## 使用 1. 初始化项目```bashnpm init -y创建example.js文件,其中包含一段ES6代码配置.babelrc,存放于项目的根目录下{ "presets": ["es2015"], "plugins": []}安
2021-04-09 20:28:04 206
原创 NPM包管理器
简介npm:node package managerNode.js的包管理器,相当于前端的Maven,在安装Node.js时就已内置进去npm -v官方网站:https://www.npmjs.com/命令npm init (-y)// 快速构建node工程,得到package.json文件npm install mysql(@版本号)// 安装模块const mysql = require("mysql");// 导入模块node xxx(.js)// 运行文件(ctrl
2021-04-08 23:13:47 59
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人