JAVA相关
文章平均质量分 50
奋斗的小杨
这个作者很懒,什么都没留下…
展开
-
单点登录开源框架cas7.0.x学习springboot+gradle+jdk21
如何基于springboot构建最新版cas源码原创 2024-05-24 17:37:29 · 711 阅读 · 2 评论 -
Exchanger 怎么用J.U.C
Exchanger通常用来解决以下类似场景的问题,如下:两个线程间需要交换数据的问题,在多线程编程中,经常会有这样的场景:两个线程各自持有一些数据,并且需要在某个点上交换这些数据,Exchanger类提供了一个简单、高效的机制来实现这种数据交换。原创 2024-04-03 11:26:10 · 303 阅读 · 0 评论 -
Spring中最常用的11个扩展点
我们一说到spring,可能第一个想到的是 IOC(控制反转) 和 AOP(面向切面编程)。没错,它们是spring的基石,得益于它们的优秀设计,使得spring能够从众多优秀框架中脱颖而出。除此之外,我们在使用spring的过程中,有没有发现它的扩展能力非常强。由于这个优势的存在,让spring拥有强大的包容能力,让很多第三方应用能够轻松投入spring的怀抱。比如:rocketmq、mybatis、redis等。原创 2024-04-02 11:54:05 · 1035 阅读 · 0 评论 -
(n - 1) & hash 为什么等于hash % n
为了能让 HashMap 存取高效,尽量较少碰撞,也就是要尽量把数据分配均匀,Hash 值的范围值-2147483648到2147483647,前后加起来大概40亿的映射空间,只要哈希函数映射得比较均匀松散,一般应用是很难出现碰撞的。但问题是一个40亿长度的数组,内存是放不下的。所以这个散列值是不能直接拿来用的。用之前还要先做对数组的长度取模运算,得到的余数才能用来要存放的位置也就是对应的数组下标。这个数组下标的计算方法是“ (n - 1) & hash”。(n代表数组长度)。原创 2024-04-02 11:44:08 · 563 阅读 · 0 评论 -
如何理解Spring的IOC和AOP
在传统的java应用中bean的生命周期很简单,使用new进行bean的实例化,然后该bean就可以使用了,一旦该bean不再被使用则由java自动。以及设置相关的属性,让spring容器来生成类的实例对象,在spring容器启动时候,spring会把你在配置中配置的bean都初始化好。这个Resource 指的是BeanDefinition的资源定位,这个过程就是容器找数据的过程。相比之前,spring容器中的bean的生命周期就相对复杂的多了,正确理解spring bean的生命周期非常重要。原创 2023-10-24 14:21:28 · 169 阅读 · 0 评论 -
高并发读,高并发写解决方案
高并发读动静分离与CDN加速网站开发分为静态内容和动态内容两部分。1. 静态内容:常用的处理测了就是CDN,一个静态文件缓存到网络各个节点。加缓存当数据库支持不住时,首先想到的是加一层缓存,一种是本地缓存,另一种是集中式缓存,比如redis缓存的数据结构通常是<k,v>结构,v是普通对象也有复杂一点的<k,list> <k,hash>结构缓存的更新有两种,一种是主动更新,当数据库数据发生变更时,主动的更新缓存中的数据,另一种是被动更新,当用户的查原创 2022-05-03 00:05:17 · 3023 阅读 · 0 评论 -
转换json自定义返回属性,转换json忽略某个属性注解
问题在开发中,我们定义的对象,接口返回json,有些属性不想返回,有些属性我们想转换一下返回!怎么处理呢?解决@JsonProperty 在转换json时候会把org作为SZDW进行返回@JsonIgnore 在转换json不处理该字段import com.fasterxml.jackson.annotation.JsonIgnore;import com.fasterxml.jackson.annotation.JsonProperty;@JsonProperty("SZDW")priva原创 2022-04-27 17:26:10 · 683 阅读 · 0 评论 -
Java8默认垃圾收集器介绍
如何确认自己的JDK使用的哪个垃圾收集器?在可以用jvm参数,打印自己的jdk版本和收集器信息 -XX:+PrintCommandLineFlags -version测试代码-指定参数启动/** * @author yangyuanliang * @version 1.9 * @date 2022/4/25 20:34 */public class JvmGC { public static void main(String[] args) { System.out.原创 2022-04-25 20:50:53 · 6133 阅读 · 0 评论 -
JAVA堆溢出OOM场景模拟及排除过程
模拟过程加参数定义最大堆空间和最小堆空间 -Xms20m -Xmx20m 加参数在堆溢出dump出当前的堆快照-XX:+HeapDumpOnOutOfMemoryError上代码import java.util.ArrayList;import java.util.List;/** * @author yangyuanliang * @version 1.9 * @date 2022/4/24 21:49 */public class HeapOOM { stati原创 2022-04-24 22:28:09 · 1508 阅读 · 1 评论 -
k8s中pod一直处于ContainerCreating状态
查询pod详情 kubectl describe pod -n namespace podname 发现docker使用空间满了 清理docker空间docker system prunedocker images | grep "linkid" | awk 'NR>1 {print $3}' | xargs docker rmi -f原创 2021-11-10 10:46:48 · 1778 阅读 · 0 评论 -
html页面解析modelAndView返回的对象
后端ModelAndView modelAndView=new ModelAndView();modelAndView.setViewName("index");modelAndView.addObject("redirectUrl",redirect_uri);modelAndView.addObject("state",state);return modelAndView;前端<p th:utext=${redirectUrl} id="redirectUrl">&l原创 2021-08-27 17:55:35 · 1374 阅读 · 0 评论 -
springboot项目如何重写源码
背景在spring-security-oauth组件中获取用户信息接口,第三方返回的是{ "id":"xxxx", "attr":{ "xx":"" }}在security-oauth中解析用户信息写了public Authentication extractAuthentication(Map<String, ?> map) { //其中username,spring定义了固定值,并且没有配置final String USERNAME = "user_name"原创 2021-04-22 17:39:08 · 837 阅读 · 0 评论 -
LDAP支持TLS协议,JAVA客户端支持
服务端支持ldap的tls加密传输参考链接 https://www.golinuxcloud.com/configure-openldap-with-tls-certificates/安装openssl yum -y install openssl生成加密私钥 openssl genrsa -des3 -out ca.key 2048生成CA证书 openssl req -new -x509 -days 365 -key ca.key -out ca.cert.pem原创 2021-03-23 18:52:25 · 523 阅读 · 0 评论 -
CAS登出原理-源码分析
CAS-server登出如何保证客户端登出的?大致流程描述:server端登出会根据在webflow scope中存储的TGT信息查询ticket即st,然后根据st携带应用信息向客户端发送登出POST请求。客户端需要配置SingleSignOutFilter拦截器,在拦截器中将客户端的session失效。源码分析server端cas源码5.3.3TerminateSessionAction类 public Event doExecute(final RequestContext reque原创 2021-02-23 14:54:55 · 1517 阅读 · 1 评论 -
拉取docker镜像推送到私有仓库(公司仓库)
拉取docker hub镜像到linux[root@localhost ~]# docker search mysqlNAME DESCRIPTION STARS mysql MySQL 9727 [root@localhost ~]# docker pull mysql打t原创 2020-07-13 15:34:41 · 908 阅读 · 0 评论 -
JAVA修改jar包的内容
查看jar包内容[root@rg-sso-7b6694b4c-f5qdh app]# jar tf rg-0.0.1-SNAPSHOT.jar META-INF/META-INF/MANIFEST.MFBOOT-INF/BOOT-INF/classes/BOOT-INF/classes/services/BOOT-INF/classes/static/BOOT-INF/classes/static/css/BOOT-INF/classes/static/images/BOOT-INF/原创 2020-07-13 15:26:36 · 456 阅读 · 0 评论 -
SpringBoot的ApplicationRunner接口源码分析
看下这段源码,springboot会在所有的bean创建完成,上下文创建之后调用callRunners(context, applicationArguments);public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); stopWatch.start(); ConfigurableApplicationContext context =...原创 2020-05-13 13:53:28 · 615 阅读 · 0 评论 -
ConcurrentHashMap源码分析
ConcurrentHashMap哈希表是非常高兴,复杂度为O(1)的数据结构,在JAVA开发中,我们最常见到最频繁使用的就是HashMap和HashTable,但是在线程竞争激烈的并发场景中使用都不够合理 //初始化数组 //如果sizeCtl小于0,说明别的数组正在进行初始化,让出执行权 //如果大于0 则出事后一个大小为sizeCtl的数组 //否则出事后...原创 2019-12-20 16:54:46 · 136 阅读 · 0 评论 -
HashMap源码分析
HashMap底层如何存储数据的HashMap几个主要的方法HashMap是如何确定元素存储位置的一级如何处理哈希冲突的HashMap的扩容机制是怎样的Jdk1.8在扩容和解决Hash冲突上对H啊是M阿婆源码做了那些改动,有什么好处?JDK1.7之前采用拉链法来存储数据,即数组和链表结合的方式拉链法又叫做链地址法,简单来说就是数组加链表的组合。在每个数组元素上存储的都是一个链...原创 2019-12-19 18:58:55 · 141 阅读 · 0 评论 -
ArrayList源码分析
ArrayList源码更多访问实现了RandomAccess接口说明是支持随机访问的。public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable默认的容量是10...原创 2019-12-18 18:15:39 · 116 阅读 · 0 评论 -
LinkedList源码学习
LinkedList基于双向链表实现,内部使用Node来存储链表的节点信息,也是实现了list接口。private static class Node<E> { E item; Node<E> next; Node<E> prev; Node(Node<E&...原创 2019-12-18 18:13:54 · 88 阅读 · 0 评论 -
JAVA基础
数据类型java数据类型包括八种基本数据类型,其中有六种基本数据类型(4个整数型,2个浮点类型),一种字符类型,还有一种布尔类型。注:低类型自动转换高类型,高类型转换低类型需强制类型转换byte byte数据类型是8位,有符号的。最小值-128,最大值127默认值是0shortshort数据类型是16位默认值是0int int数据类型是3原创 2016-09-04 19:27:22 · 926 阅读 · 0 评论 -
剑指offer-给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方JAVA
public class Solution { public double Power(double base, int exponent) { // 指数为0就返回1 if (exponent == 0) { return 1; } // 求指数的绝对值 long ...原创 2019-08-12 15:56:25 · 644 阅读 · 0 评论 -
IntelliJ IDEA 项目结构旁边出现 0%methods,0% lines covered 解决
windows ctrl + alt+ f6弹出如下框,取消勾选-->点击Show Selected就可以去掉了 mac option+ fn+ command + f6弹出如下框,取消勾选-->点击Show Selected就可以去掉了...原创 2019-08-06 17:52:20 · 3985 阅读 · 2 评论 -
链表是否有环,求交点
链表是否有环private static class ListNode { private int val; private ListNode next; public ListNode() { } public ListNode(int val) { this.val = val;...原创 2019-08-06 13:34:19 · 229 阅读 · 0 评论 -
剑指offer青蛙跳台阶JAVA
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。public class Solution { public int JumpFloor(int target) { if(target==0){ return 0; } if(tar...原创 2019-08-08 15:31:43 · 157 阅读 · 0 评论 -
字符串中第一个不重复的字符----java实现
----字符流中第一个不重复的字符----java实现import java.util.ArrayList;import java.util.HashMap;public class First { HashMap<Character,Integer> map = new HashMap<Character,Integer>();//存放字符和其出现的次...原创 2019-08-06 11:54:28 · 229 阅读 · 0 评论 -
剑指offer调整数组顺序使奇数位于偶数前面JAVA
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。public class Solution { public void reOrderArray(int [] array) { int start=0; int end=a...原创 2019-08-12 16:31:41 · 206 阅读 · 0 评论 -
JDK1.8 HashMap源码
package java.util;import java.io.IOException;import java.io.InvalidObjectException;import java.io.Serializable;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import j...原创 2019-08-12 20:03:42 · 162 阅读 · 0 评论 -
解决.EmbeddedServletContainerException: Unable to start embedded Tomcat
org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to...原创 2019-09-10 18:41:39 · 7266 阅读 · 0 评论 -
本博客已转至https://www.xingxing2019.cn
欢迎访问 http://www.xingxing2019.cn原创 2019-09-24 10:50:46 · 2863 阅读 · 0 评论 -
spring+dubbo集成redis错误解决
异常堆栈信息 转载自Exception in thread "main" org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'redisServiceImpl': Unsatisfied dependency expressed through field...原创 2019-09-25 09:55:50 · 1335 阅读 · 0 评论 -
棒球比赛
棒球比赛你现在是棒球比赛记录员。给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在本轮中获得的积分数。2. “+”(一轮的得分):表示本轮获得的得分是前两轮有效 回合得分的总和。3. “D”(一轮的得分):表示本轮获得的得分是前一轮有效 回合得分的两倍。4. “C”(一个操作,这不是一个回合的分数):表示您获得的最后一个有效&...原创 2019-09-25 10:03:18 · 145 阅读 · 0 评论 -
剑指offer数组旋转求最小值JAVA
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。import java.util.ArrayList;public class Solution { pub...原创 2019-08-08 15:00:04 · 136 阅读 · 0 评论 -
从扑克牌中随机抽5张牌,判断是不是一个顺子, 即这5张牌是不是连续的。
/** * 题目:从扑克牌中随机抽5张牌,判断是不是一个顺子, 即这5张牌是不是连续的。 * 2~10为数字本身, A为1。 J为11、Q为12、 k为13。小王可以看成任意数字。 * @param numbers * @return */public static boolean isContinuous(int[] numbers) { if (numbers...原创 2019-08-05 15:48:37 · 1035 阅读 · 0 评论 -
基于http手写rpc框架
什么是RPC?Remote Procedure Call (RPC) is a protocol that one program can use to request a service from a program located in another computer on a network without having to understand the network's deta...原创 2018-11-29 23:14:34 · 604 阅读 · 0 评论 -
Redis分享
Redis简介 redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。下载地址 http:...原创 2018-07-23 14:03:16 · 373 阅读 · 0 评论 -
JAVA线程面试必看
不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发、调试、优化经验,所以线程相关的问题在面试中经常会被提到。在典型的Java面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程, 如何创建线程,用什么方式...原创 2018-02-24 15:36:41 · 217 阅读 · 0 评论 -
关于springMvc文件上传
关于文件上传1.必须使用表单2.请求必须是POST3.enctype="multipart/form-data"注:enctype="multipart/form-data" 注意虽然我们SpringMVC模拟了PUT,那么如果要做上传操作,那么一定使用POST请求上传的方式,一共两种方式1.commons-fileupload-jar、commons-io.jar2.Servlet3.0上默认提...原创 2016-08-08 11:22:28 · 576 阅读 · 0 评论 -
JAVA四种线程池操作
线程池JAVA类库提供了许多静态方法来创建一个线程池。github https://github.com/Jacwo/one.gitpublic static ExecutorService newCachedThreadPool(); public static ExecutorService newSingleThreadExecutor(); public static Exec...原创 2018-02-12 17:16:10 · 257 阅读 · 0 评论