自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Autumn匆的博客

因为梦想,所以远方!

  • 博客(107)
  • 资源 (3)
  • 收藏
  • 关注

原创 单测

目录单元测试合格的单元测试单测干什么单测编写规范单测覆盖粒度单测执行策略如何写好单元测试单元测试指对软件中的最小可测试单元进行检查和验证,对于面向对象编程,最小单元就是方法,包括基类(超类)/抽象类/派生类(子类)中的方法合格的单元测试1.测试的是一个代码单元内部的逻辑,而不是各模块之间的交互2.独立,不需要外部环境即可测试代码,可以随时随地执行...

2019-10-22 15:22:50 766

原创 剑指offer-28.字符串的排列

问题:输入一个字符串,打印出该字符串中字符的所有排列,eg,输入字符串abc,则打印出abc、acb、bac、bca、cab、cbaimport java.util.ArrayList;import java.util.Collections;import java.util.HashSet;/*我们把一个字符串看成两部分组成:第一部分为它的第一个字符,第二部分是后面的所有字符...

2018-08-26 22:52:12 339

原创 再看Lock

之前有对Lock接口做过简单介绍,Lock接口的实现基本都是通过聚合了一个同步器的子类来完成线程访问控制的,学习了AQS之后,再次来看Lock,内容主要摘自《Java并发编程的艺术》重入锁重入锁ReentrantLock,即支持重进入的锁,表示该锁能支持一个线程对资源的重复加锁,该锁还支持获取锁时的公平和非公平的选择1.实现重进入重进入指任意线程在获取到锁之后能够再次获取该锁而不会...

2018-08-19 16:54:43 265

原创 队列同步器AbstractQueuedSynchronizer(AQS)

同步器的设计是基于模板方法模式的,即使用者需要继承同步器并重写指定的方法,随后将同步器组合在自定义同步组件的实现中,并调用同步器提供的模板方法,而这些模板方法会调用使用者重写的方法先看下类的定义:public abstract class AbstractQueuedSynchronizer extends AbstractOwnableSynchronizer imple...

2018-08-15 20:27:37 250

原创 源码分析-Java Set

一,Set Set集合不允许包含相同的元素,如果视图把两个相同的元素加入同一个Set集合中,则添加操作失败,add()方法返回false,且新元素不会被加入1.HashSet - 不能保证元素的排列顺序,顺序可能与添加顺序不同 - HashSet不是同步的,如果多个线程同时访问一个HashSet,假设有两个或者两个以上线程同时修改了HashSet集合,则必须通过代码来保证其同步 ...

2018-07-30 15:09:31 207

原创 线程池的使用

多线程软件设计方法确实可以最大限度地发挥现代多核处理器的计算能力,提高生产系统的吞吐量和性能,但是,若不加控制和管理随意使用线程,对系统的性能反而会产生不利影响首先,线程的创建和关闭依然需要花费时间,如果为每一个小的任务都创建一个线程,很有可能出现创建和销毁线程所占用的时间大于该线程真实工作所消耗的时间的情况;其次,线程本身也要占用内存空间的,大量的线程会抢占宝贵的内存资源,如果处理不当,可能...

2018-07-26 21:38:34 406

转载 java中的原子操作Atomic

Atomic简介Atomic包是java.util.concurrent下的另一个专门为线程安全设计的Java包,包含多个原子操作类。这个包里面提供了一组原子变量类。其基本的特性就是在多线程环境下,当有多个线程同时执行这些类的实例包含的方法时,具有排他性,即当某个线程进入方法,执行其中的指令时,不会被其他线程打断,而别的线程就像自旋锁一样,一直等到该方法执行完成,才由JVM从等待队列中选择一个另一...

2018-07-25 16:24:55 643

转载 漫谈CAS机制

示例程序:启动两个线程,每个线程中让静态变量count循环累加100次。最终输出的count结果是什么呢?一定会是200吗?加了同步锁之后,count自增的操作变成了原子性操作,所以最终的输出一定是count=200,代码实现了线程安全。所谓原子操作类,指的是java.util.concurrent.atomic包下,一系...

2018-07-25 11:31:37 279

转载 java不可变类

不可变类(Immutable Class):所谓的不可变类是指这个类的实例一旦创建完成后,就不能改变其成员变量值。如JDK内部自带的很多不可变类:Interger、Long和String等。可变类(Mutable Class):相对于不可变类,可变类创建实例后可以改变其成员变量值,开发中创建的大部分...

2018-07-25 11:09:04 799

原创 ConcurrentHashMap

JDK1.7的实现ConcurrentHashMap的数据结构是由一个Segment数组和多个HashEntry组成,如图:Segment数组的意义就是将一个大的table分割成多个小的table来进行加锁,segment的结构和HashMap类似,是一种数组和链表的结构,一个segment里包含一个HashEntry数组,每个HashEntry是一个链表结构的元素,每个segment...

2018-07-24 22:57:11 466

原创 类加载机制

虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制类从被加载到虚拟机内存中开始,整个生命周期包括:加载Loading,验证Verification,准备Preparation,解析Resolution,初始化Initialization,使用Using和卸载Unloading的7个阶段,其中验...

2018-07-19 11:52:50 305

原创 剑指offer--12.打印1到最大的n位数

题目:输入数字n,按顺序打印出从1到最大的n位十进制,eg,输入3,输出1,2,3^999思考:当输入的n很大的时候,求最大的n位数是不是用整型或者长整型都会溢出?即我们需要考虑大数问题方法一:在字符串上模拟数字加法,首先把字符串中的每一个数字都初始化为'0',然后每一次为字符串表示的数加1,再打印出来方法二:全排列思想,如果在数字前面补0,会发现n位所有十进制数其实就是n个从0到9的...

2018-07-19 08:49:02 209

转载 java写一个线程安全的单例模式Singleton

1.饿汉式单例指在方法调用前,实例就已经创建好了package jichu;public class Singleton { private static Singleton instance=new Singleton(); private Singleton(){ } public static Singleton getInstance(){ return i...

2018-07-18 15:05:01 8751

原创 线程通信简单实例

1.Object类的wait()、notify()和notifyAll(),必需由同步监视器对象来调用wait(),导致当前线程等待,直到其他线程调用该同步监视器的notify()或notifyAll()来唤醒该线程,调用该方法的当前线程会释放对该同步监视器的锁定 notify(),唤醒在此同步监视器上等待的单个线程,如果所有线程都在该同步监视器上等待,则会选择唤醒其中一个,选择是任意性的,...

2018-07-18 13:15:30 592

转载 Spring学习-AOP

转载自:http://www.cnblogs.com/wmyskxz/p/8835243.htmlSpring AOP 简介如果说 IoC 是 Spring 的核心,那么面向切面编程就是 Spring 最为重要的功能之一了,在数据库事务中切面编程被广泛使用。AOP 即 Aspect Oriented Program 面向切面编程首先,在面向切面编程的思想里面,把功能分为核心业务功能...

2018-07-13 16:08:16 183

转载 Spring学习-IoC详解

转自:http://www.cnblogs.com/wmyskxz/p/8824597.htmlSpring IoC 概述IoC:Inverse of Control(控制反转)读作“反转控制”,更好理解,不是什么技术,而是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由Spring框架来管理。正控:若要使用某个对象,需要自己去负责对象的创建反控:若要使用某个对象,只需...

2018-07-13 16:00:50 204

转载 Spring学习-快速入门

转载自:http://www.cnblogs.com/wmyskxz/p/8820371.html认识 Spring 框架Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (Inversion of Control,控制反转) 和 AOP(Aspect Oriented Programming,面向切面编程)。什么是 Spring...

2018-07-13 15:56:17 213

转载 通过IP地址和子网掩码计算相关地址

转载自:https://blog.csdn.net/perddy/article/details/3137637 通过IP地址和子网掩码与运算计算相关地址    知道ip地址和子网掩码后可以算出:    1、 网络地址  ...

2018-07-09 09:18:52 5030 1

原创 HTTP

总结下HTTP在笔试面试中的考点,参考自各大博客、书籍及师兄师姐给的资料,持续更新。。。1.HTTP协议即超文本传输协议(Hypertext transfer protocol),是一个基于请求与响应模式的、无状态的、应用层协议,常基于TCP的连接方式,默认端口号为80,HTTPS默认端口号为4432.常见的HTTP请求方法GET,用于请求访问已经被URI(统一资源标识符)识别的资...

2018-07-08 21:52:42 425

原创 锁的优化

对于单任务或者单线程的应用程序而言,主要资源消耗都花在任务本身,它既不需要维护并行数据结构间的一致性,也不需要为线程的切换和调度花费时间。但对于多线程的应用来说,系统出了处理功能需求外,还需要额外维护多线程环境的特有信息,如线程本身的元数据、线程的调度、线程上下文的切换等。在高并发环境下,激烈的锁今早会导致程序性能下降,自然有必要讨论一些有关锁的性能问题以及相关的一些注意事项一,有助于提高锁性能的...

2018-07-07 11:17:59 210

原创 概念解析-死锁&饥饿&活锁

1.死锁:通俗地说,死锁是两个或者多个线程,相互占用对方需要的资源,而都不进行释放,导致彼此之间都相互等待对方释放资源,产生了无限制等待的现象,死锁一旦发生,如果没有外力介入,这种等待将永远存在,从而对程序产生严重的影响用来描述死锁的一个有名的场景是“哲学家就餐”问题,用一个简单的例子来模拟下,有两个科学家和两把叉子package LockTest;public class DeadLock ...

2018-07-05 16:38:21 997

原创 源码分析-Java Map

一直想看集合的源码,奈何总觉得时间不够用,第一次看,先大概做个笔记,参考了一些博客和书,后面继续更新。。。零,总括Map是用来存储键值对的数据结构,在数组中通过数组下标来对其内容进行索引。从java源码来看,java是先实现了Map,然后通过包装一个所有value为null的Map就实现了Set集合1.Hashtable继承Dictionary,方法被synchronized修饰,...

2018-07-05 10:52:39 182

原创 String-StringBuffer-StringBuilder

我们都知道String是一个特殊的类,被final修饰符修饰,是一个不可改变的类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁;StringBuffer代表一个字符序列可变的字符串,当一个StringBuffer被创建后,通过StringBuffer的append()等方法可以改变这个字符串对象的字符序列,一旦通过StringBuffer生成了最...

2018-07-03 20:05:49 308

转载 扔鸡蛋问题-方程-动态规划

参考:程序员小灰https://blog.csdn.net/weixin_40564421/article/details/78988078题目:2个鸡蛋,从100层楼上往下扔,以此来测试鸡蛋的硬度,比如鸡蛋在第9层没有摔碎而在第10层摔碎了,那么鸡蛋不会摔碎的零界点就是9层,如何用最少的尝试次数,测试出鸡蛋不会摔碎的临界点?最笨法:把其中一个鸡蛋从第1层开始往下扔,如果第1层没碎换到...

2018-07-02 21:07:00 2957

原创 java动态规划

一,基本概念1.定义:动态规划实际上是一类题目的总称,并不是指某个固定的算法,其意义是通过采用递推或分而治之的策略,通过解决大问题的子问题从而解决整体的做法,核心思想是巧妙地将问题拆分成多个子问题,通过计算子问题而得到整体问题的解,而子问题又可以拆分成更多的子问题,从而用类似递推迭代的方法解决要求的问题2.与分治法最大的差别是:适合于用动态规划法求解的问题,经过分解后得到的子问题往往不是独...

2018-07-02 16:50:16 1308

转载 ThreadLocal

原文地址:点击打开链接,中间内容有些自己学习时的笔记。。。一,两个问题1.什么是ThreadLocal?ThreadLocal类可以理解为线程本地变量,即如果定义了一个ThreadLocal,每个线程往这个ThreadLocal中读写是线程隔离的,互相之间不会影响的,它提供了一种将可变数据通过每个线程有自己的独立副本从而实现线程封闭的机制2.实现的大致思路每个线程内部会维护一个...

2018-06-30 11:23:35 190

原创 Lock

一,synchronized的缺陷如果一个代码块被synchronized修饰,当一个线程获取了对应的锁,并执行该代码块,其他线程便只能一直等待,等待获取锁的线程释放锁,而这里获取锁的线程释放锁只会有两种情况1.获取锁的线程执行完该代码块,然后线程释放对锁的占有2.线程执行发生异常,此时JVM会让线程自动释放锁那么如果这个获取锁的线程由于要等待IO或者其他原因被阻塞了,但是又没有释...

2018-06-29 15:27:51 210

转载 volatile

这篇博客总结得很好,以后看到了再更新。。。http://www.cnblogs.com/dolphin0520/p/3923737.html

2018-06-29 10:24:45 182

原创 synchronized

1.什么时候会出现线程安全问题?如何解决?在单线程中不会出现线程安全问题,而在多线程编程中,有可能会出现同时访问同一个资源的情况,这种资源可以是各种类型的资源,eg,一个变量、一个对象、一个文件、一个数据库表等, 而多个线程同时访问同一个资源的时候,就会存在一个问题,即,由于每个线程执行的过程是不可控的,所以很可能导致的组中结果与实际上的愿望相违背或者直接导致程序出错。基本上所有的并发模式在解决线...

2018-06-29 10:22:30 218

原创 观察者模式

观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时会通知所有观察者对象,使它们能够自动更新自己Subject类,即主题或是抽象通知者,一般用一个抽象类或者一个接口实现,把所有对观察者对象的引用保存在一个聚集里,每个主题都可以有任何数量的观察者,抽象主题提供一个接口,可以增加和删除观察者对象package Observer;import j...

2018-06-28 11:23:04 249

原创 外观模式

外观模式Facade,为子系统的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。例子:炒股投资者可能面对多种股票package Facade;public class Stock1 { public void sell(){ System.out.println("股票1卖出"); } public void buy(){ System....

2018-06-28 10:19:51 148

原创 模板方法模式

模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。AbstractClass是抽象类,其实也就是一抽象模板,定义并实现了一个模板方法,这个模板方法一般是一个具体方法,它给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现,顶级逻辑也有可能调用一些具体方法package Template...

2018-06-24 19:52:02 175

原创 原型模式

原型模式Prototype:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象例子:进行简历复制先建立一个工作经历类package Prototype;public class WorkExperience implements Cloneable{ public String workDate; public String company; public String get...

2018-06-24 10:48:02 220

原创 Clone

java的克隆/** * Creates and returns a copy of this {@code Object}. The default * implementation returns a so-called "shallow" copy: It creates a new * instance of the same class and then copies the...

2018-06-24 10:22:53 253

原创 论文-科研

六月的太阳,依旧炽热地抚摸着大地。送走上一届师姐犹如在昨天,今天的我们再次和师兄师姐们拍照、吃饭、毕业。感谢老师、感谢师兄师姐们、感谢彼此、感谢自己,不会说太多华丽的辞藻,但都铭记在心。临走之际,我们在会议室开茶话会,我们在餐桌上讨论,师兄师姐们讲了许多研究生期间科研的见闻见解,也不知道对大家来说有没有影响,但还是想写出来分享给大家:1.首先,最重要的,要有积极主动性。研究生期间,不像之前...

2018-06-22 14:52:45 159

原创 代理模式

代理模式:为其他对象提供一种代理以控制对这个对象的访问。例子:《大话设计模式》追女朋友例子被追求者package Proxy;public class SchoolGirl { public String name; public void setName(String name){ this.name=name; } public String getName(){ ret...

2018-06-21 11:33:36 171

原创 装饰者模式

例子:一个可以给人搭配不同服饰的系统,即可以换各种各样的衣服裤子的个人形象系统最先想到的是,先建一个Person类package deractor;public class Person { private String name; public Person(String name){ this.name=name; } public void show(){ System....

2018-06-20 15:59:59 340

原创 策略模式

定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。例子:商场收银,营业员根据客户所购买商品的单价和数量,向客户收费,但有时候会有打折或者满减活动,eg:打八折,满300送100先用上个学习到的简单工厂实现一下建立一个现金收费的抽象类package celv;abstract class CashSuper {// 现金收取超类的抽象方法,收取...

2018-06-20 09:34:54 142

原创 简单工厂模式-工厂方法模式

在实际应用中,我们可以考虑使用封装、继承、多态把程序的耦合度降低。例子1:写一个计算器模拟程序思路:将业务进行封装,并且进行松耦合,即不同的运算类之间互相不影响,可考虑通过继承一个类或者实现一个接口类Operation,定义计算的统一接口package SmpleFactory;public class Operation { public double numberA=0; public...

2018-06-19 21:21:22 264

原创 设计模式概述

一,概述总体来说,设计模式分为三大类:1.创建型模式,共五种工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式2.结构型模式,共七种适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式3.行为型模式,共十一种策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式二,具体概括1.Singleton,单...

2018-06-19 16:29:18 135

TCP-IP详解卷1卷2卷3

TCP-IP详解卷一卷二卷三都有,还附有一本图解TCP-IP和谢希仁版的计算机网络课件,找工作必选

2018-04-20

Python学习资料整理

Python相关的学习资料整理,还有小甲鱼的视频太大没有传上来,如果有需要可以留言发你邮箱

2018-04-20

网络课程设计及linux

西安电子科技大学网络课程设计PPT 大三的大作业,linux编程的基础问题

2014-09-12

空空如也

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

TA关注的人

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