
技术
文章平均质量分 59
小苗爸爸
我很忙
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
grafana 导出iframe链接 嵌入业务系统
grafana 是一个很好的监控前端系统,支持很多数据源,这个具体我就不展开介绍了,有兴趣的同学可以自行学习。今天我主要来分享一下,如何将grafana的单个页面嵌入到我们自己的管理系统或者业务系统中。1、设置grafana 允许 iframe访问、允许匿名访问(不登录)我是docker安装的,所以进入容器 修改 /usr/share/grafana/conf/defaults.ini 文件2、导出grafana iframe链接3、将链接直接复制到我们需要引入的html中即可...原创 2022-05-31 14:34:51 · 1695 阅读 · 1 评论 -
适配国产数据库 GBase(南大通用mysql版)
这篇帖子主要是记一下踩过的坑。文章目录1. 数据库安装2. sql迁移(mysql->gbase)2.1 注意编码格式统一3. 适配pagehelper、mybatis-plus3.1 适配pagehelper4. 语法坑5. 其他坑1. 数据库安装一个服务端只支持一个实例,用法类似mysql,如需多个实例,可按装多个客户端。2. sql迁移(mysql->gbase)2.1 注意编码格式统一字段上 SET utf8 COLLATE utf8_general_ci表上C原创 2022-03-09 14:58:32 · 4674 阅读 · 0 评论 -
项目管理常用图(甘特图、WBS、燃尽图)了解
作为一个项目经理,不可避免的要用到图表来规划项目,我个人认为比较重要的有三类。甘特图作为项目管理常用图表之一,甘特图不仅能够让管理者实时有效掌握项目进度和资源分配,同时能够加强过程的可视化管理、人员实时沟通,把责任和任务落到实处,让项目有序进行,实现企业管理方法和流程的优化,从而提升企业效益。甘特图的横轴表示时间,纵轴表示项目,线条表示期间计划和实际完成情况,直观表明计划何时进行,进展与要求的对比,便于管理者弄清项目的剩余人物,评估工作进度。甘特图常用于项目初期制定项目timeline,用以跟进项目原创 2022-03-01 18:18:06 · 21703 阅读 · 0 评论 -
nginx 部署多个vue前端项目
思想:1、先反向代理 ,将多个前端项目的静态资源文件放不同位置,通过反向代理出去,可以做到用户同一个域名端口,不同路径访问不同项目,2、再正向代理,前端访问不同后端,配置正向代理,转发到相应后端服务。#######前端反向代理出去 location / { root /usr/share/nginx/html; index index.html index.html; try_files $uri $uri/ /index.html;原创 2022-02-24 18:12:09 · 2655 阅读 · 0 评论 -
设计模式整理复习 (一)
1. 单例模式2.单例模式定义在当前进程中,通过单例模式创建的类有且只有一个实例。使用场景常用却耗时多或者消耗空间多的工具类,如线程池、数据库连接池、httpclient、restTemplate连接等等。保存的共享数据,如redis、session等,其实也是工具类。计数器特点一个JVM中,用单例模式创建出的对象,只有一个实例。构造器是私有的,外部类无法创建实例。没有public 的 set()方法,外部类无法调用set()创建实例。有个public 的 get()方法原创 2021-11-26 17:10:43 · 219 阅读 · 0 评论 -
分布式事务相关概念及常见解决方案
文章目录什么是分布式?为什么要考虑分布式事务分布式事务的解决方案1、2PC(Two-phase commit protocol)2、3PC3、TCC4、本地消息表5、MQ消息事务6、最大努力通知7、seata总结什么是分布式?说一说我个人的理解,分布式是一种概念,化繁为简、化整为零,把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分。这边我们主要考虑计算机软件的分布式,也就是微服务概念,在我看来微服务就是把一个功能复杂、庞大的系统按照一定合理的规则,将功能模块进行拆分,分成很多小的系统,然后需要原创 2021-07-05 09:48:59 · 167 阅读 · 0 评论 -
发布本地jar包到maven Nexus私服
一、release版本(发布版)这个在界面上就可以发布了,很简单二、发布其他版本以snapshot(快照版)为例,nexus3以后的web端不提供直接上传快照的页面。mvn deploy:deploy-file -DgroupId=com.aaa -DartifactId=bbb -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar -Dfile=bbb-0.0.1-SNAPSHOT.jar -Durl=http://192.168.1.189:8081/reposit原创 2021-04-21 11:22:27 · 165 阅读 · 0 评论 -
JVM面试题
10个经典又容易被人疏忽的JVM面试题对象一定分配在堆中吗?有没有了解逃逸分析技术?「对象一定分配在堆中吗?」 不一定的,JVM通过「逃逸分析」,那些逃不出方法的对象会在栈上分配。「什么是逃逸分析?」逃逸分析(Escape Analysis),是一种可以有效减少Java 程序中同步负载和内存堆分配压力的跨函数全局数据流分析算法。通过逃逸分析,Java Hotspot编译器能够分析出一个新的对象的引用的使用范围,从而决定是否要将这个对象分配到堆上。❝逃逸分析是指分析指针动态范围的方法,它同编译转载 2021-04-14 09:50:04 · 581 阅读 · 0 评论 -
get请求参数带“+”等特殊字符无法正确识别
+号会被识别成空格JavaScript: window.self.location="index.jsp?data="+encodeURIComponent(encodeURIComponent(url));java: searchtext=java.net.URLDecoder.decode(data,"UTF-8"); 另外还有一种方法是JavaScript进行一次编码,后台java处理时换种想法就好了:java代码: String s = new Str原创 2021-03-31 10:23:41 · 1752 阅读 · 0 评论 -
Springboot如何在项目启动时自动运行自定义方法,亲测有效
项目需求:项目启动时初始化sql,后期修改sql,都可以直接修改sql文件,重启项目 自启动生效。网上有很多方式,我基本上一一试过了,在这里推荐两种,亲测绝对有效方法一实现ApplicationRunner接口并实现里面的run方法,并将该类通过@Component 注入到spring里,如下所示:package com.springboot.demo.init;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org原创 2020-12-22 14:53:51 · 1281 阅读 · 0 评论 -
震惊!!!用了这些方法,他的代码里再也没有if-else了
前言代码中如果if-else比较多,阅读起来比较困难,维护起来也比较困难,很容易出bug,接下来,本文将介绍优化if-else代码的八种方案。优化方案一:提前return,去除不必要的else如果if-else代码块包含return语句,可以考虑通过提前return,把多余else干掉,使代码更加优雅。优化前:if(condition){//doSomething}else{ return;}优化后:if(!condition){ return;}//doSomethin转载 2020-11-25 11:49:03 · 1754 阅读 · 0 评论 -
观察者模式 vs 发布订阅模式
《Head First设计模式》中有句话:Publishers + Subscribers = Observer Pattern.即 出版者 + 订阅者 = 观察者模式。那是不是 观察者模式和发布订阅模式就是一样的呢?观察者模式所谓观察者模式,其实就是为了实现松耦合(loosely coupled)。用《Head First设计模式》里的气象站为例子,每当气象测量数据有更新,changed()方法就会被调用,于是我们可以在changed()方法里面,更新气象仪器上的数据,比如温度、气压等等。但是原创 2020-10-14 11:08:49 · 163 阅读 · 0 评论 -
响应式编程 rx.js redux
响应式编程是一种通过异步和数据流来构建事物关系的编程模型。是基于观察者模式的js的实现。理解如果要直接理解,可能比较抽象,但我们可以引用百度百科的例子;例如:a = b + c; 这句代码将b+c的值赋给a,而之后如果b和c的值改变了不会影响到a,然而,对于响应式编程,之后b和c的值的改变也动态影响着a,意味着a会随着b和c的变化而变化。响应式编程过程中,一般有以下几个组件,Observable/Operator/Subscriber;对应到代码中就是不同类。这个流程,可以简单的理解为:Observ原创 2020-10-14 09:36:22 · 391 阅读 · 0 评论 -
基于java处理ofd格式文件
一、ofd格式介绍国家发布过一份关于ofd编码格式的资料,本来我想传上去的发现资源重复了,你们可以找找看,没有的话留个邮箱,我看到会发给你们的ofd本质上其实是一个压缩文件,咱们把他当做一个压缩包来处理就好了,思路是先解压,对解压后的文件进行解析处理,解压后是xml文件,java有很多处理xml的类,这里我推荐dom4j,原因是相对来说功能全、速度快,处理完后再进行压缩,保存为ofd格式即可ofd的阅读器我也有,只是是公司的,不方便共享了,大家可以找网上在线阅读器二、xml处理工具类import原创 2020-09-17 16:23:18 · 8705 阅读 · 17 评论 -
word转html在前端页面显示
近日碰到该需求,遇坑记录于此,望能帮助到其他伙伴。word转HTML时图片的处理我分为两种解决方案:1、图片保存在本地文件夹。2、转为base64。以下分doc与docx,不同格式处理方法略有不同。前端我用的是vue,直接通过“v-html”显示html文本一、图片保存本地坑1大多数浏览器都不能以形如(file:///C://xxx)的形式直接访问本地文件,故需要在后台配置文件中配置虚拟路径映射到本地盘符。@Configurationpublic class ResourcesConfig原创 2020-08-26 14:54:55 · 5005 阅读 · 2 评论 -
后端返回流,前端vue展示各种类型文件(word\pdf\图片)
这周有个需求做个文档平台,出于安全与性能考虑,我选择将文件前后端已流的形式交互,而不是直接访问地址。技术栈:springboot 2.0 + vue用到的开源技术有:pdf.js(展示pdf) 、 editor-ui(在线展示、编辑word)具体用法有很多帖子,可以去参考一下,作者们的git上也写的很详细了,我就不抢人家功劳了。这里我贴一个比较深的坑: getObjectURL(file) { let url = null; if (window.c原创 2020-08-22 18:04:00 · 5527 阅读 · 8 评论 -
lambda表达式的使用
lambda表达式通常是用来实现类或接口的,优点是无须声明,也无须重写了,但是有个限制就是这个接口中只能有一个方法,因为从lambda的表达式上我们就可以看出端倪了,直接调用类,传参数,连方法名都省了,如果不止一个方法,毫无疑问会产生冲突无法识别。java lambda表达式的优缺点:优点:代码简洁,开发迅速方便函数式编程非常容易进行并行计算java引入lambda,改善了集合操作(引入Stream API)缺点:代码可读性变差2 .使得语言学习曲线陡峭,学习难度提升性能方面,在非并行原创 2020-06-10 18:01:28 · 272 阅读 · 0 评论 -
基于Html5 的canvas容器实现定制印章(圆形、椭圆、方形)
出于业务需求,最近需要开发个基于web页面的印章制作功能。经过各大论坛、网站、github的一番学习后,我发现圆形、椭圆的例子有很多,但是方形印章的源码却很少,甚至我都没找到。于是只能自己造轮子了,我主要是用js实现的,很少写前端,也不熟js,只能需要用啥上网找语法,先上个v1.0吧,后期完善好再更新。由于全程基于Notepad++写的,所以格式很乱,有没有朋友推荐款idea。主要优势:1. 界面化,可以直观定制,可直接下载原图2. html文件,无需插件、idea,直接浏览器运行3. 实现圆形印原创 2020-06-10 17:24:55 · 2585 阅读 · 2 评论 -
java访问第三方接口的HTTP工具类 获取Token、访问Post、GET、PUT请求等
util.javapublic class HttpClientUtils { private static final String CHARSET = "utf-8"; private static final String CONTENT_TYPE_TEXT_JSON = "text/json"; /** * Header参数 */ private static final String Authorization = "Authorizatio原创 2020-05-11 13:32:30 · 4911 阅读 · 0 评论 -
ResultUtil 返回结果统一格式处理
作为一个好的接口,肯定需要一个美观的统一返回格式。那么,这是怎么做到的呢?创建Result工具类,编写接口调用成功失败返回方法,通常code、message、data这三部分组成为了更规范、美观,让自己的项目更有逼格,code通常用枚举代替直接赋值。当然了,从技术层面这也是有必要性的,通常我们项目编译成class文件的话是看不到直接赋值的,如果定义成枚举,那别人可以通过查看枚举来看到具体内...原创 2020-04-21 09:30:39 · 4134 阅读 · 0 评论 -
Springboot利用Security+JWT实现token权限认证+用户角色认证
首先创建springboot项目,不多说。Step 1 引入依赖,如下。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></dependency>...原创 2020-04-19 15:16:15 · 1941 阅读 · 1 评论 -
mybatis逆向工程生成service代码的实现
关于mybatis逆向工程的介绍我就不重复赘述了,相关资料网上有很多。看了网上很多逆向工程的文章,但是很多都只是生成简单的mvc框架,没有具体service的代码生成。故在我学习整理诸多前人的经验后,增加了具体的增删改查业务实现代码。Generator.javaimport java.io.File;import java.io.IOException;import java.util....原创 2020-04-19 14:35:44 · 1921 阅读 · 4 评论 -
Springboot项目启动时cloud not find bean错误
前两天碰到个很恶心的错,启动时找不到mapper、service的类,因为springboot是扫描包,生成bean的机制,所以最常见的错误是找不到的这个类不在启动类的同级或者它的下级包,但我是在它的同级包下的,就比较迷惑。上述这个解决方法是加个@Mapper注解,@MapperScan({“package”}),如果需要包含多个包名,用逗号隔开即可。另一个常见引发这种错误的原因可能是依赖冲突...原创 2020-04-18 19:58:31 · 2046 阅读 · 0 评论 -
关于引入依赖报错的问题Inspects a Maven model for resolution problem
近日想用Swagger生成接口文档,导入依赖的时候发现如下错误。一开始我搜索Inspects a Maven model for resolution problem这个错误的解决方案,试了几种都是不行最后解决方案是把本地仓库的包都清空,重新导入。...原创 2020-04-10 13:04:22 · 320 阅读 · 0 评论 -
最简单的计算24点
跟女朋友玩24点,碰到两个人都算不出来,又不知道到底能不能算怎么办呢,于是就自己写个代码看看是否有结果。废话不多说,直接上代码package com.practice;import java.util.*;public class Main { public static int operate(int j,int k,String l) { if(l=="+"...原创 2020-02-09 17:04:31 · 538 阅读 · 0 评论 -
浅谈Java对象在内存中的结构和锁状态升级过程
java对象在堆中主要分为四部分结构, 分别是对象头MarkWord, 对象指针ClassWord, 实例对象(如果对象是数组的话, 这里需要再分成两部分, 多了一个存储数组长度的数据位), 8字节对齐位. 下面以64位的JVM为例, 分析内存中对象的各个结构分别存储什么信息和作用.Mark WordMark Word用来存储对象的 identity hash code, Thread ID...原创 2019-12-25 15:59:29 · 349 阅读 · 5 评论 -
这几个月做了好几个管理系统,我突然灵光一动想到假如给地狱做个管理系统,该怎么做呢
这个问题让我对地狱数据库系统(Hell-DBMS )进行了几点小思考,开个脑洞。生死薄技术上如何实现?广大生灵在生死薄中的唯一标记是什么?阴间数据库是什么样一个数据库?首先,地狱必须有数据库,数据量太大了每个生灵都要有记录,且必须是实时记录,要进行数据分析。想像一下各种生灵,万物有灵,大大小小,连蝼蚁飞蛾也是命,从单细胞到现代社会的数据应该有多大。数据库的话每个生灵就要有唯一标记。实名反...原创 2019-12-18 10:47:34 · 248 阅读 · 0 评论 -
两个int型的数相除,结果如果小于1,返回0
public static void main(String[] args) {double a = 1;double b = 16;System.out.println(a/b);int c = 1;int d = 16;System.out.println(c/d);}int型相除结果取整数,四舍五入原创 2019-12-06 16:35:34 · 1480 阅读 · 0 评论 -
数据库几个涉及到时间的函数用法及区别
MySQL中有5个函数需要计算当前时间的值:NOW.返回时间,格式如:2012-09-23 06:48:28CURDATE,返回时间的日期,格式如:2012-09-23CURTIME,返回时间,格式如:06:48:28UNIX_TIMESTAMP,返回时间整数戳,如:1348408108SYSDATE,返回时间,格式和time()函数返回时间一样,但是有区别。除了本身定义所返回的区别以...原创 2019-12-03 15:03:13 · 367 阅读 · 0 评论 -
mysql获取当前时间不对
直接在数据库运行下列命令set global time_zone = ‘+08:00’;set time_zone = ‘+08:00’;原创 2019-12-03 14:58:00 · 642 阅读 · 0 评论 -
上传文件
public String fileUpload(MultipartFile file) { if (file.isEmpty()) { throw new BizException(UserInfoBizEnum.AVATAR_NULL); } //UUID重命名,避免重复 String fileName = file.getOriginalFi...原创 2019-12-03 14:56:35 · 283 阅读 · 1 评论 -
springboot框架小白写法
entity\request\response——>Support——>ControllerController:@RestController@RequestMapping("/admin/exam/baseUserInfo")public class BaseUserInfoAdminController {@Autowiredprivate BaseUserInfoA...原创 2019-12-03 14:54:56 · 343 阅读 · 0 评论 -
导入excel的工具类
utils:import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import cn.net.ltech.exam.module.quest.entity.Ex...原创 2019-12-03 14:54:02 · 184 阅读 · 0 评论 -
Base64加密解密
import java.nio.charset.StandardCharsets;import java.util.Base64;public class test { public static void main(String[] args) { final String demoStr = "123"; final byte[] strByte ...原创 2019-12-03 14:52:13 · 211 阅读 · 0 评论 -
限制用户账号登录唯一
限制一个账号只能有一个用户登录1、最简单的方法就是在数据库设置一个登录状态,假如登录时置为1,退出登录时置为0,每次登录退出时更新状态即可存在的bug:断电、强制关闭浏览器,状态不会改变,影响下次登录解决方案:几分钟后用户无操作,自动退出,更新状态。...原创 2019-11-25 10:57:15 · 1066 阅读 · 0 评论 -
最简单的判断两个无序字符串是否相等
public static boolean isTrue(String answer,String myAnswer){/**我这边场景是用来判断两个答案是否相等String answer = “A,B,C”;String myAnswer = “A,C,B”;**///根据 “,” 分割字符串,存进数组List dl = Arrays.asList(answer.split(",...原创 2019-11-23 16:11:08 · 790 阅读 · 0 评论 -
MyBatis-Plus
工作用到了MyBatis-plus,师傅叫我了解一下,就在这记记笔记给自己看了。目标:从三个方面去看,边看边扩展、记录,大家一起学习。What?Why?How?whatMybatis-plus顾名思义,Mybatis的plus,加强版。然而,啥是mybatis呢??这可难为我了,于是我又去恶补了一下Mybatis了。Mybatis,就是个连接数据库的东西,作用就像我们在学校里学的jdbc...原创 2019-11-19 17:17:56 · 217 阅读 · 0 评论 -
自定义SQL语句
原创 2019-11-19 17:16:48 · 706 阅读 · 0 评论 -
限制两位有效小数
“this.value=this.value.toString().match(/^\d+(?:.\d{0,2})?/)”原创 2019-10-29 11:59:22 · 305 阅读 · 0 评论 -
GET和POST两种基本请求方法的区别
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。当你在面试中被问到这个问题,你的内心充满了自信和喜悦。你轻轻松松的给出了一个“标准答案”...原创 2019-08-29 09:05:37 · 149 阅读 · 0 评论