自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 软件复用

从类、API、框架层面设计可复用的软件1.背景​ 现在对于公司开发项目来说,节约成本的最快方法就是对已开发软件的复用。通过复用以前的开发内容,可以让公司把更多的注意力去放在客户的实际功能需求中。2.软件复用的级别先来介绍一下软件的复用级别。代码的复用、设计的复用、分析的复用、测试信息的复用。代码的复用主要包括目标代码和源代码的复用。其中目标代码的复用级别最低,历史也最久,当前大部分编程语言的运行支持系统都提供了连接、绑定等功能来支持这种复用。设计的复用,设计结果比源程序的抽象级别

2021-05-17 15:20:36 404

原创 设计模式的应用

GRASP模式基本了解​ 用设计模式解决实际的设计情况时,我们先来对GRASP模式来进行了解一下。​ GRASP,全称为General Responsibility Assignment Software Pattern,即通用职责分配软件模式,它由《UML和模式应用》(Applying UML and Patterns)一书作者Craig Larman提出。与其将它们称之为设计模式,不如称之为设计原则,因为它是站在面向对象设计的角度,告诉我们怎样设计问题空间中的类与分配它们的行为

2021-05-17 15:07:41 297

翻译 阅读8:避免调试

阅读8:避免调试6.031中的软件防虫容易明白准备改变今天改正,在未知的未来改正。与未来的程序员(包括未来的您)进行清晰的沟通。旨在适应变化而无需重写。目标​ 今天的课程的主题是调试–或更确切地说,如何避免完全调试,或者在必须进行调试时保持简单。第一道防线:消除错误​ 最好的防御错误的方法是通过设计使它们成为不可能。​ 我们已经讨论的一种方法是静态检查。静态检查通过在编译时捕获它们来消除许多错误。​ 我们还在较早的课堂会议上

2021-05-17 14:56:57 166

原创 HashMap

底层实现原理: HashMap基于哈希表的Map接口的非同步实现,继承自AbstractMap,AbstractMap是部分实现Map接口的抽象类。​ JDK1.8之前: 链地址法 数组+链表 (每一行后面跟了一个链表) 链表为null或者不为null​ JDK1.8之后: 数组+链表+红黑树 当链表的阀值超过8,将链表转换为红黑树,从而减少了查询时间从O(N)->O(log2N)。极大的提高了查询性能。源码分析:类的继承体系:代码:public class

2021-02-17 18:17:08 420

原创 线程和进程

概念进程:就是计算机正在进行的一个独立的应用程序,进程是一个动态的概念,必须是进行状态,如果一个应用程序没有启动,那就不是一个进程。进程是程序执行过程中资源分配和管理的基本单位进程拥有自己的独立的地址空间,每启动一个进程,系统就会分配地址空间进程可以拥有多个线程。线程:线程就是组成进程的基本单位,可以完成特定的功能,一个进程是有多个线程组成。线程是cpu执行的最小单位。各个线程之间共享程序的内存空间线程的创建继承Thread类实现Runnable接口实现Callable

2021-02-16 22:06:07 97

原创 volatile关键字

作用:保证并发编程的可见性、有序性。特征:保证了内存可见性volatile修饰的变量(本地内存:java虚拟机栈/寄存器)不会被缓存在寄存器,变量在本地内存(虚拟机栈线程私有的空间),一旦变量修改会立即回写至主内存,每一个线程访问主内存上的数据是最新的变量结果,如果已经有线程存在本地副本,即在回写时有效标志位会失效,从而使存储副本的线程能够进入主内存获取最新数据。禁止指令重排序​ Java内存模型不会对volatile指令进行重排序,从而保证对volatile变量的执行顺序,

2021-02-16 20:53:29 81

原创 synchronized关键字

定义:它是解决的是多个线程之间访问同一个资源的同步性,它可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。简而言之,它提供的是一种排它的机制,任意时刻只能被一个线程所执行。用法:Synchronized添加到代码块 //修饰代码块 public void test1(Object o) { synchronized (o) { //doing } }synchronized如果锁的是某一个obj的对象,实

2021-02-16 20:49:57 109

原创 单例模式

定义:只能生成一个实例。并且它自己负责创建自己的对象,这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。例如:回收站。实现方式:1.饿汉模式(快加载) 类初始化顺序:静态变量 静态块 实例变量 实例块 构造函数class People{ private static People people = new People();//方法区 直接new对象 private People(){}//私有的构造函数 public static Peopl

2021-02-16 16:09:29 71 1

原创 类的初始化顺序、类加载顺序

1.类的加载顺序:.java源文件(磁盘) -> javac编译器 -> .class文件(磁盘) -> java解释器------>JVM内存2.类的加载(加载.class文件)1)通过一个类的全限定名获取定义此类的二进制字节流。2)将这个字节流所代表的静态存储结构转换为方法区运行时数据结构。​ 3)在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问的入口。3.类加载器:先识别字节码文件文件类型:后缀名+魔数

2021-02-16 16:08:24 878

原创 final关键字

定义:终极的,不可修改的。可以修饰类方法和变量修饰变量:​ 基本数据类型:被修饰的成员变量表示常量,只能被赋值一次,赋值后值不再改变。final修饰一个成员变量(属性),必须要显示初始化。一种是在变量声明的时候初始化;第二种方法是在声明变量的时候不赋初值,但是要在这个变量所在的类的所有的构造函数中对这个变量赋初值。//public final int a = 10; public final int a ; public final int b = 10; public Dem.

2021-02-16 15:58:44 101

原创 static关键字

定义:static 意为静态、全局。可以用来修饰成员变量和成员方法。还可以定义静态代码块修饰成员变量:也成为静态变量、类变量。public static int a = 10;特点:被static修饰的变量每一个类只有一份,属于类的共享数据。如果需要在外部类调用时,需要通过 类名.变量名 来调用。类的加载顺序:静态变量 静态块 实例变量 实例块 构造函数从类的加载角度来看,在加载的第二阶段链接阶段的准备阶段会为静态变量赋默认类型值,在初始化阶段会赋实际值修饰成员..

2021-02-16 15:56:24 65

原创 Linux 网络

ping用法 :ping + IP + -c + 数字 (count 表示拼4个数据包就停止)作用:ping 命令是用来测试TCP/IP 网络是否畅通或者测试网络连接速度的命令,对确定网络是否正确连接,以及网络连接的状况十分有用。简单的说,ping就是一个测试程序,如果ping运行正确,大体上就可以排除网络访问层、网卡、Modem的输入输出线路、电缆和路由器等存在的故障,从而缩小问题的范围。原理 :ping命令的原理是根据计算机唯一标示的IP 地址,当用户给目的地址发送一个数据包时,对方就会返回

2021-02-15 17:18:12 72

原创 Linux 内存与磁盘

简介内存和磁盘都是计算机中的存储器,都具有存储功能,属于存储设备。在计算机中,磁盘和内存是相互配合共同作业的。区别:1、内存是一种高速,造价昂贵的存储设备;而磁盘速度较慢、造价低廉。2、内存属于内部存储设备,磁盘属于外部存储设备。3、内存是通过电流来实现存储;磁盘是通过磁记录来实现存储。所以电脑断电后,内存中的数据会丢失,而磁盘中的数据可以长久保留。内存内存是程序与CPU进行沟通的桥梁。计算机中所有程序的 运行都是在内存中进行的。 其作用是存放CPU中的运算数据,以及与硬盘等外部存储设备交换

2021-02-15 16:55:59 1925

原创 Linux进程

进程什么是进程?简述:运行起来的程序,是系统进行资源分配和调度的基本单位。什么是线程?简述:OS能够进行运算调度的最小的单位。进程是线程的容器。​ PIDID:(Process Identification)操作系统里指进程识别号,也就是进程标识符。操作系统里面每打开一个 程序都会创建一个进程ID,即PID。PID:(Process Identifier)Process Identifier进程控制符。PID是各进程的代号,每个进程有唯一的PID编号。它是进程运行时系统随机分配的,并不代表

2021-02-15 16:37:05 235

原创 Linux 文件操作命令

文件查看命令文本查看cat 命令查看文件内容合并文件写入文件注意:cat 写入文件时,会把之前的内容给覆盖掉more当一个文件的内容超过一个屏幕能显示的行数,使用 more 可以分屏显示文件内容。缺点:只能够往后面去看,不可以返回去看。less1.文本内容查看器,查看文件内容,但是文件内容不会显示到界面上2.可以返看前面的内容。head显示文件前 n 行的内容tail显示文件后 n 行的内容wc统计文件中单词个数(-w)、字符个数(-c)、行数(- l)

2021-02-15 15:36:44 370 1

原创 Linux文件类型和文件权限

文件类型Linux 下所有的东西(包括内存、网卡、外部设备等等)都可以看做文件,Linux 将文件 分为以下五种类型:普通文件 : ‘-’目录文件: ‘d’管道文件: ‘p’链接文件 :‘l’设备文件(块设备 ’b’ 、字符设备 ‘c’ 、套接字设备 ‘s’ )linux只有通过命令才能查看出一个文件的类型:ls -l 、ll :能查出隐藏文件。注意点:Linux 上不以文件的扩展名区别文件类型,而是在文件属性中有一列专门记录文件类型。 这五种文件在 Linux 上的呈现如下图所

2021-02-15 14:32:14 314

原创 Linux目录结构

目录结构说明:在Linux OS 中 目录 = 文件夹(Windows)/: 目录结构起始 ,根目录。Linux 系统的目录结构是一棵倒状树。在"/" (根目录)下听过 ls查看常用的目录说明/bin :存放常用命令/boot: 系统内核及启动有关的文件/dev: 存放设备文件 广义上的文件,键盘鼠标都可以抽象为文件然后获取消息。/etc: 存放系统配置文件 系统的运行相关的属性 参数等/usr :(user software resource 用户软件资源目

2021-02-15 11:19:59 191

原创 Linux初识

Linux简介1.属性 :Linux是一组软件,而软件分为操作系统软件和应用软件,当然 Linux 属于操作系统软件。2.作用(OS的通用作用)控制硬件资源提供计算机运作所需要的功能提供给程序员系统调用和开发的统一接口,使得开发环境更加容易3.Linux和Windows的区别LinuxWindows主要使用命令行操作系统使用图形化界面主要应用于服务器是个人操作系统属于开源项目不开源多用户系统单用户系统Linux内核版和发行版内核版定义

2021-02-15 09:40:34 98

原创 类和对象

类和对象1.类1.1 概念:类是一种实体类型的抽象,具有一系列相同特征和行为的物体。它也是一种数据类型。类只是仅仅定义了一些成员和方法,它不会去具体的操作这方行为,没有实际的意义。例如:我们盖房子时,开始时要先设计房子的整体架构,也就是图纸,而具体的操作还得需要一个实例去执行。1.2 组成 :类由三部分组成。(1)成员变量 :静态变量、实例变量(2)成员方法 :静态方法、实例方法(3)构造函数1.3 类的三大特性:封装、继承、多态。(1)封装性:就是将一些东西打包成一个整体。对用户隐藏其实现

2020-11-18 21:04:45 122

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除