![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 80
OpenWorld1
技术引领未来
展开
-
并发编程系列(七):线程池原理
一、线程池在java中,创建和销毁线程花费的时间和消耗的资源都较大,如果每来一个请求就创建一个线程,可能会导致系统资源的过渡消耗。为了解决该问题,引入了线程池。通过创建一个线程池子来管理多个线程的使用,当有任务需要处理,则分配给线程池中的线程处理,线程处理完后不会立即销毁,而是等待后续任务。通过对线程的管理,避免大量线程创建的开销线程池的优势:1. 降低创建线程和销毁线程的性能开销2....原创 2019-10-29 16:25:24 · 220 阅读 · 0 评论 -
并发编程系列(六):阻塞队列
一、生产者消费者的实际使用生产者消费者模式在分布式消息队列中用到较多,比如 ActiveMQ、kafka、RabbitMQ 等等,消息队列的使用可以使得程序之间实现解耦,提升程序响应的效率。如果我们把多线程环境比作是分布式的话,那么线程与线程之间也可以使用这种消息队列的方式进行数据通信和解耦。二、阻塞队列使用案例注册成功后增加积分用户注册时,在注册成功以后发放积分。这个场景一般来说,我们...原创 2019-10-28 10:29:46 · 189 阅读 · 0 评论 -
并发编程系列(五):ConcurrentHashMap的底层原理
一、内容要点1.通过数组的方式实现并发增加元素的个数(不用加锁,减少性能消耗)2.并发扩容,可通过多个线程实现数据迁移3.采用高低位链的方式解决多次hash计算的问题,提升了效率4.sizeCtl的设计,3种表示状态5.resizeStamp的设计,高低位的设计实现唯一性以及多个线程的协助扩容二、底层设计结构1.7版ConcurrentHashMap由一个个Segment组成,其...原创 2019-10-27 15:44:27 · 415 阅读 · 0 评论 -
并发编程系列(四):线程并发包J.U.C和AQS的原理
一、J.U.C简介Java.util.concurrent 是在并发编程中比较常用的工具类。1.LockLock是JUC包中最重要的组件,解决synchronized关键字在某些场景的短板。eg.锁修饰的代码块内,调用了同个锁修饰的代码块,锁对象相同,这时候第一个获得锁的代码还没释放,后面又有等待获取锁的代码,就形成死锁状态2.Lock实现Lock本质是一个接口,定义了获取和释放...原创 2019-10-26 11:55:26 · 273 阅读 · 2 评论 -
并发编程系列(三):重排序和可见性问题
一、volatile关键字作用eg.代码演示有无加volatile关键字的显示结果public class App { public volatile static boolean stop=false; public static void main( String[] args ) throws InterruptedException { Thre...原创 2019-10-25 13:28:51 · 373 阅读 · 0 评论 -
并发编程系列(二):线程锁使用场景和原理
问题:java中如何解决线程并行导致的数据安全问题?java SE 1.6后对synchronized做了优化,增加了偏向锁、轻量级锁概念,以减少获得/释放锁带来的性能消耗一、synchronized的使用锁的粒度,从上到下变小1.修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁public synchronized static void demo2() {...原创 2019-10-25 09:38:08 · 507 阅读 · 0 评论 -
并发编程系列(一):线程基础
一、线程生命周期通过start方法启动线程,当run()方法执行完毕,线程生命周期即将终止线程6种状态NEW:初始状态,线程被创建,还没调start方法RUNNING:运行状态,就绪ready和运行两种统一称为“运行中”WAITING:等待状态TIME_WAITING:超时等待状态,超市以后自动返回TERMINATED:终止状态,表示线程执行完毕BLOCKED:阻塞状态表示线程进...原创 2019-10-24 15:56:44 · 118 阅读 · 0 评论 -
ORM框架设计原理与定制
一、ORM框架顶层设计原理1、java原生的一套jdbc操作数据库接口,有如下几个步骤:(1)获得数据库驱动具体的驱动程序由各数据库厂商提供,java负责提供实现接口Class.forName("com.mysql.jdbc.Driver")(2)建立连接Connection conn = DriverManager.getConnection()(3)创建语句集Prepare...原创 2019-10-11 21:33:38 · 545 阅读 · 0 评论 -
代码规范性
对于初学者来说,一开始把功能做出来就可以了,但随着年限增加,学习代码的规范性,可以提高代码的可读性和可维护性,便于后来者更快的入手项目,通过基本的代码规范也能够避免一些不应出现的问题,比如:空异常、类型转换异常等,就可以从源头上预防。还有学习代码的设计规则,提高抽象能力和代码的解耦能力,当然,除了代码规范性还有代码安全性条规,涉及数据库、web和Java安全,防止外部的恶意攻击。目前先...原创 2019-09-14 17:27:49 · 1525 阅读 · 0 评论 -
单点登录实现流程
最近在公司做了一个单点登录的需求,由于之前没做过,花了一点时间也走了一点弯路。但是,了解了实现的原理和过程过后,就对单点登录的设计思想更明白了。下面就简单总结了下这个思考过程。一、单点登录单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。二、单点登录背景一个大的应用系统内部,有很多的子系统,每个子系统都有相应的一套登录认证机制,对用户来...原创 2019-08-18 15:44:54 · 1298 阅读 · 0 评论 -
常用软件整理
作为一名开发人员,随着工作年限增加,根据不同应用场景,所要使用的软件各不相同,而我们接触的软件一定会逐渐增多。整理软件,便于我们遗忘时快速索引;通过整理常用软件和工具,也能提高我们的开发和做事效率。基础开发环境及软件搭建: 序号 软件 作用 1 Jdk Java开发环...原创 2019-08-07 23:31:26 · 229 阅读 · 0 评论 -
java开发定位思维和思路
【定位思维篇】第一步:看代码首先应该熟悉每一个功能模块,知道每个功能按钮是干什么用的,执行后程序会做出什么样的反应,一边研究每一个按钮的功能,一边思考它是如何和数据交互的和其他功能关联起来的!如果是我设计我将如何设计,思考将贯穿始终,看代码一直是思考和记忆力以及耐力的综合考量!如果你没这个勇气或者说你不想这么做,那么你的技术将永远不会提升,你也将永远的被进不到“大师”的行列!第二步:打开“...原创 2019-07-12 21:10:23 · 1440 阅读 · 0 评论 -
反射基本知识
获取对象类型的三种方式 (1)类.getClass() (2)类.class (3)Class.forName(全路径)invoke,setAccessible (1)setAccessible,设置是否允许访问,而不是修改原来的访问权限修饰词。 (2)invoke(Object obj, Object… args),对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。原创 2016-10-31 20:08:02 · 297 阅读 · 0 评论 -
map集合遍历方式
【常用方法】 HashMap hm=new HashMap(); //通过制定键替换键所指向的值 hm.replace(2, "wxz"); System.out.println(hm.get(2)); //清空 hm.clear(); System.out.println(hm.size()); //判断是否为空 System.ou原创 2016-10-29 22:37:01 · 278 阅读 · 0 评论 -
日期转换
一、格式化日期SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");String s=”2000-10-3”;格式化,sdf.format(),将日期按格式转成字符串 String st=sdf.format(new Date()); //2016-10-11 System.out.println(st);未格式化 Syste原创 2016-10-29 22:49:52 · 340 阅读 · 0 评论 -
file文件
1.创建文件file 构造函数只是用于创建一个file对象(包含一个抽象路径名),但该文件/目录是否存在还需判断(1)createNewFile()创建文件(比如:.txt类型文件),如果文件在目录下,目录未创建,则无法创建文件 【注】:以下方法无法创建文件 (2)mkdir()创建抽象路径名指定的【目录】(只能创建一级目录 例: d:/a), 如果是d:/a/b,a不存在则失败,a存在原创 2016-10-29 22:24:27 · 339 阅读 · 0 评论 -
io流类总结
什么是节点流、转换流、处理流?节点流:FileInputStream FileOutputStream FileReader FileWriter处理流:BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter InputStreamReader OutputStreamWriter节点流是直接处理数据源的类原创 2016-10-29 22:14:42 · 252 阅读 · 0 评论