java
文章平均质量分 66
有点热�
这个作者很懒,什么都没留下…
展开
-
设计模式-策略工厂
用心守护!原创 2022-05-05 17:44:33 · 1953 阅读 · 0 评论 -
SpringBoot自动装配原理及手写starter教学
想要了解自动装配的原理,我们需要依次了解一下问题:什么是自动装配?为什么要用自动装配,为了解决什么问题?SpringBoot中如何实现我们的自动装配?每次装配是全部加载还是按需加载?如果让我们自己手写starer怎么实现?(考察自动装配的掌握程度)自动装配自动装配:在springboot帮助下,通过简单的配置注解即可使用相应的功能点这么解释显得单一,还体会不到这个概念和用自动装配的好处,简单穿插下关于spring,springboot,springboot的概念,对比才能显示出它本身的优原创 2022-04-02 16:21:56 · 1273 阅读 · 0 评论 -
SpringBoot中的WebSocket的理解及使用
SpringBoot中的WebSocket的理解及使用使用场景因为业务需要一个类似客服的功能,这就要求双方能够主动的互相发送信息和接受消息,常用的http请求则在实时性和服务端主动推送这块没法做到实时性,所以综合考虑采用websocket,它是一种全双工的网络技术(具体百度好了,主要以websocket内容使用为主,不干扰大家的重点),能让我们在浏览器和服务端之间通过一次握手形成一条快速通道,直接进行数据的传输前端+后端 一个demo案例感受下具体的socket运作流程SpringBoot使用依原创 2022-03-27 16:02:12 · 3962 阅读 · 0 评论 -
SpingBoot项目代码和依赖分离部署
SpingBoot项目代码和依赖分离部署项目开发中,部署项目必不可少的一步,项目依赖包通常都会很大,多则上百M,从打包,上传,部署虽说不至于送走开发人员,但是体验感极差,dddd,而且如果遇到改动很少的地方又不得不改好马上上传,就有种吃力不讨好的低效感。在国外服务器部署项目更是惨不忍睹(本人亲测)所以根据我自己实际的情况优化了下上传的方式,顿时感觉腰不酸了,腿不痛了,连心跳也没有了ps:war包当然会好点,我自己觉得不好用,都是得找到替换的,不如直接打包项目代码,速度更快,不用管修改了哪些,萝卜青菜各原创 2022-03-18 18:28:34 · 495 阅读 · 0 评论 -
邮箱发送-163、QQ、Gmail-排名不分先后
邮箱发送-163、QQ、Gmail-排名不分先后背景利用三方发送邮件,归根结底还是业务需要,这里有一个需要发送验证码信息的需求,因为当地原因,使用邮件较多,所以考虑了邮件进行信息的发送(从此开始了踩坑之路)开启 IMAP, POP3,SMTP协议这个每个邮箱不一样,基本找设置去开启,会有一个授权码(一定记得备份!!),需要在下面的代码中去填写,帮助你登录发送信息,可以理解为安全的身份认证的一种依赖导入 <dependency> <groupId>原创 2022-03-07 18:44:39 · 464 阅读 · 0 评论 -
Linux服务器上使用脚本启动Jar包
Linux服务器上使用脚本启动Jar包积累下日常的使用脚本,因为发现每次需要的时候要么找到付费的,要么找到有各种小问题的,用了这么久才想起来作为文章来发布兼收藏(还是因为服务器出了问题,找不到之前的脚本,没法拿来直接用,太浪费时间了,所以干脆直接放在自己的文章下,利人利己)1 编写脚本文件start.sh这里的start.sh脚本文件应该和jar包放在同一文件夹下,方便管理,分开放容易出问题,建议放一起#!/bin/bash#这里可替换为你自己的执行程序,其他代码无需更改APP_NAME=ast原创 2022-02-24 10:11:52 · 1072 阅读 · 0 评论 -
集成App消息推送
集成App消息推送(没有另外的价钱,免费良心)unipush推送,可以实现在线和离线的推送,送达率也相当的客观。需要注意的是Android的离线推送需要集成各厂商,基本就是注册各平台的开发账号集成应用即可(华为,小米,魅族等),具体操作有具体社区的文档讲解,地址:https://ask.dcloud.net.cn/article/35622推送通知和透传消息的选择个人在开发中使用的是透传消息的模板,因为看文档理解,在线的情况走个推通道都是可以推送到设备的,没有特殊情况不需要考虑,在离线的情况下,推送原创 2021-08-02 15:42:44 · 561 阅读 · 0 评论 -
定时任务之实现方式
定时任务之实现方式定时任务:字面意思,任务可控,具体的时间由我们来设定,让任务在我们制定的时间按照制定的时间间隔频率来执行Timer和TimerTaskpublic void task() { Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { } },原创 2021-06-01 09:09:56 · 174 阅读 · 1 评论 -
Spring缓存注解的使用@Cacheable、@CacheEvict、@CachePut
Spring缓存注解的使用@Cacheable、@CachePut、@CacheEvict、Spring Cache缓存注解,起到数据缓存的作用,在缓存的基本使用中简化了步骤,在调用方法的时候,将参数和返回结果作为键值对存放在缓存中,下次再次请求的时候,如果缓存中存在就直接获取结果,不用再次请求数据库,增大数据库的压力。(刚接触感觉跟redis没啥区别,使用中也确实没感觉出来啥区别)使用范围:controller,service,dao中的方法上面都可以添加注解(其他类上我没试过),也确实生效了,如果失原创 2021-06-01 09:09:33 · 581 阅读 · 1 评论 -
拦截器(Inteceptor)和过滤器(Filter)的使用
拦截器(Inteceptor)和过滤器(Filter)的使用主要讲解下关于两者的使用,具体原理网上有很多讲解的,在这就不说废话了,主要展示注解实现1.Interceptor拦截器实现/** * @Author: *** * @Date: *** * @Description:在请求体中加入流水号参数(加入流水号跟踪日志) */@Configurationpublic class SerialInterceptor implements HandlerInterceptor { /**原创 2020-12-10 15:53:21 · 418 阅读 · 0 评论 -
MyBatis中的参数失效情况
MyBatis中的参数失效情况在写代码的过程中,需要在xml文件中写sql语句进行数据查询,但是测试的过程中发现deleteStatus和type参数为0的时候,相应的sql语句并没有成功拼接select a.id, a.type, a.style_name, a.item_code, a.title, a.sale, a.technology, a.year, a.delete_status, a.publish_status, a.new_status, a.recommend_st原创 2020-12-10 15:25:25 · 1276 阅读 · 0 评论 -
redis使用过程中的乱码
项目中使用redisTemplate在存值出现\xAC\xED\,实测有效Lettuce是一个高性能基于Java编写的Redis驱动框架,使用lettuce操作redis更加安全,多线程共享实例,比jedis更好。使用流程添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-start原创 2020-12-09 13:53:46 · 642 阅读 · 0 评论 -
构造函数、构造代码块和静态代码块的执行顺序
面试题之要命的构造函数、构造代码块和静态代码块的执行顺序真正遇到题目的时候和平时看的知识点结合的不是很顺利,什么类的加载过程啊,对象的创建过程等等完全想不起来,没法结合具体题目思考,所以还是靠题目实战。上代码!!!public class A { String name = "jack"; public A() { System.out.println("a无惨构造"); } public A(String name) { thi原创 2020-07-07 15:08:34 · 206 阅读 · 0 评论 -
关于多条件检索和数据导出word表格及合并
1.项目搭建1.1 框架生成采用的是renren-fast的后台脚手架框架,是人人开源社区采用Spring、MyBatis、Shiro编写的;1.1.1 建立数据库表 搭建完成后,先需要建立好数据库的所有数据表,以便代码生成器生成1.1.2 代码生成器 随后利用代码生成器生成相应实体的controller,service,dao,entity实体以及mapper中的xml映射文件。1.1.3 业务层修改 基本的增删改查具有了,接下来就根据实际的业务需求修改代码(主要针对业务逻辑层)2原创 2020-06-10 08:54:22 · 477 阅读 · 0 评论 -
对开发初步认识和体验
关于实际开发过程的流程(自己实践感受的)这篇不算是什么技术心得分享了,就是自己的一些感受吧,当是日记一样记录一下1.准备工作当开启一个新的项目之前,准备工作还是需要很充分的,项目初期的工作可以说是整个工作的奠定基础。这就我们经常说的想要盖房子,起初的规划和地基的建设是至关重要的,不然火急火燎的把房子改好,风一吹房子就到了那完全是费财费力,吃力不讨好的事咱可不干!术业有专攻,这个作为一名小白实习生,咱也不敢多加评论哈虽然没接触过前期工作,但是有句话说的好,没吃过那啥,还没见过那啥跑吗,真的是(哈哈哈)原创 2020-05-25 10:17:05 · 223 阅读 · 0 评论 -
理解连接池原理之自定义连接池☺
理解连接池原理之自定义连接池☺目的:主要通过自定义连接池,了解连接池具体的工作原理,方便以后的使用1.继承DataSource接口,实现方法,重写构造方法和getConnection()方法构造方法中使用包装类MyConnection对连接的对象Connection进行包装使用close()方法,作用是把连接归还到连接池,而不是关闭。package com.itheima.dat...原创 2019-08-26 18:03:32 · 268 阅读 · 0 评论 -
IO流
1.字节输出流OutputStream对IO流进行总结归纳,主要是使用的时候太混乱了原创 2019-08-26 22:45:47 · 82 阅读 · 0 评论 -
【类与对象、封装、构造方法】
【类与对象、封装、构造方法】一. 面向对象思想概述1. 面向过程和面向对象面向过程: 强调过程(强调做一件事其中的每一个步骤)面向对象: 做一件事, 不自己做, 而是利用对象来完成举例面向过程: 拿盆子 >> 放衣服 >> 放洗衣粉 >> 倒水 >> 泡 >> 搓 >> 漂洗 >> ...原创 2019-08-28 16:49:43 · 98 阅读 · 0 评论 -
day07【Scanner类、Random类、ArrayList类】
day07【Scanner类、Random类、ArrayList类】基础类的掌握,还是需要多敲代码,好记性不如多敲几遍形成肌肉记忆1. Scanner类2. Random类3. ArrayList类(list集合的常用类,需要多练习)alt + insert一. API代码的说明书1. API中的包Java中有很多的包, 包中有存放了很多的类lang包中的内容可以直接使...原创 2019-09-10 10:58:54 · 140 阅读 · 0 评论 -
day08【String类、static关键字、Arrays类、
**String类、static关键字、Arrays类、Math类的具体使用**一. String类(重点)1. String的特点特点任何的字符串常量(“abc”), 就是字符串的对象, 是对象就能够调用String类中的方法.字符串是不可变的字符序列2. String类的构造方法(1) 两个没用的构造方法String(): 创建了一个String对象, 表示的是空字符串...原创 2019-09-16 23:31:45 · 84 阅读 · 0 评论 -
【继承、super、this、抽象类】
【继承、super、this、抽象类】一. 继承(重点)1. 继承的格式和特点格式public class Fu { }// ============================================public class Zi extends Fu{ }// Zi继承了Fu, Zi是子类, Fu是父类特点子类可以使用父类所有非私有的属...原创 2019-09-20 23:19:02 · 62 阅读 · 0 评论 -
【接口、多态】
【接口、多态】一. 接口1. 接口的创建和实现格式(1) 如何创建接口public interface 接口名 {}(2) 如何实现接口public class 类 implements 接口名 { }接口的多实现public class 类 implements 接口1, 接口2, 接口3 { }2. 接口中成员的定义格式(特点)(1) 抽象方法// p...原创 2019-09-20 23:20:40 · 64 阅读 · 0 评论 -
【final、权限、内部类】
【final、权限、内部类、引用类型】!!主要学会使用,理解重要一. 自增运算符配合使用(适用于绝大部分情况)++在前: 先自增, 后运算++在后: 先运算, 后自增正确的理解方式无论++在哪都先自增++在前, 参与运算的是++之后的值++在后, 参与运算的是++之前的值二. final关键字final: 最终final可以用来修饰: 类, 方法, ...原创 2019-09-20 23:22:43 · 72 阅读 · 0 评论 -
数组的定义和使用
day05【数组】一. 数组的定义(重点)* 容器: 存放多个数据数组的概念: 是一个容器, 用来存放同一种数据类型的多条数据, 长度是固定的.如何定义数组(1) 第一种格式数据类型[] 数组名 = new 数据类型[长度];// 必须制定长度, 长度是固定的.// 等号左右的数据类型必须是相同的适用于只知道数组的长度, 还不知道内容, 具体的内容, 下面再赋值(2) 第二种格...原创 2019-08-21 21:36:16 · 249 阅读 · 0 评论