java
文章平均质量分 79
弯_弯
这个作者很懒,什么都没留下…
展开
-
在高并发、高性能、高可用 三高项目中如何设计适合实际业务场景的分布式id(一)
在现代分布式系统中,分布式ID组件无疑扮演着至关重要的角色。作为整个系统的黄金链路上的关键组件,它的稳定性和可靠性直接关乎到整个系统的正常运作。一旦分布式ID组件出现问题,黄金链路上的关键动作将无法顺利执行,这将会引发一场严重的系统灾难。分布式ID组件的主要职责是为系统中的每个数据实体生成全局唯一标识符(Globally Unique Identifier, GUID)。这些标识符在分布式环境中必须保证唯一性,以确保数据的一致性和准确性。原创 2024-03-07 10:43:09 · 1043 阅读 · 0 评论 -
30张图带你弄懂 二叉树、AVL、红黑树,他们之间有什么联系,AVL树和红黑树如何平衡
树(Tree)是若干个结点组成的有限集合,其中必须有一个结点是根结点,其余结点划分为若干个互不相交的集合,每一个集合还是一棵树,但被称为根的子树。注意,当树的结点个数为0时,我们称这棵树为空树,记为Φ。二叉树是树的其中一种。二叉树(Binary Tree)是一种每结点最多拥有2个子树的树结构,其中第1个子树被称为左子树,第2个子树被称为右子树。注意,当二叉树的结点个数为0时,我们称这个二叉树为空二叉树,记为Φ。二叉树是有序的,即若将其左、右子树颠倒,就成为另一棵不同的二叉树。原创 2023-07-10 14:34:28 · 745 阅读 · 0 评论 -
从JVM 源码的角度深度剖析CAS是如何实现原子性的
CAS(Compare And Swap,比较并交换),通常指的是这样一种原子操作:针对一个变量,首先比较它的内存值与某个期望值是否相同,如果相同,就给它赋一个新值。原创 2023-04-10 09:11:11 · 404 阅读 · 0 评论 -
从JVM源码角度解析设置了线程优先级为什么还不一定优先执行
从源码中可知,线程默认的级别是5,如果设定的线程级别大于10或者小于1就会抛出IllegalArgumentException异常,如果指定的线程优先级大于线程所在的group的优先级,那么指定的优先级将会失效,取而代之的是group的最大优先级,否则就调用native方法setPriority0(…从源代码可知道为什么我们在java代码中设置了比较高的线程优先级,但是不一定先执行的原因了, 因为java线程优先级对应的不同JVM操作系统的线程并不定是高的,有可能是低优先级也有可能是相同等级的优先级。原创 2023-03-20 09:39:05 · 209 阅读 · 0 评论 -
【JDK源码】一文清晰明白的讲清楚多线程的ThreadLocal,避免因使用ThreadLocal导致内存泄漏
在java的多线程并发执行过程中,为保证多个线程对变量的安全访问,可以将变量放到TrheadLocal类型的对象中,使变量在每个线程中都有独立值,不会出现一个线程读取变量时被另一个线程修改的现象。ThreadLocal类通常被翻译为“线程本地变量”类或者“线程局部变量”类。ThreadLocal 位于JDK的java.lang核心包中,如果程序创建了一个ThreadLocal实例,那么在访问这个变量的值时,每个线程都会拥有一个独立、自己的本地值。ThreadLocal 代表的是线程本地变量,原创 2023-02-27 10:49:57 · 359 阅读 · 0 评论 -
从多个维度剖析a++/++a为什么不是线程安全的
从多个维度剖析a++/++a为什么不是线程安全的原创 2022-10-24 06:00:00 · 385 阅读 · 1 评论 -
你知道阿里巴巴java代码规范中关于创建线程池scheduledThreadPool的错误在哪里吗
scheduledThreadPool 的最大线程数没有发挥作用。 从创建可调度线程的源码看最大线程数数为什么没有发挥作用。原创 2022-09-26 14:40:46 · 745 阅读 · 1 评论 -
一文清晰讲明白DDD(领域驱动设计)的知识点
DDD(领域驱动设计)是一种处理高度复杂领域的设计思想,是一种架构设计方法论,是一种设计模式。以高内聚低耦合为目的,把一个复杂的软件应用系统中各个部分进行一个很好的拆解和封装,对软件系统进行模块化的一种思想。DDD不仅可以用于微服务设计,还可以很好地应用于企业中台的设计,也适用于传统的单体应用。原创 2022-09-22 16:27:43 · 4705 阅读 · 0 评论 -
【速看】手把手一点点带你看明白线程和线程池的状态以及状态之间是如何转换
线程有6中状态:New状态、Runnable状态、Blocked状态、Waiting状态、Time_waiting状态、Terminated状态。线程6中状态的转换关系如下图所示:从上图可以可知:(1)通过 new Thread(…)创建新线程的时候,若尾调用start()方法启动线程,那么该线程就处于new状态;原创 2022-09-21 09:25:01 · 285 阅读 · 0 评论 -
从源码的角度回答“mybatis的#{} 和${}有什么区别”?
在此方法中对SQL配置的所有子元素进行遍历,如果子元素类型为SQL文本,则使用TextSqlNode对象描述SQL节点信息,若SQL节点中存在${} 参数占位符,则是设置为动态SQL, 如果子元素未、、等标签,则使用NodeHandler处理,并设置为动态SQL;在了解#{ } 和${} 区别之前,我们需要先来了解一下动态SQL以及动态SQL的解析过程,动态SQL 指的是事先无法预知具体的条件,需要运行时根据具体的情况动态生成SQL语句。在解析动态sql的时候,对#{}进行了相关的解析处理。原创 2022-09-16 09:53:54 · 116 阅读 · 0 评论 -
【速看】一招教你快速如何快速确定线程池的线程数
线程池标准创建方式是通过标准构造器ThreadPoolExecutor去构造工作线程池。那么corePoolSize和maximumPoolSize 的该如何设置呢?在设置这两个值之前,首先需要通过任务类型对线程池进行分类, 可以分为IO密集型任务,CPU 密集型任务和混合型任务。原创 2022-09-15 09:27:12 · 1411 阅读 · 0 评论 -
一文带你清晰弄明白线程池的原理
【强制】线程资源必须通过线程池提供,不允许在程序中显示创建线程。说明:使用线程池的好处是减少在创建和销毁线程池上所消耗的时间以及系统资源的开销,解决资源不足的问题,如果不适用线程池, 有可能造成系统创建大量同类线程而导致消耗完内存或者“过渡切换”的问题。原创 2022-09-07 15:35:17 · 986 阅读 · 0 评论 -
一招解决IDEA 每当maven依赖有变化或Reload Project时Language Level 和Java Compiler的Target ByteCode version自动重置为低版本
手动修改 Language Level 和Java Compiler的Target ByteCode version为统一版本,但是这种方式治标不治本,每次都需要修改, 不建议使用此方法。方法三: 全局修改, 配置maven的setting.xml文件。这种方法针对单个项目进行设置,其他的非子类项目不受影响.方法二:单个项目配置pom.xml文件。原创 2022-08-22 09:38:34 · 2924 阅读 · 0 评论 -
通过此文让你全面了解Thread线程的基本操作
java 线程的常用操作基本上都在java.lang.Thread 类中进行了定义,基础的操作可以下图进行概括:接下来我们对每一项基本操作进行详细说明:在java编程规范中要求: 创建线程或线程池时,需要指定有意义的线程名称,方便出现bug的时候回溯.在Thread 中可以通过两种方式设置线程名称,方式一是通过构造函数Thread(…)初始化设置线程名称,方式二是通过 setName()方法设置线程名称. 想要获取线程名称就只能通过getName()方法进行获取.设置线程名称和获取线程名称的示例如下运原创 2022-08-17 10:34:27 · 204 阅读 · 0 评论 -
一招带你解决IDEA新建Module时无Spring 选项的问题
想要创建spring/spingMVC等项目时,发现IDEA的newModule中无Spring选项,如下所示.这个时候就有了,原创 2022-07-29 13:43:38 · 3010 阅读 · 1 评论 -
jdk11环境 提示“因为 accessExternalDTD 属性设置的限制导致不允许 ‘http‘ 访问“bug
在jdk11环境下,运行mybatis源码,提示“外部 DTD: 无法读取外部 DTD 'mybatis-3-config.dtd', 因为 accessExternalDTD 属性设置的限制导致不允许 'http' 访问。”错误的解决方案原创 2022-06-23 15:06:36 · 513 阅读 · 0 评论 -
xml文件解析,你该怎么选择,一文给你讲清楚
XML 指可扩展标记语言(EXtensible Markup Language), 是一种很像HTML的标记语言,但是XML用于传输和存储数据的.XML的解析方式分有:(1)DOM解析;(2)SAX解析;(3)STAX解析;(4)JDOM解析;(5)DOM4J解析。其中前两种属于基础方法,是官方提供的平台无关的解析方式;后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于java平台。...原创 2022-06-20 09:44:40 · 313 阅读 · 0 评论 -
JSP--从不懂到了解是一个过程
一.JSP简介 jsp是java Server Pages的缩写,由sun公司倡导,于1999年推广正日益成为开发web动态网站重要而快速有效的开发技术Jsp充分利用了java技术的优势,具有极强的扩展能力和良好的伸缩性,与开发平台无关,这源于java的"一次编写,到处运行"的特点,同时也是一项安全的技术.它具有良好的动态页面与静态页面分离的能力,因而正逐渐成为Inter原创 2014-01-14 21:43:13 · 2114 阅读 · 25 评论 -
深入浅出JPA--概述
一.是什么JPA(Java Persistence API,java持久化API),定义了对象-关系映射(ORM)以及实体对象持久化的标准接口.JPA是EJB3.0规范的一部分,JPA不局限于EJB3.0,而是作为POJO持久化的标准规范,可以脱离容器独立的运行,开发和测试变得更加方便.JPA提供了以POJO编程模型为持久化对象的机制;通过JDK5.0注解或XML描述对象-关系表的原创 2014-09-16 22:17:38 · 1329 阅读 · 14 评论 -
深入浅出JPA--映射持久化对象Entity之@Entity
一个普通POJO类通过标注@Entity可以映射成为持久化的类,可持久化的类可以对应数据库中的数据.首先我们先来看一个很简单的POJO类,Student表示学生,有两个属性,一个是stuId,为实体的唯一标识,一个是stuName,为学生的姓名,Student类的代码如下:原创 2014-10-06 16:46:21 · 2626 阅读 · 12 评论 -
SpringMVC学习道路上的点滴---SpringMVC前奏Web MVC
SpringMVC是一种哦基于Java的实现了WebMVC设计模式的请求驱动的轻量级Web框架,即使用了MVC架构模式的思想.将WEB层进行职责解耦,基于请求驱动指的是使用请求--响应模式,要深入了解SpringMVC ,还得从WEB MVC着手. 每天我们都在使用浏览器,但是又有多少知道Web开发中的请求--响应模式,可以用一张图来表示Web开发中的请求--响应模式:原创 2014-10-13 08:19:13 · 1169 阅读 · 11 评论 -
【java】itoo项目实战促学之SpringMVC注解_@RequestMapping
在使用springMVC框架的时候,在写controller层的时候,在每个类的方法头上,都会有一个很明显的注解[email protected]截获请求后,就通过控制器上@RequestMapping提供的映射信息确定请求所对应的处理方法。我们知道它最常见的作用就是为控制器指定可以处理的URL请求.下面就再给大家介绍一下它的其他作用.一.修饰类先来原创 2015-02-04 11:11:27 · 1058 阅读 · 5 评论 -
【项目】从菜鸟向CTO晋级之路-svn和git该如何选择
今年2月份的时候,公司启动的一个新的项目,项目启动初期考虑使用版本管理工具,眼前有svn和git两个工具可以选择。网友说:在阿里,使用git做版本管理的是项目,需求级的使用SVN,原因是因为项目有相对稳定的交付周期,代码不会有不同人员的交叉修改,所以使用git就足够,需求级则面临不同人员频繁修改同一文件的问题,那么使用svn更好。目前公司还有其他的项目在运行和维护着,一起的项目用的是svn进行版本原创 2017-06-24 11:00:26 · 2406 阅读 · 2 评论 -
深入浅出JPA--实例
在上一篇博客博客深入浅出JPA--概述>>中,已经对JPA进行了一个简单的介绍,本篇博客就给大家介绍一下关于JPA的具体使用步骤具体的步骤如下:(1)创建persistence.xml配置持久化单元,在此文件中需要指定跟哪个数据库进行交互,由于JPA本身没有持久化能力,所以需要指定JPA使用哪个持久化的框架.它就相当于hibernate中的hibernate.cfg.xml(2)创建Ent原创 2014-09-24 17:01:09 · 2208 阅读 · 19 评论 -
动态代理与静态代理之略见
最近一直在学习和讨论设计模式,同时也是在讨论一套学习的模式.对于如何学习,你肯定回想,我从小学就开始学习了,到大学毕业都学习了几十年了,难倒我还不会学习吗.其实想想,你真的会学习吗.读完大学,接受的一直都是应试教育,填鸭式的学习.老师给什么学什么,学不会还怪老师教的不好.那么如何学习呢,学习要从生活中来,在回归到生活中.整个学习的过程中,为什么要贯穿整个学习的过程,为什么有学习这个,学习这个的原创 2014-08-13 14:44:13 · 801 阅读 · 15 评论 -
java web 技术之Servlet
在我的博客前期我简单的介绍过JSP,编译jsp的时候都会生成一个对应的Servlet,今天我们就来了解一下Servlet.一.什么是Servlet Servlet是用java编写的运行在Web服务器中的程序,因此它可以调用服务器端的类,也可以被服务器端的类调用。因为Servlet本身也就是一个类。Jsp页面编写完毕后,在Web引擎中运行前也会被编辑器先转换为Servlet,原创 2014-03-05 20:18:31 · 1795 阅读 · 25 评论 -
JavaBean的应用
Public dataType getXxxx(); Public void setXxxx(dataType data);一.什么是javaBean javaBean是java程序设计应用中的一种组件技术.java开发中的javaBean就是一个类,用面向对象编程的思想封装了属性和方法,并用来完成某种特定功能的类.jsp对于在web应用中集成javaBean组件提供了完善原创 2014-02-25 22:05:20 · 1965 阅读 · 31 评论 -
JSP内置对象-application对象
application 对象用来在多个程序或者是多个用户之间共享数据,用户使用的所有的application对象的作用都是一样的.这与session对象不同.服务器一旦启动,就会自动创建application对象,并一直保持下去,直至服务器关闭,而application会自动消失,不需要麻烦垃圾回收机制. 对于application对象的方法我就不啰嗦了,下面我们来看两个例子,原创 2014-02-12 20:41:26 · 5241 阅读 · 31 评论 -
JSP内置对象Session小例--用户登录
在ASP.NET的学习中,我们就接触过Session,今天在这我们再次来复习一下在java中的session.Session对象用来保存一些在与每个用户会话期间需要保持的数据信息,这样就方便会话期间的一些处理程序.如可以用session变量记住用户的用户名,以后就不必在其他的网页中重复输入了.session对象的信息保存在服务器中,但ID保存在客户机的cookies中,如果客户机不支持Cookie原创 2014-02-05 19:29:20 · 13561 阅读 · 27 评论 -
JS内置对象Request--获取表单数据
JSP的内置对象在JSP页面中无须声明就可以直接使用,其内置对象常用的有Request,response,session,application,out,config,pageCOntext.今天我们要学习的主要是关于JSP内置对象Request.request原创 2014-01-19 11:01:44 · 21594 阅读 · 27 评论 -
J2EE中的13个规范
J2EE平台由一整套服务(Services),应用程序接口(API)和协议构成,它对开发基于Web的多层应用提供了功能支持,J2EE中主要技术及其所处的地位如图所示:为了以后的学习能够走在正道上面,我们需要先来了解一下J2EE的规范.为什么要有j2ee13个规范,在java中的规范起到什么作用?也是一流的标准吗?我们可以拿它和.net进行比较,.net是战略产品,而j2ee描述的是产品原创 2014-01-03 20:13:50 · 1823 阅读 · 28 评论 -
读取随机文件
文件是具有文件名并且存储在外部存储器中的相关信息的集合。通常情况下,计算机处理的大量数据都是以文件形式存放在外部存储器中的。如果要访问存放在外部存储器中的数据,必须先按文件的路径找到所指定的文件,然后再从该文件中读取数据。要保存数据也必须先打开或新建一个文件,才能向它写入数据。在学习VB的时候,我们曾学习过,文件分为顺序文件,随机文件,二进制文件.今天我们就来看看使用java读取随机文件.原创 2013-12-20 08:23:36 · 1629 阅读 · 31 评论 -
浅谈JDBC
使用数据库对数据资源进行管理,可以减少数据的冗余度,节省数据的存储空间,实现数据资源的充分共享,为用户提供管理数据的简便手段.在学习VB的时候,我们接触了ODBC,在学习VB.NET的时候,我们接触了ADO.NET ,在Java的学习中,又来了一个JDBC,但是他们之间都是大同小异的. JDBC(Java DataBase Connectivity)是为java语言定义的一个SQL原创 2014-01-01 10:47:20 · 1215 阅读 · 21 评论 -
解压缩zip文件
每个人的电脑上面都会装有这么一个工具--文件解压缩工具,如Winrar,这些都是别人做好的了,但是你有么有想过有那么一天自己也做那么一个.在java.util.zip包中提供了一些可以完成解压缩的类,可以压缩格式对流进行读写.它们都是继承自字节流类OutputStream和InputStream.其中GZIPOutputStream 和ZipOutputStream 可分别把数据压缩成GZIP原创 2013-12-17 09:05:29 · 1414 阅读 · 26 评论 -
Java --容器
容器,对于我们来说并不陌生.在生活中,盛水的水桶是一个容器,盛饭的碗是一个容器,一个鱼塘也是一个容器.如:z在生活中我们接触过很多容器.那么在我们的程序设计中是不是也有容器呢,在我们开始接触VB时,VB6.0左侧的工具箱就是一个盛放控件的容器,一个界面就是一个容器.VS中的工具箱也是一个容器,如:而今天我要说的是关于JAVA中所要提到的容器,java API提供了一些列类的实例原创 2013-11-20 14:31:31 · 2063 阅读 · 33 评论 -
java开发常用功能一---文件上传
在学习ASP.NET控件的时候,我们学习过关于文件上传的控件,今天我主要介绍的是关于java中的文件上传.大家都知道HTML表单中有file标签用于在客户端向服务器上传文件,但是接收客户端上传文件的服务器端程序代码需要使用java来编写.这一部分的代码特别的复杂,这个时候我们就可以使用第三方控件--jspSmartUpload组件来实现.一.jspSmartUpload组件简介jspSma原创 2014-03-19 15:18:54 · 1924 阅读 · 31 评论 -
常用Javascript数据验证(二)
学习在于积累,虽然说javascript 在差不多一年前就学习了原创 2014-04-15 14:54:33 · 1402 阅读 · 19 评论 -
Cglib动态代理
在我的上一篇博客jdk动态代理模拟>中已经详细的说过了JDK自带的动态代理.JDK的动态代理机制只能代理实现了接口的类,而不能实现接口的类就不能实现JDK的动态代理,cglib是针对类来实现代理的,他的原理是对指定的目标类生成一个子类,并覆盖其中方法实现增强,但因为采用的是继承,所以不能对final修饰的类进行代理。 Cglib是一个优秀的动态代理框架,它的底层使用ASM在内存中原创 2014-08-26 14:51:50 · 862 阅读 · 15 评论 -
轻松搞定端口被占用
最近一直在使用tomcat和jboss ,进程出现端口被占用的情况,端口一但被占用了,tomcat或者是jboss启动的时候,就会报一大串的错误,其中有个特别明显的标准就是:Caused by: java.lang.Exception: Port8083 already in use.或者是Caused by: java.net.BindException:Address already原创 2014-06-22 20:44:58 · 27001 阅读 · 17 评论 -
Struts2配置文件,你知道多少?
废话就不多说了,就直接进入zhu 问题一.struts2的配置文件有哪些,相对应的作用是什么?Web.xml:包含所有必须的框架组件的web部署描述符.Struts2主要加载前端控制器及初始化参数. Struts.xml:定义应用自身使用的action映射,拦截器及常量,result/view定义. Struts-default.xml:定义框架自身用的action映射原创 2014-07-05 00:11:17 · 1162 阅读 · 11 评论