![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 51
干了这杯柠檬多
运气是实力的一部分,但我运气向来不好,所以只能靠实力去弥补!
展开
-
垃圾回收器-G1垃圾回收器详解
1.G1不同于传统的cms等垃圾回收器,没有连续的年轻代和年老代,而是将jvm堆划分为了多个大小相等的区域。默认是2048块(XX:G1HeapRegionSize参数指定每块大小,必须是2次幂),每块大小为jvm堆内存/区域数量。2.G1初始年轻代是占堆内存5%(-XX:G1NewSizePercent设置新生代初始占比),会随着系统运行变化增多(区域会在年轻代和年老老代变化),但不会超过60%(-XX:G1MaxNewSizePercent设置年轻代最大占比)。g1的Eden区同其他gc,默认都是8原创 2022-08-21 17:39:13 · 2032 阅读 · 0 评论 -
垃圾回收器-CMS及常用回收器分析
1.cms、g1和zgc其实原理差不多2.cms标记整理时,会扫描直接引用对象 如 new A();但不去扫描a里面的其他引用对象3.为什么csm初始标记时要stw,不停一直有新增标记不完4..jvm在3g以上才适合cms5.在cms并发标记的时候会出现初始标记的对象发生了改变,这时就需要进行重新标记(采用三色标记增量算法)。重新标记后,进入到并发清理阶段(在该阶段如果来了一个不需要清理但无标记的对象,会不会被误删?...原创 2022-08-07 15:38:58 · 1399 阅读 · 0 评论 -
java easyExcel导入导出简单使用
将excel的对象读入到了dataHolder中,需要自行修改的是路径path和Excel实体TestExcelEntity。如果本地想简单做一个数据导入,比如刷数之类的调用,就完全可以使用一个比较轻量化的工具类来实现。原创 2022-07-16 16:55:51 · 537 阅读 · 0 评论 -
java poi导出简易工具类
该工具类支持简单的导出逻辑,内容极少,可方便接入测试。maven依赖: <!--excel导出类--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.16</version>原创 2022-04-26 09:52:17 · 415 阅读 · 1 评论 -
利用反射覆盖类对象的默认值
一个demo:通过反射,将子类和父类中的属性值替换掉。1.一个子类和一个父类:public class BaseVo { private Boolean canCheck = true; public Boolean getCanCheck() { return canCheck; } public void setCanCheck(Boolean canCheck) { this.canCheck = canCheck;原创 2022-03-26 13:39:44 · 293 阅读 · 0 评论 -
Collectors.toMap方法报Duplicate key xxx错误信息
问题产生的原因:使用该方法时,转换后map的key重复,导致出现该错误。解决方法:使用toMap的重载方法Collectors.toMap(keyMapper, valueMapper, mergeFunction);代码示例: Map<String, Double> stockMap = new HashMap<>(); //改动前 stockMap = skuDataPoList.stream().collect(Collectors.toM原创 2021-11-01 16:48:07 · 965 阅读 · 0 评论 -
java 如何判断对象内的某个属性是空
朋友给我说了这个问题,第一反应是a.xx==null。朋友给我说错了,应该用反射,于是我总结了一下为什么要用反射。我认为有两点:1.你不知道这个对象是什么类型,如果是int类型,而int类型又不能用 ==null来判断。2.这个对象内的属性是私有呢,你就通过a.xx拿不到这个属性了。上代码:一个user对象public class User { private String a; private int b;}一个测试类:public class原创 2020-08-21 18:32:30 · 1501 阅读 · 0 评论 -
JDK动态代理的意义和用法
一、JDK动态代理的意义1.什么是代理?代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式的思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象。这些额外的操作通常需要与实际对象进行通信。2.java代理模式静态代理静态代理类:由程序员创建或者由第三方工具生成,再进行编译;在程序运行之前,代理类的.class文件已经存在了。 静原创 2020-07-23 18:01:25 · 2077 阅读 · 0 评论 -
在idea下jdk动态代理时反复输出的问题
先上代码:接口和实现类public interface Movie { void play();}public class NoVipMovie implements Movie { public void play(){ System.out.println("播放非vip电影"); }}InvocationHandler的实现类public class MyInvocationHandler implements Invocation.原创 2020-07-23 15:05:34 · 659 阅读 · 0 评论 -
随笔 自定义注解简单实现
自定义注解:@Target(FIELD)@Retention(RUNTIME)@Documentedpublic @interface Ano { public String name() default "ycx"; public String value();}@Documented // 代表这个注解,可以被javadoc 处理的(加不加都行)@Retention(RetentionPolicy.RUNTIME)// RetentionPolicy 生命周期.原创 2020-05-27 13:52:24 · 155 阅读 · 0 评论 -
java8新特性快速入门(介绍、示例)
Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。新特性Java8 新增了非常多的特性,我们主要讨论以下几个: Lambda 表达式− Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)。 方法引用− 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用...原创 2020-05-06 17:02:06 · 269 阅读 · 0 评论 -
spring data rest 入门(一)环境搭建
一、数据库localhost下创建一个数据库,里面有一张表为user表,id为自增。二、环境搭建<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.ap...原创 2020-02-02 13:41:28 · 275 阅读 · 0 评论 -
shiro入门(四)自定义Realm
Realm:域,Shiro 从从 Realm 获取安全数据(如用户、角色、权限),就是说 SecurityManager 要验证用户身份,那么它需要从 Realm 获取相应的用户进行比较以确定用户身份是否合法;也需要从 Realm 得到用户相应的角色 / 权限进行验证用户是否能进行操作;可以把 Realm 看成 DataSource,即安全数据源。我们继承 AuthorizingRealm 而...原创 2020-02-16 14:44:22 · 243 阅读 · 0 评论 -
springboot 日志配置文件logback
maven pom文件<!--日志 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>t...转载 2020-02-14 16:53:14 · 105 阅读 · 0 评论 -
shiro入门(三)连接数据库
maven环境:采用mysql数据库和c3p0连接池。<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://m...原创 2020-02-11 15:29:52 · 636 阅读 · 0 评论 -
shiro入门(二)授权
授权,也叫访问控制,即在应用中控制谁能访问哪些资源(如访问页面/编辑数据/页面操作等)。在授权中需了解的几个关键对象:主体(Subject)、资源(Resource)、权限(Permission)、角色(Role)。主体主体,即访问应用的用户,在 Shiro 中使用 Subject 代表该用户。资源用户只要授权后才能访问。权限权限表示在应用中用户能不能访问某个资源。Shiro...原创 2020-02-09 21:19:39 · 313 阅读 · 1 评论 -
shiro入门(一)身份验证
一、简介Apache Shiro 是 Java 的一个安全框架。目前,使用 Apache Shiro 的人越来越多,因为它相当简单,对比 Spring Security,可能没有 Spring Security 做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的 Shiro 就足够了。对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了。本教程只介绍基本...原创 2020-02-06 17:43:30 · 321 阅读 · 0 评论 -
spring data rest 入门(三)自定义查询
通过简单的增删改查知道了spring data rest 的基本语法,那么带入一些真实环境来实现一些用例。一、密码一栏的信息不想让用户看到。在user实体类中增加 @JsonIgnore private String password;http://localhost:8081/api/user/2返回结果:{ "name": "李四", ...原创 2020-02-04 11:29:05 · 708 阅读 · 0 评论 -
spring data rest 入门(二)CRUD基本使用
第一步将环境搭好以后开始CRUD操作。使用工具postman,eclipse,navicat。在配置文件上增加了一个/api的basepath。数据库:一、post新增使用postman工具进行相关操作:遇到的错误:No suitable HttpMessageConverter found to read request body into object of t...原创 2020-02-03 15:49:00 · 291 阅读 · 0 评论 -
JPA基本注解
数据库为:User实体类:package test.entity;import java.util.Date;import javax.persistence.Basic;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedVa...原创 2020-02-03 11:08:02 · 223 阅读 · 0 评论 -
YYYY与yyyy的区别
记于19年12月31日,支付报日期不在有效范围内,查看日志发现显示的时间为2020年12月31日。//使用DateDate d = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");System.out.println("当前时间:" + sdf.format(d));字母 ...原创 2020-01-22 12:52:06 · 12108 阅读 · 0 评论 -
微信小程序走工行渠道的微信支付
首先吐槽一个工行的效率问题,兜圈子,回复慢,人家事还多。对接和一堆业务员对接,完全不懂技术,说不到点上。给的账号三番五次是错的,并且文档描述也和实际demo不一致,完全靠百度一点一点磨出来的。微信小程序只能走微信支付,所以应客户需求走工行渠道的微信支付。先贴可以执行的代码:package com.hbbc.pi;import java.text.SimpleDateFormat;...原创 2019-12-03 17:12:58 · 5324 阅读 · 28 评论 -
线程池(二):java自定义线程池ThreadPoolExecutor
上一篇博文有说到四种常见的线程池,但是无论创建哪一种线程池必须要调用ThreadPoolExecutor这个类,线程池类为 java.util.concurrent.ThreadPoolExecutor,其关系为:既然我们都调用了ThreadPoolExecutor这个类,那么我们来详细解析一下这个类。ThreadPoolExecutor这个类的构造方法有六个参数:Thread...原创 2019-10-21 18:12:17 · 604 阅读 · 0 评论 -
线程池(一):java四种常用线程池
为什么使用线程池1.减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。2.可以根据系统的承受能力,调整线程池中工作线线程的数目,防止消耗过多的内存。在java.util.concurrent核心并发包下,JDK为我们提供了一个线程池工厂类—Executors。Executors提供了几种类型的线程池:public static ExecutorSe...原创 2019-10-21 17:13:33 · 313 阅读 · 0 评论 -
java线程池原理
前言如果有人问我:“你了解Java线程池吗”,我不打算回答Java中常用的几种线程池,也记不住。从线程池的上层API来看,再多种的线程池,无非是参数的不同,让它们呈现出了不同的特性,那么这些特性到底依赖什么样的原理实现,就更值得去深究,也是本文的目的。试着回答以下几个问题:线程池如何实现 非核心线程延迟死亡,如何做到 核心线程为什么不会死 如何释放核心线程 非核心线程能成为核心...转载 2019-10-15 16:43:01 · 331 阅读 · 0 评论 -
net.sf.json.JSONObject 和org.json.JSONObject 的差别
一、创建json对象org.json.JSONObject:JSONObject json = new JSONObject(str);net.sf.json.JSONObject:JSONObject json = JSONObject.fromObject(str);二、解析json直接用json对象.getXXX();方法获取net.sf.json.JSONObject: 没有严...原创 2019-07-17 17:11:26 · 517 阅读 · 0 评论 -
将数据库内容转为json数组 java
public class Test { public static void main(String[] args) { String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://127.0.0.1:3306/fyb?useUnicode=true&characterEncoding=u...原创 2019-06-27 11:35:23 · 1492 阅读 · 0 评论 -
微信小程序与java后台交互post得不到数据的坑
首先先贴微信小程序请求的代码:我们只传一个参数,使用post请求 wx.request({ url: 'http://127.0.0.1:8080/provider/demo', data: { MemberID: 1, //用户编号 }, method: 'post', ...原创 2019-06-04 16:06:57 · 3129 阅读 · 1 评论 -
http请求xml的报文接口
我们在进行接口对接时,会出现报文形式的信息传递,那么下文则介绍如何处理报文形式的xml文件。http(https)- post -xmlpublic static String sendHttps(String xmlInfo) { //String a="";//请求参数 String result = ""; PrintWriter ...原创 2019-06-10 15:40:43 · 6615 阅读 · 3 评论 -
java 截取响应报文一个标签内的信息
比如传过来的响应报文为:<?xml version=\"1.0\" encoding=\"utf-8\"?><business id=\"GETKPM\"><body><returncode>0</returncode><returnmsg>NTAwMTAyMDEwMDAyODk3MjAxOTA2MDYxNzI1ND...原创 2019-06-06 21:48:46 · 1150 阅读 · 0 评论 -
java选择题(集合,线程等)
1.ArrayList类的底层数据结构是( )A、数组结构B、链表结构C、哈希表结构D、红黑树结构 2.LinkedList类的特点是( )A、查询快B、增删快 C、元素不重复D、元素自然排序 3.Vector类的特点是( )A、线程同步B、线程不同步C、增删快D、底层是链表结构 4.关于迭代器说法错误的是()A、...原创 2018-06-22 20:21:45 · 38558 阅读 · 3 评论 -
将省市区数据库转化为json格式数据
数据库字段:实体类public class javaBean { public String code; public String name; public String parent_code;}主要代码:package test;import java.io.File;import java.io.FileWriter;import ...原创 2019-07-26 17:48:45 · 1582 阅读 · 0 评论 -
java 使用replaceAll将特殊字符替换为其他内容报错Illegal repetition
正则需要转义字符:'$', '(', ')', '*', '+', '.', '[', ']', '?', '\\', '^', '{', '}', '|'一个小demoString string= "abcs{{xfsada"; string=string.replaceAll("\\{\\{x","\\<span"); System.out.println(string);...原创 2019-08-02 14:54:05 · 9960 阅读 · 0 评论 -
连续子数组最大和 (java实现)
一个整形数组(有正有负),求数组中连续子数组(最少有一个元素)的最大和,要求时间复杂度O(n)。java代码实现: public static void main(String[] args) { int[] a= {2,-3,5,-3,5,7,-8,1,3,-5,6}; int maxvalue =a[0]; //最大和 int add=0; //第0-i个元素的和 ...原创 2019-08-19 10:27:07 · 521 阅读 · 0 评论 -
java级联查询
首先导入jquery的工具包。jsp页面:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8">...原创 2019-08-14 15:21:08 · 2059 阅读 · 0 评论 -
java 给带下划线的特殊汉字加上a标签,如(又、)
需求:有一串字符串,里面有正常的汉字有偏僻的汉字,现要给里面含有下划线的汉字加上跳转链接。如果使用char类型读取则可以正常读取“又”这种汉字,但“????”这种汉字由于占的字节较长,将会被拆成两个半字,从而达不到目的。 StringBuffer sBuffer=new StringBuffer(kb1); int ii=1; for (int k = 0; k < s...原创 2019-09-04 16:51:18 · 439 阅读 · 0 评论 -
java excel转pdf格式并在网页上展示
IE不支持页面展示,只能下载,博主用的浏览器为:chrome先看效果:实现方式:1.首先下载一个openoffice。2.执行bat脚本D:cd D:\abc\programsoffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard路径为自己安装openo...原创 2019-09-12 16:05:55 · 657 阅读 · 0 评论 -
base64加密解密 java实现
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。Base64一般用于在HTTP协议下传输二进制数据,由于HTTP协议是文本协议,所以在HTTP协议下传输二进制数据需要将二进制数据转换为字符数据。然而直接转换是不行的。因为网络传输只能传输可打印字符。什么是可打印字符?在ASCII码中规定,0~31、128这33个字...原创 2019-06-06 16:50:33 · 1562 阅读 · 0 评论 -
Eclipse设置UTF-8编码格式
在开发过程中,我们常会遇到中文乱码问题,因此我们需要将编码格式设一致,一般将编码格式设置为UTF-8格式(根据各自的项目需要设置编码,一般项目大多用UTF-8编码)。下面我们将介绍一下使用Eclipse开发工具进行开发时,设置编码格式(以UTF-8格式为例)的步骤:1、设置工作空间编码格式在Window--》Preferences--》General--》Workspace下,面板Text f...转载 2019-06-12 18:32:45 · 37628 阅读 · 4 评论 -
EL表达式获取对象属性的原理
以表达式${user.name}为例EL表达式会根据name去User类里寻找这个name的get方法,此时会自动把name首字母大写并加上get前缀,一旦找到与之匹配的方法,El表达式就会认为这就是要访问的属性,并返回属性的值。所以,想要通过EL表达式获取对象属性的值,那么这个属性就必须有与之对应的get方法。其实你要了解EL表达式的运行原理,它其实后台也对应的Java代码,它会先将你EL表达式...转载 2018-07-11 17:09:33 · 1550 阅读 · 0 评论