自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Frasensy

学习,记录

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

原创 虚拟机类加载机制

1、类加载的时机类从被加载到虚拟机内存开始到卸载出内存为止,整个生命周期:加载、验证、准备、解析、初始化、使用和卸载;其中验证、准备和解析统称为连接2、类加载的过程加载通过类名获取类的二进制字节流将字节流代表的静态存储结构转化为方法区的运行时数据结构在Java堆中生成一个代表这个类的java.lang.Class对象,作为方法区数据的访问入口验证文件格式验证...

2019-01-14 22:10:59 125

原创 类文件的结构

1、语言无关性虚拟机不关心字节码Class文件的来源是什么语言,只要符合Class文件应有的结构就可以在Java虚拟机上运行2、Class类文件的结构是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件中文件格式采用一种伪结构存储,只有两种数据类型:无符号数和表魔数:文件的头4个字节,用于确定这个文件是否为一个能被虚拟机接受的class文件常量...

2019-01-14 22:10:52 126

原创 垃圾收集器与内存分配策略

1、对象是死是活引用计数算法思路:给对象添加一个引用计数器,有一个地方引用就+1,引用失效就-1,当计数器为0时对象就不能再被使用Java没有选用引用计数算法来管理内存,最主要原因是它很难解决对象之间相互循环引用的问题根搜索算法思路:通过一系列名为GC Roots的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没有任何...

2019-01-14 22:10:45 110

原创 内存区域和内存溢出异常

1、Java虚拟机管理的内存:程序计数器当前线程所执行的字节码的行号指示器为了多线程中线程切换后能恢复到正确的执行位置,每条线程都需要一个独立的程序计数器“线程私有”的内存Java虚拟机栈线程私有,生命周期和线程相同每个方法被执行时都会创建一个栈帧Stack Frame用于存储局部变量表、操作栈、动态链接、方法出口等信息局部变量表存放编译期可知的各种基本数据类型...

2019-01-14 22:10:38 112

原创 虚拟机字节码执行引擎

1、运行时栈帧结构栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,存储了方法的局部变量表、操作数栈、动态连接、方法返回地址局部变量表在Java程序被编译成Class文件时,方法的Code属性的max_locals数据项中确定了该方法所需要分配的最大局部变量表的容量操作数栈编译时最大深度在Code属性的max_stacks数据项中确定2、方法调用:确...

2019-01-14 22:10:15 82

原创 早期(编译期)优化

1、Javac编译器解析:词法分析和语法分析词法分析是将源代码的字符流转变为标记(Token)集合,单个字符是编写程序过程最小元素,而标记是编译过程最小元素语法分析是根据Token序列来构造抽象语法树的过程,抽象语法树(AST)是一种用来描述程序代码语法结构的树形表示方式2、Java语法糖的味道泛型与类型擦除Java泛型只在源码存在,编译后的字节码文件被替换成原生类...

2019-01-14 22:10:08 86

原创 正则表达式

1、常见的匹配规则模式描述\w匹配字母、数字及下划线\W匹配不是字母、数字及下划线的字符\s匹配任意空白字符,等价于[\t\n\r\f]\S匹配任意非空白字符\d匹配任意数字,等价于[0-9]\D匹配任意非数字的字符2、match()方法1、尝试从字符串起始位置匹配正则表达式,匹配成功则返回结果,否则返回None。一旦开头不匹...

2019-01-14 22:09:12 83

原创 关于使用Python+selenium爬取网页信息市出现的问题:unknown error: Element is not clickable at point (508, 4831)的解决办法

最近需要爬取网站bopgraphy上的人物链接,以便后续再爬取具体人物的相关信息,网页上有一个SEE MORE的点击按钮,最初的想法是先通过selenium模拟浏览器不断点击按钮加载所有的人物链接到页面,然后通过元素定位爬取人物链接。点击按钮代码:button = browser.find_element_by_class_name("m-component-footer--loader")...

2019-01-14 22:08:48 406

原创 计算机网络

1、协议的三大要素语法:数据与控制信息的结构或格式语义:需要发出何种控制信息,完成何种动作以及做出何种响应同步:事件实现顺序的详细说明2、物理层主要任务:确定与传输媒体的接口有关的特性,如机械特性、电气特性、功能特性和过程特性等数据通信系统:源、传输、目的基带信号:来自信源的信号3、数据链路层主要使用两种信道:点对点信道、广播信道局域网属于链路层点对点信道链路:一...

2019-01-14 22:08:40 202

原创 网络爬虫

1、解析库的使用1、XPath的使用(XML Path Language)1、常用规则表达式描述nodename选取此节点的所有子节点/从当前节点选取直接子节点//从当前节点选取子孙节点.选取当前节点…选取当前节点的父节点@选取属性示例://title[@lang=‘eng’]代表选择所有名称为title,同时属性lang...

2019-01-14 22:08:33 277

原创 InnoDB存储引擎

1、脏页linux内核中的概念,因为硬盘的读写速度远赶不上内存的速度,系统就把读写比较频繁的数据事先放到内存中,以提高读写速度,这就叫高速缓存,linux是以页作为高速缓存的单位,当进程修改了高速缓存里的数据时,该页就被内核标记为脏页,内核将会在合适的时间把脏页的数据写到磁盘中去,以保持高速缓存中的数据和磁盘中的数据是一致的。2、后台线程Master Thread核心后台线程,负责将缓冲...

2019-01-14 22:08:24 92

原创 存储引擎

1、MySQL数据库由后台线程以及一个共享内存区组成,在系统上的表现就是一个进程,是一个单进程多线程架构的数据库实例2、区分数据库和数据库实例的概念数据库是文件的集合,是依照某种数据模型组织起来并存放于二级存储器中的数据集合数据库实例是程序,是位于用户和操作系统之间的一层数据管理软件3、存储引擎是基于表的,而不是数据库MySQL存储引擎1、InnoDB存储引擎特...

2019-01-14 22:08:10 219

原创 数据库基础

1、表结构化的文件,存储特定类型的数据,表中的数据只有一种类型或者一个清单名字唯一2、列表由列组成,每一列存储一条特定的信息每个列都有相应的数据类型3、行表中的数据按行存储是表中的一个记录4、主键唯一标识表中每行的这个列任意两行不具有相同的主键值每个行都必须有主键值,不允许为null5、MySQL是一个客户机-服务器DBMS数据排序默认升序,降序需要...

2019-01-12 10:37:35 129 1

原创 线程的活性故障

1、线程活性故障由资源稀缺性或者程序自身的问题和缺陷导致线程一直处于非Runnable状态,或者线程虽然处于Runnable状态但是其要执行的任务却一直无法进展的故障现象2、死锁1、产生条件(必要非充分)资源互斥资源不可抢夺占用并等待资源循环等待资源2、破坏任一条件即可避免死锁一般从“占用并等待资源”和“循环等待资源”两方面破坏条件粗锁法:使用粗粒度的锁待敌代替多个锁(...

2019-01-12 10:00:46 411

原创 保障线程安全的设计技术

1、Java运行时存储空间1、堆空间(Heap)可以被多个线程共享存储对象,Java虚拟机启动时分配的一段可以动态扩容的内存空间存储类的实例垃圾回收器的工作场所进一步划分:年轻代、年老代2、栈空间(Stack)线程的私有空间线程创建时分配的固定大小的内存空间局部变量的变量值存储在栈空间,基础类型变量和引用类型变量的变量值直接存储在栈帧空间3、非堆空间(Non-Heap...

2019-01-12 09:57:47 159

原创 线程

1、挖掘可并发点2、分而治之1、基于数据的分割实现并发化2、基于任务的分割实现并发化3、合理设置线程数1、多线程程序的提速只要来自多个线程对程序中可并行化部分的耗时均摊2、最终决定多线程程序提速的因素是整个计算中串行部分的耗时比率而不是线程数3、CPU密集型线程,线程数通常设置为N(cpu)+1;I/O密集型线程优先考虑线程数设为1,不够用的情况下将线程数向2*N(cpu)靠近4、...

2019-01-12 09:56:32 123

原创 Java线程同步机制

1、Java提供的线程同步机制包括锁、volatile关键字、final关键字、static关键字以及一些相关的API2、锁锁有排他性,一次只能被一个线程持有锁可以保证原子性、可见性、有序性两个条件:1、这些线程在访问同一组数据必须使用同一个锁2、任意线程读写都需要持有相应的锁可重入性ReentrantLock/**A调用B,B也用lock,但是A正持有lock,但是...

2019-01-12 09:51:18 702

原创 多线程编程的目标与挑战

1、并行和并发并发:一段时间内交替完成多个任务并行:以齐头并进方式完成多个任务并发的极致就是并行2、多线程的实质是将任务的处理方式由串行改为并发3、竞态定义:计算的正确性依赖于相对时间顺序或者线程交错不一定会导致计算结果不正确,只是不排除计算结果时而正确时而错误的可能竞态往往伴随读取脏数据问题局部变量不会导致竞态4、线程安全性线程安全:一个类在单线程环境下运作正...

2019-01-12 09:48:32 200

原创 走近java线程

1、进程、线程、任务进程1、是程序的运行实例,例如一个运行的Eclipse就是一个进程。2、是程序向操作系统申请资源(如内存空间、文件句柄)的基本单位线程1、是进程中可独立执行的最小单位2、一个进程可包含多个线程,所有线程共享该进程的资源任务1、线程要完成的计算就被称为任务2、Java线程APIstart方法调用结束不意味着相应线程的运行开始,只是启动...

2019-01-12 09:45:54 129

原创 面向对象

1、类的基本概念static表示类方法,也叫静态方法,与此相对的是实例方法,即没有static修饰,必须通过实例或对象调用,而类方法可以通过类名直接调用静态初始化代码块在类加载的时候执行,在任何对象创建之前,且只执行一次static int STATIC_TWO;//静态初始化代码块static { STATIC_TWO = 2; }可见性范围从大到小:priv...

2019-01-12 09:42:32 102

原创 泛型与容器

1、泛型好处:更好的安全性、更好的可读性Java中因为类型参数会被替换为object,所以泛型中不能用基本数据类型Pair<int> minmax = new Pair<int>(1,100)不合法2、列表和队列迭代的陷阱:在迭代的中间调用容器的删除方法public void remove(ArrayList<Integer> list) {...

2019-01-12 09:39:18 481

原创 并发

1、并发的基础线程的基本概念表示一条单独的执行流,有自己的程序执行计数器,自己的栈两种创建方式:继承Thread;实现Runnable接口无论哪种创建方式最后都需要调用start方法启动线程synchronized可用于修饰类的实例方法、静态方法和代码块多个线程可以同时执行同一个synchronized实例方法,只要访问的对象不同即可,synchronized实例方法...

2019-01-12 09:16:00 109 1

空空如也

空空如也

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

TA关注的人

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