- 博客(74)
- 资源 (3)
- 收藏
- 关注
原创 【数据库系统原理】1、初识数据库
文章目录一、什么是数据库1、库的概念2、数据库3、数据库管理系统4、关系型数据库关系型数据库的相关概念5、非关系型数据库6、访问数据库的方式1、JDBC2、ORM框架一、什么是数据库1、库的概念指的是集中存放大量同类事物的容器,比如水库,粮库等2、数据库Database (DB)数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库更强调对数据的有效组织和管理3、数据库管理系统Database Manageme
2021-11-21 17:00:01
798
原创 依赖注入(DI)和控制翻转(IOC)的区别
最近看一些文章发现IOC和DI总有一些混淆,今天来梳理下两者之间的不同简单的讲,依赖注入是解决对象之间依赖关系用的,而IOC解决的是对象的创建,IOC把对象交给容器创建,可以避免对象在程序中写死看个例子:现在有两个类:A和BA中有一个方法用到了Bpublic class A{ public void methodA(){ B b = ...//创建b的实例 b.methodB(); } } 要使用B 类A必...
2020-11-23 10:51:23
497
原创 『重学多线程』 01初识多线程
什么是多线程维基百科对于多线程的定义为:多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理(Chip-level multithreading)或同时多线程(Simultaneous multithreading)处理器。要理解多线程 首先要理解什么是多任务现实中有很多多任务的场景,例如:吃饭
2020-11-22 17:03:23
274
原创 Google EventBus入门
文章目录简介maven依赖内部方法注册发布执行结果简介Guava在guava-libraries中为我们提供了事件总线EventBus库,它是事件发布订阅模式的实现,让我们能在领域驱动设计(DDD)中以事件的弱引用本质对我们的模块和领域边界很好的解耦设计。首先Guava为我们提供了同步事件EventBus和异步实现AsyncEventBus两个事件总线,他们都不是单例的,官方理由是并不想我们我们的使用方式。当然如果我们想其为单例,我们可以很容易封装它,一个单例模式保证只创建一个实例就对了。maven
2020-07-21 21:00:23
656
原创 matlab2009a安装教程(附问题解决方法)
文章目录下载地址安装装载下载地址ed2k://|file|[矩陣實驗室].Mathworks.Matlab.R2009a.ISOTBE.iso|4349970432|425C2D2F0A9E7995BA0069EEE8810BE4|h=FVZD4HD5TG CDL2F5C44KI4XBKBZV7YS6|安装装载由于安装包下载完之后是ios格式,以win10电脑为例直接点击右键 装载即可...
2020-04-01 16:12:13
11898
6
原创 Jenkins是什么?
一. CI/CD介绍互联网软件的开发和发布,已经形成了一套标准流程,假如把开发工作流程分为以下几个阶段:编码 --> 构建 --> 集成 --> 测试 --> 交付 --> 部署可以发现持续集成Continuous Integration 持续交付Continuous Delivery 和持续部署 Continuous Deployment有不同的软件...
2019-09-11 15:44:25
386
原创 Spring模块--Core核心模块详解-IOC创建对象
一.六大模块Spring Core spring的核心功能: IOC容器, 解决对象创建及依赖关系 Spring Web Spring对web模块的支持。 可以与struts整合,让struts的action创建交给spring spring mvc模式 Spring DAO Spring 对jdbc操作的支持 【JdbcTemplate模板工具类】 Spring O...
2019-08-12 13:52:54
529
原创 一篇文章读懂Spring IOC、AOP
Spring的产生创建Spring的目的就是用来替代更加重量级的的企业级Java技术简化Java的开发基于POJO轻量级和最小侵入式开发通过依赖注入和面向接口实现松耦合基于切面和惯例进行声明式编程通过切面和模板减少样板式代码侵入式概念首先,Spring是一种非侵入式的框架,那么什么是侵入式呢侵入式对于EJB、Struts2等一些传统的框架,通常是要实现特定的接口...
2019-08-08 08:22:24
261
原创 【剑指offer】二进制中1的个数
题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。解题思路:看到这题的第一反应其实是直接调用java的方法将整数变成二进制字符串,即调用Integer.toBinaryString(),然后调用toCharArray(),这样就讲一个整数变成一个二进制数组,通过遍历二进制数组完成计数。但是这种题一般应该是通过位运算来解决的,并且速度上应该更快,考察的知识点应该也...
2019-08-06 17:31:56
162
原创 【剑指offer】反转链表
题目描述:输入一个链表,反转链表后,输出新链表的表头。思路分析:当前节点为head,反转链表应该将当前节点的下个节点next指向当前节点,而当前节点的next则为pre,但是如果直接将下个节点的next指针指向当前节点则会使后面的链表断掉,所以应该记录当前节点的下一个节点。依次反复这个操作。。。AC代码:/*public class ListNode { int v...
2019-08-06 17:14:44
145
原创 浅析Arraylist和LinkedList
ArrayList和LinkedList已经是老生常谈的问题了,由于太久之前看的源码,觉得最近有点不清晰了,就再次看了一遍源码,现在来记录一下区别与联系,以及一点底层实现。简述首先ArrayList底层是通过数组实现的,而LinkedList则是通过双向链表实现的,他们都是线程不安全的都实现了List接口,规定了几个必须实现的方法add,contains,indexof,remove一.A...
2019-08-06 16:31:37
202
原创 【剑指offer】跳台阶
题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。题目解析:当只有一节台阶的时候由于每次只能跳一级或者两级,则只有一种方式,即f(1) = 1;如果有两个台阶则有f(2) = 2;如果有n个台阶,第一次跳了1节,则剩下的方式为f(n-1),如果第一次跳了2节,则剩下的为f(n-2),所以f()=f(n-2...
2019-08-01 15:55:04
118
原创 【剑指offer】旋转数组的最小数字
题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解题思路:采用二分法解答这个问题,mid = low + (high - low)/2需要考...
2019-08-01 14:59:27
126
原创 【剑指offer】重建二叉树
题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路:#前序序列:1 2 3 4 5 6 7#中序序列:3 2 4 1 6 5 7#此算法过程:#pre : 1 2 3 4 5 6 7...
2019-08-01 14:39:05
132
原创 城市修建-java
题目描述:有一个城市需要修建,给你N个民居的坐标X,Y,问把这么多民居全都包进城市的话,城市所需最小面积是多少(注意,城市为平行于坐标轴的正方形)输入:20 02 2输出 :4代码:import java.util.*;public class ChengShi{ public static void main(String[] args) { ...
2019-08-01 09:33:54
240
原创 【剑指offer】用两个栈实现队列
题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。解题思路:整体思路是元素先依次进入栈1,当栈2是空的时候就把栈1中的元素依次push到栈2中,这样在取栈2的元素就相当于一个先入先出的队列,栈2不为空的时候直接在栈2中取,如果取完了这时栈1中还有元素就继续push到栈2中,如此反复。。。AC代码:import java.util.S...
2019-07-30 10:41:31
138
原创 【剑指offer】从尾到头打印链表
题目描述:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。解题思路:两种思路,第一个是通过栈的特点,先入后出,将链表中的数据插入到栈中,出栈之后即为逆序,第二个思路是通过递归,其实也是借助于栈的实现。AC代码:/*** public class ListNode {* int val;* ListNode next = ...
2019-07-30 10:12:40
120
原创 【剑指offer】替换空格
题目描述:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解题思路:在不考虑java自带的replace函数的情况下,分两种情况,从前向后和从后向前,由于一个空格替换成三个字符,所以应该考虑到越界的问题,从前向后替换需要每替换一次进行一次扩容,从后向前则只需要先进行一次扩容,再进行替换...
2019-07-24 11:57:45
127
原创 SpringBoot中获取时间对象Can not parse date while it seems to fit format 'yyyy-MM-dd'T'HH:mm:ss.SSS
在前端中向后端传输JSON数组的过程中,由于数组中包含时间对象,在后端报了如下错误Can not parse date while it seems to fit format 'yyyy-MM-dd'T'HH:mm:ss.SSS是因为在创建实体类的时候data默认的格式是:yyyy-MM-dd HH:mm:ss’但是在接收数据的时候默认的json格式是'yyyy-MM-dd'T'HH:...
2019-06-19 15:13:53
14705
4
原创 nginx配置location正确下载的坑
一般在浏览器中下载txt文件会直接打开,解决办法是在location中配置Content-Disposition attachment;在nginx中通过反向代理可以直接过滤访问的url在指定的访问中添加header。今天在配置的时候遇到了这样的问题:点击下载直接打开,放在server中也不会生效,为了这个反复试了好久,最后在浏览器中查看response header,发现:Co...
2019-06-18 19:40:47
1417
原创 centos yum 安装mysql8 修改密码
官网地址:https://dev.mysql.com/downloads/repo/yum/可以在以上地址选择想要的版本将下面的链接后面部分替换wget http://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpmrpm -ivh mysql80-community-release-el7-3.noarch.rpm ...
2019-06-14 11:20:31
1157
原创 Required String parameter is not present
出错部分代码: public OverviewASRResponse getOverviewASR(@UserRole Integer role, @UserId Integer userId , @RequestParam(value="start_date") String start_date){}但是因为希望前端传给后端的是JOSN串,所以应该使用@RequestBody来接...
2019-06-14 10:21:13
6579
原创 nginx配置txt等文件下载错误
问题描述: 下载文件的时候,点击下载会直接在浏览器中打开解决过程: 首先在网上查了相关解决办法,尝试了在location中加入add_header,结果没有生效location / { add_header Content-Disposition "attachment;";} 然后尝试了放入server中,可以生效,但是线上的服务器是没有开放具体...
2019-06-13 11:13:40
1197
转载 mysql 对于年月日日期的比较
转载自:https://blog.csdn.net/nihaoqiulinhe/article/details/76187271在前端日期传过来是2017-01-01的格式,我要在数据库比较日期,假设是年龄,我可以在mysql语句中拼查询,如下:SELECT * FROM `retire_infor` rewhere re.birtyday >= '1956-01-01' and...
2019-06-13 10:23:11
8401
原创 mysql 获取昨天日期、今天日期、明天日期以及前一个小时和后一个小时的时间
1、当前日期select DATE_SUB(curdate(),INTERVAL 0 DAY) ;2、明天日期select DATE_SUB(curdate(),INTERVAL -1 DAY) ;3、昨天日期select DATE_SUB(curdate(),INTERVAL 1 DAY) ;4、前一个小时时间select date_sub(now(), interval 1...
2019-06-13 10:20:45
773
原创 Mybatis @SelectKey用法
@SelectKey用处主要用来解决主键自增问题用法@SelectKey(statement="SELECT LAST_INSERT_ID()", keyProperty="clusterId", before=false, resultType=Integer.class)属性keyProperty 语句结果被设置的属性resultType 结果的类型order 可...
2019-06-13 10:11:52
4129
原创 mysql求两个日期之间的差 timestampdiff()函数
语法TIMESTAMPDIFF(unit,begin,end);介绍TIMESTAMPDIFF函数返回begin-end的结果,其中begin和end是DATE或DATETIME表达式。TIMESTAMPDIFF函数允许其参数具有混合类型,例如,begin是DATE值,end可以是DATETIME值。如果使用DATE值,则TIMESTAMPDIFF函数将其视为时间部分为“00:00:0...
2019-06-13 10:04:48
732
原创 mysql查询结果保留两位小数
TRUNCATETRUNCATE(x,d):函数返回被舍去至小数点后d位的数字x。若d的值为0,则结果不带有小数点或不带有小数部分。若d设为负数,则截去(归零)x小数点左起第d位开始后面所有低位的值。SELECT TRUNCATE(100.3465,2),TRUNCATE(100,2),TRUNCATE(0.6,2),TRUNCATE(114.6,-1);结果分别:100.34,100,0...
2019-06-13 09:56:49
9410
1
原创 mac安装Redis可视化工具-Redis Desktop Manager
现在网上关于redis的资源很少,要不就是比较旧的资源,今天在安装RDM的时候尝试了网上的几种方法,命令行的方式会造成一些问题。这里直接提供一个破解版的链接下载安装就可以了:https://pan.baidu.com/s/1tpnvkE9R63U9VVMfw5xodQ 密码:zd7y...
2019-06-03 11:19:29
13070
23
原创 关于WebSocketSession传输JSON
由于约定需要向前端传输JSON,但是之前调用的一直是WebSocketSession自带的sendMessage()方法。方法签名如下:void sendMessage(WebSocketMessage<?> var1) throws IOException; 所以在sendMessage()中是不能直接发送JSON的,必须是发送实现了WebSocketMess...
2019-05-31 17:38:10
3912
原创 Spring @Value("#{}")和@Value("${}")
突然发现@Value("#{}") 这种用法,来总结下两者的区别一.@Value("#{}") 其实是SpEL表达式的值,可以表示常量的值,或者获取bean中的属性@RestController@RequestMapping("/login")@Componentpublic class LoginController { @Value("#{1}") priva...
2019-05-30 17:15:03
36344
2
原创 Springboot @Controller和@RestController
@Controller:主要用来处理http请求,相当于dispatcherServlet+Model,处理流程大概是DispatcherServlet分发请求,然后通过业务处理层处理后把用户的请求数据封装成Model,然后再把Model返回给View进行展示。@ResponseBody:将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的...
2019-05-30 16:59:33
791
原创 Logger入门用法
一.使用Logger的步骤 1.引入Logger和Logger工厂类 2.声明logger 3.记录日志二.简单示例//1. 引入slf4j接口的Logger和LoggerFactoryimport org.slf4j.Logger;import org.slf4j.LoggerFactory;public class UserService { ...
2019-05-30 16:19:50
14458
原创 Vim 配置备份(带注释)
set sw=4set ts=4set etset smarttabset smartindentset lbrset fo+=mBset smset selection=inclusiveset wildmenuset mousemodel=popupau FileType php setlocal dict+=~/.vim/dict/php_funclist.dict...
2019-05-29 15:08:01
515
原创 双层HashMap嵌套遍历记录
要遍历的双层结构:Map<String, Map<String, WebSocketSession>>遍历代码:Set<String> mapSet = lanSession.keySet(); for(String key:mapSet){ Map<String,WebSocketSession> subMap =...
2019-05-29 14:49:01
1264
1
原创 websocket通信中failed to execute 'send' 问题解决
问题描述: 建立websocket连接后发送message发生错误: 问题代码: $(function() { //创建WebSocket connectWebSocket(); send(); })问题原因: 起因是由于在实例化websocket的时候就会尝试与服务器进行连接,但是连接...
2019-05-29 11:06:00
4320
原创 A JSONObject text must begin with '{' at character 1 of websocket on open错误解决
问题描述: JSONObject jsonobject = JSONObject.fromObject(webSocketMessage.getPayload()); 通过将websocket中的信息转换成json串的过程中报错。 异常的原因是JSON串不符合规范,没有以"{"开头或者以"}"截尾。 经查询这个问题行程的原因通常有几种: 1.jso...
2019-05-28 19:06:05
8131
原创 Interface HandshakeInterceptor
public interface HandshakeInterceptorWebSocket握手请求的拦截器. 检查握手请求和响应, 对WebSocketHandler传递属性boolean beforeHandShake(ServerHttpRequest request,ServerHttpResponse response, WebSocketHandler wsHandler, Ma...
2019-05-28 17:43:28
1774
原创 websocket原理以及对比AJAX轮询Longpoll和websocket
一.什么是websocket webcocket是一种在单个TCP链接上进行全双工通信的协议,标准为RFC 6455 在WebSocket建立连接时,HTTP仅用于初始握手,这依赖于内置于HTTP中的机制来请求协议升级(或在这种情况下为协议开关),如果服务器同意,它可以使用HTTP状态101对其进行响应 (切换协议)。 假设握手成功,HTTP升级请求后其底层的TCP套接字保持打...
2019-05-28 10:44:14
610
原创 H5 WebSocket用法
一.构造函数 WebSocket(url, [protocol] ); 语法:var ws = new WebSocket("ws://localhost:8080"); 参数: url:指定websocket服务器要相应的url protocol:单个或多个协议字符串组成的数组,用于指定子协议 异常:SECURITY_ERR 尝试...
2019-05-28 09:46:05
686
ThinkInJava(java编程思想第四版)随书源码
2019-04-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人