java
那一抹阳光爱发呆
这个作者很懒,什么都没留下…
展开
-
在tomcat启动时启动定时任务ServletContextListener
package com.zzht.cctv.defect.calculate.schedule;import java.util.Calendar;import java.util.Date;import java.util.Timer;import javax.annotation.Resource;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import jav.原创 2021-07-29 09:38:43 · 564 阅读 · 0 评论 -
Collections.sort 排序
1.针对基本数据类型的list集合进行排序这种相对来说比较简单,主要用于List<Integer> sortList 、List<Double> sortList等等Collections.sort(sortList);该方法为默认升序如果要降序,可改为:Collections.sort(testList,Collections.reverseOrder());2.针对实体类bean集合进行排序一种方式是该bean需要实现Comparable接口public原创 2021-03-19 10:41:47 · 2360 阅读 · 0 评论 -
java 8中利用stream()对list进行遍历、过滤、排序
1.获取list中id的集合List<Integer> lstVideoID = listVideoLine.stream().map(x -> x.getVideoId()).collect(Collectors.toList());2.list通过过滤条件遍历List<VideoGis> selectList = lstVideoGis.stream().filter(x-> x.getLineID().equals(d.getLineId())).col原创 2021-01-15 16:50:59 · 5097 阅读 · 2 评论 -
通过smb jcifs共享文件的方式操作文件
1.引入maven依赖 <dependency> <groupId>jcifs</groupId> <artifactId>jcifs</artifactId> <version>1.3.17</version> </dependency>2.smb工具类import java.io.File...原创 2021-01-14 15:19:30 · 903 阅读 · 0 评论 -
字符串以逗号分隔的转换为List或数组方法
一:字符串以逗号分隔的转换为List方法1.利用JDK的Arrays类StringString str ="a,b,c";List<String> split= Arrays.asList(str.split(","));2.利用Guava的SplitterStringString str ="a, b, c";List<String> splitToList= Splitter.on(",").trimResults().splitToList(str);转载 2020-12-07 16:25:54 · 28165 阅读 · 0 评论 -
java实现数据库配置yml文件用户名密码加密
1.pom文件中加入依赖,注意这里版本不能太高,我之前用的3.0.2,一直报错(Failed to bind properties under ‘spring.datasource.password‘ to java.lang.String),踩坑记录下 <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-原创 2020-11-18 16:29:48 · 2914 阅读 · 0 评论 -
Java判断字符串是不是时间日期格式,字符串转时间格式,UTC时间格式化
##引入包:import org.apache.commons.lang3.time.DateUtils;private static String[] parsePatterns = {"yyyy-MM-dd","yyyy年MM月dd日", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyyMMdd"};.原创 2020-10-30 15:44:44 · 1223 阅读 · 0 评论 -
java结合elaticsearch实现添加距离返回字段(按经纬度)
目的:通过经纬度查询获取距离前言:在之前讲过通过排序在es的sort域中可以获取距离返回值,这次说一下如果不排序怎么获取距离的返回值实现方式:采用es脚本实现1.dsl语言实现:可在kibana插件查询GET process/_doc/_search{ "_source":[], "script_fields": { "distance": { "script": { "source": "doc['location'].arcDistanc原创 2020-10-23 14:02:04 · 1791 阅读 · 1 评论 -
java8根据条件快速筛选list中的集合,不用for循环
1、创建个Student对象public class Student { private String name;//姓名 private Integer age;//年龄 private int sex;//性别 private String professional;//专业 public String getName() { return name; } public void setName(String name原创 2020-09-22 11:22:54 · 2087 阅读 · 0 评论 -
java拼接字符串构造in查询参数
代码如下: private String getInParm(String string) { String[] strs = string.split(","); StringBuilder sb = new StringBuilder(); sb.append("("); for (int i = 0; i < strs.length; i++) { sb.append("'").append(s原创 2020-09-11 10:35:27 · 1666 阅读 · 0 评论 -
ElasticSearch如何使用以及java代码如何查询并排序ES中的数据(距离排序)
1.环境准备elasticsearch压缩包、kibana插件、head-master插件,具体怎么安装配置,小伙伴们可以自行百度网上很多案例可参考:https://blog.csdn.net/sinat_42338962/article/details/85227902这里说一下,国内下载一般都很慢,可以参考这篇文章,博主都放在百度云,下载很方便文章链接:https://blog.csdn.net/weixin_37281289/article/details/1014834342.h原创 2020-09-10 18:03:26 · 6766 阅读 · 0 评论 -
怎么样防止sql注入
1.(简单又有效的方法)PreparedStatement采用预编译语句集,它内置了处理SQL注入的能力,只要使用它的setXXX方法传值即可。使用好处:(1).代码的可读性和可维护性.(2).PreparedStatement尽最大可能提高性能.(3).最重要的一点是极大地提高了安全性.原理:sql注入只对sql语句的准备(编译)过程有破坏作用而PreparedStatement已经准备好了,执行阶段只是把输入串作为数据处理,而不再对sql语句进行解析,准备,因此也就避原创 2020-07-31 17:09:27 · 103 阅读 · 0 评论 -
常用请求返回状态码
1.301:代表永久性转移(Permanently Moved)使用301跳转的场景:1)域名到期不想续费(或者发现了更适合网站的域名),想换个域名。2)在搜索引擎的搜索结果中出现了不带www的域名,而带www的域名却没有收录,这个时候可以用301重定向来告诉搜索引擎我们目标的域名是哪一个。3)空间服务器不稳定,换空间的时候。2.302:代表暂时性转移(Temporarily Moved )操作时发现没有登录跳转到登录界面3.400:Bad Request服务器遇到了一个未曾预料的原创 2020-07-30 20:57:21 · 179 阅读 · 0 评论 -
事务在什么情况下会失效
1.spring声明式事务管理默认对非检查型异常和运行时异常进行事务回滚代码中try……catch抛出的Exception异常,属于检查型异常,Spring的框架默认是不会进行回滚的。所以必须在service捕获异常,然后再次手动 throw 一个非检查型异常,这样事务方才起效。方法名前面有:@Transactionaltry{ …………} catch (Exception e) { ………… throw new RuntimeException(e)...原创 2020-07-29 18:36:50 · 3410 阅读 · 0 评论 -
单向链表和双向链表有什么区别?各自有什么优缺点?
1、指向不bai同:单向链表只有du一个指向下一结点的指针,zhi双向链表除了有一个指dao向下一结点的指针外,还有一个指向前一结点的指针。2、功能不同:单向链表只能next ,双向链表可以return。3、单双向不同:单链表只能单向读取,双向链表可以通过prev()快速找到前一结点。单向链表优缺点:1、优点:单向链表增加删除节点简单。遍历时候不会死循环;2、缺点:只能从头到尾遍历。只能找到后继,无法找到前驱,也就是只能前进。双向链表优缺点:1、优点:可以找到前驱和后继,可进可退原创 2020-07-28 20:33:00 · 16636 阅读 · 0 评论 -
mybatis实现原理和mysql的索引存储结构
通过resource加载mapper.xml,生成一个inputStream的输入流,创建sqlsessionfactorybuilder对象,调用该对象的builder方法,返回一个sqlsessionfactory对象,由sqlsessionfactory对象生成sqlsession,通过statement id找到对应的statement,通过传入的参数进行一系列复杂判断来生成执行的sql,再通过jdbc执行sql,然后把结果封装成map或list返回...原创 2020-07-26 15:29:37 · 352 阅读 · 0 评论 -
HashMap和concurrenthashmap和hashtable的比较
hashmap底层是数组和单项链表的结合体。当添加元素时,先把K,V封装到node对象中,底层调用hashcode方法算出hash值,得到数组下标。1.如果数组下标没有任何元素,则添加成功2.如果数组下标位置有链表,则调用equals方法,若返回true,则覆盖;返回false,则把该元素添加到链表的末端查找元素同理,先通过K的hashcode得到数组下标,再调用K的equals方法与链表上的节点比对,若返回true,则该元素就是要查找的元素...原创 2020-07-26 11:17:22 · 107 阅读 · 0 评论 -
set的实现原理
set的去重是通过两个函数__hash__和__eq__结合实现的。1、当两个变量的哈希值不相同时,就认为这两个变量是不同的2、当两个变量哈希值一样时,调用__eq__方法,当返回值为True时认为这两个变量是同一个,应该去除一个。返回FALSE时,不去重...原创 2020-07-24 16:01:22 · 2353 阅读 · 0 评论 -
java对字符串进行MD5加密
public static String createMD5(String str) { StringBuffer stringBuffer = null; String hexString = null; try { //1.指定加密算法类型 MessageDigest digest = MessageDigest.getInstance("M...原创 2020-07-15 16:37:52 · 243 阅读 · 0 评论 -
java利用poi读取excel文件内容
package com.tdx.tdxoatd.service;import com.tdx.annotation.InitConst;import com.tdx.tdxoatd.util.ConstUtil;import com.tdx.tdxoatd.util.UuidUtil;import com.tdx.util.MapUtil;import com.tdx.util.XmlUtil;import org.apache.logging.log4j.LogManager;import.原创 2020-07-15 14:19:20 · 435 阅读 · 0 评论 -
java调用soap接口协议
package com.tdx.smg.service;import com.tdx.annotation.Param;import com.tdx.model.TDataResult;import com.tdx.smg.utils.SendUtils;import com.tdx.tdxUtils.TdxComUtils;import com.tdx.web.annotation.Comment;import com.tdx.web.annotation.Service;import .原创 2020-07-15 14:12:21 · 3440 阅读 · 0 评论 -
java随机生成指定长度的字符串
1、生成的字符串每个位置都有可能是str中的一个字母或数字,需要导入的包是import java.util.Random;//length用户要求产生字符串的长度publicstaticString getRandomString(intlength){String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";Random random=newRandom();...原创 2020-07-09 10:23:28 · 2707 阅读 · 0 评论 -
java获取指定文件夹下的所有文件
public static void readfile(String filepath) throws FileNotFoundException, IOException { try { File file = new File(filepath); if (!file.isDirectory()) { Syst...转载 2020-07-09 08:25:56 · 443 阅读 · 0 评论 -
【Java面试题】List 如何一边遍历,一边删除?
方法1:使用Iterator的remove()方法publicstaticvoidmain(String[]args){List<String>platformList=newArrayList<>();platformList.add("博客园");platformList.add("CSDN");platformList.add("掘金");Iterator<String>iterator=...转载 2020-06-11 14:16:33 · 118 阅读 · 0 评论 -
list集合和数组之间的转换
1.数组转Listpackage listtoArray;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.List;import java.util.stream.Collectors;import java.util.stream.Stream;public class ArrayToList { public stati...原创 2020-06-10 08:43:32 · 257 阅读 · 0 评论 -
java中一个对象从创建到销毁的过程和 JVM类加载过程
Student stu = new Student(“zhangsan”);1、用户创建了一个Student对象,运行时JVM首先会去方法区寻找该对象的类型信息,没有则使用类加载器classloader将Student.class字节码文件加载至内存中的方法区,并将Student类的类型信息存放至方法区。2、接着JVM在堆中为新的Student实例分配内存空间,这个实例持有着指向方法区的Student类型信息的引用,引用指的是类型信息在方法区中的内存地址。3、在此运行的JVM进程中,会首先起一个线程转载 2020-05-30 15:15:59 · 2343 阅读 · 0 评论 -
消息队列的相关知识
1.为什么要使用消息队列消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削峰等问题。实现高性能,高可用,可伸缩和最终一致性架构,是大型分布式系统不可缺少的中间件。流量如果非常之巨大,消息队列必不可少的。2.如何保证消息队列高可用RabbitMQ的高可用性rabbitmq有三种模式:单机模式,普通集群模式,镜像集群模式镜像集群模式才具备高可用性的特点,跟普通集群模式不一样的是,你创建的queue,无论元数据还是queue里的消息都会存在于多个实例上,然后每次你写消息转载 2020-05-15 10:55:56 · 124 阅读 · 0 评论 -
对redis的认知
典型的应用场景如何解决缓存和数据库的不一致性1.缓存有效期--->例如3秒后过期,一定时间内数据不一致,最终来看会保持一致(也会有雪崩的代价)2.异步维护-->缓存管理系统(redis,代理缓存,静态化缓存...),canal:基于数据库增量日志解析,提供增量数据订阅和消费要用缓存提高并发性能,就要接受它的不一致性,(读多写少用缓存)缓存雪崩:Redi...原创 2019-12-26 16:43:01 · 125 阅读 · 0 评论 -
对多线程的认知
1.用多线程的目的是什么?充分利用cpu资源,并发做多件事2.单核cpu机器上适不适合多线程?适合,如果是单线程,线程中需要等待IO时(阻塞),此时CPU就空闲了出来了3.线程什么时候会让出CPU?阻塞时 wait await 等待iosleep、yield、线程结束后4.线程是什么?一条代码执行流(thread),完成一组代码的执行,而这一组代码,称之为任务(ru...原创 2019-12-24 16:28:05 · 96 阅读 · 0 评论 -
tomcat的实现原理
目的是为了接受http请求,触发代码的执行大概过程:1.接受HTTP请求-->网络请求-->网络七层模型-->网络IP--->端口2.同时处理多个请求(并发) java执行的最小单位“线程”3.请求多种多样---http url不同,处理逻辑不同 根据请求的网络数据,取出URL,执行对应的代码4.tomcat特殊点:多个项目...原创 2019-12-24 09:24:04 · 123 阅读 · 0 评论 -
在地址栏输入网址回车
从地址栏输入一个网址,按下回车键,会经历那些过程?1.用户发送一个url请求;2.浏览器通过DNS(domain name system)获取网站的IP地址:客户端先检查本地缓存区是否有对应的IP地址,若找到则返回,若没找到则请求上级DNS服务器,直到找到或找到根节点;3.浏览器和服务器通过TCP三次握手来建立TCP连接;4.一旦连接建立,浏览器会通过该连接向服务器端发送HTTP请求;...转载 2019-12-23 15:16:54 · 341 阅读 · 0 评论 -
mycat分库分表技术原理简单介绍
mycat分库分表原理一:介绍1:mycat就是一个数据库中间件,数据库的代理,它屏蔽了物理数据库,应用连接mycat,然后mycat再连接物理数据库2:它支持水平拆分(分库分表,通过分库达到分表),支持多种分片规则3 : 它支持mysql、oracle、mongodb,sql server,并且支持数据库集群4: MyCat技术原理中最重要的一个动词是“拦截”,它拦截了用户发送过来...原创 2019-12-19 09:23:30 · 1420 阅读 · 0 评论 -
java线程6种状态
Java中的线程的状态分为6种。 初始(NEW):新创建了一个线程对象,但还没有调用start()方法。 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的成为“运行”。 线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权,此时...原创 2019-07-21 15:33:28 · 87 阅读 · 0 评论 -
BIO和NIO的区别
BIO:Tomcat7之前用的版本,blocking IO/阻塞IO。实现原理:客户端请求数据,tomcat服务端通过accpet获取新连接,获取之后丢给线程池去处理,但是处理完线程还是处于等待状态(等待这个连接有新的数据过来),不能被释放出来,相当于一个线程只能去处理一个连接,耗费了资源。NIO:tomcat8之后用的版本,Non-blocking IO(非阻塞IO),又称之为New IO。...原创 2019-07-23 19:56:44 · 176 阅读 · 0 评论 -
修改json字符串中某个key对应的value值
字符串转json ,下面这种方式会把原有的字符串顺序打乱,所以不采用JSONObject jsonObject = JSON.parseObject(insp.getTenFrequency());要先转为LinkedHashMap,再转jsonLinkedHashMap<String, Object> json = JSON.parseObject(insp.getTen...原创 2019-06-20 10:49:58 · 12679 阅读 · 1 评论 -
Map集合中value()方法与keySet()、entrySet()区别
在Map集合中values():方法是获取集合中的所有的值----没有键,没有对应关系,KeySet():将Map中所有的键存入到set集合中。因为set具备迭代器。所有可以迭代方式取出所有的键,再根据get方法。获取每一个键对应的值。 keySet():迭代后只能通过get()取keyentrySet():Set<Map.Entry<K,V>> entry...原创 2019-05-15 11:24:55 · 70 阅读 · 0 评论 -
java中抛异常后如何使事务回滚
spring声明式事务管理默认对非检查型异常和运行时异常进行事务回滚,而对检查型异常则不进行回滚操作代码中try……catch抛出的Exception异常,属于检查型异常,Spring的框架默认是不会进行回滚的。所以必须在service捕获异常,然后再次手动 throw 一个非检查型异常,这样事务方才起效.首先方法名前面有:@Transactional,下面介绍三种使事务回滚的方式...原创 2019-05-07 17:54:01 · 6114 阅读 · 1 评论 -
java后台格式化时间以及前台vue格式化时间(时钟计数器)
1.后台格式化时间SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String currentDate = df.format(entity.getEffectDate());2.vue前台// 获取当前时间函数nowTimes() {let year = new Date().getFul...原创 2019-05-07 17:35:49 · 999 阅读 · 0 评论 -
java中timer定时器引用service报空指针
使用java中timer定时器执行代码,会自动开启线程来跑定时任务中的方法,但是用 @Autowired private SysUserTokenService sysUserTokenService;这样的方式引用不了这个service,直接报空指针,此时就要用SysUserTokenService sysUserTokenService =(SysU...原创 2019-05-07 17:24:30 · 1466 阅读 · 1 评论