自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

you are sherlocked by me!

大家好,我是江湖狗哥!

  • 博客(49)
  • 收藏
  • 关注

原创 Java多线程学习笔记18之Lock的使用

详细代码见:github代码地址 本节内容:    公平锁和非公平锁以及ReentrantLock常用方法的使用1) 公平锁和非公平锁2) getHoldCount()、getQueueLength()、getWaitQueueLength()3) hasQueueThread()、hasQueueThreads()、hasWaiters()4) lockInterr...

2018-10-31 23:24:24 414

原创 Java多线程学习笔记17之Lock的使用

详细代码见:github代码地址 本节内容:1) Lock/ReentrantLock的newCondition()方法及Condition类/await、signal方法文档翻译2) Condition实现等待/通知使用(错误示例及正确示例)3) 使用多个Condition实现通知部分线程4) 实现消费者和生产者模型(利用await()及signal()方法) ...

2018-10-30 17:00:42 592

原创 粒子群算法(PSO,gbest与lbest)

github: 智能算法的课件和参考资料以及实验代码 粒子群算法的原理:粒子群算法是一种群体智能算法,通过追随当前搜索到的最优值来寻找全局最优。该算法实现容易、精度高、收敛快,在解决实际问题中具有很大的优越性。主要步骤可描述如下:1、初始化粒子群位置和速度。2、计算每个粒子的适应度,确定全局最优粒子gbest和个体最优粒子pbest。3、判断算法收敛准则是否满足,若满足,...

2018-10-28 23:38:48 9010

原创 Java多线程学习笔记16之Lock的使用

详细代码见:github代码地址 本节内容:1) Lock接口/ReentrantLock类/lock()/unlock()方法文档翻译    翻译中包含了此重入锁与synchronized方法及语句块之间区别及优缺点2) 使用ReentrantLock实现同步第四章Lock的使用内容:Java5中的Lock对象也能实现同步的效果,而且在使用上也更加方便。...

2018-10-28 18:55:43 981

原创 Java多线程学习笔记15之线程间通信

详细代码见:github代码地址 本节内容:1)ThreadLocal类的使用    JDK文档及方法翻译    InheritableThreadLocal的使用 5.类ThreadLocal的使用变量值的共享可以使用public static变量的形式,所有的线程都使用同一个public static 变量。但是如何让每一个线程都有自己的共享变量该如何解决呢...

2018-10-27 23:06:06 230

原创 Java多线程学习笔记14之线程间通信

详细代码见:github代码地址 本节内容:1) 实战 等待/通知之交叉备份2) 方法join的使用(Jdk文档翻译及源码解析)    join()及join(long)的使用和实现原理    join(long)和sleep(long)的区别及源码分析 (3) 实战 等待/通知之交叉备份创建20个线程,其中10个线程是将数据备份到A数据库中,另外10个线程将...

2018-10-27 22:51:35 219

原创 Java多线程学习笔记13之线程间通信

详细代码见:github代码地址 本节内容:1)  生产者消费者模型    多个生产者和多个消费者: 操作值假死及解决    多个生产者和多个消费者: 操作栈假死及解决2) 通过管道进行线程间通信    线程间常用的通信方式介绍    PipedInputStream和PipedOutputStream字节流/PipedReader和PipedWriter字符流...

2018-10-26 23:38:40 307

原创 进化策略与进化规划算法(ES与EP)

github: 智能算法的课件和参考资料以及实验代码 进化策略和遗传算法统称为进化算法,二者的思想很类似,但步骤和应用方向有所差别。具体关于这两种算法介绍可以下载课件查看 我们举个二元函数最大值优化问题,分别用这两种算法简单搜索最优值:用matlab实现:ES:f2.mfunction y = f2(x1, x2)% 二元函数求最大值的优化问题 x1∈[-3...

2018-10-25 11:36:16 8198 3

原创 Java多线程学习笔记12之线程间通信

详细代码见:github代码地址 本节内容:1) wait()锁释放与notify()锁不释放2) 当interrupt()方法遇到wait()方法3) notify()与notifyAll()使用4) 方法wait(long)的作用5) notify()方法通知过早6) 调用wait()方法的条件变化,造成逻辑混乱7) 生产者消费者模式, 一个生产者和一个消...

2018-10-24 11:02:24 227

原创 Java多线程学习笔记11之线程间通信

详细代码见:github代码地址 本节内容:1) 等待/通知机制概念2) 中断和轮询两种基本的方式3) 等待/通知机制的实现4) wait()/notify()/wait(long)/notifyAll()文档翻译 线程间通信线程是操作系统中独立的个体,使线程间进行通信后,系统之间的交互性会更强大,在大大提高CPU利用率的同时还会使程序员对各线程任务在处理...

2018-10-23 18:15:55 229

原创 线程调度器和调度策略

 线程调度器(Thread Scheduler):    操作系统的核心,它实际上就是一个常驻内存的程序,不断地对线程队列进行扫描,利用特定算法(时间片轮转法、优先级调度法、多级反馈队列调度法(MLFQ等),找出比当前占有CPU的线程更有CPU使用权的线程,并从之前的线程中收回处理器,再使待运行的线程占用处理器。 线程调度策略(Thread scheduling p...

2018-10-23 12:34:10 3794

原创 2.机器学习JupyterNotebook基础及numpy基础、矩阵分割合并、矩阵运算、聚合运算

github项目课件及代码笔记地址: https://github.com/youaresherlock/scikit-learnNoteAndCode项目中有.ipynb文件,可以自行用jupyter notebook打开学习,另外也有课件。 第三章3-1 Jupyter Notebook基础JupyterNotebook介绍:Jupyter Notebook, 以前又称为...

2018-10-21 22:20:43 2445

转载 测试代码的执行时间魔法方法%time和%timeit

对于规模更大、运行时间更长的数据分析应用程序,你可能会希望测试一下各个部分或函数调用或语句的执行时间。你可能会希望了解某个复杂计算过程中到底是哪些函数占用的时间最多。幸运的是,在开发和测试代码的过程中,IPython能够让你轻松得到这些信息。使用内置的time模块及其time.clock和time.time函数手工测试代码执行时间是一件令人烦闷的事情,因为你必须编写许多一模一样的了无生趣的公式化代...

2018-10-20 14:08:51 1817

转载 markdown基本语法

markdown是一种纯文本格式的标记语言。通过简单的标记语法,它可以使普通文本内容具有一定的格式。相比WYSIWYG编辑器优点:1、因为是纯文本,所以只要支持markdown的地方都能获得一样的编辑效果,可以让作者摆脱排版的困扰,专心写作。2、操作简单。比如:WYSIWYG编辑时标记个标题,先选中内容,再点击导航栏的标题按钮,选择几级标题。要三个步骤。而markdown只需要在标题内...

2018-10-19 21:35:29 127

原创 Java多线程学习笔记10之对象及变量的并发访问

详细代码见:github代码地址 本节内容:1) volatile关键字2) volatile与synchronized关键字的比较3)  内存模型4) 原子性、有序性、可视性5)原子类提供原子操作 4. volatile关键字    volatile关键字的主要作用是使变量在多个线程间可见,它强制从公共堆栈中取得变量的值,而不是从线程私有数据栈中取得变...

2018-10-19 20:48:25 336

原创 Java多线程学习笔记9之对象及变量的并发访问

详细代码见:github代码地址 本节内容:1) 多线程死锁条件2) 成员内部类和静态内部类同步3) 锁对象改变和锁对象属性的改变 1.多线程的死锁Java线程死锁是一个经典的多线程问题,因为不同的线程都在等待根本不可能被释放的锁,从而导致所有的任务都无法继续完成。在多线程技术中,"死锁"是必须避免的,因为这会造成线程的"假死"Java死锁产生的四个必要条件:...

2018-10-19 20:34:56 249

原创 1.机器学习的概念和环境搭建

本文是我学习bobo老师视频的学习笔记,是机器学习的入门课程,建议有编程基础和高等数学、概率论、线性代数的学习者参考学习。github项目课件及代码笔记地址: https://github.com/youaresherlock/scikit-learnNoteAndCode第一章: 机器学习的大概过程输入大量学习资料 --> 机器学习算法 --> 学习得到执行任务的算...

2018-10-17 22:14:11 1598 1

原创 Java多线程学习笔记8之对象及变量的并发访问

详细代码见:github代码地址 本节内容:1) 静态同步synchronized方法与synchronized(class)代码块2) Class锁可以对类的所有对象实例起作用 3) 数据类型String的常量池特性 6) 细化验证3个结论"synchronized(非this对象x)"格式的写法是将x对象本身作为"对象监视器",这样就可以得出以下3个结论...

2018-10-16 22:20:27 250

原创 Java多线程学习笔记7之对象及变量的并发访问

详细代码见:github代码地址 本节内容:1)  出现异常,锁自动释放2)  同步不具有继承性3) synchronized同步语句块    synchronized方法的弊端    synchronized代码块间的同步性    将任意对象作为对象监视器    synchronized(非this对象x)同步代码块也可以解决"脏读"问题 7) 出...

2018-10-16 21:40:17 223

转载 Java中的"对象监视器Monitor"和"对象锁"

在JVM的规范中,有这么一些话:      “在JVM中,每个对象和类在逻辑上都是和一个监视器相关联的”        “为了实现监视器的排他性监视能力,JVM为每一个对象和类都关联一个锁”      “锁住了一个对象,就是获得对象相关联的监视器”   监视器好比一做建筑,它有一个很特别的房间,房间里有一些数据,而且在同一时间只能被一个线程占据,进入这个建筑叫做"进入监视器",进入建筑中的...

2018-10-16 10:43:11 6434 1

转载 Unicode和UTF-8之间的转换

 通过这几天的研究,终于明白了Unicode和UTF-8之间编码的区别。Unicode是一个字符集,而UTF-8是Unicode的其中一种,Unicode是定长的都为双字节,而UTF-8是可变的,对于汉字来说Unicode占有的字节比UTF-8占用的字节少1个字节。Unicode为双字节,而UTF-8中汉字占三个字节。注: Unicode编码目前规划的总空间是17个平面,0x0000 至 0x...

2018-10-15 09:30:28 18978 5

转载 为什么UTF-8没有字节序问题?

作者: 果壳网川岛关于编码的问题困扰了我好久,每次遇到都完全解决不了我的疑惑,这次彻底的看了几篇文章总算是看懂了,这里分享给大家。一、UTF-8编码怎么编UTF-8编码是Unicode字符集的一种编码方式,其特点是使用变长字节数来存储数据。一般是1到4个byte,当然,也可以更长,实际上4个byte可以表示2的32次方个不同字符,即4294967296个(约43亿),已经足以编码人类现...

2018-10-15 09:27:40 2292

原创 Java多线程学习笔记6之对象及变量的并发访问

详细代码见:github代码地址 本节内容:1) synchronized同步方法(线程安全和非线程安全、锁对象)2) 脏读3) synchronized锁重入 我们在学习了Thread类的一些基本方法的使用以及了解了一些方法废弃的原因之后,接下来我们来学习对对象及变量的并发访问。1. synchronized同步方法什么是线程安全与非线程安全?"非...

2018-10-14 19:42:06 220

原创 GA遗传算法

github: 智能算法的课件和参考资料以及实验代码 遗传算法(Genetic Algorithm)    模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(individual)组成。每个个体...

2018-10-13 22:31:42 877

转载 ip地址中保留地址讲解

保留IP地址的分配互联网上的IP地址统一由一个叫IANA(Internet Assigned Numbers Authority,互联网网络号分配机构)的组织来管理。根据用途和安全性级别的不同,IP地址还可以大致分为两类:公共地址和私有地址。公用地址在Internet中使用,可以在Internet中随意访问。私有地址只能在内部网络中使用,只有通过代理服务器才能与Internet通信。一个机构...

2018-10-12 14:00:47 20810

转载 公有IP和私有IP

什么是公有IP地址(公网IP):组建一个企业级网络,需要去向“电信运营商ISP”申请一个接入Internet的宽带,同时ISP还会给我们分配一个或多个IP地址,这些IP地址可以供我们企业内部上网,这些ISP分配给我们的IP,就是公有IP。公有地址(Public address,也可称为公网地址)由Internet NIC(Internet Network Information Cente...

2018-10-12 12:39:34 318

原创 Why are Thread.stop, Thread.suspend and Thread.resume Deprecated?翻译

前面我们的学习笔记中讲解Thread类中一些废弃的方法及原因,同时又示例代码。现在我们来翻译官方给出的文档Why are Thread.stop, Thread.suspend and Thread.resume Deprecated?。 """本文是我学习Java多线程以及高并发知识的第一本书的学习笔记,书名是<<Java多线程编程核心技术>>,作者是大佬...

2018-10-11 13:04:59 881 1

转载 Java并发中锁和监视器

锁和监视器之间的区别 – Java并发在面试中你可能遇到过这样的问题:锁(lock)和监视器(monitor)有什么区别?嗯,要回答这个问题,你必须深入理解Java的多线程底层是如何工作的。简短的答案是,锁为实现监视器提供必要的支持。详细答案如下。锁(lock)逻辑上锁是对象内存堆中头部的一部分数据。JVM中的每个对象都有一个锁(或互斥锁),任何程序都可以使用它来协调对对象的多...

2018-10-11 11:59:28 325

原创 并发的数据竞争(可见性)与竞态条件(原子性)

数据竞争(data race):出现在一般数据的访问,一个读进程和写进程,如果没有进行同步,那么就会出现数据访问错误。 竞态条件(race condition):如果程序运行顺序的改变会影响最终结果,这就是一个竞态条件不是所有竞态条件都会出现数据竞争,竞态条件有时取决于运气,竞态条件指的是类中没有加锁的对象。如果一个类中没有属性变量,则称为无状态的,相反成为有状态的。多个...

2018-10-10 23:18:28 668 2

转载 Java的对象头和对象组成详解

目录一,对象头1,Mark Word2,指向类的指针3,数组长度二,实例数据三,对齐填充字节Java对象保存在内存中时,由以下三部分组成:1,对象头2,实例数据3,对齐填充字节一,对象头java的对象头由以下三部分组成:1,Mark Word2,指向类的指针3,数组长度(只有数组对象才有) 1,Mark WordMar...

2018-10-10 18:56:35 8633 6

转载 Java内存模型与对象揭秘

看了很多个关于Java内存模型的博客,这篇博客有着独到的见解.前言:最近看了《深入jvm》一书,感受颇深,但是不写点什么总感觉不是自己的,所以动手捋一捋。主要讲的内容是java的内存区域,对象的创建,对象的内存布局和对象的访问方式。一、java的内存区域划分这个问题几乎是面试官必问的问题,很多人都会直接回答:“堆和栈”。其实这种划分是很粗略的,要是遇到认真的面试官,你就尴尬了。说个题外...

2018-10-10 18:50:09 248

原创 线程栈

在Java虚拟机进程中,每个线程都会拥有一个方法调用栈(线程栈),用来跟踪线程运行中的一系列方法调用过程,栈中的每一个元素被称为栈帧,每当线程调用一个方法的时候会向方法栈中压入一个新帧。这里的帧用来存储方法的参数、局部变量、方法的返回地址、和运算过程中的临时数据。 线程栈模型是理解线程调度原理以及线程执行过程的基础。线程栈是指某时刻时内存中线程调度的栈信息,当前调用的方法总是位...

2018-10-10 18:45:11 1886

原创 Java死锁产生的四个条件

死锁的四个条件:1. 互斥使用,即当资源被一个线程使用(占有)时,别的线程不能使用2. 不可抢占,资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占用者    主动释放3. 请求和保持,即当资源的请求者在请求其他的资源的同时保持对原有资源的占有4. 循环等待,即存在一个等待队列: P1占有P2的资源,P2占有P3的资源,P3占有P1的资源。    这样就形成了一个...

2018-10-10 18:33:17 3111

原创 高并发中原子性、可见性、有序性

线程安全包含原子性和可见性两个方面,Java的同步机制都是围绕这两方面来确保线程安全的。Java的内存模型是围绕着在并发过程之中如何处理原子性,可见性和有序性这三个特征来建立的。下面我们来谈谈原子性、可见性、有序性 原子性     由java内存模型来直接保证的原子性变量操作包括read,load,assign,use,store,write,我们大致可以认为基本数据类型的...

2018-10-10 18:16:23 826

原创 DNS解析顺序

学习过计算机基础和网络的人都知道域名解析的大概原理和过程,就是细节可能不太清除。下面我就简单介绍一下域名解析的大概过程:DNS的作用:DNS的作用:在互联网中,其实没有类似于www.xxx.com这种域名方式,而替代的是以IP地址,如222.222.222.222,那我们在IE地址栏中应当输入222.222.222.222才能打开网站www.xxx.com,但我们细想一下,互联网上的网站...

2018-10-10 11:02:03 20701 2

转载 线程和进程上下文切换区别

     线程上下文切换和进程上下问切换一个最主要的区别是线程的切换虚拟内存空间依然是相同的,但是进程切换是不同的。这两种上下文切换的处理都是通过操作系统内核来完成的。内核的这种切换过程伴随的最显著的性能损耗是将寄存器中的内容切换出。        另外一个隐藏的损耗是上下文的切换会扰乱处理器的缓存机制。简单的说,一旦去切换上下文,处理器中所有已经缓存的内存地址一瞬间都作废了。还有一个显著的区...

2018-10-09 16:23:45 358

转载 内核线程、轻量级进程、用户线程三种线程概念讲解(线程≠轻量级进程)

转载关于进程、线程和轻量级进程的一些笔记[维基百科-轻量级进程]https://en.wikipedia.org/wiki/Light-weight_process#See_also线程与进程概念在现代操作系统中,进程支持多线程。 进程是资源管理的最小单元; 线程是程序执行的最小单元。 即线程作为调度和分配的基本单位,进程作为资源分配的基本单位一个进程的...

2018-10-09 16:10:31 1096

原创 Java多线程笔记详解

这是学习多线程知识的学习笔记,大家可以选择自己感兴趣的部分阅读学习详细代码见github代码 Java多线程学习笔记1之多线程基础内容:1) 基本概念以及线程的实现方法 Java多线程学习笔记2之多线程基础内容:1) 数据同步2) 非线程安全情况以及处理方法3) Java内存模型4) Thread.currentThread()抽象方法使用...

2018-10-09 15:50:42 558

原创 Java多线程学习笔记5之多线程基础

详细代码见:github代码地址 本节内容:1) suspend与resume方法的缺点和代码案例2) yeild()方法的使用3) 线程的优先级详解4) java中的守护线程和用户线程 1. suspend与resume方法的缺点在使用suspend与resume方法时,如果使用不当,极易造成公共的同步对象的独占,使得其他线程无法访问公共同步对象...

2018-10-09 15:41:06 198

转载 竞态条件(race condition)

在学习多线程的过程中,因为是非科班学生,操作系统的东西都是一知半解的,所以很多名词都没有理解,另外具体的Java虚拟机如何工作还需要后续的学习,这里只能慢慢学习了,等到这本书看完好好读读操作系统的东西以及Java虚拟机机制下面是一个博文讲解了竞态条件的基本概念和常见的情况竞态条件(Race Condition):计算的正确性取决于多个线程的交替执行时序时,就会发生竞态条件。最常见的竞态...

2018-10-09 10:12:15 1464

空空如也

空空如也

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

TA关注的人

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