java人生路
开启java的漫漫道路
yxh13521338301
只分享干货的码农
展开
-
cglib实战代理
看小伙如何使用动态代理,以一抵十原创 2022-08-17 16:41:26 · 405 阅读 · 1 评论 -
揭秘https的加密传输过程
对比HTTP的明文传输,HTTPS采用加密。那么,为什么要加密?防止信息泄露,加密的数据被截取后,是无法直接阅读的。对称加密算法加密和解密都使用同一个密钥。网站向客户端传递秘钥,之后,二者之间通讯使用密钥加密、解密。对称加密算法的漏洞客户端向网站索要密钥时,这个密钥可能被别人获得,从而解密出交互的信息。非对称加密算法有一组钥匙,公钥和私钥。公钥可以解开私钥的加密,私钥可以解开公钥的加密,算法耗时很长。网站向客户端传递公钥,之后,网站向客户端发送的数据使用私钥加密;客原创 2021-09-30 14:58:38 · 323 阅读 · 0 评论 -
Java定位CPU飙升之jstack
大型互联网项目中,为了保证服务稳定,会引入各种监控和告警。其中CPU和内存的监控可谓重中之重。那么当产生服务器CPU告警后,如何定位原因呢?首先我们需要通过top列出进程列表,shift+p来按照cpu排序。可以看到排名第一的是23798这个进程,我们再通过top -Hp 进程号 来查看这个进程下所有的线程情况,同样shift+p来按照cpu排序排名第一的线程是24037,使用printf '%x\n' 24037 将线程号转为16进制。通过jstack 进程号 > file..原创 2021-07-26 15:13:43 · 265 阅读 · 0 评论 -
@Async带来的循环依赖问题
需要用的springBean的生命周期和AOP的源码知识,迷茫的猿友可以自行上网查阅。spring解决了单例的循环依赖,但当循环依赖的bean中出现@Async时,就会抛出异常原创 2021-06-01 20:08:35 · 2222 阅读 · 0 评论 -
less和grep的常用方式
less1. 直接查看文件less catalina.out查看文件后,若文件过大,打通过以下命令滚动文件:j 下一行k 上一行f 向下滚动一屏幕b 向上滚动一屏幕g 定位到文档头部G 定位到文档最尾部q 退出less模式less -N catalina.out 行号2. 查找内容/keyword 向下查找n 向下匹配下一处匹配文本N 向上匹配下一处匹配文本?keyword 向上查找n 向上匹配下一处匹配文原创 2021-05-07 11:37:55 · 1809 阅读 · 0 评论 -
@TableField(exist = false)的功能
@TableField(exist = false) 申明此字段不在数据库存在,但代码中需要用到它,通知Mybatis-plus在做写库操作是忽略它。原创 2021-04-30 10:18:34 · 1731 阅读 · 0 评论 -
maven编译不运行测试用例的方式
mvn clean install-DskipTests不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。mvn clean install -Dmaven.test.skip=true。不执行测试用例,也不编译测试用例类。原创 2021-04-21 15:24:50 · 830 阅读 · 0 评论 -
XXL-job
为了解耦,我们往往会采用定时任务去做一些补偿或者耗时的操作。传统项目中定时任务会耦合在业务项目中,要知道定时任务底层依赖于死循环,大量的定时任务会导致业务系统卡死奔溃。所以有必要将定时任务和业务项目剥离出来,各司其职。浏览对比知名组件,xxl-job口碑好评如潮,所以记录下学习xxl-job的过程。(ps:尊重原创,附上xxl地址:https://www.xuxueli.com/xxl-job/)一、工作机制xxl-job类似于微服务的注册中心。它提供两个角色:任务调度中心和执行器。.原创 2021-02-26 17:56:36 · 539 阅读 · 1 评论 -
不容错过的Java高级面试题
又到跨年之际,想必在这一年技术成长颇多的猿友们为备战金三银四而蠢蠢欲动了吧。工欲善其事必先利其器。停止无病呻吟和眼高手低,脚踏实地地狂刷面试题,offer拿到手软不再是空谈。帝都的雁为大家汇总本人在今次找工作中遇到的面试题,希望可以帮到猿友。(PS:博主本次找工作参加面试的知名企业有:有快手/字节/阿里/滴滴/boss直聘/携程/猎聘/好未来/京东/美团/当当,最终也如愿进入其中一家大厂;面试题基于Java全栈,参照个人简历的技术栈由浅至深询问。故建议猿友们在简历上写自己hold得住的技能,切莫画蛇添.原创 2020-12-30 15:45:05 · 6806 阅读 · 7 评论 -
被解刨的JVM
作为java应用程序的基层员工,JVM总是默默无闻地辛苦工作。年近尾声,年度评优工作开始进展。往年都是框架、并发等员工当选,咱不能总让老实人吃亏。综合解剖一下JVM,看看它做了哪些了不起的事情。(主要针对java内存结构做分析)一、类加载过程Java应用程序是不能直接运行的,需要通过java complier进行编译,将其转为class字节码文件,然后交由不同环境的JVM进行运行。那么,JVM到底是干什么的呢?它如何做到存放或创建实例对象的?又是如何进行对象内存回收?别着急,我们先看看这位员工.原创 2020-12-17 16:51:15 · 267 阅读 · 0 评论 -
一些常见的算法或编程题
线程死锁package live.yanxiaohui.test.day20201202;/** * @Description 线程死锁 * @CSDN https://blog.csdn.net/yxh13521338301 * @Author: yanxh<br> * @Date 2020-12-02 08:41<br> * @Version 1.0<br> */public class Dead { public static vo原创 2020-12-02 09:55:55 · 220 阅读 · 0 评论 -
sql += ““,这样写字符串为什么不合适?
源于蚂蚁课堂的学习,点击这里查看(老余很给力)字符串算是所有语言的共性了,Java的字符串提供了两种拼接工具,StringBuilder和StringBuffer。但实际开发中,还是有很多猿友喜欢这样去拼接字符串。比如,写一个案例:public class Test { public static void main(String[] args) { String a = "a"; a += "b"; a += "c"; }...原创 2020-10-27 10:00:31 · 976 阅读 · 2 评论 -
Java8 stream流,list转Map
key重复,value转集合Map<Long, List<Object>> map = list.stream().collect(Collectors.toMap(Object::getId, a -> new ArrayList<>(Arrays.asList(a)), (a1, a2) -> { a1.addAll(a2); return a1; }));key重复,value覆盖Map<Lo..原创 2020-10-26 09:16:15 · 750 阅读 · 0 评论 -
Synchronized的花花肠子
对于久经沙场的Java老手来说,锁的概念一定如雷贯耳。毕竟,在打赢并发和多线程的战役中,锁可谓举足轻重。伴随技术领域的推进,系统架构逐渐演变为微服务,锁的范围超脱单个JVM的管理,分布式锁开始替代传统JVM锁,崭露头角。凭借自身的灵活和高逼格的技术栈,收到大家的一致追捧。但由浅入深,JVM锁不意味着过时与淘汰,相反,它在众多业务中还是那么不可替代。JVM锁的家族中,Synchronized一骑红尘,广为流传。本文,帝都的雁就来为读者盘点Synchronized的那些花花肠子。(PS:需要有Java对...原创 2020-08-21 16:57:52 · 299 阅读 · 0 评论 -
为什么对研发情有独钟
相信很多猿仔都和我一样,学到知识总想着在实际工作中快速用到,这样就算暴露处理错误,也方便我们加深对知识的理解。 不才,年初想着使用策略+模板方法的设计模式去重构我们项目中臃肿的代码,上去就是一通撸。经过自测之后,满意地露出了淫荡的笑容...然而,之后的工作时间中,总会有一些匪夷所思的数据出现,比如,短信接收者吐槽不是他的数据,为何他收到短信;再者,数据不一致等现象。 仔细检查代码,也没发现我这惊为天人的代码逻辑有何不妥之处,而且自己反复测试还是没有问题复现,故想着莫非用户...原创 2020-07-28 16:19:10 · 680 阅读 · 0 评论 -
LinkedList的增删一定比ArrayList快吗?
1.背景众所周知,arrayList底层是通过数组实现,当其超过容量时,会进行1.5的扩容,将原数组数据迁移至新数组中。而LinkedList底层为双向链表,其增加操作直接在尾部新增一个node节点即可。那么,在插入相同的数据情况下(集合默认长度都是0),到底谁更快呢?2.案例 public static void main(String[] args) {...原创 2020-04-29 10:52:10 · 1092 阅读 · 1 评论 -
基于LinkedList手写hashMap1.7
定义map接口package live.yanxiaohui.map;/** * @Description 自定义map * @Author: yanxh<br> * @Date 2019/12/2 14:02<br> * @Version 1.0<br> */public interface YXHMap<K,V> {...原创 2019-12-02 17:04:25 · 200 阅读 · 0 评论 -
阿里云的ecs服务器设置安全组规则打开对外访问的端口
使用阿里云的ecs服务器后,发现很多软件安装之后不能正常访问,这是由于阿里云设置了默认的安全组规则,默认只会打开三个端口,其他的端口需手动打开默认打开的端口添加自定义的安全组规则快速创建安全组规则...原创 2019-11-04 17:57:31 · 3578 阅读 · 0 评论 -
linux安装mysql(基于阿里云的ecs服务器)
wget在线下载wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm安装sudo rpm -ivh mysql57-community-release-el7-8.noarch.rpmsudo yum install mysql-server寻找临时密码#重启sy...原创 2019-11-01 17:26:30 · 303 阅读 · 0 评论 -
linux安装maven(基于阿里云的ecs服务器)
wget在线下载wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz解压tar -zxvf apache-maven-3.5.4-bin.tar.gz -C /usr/local/tools/maven/ 解压至指定目录配置...原创 2019-11-01 15:56:43 · 444 阅读 · 1 评论 -
linux安装jdk(基于阿里云的ecs服务器)
wget在线下载wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8...原创 2019-11-01 15:25:58 · 375 阅读 · 2 评论 -
jQuery和json入门使用
一、jQuery1、介绍jQuery是2006年推出的,一经推出 风靡世界,简介的语法、灵活的写法。jQuery就是js的高级类库。可以更加高效的、简单的开发js。现在浏览器把js作为一个默认的脚本,都通用。2、jQuery的版本要求1.X ----IE6+2.X-----IE9+3.X-----IE9+3、jQuery的语法$("要选择的元素").action...原创 2018-06-12 16:26:14 · 375 阅读 · 0 评论 -
XML入门了解
一、xml概述1、xml是什么Extensible Markup Language 可扩展标记语言W3C 2000 1.0xml是一种数据存储格式, 本质上就是一段字符串xml是如何来保存数据的?xml中允许用户自定义标签,标签分为开始标签和结束标签。开始标签和结束标签之间可以嵌套其他的标签。正是利用标签来保存数据, 利用标签之间嵌套关系来保存数据之间的层级关系2、xml的...原创 2018-06-10 13:56:58 · 394 阅读 · 0 评论 -
HTML入门学习
一、WEB概述B/S: Browser-Server 浏览器服务器模型 WEBQQ 网页游戏 优点: 不需要下载客户端程序, 使用浏览器可以直接访问. 程序的升级操作是在服务器端进行的. 浏览器只需要刷新页面就可以看到升级后的效果 缺点: 浏览器具有一定的局限性, 页面的展示能力仍然是很差. 所有的页面数据都需要从服务器实时的获取, 所以对网速的依赖很高C/S: Cl...原创 2018-06-10 13:58:27 · 294 阅读 · 0 评论 -
菜鸟程序猿之JavaScript
一.JavaScript概述 1.js概述 (理解) JS是一门基于对象和事件驱动的脚本语言, 主要应用在客户端 js特点: 解释运行, 不需要编译 基于对象 弱类型 js的历史 js优点: 交互...原创 2018-06-10 14:00:21 · 264 阅读 · 0 评论 -
Spring入门学习
一、Spring介绍Spring是一个开源框架。并且是一个轻量级的框架,能够一站式的分层部署项目。能够整合现在主流框架起到一个粘合剂的作用。轻量级 空间占用角度: spring的核心包不到1MB,占用计算机的资源特别小 对容器的依赖角度: 对容器依赖性越低 越轻量二、IOC1、概念 IOC就是控制反转将对象创建的权利交给Spr...原创 2018-06-12 16:15:28 · 4121 阅读 · 0 评论 -
SpringMVC入门
一、Servlet的缺点1、xml配置繁琐 一个Servlet必须配置8行,这样的配置太繁琐。2、servlet类中方法单一 在servlet中只有两个方法 doget() dopost().通常情况下。一个servlet只能执行一个方法。 例如addUserServlet, updateUserServlet .这样写一张表的增删改查就会出现至少4个servlet....原创 2018-06-12 16:35:20 · 1299 阅读 · 2 评论 -
Eureka客户端配置参数列表总结
Eureka客户端参数配置1、RegistryFetchIntervalSeconds 从eureka服务器注册表中获取注册信息的时间间隔(s),默认为30秒2、InstanceInfoReplicationIntervalSeconds 复制实例变化信息到eureka服务器所需要的时间间隔(s),默认为30秒3、InitialInstanceInfoReplicat...原创 2018-06-14 17:15:25 · 1740 阅读 · 0 评论 -
nginx学习
一、前言 Nginx是俄罗斯的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。 Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。Nginx的稳定性、功能集、示例配置文件和低系...原创 2018-07-10 15:16:01 · 158 阅读 · 0 评论 -
常用邮箱服务器及其端口整理
gmail(google.com)POP3服务器地址:pop.gmail.com(SSL启用 端口:995)SMTP服务器地址:smtp.gmail.com(SSL启用端口:587)21cn.comPOP3服务器地址:pop.21cn.com(端口:110)SMTP服务器地址:smtp.21cn.com(端口:25)sina.comPOP3服务器地址:pop3.si...原创 2019-04-01 17:43:39 · 35738 阅读 · 0 评论 -
java 反射入门学习
一、概述java反射机制是在运行状态中,对于任意一个类,都能够获得这个类所有的属性和方法;对于任意一个对象都能调用它的属性和方法;这种动态获取的信息以及动态调用对象的方法的功能称为java的反射机制。反射就是将类中的成员分解为一个个java对象。二、反射涉及的类反射API用来生成JVM中的类、接口或则对象的信息。★Class类:反射的核心类,可以获取类的属性,方法等信息。...原创 2018-06-07 14:47:53 · 529 阅读 · 0 评论 -
JSP+EL表达式入门学习
一、JSP1.1、jsp介绍jsp是SUN公司提供动态的web技术之一。Servlet显示功能时,非常麻烦,编写与代码维护非常麻烦;通过查看..\apache-tomcat-7.0.53\work\...\index_jsp.java发现该类继承了org.apache.jasper.runtime.HttpJspBase类,该类又继承了HttpServlet(apache-tom...原创 2018-06-10 14:06:42 · 580 阅读 · 0 评论 -
菜鸟程序猿之浅谈泛型
一、泛型1.1泛型的概述:Java5开始新特性,表示不确定的类型。分类:集合泛型和自定义泛型注意:泛型是提供javac(编译器)使用的,它用于限定集合中的输入类型,让编译器在源码级别上,挡住向集合中添加的非法数据。但是编译器编译完之后,带有泛型的程序,生成的.class字节码文件中将不存在泛型。以此使程序在运行时效率不受影响,这个过程被称为泛型“擦除”。1.2、集合泛型集合泛型可以...原创 2018-06-10 14:10:28 · 267 阅读 · 0 评论 -
过滤器使用
一、过滤器1.1概述Servlet的技术规范中,定义了Servlet、Filter(过滤器)、Listener(监听器)三门技术。过滤器也被称为拦截器。过滤器(拦截器)可以拦截对资源的访问,一个资源可以被多个过滤器所拦截;一个过滤器又可以拦截多个资源。拦截下来后可以控制是否允许访问(权限控制)、在访问资源之前或之后做一些操作(比如:事务管理、乱码处理、禁止jsp页面缓存等等)1.2过...原创 2018-06-10 14:12:05 · 304 阅读 · 4 评论 -
数据库的锁
写一篇数据库中的锁,方便以后回顾知识1、什么是数据库的锁 数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。 加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务...原创 2018-12-11 15:06:43 · 151 阅读 · 0 评论 -
mysql索引
命名规则:表名_字段名1、需要加索引的字段,要在where条件中2、数据量少的字段不需要加索引3、如果where条件中是OR关系,加索引不起作用4、符合最左原则创建索引索引类型在创建索引时,可以规定索引能否包含重复值。如果不包含,则索引应该创建为PRIMARY KEY或UNIQUE索引。对于单列惟一性索引,这保证单列不包含重复的值。对于多列惟一性索引,保证多个值的...转载 2018-09-13 16:31:28 · 147 阅读 · 0 评论 -
mysql入门学习
一、数据库概述1、数据库: 存储数据的仓库层次式数据库, 网络式数据库, 关系型数据库2、MySql数据库的安装与配置安装的路径不要有中文和空格端口不要去改, 保持默认即可3、登陆或退出MySql客户端命令登录:mysql -u root -p 123 -h localhost;-u:后面的root是用户名,这里使用的是超级管理员root;-p:后面的123是密...原创 2018-06-10 14:01:32 · 255 阅读 · 0 评论 -
git使用详细介绍
一、概述git是一个分布式版本控制的工具。现有公共代码仓库:github,gitee,coding。自建仓库,私有仓库(企业使用):gitlab,gitblit。二、git与svn对比1、git是分布式的,svn不是★此为git与其他非分布式的版本控制系统(例如svn,cvs等)最核心的区别。★优点:跟其他人提交的代码不会有太多的冲突,本地有自己的仓库,自己的代码放在...原创 2018-06-06 10:43:13 · 3360 阅读 · 2 评论 -
JAVA自定义数据字典
由于业务的原因,导致程序中有很多枚举,不便维护,故使用自定义的字典表1.表的设计主要有两张表:sys_dict_type 用于记录字典类型 ; sys_dict 用于记录字典数据DDL:CREATE TABLE `sys_dict_type` ( `ID` bigint(20) NOT NULL AUTO_INCREMENT, `NAME_EN` varchar(25...原创 2019-08-30 14:52:57 · 11601 阅读 · 7 评论