- 博客(77)
- 收藏
- 关注
转载 那些惊艳的算法— 时间轮算法
从定时任务说起自然界中定时任务无处不在,太阳每天东升西落,候鸟的迁徙,树木的年轮,人们每天按时上班,每个月按时发工资、交房租,四季轮换,潮涨潮落,等等,从某种意义上说,都可以认为是定时任务。大概很少有人想过,这些“定时”是怎样做到的。当然,计算机领域的同学们可能对此比较熟悉,毕竟工作中的定时任务也是无处不在的:每天凌晨更新一波数据库,每天9点发一波邮件,每隔10秒钟抢一次火车票。。。至于怎么实现的?很简单啊,操作系统的crontab,spring框架的quartz,实在不行Java自带的Schedul
2021-11-11 15:30:09
474
原创 Redis笔记
Redis执行命令执行过程执行过程:发送指令-> 执行指令->返回结果集执行命令:单线程执行,所有的命令都存储到队列中按顺序执行单线程块的原因:纯内存访问,单线程避免了多线程上下文切换和资源竞争产生的消耗RESP 协议简单:Redis底层协议RESP详解存在的问题:一旦某个执行执行时间过长,后面的命令就会进入阻塞状态...
2021-10-06 18:01:55
304
1
原创 在mybatis中,根据使用的数据库不同,执行不同的sql语句
在我们的项目中,使用的是SqlServer数据库,由于需要多地部署,即A地点部署一套,B地点部署一套,C地点部署一套,部署的项目之间是相互独立的。由于最近领导说以后部署的项目要使用mysql数据库,那么问题就来了,以前的项目是sqlServer 的,现在还要兼容mysql,维护两套mapper有点难受,而且大部分sql其实都是通用的,只是在一些函数和方言上有所区别,所以我刚开始想将当前的数据库类型写在配置文件中,通过mybatis 的if 标签进行判断当前的数据库类型,再执行相应的语句。<selec
2020-11-27 14:07:25
4131
1
原创 java单例模式解析
1. 前言单例模式是项目中经常使用的一种设计模式,其特点是整个项目中,只会有一个实例运行。想要创建一个单实例对象,需要以下几个条件: 1)单例类只能有一个实例。2)单例类必须自己创建自己的唯一实例。3)单例类必须给所有其他对象提供这一实例。为了不让外部可以随意的创建对象实例,我们需要私有化构造方法,然后从类的内部进行对象的实例化。对象实例化之后,我们可以通过静态变量来存储这个对象,创建单例模式有两种方式,一种是饿汉式,一种是懒汉式,下面会针对这两种方式进行讲解2.饿汉式饿汉式顾名思义,实例
2020-11-17 18:22:42
242
原创 使用SpringBoot发送邮件
在pom中引入用于发送邮件的starter <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>在application.yml(或者application.properti.
2020-11-04 15:47:45
765
转载 Mustache语法中实现if-else
1.{{#prop}}{{/prop}}标签:这对标签的作用非常强大,可以同时完成if-else和for-each以及动态渲染的模板功能。在这对标签之间,可以定义其它模板内容,嵌套所有标签。<ul class="dropdown-menu" role="menu"> <shiro:hasPermission name="expapp:experiment:experiment:getRealTimeGraph"> {{#graphBtn}} .
2020-08-26 11:50:34
1220
原创 解决后台管理系统登录超时后,登录页面被嵌套在数据区的问题
一般后台管理系统分为三个部分,左边的菜单栏,顶部的标题栏,和中间的数据展示区域。如图当经过长时间无操作,或者session到期后,需要重新登录。这时候我们并不知道session已经失效了,当我们点击菜单的时候,就会跳转到登录页面。不过很不巧的是,登录页面会显示在数据区。如果这时候你在进行登录,那么就会形成一个嵌套的效果。原因是中间的数据区是一个iframe,当你请求一个数据的时候,被安全框架拦截了下来,跳转到了登录页,因为是在iframe内,座椅登录页也就展示在了iframe里面。不过这显然不
2020-07-16 17:12:09
1478
1
原创 JavaScript 中的 truthy(真值)
在JavaScript中,truthy(真值)指的是在布尔值的上下文中,转换后的值为真的值。所有值都是真值,除非它被定义为假植(false,0,"",null,undefined 和NaN之外,其他的值都为真值)。JavaScript 在布尔值上下文中使用强制类型转换(coercion)。JavaScript 中的真值示例如下(将被转换为 true,if 后的代码段将被执行):if (true)if ({})if ([])if (42)if ("foo")if (new Date().
2020-07-03 16:09:28
769
原创 Vue + Vue-router + Element-ui 搭建一个非常简单的dashboard demo
Vue + Vue-router + Element-ui 搭建一个非常简单的dashboard demo 转载连接https://segmentfault.com/a/1190000012015667#item-1另附带设置路由懒加载代码时出现Module build failed: SyntaxError: Unexpected token问题的解决方案路由懒加载代码在启动的过程中,component: () => import(`@/comp...
2020-06-27 21:40:24
1552
1
原创 VUE 错误 : Expected indentation of 4 spaces but found 6 和 Missing space before function parentheses
出现这个问题的原因是代码的缩进没有对其,例如上图代码看上去没有问题,但是会报下面的错误如果改成这样,把前面的缩进去掉,然后括号中间添加空格,就不会报错。但是这样很恶心有没有?使用代码整理功能一个代码整理,所有的代码都异常了,很恶心有没有?解决办法是,在.eslintrc.js的rules中添加如下代码,关闭缩进检查和规则校检。...
2020-06-27 13:38:25
1344
1
转载 关于Druid重试机制的问题及解决方案
在昨天项目开发中,使用了Druid作为数据库连接池,当数据源密码错误时,报出了以下错误:2019-04-09 10:09:36 [Druid-ConnectionPool-Create-2053591126] [ com.alibaba.druid.pool.DruidDataSource ] [ 53 ] [ ERROR ] create connection SQLException, url: jdbc:mysql://*.*.*.*:3306/*?characterEncoding=utf-
2020-05-13 15:00:52
2862
1
原创 MyBatis 配置多数据源实现多个数据库动态切换 V2.0
原来写过一篇关于SSM多数据源配置的博客,为什么今天又要写一篇呢?当然是因为需求的变更(蹭访问量),原来的博客中,多个数据源是配置在xml文件中的,每一个数据源都对应了一个会话管理器dataSource,这样就把数据源的数量给订死了,你有几个会话管理器就有几个数据源,不太方便,所以这次想达到一个动态添加删除数据源的效果.原来的博文请见https://blog.youkuaiyun.com/qq_37612755/article/details/82908700写的反正也不咋地1.创建存放数据源信息的实体类..
2020-05-13 14:50:31
1320
1
转载 计算机网络体系结构
计算机网络体系结构开放系统互连参考模型 (Open System Interconnect 简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。其目的是为异种计算机互连提供一个共同的基础和标准框架,并为保持相关标准的一致性和兼容性提供共同的参考。这里所说的开放系统,实质上指的是遵循OSI参考模...
2020-05-04 15:23:25
651
原创 Lambda表达式
慕课网Lambda笔记第一章 Java为什么引入 Lmabda表达式1.1 什么是Lambda表达式Lambda表达式也被成为箭头函数、匿名函数、闭包Lambda表达式体现的是轻量级函数式编程思想‘->’符号是Lambda表达式的核心符号,符号左侧是操作参数,符号右侧是操作表达式1.2 Model Code as DataModel Code as Data,编码及数据...
2020-05-03 21:18:10
4755
1
原创 mysql 连接出错提示 :Could not create connection to database server.
数据库版本是 8.0,刚把mysql 错误过多导致连接中断的问题解决,紧接着就是这个错.无法连接到服务.通过谷歌搜索,发现8.0以后的数据库驱动改为了com.mysql.cj.jdbc.Driver,原来的数据库驱动只适合8.0一下的版本,所以导致无法连接(估计错误过多连接中断的那个错误就是驱动写错了).解决办法:修改数据库驱动为 com.mysql.cj.jdbc.Driver引入新的驱动...
2020-05-03 18:40:07
1992
2
转载 MySQL 连接出错 mysqladmin flush-hosts 解决方法
最近新项目升级了mysql版本到8.0,顺便也研究了一下,一奈何天不遂人愿,没几个坑是不可能的,好不容易安装上了,项目启动的时候开始报错 Host is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’这个的意思是当一个ip连续多次出现错误后,mysql就会 中断这个ip的连接,抛出m...
2020-05-03 18:34:57
8624
原创 项目启动报错 XXXXmybatis dialect error.
今天新开了一个项目,把原来的项目拷贝了一份,改了下数据库信息,启动后报如下错误拿出一条全的看的清楚点2020-04-23 16:47:39,522 WARN [springframework.beans.factory.support.DefaultListableBeanFactory] - Bean creation exception on FactoryBean type che...
2020-04-23 16:57:03
2559
原创 Sql server如果存在就更新,不存在就插入
Sql不同于mysql那样,有单独的一个命令来执行上述操作,比如在Mysql中就可以这样写REPLACE INTO demo_in(a,b,c) VALUES(123, 2, 4);在Mysql中这是一个原子操作,如果这条数据存在,就先删除在插入,不存在就直接插入.要注意的是需要有一个唯一的主键支持,如果没有主键,这条语句和 INTERT INTO 没有区别,会一直插入数据.那么在SqlSe...
2020-04-13 17:17:24
16260
3
转载 去掉IntelliJ IDEA 中 mybatis 对应的 xml 文件警告
IntelliJ IDEA 打开 mybatis 的 xml 文件时,对应的 xml 文件中 sql 语句背景色总是有黄色或绿色的背景色。提示(红圈处)上已经说明,需要配置在 IDEA 中配置 data source (通常我们很少使用 IDE 去查看数据库内容,而是使用其他专门的 DB 工具)。当然,如果你选择配置 data source 也可以,纯属个人习惯)Prefernces...
2020-03-30 15:36:32
212
转载 《后端架构师技术图谱》
https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%E9%98%9F%E5%88%97
2020-03-24 16:55:08
336
转载 JS AJAX传递List数组到后台(对象)
今天在写代码的时候,碰到的问题,百度了一下,发现原来AJAX传递List数据是可以的,之前还一直用JSON序列化(new Array()数组设置)进行传值的。var _list = {}; //等价于 var _list=new Object(); for (var i = 0; i < 10; i++) { _list["后台controller中的接收名字[" + ...
2020-03-21 17:52:11
3628
原创 使用java 8 提取出list中bean的某一属性
package com.demo; import java.util.ArrayList;import java.util.List;import java.util.stream.Collectors; public class Test6 { public static void main(String[] args) { List<Student> stu...
2020-02-19 21:50:40
1557
原创 JAVA中 强引用、 软引用、 虚引用、 弱引用的概念
在JDK1.2以前,Java中引用的定义很传统,如果一个refernece类型的数据中,存储的数值代表了另一块内存的起始地址,就称这块内存代表着一个引用。这种定义很纯粹,但是太过于狭隘,一个对象在这种定义下只有被引用和没有引用两种状态,对于如何描述一些“食之无味,弃之可惜”的对象就显得无能为力。我们希望能描述这样一种对象,当内存空间足够时,则保留在当前内存中,当内存资源经过垃圾收集后,内存资源依旧...
2020-02-13 22:53:16
105
原创 论Mybaits的坑之statementType
今天如往常一样写SQL语句,由于懒癌发作就直接复制了上一个SQL语句改吧改吧就写完。结果在运行的时候蒙逼了,一直提示 "?"处有语法问题 就像这个亚子当时我是一脸蒙蔽,我是谁?我在哪?我在干什么?首先考虑了sql有问题,然后拿到Navicat 上运行一下,结果啥事没有。。。我在那大眼瞪小眼看了五分钟后,发现了一个东西,那就是这个玩意,起初因为是复制的,所以也没看这玩意是干嘛的,...
2020-01-19 16:12:39
667
原创 Sql Server 查询被锁表,并解除锁定
查询被锁住的表select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran_locks where resource_type='OBJECT'查询结果,前面是锁的进程id,后面是被锁的表名解除表锁定:将spid的值改为要杀死的进程...
2020-01-16 15:43:15
4589
1
原创 关于使用定时任务定时备份Sql Server 数据库的坑
公司原来的Sql Service 是在windows 上的,现在要移植到Linux 上边,这时候就涉及到一个自动备份的问题。既然是要使用自动备份,当然首先要写一个备份脚本啦#!/bin/sh#进入要放置备份的页面cd /var/opt/mssql/data/#获取当前时间年月日 YYYYmmdddate=`date +"%Y%m%d"`#设置日志文件名称backupLog='...
2020-01-09 11:42:08
656
1
转载 linux下crontab执行shell定时备份sqlserver数据库
1、查看crontab执行历史记录tail -n 100 -f /var/log/cron2、添加crontab定时任务crontab -e添加定时任务,每天23点0分执行0 23 * * * /usr/local/mssqlbackup.sh3、查看crontab定时任务crontab -l注:crontab里面是没环境变量,如果crontab历史记录中有shell有执行记录,但...
2020-01-08 17:58:06
239
原创 java运行时的数据区域
Java虚拟机在执行Java程序的过程中会把它所有管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范(Java SE 7 版)》的规定,Java虚拟机所管理的内存将会包括一下几个运行时数据区域。程序计数器程序计数器(Program Counter Re...
2020-01-07 17:00:50
187
转载 Linux下调整根目录和home目录的空间大小教程
当安装完 Linux 操作系统,发现磁盘分区大小错误,或者后期使用过程发现 /home 还剩余很多空间,/ 下空间不足,需要将 /home 下空间重新分配给 /目录下,方法如下:1、查看分区空间和格式[root@mongodb-1 ~]# df -hT文件系统 类型 容量 已用 可用 已用% 挂载点/dev/mapper/centos-root...
2020-01-02 19:36:44
29128
4
原创 麒麟Linux系统安装过程
最近公司要将原来的Sql Service数据库从Windows迁移到Linux上边,给了一个国产操作系统。准备先试试水,记录一下虚拟机安装的过程,整个过程比较基础。大神就不用看了。话不多说开始首先创建一个虚拟机打开VMware,在首页点击【新建虚拟机】这里使用了【典型】安装方式点击下一步,选择稍后安装操作系统选择客户机操作系统,这版操作系统是基于Red Hat的,所以选择Red ...
2020-01-02 10:03:33
10969
原创 java.utils.concurrent 新类库中的构件(四)PriorityBlockingQueue
java.utils.concurrent 新类库中的构件(三)PriorityBlockingQueue这是一个很基础的优先级队列,它具有可阻塞的读取操作。下面是一个实例,其中在优先级队列中的对象是按照优先级顺序从队列中出现的任务。PrioritizedTask被赋予了一个优先级数字,以此来提供这种顺序package concurrency;//: concurrency/PriorityB...
2019-12-26 19:28:03
170
原创 java.utils.concurrent 新类库中的构件(三)DelayQueue
java.utils.concurrent 新类库中的构件(三)DelayQueue这是一个无界的BlockingQueue,用于放置实现了Delayed接口的对象,其中的对象只能在其到期时才能从队列中取走。这种队列是有序的,即队头对象的延迟到期的时间最长。如果没有任何延迟到期,那么就不会有任何头元素,并且poll()将返回null(正因为这样,你不能将null放置到这种队列中)。下面是一个实...
2019-12-26 18:22:10
175
原创 java.utils.concurrent 新类库中的构件(二) CycliicBarrier
java.utils.concurrent 新类库中的构件(一) CycliicBarrierCycliicBarrier适用于这样的情况:你希望创建一组任务,它们并行执行工作,然后再进行下一个步骤之前等待,直至所有的任务都完成(看起来有点像join())。它使得所有的并行任务都将在栅栏处列队,因此可以一致的向前移动。这非常像CountDownLatch,只是CountDownLatch只是触发...
2019-12-20 13:35:44
136
原创 java.utils.concurrent 新类库中的构件(一) CountDownLatch
CountDownLatch它被用来同步一个或者多个任务,强制他们等待由其他任务执行的一组操作完成。 你可以向CountDownLatch对象设置一个初始计数值,任何在这个对象上调用wait()的方法都将阻塞,直到这个计数值达到0。其他任务在结束其工作时,可以在该对象上调用countDown()来减小这个计数值。CountDownLatch被设计为只出发一次,计数值不能被重置。...
2019-12-20 11:40:42
169
转载 深入springMVC------文件上传源码解析(上篇)
最近在项目中,使用springmvc 进行上传文件时,出现了一个问题:org.springframework.web.multipart.MultipartException: The current request is not a multipart request以上堆栈信息省略。乍看一下,没啥值得讨论的地方,就是说当前这个请求不是一个multipart request,也就是说...
2019-12-16 13:21:48
128
原创 shior 前后端分离项目Session失效后返回json字符串
最近公司在做APP项目,属于前后端分离,使用ajax请求后台传递JSON数据,但是现在有一个问题,shior默认的配置是session过期后直接跳转到Ligin请求,最后返回Login页面,但是前后端分离的项目都是通过ajax接受的,跳转也是由前台控制,这就导致了PC端与APP需要返回的数据类型不一致的问题。通过百度,找到一种可行的方案,贴出来以供参考。通过继承 org.apache.shi...
2019-12-09 15:37:20
978
原创 使用Spring + websocket 的方式向前台推送数据
最近遇到一个需求,首页的待办任务要求实时刷新。刚开始的时候再前端写了一个定时器轮训查询。但是过了一段时间之后觉得太LOW逼了,正好想到了websocket,准备试验一下,废话不说,上代码:(注:这里使用maven方式添加 手动添加的同学请自行下载相应jar包放到lib目录,本文使用的版本为4.3.5.RELEASE) <!-- spring websocket-->...
2019-11-15 14:56:20
744
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人