自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 @Transation在什么情况下会失效

Spring的事务管理机制分为两种:编程式事务(代码中手动开启事务)和声明式事务(使用注解开启事务)编程式事务:代码中手动管理事务的回滚、提交,代码侵入性比较强。try { //TODO something transactionManager.commit(status); } catch (Exception e) { transactionManager.rollback(status); throw new InvoiceApplyException("异常失败"); }声明式事务:

2021-03-12 15:55:15 1405 1

原创 工厂模式(简单工厂、工厂方法、抽象工厂的迭代)

工厂对象定义:定义一个创建产品对象的工厂接口,将产品的实际创建工作推迟到具体的子工厂类中。满足了创建型模式中“创建与使用分离”。凡是需要生产复杂对象的地方可以考虑使用工厂模式代替。复杂对象一般是指构造函数过多等对类的构造有影响的情况,因为类的构造过于复杂,在业务类中直接使用,则两者的耦合过重,假如后续业务变更,需要构建的类对象构造参数发生改变时,则需要在任何引用该类的业务代码内更改。按实际业务场景划分:简单工厂、工厂方法、抽象工厂。被创建的对象称为:”产品“、创建产品的对象称为:”工厂“简单工厂模式

2021-03-12 15:54:01 198

原创 同源策略与跨域

造成跨域问题的原因就是浏览器的同源策略所谓同源是指:域名、协议、端口均相同跨域指:当前网站不能执行其他网站的JavaScript。在一个浏览器的两个tab页中分别打开百度和谷歌的页面,当浏览器的百度tab页执行一个脚本的时候会检查这个脚本是属于哪个页面的,即检查是否同源,只有和百度同源的脚本才会被执行。如果非同源,那么在请求数据时,浏览器会在控制台中报一个异常,提示拒绝访问。同源策略是浏览器的行为,是浏览器为了保护本地数据不被JavaScript代码获取回来的数据污染而做出的拦截行为。即请求

2021-02-25 16:05:17 171

原创 lambda表达式

java8开始支持lambda表达式,让java可以进行函数式编程。java8有两个非常重要的新特性:Lambda和Stream API。策略模式优化:在Java中,只能传递(数据)参数,不能传递方法。但是java可以传递一个对象(包含属性和方法),然后在内部调用对象的方法,这样就能间接调用方法了。匿名内部类优化:使用策略模式的话,会产生一个问题,每一个策略都对应一个策略类,当策略过多时,可能会引起类过多,如果一些策略使用频率不高或只使用一次,可以用匿名内部类的方式减少类的爆增。lambda表达

2021-02-19 10:41:27 157

原创 Mybatis枚举类型处理器(自带实现两种)+如何自定义枚举类型处理器

final关键字的赋值有以下几种方式:显式赋值:private final Integer code = 1静态代码块/代码块赋值构造器赋值当直接用枚举类存入数据库使用Mybatis时,是怎么处理的?在java和数据库之间,Mybatis承担了中间人的角色,存入时会自动将枚举对象转为字符串,取出时又把字符串转为枚举对象。Mybatis是怎么操作的呢?存入:Mybatis默认的枚举转换器是EnumTypeHandler,取枚举的name作为值存入数据库。Enum.name()Mybatis中还

2021-02-04 14:15:33 3535

原创 Java使用小算法List集合数据匹配

两个集合匹配算法@Testpublic void testCouple2() {// 用于计算循环次数int count = 0;// 老公组List<Couple> husbands = new ArrayList<>();husbands.add(new Couple(1, "梁山伯"));husbands.add(new Couple(2, "牛郎"));husbands.add(new Couple(3, "干将"));husbands.add(new C

2021-02-02 09:55:41 2002 1

原创 欢迎使用CSDN-markdown编辑器1

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-02-02 09:53:59 51

原创 java将长网址转换为短网址 用第三方接口 常用于生成二维码时需要

该方法适用于任何将长网址转换为短网址。在二维码生成的时候因为二维码生成的类会根据传入的内容生成相对应的二维码,当内容越丰富时二维码的识别就比较复杂难以识别。在此时就需要用到。短链接,通俗来说,就是将长的URL网址,通过程序计算等方式,转换为简短的网址字符串。有时也称短网址(Short URL)。  这里第三方接口使用nowapi , 注册网址:https://www.nowapi.com。...

2020-03-20 22:01:04 1324

原创 当项目部署到到云服务器上后定期备份项目数据 crontab -e 与 vi /etc/crontab两种方式

此次备份我们需要用到linux的crontab命令一、查看当前用户是否为root 制定root用户执行定时任务whoami二、检查 crontab运行情况service crond status如果crond服务没有开启,执行启动 crond服务命令,启动crond服务 # 启动cron service crond start # 关闭cron s...

2020-03-17 15:48:44 374

原创 springboot中application.yml或application.properties里敏感信息进行加密。如数据库用户名及密码

springboot对敏感信息进行加密当我们完善的项目发布后,因为我们springboot中的配置信息如yml中的一些敏感信息都是明文的,当黑客入侵到我们的后台时,我们的这些敏感信息就暴露在黑客的眼前。这样是及其不安全的。spring: datasource: username: root password: abc url: jdbc:mysql://loc...

2020-03-15 21:25:56 1789 8

原创 面试高频点之网络协议(OSI七层协议和TCP/IP四层协议)

1.OSI(国际标准化组织)开放式互联参考模型OSI七层模型自上而下1.应用层网络服务与最终用户的一个接口。协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP功能:文件传输,文件管理,电子邮件的信息处理——apdu2.表示层数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)格式有,JPEG、ASCll、DECO...

2019-10-15 16:36:57 1142

原创 记 随手科技2020届实习生笔试题(Java开发工程师)笔试题

2020届实习生笔试题(Java开发工程师)一、选择题(共6题,每小题5分,满分30分)1 2 3 4 5 6 总分B B A C B C1、下列排序算法中,初始数据集合对排序性能无影响的是( b)A.插入排序 B.堆排序 C.冒泡排序 D.快速排序2、有关线程,以下哪些叙述是对的( b )A.一旦一个线程被创建,它就立即开始运行。B.使用start()方法可以使一个线程成...

2019-09-10 10:38:49 1619

原创 redis缓存问题及其解决

缓存穿透:查询一个一定不存在的数据值,由于缓存不命中,需要去数据库查询,数据库查不到数据不写入缓存,这样会导致这个不存在的数据的每次请求,都会到数据库进行查询。解决:如果对应在数据库中的值也不存在,我们将此key对应的value设置一个默认值:如null,并设置一个缓存的失效时间缓存雪崩:大量缓存集中在一段时间失效,发生大量的缓存穿透,所有的查询都落到数据库上,造成了缓存雪崩解决:设置不...

2019-08-31 10:13:37 1197

原创 Springboot2.x新版整合SpringDataJpa中Hibernate默认创建的mysql表为myisam引擎修改为InnoDB问题

mysql引擎的原因,mysql主要使用两种引擎:myisam以及innodb解决JPA自动生成的表为myisam引擎:熟悉mysql的都知道,myisam引擎并不支持事务,只有innodb引擎才支持事务的处理。myisam区别于innodb的一个明显不同是myisam不能创建外键,因此创建外键不能成功。因为spring2.x版本之后的mysql版本spring-boot起步依赖的mysq...

2019-08-20 19:07:47 3146 2

原创 Spring AOP解释动态代理增强的的位置对应于AOP中通知(增强)的类型

用动态代理方式对业务方法进行增强的方式相对于AOP中的通知类型图jdk动态代理拦截到的方法增强图AOP拦截方法后的增强(通知) 通知类日志方法public class Logger { /** * 前置通知 */ public void beforePrintLog(){ System.out.println("前置通知Logger...

2019-08-08 11:28:35 311

原创 Java Spring之动态代理,jdk接口和cglib的比较及引出动态代理在aop的运用

1.为什么要使用到动态代理首先用一张图揭示动态代理的方式消费者购买商品的过程——>从直接到厂家购买——>到从代理商购买使用动态代理是为了在不改变目标对象代码的前提下,在目标代码执行前后,可以根据目标方法和参数执行相应的逻辑,以及可以过滤和改变参数的信息。和装饰器模式相比,装饰器模式是将类创建好再使用的动态代理的特点及作用特点:字节码随用随创建,随用随加载。它与静态代理...

2019-08-07 16:56:48 206

原创 mybatis中注解与xml配置的对应关系和对比

mybatis中注解就是简单不需要写配置文件,适合简单的数据处理,理解起来比较容易,不动态生成SQL时候可以用用。 需要绑定,有些时候不如配置文件,配置文件扩展强。 选择合适的方式应用在合适的场景,注解主要应用于sql语句比较简单容易理解的情况下可读性高;生成动态sql时用xml配置文件要更简洁,扩展性强常用的注解和xml的对应关系@CacheNamespace 类 <cache&gt...

2019-07-28 15:49:33 3086 1

原创 Mybatis多参数传递入参四种处理方式

下面的 User MutiParameter(int id,String username);为接口中定义的方法1. 利用参数出现的顺序利用mapper.xml配置<select id="MutiParameter" resultType="com.jt.mybatis.entity.User"> select * from user where id = #{param1}...

2019-07-28 12:41:22 6052

原创 java汉诺塔图解,用把大象放进冰箱理解汉诺图

了解递归先从一个通俗例子开始举一个通俗的例子:有一个800g重的苹果要你切成重量相等的若干份,每一份的重量不能大于100g。你肯定会想到这样做:1.第一刀先把一个苹果切成重量均等的2份A1和A2;2.再把其中的一份A1切成重量均等的两份A11和A12, 把A2切成均等的两份A21和A22;3.把A11切成均等的两份……4.直到每一小份都小于等于100g为止。递归就是 把一个大的事物化...

2019-07-19 21:16:59 683

原创 java数据结构之面向对象的数组简易集合的实现,对数组进行增add删delete改set查get

面向对象的数组因为数组的创建是固定长度的对指定位置的增和删操作起来会比较复杂java数组的创建是创建时需要指定数组的长度的 所以在新增和删除我们需要创建一个新的数组增1.直接往数组最后中添加一个元素public void add(Object element){ //创建一个新数组长度在原有数组上加1 Object[] newArr = new Object[elemen...

2019-07-17 10:10:29 418

原创 java使用socket模拟tomcat访问资源

模拟tomcat之前需要知道HTTP协议状态码的一些信息HTTP协议状态码,是指在HTTP协议运行中由客户端发出请求连接,服务端建立连接;客户端发出HTTP请求(Request),服务端返回响应信息(Respond),而在这个过程中由于客户端或服务端的问题会返回相应的错误代码并显示给用户,对应的错误代码表示不同的错误信息,根据这个信息用户可以调整相应的操作来修改出现的错误,最终避免错误的再现。...

2019-07-16 16:11:37 628

原创 java用Socket简单实现银行查看余额,存款,取款的效果,相关数据存在properties文件中,不需要使用数据库

使用Socket实现银行查看余额,存款,取款用来理解Socket的使用,和如何在配置文件中存取数据有深刻的理解查看余额客户端实现System.out.println("|查询金额:1|\n|存款:2|\n|取款:3|");case "1":cmd = "balance\n";break;//将命令写回服务端 服务端执行相关操作dos.writeBytes(cmd);System...

2019-07-15 21:31:27 971

原创 java简单实现在线资源多线程下载,断点续存,限制最大正在下载数

为什么要使用多线程下载,断点续存,限制最大正在下载数多线程下载已经提高了下载的效率,但是当一些特殊情况发生的时候,我们需要对程序进行处理,这样效率会更高。比如,断电断网等造成下载中断,那么我们下一次又要重新开始下载,这样效率底下,所以我们可以考虑使用断点下载。其原理主要是把每次每个线程的下载状况(已经下载的位置)保存到文件,下次读取出来,从上一次下载的位置继续下载,这样就大大提高了下载的效率。当...

2019-07-14 12:35:40 802 5

原创 线程的状态图的转换

线程的状态图线程的状态转换1、新建(new):线程对象被创建后就进入了新建状态。如:Thread thread = new Thread();2、就绪状态(Runnable):也被称为“可执行状态”。线程对象被创建后,其他线程调用了该对象的start()方法,从而启动该线程。如:thread.start(); 处于就绪状态的线程随时可能被CPU调度执行。3、运行状态(Running...

2019-07-12 09:58:12 154

原创 Javascript JS 网页分享到QQ空间QQ,java实现qq分享,url带参数的方法

网页js实现qq分享创建一个jsp页面,html页面也行,下面是简单demo代码,直接复制到就能用html把头 <%@ page language=“java” contentType=“text/html; charset=UTF-8”pageEncoding=“UTF-8”%>去掉即可<%@ page language="java" contentType="tex...

2019-07-06 17:13:57 3167 2

原创 Solr服务器的搭建

安装步骤:solr是java开发的 是可以跨平台的 安装方式和widows上其实是一样的 所以产品用java开发的 安装一般都是比较方便的solr搭建准备:需要安装jdk。安装环境Linux。需要安装Tomcat这里演示一下tomcat在solr上的解压安装将tomcat解压包上传好了之后运行代码:tar zxf apache-tomcat-7.0.47得到一个tomcat...

2019-06-05 22:01:01 172

原创 Redis集群的简单操作及详细步骤 Jedis的使用方法和JedisCluster对象的使用

Jedis的简单操作1,先导入Jedis的相关jar包,我们这里直接用Maven依赖<!-- Redis客户端 Jedis依赖jar包--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> ...

2019-06-05 12:44:09 1569

原创 Redis的安装

Redis是c语言开发的。需要先编译安装redis需要c语言的编译环境。如果没有gcc需要在线安装。yum install gcc-c++linux安装gcc命令安装步骤:第一步:redis的源码包上传到linux系统。第二步:解压缩redis。第三步:编译。进入redis源码目录。make第四步:安装。make install PREFIX=/usr/local/redisPR...

2019-06-02 17:20:20 301

原创 Windows安装dubbo步骤及zookeeper

zookeeper安装步骤安装之前先安装好JDK和配置好路径,下载好tomcatzookeeper下载链接 (http://mirror.bit.edu.cn/apache/zookeeper/ )下载后得到一个下面.jar.gz的是Linux的压缩包,以后在写linux的安装复制zookeeper-3.4.9\conf目录下的zoo_sample.cfg文件改名为zoo.cfg:...

2019-05-31 21:48:04 2334

原创 解决web服务器乱码response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");

response.setCharacterEncoding(“utf-8”);当我们在使用字符流写入数据的时候,修改Response容器的编码response.setHeader(“content-type”, “text/html;charset=utf-8”);告诉浏览器以utf-8码表去显示数据response.setContentType(“text/html;charset=ut...

2019-05-11 21:27:46 3400

原创 JavaWeb常见错误404 405 500 无法显示此页

404错误、405错误、500错误出错原因翁小宝阅读数:354442014-08-071、404错误是服务器执行完客户端的请求以后,返回给客户端的一个执行结果的状态编码。产生原因:web服务器(容器)根据请求的地址找不到相应资源。如:1)地址错误(拼写不正确,字母大小写错误)2)web.xml文件中的两个不一致3)工程没有部署4)web应用程序部署结构没有遵守servlet规范...

2019-04-19 21:25:39 634

原创 JavaWeb jsp基础知识回顾

1.jsp(java Server Pages)在Html中嵌入Java脚本代码由应用服务器中的Jsp引擎来编译和执行嵌入的Java脚本代码然后将生成的整个页面信息返回给客户端jsp = html + java代码 + 指令2当第一次访问jsp页面Web容器处理jsp文件请求需要经过3个阶段翻译阶段 : xx.jsp —> xx_jsp.java编译阶段 : xx_jsp....

2019-04-14 10:30:49 143

原创 TCP与UDP区别总结:

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。3、UDP具有较好的实时性,工作效率比...

2019-04-14 10:17:17 117

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除