
java开发
文章平均质量分 78
丶懿
努力前进,不忘初心
展开
-
Redis实现排行榜
Redis怎么去实现排行榜的功能呢?这实际上也是非常有意思的一个需求,我们先来确定一下 Redis 实现排行榜都需要准备什么样子的工作。Redis实现排行榜为什么 Redis 可以实现排行榜的功能呢?这也是和数据结构有一定的关系,因为我们大家的认知里面,都知道 Redis 支持各种数据类型的存储,有 String 有 List,还有 Set ,而 Redis 中就是因为有了这个 Set 所以实现排行榜就相对来说比较简单了,因为 Set 是有序的。Sorted Sets数据类型就像是set和hash原创 2021-11-04 18:00:52 · 2711 阅读 · 0 评论 -
Tomcat的启动流程
1.Tomcat分析阿粉知道作为一个 Java 资深开发人员,对 Tomcat 那是再熟悉不过了,bin目录、conf目录、webapps目录,对这些目录熟悉的简直不能再熟悉了。一言不合就是一个shutdown.sh,或者来个shutdown.bat,但是你知道你的启动startup.bat,和startup.sh他们的启动过程是什么过程么?接下来我们就开始进入分析吧。2.Tomcat的整体结构图这个整体结构图可不是大家想的目录结构图,目录结构图阿粉就不给大家展示了,自己去打开你的 Tomcat,里面原创 2021-11-04 16:07:32 · 915 阅读 · 0 评论 -
为什么foreach中不允许对元素进行add和remove
阿粉的读者遇到了一个比较经典的面试题,也就是标题上说的,为什么 foreach 中不允许对元素进行 add 和 remove。阿粉就这个问题深入分析一下为什么不让使用 add 和 remove,并且实际运行一下,我们来看一下。ArrayList我们先来看看 ArrayList 中如果我们使用了 add 和 remove 会出现什么样子的结果,然后我们分析一下。public static void main(String[] args) { List<String> lis原创 2021-10-26 09:59:00 · 250 阅读 · 0 评论 -
java对接支付宝支付
场景最近在做支付宝的接口对接,之前做过一个版本,但是由于申请了新的账号以前旧的的接口对接就不能使用了所以就开始对接新的版本接口对接,在这里也记录一下让那些还没有对接的兄弟少走点弯路。准备先申请一个企业账户https://memberprod.alipay.com/account/reg/enterpriseIndex.htm创建应用去支付宝的开放平台https://open.alipay.com/platform/home.htm添加应用:https://docs.open.alip原创 2021-10-22 09:36:41 · 324 阅读 · 0 评论 -
Tomcat的生命周期
上一次的文章中,阿粉在面试官面前说了对启动流程不太理解,然后和他聊了一会,然后他又提出了你既然不是特别了解启动流程的话,那你对Tomcat的生命周期熟悉么?序言Tomcat的生命周期管理的话,我们不能总是从书中获取那些知识,而是结合实践,然后综合书中的内容,进行一层一层的深入分析,这样对自己记忆和理解都能更加的透彻。启动的时候的大家可以随便找一个zip版本的Tomcat,然后直接启动起来,我们来看看是个什么样子的,一月 11, 2021 10:16:24 上午 org.apache.coyote原创 2021-09-30 17:07:17 · 1393 阅读 · 0 评论 -
Tomcat的启动过程
阿粉最近在疯狂的研究各种用的工具里面的源码实现,之前给大家都专门的去扣了一下 JDK 里面自带的exe程序,这次阿粉开始更加无聊,直接开始搞Tomcat。1.Tomcat分析阿粉知道作为一个 Java 资深开发人员,对 Tomcat 那是再熟悉不过了,bin目录、conf目录、webapps目录,对这些目录熟悉的简直不能再熟悉了。一言不合就是一个shutdown.sh,或者来个shutdown.bat,但是你知道你的启动startup.bat,和startup.sh他们的启动过程是什么过程么?接下来我原创 2021-09-30 17:06:33 · 450 阅读 · 0 评论 -
面试官因为线程池,让我出门左拐!
前序说实话,阿粉在面试的时候,最开始的时候的面试,面试官只是会问实现多线程的方式都有哪些,但是你说到关于线程池的内容的时候,都是一句带过,而有些面试官对这个也不是很细抓,但是自从阿里的面试官开始问关于线程池的问题之后,这个问题就成了高频热点了。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gWvC8JCh-1595227402536)(http://www.justdojava.com/assets/images/2019/java/image_yi/2020/05-21原创 2020-07-20 14:43:49 · 163 阅读 · 0 评论 -
码农三十岁之后过上了怎么的生活?
最近在优快云上面,看到了许多关于程序员30岁之后应该过怎样的生活,有的人说,在30岁往上的时候,就会出现迷茫,到底是该继续的当一个码农,还是应该回家考个公务员还是老师,阿粉和大家一样,在25岁的年纪就开始想自己在三十岁之后的生活了。但是阿粉却有点不太认同这个观点。关于国内外某些互联网大厂30岁以上码农被裁员遭遇的文章,紧随各种铺天盖地的IT职场人30岁以上职业规划的刺激性文章。好像IT人到了30岁以上就到了要命的时刻,其实阿粉觉得做IT的,只可能说在30岁之后,体力可能跟不上加班的节奏,但是写代码我觉得原创 2020-07-20 11:31:39 · 408 阅读 · 0 评论 -
别说 Python 会生成二维码,Java也会。
前几天看了Python的一个公众号发了一篇文章,说可以生成二维码啥的,然后说多么的简单,这时候阿粉就表示非常不服气了,凭啥说你的那么简单,说的我们 Java 做出的二维码很复杂一样。今天阿粉就教给大家来生成一个小小的二维码,而且也是一样的简单。0.准备用 Java 来生成二维码的话,需要用到一个 jar 包,这个 jar 的名称就是 qrcode.jar ,这个 jar 大家可以去 Maven 的网站上去下载,我当时也是找了好久,或者大家使用我这个链接:https://pan.baidu.com/s/原创 2020-07-20 11:28:11 · 188 阅读 · 0 评论 -
干开发为什么你发现有人比你工资高却什么代码都不写呢?
为什么会有这样的人阿粉工作了这么久,有时候也会被问到一个问题,那就是“为什么我们公司有那种什么代码都不写但是他的工资却是我的2倍的人呢?太不公平了”。在阿粉听到这个问题的时候,首先想到的就是,工程师的分类,就以 Java工程师 为例。首先给大家看一个比较经典的区分,在招聘网站上的区分:初中级开发工程师,那么什么怎么去定义初级开发呢?一般的要求招聘网站上都会写的明明白白,熟悉 Spring boot,Spring等框架;,熟悉dubbo框架、redis等; 熟悉Unix/Linux系统,精通数据库O原创 2020-07-20 11:26:47 · 348 阅读 · 0 评论 -
tomcat也终于出现漏洞了
、1.Tomcat漏洞介绍使用 Apache Tomcat 软件了 Java Servlet,JavaServer 页,Java 表达式语言和 Java 的 WebSocket 技术的一个开源实现。Java Servlet,JavaServer Pages,Java Expression Language和Java WebSocket规范是在Java Community Process下开发的 。阿粉相信大家现在用什么版本的多有,从7.0到目前最新的10.0的用什么版本的都有,但是现在,Tomcat原创 2020-07-20 11:24:15 · 1236 阅读 · 0 评论 -
你们的系统真的安全吗?你们系统是不是也有这种诡异的情况呢?
这个文章来源灵感是公司的项目在安全检查的时候,发现了很多 SQL 注入的一些问题还有一些 XSS 攻击问题,SQL 注入我们都是比较了解的,那么什么是 XSS 攻击呢?测试反馈给我的时候我是一脸懵逼呀,现在我们就来说一下什么是 XSS 攻击,以及我们怎么防止它的出现。什么是XSS攻击我当时听到 XSS 攻击的时候是一脸懵,但是,程序员咱们不就是就是解决问题的嘛,于是打开 Chrome ,百度!...原创 2019-12-02 14:36:29 · 215 阅读 · 0 评论 -
后端JAVAWeb工程师必须掌握的三个内容!!
我们都是作为一个JAVA开发,之前有好几次出去面试,面试官都问我,JAVAWeb掌握的怎么样,我当时就不知道怎么回答,Web,日常开发中用的是什么?今天我们来说说JAVAWeb最应该掌握的三个内容。JAVAWeb知识点一 --Cookie作为一个进入职场一年的年轻人来说,可能还没有很强的能力达到从前端的HTML,CSS和JS再到后端的JAVA代码通通都是自己写,但是至少在前后端交互的过程中,...原创 2019-11-21 09:54:02 · 301 阅读 · 0 评论 -
Nginx+tomcat+花生壳内网映射
开发微信项目的时候需要内网映射工具,但是美誉哦办法处理高并发,为了解决这么问题,决定使用Nginx来解决并发问题,那么我们就来说说怎么使用nginx+tomcat+内网穿透工具来处理1.分别解压两份tomcat,然后把项目打成war包放到tomcat的webapps目录下(1)tomcat1(2)tomcat2分别启动项目,使用不同的端口号启动项目Tomcat1Tomcat2...原创 2018-11-15 08:48:27 · 267 阅读 · 0 评论 -
代理到底是什么?
之前星球的球友面试,问了我一些问题,说让我写一下这个代理,和代理到底是根据什么来进行区分,又该在什么地方使用。这篇文章我细致的讲解一下关于代理的一些问题。代理分类静态代理动态搭理静态代理我们先说静态代理的实现方式,为什么不推荐使用静态代理?1.继承方式实现代理(静态代理中的继承代理)//目标对象public class UserImpl { public vo...原创 2019-08-23 23:29:29 · 173 阅读 · 0 评论 -
面向对象的设计原则最终篇
关于面向对象的设计原则我之前已经解释过四种了,分别是单一职责原则,开放关闭原则,里式替换原则,依赖倒置原则而接下来我们要解释的就是最后的三种原则了,分别是接口隔离原则, 迪米特法则, 组合复用原则前言在面向对象的软件设计中,只有尽量降低各个模块之间的耦合度,才能提高代码的复用率,系统的可维护性、可扩展性才能提高。面向对象的软件设计中,有23种经典的设计模式,是一套前人代码设计经验的总结,如果...原创 2019-08-23 23:32:18 · 185 阅读 · 0 评论 -
面向对象的设计原则:里式替换原则和依赖倒置原则
昨天我看了单一职责原则和开闭原则,今天我们再来看里式替换原则和依赖倒置原则,千万别小看这些设计原则,他在设计模式中会有很多体现,所以理解好设计原则之后,那么设计模式,也会让你更加的好理解一点。前言在面向对象的软件设计中,只有尽量降低各个模块之间的耦合度,才能提高代码的复用率,系统的可维护性、可扩展性才能提高。面向对象的软件设计中,有23种经典的设计模式,是一套前人代码设计经验的总结,如果把设...原创 2019-08-23 23:34:57 · 370 阅读 · 0 评论 -
面向对象的七种原则:单一职责原则,开放关闭原则
我们的知识星球马上就要开始更新设计模式了,在更新设计模式之前,我们是不是需要做一些准备呢?否则设计模式中一些遵循的原则大家会一头雾水,所以我今天来给大家说一些面向对象的七种原则,有人说是6种有人说是7种,我个人认为是7种,我就按照7种来说,今天我就介绍2种,下一篇文章将会继续介绍剩下的五种原则,这些原则也会在设计模式中出现,各位技术人,欢迎大家的踊跃参加呦。前言在面向对象的软件设计中,只有尽...原创 2019-08-23 23:37:08 · 465 阅读 · 0 评论 -
网络编程
最近在看关于网络编程的书籍,书中涉及到了很多关于网络的知识,对我这种非科班出身的人来说,这种书籍是我必须要学的呀,毕竟之前就落人家好几年的基础知识,这时候还不恶补一下?跟着我来恶补一下这个网络知识把。网络概述网络编程技术当前一种主流的编程技术,随着联网趋势的逐步增强以及网络应用程序的大量出现,所以在实际的开发中网络编程技术获得了大量的使用。网络编程实质网络编程的实质就是两个(或多个)设备...原创 2019-08-23 23:28:49 · 138 阅读 · 0 评论 -
索引实现靠的是树,你知道么?
之前朋友在面试的时候被问到了许多关于索引的问题,而索引这个词一直也是我们在开发中最最最常见的,也是很多在进行代码优化的时候会去做的一件事情,所以今天我们来说说面试中关于索引的那点事。索引什么是索引?索引其实是数据库的一种术语,在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑...原创 2019-08-23 23:26:32 · 438 阅读 · 0 评论 -
面试中的最常被问到的两种锁
之前在的文章中已经写了公平锁、非公平锁,独享锁、共享锁,互斥锁和读写锁,那么接下来我们就得介绍互乐观锁和悲观锁了。那我们我就来了解一波把!锁的分类公平锁/非公平锁可重入锁独享锁/共享锁互斥锁/读写锁乐观锁/悲观锁分段锁偏向锁/轻量级锁/重量级锁自旋锁乐观锁(Optimistic Locking)所谓的乐观,实际上是相对于悲观锁来说,我们先看一下百度百科中的解释。乐观锁...原创 2019-06-02 13:35:35 · 297 阅读 · 0 评论 -
使用WebService传递XML格式的字符串作为入参时的工具类
在使用webservice的时候,我们有时候需要使用XML格式来进行传递入参或者是出参,那么入参格式怎么来进行拼接呢?请看/** * @Author: yld * @Date: 2018-12-03 10:36 * @Version 1.0 */public class XmlUtils { public static String lt = "<"; publ...原创 2018-12-14 13:31:45 · 7747 阅读 · 3 评论 -
Oracle数据库的卸载
Oracle作为甲骨文公司最出名的东西,卸载起来,相信各位深有体会,来给你一个卸载的教程,如果不行,那就重装系统吧!!!!那就是直接注册表清除,步骤如下:1、 开始->设置->控制面板->管理工具->服务停止所有Oracle服务。2、 开始->程序->Oracle - OraHome81->Oracle Installation Products-...原创 2018-12-13 10:37:26 · 711 阅读 · 0 评论 -
Oracle数据库的安装和测试
Oracle在数据库里面安装中属于最恶心的那种,因为安全,因为收费,所以安装你懂得!!不多说来,1.解压文件10201_database_win32.zip,并双击解压目录下的setup.exe,出现安装界面,如下:2.输入口令和确认口令,如:password,点击下一步,出现如下进度条,注:此口令即是管理员密码。3.检查先决条件,选中红框所示的选择框,如下图:4.点击“下一步”...原创 2018-12-13 10:34:19 · 3118 阅读 · 1 评论 -
HashMap和Hashtable的6个区别
HashMap 和 Hashtable 这属于双列集合Map的一个实现类,是以键值对即Key-Value的形式存储的,在面试的时候是经常问到的,但是很多人都回答的不够全面,现在我看完一些资料来总结一下1、线程安全Hashtable 是线程安全的,HashMap 不是线程安全的。原因是什么呢,可以看看Hashtable的源码部分public synchronized V put(K key,...原创 2018-12-06 11:08:41 · 1314 阅读 · 0 评论 -
SqlServer中的date日期在mybatis中查询出来差两天
在使用mybatis查询所有的数据的时候,我发现个问题,实体类中的字段是String ,数据中的字段是date,然后再mybatis中查询出来的日期之后,总是比数据库中的天数少两天,找了很多地方 终于找到了 解决方案如下解决方案一将数据类型从date转换成datetime,这种方式不推荐,因为表设计好之后,一般是不再去动表结构的解决方式二(推荐使用)在查询所有的数据的时候进行一个sql...原创 2018-11-19 09:24:17 · 1260 阅读 · 0 评论 -
JAVA中五种线程状态的分析
Thred线程状态的分析Java线程的生命周期中,存在几种状态。新建状态:NEW: 线程创建之后,但是还没有启动(not yet started)。这时候它的状态就是NEW运行状态:RUNNABLE: 正在Java虚拟机下跑任务的线程的状态。在RUNNABLE状态下的线程可能会处于等待状态, 因为它正在等待一些系统资源的释放,比如IO阻塞状态:BLOCKED: 阻塞状态,等待锁的释放...原创 2018-11-13 08:42:23 · 344 阅读 · 0 评论 -
Spring中异常的统一的处理方式
在具体的SSM项目开发中,由于Controller层为处于请求处理的最顶层,再往上就是框架代码的。因此,肯定需要在Controller捕获所有异常,并且做适当处理,返回给前端一个友好的错误码。不过,Controller一多,我们发现每个Controller里都有大量重复的、冗余的异常处理代码,导致很难看。能否将这些重复的部分抽取出来,这样保证Controller层更专注于业务逻辑的处理,同...转载 2018-11-01 16:09:33 · 429 阅读 · 0 评论 -
JAVA之SAX解析XML格式数据--Jdom.jar
package com.yldyyn.test;import org.jdom.Document;import org.jdom.Element;import org.jdom.JDOMException;import org.jdom.Namespace;import org.jdom.input.SAXBuilder;import org.xml.sax.InputSource;...转载 2018-10-30 11:26:34 · 262 阅读 · 0 评论 -
微信退款---内附源码
今天更新一波微信退款的操作,微信退款,最主要的数据就是订单号,如果有了订单号我们就能从数据库中获取之前我们所支付成功的订单所有的数据,废话不多少来码!Controller// @RequestMapping("refund")// public void refund(HttpServletRequest request) throws Exception{// String trade...原创 2019-01-05 13:38:52 · 1099 阅读 · 0 评论 -
MySQL调优的方法,理论调优!
很长时间没更新了,趁着午休更新一波,昨天在看MySQL的书籍的时候,自己整理了一些关于MySQL的调优方法,具体可行度,还是得在工作中细细体会。有些技巧适合特定的安装环境,但是思路是相通的。我已经将它们分成了几类以帮助你理解。Mysql 监控1、有足够的物理内存,能将整个InnoDB文件加载到内存里 —— 如果访问的文件在内存里,而不是在磁盘上,InnoDB会快很多。2、全力避免 Swap...原创 2019-01-02 13:53:55 · 187 阅读 · 0 评论 -
微信支付流程操作--内附代码
之前做了微信支付,一直也没静下心来整理一下微信支付这块的内容,今天晚上有空,整理了一下,微信支付流程我就不详细的介绍了,主要是代码部分,从请求开始到微信支付成功1.首先,页面js部分,需要成功拉取支付请求那么就需要一些微信的内容getWxConfig();function getWxConfig(){ var url =window.location.href; //返回当前的页面的ur...原创 2019-01-03 08:13:48 · 822 阅读 · 1 评论 -
读写锁,你难道不需要了解一下吗?
之前在的文章中已经写了公平锁、非公平锁,独享锁、共享锁,那么接下来我们就得介绍互斥锁和读写锁了。那我们我就来了解一波把!锁的分类公平锁/非公平锁可重入锁独享锁/共享锁互斥锁/读写锁乐观锁/悲观锁分段锁偏向锁/轻量级锁/重量级锁自旋锁互斥锁首先我们先说什么是互斥?互斥:事件A和B的交集为空,A与B就是互斥事件,也叫互不相容事件。这是百度百科中对互斥的的说法,比较官方,而...原创 2019-06-02 13:33:37 · 599 阅读 · 0 评论 -
云阶月地,关锁千重(一.独享锁/共享锁)
之前在的文章中已经写了公平锁和非公平锁了,接下来就该介绍第二种锁了,他就是共享锁和独享锁,顾名思义,独享,只能被一个线程所持有,而共享,就是说可以被多个线程所共有。锁的分类公平锁/非公平锁可重入锁独享锁/共享锁互斥锁/读写锁乐观锁/悲观锁分段锁偏向锁/轻量级锁/重量级锁自旋锁之前的第一次分享中我们已经说过了公平锁和非公平锁了,这次我们组要是来解析一下这个独享锁和共享锁。...原创 2019-05-22 12:14:18 · 302 阅读 · 0 评论 -
云阶月地,关锁千重(一.公平和非公平)
看到文章的标题是不是很诧异,一个搞技术的为什么要搞这么文艺的话题呢?标题说关锁千重,是不是很形象,我们在开发中的锁不也是多种多样么?Lock既然之前说了锁千重,那锁到底有多少种,他们的分类又是怎么区分的,为什么这么区分?我来给大家解释一下。为什么加锁?面试中有很多时候会问到,为什么加锁?加锁是起到什么作用?而实际上在我们的开发过程中会出现并发的情况,比如说两个人几乎同时点击了某一个按钮...原创 2019-05-19 19:18:01 · 342 阅读 · 0 评论 -
JAVA中的树(二叉树AND红黑树)
JAVA中在HashMap中,在JDK1.8之后,就出现了红黑树,那么我们就得研究一下这个数据结构了,毕竟框架都是对底层进行的封装,那么我们一起看一下吧。二叉树二叉树:二叉树是每个节点最多有2个子树的一种数据结构。我们画图来了解一下吧,毕竟画图比较清晰。二叉树的最高层就是根节点,下面又有很多的子节点,25是15的父节点,而15又是25的子节点,其实就是一个相互的关系,而15和44又...原创 2019-05-19 19:16:09 · 3097 阅读 · 0 评论 -
Shiro框架详解
之间工作中曾经用到过shiro这个权限控制的框架,之前一直都是停留在用的方面,没有过多的去理解这方面的知识,现在有时间,专门研究了一下这个Shiro权限的框架使用。Shiro是什么?Apache Shiro是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密。Apache Shiro的首要目标是易于使用和理解。安全有时候是很复杂的,甚至是痛苦的,但它没有必要...原创 2019-05-19 19:14:37 · 374 阅读 · 0 评论 -
内存结构和垃圾回收算法
做JAVA也有接近2年的时间了,公司的leader说,做JAVA,三年是个坎,如果过了三年你还没有去研究JVM的话,那么你这个程序员只能是板砖的工具了。恰逢辞职,来个JVM的解析可好?JVM是Java Virtual Machine(Java虚拟机)的缩写,也就是指的JVM虚拟机,属于是一种虚构出来的计算机,在我们实际的电脑上来进行模拟各种计算机的功能的这么个东西。因为有了JVM的存在,搞J...原创 2019-05-19 19:10:16 · 200 阅读 · 0 评论 -
老年代的垃圾回收算法
之前看过了垃圾回收算法的新生代GC,也是使用的一种比较浪费内存的复制算法,晚上看书又接着往下看了一点,堆 = 新生代+老年代,但是要注意一点老年代不包括永久代(方法区),也就是说堆内存中只有新生代和老年代,而永久代是指的方法区。之前介绍过新生代中的垃圾回收机制了,再来介绍一下老年代的垃圾回收机制里面使用到的算法。新生代GC:MinorGC之前介绍过了不说了,复制算法图解也比较清晰老年代...原创 2019-05-19 19:08:34 · 1207 阅读 · 0 评论 -
JAVA的数据结构一点点心得。
首先要有一个大致的总体体系,这是从网上看到的,感觉还不错,就复制过来了,千万别告我侵权。首先我们先从我们最熟悉的数组开始说,之前面试的时候,问到数组问题的时候,就想某些List的底层是数组结构,然后说增删慢,查询快,但是如果你真的去了解一下底层的话,这说法太笼统,但是实际比对还真的是没有办法做到那么细致,所以很不容易发现问题,所以我专门的去看了一下相关的书籍,也做了一些简单的测试。总结了几下...原创 2019-02-15 16:05:59 · 608 阅读 · 0 评论