
Java进阶
Java基础进阶,能力提升
onlyljy
做一个快乐的码农
展开
-
使用grok解析日志文件
try { File file = new File("C:\\Users\\Administrator\\Desktop\\220301.log") ; //创建对象集合,存储需要解析保存的字段 ArrayList<LogAnalysis> list = new ArrayList<>(); //构造一个BufferedReader类来读取文件 BufferedR原创 2022-03-04 17:43:39 · 1108 阅读 · 0 评论 -
springboot项目同一个类中使用Cacheable不生效
1.原因:Cacheable默认使用aop代理方式,通过创建内部类形式实现,而同一个类中调用无法通过代理,所以缓存不生效2.解决方法:在当前类中注入该类的bean对象,通过当前对象的代理对象实现缓存public class CacheManagerService { private static Logger logger= LoggerFactory.getLogger(CacheManagerService.class); @Resource private CacheMa原创 2021-09-27 18:12:13 · 2080 阅读 · 0 评论 -
Property or field ‘key‘ cannot be found on object of type ‘org.springframework.cache.interceptor.Ca
错误信息 org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'dc_PartEnumTypeInfo' cannot be found on object of type 'org.springframework.cache.interceptor.CacheExpressionRootObject' - maybe not public or not valid? at org原创 2021-09-27 17:47:43 · 2603 阅读 · 0 评论 -
JSON parse error: Invalid UTF-8 start byte 0xb7 异常,windows环境下cmd窗口运行jar包中文参数乱码
1.springBoot项目,本地idea中运行没问题,部署到线上服务器(window服务器)后,采用postman测试对于json传参中某些汉字出现时报错查看后台日志,发现问题原因2.在项目中使用到token拦截器,对于json格式请求参数,使用到request包装类RequestWrapper继承HttpServletRequestWrapper,因为inputStrream流只能读取一次,在拦截器中获取到值进行验证后,在controller中就获取不到值了,所以使用RequestWrapper原创 2021-09-10 17:00:47 · 4359 阅读 · 0 评论 -
java form-data格式上传文件或文件二进制流
1.上传文件 String result=""; PostMethod post = new PostMethod(url); Part[] parts = { new StringPart("token", "1F019648B56CF2C2A380248ED6F4A650"), new StringPart("key", "111111111111111"), new FilePart原创 2021-08-31 15:21:51 · 1853 阅读 · 0 评论 -
springBoot项目使用apollo
1.输入地址:http://*******:8070进入apollo配置中心2.点击创建新项目3.新增配置,提交发布4.引入apollo坐标 <dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> <version>原创 2021-08-23 13:46:07 · 393 阅读 · 0 评论 -
spring Boot项目构建拦截器
1.mvc拦截器package com.ttfund.crm.aspect;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.cors.CorsConfiguration;import org.springframework.web.cors.UrlBasedCor原创 2021-08-21 16:58:46 · 104 阅读 · 0 评论 -
阿里云服务器安装apollo
1.下载apollo配置中心:apollo配置中心下载下载zip格式就可以2.将下载后的压缩包上传到服务器,可以使用宝塔面板,也可以用指令,最好先建一个目录用来存放压缩包和解压后的文件3.将压缩包解压,宝塔面板可以直接解压指令:unzip apollo-build-scripts-master.zip4.新建两个数据库,将解压后的文件夹中sql文件夹下的两个sql文件导入数据库连接工具,运行即可运行语句可能会出现异常,出现异常的话将语句中所有的下图红框内的去掉5.解压后的apollo-b原创 2021-08-17 17:45:28 · 533 阅读 · 0 评论 -
ftp文件上传、下载、删除
package com.ttfund.crm.sync.utils;import org.apache.commons.net.ftp.FTPClient;import org.apache.commons.net.ftp.FTPFile;import org.apache.commons.net.ftp.FTPFileFilter;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework原创 2021-08-11 15:40:59 · 482 阅读 · 0 评论 -
前端上传excle在服务器保存地址,后端返回下载流
1.对于非加密excle文件,将文件读成二进制流返回 ServletOutputStream out = null; FileInputStream in = null; try { in = new FileInputStream(new File(path)); //设置文件ContentType类型 response.setContentType("ap原创 2021-08-10 13:58:03 · 267 阅读 · 0 评论 -
java使用多线程运行集合数据
1.配置线程池参数import org.slf4j.MDC;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import java.util.Map;import java.util.concurrent.*;import java.util.concurrent.atomic.AtomicInteger;/** *原创 2021-08-09 15:08:15 · 491 阅读 · 0 评论 -
java使用mybatis根据id集合批量删除、修改数据
1.在使用mybatis批量删除、修改数据时,mapper.xml代码和controller参数接收方式controller @RequestMapping(value = "/deletePapersExpire", method = RequestMethod.GET) public ResultInfo<Boolean> deletePapersExpire(Integer[] keyIdList,String updateBy) { return new Re原创 2021-07-23 14:53:40 · 1867 阅读 · 0 评论 -
SpringBoot项目多模块之间调用出现 Invalid bound statement (not found)
在使用SpringBoot项目多模块间接口调用时,a模块调用b模块mybatis报错Invalid bound statement (not found),但是单独运行b模块则没有任何问题,这种情况下可能是application.yml配置文件错误一般的写法mybatis: mapper-locations: classpath:/mapper/*.xml config-location: classpath:mybatis-config.xml正确的写法mybatis: mapper原创 2021-07-19 15:10:52 · 1718 阅读 · 0 评论 -
EasyExcel操作数据
1.使用EasyExcel将数据写入本地文件 File fileName = new File(System.getProperty("java.io.tmpdir")+"投诉记录"+System.currentTimeMillis()+ ".xlsx"); ExcelWriter excelWriter = EasyExcel.write(fileName, TaskComplaintRecord.class).build(); WriteSheet writeShee原创 2021-07-16 14:42:00 · 2651 阅读 · 0 评论 -
java代码实现post请求以x-www-form-urlencoded格式传递参数 NameValuePair[] 数组转成字符串
StringBuffer buffer = new StringBuffer(); for (int i = 0; i < data.length; i++) { NameValuePair nameValue = data[i]; if (i == 0) { buffer.append(nameValue.getName() + "=" + nameValue.get...原创 2021-07-15 16:04:25 · 1229 阅读 · 0 评论 -
java代码实现post请求以x-www-form-urlencoded格式传递参数
1.post请求方式2.java代码实现 //INFO json数组 JSONArray jsonArray = new JSONArray(); for (int k = 0; k < list.size(); k++) { //数组内json对象 JSONObject info=new JSONObject(); info.put("Remark",list.get(k).getmHandledResu原创 2021-07-15 15:46:21 · 13520 阅读 · 0 评论 -
SpringBoot自动装配原理
1使用springboot项目时不需要写一大堆配置文件,只需要在pom中引入坐标,在配置文件中配置相应的属性值,springboot的自动装配会自动生成所需的配置类注入到IO容器中。2.spingboot启动类中所需的一个注解为SpringBootApplication,这个注解是是三个注解合成的@Configuration 代表一个配置类,相当于bean.xml文件@ComponentScan 扫码项目中的所有bean@EnableAutoConfiguration 自动装配注解,开启sprin原创 2021-03-22 19:52:48 · 106 阅读 · 0 评论 -
@NotNull @Valid
@NotBlank:只能用在string上,值不能为null,也不可以是长度为0的字符串@NotNull:不能为null,但是可以是长度为0的字符串@NotEmpty:不能为null,长度大于0使用以上注解必须和@Valid配合使用,接收参数是加上@Valid。...原创 2021-01-14 14:20:04 · 367 阅读 · 0 评论 -
HashMap底层原理解析
1.HashMap底层是hash表,hash表是如何实现扩容的?hash表默认是长度为16的数组,默认负载因子是0.75,当数组中已经存在的元素大于(数组长度负载因子时),数组就会发生扩容,扩容后的长度为(旧数组长度2)。2.HashMap如何添加元素?HashMap集合通过put添加元素时,会根据hashcode和数组长度计算需要存入的数组索引,如果该索引处已经存在元素,就会发生碰撞,然后就会判断已经存在的元素hash值和要存入的新元素hash值是否相等,如果相等直接覆盖旧的元素,不相等的话就会将新原创 2020-12-13 16:28:47 · 172 阅读 · 1 评论 -
深入理解java线程和线程池
1.何谓线程和进程?进程:正在运行的程序,具有独立性、动态性、并发性线程:进程的一个顺序控制流,是一条执行路径,一个进程如果只有一条执行路径称为单线程,如果有多个执行路径成为多线程2.并发和并行?并发:在同一个时间段,多条指令在一个cpu上交替执行并行:在同一时刻,多条指令在多个cpu上同时执行3.实现线程的三种方式继承Thread类,重写run方法,根据源码可以看出,由此方法创建的线程拥有多个特有的方法,比如获取当前线程的名字.getName,Thread类实现Runnable接口,并构造原创 2020-12-10 23:50:46 · 129 阅读 · 0 评论 -
Java线程的几种状态详解
1.Java线程到底有几种状态?有人说是五种(新建、就绪、运行、阻塞、死亡),计算机网络里面讲的线程状态也是这五种,但java线程状态和计网里的线程状态真的一样吗?查阅很多资料,最终从java.lang.Thread.State的源码看到java线程的状态(早期单线程进程状态就是上面的五种) public enum State { /** * Thread state for a thread which has not yet started. *原创 2020-12-06 19:34:21 · 425 阅读 · 1 评论 -
方法重载与重写的区别
1.方法重载和重写都是实现多态的方式,区别在于重载是编译时多态,重写是运行时多态。2.重载是在同一个类中,两个方法的方法名相同,参数列表不同(参数类型、顺序、个数),与方法返回值无关,可以有不同的修饰符3.重写发生在父类和子类之间,子类继承父类方法(非构造、final、static修饰的方法)并重写父类方法。重写规则:重写方法参数列表、返回值类型必须和父类被重写的方法保持一致重写方法的访问权限不能低于父类被重写的方法...原创 2020-12-04 15:43:52 · 21306 阅读 · 1 评论 -
二叉树、二叉查找树、平衡二叉树理解
1.二叉树二叉树特点二叉树中的每个节点的度都不大于2节点:在树结构中,每一个元素都称之为节点度:节点的子节点个数称之为该节点的度二叉树结构图2.二叉查找树二叉查找树特点二叉查找树又称二叉搜索树每个节点的度都不大于2 每个节点的左子节点都小于该节点每个节点的右子节点都大于该节点二叉查找树结构图二叉查找数添加子节点规则一样的不添加小的添加到左节点大的添加到右节点3.平衡二叉数...原创 2020-12-02 17:13:27 · 411 阅读 · 1 评论 -
关于集合
1.集合和数组区别?数组不可变,集合可变。数组可以存取基本数据类型和引用数据类型,集合只能存储引用数据类型,如果要存储基本数据类型,存储基本数据类型的包装类。2.集合分类?3.List和Set都是单列集合List集合存储有序,可重复,有索引Set集合存储无序,不可重复,无索引,存入的字符底层会自动进行排序,排序规则:jdk1.8之前使用数组+链表+哈希算法,jdk1.8之后使用数组+链表+红黑树+哈希算法(当链表长度大于8时,链表将转化为红黑树)。ArrayList底层是数组原创 2020-12-02 15:12:40 · 176 阅读 · 0 评论 -
VSCode终端出现 cnpm : 无法加载文件 C:\Users\GKK\AppData\Roaming\npm\cnpm
错误信息:cnpm : 无法加载文件 C:\Users\GKK\AppData\Roaming\npm\cnpm原因:此系统禁止了运行脚本解决方法:打开 PowerShell (右键,以管理员身份运行)然后输入:set-ExecutionPolicy RemoteSigned选择 A再输入 get-ExecutionPolicy...原创 2020-12-09 15:36:21 · 297 阅读 · 0 评论