- 博客(46)
- 收藏
- 关注
原创 MQ中的数据丢失处理办法
MQ 消息队列中的数据丢失处理办法2.丢消息。这得从java的java.net.SocketException异常说起。简单点说就是当网络发送方发送一堆数据,然后调用close关闭连接之后。这些发送的数据都在接收者的缓存里,接收者如果调用read方法仍旧能从缓存中读取这些数据,尽管对方已经关闭了连接。但是当接收者尝试发送数据时,由于此时连接已关闭,所以会发生异常,这个很好理解。不过需要注意的是,当发生SocketException后,原本缓存区中数据也作废了,此时接收者再次调用read方法去读取缓存中
2020-09-01 15:50:30
2799
2
原创 消息队列MQ的作用
使⽤消息队列主要是为了:减少响应所需时间和削峰。降低系统耦合性(解耦/提升系统可扩展性)。当我们不使⽤消息队列的时候,所有的⽤户的请求会直接落到服务器,然后通过数据库或者缓存响应。假如在⾼并发的场景下,如果没有缓存或者数据库承受不了这么⼤的压⼒的话,就会造成响应速度缓慢,甚⾄造成数据库宕机。但是,在使⽤消息队列之后,⽤户的请求数据发送给了消息队列之后就可以⽴即返回,再由消息队列的消费者进程从消息队列中获取数据,异步写⼊数据库,不过要确保消息不被重复消费还要考虑到消息丢失问题。由于消息队列服务器处理
2020-08-25 10:07:14
735
原创 redis与数据库的数据一致性问题
如何保障mysql和redis之间的数据一致性?1.强一致(向数据库插入一条数据时,同时向redis中也插入一条数据)2.定时任务:设置过期时间结合实际场景,解决redis和mysql的数据一致性在并发不高的情况下:读操作优先读取redis,不存在的话就去访问MySQL数据库,并把从数据库中读到的数据写回Redis中;写操作的话,直接写MySQL,成功后再写入Redis(可以在MySQL数据库业务代码中定义CRUD触发器,在触发CRUD操作后写数据到Redis,也可以在Redis端解析mysql的b
2020-07-29 16:29:57
923
原创 剑指offer - 字符串的排列
题目描述:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。解题思路:对于这个问题,我们同样可以采用分解的办法。要求整个字符串的排列,可以看成两步:第一步:求所有可能出现在第一个位置的字符,即把第一个字符与后面的字符依次交换。第二步:固定一个字符,求后面所有字符的排列。很明显,求后面所有字
2020-07-19 10:22:10
169
原创 剑指offer - 数字在排序数组中出现的次数
数字在排序数组中出现的次数题目描述:统计一个数字在排序数组中出现的次数。例如,输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于数字3在该数组中出现了4次,所以函数返回4。解题思路:二分查找既然输入的数组是有序的,所以我们就能很自然的想到用二分查找算法。以题目中给的数组为例,一个比较自然的想法是用二分查找先找到一个3,由于要计算的是输出的次数,所以需要在找到的这个3的左右两边分别再进行顺序扫描,进而得到3的个数,这样最坏的情况下时间复杂度仍然是O(n),和直接顺序扫描的效率.
2020-07-06 09:27:09
129
原创 Java线程
文章目录线程1.并发与并行2. 线程与进程3. 创建线程类方法一:继承 Thread 类创建线程方法二:实现 Runnable 接口创建线程4. Thread和Runnable的区别线程1.并发与并行并发:指两个或多个事件在同一个时间段内发生。并行:指两个或多个事件在同一时刻发生(同时发生)。在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多个程序同时运行,这在单 CPU 系统中,每一时刻只能有一道程序执行,即微观上这些程序是分时的交替运行,只不过是给人的感觉是同时运行,那是因为
2020-06-12 10:53:51
103
转载 网络通信协议TCP/IP
文章目录1.1 软件结构1.2 网络通信协议1.3 协议分类1.4 网络编程三要素协议IP地址端口号1.1 软件结构C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。两种架构各有优势,但是无论哪种架构,都离不开网络的支持。网络编程,就是在一定的协议下,实现两台计算机的通信的程序。1.2 网络通信协议网络通信协议:通过计算机网络可以
2020-06-08 16:38:23
930
原创 SpringBoot的理解与项目创建
文章目录SpringBoot01:Hello,World!1. 什么是Spring2. Spring是如何简化Java开发的3. 什么是SpringBoot4. Spring Boot的主要优点:5. 准备工作6. 创建基础项目说明7. pom.xml 分析8. 编写一个http接口9.将项目打成jar包SpringBoot01:Hello,World!SpringBoot简介1. 什么是SpringSpring是一个开源框架,2003 年兴起的一个轻量级的Java 开发框架,作者:Rod John
2020-05-12 18:18:38
388
原创 SpringMVC_2 响应数据、文件上传、异常处理、拦截器
文章目录SpringMVC_2 响应数据、文件上传、异常处理、拦截器一、响应数据和结果视图1、返回值分类(1)返回字符串(2)返回值是void(3)返回值是ModelAndView对象2、SpringMVC框架提供的请求转发和重定向3、ResponseBody响应json数据(1)mvc:resources标签配置不过滤(2) 使用@RequestBody获取请求体数据二、SpringMVC实现文件上传0、文件上传的必要前提1、传统文件上传方式(1)导入文件上传的jar包(2)文件上传的JSP页面(3)文件
2020-05-11 15:20:07
175
原创 SpringMVC_1 入门、参数绑定、常用注解
文章目录SpringMVC_1 入门、参数绑定、常用注解一、三层架构和MVC三层架构MVC模型SpringMVC 简单介绍二、SpringMVC的入门案例基本框架如下:1、WEB工程,pom导入坐标2、web.xml中的配置3、springmvc.xml配置4、编写index.jsp和HelloController控制器类、启动Tomcat入门案例的执行过程分析5、RequestMapping注解三、请求参数的绑定1、请求参数的绑定说明2、绑定的注意事项3、请求参数中文乱码的解决4、自定义类型转换器5、在控
2020-05-10 18:10:06
209
原创 Spring_4 - JdbcTemplate,事务控制
文章目录Spring_4 JdbcTemplate,事务控制一,Spring中的JdbcTemplate1,JdbcTemplate概述2,JdbcTemplate对象的创造3,JdbcTemplate的增删改查操作(1)引入坐标(2)在spring配置文件bean.xml中配置JdbcTemplate(3)最基本的CRUD使用(4)查询所有操作(5)查询一个(6)查询返回一行一列数据4,在dao中使用JdbcTemplate(1)实体类(2)IAccountDao接口(3)第一种方法:实现类中定义Jdbc
2020-05-09 18:29:51
207
原创 Spring_3 - AOP
文章目录Spring_3 AOP一、AOP 的相关概念1、AOP概述(1) 什么是 AOP(2) AOP 的作用及优势(3) AOP 的实现方式2、AOP 的具体应用(1) 动态代理回顾(2) 动态代理常用的有两种方式(3) 使用 JDK 官方的 Proxy 类创建代理对象(4) 使用 CGLib 的 的 Enhancer 类创建代理对象二、Spring 中的 AOP1、 Spring 中 AOP 的细节(1) AOP 相关术语(2)spring AOP要明确的事(3) 关于代理的选择2、基于 XML 的
2020-05-09 16:54:25
183
原创 spring_2 - 注解、整合 Junit
文章目录spring_2 注解、整合 Junit一、基于注解使用 spring 的 IOC1、 注解的入门案例(1) 导入坐标(2) 持久层接口及其实现类(3) 业务层接口及其实现类(5) 测试配置是否成功2、入门案例中的一些注解说明(0) 曾经的XML配置:(1) 用于创建对象的(2) 用于注入数据的(3) 用于改变作用范围的(4) 和生命周期相关二、使用 spring 的 IOC 的实现账户的CRUD (XML配置)1、相关案例框架结构(1) 导入坐标(2) 创建数据库和编写实体类(3) 持久层接口及其
2020-05-08 23:14:47
188
原创 Spring_1-控制反转(IOC)与依赖注入(DI)
文章目录spring_1 概述、IOC、DI一、Spring 概述1、spring 是什么2、spring 的优势3、spring 的体系结构二、IOC 的概念和作用1、什么是程序的耦合2、控制反转-Inversion Of Control三、使用 spring 的 IOC 解决程序耦合1、入门案例(0) 导入坐标(1) 创建业务层接口和实现类(2) 创建持久层接口和实现类(3) 类路径下创建be...
2020-05-07 21:21:42
291
原创 Mybatis中的注解开发
文章目录Mybatis中的注解开发1.Mybatis 使用注解实现单表 CURD1.1 在IUserDao接口中使用注解1.2 测试类2. Mybatis 使用注解实现多对一(一对一)@one2.1 在Account类中添加一个主表实体User的对象引用(从表类)2.2 在IAccountDao接口中使用注解2.3 测试类3.Mybatis 使用注解实现一对多@many3.1 User实体类加入A...
2020-05-05 16:52:28
1137
原创 MyBatis的多表查询
Mybatis 多表查询在说多表查询之前,首先要了解表之间的关系共有以下几种:一对一 : 人和身份证就是一对一的关系。一个人只能有一个身份证号,而一个身份证号只能属于一个人。多对一(一对多):学生和班级就是多对一(一对多)的关系。一个班级有多个学生,而一个学生只属于一个班级。多对多 : 学生和任课老师就是多对多的关系。一个学生可以有多个任课老师,而一个任课老师可以有多个学生1.一对一...
2020-05-03 17:56:35
573
原创 MyBatis配置文件中的属性标签
文章目录MyBatis配置文件中的属性标签(1)使用properties配置数据库连接信息(2)使用typeAliases配置别名(3)使用package配置别名MyBatis配置文件中的属性标签(1)使用properties配置数据库连接信息可以在标签内部配置数据库连接信息,也可以通过外部文件来配置数据库连接信息。第一种url属性(不常用)URL属性: URL:Uniform Re...
2020-05-03 17:04:20
537
原创 MyBatis的目录结构与配置解析
三、MyBatis的目录结构与配置解析1.目录结构第一步:创建 maven 工程第二步:导入mybaitis,mysql,junit坐标(pom.xml)第三步:编写必要代码(实体类User和持久层接口IUserDao)第四步:编写 MyBatis核心配置文件SqlMapConfig.xml第五步:编写映射配置文件IUserDao.xml第六步:编写测试类2.设计模式分析代码...
2020-05-02 23:51:47
1906
原创 实现MyBatis的CURD
文章目录二、基于代理Dao实现CURD操作1.首先在持久层(dao)接口添加新增方法2.在用户的映射配置文件mapper.xml中配置MyBatis中resultType resultMap 区别配置细节:3.添加测试类中的测试方法二、基于代理Dao实现CURD操作使用要求:1、持久层接口和持久层接口的映射配置必须在相同的包下2、持久层映射配置中 mapper 标签的 namespace ...
2020-05-02 23:25:21
239
原创 MyBatis理解与配置
文章目录1.MyBatis的概述:1.什么是持久层?2.MyBatis的优点3.MyBatis通俗理解2.传统的JDBC方法查询数据库3.搭建MyBatis开发环境1.创建maven工程2.添加 Mybatis3.4.5 的坐标3.编写User实体类4.编写持久层接口IUserDao5. 编写mybatis的核心配置文件SqlMapConfig.xml6.编写与持久层接口对应的映射文件IUserD...
2020-05-01 17:53:52
623
原创 Maven的深入理解
文章目录1.Maven的理解2.Maven仓库3.Maven“坐标”4.Maven的依赖管理5.maven工程的结构目录6.Maven基本命令7.Maven指令的生命周期8.Maven的概念模型9.pom 基本配置1.Maven的理解一个对 Maven 比较正式的定义是这么说的:Maven 是一个项目管理工具,它包含了一个项目对象模型 (POM:Project Object Model),一...
2020-04-29 23:06:45
578
1
原创 MySQL常用命令
MySQL数据库软件配置MySQL服务启动:没有界面的应用程序,后台服务手动。计算机–>管理–>服务cmd–> services.msc打开服务的窗口使用管理员打开cmdnet start mysql : 启动mysql的服务net stop mysql:关闭mysql服务MySQL登录mysql -uroot -p密码mysql -h...
2020-04-25 10:26:55
376
原创 反射与注解
文章目录反射:框架设计的灵魂1.反射机制的理解2.Java代码在计算机中经历的三个阶段3 获取Class对象的方式:3.1 Class对象功能:3.2 Field:成员变量3.3 Constructor:构造方法3.4 Method:方法对象注解:代码级别的说明1.注解的理解2. 注解作用分类:3. 注解的种类3.1 `JDK`中预定义的一些注解3.2. 自定义注解3.3. 元注解:用于描述注解...
2020-04-21 21:07:21
235
原创 Linux上的软件安装与文件互传
三、 Linux上软件安装Linux上的软件安装有以下几种常见方式介绍二进制发布包软件已经针对具体平台编译打包发布,只要解压,修改配置即可RPM包软件已经按照redhat的包管理工具规范RPM进行打包发布,需要获取到相应的软件RPM发布包,然后用RPM命令进行安装Yum在线安装软件已经以RPM规范打包,但发布在了网络上的一些服务器上,可用yum在线安装服务器上的rpm...
2020-04-20 18:52:08
251
原创 Linux常用操作命令
文章目录一、Linux的常用命令:1.切换目录命令2.列出文件列表3.创建目录和移除目录4.浏览文件5.文件操作6.其他常用命令。二、Vi和Vim编辑器:1.Vim编辑器2.重定向输出>和>>3.系统管理命令4.管道 |三、Linux的权限命令1.文件权限2.Linux三种文件类型3.文件权限管理四、Linux上常用网络操作1.主机名配置2.IP地址配置3.网络服务管理4.防火墙...
2020-04-18 19:50:44
2464
原创 Linux概述及其目录介绍
一、 Linux的概述:1. 先了解UnixUnix由C语言编写而得出,是一个强大的多用户、多任务操作系统。于1969年在AT&T的贝尔实验室开发。UNIX的商标权由国际开放标准组织(The Open Group)所拥有。UNIX操作系统是商业版,需要收费,价格比Microsoft Windows正版要贵一些。2. Linux的概述:Linux是基于Unix的Linux是一种自由...
2020-04-18 17:16:38
359
原创 剑指offer - 反转链表
15.反转链表题目描述输入一个链表,反转链表后,输出新链表的表头。1–>2–>3–>4–>null反转成4–>3–>2–>1–>null思路一定义两个节点,向后移动并改变逆转指向package main.java.com;public class Title15 { public ListNode ReverseList...
2020-04-16 11:59:49
166
原创 JDK1.8稳定版
JDK1.8稳定版本官网下载速度有时候巨慢,分享出来给大家节省时间链接:https://pan.baidu.com/s/1If1XHMhDJAiOnKA_hKWz2A提取码:601y
2020-04-15 14:56:42
1811
原创 剑指offer - 用两个栈实现队列
7.用两个栈实现队列题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路:通过两个栈中元素之间的复制交换实现了队列,栈一负责接收节点数据栈二负责弹出数据,由栈的特性可知栈弹出的数据即为栈一中顺序输入的顺序复杂度push时间复杂度:O(1)pop空间复杂度:O(1)import java.util.Stack;...
2020-04-14 23:38:05
179
原创 剑指offer - 从尾到头打印链表
3.从尾到头反转链表3.从尾到头反转链表题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。本题的递归方法会让你对递归有更深的理解思路一:暴力顺序遍历一遍存储到临时集合templist中,在定义一个集合逆序遍历存储到list(不推荐)public class Title3 { public static ArrayList<Integer&g...
2020-04-12 17:33:04
194
原创 递归的举例理解
2.递归递归在本质上就是一个栈结构一个简单的例子,求1+2+3+…+n每个栈帧就代表了被调用中的一个函数, 这些函数栈帧以先进后出的方式排列起来,就形成了一个栈图中栈中每个小方框都是对应的栈帧,每个栈帧都需要记录下当前的n的值, 还要记录下一个函数栈帧的返回值, 然后才能运算出当前栈帧的结果。 也就是说使用多个栈帧是不可避免的。retern完后,依次弹栈,由先进后出原则...
2020-04-12 15:56:37
870
原创 I/O流 - 图片复制原理与实现
字节流练习:图片复制复制原理图解文件复制:一读一写明确:数据源: c:\1.jpg数据的目的地: d:\1.jpg文件复制的步骤:1.创建一个字节输入流对象,构造方法中绑定要读取的数据源2.创建一个字节输出流对象,构造方法中绑定要写入的目的地3.使用字节输入流对象中的方法read读取文件4.使用字节输出流中的方法write,把读取到的字节写入到目的地的文件中5.释放...
2020-04-10 16:08:47
359
原创 I/O流 - 字节流
文章目录一. IO概述1.1 什么是IO1.2 IO的分类1.3 IO的流向说明图解1.4 顶级父类二. 字节流2.1 一切皆为字节2.2 字节输出流【OutputStream】2.3 FileOutputStream类构造方法写出字节数据数据追加续写写出换行2.4 字节输入流【InputStream】2.5 FileInputStream类构造方法读取字节数据一. IO概述1.1 什么是IO...
2020-04-10 15:55:16
182
原创 归并排序
归并排序:递归原理分治思想时间复杂度:O(nlogn)代码实现与分析package main.java.com;import java.util.Arrays;//sort 负责分开排序//merge 负责把分开排好序的数组合在一起public class Title3 { //归并所需要的辅助数组 private static Comp...
2020-04-10 10:12:18
115
原创 约瑟夫问题
1.约瑟夫问题问题描述:传说有这样一个故事,在罗马人占领乔塔帕特后,39 个犹太人与约瑟夫及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,第一个人从1开始报数,依次往后,如果有人报数到3,那么这个人就必须自杀,然后再由他的下一个人重新从1开始报数,直到所有人都自杀身亡为止。然而约瑟夫和他的朋友并不想遵从。于是,约瑟夫要他的朋友先...
2020-04-09 22:23:06
391
原创 Lambda理解
Lambda表达式1. 函数式编程思想概述在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿什么东西做什么事情”。相对而言,面向对象过分强调“必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法——强调做什么,而不是以什么形式做。面向对象的思想: 做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情.函数式编程思想:只要能获取到结果,谁去做的,...
2020-04-08 17:13:05
152
原创 Java中String类、Arrays类、Math类常用方法总结
1. String类常用方法java.lang.String类代表字符串。Java程序中所有的字符串文字(例如 “abc” )都可以被看作是实现此类的实 例。类 String中包括用于检查各个字符串的方法,比如用于比较字符串,搜索字符串,提取子字符串以及创建具有翻 译为大写或小写的所有字符的字符串的副本。java.lang.String :此类不需要导入。构造方法public St...
2020-04-08 16:27:08
190
原创 剑指offer - 替换空格
5.替换空格题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。思路// 那我首先想到的是使用额外空间的解法,使用StringBuffer字符串缓冲区,或StringBuider// 首先遍历target目标字符串,且在遍历的同时将不是空格的字符append到Stri...
2020-04-07 00:15:27
103
原创 剑指offer - 构建乘积数组
4.构建乘积数组题目描述给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];)思路一:设置两个数组分别装B[i]...
2020-04-06 11:39:56
162
原创 剑指offer - 数组中的重复数字
3.数组中的重复数字题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。先说一下底下的duplicate方法大意,boolean:判断数组中某个数出现次数是否大于1...
2020-04-02 23:43:38
111
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人