![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 55
持盾的紫眸
这个作者很懒,什么都没留下…
展开
-
压缩Redis里的字符串大对象
背景Redis缓存的字符串过大时会有问题。不超过10KB最好,最大不能超过1MB。有几个热点配置缓存,5分钟命中一次,大小在5KB到6MB不等,因此需要压缩。第一种,使用gzip/** * 使用gzip压缩字符串 */public static String compress(String str) { if (str == null || str.length() == 0) { return str; } ByteArrayOutputStrea原创 2020-09-08 22:47:30 · 2321 阅读 · 0 评论 -
Java知识体系梳理
1. Java基础JDKjvm组成:核心类库:NIO、容器、Object、线程池类加载:加载过程,加载器,双亲委派,破坏双亲委派,OSGI并发编程:Synchronize reentrantlock volatile aqsGC如何寻找垃圾:引用计数,根搜索如何回收垃圾:算法 ,收集器实现,特点什么时候回收:GC调优:设计模式几种工厂区别装饰器与适配器JDK举例设计原...原创 2020-02-29 23:25:20 · 458 阅读 · 0 评论 -
两年Java面试总结:阿里四面(下)
一面Java集合类 JUC ConcurrentHashmap 初始化 put过程 冲突 size实现Java并发编程(voliatle synchronize reentrantlock aqs cas ABA)JVM组成,栈溢出的几种情况类加载机制(过程final static,双亲委派,破坏)GC 收集器(列举,特点)Redis数据类型,底层数据结构,SDS 跳跃表红黑树分布...原创 2020-02-29 20:59:58 · 1279 阅读 · 0 评论 -
两年Java面试总结:两个offer(中)
杭州端点一面:项目介绍spring securityspring cloud gatewayjava 容器类介绍容器类的并发处理,list并发处理的手段 voliatle synchronize reentrantlock aqsthreadlocal 的性质,源码,存在哪spring aopredis 数据类型redis 高可用mysql 存储引擎mysql innod...原创 2020-02-29 17:15:48 · 821 阅读 · 2 评论 -
Java并发编程总结
背景计算机由CPU、存储器、输入输出设备组成。CPU内部又包括了控制器、运算器、寄存器(存储器)其中进程是计算机资源分配的最小单位,线程是程序执行的最小单位(CPU资源调度的最小单位) 。CPU通过给每个线程分配CPU时间片来达到并发执行的效果。每个线程得到的时间片都很短,一般是几十毫秒(ms)CPU通过不停地切换线程,让我们感觉多个线程在同时执行并发编程带来的挑战当CPU切...原创 2020-01-07 17:38:49 · 182 阅读 · 0 评论 -
简单工厂、工厂方法、抽象工厂的区别
1. 简单工厂/静态工厂定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法优点:简单易于实现,把类的实例化交给工厂,易于解耦。缺点:违反了OCP开闭原则。案例:JDK日期格式化DateFormat,JDK密钥生成器KeyGeneratorpublic...原创 2020-01-01 12:04:15 · 298 阅读 · 0 评论 -
两年Java面试总结:全挂(上)
1. 涂鸦智能一面12月中旬,投了简历过了一周左右,接到电话,约在了周六上午。当时没问能不能电面,小姐姐也没提,所以我就去了一趟杭州,顺便跟一个大佬同学面基,下雨天还去了趟西湖。先做自我介绍说说现在做的项目,业务场景说了oauth2 jwt 缓存设计现在住哪,换工作原因为什么来杭州直接问简历上只是提了一下的物联网平台。动态代理几种实现方式?mybatis 两种分页方式?myb...原创 2019-12-22 21:18:57 · 1778 阅读 · 0 评论 -
Ribbon、Feign和OpenFeign的区别
Ribbon 是一个基于HTTP和TCFeign是Netflix开源的轻量级RESTful的HTTP服务客户端。Feign内置了Ribbon,可以通过客户端负载均衡的方式作为服务调用的客户端OpenFeign是Spring Cloud 在Feign的基础上支持了Spring MVC的注解,如`@RequesMapping`等等。需要注意,@RequesMapping不能在类上与@FeignClient同时使用原创 2019-05-08 13:07:28 · 49194 阅读 · 6 评论 -
SpringSecurity解决公共接口自定义权限验证失效问题,和源码分析
SpringSecurity自定义权限验证、解决鉴权失效和公共接口问题本文主要介绍如何使用spring-security来实现自定义的权限验证,以及如何解决鉴权时部分接口鉴权失效变成公共接口的问题,用户登录认证的部分已省略。自定义权限验证的实现SpringSecurity自定义权限验证时需要实现三个接口:AccessDecisionManager : 自定义鉴权管理器,根据URL资源权...原创 2019-04-25 11:08:36 · 13707 阅读 · 0 评论 -
SpringSecurity实现自定义登录认证、权限验证、鉴权
SpringSecurity实现自定义登录认证、权限验证、鉴权Demo源码:https://github.com/ygsama/ipa自定义登录认证的实现需要实现三个接口UserDetails 用户类接口UserDetailsService 查询用户密码的service 接口AuthenticationProvider 为认证管理器AuthenticationManager 提供验证自定义权限验证时也需要实现三个接口:原创 2019-04-25 10:51:57 · 18434 阅读 · 2 评论 -
Spring源码环境部署到IDEA
通过idea将Spring-5.x的git项目拉到本地通过gradle加载依赖后,spring-core的依赖是jar包,需要执行打jar包命令在项目根目录下执行以下命令后,spring-core模块依赖显示正常gradle objenesisRepackJargradle cglibRepackJar...原创 2019-03-26 15:23:15 · 334 阅读 · 0 评论 -
java中的编码,按位操作符,移位运算符
java中的编码,原码,反码,补码,移码;非运算 ~,逻辑或 |,逻辑与&,异或运算 ^;左移<<,右移>>,无符号右移>>>,float移位运算原创 2019-02-19 11:30:01 · 326 阅读 · 0 评论 -
查询操作系统最大进程数、进程开启的线程数
# 查看进程里的线程信息top -Hp 7275 # 查询PID为7275的线程数ps hH p 7275 |wc -l# 关键字为java 的进程的线程数pstree -p `ps -e | grep java | awk '{print $1}'` | wc -l# 查询7275的线程pstree -p 7275# 查系统支持的最大进程数,一般会很大,相当于理论值cat...原创 2019-08-29 11:25:26 · 3674 阅读 · 0 评论 -
Eclipse安装的Git插件Team中不显示
help->installion detail->instaled softwahore, 选中所有git相关插件, 点击下方uninstall进行卸载如果还存在git插件,在eclipse安装文件, 找到artifacts.xml对应的所有git项;如果还存在git插件,在eclipse安装文件中, 找到plugins文件夹下删除所有的git相关项。查询eclipse版...原创 2018-09-21 00:19:12 · 2894 阅读 · 0 评论 -
SSO单点登录的具体业务场景和OAuth2认证授权框架的总结
场景一 (主系统不管理权限):第三方系统通过认证中心,获取用户的信息。第三方系统进行权限管理,主系统只提供用户信息QQ、微信、FaceBook、Github...场景二 (主系统管理粗粒度权限):第三方系统依赖于认证中心,获取用户及权限信息。主系统管理账户体系、粗粒度权限体系微信小程序、支付宝小程序...场景三 (主系统管理所有权限):第三方客户端完全依赖于主系统,获取用户及...原创 2019-04-30 17:04:19 · 1556 阅读 · 0 评论 -
解决Spring Cloud Gateway 2.x跨域时出现重复Origin的BUG
版本Spring Cloud :Greenwich.SR1Spring Cloud Gateway : 2.1.1.RELEASE现象跨域时POST请求body内容为空,报跨域失败错误原因是Access-Control-Allow-Origin只允许有一个值,而响应头里有多个Origin报错: The 'Access-Control-Allow-Origin' header contains multiple values "*, *", but only one is allowed.原创 2019-05-09 17:16:06 · 15241 阅读 · 8 评论 -
Doker构建自定义的Java镜像
# 宿主镜像 https://hub.docker.com/search?q=alpine-glibc&type=image tar zxf jre-8u211-linux-x64.tar.gz cd jre1.8.0_211 rm -rf COPYRIGHT LICENSE README release THIRDPARTYLICENSEREAD...原创 2019-06-28 17:28:42 · 1075 阅读 · 0 评论 -
自定义jsr-269注解处理器 Error:服务配置文件不正确,或构造处理程序对象javax.annotation.processing.Processor: Provider not found
出现的原因自定义处理器还没有被编译就被调用,所以报 not found在根据配置寻找自定义的注解处理器时,自定义处理器还未被编解决方式maven项目可以配置编译插件,在编译项目之前先编译处理器,或者编译项目时跳过执行处理器参考:https://stackoverflow.com/questions/38926255/maven-annotation-processing-process...原创 2019-08-02 15:51:07 · 6239 阅读 · 0 评论 -
如何动态代理Controller的接口并注册到SpringMVC中
1、实现对Controller接口的动态代理@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public @interface MyController { String value() default "";}@Target(ElementType.METHOD)@Retention(RetentionPol...原创 2019-08-14 11:27:20 · 7426 阅读 · 10 评论 -
Spring Security Oauth2 如何鉴别Token是否有效
版本Spring Security Oauth2 : 2.3.5.RELEASESpring Boot 2.1.3Spring Boot Starter: 2.1.3.RELEASE解决思路Spring Security 的两大功能认证和鉴权,通过FilterChain(过滤器链)实现的,不同的请求经过不同的过滤器链。Spring Security Oauth2 增加了拓展的过滤器...原创 2019-09-20 15:20:55 · 14557 阅读 · 0 评论 -
使用Docker构建支持中文字体的Java镜像
在构建镜像的过程中安装字体管理器和中文字体构建jre镜像,参考这篇文章:Docker构建自定义的Java镜像:https://blog.csdn.net/zimou5581/article/details/9402274如何安装中文字体,参考这篇文章如何给dcoker容器里的alpine系统安装中文字体:https://blog.csdn.net/zimou5581/article...原创 2019-09-25 17:37:25 · 4980 阅读 · 1 评论 -
动态规划算法——最长公共子序列问题(java实现)
最长公共子序列问题已知序列X=(A,B,C,A,B,D,A)和序列Y=(B,A,D,B,A),求它们的最长公共子序列S。算法实现:package practice;/** * 最长公共子序列问题。 * 已知序列X=(A,B,C,A,B,D,A)和序列Y=(B,A,D,B,A) * 求它们的最长公共子序列S * @author 光 */public class LCSLen原创 2016-11-05 15:43:28 · 1835 阅读 · 0 评论 -
Failed to start component [StandardEngine[Catalina].StandardHost[localhost]异常解决
报错:java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/data-report]]背景:相同配置文...原创 2018-09-20 09:29:28 · 2263 阅读 · 0 评论 -
eclipse启动tomcat时不能加载web项目
问题描述:eclipse启动tomcat时,不能加载web项目,但是把war包丢进tomcat的webapps下是能正常运行的解决方式:右键项目——打开Properties——找到Deployment Assembly——将WebContent修改成你的项目webapp路径...原创 2018-09-20 01:31:20 · 3280 阅读 · 1 评论 -
Java将二进制转为ascii码
将二进制转为ascii码txt文件中每八个二进制(0或1)为一组,每组之间用" "分隔,每组二进制都要转成一个ascii码。代码如下:public class ToAscii { public static void main(String[] args) throws IOException { BufferedReader br = n转载 2016-11-11 20:23:49 · 3997 阅读 · 0 评论 -
Map是不是集合?
Map是不是集合?一、起因今天在一个群里跟几位朋友就“map是不是集合“”争执了起来;几位朋友一致认为map不是集合,他们说只有Collection接口下的才是集合,而我认为Collection和Map下的实现类都是集合类。二、发展于是我开始在网上搜索一下,发现然并卵,没有找到我想要的结果。于是乎,我翻开了书。在《java核心技术 卷一 第九版》一书中的569页,13.3节 集原创 2016-09-30 00:22:02 · 16680 阅读 · 7 评论 -
Java小游戏——是男人就坚持20秒
Java小游戏——是男人就坚持20秒给大家分享一个小游戏,这是一个Swing项目,先用代码画界面板,然后依次添加飞机、子弹、计时器等:代码如下:/* * 程序的主窗体 */public class FrmMain extends JFrame { /* * 初始的一些全局变量 1是否存活 2方向 3子弹数量 4飞机 */ // 1是否存活 pu原创 2016-11-05 18:36:09 · 8365 阅读 · 4 评论 -
分治算法——快速排序、归并排序算法(Java实现)
排序问题对序列42,96,23,89,48,75,36,30,57,61用快速排序、归并排序算法,从小到大排序。算法实现:import java.util.Arrays;/** * 快速排序 * @author 光 * */public class QuickSort { public static int getMiddle(int[] intArr, int low原创 2016-11-05 11:46:06 · 1195 阅读 · 0 评论 -
动态规划算法——矩阵连乘问题(java实现)
矩阵连乘问题:求矩阵A1(5×3)、A2(3×4)、A3(4×7)、A4(7×2)、A5(2×3)和A6(3×6)连乘的最佳计算次序。 算法实现:package practice;/** * array[i][j] * 表示Ai...Aj的最佳计算次序所对应的相乘次数 即存放各子问题的最优值 * s[i][j]=k * 表示Ai...Aj这(j-i+1)个矩阵中最优加括号原创 2016-11-05 13:29:55 · 8106 阅读 · 0 评论 -
分治算法——循环赛日程安排问题(Java实现)
循环赛日程安排问题设有16个运动员将进行网球循环赛。现要设计一个满足以下要求的比赛日程表:⑴ 每个选手必须与其它15个选手各赛一场,⑵ 每个选手一天只能赛一场,⑶ 循环赛进行15天。算法实现:package practice;import java.util.LinkedList;/** * 循环赛日程安排问题。 * 设有16个运动员将进行网球循环赛。现要设计一个满足以下要原创 2016-11-05 11:51:26 · 6588 阅读 · 2 评论 -
递归算法——求Fibonacci数列前n项(Java实现&C语言实现)
求Fibonacci数列前n项。Fibonacci数列{an}:a1=1,a2=1,an+2=an+1+an(n≥1)。要求:正整数n由键盘输入Java实现import java.util.Scanner;public class Test160916 { public static void main(String[] args) { Scanner scanner = new原创 2016-10-13 19:41:57 · 10857 阅读 · 0 评论 -
递归算法——Hanoi(汉诺)问题(Java实现&C语言实现)
某寺庙前有三根柱子A、B、C,开始时A柱上有n个盘子,盘子大小不等,大的在下、小的在上(下图所示)。有一老和尚想把这n个盘子从A柱移到C柱上,但每次只允许移动一个盘子,且在移动过程序中每根柱子上都始终保持大盘在下、小盘在上。在移动过程中可以借助B柱。要求:正整数n由键盘输入。Java实现:import java.util.Scanner;public class原创 2016-10-13 19:52:59 · 4330 阅读 · 0 评论 -
Java中Base64解码
某个程序员闯关游戏的最后一关,有点费事,需要将一个二进制文件转换成ascii码,发现ascii码文件是Base64的加密文件,所以再用BASE64Decoder包(下载地址:https://pan.baidu.com/s/1slEQitf)进行Base64解码,得到的文件是一个压缩文件。代码如下:import Decoder.BASE64Decoder;public class d转载 2016-11-11 20:31:01 · 430 阅读 · 0 评论 -
maven中tomcat插件的配置
Maven Tomcat插件现在主要有两个版本,tomcat-maven-plugin和tomcat7-maven-plugin,使用方式基本相同jdk1.8以下使用tomcat-maven-plugin ,jdk1.8要使用tomcat7-maven-plugin tomcat-maven-plugin 插件官网:http://mojo.codehaus.org/tomcat-m原创 2017-04-11 16:52:10 · 584 阅读 · 0 评论 -
eclipse中切换不同版本的jdk
导入多个版本的jdkeclipse菜单栏——window——preferences——左上角搜索Installed JREs——standard VM——点击add添加jdk安装路径——Apply & OK切换项目运行的jdk右键点击需要切换jdk的项目——properties——左上角搜索Project Facets——修改Java那一行中的verxion——选择需要切换的jdk版本原创 2017-04-11 17:00:18 · 1419 阅读 · 0 评论 -
Eclipse部署Kylin源码—搭建开发环境
搭建并启动 hadoop 集群,Spark集群,确保 HDFS,YARN,Hive,HBase,Spark等组件 正常运行安装Maven环境、eclipse环境到kylin的github官网https://github.com/apache/kylin,选择相应的版本tag,下载源码到本地 解压源码包,在eclipse里导入Kylin项目 然后勾选全部,后面全部选择next或fin...原创 2018-09-07 15:17:01 · 1408 阅读 · 0 评论 -
hive删除数据、删除分区、删除库表
hive删除数据、删除分区、删除库表-- 删除库drop database if exists db_name;-- 强制删除库drop database if exists db_name cascade;-- 删除表drop table if exists employee;-- 清空表truncate table employee;-- 清空表,第二种方式...原创 2018-09-04 15:05:50 · 101527 阅读 · 2 评论 -
Kylin删除segment
Kylin在不操作元数据的情况下只能通过restAPI删除segment 可通过linux命令发送http请求:curl -X DELETE --user ADMIN:KYLIN -H "Content-Type: application/json;charset=utf-8" http://localhost:7070/kylin/api/cubes/{cube's name}/segs/{segment's name}原创 2018-09-04 14:50:50 · 3205 阅读 · 0 评论 -
JavaSE小项目(小游戏)
JavaSE编写的小游戏源码下载地址:https://github.com/ygsama/SmallGame游戏名(难度)满天星(★☆☆☆☆)球球(★☆☆☆☆)打字游戏(★☆☆☆☆)汤姆猫(★★☆☆☆)扫雷(★★★☆☆)推箱子(★★★★☆)超级玛丽(★★★★★):按Z控制...原创 2017-08-14 18:44:50 · 8313 阅读 · 0 评论 -
dubbo-admin-2.5.4在Jdk8和Tomcat8下部署失败的解决方案
dubbo-admin-2.5.4在Jdk8和Tomcat8下无法部署相关原因可以看这里:https://github.com/alibaba/dubbo/issues/50网上找到了一个被重新编译过的war包,支持Jdk8和Tomcat8下载地址:http://download.csdn.net/detail/leiyong0326/9548973http://downl原创 2017-06-12 12:54:21 · 4680 阅读 · 0 评论