Java
文章平均质量分 66
为了更好的明天而战
本博客为学习、笔记之用,以笔记形式记录学习的知识与感悟。学习过程中可能参考各种资料,如觉文中表述过分引用,请务必告知,以便迅速处理。如有错漏,不吝赐教
展开
-
Apollo配置中心学习
什么是Apollo?何为Apollo?我的理解就是一款项目参数配置工具,可以用来配置不同应用不同环境的参数配置,同时可以实现在线配置更新而无需重启服务的工具.同时拥有自己的配置中心页面,包含参数配置与配置发布权限管理.是携程开发的一款分布式开发工具.为什么用Apollo?为什么说到Apollo,一方面是入职新公司采用这一技术栈,另一方面是以前参与的项目是采用配置文件放在固定目录,不同环境修改...原创 2020-03-26 18:16:21 · 339 阅读 · 2 评论 -
ElasticSearch简单搭建使用
开球选题 作为一名初来乍到的小白,当我听到让我开球,一开始我是拒绝的.如果用一张表情包形容我的心情 平时都是大佬开球,现在轮到我开球,一开始我是陷入蒙蔽模式.还好我平时饱受大佬熏陶,大佬的话我都是记下来的.回顾这段时间接触的知识点,发现所学如下,知道怎么用.但难有深度.与其班门弄斧,不如整点有意思的内容restful设接口风格–》mock接口文档/区分接口动作java8 la...原创 2020-03-20 16:01:25 · 460 阅读 · 0 评论 -
Java从入门到精通 十六章 反射
反射机制作为框架的基础,在后续框架学习如spring中有着非常重要的作用.现在还想起来17年的时候问同事 反射是啥.现在想想这也是基础够不扎实的问题。本章主要将2个东西,一个是反射,就是针对正在运行的程序我们可以知道对象实例类中的方法 成员变量 构造方法等信息,这些都是可以通过类的方式进行管理的。如构造方法Constructors类,方法Method类,字段类Field.同时还有个可以修改访问权...原创 2019-05-15 02:05:34 · 254 阅读 · 0 评论 -
Java从入门到精通 十六章 反射 Annotation
反射因为是框架实现的核心东西,所以要重点学习下,上一篇文章提到反射,无非就是可以对加载到jvm中的对象实例,通过反射访问器类的成员变量,方法,构造方法,局部变量参数等信息进行访问控制。这一篇主要是利用反射特性讲一下Annotation,定义的方式为@interface xxx。对程序运行没有影响,主要是能够通过Annotation对构造方法,成员变量,成员方法,局部变量进行一个注解提示。如果再结合...原创 2019-05-20 00:09:43 · 581 阅读 · 0 评论 -
Java从入门到精通 十二章 异常处理
前言:异常处理在日常开发中很常见,一般来讲项目框架中都会对异常处理做一个统一的处理。同时可能会自定义多个错误对象,在业务处理的时候时候抛出来。比如目前采用SSM框架的项目中,就存在多种自定义错误类型,如BizException(业务处理异常)、MessageException(应用系统异常),ValidateException(应用系统校验错误)错误对象.在不同的情况下使用,前面2中业务处理异常及...原创 2019-05-07 00:47:57 · 323 阅读 · 0 评论 -
Java从入门到精通 十一章 类的高级特性
简介类的高级特性 这一章主要是介绍了java中的包,final修饰词,内部类三个知识点.需要重点掌握和熟悉的是内部类以及final修饰词这2个用法。final关键字final修饰词在java日常开发中用到的太多了,如父类使用final修饰,子类无法继承.修饰方法.子类继承中无法重写.否则编译器就不认可这种写法.类似的还有final修饰的变量,不可修改,必须要初始化(需要注意的一些基本数据...原创 2019-05-05 00:14:12 · 158 阅读 · 0 评论 -
Java从入门到精通 十四章 集合
java集合作为一种存储对象的容器,在平时开发中有着很重要的作用.说到java中存储数据的容器有以下几种,特意记录下(毕竟以前面试的时候考到过)。Java中的数据存储容器8中基础数据类型(只存储单个数据不算,容器是能存2个及以上的那种)String:String字符串算是一种(他是char字符数据 存储数据的容器)SrtingBuilder:而前面章节提到过得字符串生成器StringBu...原创 2019-04-24 01:56:58 · 234 阅读 · 0 评论 -
java 中堆 栈 方法区的理解
最近在准备面试的东西,特意看了一下堆 栈 方法区的概念。特此整理了一下。堆 栈 方法区 存储哪些数据堆:线程共享,存储对象以及数组(数组也是对象的一种 new方式创建出来的),同时由于对象内存是动态分配的,对象在超过生命周期及空指针的时候会被gc垃圾回收机制回收,所以效率较慢。栈:用于存储基本数据类型以及对象的引用类型(这里指的基础类型是指不为static修饰的变量,如成员变量 ...原创 2019-04-17 23:26:59 · 788 阅读 · 0 评论 -
二进制 八进制 十进制 十六进制转换
编程软件开发 必须要掌握的一个知识点就是各不同进制之间的转换,特此记录下,加深印象。二进制:由0和1组成的八进制:0、1、2、3、4、5、6、7十进制:0、1、2、3、4、5、6、7、8、9十六进制:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F二进制与十进制的转换二进制转换为十进制: 10010110-》 从最后以为开始向前叠加–》从2的0次方到2的8次方 ,如果为...原创 2019-04-15 00:55:10 · 1223 阅读 · 0 评论 -
Java从入门到精通 第九章 数字处理类
做过开发的应该都知道涉及到金额计算的 不能出现过大的精度缺失,如果还是用开发语言 如java中处理浮点数的方式,那样子会有精度缺失的情况出现.同时在java中如果出现0.001~1000 0000返回之外的 会使用科学计数法,那样明显无法满足实际情况的出现.DecimalDecimal格式化工具类是 用于对常见格式数字处理的,比如首先创建Decimal对象实例,通过有参构造方法 传入设置格式。...原创 2019-04-14 19:21:02 · 189 阅读 · 0 评论 -
java从入门到精通 十八章 多线程
多线程这个概念在经过一段时间的开发后,考虑接口等问题的时候很容易考虑到。比如做电商系统中库存抢购,车票购买的时候如何控制等问题,根本原因就在于一个多线程安全问题,本章提出的解决方法时通过同步代码快的方式,将多线程异步问题 改为多线程同步,这样无论下单的是谁,都是经过一笔一笔单子来处理,这样就不会出现多线程等问题.当然也可以通过消息队列等方式来控制,下单的时候都需要排队,或者通过其他方式实现多线程并...原创 2019-05-26 16:51:33 · 458 阅读 · 0 评论 -
缓存与数据库双写一致性问题
之前在脉脉上看到有关这个问题的描述,大体看了下。这两天放假有空 特地看下关于关于这个问题的解决方案。要解决这个问题 首先要知道一个模式就是cache aside pattern,这是外国大佬提出的一个概念。Cache Aside Pattern1.读操作.判断缓存是否存在,不存在读取数据库中的信息并更新缓存。存在的话读取缓存中的信息2.写操作.更新数据库,删除缓存。扯到这个问题,会出现...原创 2019-06-09 14:43:21 · 2568 阅读 · 0 评论 -
8.9近期开发遇到的问题记录
1.字符串替换原创 2019-08-09 11:50:45 · 646 阅读 · 0 评论 -
多线程并发竞争共享资源时的技术解决方案
最近开始接口商品下单支付,水电煤缴费等可能存多线程竞争统一资源导致数据溢出的问题,如商品库存剩余为100,同时由100个线程在竞争这个资源,那么如何保证只有第一个线程抢到资源,而其他的线程无法购买。以往的管理系统方面有碰到这块但一般由于不涉及支付等金额购买的情况,同时也没有这么高并发,所以没有在意。但现在移动互联网 特别是这种商品购买,订单支付等必须要保证多线程下共享资源如库存,客户余额修改不会出...原创 2019-08-01 14:46:16 · 763 阅读 · 0 评论 -
Synchronzied同步代码块与同步函数的学习
java学习的时候关于多线程修改共享变量的时候容易出现问题,典型的问题就是抢车票问题或者是电站商品库存信息问题,原创 2019-07-15 14:15:59 · 264 阅读 · 2 评论 -
防止订单重复提交的2种技术解决方案
最近项目里碰到关于水电煤缴费 出现了账户余额剩余100元,但同一时间可以成功支付4笔100元订单的问题.出现这种问题的原因主要在于短时间内前端按钮操作抖动多次请求的情况.同时后端在判断账户余额然后下单的过程中出现了多线程并发的问题。解决这种问题的方法一般是从解决订单重复提交+防止高并发情况下账户余额为负数的情况解决方案。(类似于商品库存超卖的解决方案)一般完整的订单支付流程是这样的1.后端生成...原创 2019-06-27 02:34:54 · 16140 阅读 · 6 评论 -
Java中常用的加密算法
进入公司有将近2年了,对于各种外部API接口的调试开发也有了些经验.经常会碰到签名和加密的问题.这里结合别人的博客将将加密算法简单的介绍下.原文链接签名签名的意义在于对这段数据进行认证,防止数据在网络传输过程中被修改出现问题.一般来讲安全性比较高的如支付场景数据 都是经过加密传输到后台的.比如项目中涉及到微信小程序支付的情况,请求参数一般是先生成签名,然后再加密数据.传到微信后台.如果不对数...原创 2019-07-07 18:14:30 · 423 阅读 · 0 评论 -
Redis面试考点学习
首先感觉网友的参考资料:原文地址,这文章看了好多遍了,一直比较懒得整理一下自己的理解感受,今天有机会 整下呗。redis常用考点1、为什么使用redis2、使用redis有什么缺点3、单线程的redis为什么这么快4、redis的数据类型,以及每种数据类型的使用场景5、redis的过期策略以及内存淘汰机制6、redis和数据库双写一致性问题7、如何应对缓存穿透和缓存雪崩问题8、如...原创 2019-06-17 01:18:20 · 286 阅读 · 0 评论 -
接口测试工具Postman/Jemter基本使用方法
前言今天在跟开发哥们聊天的时候,有谈到关于测试工具的使用。目前经常使用的postman工具,在接口开发完成之后,我这边自己先用postman工具测一遍,保证接口的可用.之前有用过postman工具的压力测试,后面发现只是串行测试(一个接口执行完毕,下一次测试才开始,最多只能测下接口的可靠性,但是并不能测试在多线程的情况下 数据是是否有问题).后来哥们讲出个Jemeter工具及Gatling脚本测...原创 2019-06-04 00:33:40 · 837 阅读 · 0 评论 -
Java从入门到精通 第八章 包装类
java开发中 包含着8种基本数据类型,但是基本数据类型不能作为对象处理。因此某些常用的比较,类型转换 用起来就比较麻烦。所以java除了基础类型之外,也弄了一个封装类。就是把8种基本数据类型 封装了一下,内部包含常用的api方法。下面来看一下~Integerjava中的4种基本数据类型的封装类byte short int long 都是继承自java.lang.Number,实现了Com...原创 2019-04-14 12:24:05 · 121 阅读 · 0 评论 -
Java从入门到精通 第七章 类和对象
类和对象类和对象作为java语言的基础,在日常开发中用到的就是类和对象.类作为对象的载体,承载着对象中的成员变量及成员方法. 同时类作为抽象事物的描述,包含着描述事物的属性和行为信息. (之前一直对成员变量及成员方法 类变量及方法的概念容易搞混 ,后面知道 成员变量及方法属于对象,而类变量及方法 属于类 ,使用static修饰.而局部变量 是只在某个函数中声明的变量,该变量的生命周期...原创 2019-04-13 23:17:14 · 166 阅读 · 0 评论 -
Java中序列化与反序列化的理解
这两天在看有关序列化与反序列化的内容,大概知道了序列化与反序列化的作用,特此记录下,记录的同时 希望对迷惑这一块内容的同学有所帮助 。序列化与反序列化的概念序列化:将对象序列化为字节序列的过程称为序列化.反序列化:将字节序列转换为反序列化对象的过程称为反序列化Serializable接口:没有任何抽象方法需要实现,只要对象实现了这个接口,就可以对该对象进行序列化与反序列化操作.如果没有指...原创 2019-04-16 22:45:56 · 285 阅读 · 0 评论 -
java学习路线图 共勉
下面是从网上找的三幅图片,比较好的说明了作为一个Java程序员的学习路线图,我放在这里作为一种自我提醒的工具,不时看看,并且会赶紧修补自己的知识树!1:Java的知识体系结构2:JavaWeb开发的基本学习路线图3:JavaWeb开发的成长路线图...原创 2019-02-06 23:02:10 · 170 阅读 · 0 评论 -
枚举的使用总结
1.这两天项目经理在问某几张表 状态值01 02 03 分别对应的什么,类似的还有类型等其他字段.要么是因为数据库模型设计的时候 备注不全,要么是因为代码中备注不足的原因 导致的问题,对此 项目经理提出使用枚举 对状态及类型字段 所有出现数值进行一个列举,这样方便后面的开发者使用. 同时还兼顾使用效率高简洁的特点.2.所以准备回顾一下枚举的使用:枚举的出现主要是为了解决 常量声明麻烦 不简...原创 2019-02-06 22:20:11 · 222 阅读 · 0 评论 -
log4j2.xml解析
1.log4j 是apache下的一款开源日志记录工具.之前有粗略的看过框架中有关log4j的部分,今天抽出时间 看中下log4j在框架中的配置.2.首先看一下log4j 在项目架构中有关的配置文件信息,现在项目中涉及到log4j的配置文件由2个,一个是log4j, 另外一个是log4j2. 通过网上资料查询可以知道,log4j2 是log4j的升级版. log4j2相比log4j 部署起来...原创 2019-01-29 17:29:53 · 1502 阅读 · 1 评论 -
跨站请求攻击 XSS与CRSF
1.这2天在熟悉项目框架结构,看到了过滤器中关于XSS跨站请求攻击的过滤器,特意网上查了一下 有关跨站请求攻击的东西.先记录下来所学 所思,省得后面忘了.2.跨站请求攻击主要分为2种.XSS跨站请求脚本攻击(当用户浏览该页面的时候,代码执行,从而实现攻击目的。对受害用户可能采取Cookie资料窃取、会话劫持、钓鱼欺骗等各种攻击)CSRF 跨站请求伪造攻击(危害是攻击者可以盗用你的身份,以你的...原创 2019-02-04 23:41:50 · 528 阅读 · 0 评论 -
win10下安装rabbitmq消息队列
1.这2天 对接的国网的外部接口 响应时间很久,后发现是 在推送白名单的时候 ,会将传给他们的合同文件url地址下载,而 合同文件一般10M左右,很大 所以耗时很久,而且 审核提交可以 中间加个状态 审核中,这样就可以减少用户等待时间,提高用户体验。(类似的功能有支付宝中信用卡还款,蚂蚁花呗 借款等 都是说还款或者放款 已提交,预计1~2个小时内放款)。 这样就可以使用消息队列的功能(...原创 2018-12-14 14:51:44 · 3284 阅读 · 0 评论 -
jdk安装三个环境变量的作用
从去年工作 到现在接触java也有一年的时间了,平时主要是根据需求翻译成java语言以求实现简单的需求,平时很懒也没从底层看些东西,借着今天周六 看书的时候,特把jdk安装所需的三个环境变量研究了一下,下面结合实例讲一些三个环境变量的作用,首先看一下本地机器三个环境变量的位置。JAVA_HOME E:\bxd\jdk1.8;Path %JAVA_HOME%\jre\bin;%JAVA...原创 2018-12-08 18:15:17 · 2292 阅读 · 0 评论 -
将Tomcat中存储的文件 映射到磁盘方法?
1.项目部署到tomcat中发现,由于以前的图像存储及文件上传下载都是放在Tomcat中项目的WEB-INF下的upload以及PDF文件夹下,这样也就导致每次重新部署需要都会将原来的图像覆盖掉。之前的做法是 先备份这2个文件夹,部署解压后的war包后 将备份的文件替换掉,这样的操作对于运维布署人员 很不友好,网络上目前的解决方案是 将存储在Tomcat项目部署路径下的文件,通过映射放到服务...原创 2018-11-16 16:02:38 · 512 阅读 · 0 评论 -
关于java发送https请求 提示java.security.cert.CertificateException: No name matching xxxx found的解决方法
1.这2天项目中需要调用外部接口,开始以为挺简单的,后面使用HttpConnection发送post请求出现了以下的错误信息.通过观察日志中的错误信息发现,应该是在创建HttpConnection的http连接的时候,出现了SSL安全认证的问题,通过查找相关的资料发现,应该是由于外部接口的https证书中的主机名称与本地https请求的主机名称不一致导致的, 同时通过浏览器访问,发现该地址访问不安...原创 2018-10-14 18:39:14 · 33714 阅读 · 1 评论 -
Java中json字符串处理
1.项目中经常需要对json字符串进行处理转化的功能,使用的API也多种多样,特此记录总结一下.2.针对不同的json字符串,需要使用不同的工具类进行处理.比如json数组字符串需要调用JSONArray ,json字符串 使用JSONObject 对象,以下是json字符串处理的示例.package DealJson;import com.alibaba.fastjson.JSON;im...原创 2019-02-08 13:44:09 · 7497 阅读 · 0 评论 -
Spring中过滤器 拦截器 aop使用顺序
1.前文提到log4j2日志记录如何使用,目前log4j2的主要作用是记录 请求入参,出参,控制层 ,方法,使用时间等信息.而接口入参是放在spring拦截器中,出参及消耗时间是放在aop的后置通知中.趁着这个机会刚好把当前框架中过滤器,拦截器,aop之间的使用顺序关系梳洗一下.2.首先来看一下项目中日志记录的内容,主要有发挥作用的有InitInterceptor 拦截其中的preHandle...原创 2019-01-30 11:35:38 · 2825 阅读 · 0 评论 -
RabbitMq的学习总结
1.问题需求原创 2019-02-17 01:59:44 · 226 阅读 · 0 评论 -
Java从入门到精通 第十章 接口、继承与多态
总算把java基础篇的整完了,接下回顾下java中最重要的核心技术篇. 接口 继承与多态.接口/继承/多态 是面向对象思维设计的一种具体表现,它可以有效的减少代码的冗余性,springMVC中 控制层及业务层 的具体实现就是面向接口开发的,同时通过这一章的学习发现,方法的重载及方法的重写都可以减少代码冗余,同时还有一些细节的问题没有注意到,比如方法的重载中 形参不同+方法名相同即可实现重载.修饰词...原创 2019-04-21 15:36:38 · 285 阅读 · 0 评论 -
有关java中Redis使用的理解
过年之后项目中也开始使用redis了.使用学习了redis也一段时间了,说一下使用学习总结的东西.首先Redis有2个作用:一个是作为nosql非关系型数据库存储数据(非关系行数据库指的就是无法通过字段关联 实现关联查询,常见的有内查询与外查询,左连接,右连接等),另一个作用就是类似缓存存储服务器,存储一些会过期的数据(这主要是由于Redis可以设置key的有效期)为什么使用RedisRe...原创 2019-04-15 23:16:01 · 350 阅读 · 0 评论 -
Java从入门到精通 第六章 数组
- 数组数组作为对象的一种同样存储在堆中。作为一种存储基础数据类型的容器。还是蛮重要,虽然与集合相比 存在着长度固定的缺点,日常开发用到不多。但是作为java的基础知识点,重新温故下 还是蛮有必要的。- 数组的定义指通过声明数据类型和大小 来标识一组具有相同类型的容器.数组分为一维数组及二维数组。- 一维数组数组的使用数组的声明实例化需要声明数组的2个基本元素:存储数据类型及存储数...原创 2019-04-11 01:33:00 · 203 阅读 · 0 评论 -
Java单例模式
1.单例模式的概念2.饿汉模式3.饱汉模式4.饿汉模式及饱汉模式存在的不足5.双重检查之饱汉模式6.完美的单例模式原创 2019-03-10 23:11:51 · 158 阅读 · 0 评论 -
IDEA导入Tomcat源码的踩坑日常
最近在向中级开发工程师的路上迈进,所以特意学习下IDEA的使用以及Tomcat源码(主要是最近在Tomcat会话保持上,sessionId的产生及如何给前台产生cookie上有所歧义,特此研究下) 废话不多说 上硬货,IDEA导入tomcat源码时 会碰到各种恶样的坑,特此记录下,一方面是记录,一方面看到的同学一个提醒tomcat源码下载地址,每个版本的源码都有,分为分为tar.gz 以及zi...原创 2019-03-06 01:05:01 · 3021 阅读 · 1 评论 -
IEDA 安装破解
1.IDEA破解已经有大佬弄出来了,需要注意的是 破解IDEA2与2.X之后的破解方法不同,2.2.X之后的很简单,下载jar包,修改配置文件,获取破解码 即可2.X破解方法参考地址3.2.0之前的版本 可以使用网上给出的IDEA破解服务器,也可以自己搭建服务器.添加链接描述4.我的个人IDEA2.0之前的破解服务器地址:https://www.qqcjy.cn//IEDACRACK...原创 2019-02-25 15:07:40 · 816 阅读 · 0 评论 -
微信公众号access_token+jsapi_ticket全局缓存解决方案
1.最近公司在做微信公众号 链接分享的功能,后台需要配合前段 提供access_token+jsapi_ticket的信息,同时有效期设置为7200秒,需要定时刷新.开始想着使用定时器任务+Reddis缓存的方案,后面一想其实Reddis就有定时器的作用,通过把接口获取到的access_token等信息存入Reddis中,同时设置有效期为2个小时,每次需要的时候判断Reddis是否存在,不存在则...原创 2019-02-19 23:45:45 · 2466 阅读 · 0 评论