- 博客(23)
- 收藏
- 关注
原创 五种IO模型
目录1.0介绍1.1阻塞IO1.2非阻塞IO1.3IO复用1.4信号驱动式IO1.5异步IO2.Java IO 技术2.1 BIO2.2 NIO3.3 AIO1.0介绍IO指读写磁盘或Socket数据,以读为例,分为2个阶段:第一阶段(数据准备),数据复制到内核中;第二阶段(数据拷贝),数据从内核拷贝到应用进程。1.1阻塞IO应用进程阻塞到第一和第二阶段完成举例:A用的是最老式的鱼竿,所以呢,得一直守着,等到鱼上钩了再拉杆1.2非阻塞IO
2021-07-22 18:25:11 335
原创 SpringBoot事件监听
观察者模式Observer(发布订阅模式Publish/Subscribe)被观察者一个,观察者多个;主题一个,订阅者多个。原理:订阅者将自身注册到主题中(如List中),主题向外提供发布接口,接口被调用时,主题通过notifyObservers方法通知注册列表中的订阅者。实现:将主题和订阅抽象为抽象列和接口,主题包含订阅者集合,通过notifyObservers调用订阅者回调方法Jav...
2020-03-09 23:17:42 278
原创 redis
1.介绍:Key-Value的形式存储数据,基于内存的非关系型数据库2.Redis支持的数据类型String字符串:格式: set key value,string类型是二进制安全的。意思是redis的string可以包含任何数据。 Hash(哈希):格式: hmset name key1 value1 key2 value2,hash 是一个键值(key=>value)对集合。...
2019-11-20 12:12:12 124
原创 SpringBoot
1.Spring的IOC有三种注入方式 :构造器注入、setter方法注入、根据注解注入。2.AOP、IOC3.Spring容器中的bean可以分为5个范围:(1)singleton:默认,每个容器中只有一个bean的实例,单例的模式由BeanFactory自身来维护。(2)prototype:为每一个bean请求提供一个实例。(3)request:为每一个网络请求创建一个实例...
2019-11-20 11:59:12 185
原创 MyBatis
1.#{}和${}的区别是什么?#{}是预编译处理,${}是字符串替换。 Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值; Mybatis在处理${}时,就是把${}替换成变量的值。 使用#{}可以有效的防止SQL注入,提高系统安全性2.Mapper接口里的方法,是不能重载的,因为是使用 全限名+方法名 的保存和寻...
2019-11-19 21:13:43 172
原创 A-java-07-多线程
1.实现继承Thread、实现Runnable,实现run()方法,通过start()启动线程 使用Callable和Future创建线程,Callable接口提供了一个call()方法作为线程执行体(有返回参数、可以声明抛出异常),将Callable实现类作为参数传给FutureTask,FutureTask间接的实现了Runnable,线程执行完后,通过FutureTask的get方法可...
2019-11-19 19:11:07 156
原创 A-java-05-IO
1.nio操作https://blog.csdn.net/u011381576/article/details/79876754详细教程:http://ifeve.com/overview/io通过流传递数据(单向),nio通过通道Channel传递数据(双向) nio通道类型:FileChannel、SocketChannel、ServerSocketChannel、Datag...
2019-11-19 18:19:05 102
原创 A-java-04-异常
基类:Throwable 错误:Error(程序无法处理,处理起来也很难,导致进程挂掉,甚至机器宕机) 异常:Exception(程序可以处理,一般程序还能正常运行)运行时异常,也叫unchecked异常,可不处理,这种异常大都是程序编写错误导致的 非运行时异常,也叫checked异常,必须使用try...catch处理或者throws给方法调用者...
2019-11-19 18:04:51 94
原创 列转行
表结构1.使用unionselect name,'语文',chinese'grade' from TestGradeunionselect name,'英语',english'grade' from TestGradeunionselect name,'数学',`match`'grade' from TestGradeorder by name...
2019-10-17 19:03:59 149
原创 行转列
表结构1.使用group by+if或case whenselect name, sum(case when subject='语文' then grade else 0 end)as'语文', sum(case when subject='英语' then grade else 0 end)as'英语', sum(case when subject='数学' then g...
2019-10-17 18:51:45 253
转载 Activiti(学习)
教程学习:https://blog.csdn.net/qq877507054/article/details/60143099教程学习(最后有场景使用介绍):https://blog.csdn.net/cs_hnu_scw/article/details/79059965Activiti数据库表结构:https://blog.csdn.net/hj7jay/article/details/...
2019-10-11 09:53:15 101
转载 Web Socket
Spring整合:https://www.cnblogs.com/zzw-blog/p/8530083.html通过Web Socket可以实现前端后端双工通信1.前端代码(2属性4事件2方法)2属性属性 描述 Socket.readyState 只读属性readyState表示连接状态,可以是以下值: 0 - 表示连接尚未建立。 ...
2019-10-05 16:36:32 202
转载 Sql Server 索引
1.简介索引分为聚集索引和非聚集索引,数据库中的索引类似于一本书的目录,在一本书中通过目录可以快速找到你想要的信息,而不需要读完全书。索引主要目的是提高了SQLServer系统的性能,加快数据的查询速度与减少系统的响应时间。但是索引对于提高查询性能也不是万能的,也不是建立越多的索引就越好。索引建少了,用 WHERE 子句找数据效率低,不利于查找数据。索引建多了,不利于新增、修改和删...
2019-10-05 09:00:45 1092
原创 Servlet 九大对象和四个作用域
1.九大对象1.apllication(ServletContext):服务器启动后就产生了这个对象,所有客户共享这个内置的application对象2.request(HttpServletRequest/ServletRequest):封装了用户请求信息,请求可以转发给其他request(url不变)3.response(HttpServletRespons/ServletRes...
2019-10-04 22:02:39 2420
原创 Java单例模式(懒汉和饿汉模式)
懒汉模式饿汉模式关于单利模式呢 就是永远保持一个对象;懒汉模式在运行的时候 获取对象比较慢,但是加载类的时候比较快;饿汉模式是在运行的时候获取对象较快,加载类的时候慢。...
2019-09-17 22:01:17 112
原创 Sql Server 锁、事务隔离级别
1.为什么需要锁(锁是为了解决什么问题)丢失更新:在这种情况下,事务与事务之间没有隔离。多个事务能够读取同一份数据并且修改它。最后对数据集做出修改的事务将胜出,而其他所有事务所作的修改都丢失了。(Sql Server中对数据进行修改时需要排它锁锁住修改,其他任何事务对该数据的查询或修改均需要等待排它锁被释放,所以个人认为Sql Server并不会发生这种问题。) 脏读:在这种情况下,一个事务...
2019-09-13 11:48:45 342
原创 Sql Server行列转换
1行转列(pivot)语法:pivot(聚合函数 for 列化的列名 in(列化列的列值))select * from StudentScoresselect * from StudentScorespivot( sum(Score) for Subject in ([语文],[数学],[英语],[生物]))p2列转行(unpivot)select *...
2019-09-11 10:35:46 113
原创 Sql Server开窗函数
1关于开窗函数在数据库中聚合函数一般和group by一起用。如果在查询时,想使用聚合函数和基础列(不是分组字段),可以考虑开窗函数 查询时,如果想生成排序列,可以考虑开窗函数2普通开窗函数对整个查询结果进行聚合运算 语法:聚合函数 over()select COUNT(1)over()as'Count', Min(UserID)over()as'Min',...
2019-09-10 18:23:37 529
原创 Linux shell编程入门
1.第一个shell脚本 创建一个test.sh文件,并书写下面内容 #!/bin/bash echo "Hello World!" "#!" 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。 echo命令用于向窗口输出文本。2.运行shell脚本 1.作为可执行程序 chmod +x ./test.ch ...
2018-06-09 18:47:12 205
原创 Linux常用命令
1.切换用户 su -用户名2.切换所属组 newgrp 组名 显示用户所属组:groups3.更改密码 passwd 用户名4.更改文件名 mv oldName newName rename 原字符串 目标字符串 文件 ...
2018-06-09 13:41:40 112
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人