Java笔记
Java笔记
程序员小章
我知道的一切都在这了https://blog.csdn.net/weixin_44141495/article/details/108240361
展开
-
SQL优化的一些策略(整理篇)
SQL优化的一些策略定位SQL当我们数据量大的时候,我们的SQL执行效率往往不是那么可观,虽然结果也执行的出来SQL也是正确的,但是有的时候我们不得不更改原来的SQL以提升性能。就像排序算法一样,逻辑简单的冒泡也能实现功能,但是数据量大的时候执行效率就非常的差,而我们的快速排序可以出色的解决我们的需求。show statusshow status命令可以查看我们数据库的一些参数,比如如图所示,前四个Com是近期各类查询语句的执行次数,对于批量查询这个计数只会增加1,是对于任何的存储引擎都显示原创 2020-11-11 21:36:26 · 1162 阅读 · 0 评论 -
springcloud光速入门(一) 服务的注册与发现
springcloud光速入门简单概述springcloud看上去很难,很恐怖,但是我一遍学下来,感觉还是蛮容易的,面向配置编程,这一篇主要是讲配置,细节可能比较少。首先我们的微服务应该有以下部分:服务注册中心简单说一下,服务注册中心就是我们的一个类,可以有很多方法,但是我们的方法只能被我们同一个项目中的其他类调用,或者说我电脑上写了一个类,有很多方法,但是我没办法让另一台电脑调用这个方法,解决方案就是将这个类注册进一个注册中心,然后其他的(电脑)通过网络连接从注册中心中就可以去访问我们的方法。原创 2020-11-02 15:18:21 · 349 阅读 · 0 评论 -
springcloud光速入门(二)服务降级服务熔断
springcloud光速入门(二) 服务降级服务熔断小问题前面讲了一下服务发现和服务注册,其实业务都比较简单,无非就是多了一层东西,就像我们学Spring,不是去new一个对象而是使用一些注解来支持,我们微服务的学习也是这样的,只不过我们的模块拆分了。之前写的小demo有个小问题,那就是:这是我们8001端口的方法,程序停了3秒钟,没什么问题@GetMapping("timeout_success")public ResultData timeoutSuccess(){ try {原创 2020-11-02 16:48:06 · 532 阅读 · 1 评论 -
MyBatis代码生成器Easy Code
MyBatis代码生成器Easy Code传统的Jdbc代码量确实很多,包括连接的获取,释放连接,结果集封装。使用JdbcTemplate帮助我们自动进行连接的获取释放,结果集封装,将任何sql语句都简化到一行,大大减少了代码量,使我们的工作都集在SQL层面了。JdbcTemplate虽然好用,但是一个轻量级的框架,使用模板设计模式进行简化Jdbc操作。现在主流的持久层框架,比如MyBatis的动态SQL,Hibernate的全自动装配,所以JdbcTemplate仅限于小Demo的学习阶段了。原创 2020-10-30 21:44:40 · 1019 阅读 · 1 评论 -
SSM升级为SpringBoot
SSM升级为SpringBoot前段时间把原来的JavaWeb项目架构升级为了Maven项目。技术栈则是从原生的Jdbc+Servlet升级到了SSM,现在准备把项目升级为SpringBoot。目前项目架构:升级步骤改POM改项目结构主启动类合并配置文件改POMPOM文件导入的jar包非常的多,使用SpringBoot的场景启动器来简化。目前是一个单体项目,所有的功能都写在一个模块里面。所以我们可以使用<parent>标签来做jar包版本的仲裁。然后根据需要添加sta原创 2020-10-29 18:29:09 · 8125 阅读 · 7 评论 -
如何为你的开源项目发布一个版本
如何为你的开源项目发布一个版本其实很简单的,但是网上搜了一圈没搜到,那么我只好自己写咯。这是我之前写的项目,后缀是1.0是吧,这就是版本了。啧啧啧,其实这个项目就叫e_express,这个1.0我能说不是我自己加的吗。首先我们把项目上传到gitee上(也可以github,但是又英文又慢),然后觉得这个项目不错,BUG比较少,功能也完成的不错,代码也比较工整,准备发布一个版本,叫1.0。以后推出2.0,3.0。那么问题来了,怎么发布一个版本呢?点击图片上的标签==>新建标签。这里我们看原创 2020-10-29 00:15:16 · 1639 阅读 · 1 评论 -
Maven解决冲突的小技巧(适用于Maven入门的新人)
Maven的冲突的小一些小问题pom.xml最近把项目架构,转变成了Maven,代替原来的JavaWeb项目。随着pom.xml的插入,用起来那叫一个爽。平时我们的jar都是网上的资料那边老师提供的。但是Maven的pom文件也不是那见得那么简单,我们平时其实粘贴jar包,老师给的包一般不会出问题,而且同一种jar包的不同版本同时放lib目录下好像没出现啥问题。Maven这种本地仓库的方式好处是不用说的,减少项目文件大小,通过中央仓库,可以让不同的设备都能同步jar包。但是我们使用起来,要一步一步原创 2020-10-28 23:53:35 · 381 阅读 · 0 评论 -
Redis持久化策略
什么是Redis持久化由于redis的值放在内存中,为防止突然断电等特殊情况的发生,需要对数据进行持久化备份。即将内存数据保存到硬盘。Redis持久化存储方式RDB持久化RDB 是以二进制文件,是在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,达到数据恢复。优点:使用单独子进程来进行持久化,主进程不会进行任何 IO 操作,保证了 redis 的高性能缺点:RDB 是间隔一段时间进行持久化,如果持久化之间 redis 发生故障,会发生数据丢失转载 2020-10-23 14:44:49 · 176 阅读 · 0 评论 -
什么是Redis
Redis入门学习新技术三连?是什么?有什么用?怎么用?什么是Redis来自百度百科redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached原创 2020-10-23 14:32:00 · 1921 阅读 · 1 评论 -
Maven常用一些标签和知识
Maven常用一些标签和知识当前项目的信息 <groupId>:企业网址反写+项目名 <artifactId>:项目名-模块名 <version>:版本号+类型(snapshot快照版本(简化版本)、alpha内测版、beta公测版、release稳定版、GA正式发布版) <packaging>:打包类型,默认是jar,可以配置成war、zip、pom类型。1234<name>:当前项目名<url>:项目地址&l转载 2020-10-21 23:32:16 · 375 阅读 · 0 评论 -
使用Maven代替传统JavaEE项目吧
传统JavaEE项目Jar包问题当我们创建一个JavaEE项目时,就需要使用一些第三方依赖jar,比如数据库连接的,连接池的,单元测试的,json,xml解析的等等。而且很多都是重复的。以我之前写的项目为例。电脑端微信端之前按照电脑端和微信端将项目拆分成了两个子项目,技术栈都是一致的,但是我们发现了jar包都是重复的。看了一下,还是不小的(项目大小是18M,这些重复的jar包就占用了一半的内存)。我们知道jdk自带的jar包也很多,为什么不导入到lib里面呢?由于我们的jdk自带的jar都原创 2020-10-21 23:08:03 · 622 阅读 · 0 评论 -
Gitee基本使用
码云gitee代码托管继对gitee和git的简单介绍以及git安装之后,这篇博客主要介绍如何使用git命令,从而在码云上进行代码托管。首先,参考码云平台帮助文档先介绍一下git中的几个重要概念:分支、提交、拉取和推送,有助于帮助理解下面的内容。1. 分支(git branch命令)git默认分支一般是master,当然,这是可以修改的,我们在master完成一次开发,生成了一个稳定版本,那么当需要添加新功能或者做修改时,只需要新建一个分支,然后在该分支上开发,完成后合并到主分支即可,分支功能解决转载 2020-09-28 18:02:05 · 10287 阅读 · 3 评论 -
Git入门
Git入门https://www.csdn.net/gather_25/MtTaEg0sMzIzMzctYmxvZwO0O0OO0O0O.html)Git简介Git是目前世界上最先进的分布式版本控制系统,在处理各种项目时都十分高效,而且非常的高大上。SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。而且集中式版本控制系统是必须联网才能工作。Git是分布式版本控制转载 2020-09-28 17:54:37 · 270 阅读 · 0 评论 -
JQuery Ajax
jQuery - AJAXjQuery load() 方法jQuery load() 方法是简单但强大的 AJAX 方法。load() 方法从服务器加载数据,并把返回的数据放入被选元素中。语法:$(selector).load(URL,data,callback);必需的 URL 参数规定您希望加载的 URL。可选的 data 参数规定与请求一同发送的查询字符串键/值对集合。可选的 callback 参数是 load() 方法完成后所执行的函数名称。这是示例文件(“demo_test.t转载 2020-09-28 14:06:50 · 57 阅读 · 0 评论 -
Ajax入门
数据请求:Ajax基础Ajax 概述它是浏览器提供的一套方法,可以实现页面无刷新更新数据,提高用户浏览网站应用的体验。Ajax 的应用场景页面上拉加载更多数据列表数据无刷新分页表单项离开焦点数据验证搜索框提示文字下拉列表Ajax 运行原理及实现Ajax 运行原理Ajax 相当于浏览器发送请求与接收响应的代理人,以实现在不影响用户浏览页面的情况下,局部更新页面数据,从而提高用户体验。Ajax 的实现步骤创建 Ajax 对象 var xhr = new XMLHttpRequ转载 2020-09-28 13:49:30 · 293 阅读 · 0 评论 -
码云平台IDEA系列的插件使用
码云平台IDEA系列的插件使用1. 插件安装注意:码云 IDEA 插件已由 gitosc 更名为 gitee。 新版插件 gitee 菜单已经和 git 菜单合并方法一启动 idea选择 Configure - Plugins选择 Browse repositories...搜索 gitee,安装插件重启 idea 即可方法二选择 File - Settings选择 Plugins选择 Browse repositories...搜索 gitee,安装插件重启 idea转载 2020-09-28 12:15:35 · 312 阅读 · 0 评论 -
.gitignore是干什么的?
Git忽略文件.gitignore详解在工程中,并不是所有文件都需要保存到版本库中的,例如“target”目录及目录下的文件就可以忽略。在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件或目录。Git 忽略规则优先级在 .gitingore 文件中,每一行指定一个忽略规则,Git 检查忽略规则的时候有多个来源,它的优先级如下(由高到低):从命令行中读取可用的忽略规则当前目录定义的规则父级目录定义的规则,依次递推$GIT_DIR转载 2020-09-28 11:51:00 · 15421 阅读 · 2 评论 -
Git常用指令Api
Git常用指令Api文章目录Git常用指令Api配置用户名和邮箱配置https和ssh推送时保存用户名和密码推送到远程仓库正确流程一、新建本地仓库二、配置(全局和项目)三、增加/删除文件四、代码提交五、分支六、标签七、查看信息八、远程同步九、撤销十、其他附:Git常用命令速查表附:Git指令速查表附:资料链接有关Git的详细介绍可以参考Git简介经常使用 Git ,但是很多命令还是记不住。一般来说,日常使用只要记住下图7个命令就可以了。但要熟练掌握,恐怕要记住40~60个命令,所以整理了一份常用Git转载 2020-09-28 11:46:56 · 1094 阅读 · 1 评论 -
什么是版本控制,什么是代码托管平台
什么是版本控制如果在开发团队中没有使用版本控制,多个开发人员共同负责同一个软件或文档的开发,每个人在各自的机器上有整个软件文档的备份,并对之实施编程开发,在分别完成各自任务之后,再通过文本比对工具将各自机器上的不同版本的程序整合到一台机器上。没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,如软件代码的一致性、软件内容的冗余、软件过程的事务性、软件开发过程中的并发性、软件源代码的安全性,以及软件的整合等问题。版本控制的目的是实现开发团队并行开发、提高开发效率的基础。其转载 2020-09-28 11:41:16 · 1968 阅读 · 0 评论 -
会话技术 Cokkie Session
Session和Cookie什么是会话跟踪技术会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。保持对用户会话期间的数据管理。常用的会话跟踪 技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份Session通过在服务器端记录信息确定用户身份。Cookie1.什么是cookieCookie是客户端(一般指浏览器)请求服务器后,服务器发给客户端的一个辨认标识,保存在客户端,当客户端再次 向服务器发送请求时,会携带着这个辨认标识,服务器就可以通过这个标识来识别原创 2020-09-24 10:49:22 · 282 阅读 · 0 评论 -
Jsp超详细整理
*JSP**入门什么是JSPJSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它 是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传 统的网页HTML文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为 (*.jsp)。用JSP开发的Web应用是跨平台的,既能在Linux下运行,原创 2020-09-24 01:05:35 · 655 阅读 · 0 评论 -
软件开发必知必会
软件开发必知必会软件开发流程需求分析一个软件没有出现之前,只是有一部分人有一个想法,我需要一个这样的东西(想要一个孩子了)用来管理我的什么什么,这个时候一个想法出现了,就会有这个需求,他会找软件公司需求分析师来商量,这个时候一个软件就怀孕了,相当于开始发育了.需求分析是听完要求以后会将大概的功能描述一下,用Word或者Axure画出一个简单的Demo给用户看,经过几次确认以后需求分析师会最后确认功能是不是完善的,确认了以后进行我们的下一步,概要设计概要设计这个功能主要是干嘛的呢?很多的公司觉得没必转载 2020-09-23 17:25:39 · 257 阅读 · 0 评论 -
WEB基础知识
WEB基础知识什么是webweb(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构。web发展史起源1989年CERN(欧洲粒子物理研究所)中由Tim Berners-Lee领导的小组提交了一个针对Interne转载 2020-09-23 17:00:58 · 4644 阅读 · 0 评论 -
JavaWeb学习笔记 --MVC设计模式
MVC设计模式什么是设计模式设计模式是一套被反复使用的、多数人知晓的、经过分类编目的设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。MVC基转载 2020-09-23 16:36:43 · 431 阅读 · 0 评论 -
Listener监听器
JavaWeb学习笔记-Listener什么是Listner监听器用于监听web应用中某些对象、信息的创建、销毁、增加,修改,删除等动作的发生,然后作出相应的响应处理。当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。常用于统计在线人数和在线用户,系统加载时进行信息初始化,统计网站的访问量等等。分类按监听的对象划分,可以分为ServletContext对象监听器HttpSession对象监听器ServletRequest对象监听器按监听的事件划分对象自身的创原创 2020-09-23 16:10:27 · 188 阅读 · 0 评论 -
Filter过滤器
JavaWeb学习笔记- Filter什么是Filter过滤器是 Servlet 容器中的一个组件,主要负责处理请求和响应,具体来说是负责对请求(HttpServletRequest)进行预处理, 以及对响应(HttpServletResponse)进行后处理,在实现上,基于函数回调,它可以对几乎所有请求进行过滤,所以它是依赖 Servlet 容器的。执行流程个Tomcat,如果Tomcat配置了拦截器,则由先拦截器该请求,拦截器可以选择拦截请求或者放行请求,也可以加强请求。(对用户发送的reque原创 2020-09-23 15:50:12 · 506 阅读 · 0 评论 -
转发与重定向
转发与重定向什么是转发转发是指我们的一个请求处理器(ServletA)将请求交给另一个处理器处理(ServletB),再讲结果返回。基本流程客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getRequestDispacther()方法,把请求转发给指定的student_list.jsp,整个流程都是在服务器端完成的,而且是在同一个请求里面完成的,因此servlet和jsp共享的是同一个request,在servlet里面放的转载 2020-09-23 12:43:38 · 145 阅读 · 0 评论 -
Servlet 进阶篇
Servlet进阶Servlet3.0注解配置注解配置的使用我们删除之前的web.xml的配置文件,在我们要配置URL路径的Servlet类上添加@WebServlet()注解,括号里面传入我们要处理的请求的URL路径,以/开头@WebServlet("/hello")public class ServletDemo1 implements Servlet { ...}原来的xml,我们看到别名是冗余的只是为了识别,一个servlet就8行,阅读性很差。<servlet>原创 2020-09-22 18:39:38 · 342 阅读 · 0 评论 -
Servlet新手入门篇
Servlet入门什么是ServletJava Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。简单的概括:Servlet 是 JavaEE 规范之一。规范就是接口Servlet 就 JavaWeb 三大组件之一。三大组件分别是:Servlet 程序、Fil原创 2020-09-22 17:23:25 · 693 阅读 · 0 评论 -
Jdbc进阶篇
JDBC进阶部分上一篇讲了Jdbc的基本使用,常用对象,方法的讲解,这篇博客主要对一些Jdbc实际使用场景的问题和优化展开的。SQL注入问题SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。简单的示例:这是一条基础的登录语句,用户传过来两个参数,我们验证一下数据库是否有这个账号密码,如果原创 2020-09-21 23:47:35 · 263 阅读 · 0 评论 -
Tomcat服务器入门
Tomcat服务器入门(Idea)Tomcat的概述什么是Web服务器?服务器:安装了服务器软件的计算机本质上也是硬件,只是配置比较好。硬盘比较大,CPU核数比较多,CPU更加高级,反正就是比一般的电脑要好。服务器软件:接收处理用户的请求,并响应用户请求的计算机软件。Web服务器软件:将web项目部署到web上,让用户通过浏览器访问到这些项目。Web服务器接收用户的浏览器发出的Http请求,处理并响应用户请求。为什么使用Tomcat服务器?常见Java相关的Web服务原创 2020-09-21 20:38:25 · 247 阅读 · 0 评论 -
Java JDBC入门篇
JDBC一篇入门什么是JDBC简介JDBC(JavaDataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库。原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句。发展历史自从Java语言于1995年5月正式公布以来,Java风靡全球。出现大量的用java语言编写的程序,其中也包括数据库应用程序。由于没有一个Java语言的数据库操作API,编程人员不得不在Java程序中加入C语言的ODBC函数调用。原创 2020-09-20 19:41:20 · 222 阅读 · 1 评论 -
用了这么久你还不知道Java 8到底有哪些新特性?
用了这么久你还不知道Java 8到底有哪些新特性?一、接口的默认方法(Default Methods for Interfaces)Java 8使我们能够通过使用 default 关键字向接口添加非抽象方法实现。 此功能也称为虚拟扩展方法。第一个例子:interface Formula{ double calculate(int a); default double sqrt(int a) { return Math.sqrt(a); } }1234567Formula转载 2020-09-20 17:53:51 · 309 阅读 · 0 评论 -
Java枚举类 Enum (搬运)
Java枚举类 Enum为什么要引入枚举类一个小案例你写了一个小程序,不过好久不用了,突然有一天,你想使用一下它。程序要想正确运行,需要将今天星期几存到数据库里。这个时候,你开始犯难了。当初的你还很年轻,不懂程序界的险恶,设计这个程序的时候,傻不拉几把这个字段设计为int类型的,用0代表周日,1代表周一。。。6代表周六,添加的时候就setWeekday(0)。但是这么长时间没用了,你忘记自己是从周一开始计算还是周日开始计算了,换句话说,你想不起来0代表的是周一还是周日了!于是你各种翻代码,看数据库转载 2020-09-20 17:47:24 · 432 阅读 · 0 评论 -
手撕AQS源码第三弹 --AQS加锁解锁原理
AQS加锁解锁原理这是网上引用的一张流程图,讲的非常明白,但是对于没有扒过源码的小伙伴而言,有点困难了。比如SIGNAL,方法没有加注释,就上传了这个一个图也好几百访问量,我裂开了。首先讲加锁的流程之前,先把相关的方法,变量简单讲一遍相关变量private transient volatile Node head;private transient volatile Node tail;private volatile int state;解释:我们的队列由Node组成,每个Node原创 2020-09-20 15:29:06 · 874 阅读 · 0 评论 -
手撕AQS源码第二弹 -- AQS常见方法
AQS常见方法首先我们研究源码的时候,应该研究核心源码,只要研究完核心源码,其他的源码无非就是在此基础上的一些附加功能。AQS的源码也就2000多行,我们对AQS的方法进行简单的分类:CAS相关CAS没什么好说的,只要是任何修改值的操作,都可以用CAS的原子操作进行。返回值方法名描述booleancompareAndSetStateCAS尝试修改锁状态booleancompareAndSetHeadCAS尝试修改队列头booleancompareAndS原创 2020-09-20 12:04:17 · 244 阅读 · 0 评论 -
手撕AQS源码第一弹 -- AQS的继承体系,内部类,成员变量
AQS的继承体系,内部类,成员变量父类和父接口AbstractQueuedSynchronizer继承了AbstractOwnableSynchronizer,实现类序列化接口。而AbstractOwnableSynchronizer主要就是一个成员变量exclusiveOwnerThread,表示当前持锁的线程对象,然后就是get set方法,是个很简单的抽象类。public abstract class AbstractQueuedSynchronizer extends Abstract原创 2020-09-20 10:40:30 · 378 阅读 · 0 评论 -
如何学习JUC?
JUC什么是JUCjuc是Java.util.concurrent包的简写,也叫Java的并发包。很多培训机构并不会去教这个JUC包,一般讲多线程之前,基本上最多讲到一个线程池的创建和使用。那么这个JUC包是何方神圣呢?JUC包有哪些目录结构:java.util Java工具包concurrent Java并发包locks 锁atomic 原子类其中我们的java.utils.concurrent下有我们的线程池,TimeUnit等。java.utils.co原创 2020-09-19 23:13:01 · 1493 阅读 · 1 评论 -
一篇带你入门Java线程池
Java线程池入门什么是线程池我们知道线程创建的多种方式:继承Thread实现Runnable实现Callable线程池就是创建一个容器,来管理我们的线程,将线程的创建过程交给线程池,我们只需要调用线程池的execute()方法,将需要执行的任务(Runnable的实现类)传进去,线程池就能帮我们完成任务。为什么要使用线程池这是我们熟悉的任务管理器,我们打开性能可以看到,目前电脑上有194个进程和3214个线程,其中的线程就是指我们的内核线程执行普通的方法执行线程10000个线程p原创 2020-09-19 22:46:42 · 304 阅读 · 0 评论 -
Java初学者也能看的懂的AQS
Java初学者也能看的懂的AQS学习AQS之前,你需要了解以下内容,如果不是很清楚,那么理解本文会有点吃力。(Java初学者得会一下内容)synchronizedCASLock前言synchronized首先我们知道synchronized是Java关键字,上锁释放锁等一切操作都是由JVM控制的。我们只能通过虚拟机的C++才能去研究其底层实现。我们除了判断synchronized是作为方法的修饰符,还是当做同步代码块使用以外,没什么需要我们程序员操作的。cas一种自旋的原子操作,也是J原创 2020-09-17 21:48:45 · 266 阅读 · 0 评论