计算机原理
智欣悦
这个作者很懒,什么都没留下…
展开
-
java并发和高并发——J.U.C之AQS-CountDownLatch
一、1、简要介绍该类的使用原理图:CountDownLatch是一个同步辅助类,利用它可以完成类似于阻塞当前线程的功能。换句话说,就是一个或者几个线程一直等待,直到其它的线程运行完成。CountDown用了一个给定的计数器进行初始化,该计数器的操作是原子性的操作。同一个时刻只能有一个线程去操作该计数器。调用该类的await() 方法的线程会一直处于阻塞状态,直到其他线程通过调用coun...原创 2019-10-07 00:06:05 · 201 阅读 · 0 评论 -
java设计模式之状态模式
一、定义与类型:》定义:允许一个对象在其内部状态改变时,改变它的行为。也就是说一个对象的状态改变时,其行为会改变。或者说它的行为不跟者改变,而是状态之间的转化。用于解决当控制一个对象的状态转换的逻辑比较复杂时,这样就可以把状态判断的逻辑转移到表示不同状态的一系列类当中。比如在看视频时,可以开始、暂停、播放等多种形式。》类型:行为型;二、适用场景:》一个对象存在多个状态(不同状态...原创 2019-09-01 19:17:16 · 303 阅读 · 0 评论 -
java设计模式之访问者模式
一、定义与类型:》定义:封装作用于某数据结构(如List/Set/Map等)中的各元素的操作》可以在不改变各元素的类的前提下,定义作用于这些元素的操作。》使用概率较低》类型:行为型二、适用场景:》一个数据结构如(List/Set/Map等)包含很多类型对象;》数据结构与数据操作分离。数据是数据,对数据的操作是对数据的操作这种分离的场合时,比如数据加载和对数据的操作分...原创 2019-09-01 13:32:31 · 156 阅读 · 0 评论 -
java 设计模式之责任链模式
一、定义与类型:》为请求创建一个接收此次请求对象的链。这个链条中,每个元素是一个对象。》类型:行为型;二、适用场景:》一个请求的处理需要多个对象当中的一个或几个协作处理。三、优点:》请求的发送者和接收者(请求的处理)解耦。》责任链可以动态组合。如果复杂一点,把责任链的顺序和是否需要这个责任链做成外部的配置,则责任链可以动态组合四、缺点:》责任链太长或者处理时间过...原创 2019-09-01 13:22:33 · 172 阅读 · 0 评论 -
java设计模式之中介者模式
一、定义与类型:》定义一个封装一组对象如何交互的对象》通过使对象明确地相互引用来促进松散耦合,并允许独立地改变它们的交互;》类型:行为型二、适用场景:》系统中对象之间存在复杂的引用关系,产生的相互依赖关系结构混乱难以理解;》交互的公共行为,如果需要改变行为则可以增加新的中介者类。通常用于聊天室等三、优点:》将一对多转化成了一对一、降低程序复杂度》类之间解耦...原创 2019-09-01 00:08:16 · 188 阅读 · 0 评论 -
java设计模式之命令模式
一、定义与类型:》定义:将“请求”封装成对象,以便使用不同的请求把不同点请求封装成不同的请求对象,接收者都可以识别,执行不同的行为。比如老板给员工下不同的命令,员工都能接收并执行。》命令模式解决了应用程序中对象的职责以及它们之间的通信方式;老板只负责下命令,不关心如何实现。员工只需要知道执行什么工作就好。二、适用场景:》请求调用者和请求接收者需要解耦,使得调用者和接收者不直接交...原创 2019-08-31 23:34:32 · 173 阅读 · 0 评论 -
java设计模式之备忘录模式
一、定义与类型:》定义:保存一个对象 的某个状态,以便在适当的时候恢复对象》后悔药》类型:行为型;二、适用场景:》保存及恢复数据相关业务场景;比如一个软件的保存撤退功能,主要用于工作流中。》后悔的时候,即想恢复到之前的状态;三、优点:》为用户提供一种可恢复机制;》存档消息的封装;四、缺点:》资源占用;五、相关设计模式:》备忘录模式和状态模式:备忘...原创 2019-08-31 17:59:35 · 165 阅读 · 0 评论 -
java设计模式之观察者模式
一、定义与类型:》定义:定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的所有依赖者(观察者)都会收到通知并更新;微信朋友圈点赞之后,你就是观察者,微信的那条朋友圈就是被观察者;京东上,关注某个商品,当商品降价时,会收到通知。网络视频课,有人提出了一个问题,该课程的老师会收到相应通知等等。》类型:行为型二、适用场景:》关联行为场景...原创 2019-08-31 16:47:26 · 162 阅读 · 0 评论 -
java设计模式之——代理模式
一、定义与类型:》定义:为其他对象提供一种代理,以控制对这个对象的访问;》代理对象在客户端和目标对象之间起到中介的作用;例如:我们通过房产中介租房。》类型;结构型二、适用场景:》保护目标对象。比如不知道真实房东是谁》增强目标对象。控制客户端对目标对象的访问租房前草拟合同就相当于对目标对象进行增强,相当于spring AOP中的before租房子相当于目标对象而租...原创 2019-08-18 14:11:29 · 136 阅读 · 0 评论 -
java设计模式之桥接模式
一、桥接模式定义与类型:》定义:将抽象部分与它的具体实现部分分离,使他们都可以独立地变化》通过组合的方式建立两个类之间的关系,而不是继承》类型:结构型二、适用场景》抽象和具体实现之间增加更多的灵活性》一个类存在两个(或多个)独立变化的维度,且这两个(或多个)维度都需要独立进行扩展》不希望使用继承,或因为多层继承导致系统类的个数剧增。三、桥接优点:》分离抽象部...原创 2019-08-17 17:37:45 · 264 阅读 · 1 评论 -
java并发编程和高并发(一)
一、课程特点:1、之相关知识体系包括:线程安全、线程封闭、线程调度、同步容器、并发容器、AQS、J.U.C等等;2、高并发解决思路与手段,包括:扩容:缓存:队列:拆分:服务降级与熔断:数据库切库:分库分表:等等;3、4、最简单的场景举例:实现一个计数功能,即将一个数字进行累加,如果是一个线程,没问题,但是多个线程,比如同时有200个线...原创 2019-10-01 21:27:26 · 386 阅读 · 0 评论 -
java并发基础(二)
一、CPU多级缓存:数据的读取和存储都经过高速缓存,CPU核心和高速缓存之间有一条快速通道,在上方简化的图中,主存和高速缓存都连接在系统总线上。缓存容量远远小于主存,一般二级缓存大于一级缓存容量,但速度比一级慢,三级缓存大于二级缓存,但是速度更慢。1、为什么需要CPU cache ? 答:CPU的频率太快了,快到主存跟不上,这样在处理器时钟周期内,CPU常常需要等待主存,...原创 2019-10-01 23:40:05 · 156 阅读 · 0 评论 -
java并发和高并发之 线程安全性——原子性-atomic-1
一、线程安全性1、基本概念:》定义:当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些进行将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。2、线程安全性的几个表现点:》原子性:提供了互斥访问,同一时刻只能有一个线程来对它进行操作;》可见性:一个线程对主内存的操作可以及时地被其他线程观察到;》有序...原创 2019-10-04 00:25:23 · 414 阅读 · 1 评论 -
java并发编程和高并发——J.U.C之AQS首要概述
一、J.U.C之AQS介绍:1、概述:J.U.C表示jdk中java.util.concurrente包里的内容,是从jdk6中引入的java并发包。J.U.C大大提高了java程序的并发性能。而AQS被认为是J.U.C的核心,指AbstractQueuedSynchronizer 的缩写。AbstractQueuedSynchronizer这个类提供了基于firstIn first...原创 2019-10-06 16:06:17 · 260 阅读 · 0 评论 -
java并发和高并发之线程安全——同步容器
一、同步容器1、同步容器出现原因: 因为ArrayList HashSet HashMap 这几个容器都是线程不安全的,但是使用频率又最为频繁。所以在使用多线程并发地访问这些容器时可能出现线程安全问题。因此要求开发人员在任何用到这些的地方需要做同步处理。如此导致使用时极为不便。对此,java中提供了一些相应的同步容器供使用。2、常见的同步容器举例:》ArrayList—...原创 2019-10-05 23:51:12 · 292 阅读 · 0 评论 -
java并发和高并发编程之线程不安全类与写法
一、线程不安全类与写法:1、相对于不可变对象和线程封闭带来的线程安全,什么是线程不安全类呢? 如果一个类的对象同时可以被多个线程访问,如果不做特殊的同步或者并发处理,那么它就很容易表现出线程不安全的现象。比如,抛出异常、逻辑处理错误等等。这种类被称为线程不安全类。2、最常见的一些线程不安全类:》StringBuilder(线程不安全) ——》StringBuffer(线程安全)...原创 2019-10-05 23:26:57 · 414 阅读 · 0 评论 -
java并发和高并发之线程封闭
一、线程封闭:1、概述;线程安全策略,除了不可变对象,还有一个简单的方法就是线程封闭。线程封闭其实就是把对象封装到一个线程里,只有这一个线程能看到这个对象,那么这个对象本身就算不是线程安全的,也不会出现任何线程安全问题,因为它只能出现在一个线程里。2、实现线程封闭的几个方法:》Ad-hoc 线程封闭:完全靠程序控制实现,非常脆弱,最糟糕,忽略;》堆栈封闭:局部变量,无并发问题。被使...原创 2019-10-05 21:16:32 · 255 阅读 · 0 评论 -
java并发编程和高并发之线程安全策略
一、不可变对象:1、有一种对象,发布时就是安全的,这个对象就是不可变对象。2、如果想创建一个不可变的类,可参考使用最多的String类。当满足以下三个条件时才会是不可变对象。 即不可变对象需要满足的条件: 》对象创建以后其状态就不能修改;——》声明为final 》对象所有域都是final类型; 》对象是正确创建的(在对象创建期间,this引用没有逸出)...原创 2019-10-05 18:26:38 · 250 阅读 · 0 评论 -
java开发编程入门与高并发之安全发布对象(八)
一、安全发布对象之发布与逸出:1、基本概念:》发布对象:使得一个对象能够被当前范围之外的代码所使用:》对象逸出:一种错误的发布。当一个对象还没有构造完成时,就使它被其他线程所见。2、实例演示:1)发布对象:如上例子的演示目的是:说明如上,这个类通过public 方法,发布了这个类的域,在类的任何外部的线程都能访问这些域,这样的发布对象其实是不安全的。因...原创 2019-10-05 00:17:21 · 192 阅读 · 0 评论 -
java并发和高并发之线程安全性——有序性
一、有序性:1、定义:java内存模型JMM中,允许编译器和处理器对指令进行重排序,但是重排序过程不会影响到单线程程序的执行,却会影响到多线程并发执行的正确性。2、可以通过如下方案保证有序性:volatile 关键字:保证一定的有序性synchronized 和 Lock:保证每个时刻有一个线程执行同步代码,相当于让线程顺序执行同步代码。Lock :保证每个时刻有一个线程...原创 2019-10-04 19:07:17 · 502 阅读 · 0 评论 -
java并发和高并发之线程安全性——可见性
一、可见性:1、定义:线程对主内存的修改可以及时地被其他线程观察到;2、导致共享变量在线程间不可见的可能性原因:》线程交叉执行;》重排序结合线程交叉执行;》共享变量更新后的值没有在工作内存与主存间及时刷新;3、不同解决方案对可见性的处理:1)可见性——synchronizedJMM 关于synchronized的两条规定:》线程解锁前,必须把共享变量的最新值刷新...原创 2019-10-04 18:40:04 · 616 阅读 · 0 评论 -
java并发和高并发之线程安全性—原子性 2—synchronized
一、原子性——锁1、原子性就是提供了互斥访问,同一时刻只能有一个线程对它进行访问或者说操作.java中,除了jdk中的atomic包之外,还有锁。jjdk提供的锁主要有两种:》synchronized 关键字: 依赖jvm. 在作用对象的作用范围内,可以保证在同一时刻只能有一个线程访问。注意synchronized的作用对象的作用范围内。》Lock接口:依赖特殊的CPU指令,代码实现,...原创 2019-10-04 18:15:50 · 308 阅读 · 0 评论 -
java设计模式之解释器模式
一、定义与类型:》定义:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。》为了解释一种语言,二位语言创建的解释器。》类型:行为型二、适用场景:》某个特定类型问题发生频率足够高;一般使用开源包。三、解释器模式优点:》语法由很多类表示,容易改变及扩展此“语言”;四、缺点:》当语法规则数目太多时,增加了系统复杂度,现...原创 2019-08-25 14:24:55 · 183 阅读 · 0 评论 -
java设计模式之——策略模式
一、定义与类型:》定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的用户。》大范围处理掉if...else...》类型:行为型二、适用场景:》系统有很多类,而它们的区别仅仅在于他们的行为不同;》一个系统需要动态地在几种算法中选择一种;三、策略模式优点:》开闭原则;》避免使用多重条件转移语句;》提高算法的保密性和安全性...原创 2019-08-25 14:18:33 · 157 阅读 · 0 评论 -
java设计模式之单例设计模式——序列化破坏单例模式原理解析及解决方案
一、序列化破坏单例模式问题之初:单例设计模式经过序列化和反序列化之后创建的对象是同一个对象吗?二、实例应用分析是否存在问题。实例设计原理:创建一个单例设计类对象,将该类序列化到一个文件中,然后再读取文件,创建出一个对象,判断两个对象是否为同一个。以饿汉式单例设计模式类对象为例。package com.zxl.design.zxl.design.pattern.singleto...原创 2019-06-23 23:03:44 · 334 阅读 · 0 评论 -
java设计模式之单例模式简单写法——饿汉式写法
一、饿汉式:非常饿,类一加载就要初始化(先new 一个对象出来吃)二、特点:因为类一加载就初始化完成,所以 避免了多线程的问题,并且写法简单,但是也可能造成资源浪费(如果类对象比较消耗资源),比如没用的时候也会初始化。三、代码package com.zxl.design.zxl.design.pattern.singleton;/** * Created by Admini...原创 2019-06-23 20:39:02 · 472 阅读 · 0 评论 -
java设计模式之单例模式——懒汉式(饱汉式)及多线程debug
1、懒汉式定义:懒汉式设计模式:比较懒,在类创建时不创建对象,而是以延迟加载的方式,当需要使用时才创建。2、懒汉式的优缺点:3、懒汉式的基础创建方式:package com.zxl.design.zxl.design.pattern.singleton;/** * Created by Administrator on 2019/6/16. * 懒汉式是指初始化时是不创建...原创 2019-06-23 10:13:47 · 1289 阅读 · 0 评论 -
java设计的六大原则
一、开闭原则 其他原则的基础定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭; 用抽象创建框架,用实现扩展细节;优点:提高软件系统的可复用性和可维护性。特点:面向对象开发中最基础的原则。核心思想:面向抽象进行编程,而不是面向具体对象进行编程。...原创 2019-06-01 13:01:45 · 108 阅读 · 0 评论 -
Windows和Linux(Ubuntu)查看电脑主机型号和序列号的命令
Windows查看主机型号的方法:1、点击开始菜单,在搜索框中输入cmd;2、在黑窗口中输入命令 : wmic csproduct get name 回车即可看到主机型号C:\Users\zhouxueli>wmic csproduct get nameNameOptiPlex 9903、继续查看主机序列号,可输入:wmic bios get serialn...原创 2019-03-05 11:04:52 · 28050 阅读 · 1 评论 -
Linux基础学习之日志管理
1、日志管理简介日志记录操作系统或者最近的程序运行的状态、遇到的错误等。遇到服务器等出现问题,先去查日志,再去看解决办法,再去动计算机或者服务器。2、日志服务》在CentOS6.x 中日志服务已经由rsyslogd 取代了原先的syslog服务。rsyslogd日志服务更加先进,功能更多。但是不论该服务的使用,还是日志文件的格式其实都是和syslogd服务相兼容的,所以学习...原创 2019-01-13 00:28:53 · 325 阅读 · 0 评论 -
Linux 学习基础之系统管理——工作管理
1、把进程放入后台》tar -zcf etc.tar.gz /etc &#该方法把tar 进程放入后台时,tar进程并未停止,还在后台运行[root@localhost ~]# tar -zcf testfile /etc &[1] 3066[root@localhost ~]# tar: 从成员名中删除开头的“/”[root@localhost ~]# ...原创 2019-01-12 17:31:15 · 261 阅读 · 0 评论 -
读书笔记
信息来源于电子书:单片机入门到精通1、主板和外设支持下的电脑 CPU 系统就是一个功能超强、速度超快、容量超大的单片机,这就是两者的区别。电脑 CPU 引领潮流和技术,单片机在特色方面加强体现,两者一度界限明晰,现在又出现相互融合的趋势。1、PIC的单片机如何实现查表功能?单片机是如何工作一章中说触发是单片机的一个重要概念,晶振就是单片机所有工作触发时序的信号源,单片机通过它所提...原创 2018-12-18 15:05:37 · 151 阅读 · 0 评论 -
Linux学习基础之Shell编程——字符串截取命令——printf命令
1、printf 命令严格来说不是字符截取命令,但是通常和cut命令放在一起用,作为标准输出;2、printf 命令:printf '输出类型输出格式' 输出内容输出类型: %ns: 输出字符串。n是数字指代输出几个字符 %ni : 输出整数。n是数字指代输出几个数字 %m.nf : 输出浮点数。m和n是数字,指代输出的整数位数和小数位数。如%8.2...原创 2018-12-23 14:37:21 · 402 阅读 · 0 评论 -
java设计模式之单例设计模式——-反射攻击解决方案及原理分析
一、仍然以实例引入,发现问题、解决问题的思路进行。1)问题:鉴于反射可以任意创建对象的特点,猜测,是否存在通过反射在外部通过调用私有构造方法创建对象,打破单例模式特点的可能?2)仍然以饿汉模式的例子进行示例(当然也可通过其他方式)。代码如下,先运行,看不破坏的情况下是什么样package com.zxl.design.zxl.design.pattern.singleton;...原创 2019-06-24 00:02:02 · 921 阅读 · 0 评论 -
单例设计模式之枚举类型实现单例设计模式的原理源码和反射攻击防御
一、枚举类方式创建单例模式举例package com.zxl.design.zxl.design.pattern.singleton;import java.io.ObjectInputStream;/** * Created by Administrator on 2019/6/30. */public enum EnumInstance { INSTANCE; ...翻译 2019-06-30 15:54:51 · 592 阅读 · 0 评论 -
单例设计模式之容器单例
一、容器单例,就是指管理单例对象的容器。二、代码呈上package com.zxl.design.zxl.design.pattern.singleton;import com.sun.deploy.util.StringUtils;import java.util.HashMap;import java.util.Map;/** * Created by Adminis...翻译 2019-06-30 19:38:03 · 1711 阅读 · 0 评论 -
Java设计模式之简单总结回顾
今天回头看之前的单例设计模式的有关记录,在此简单在总结下:单例模式分为饿汉式和饱汉式(懒汉式),该两个方案在不考虑一些多线程、反射、序列化和反序列化的情况下,饱汉式易于理解和书写,如下:public class LazySingleton { /** * 初级懒汉式单例设计模式 * 线程不安全的,单线程时不会出问题,但是多线程时会出问题 * 假设...原创 2019-08-15 20:29:05 · 96 阅读 · 0 评论 -
java设计模式之——组合模式
一、定义与类型》定义:将对象组合成树形结构以表示“部分-整体”的层次结构》组合模式使客户端对单个对象和组合对象保持一致的方式处理》类型:结构型》二、组合——适用场景》希望客户端可以忽略组合对象与单个对象的差异时》处理一个树形结构时三、组合模式优点:》清楚地定义分层次的复杂对象,表示对象的全部或部分层次》让客户端忽略了层次的差异,方便对整个层次结构进行控制...原创 2019-08-11 23:47:24 · 200 阅读 · 0 评论 -
java设计模式——之享元模式
一、享元模式的定义与类型:》定义:提供了减少对象数量从而改善应用所需的对象结构的方式》运用共享,有效地支持大量细粒度的对象》类型:结构型》俗话解:减少对象的创建数量,降低内存消耗,节省运行时间等二、享元模式适用场景》常常应用于系统底层的开发,以便解决系统的性能问题。比如java中的string类型,就使用了享元模式。数据库的连接池也类似。如果需要获取对象,先确认是否有可...原创 2019-08-11 11:42:59 · 299 阅读 · 0 评论 -
java设计模式之迭代器模式
一、迭代器地定义与类型:》定义:提供一种方法,顺序访问一个集合对象中的各个元素,而又不暴露该对象的内部表示》比如一个箱子中有n台电脑,只是遍历其类型,并不暴露其他信息》类型:行为型二、适用场景:》访问一个集合对象的内容而无需暴露它的内部表示》为遍历不同的集合结构提供一个统一的接口三、优点:》分离了集合对象的遍历行为四、缺点:》类的个数成对增加五、迭代器模...原创 2019-08-18 23:25:22 · 137 阅读 · 0 评论