自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

林一末的博客

When you are content to be simply yourself and don’t compare or compete, everyone will respect you....

原创 Python排虫 之使用 Scrapy 框架实现获取 腾讯视频信息 并上传到 Mysql数据库

摘要:       如果我们把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点;而爬虫就是一只小蜘蛛,沿着网络抓取自己的猎物(数据)爬虫指的是:向网站发起请求,获取资源后分析并提取有用数据的程序;从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON数据...

2018-12-18 15:38:03

阅读数 180

评论数 0

原创 什么是多态

纯属个人理解 1、多态指的是父类指针,调用的方法的选择方式,是根据该指针指向对象类的kclass表,也就是我们在C++经常说的虚表来判断的。 2、多态运用在我们在程序编译阶段才确定该指针所指向的对象是任一哪种类型。 ...

2019-08-16 20:04:44

阅读数 21

评论数 0

原创 深拷贝,浅拷贝的方式

对象中只有基本数据类型。实现cloneable接口。实现先拷贝。 例子: public class Grmmer { public static class Professor0 implements Cloneable { String name; ...

2019-07-24 21:12:49

阅读数 23

评论数 0

原创 springboot中mybatis的逆向工程

1、在pom文件添加 <!--mybatis 自动生成器--> <plugin> <groupId>org.mybatis.generator</groupId>...

2019-07-19 11:14:02

阅读数 22

评论数 0

原创 AOP+自定义注解

什么是注解: annotation 是 源代码的元数据 本质一:附属品,依赖其他元素存在(方法,类,字段,接口等) 本质二:由外部程序解析产生作用。 注解的分类: 运行机制划分:source 源码注解;class 编译时注解; Runtime 运行时注解 按来源划分:...

2019-05-25 21:19:15

阅读数 26

评论数 0

原创 Spring的传播行为

目的:解决业务层复杂的相互调用的逻辑 A(){ }; B () { }; 情况: B(){ A (); } 保证多个操作在同一个事务当中 PROPAGATION_REQUIRED 如果 A 方法已经有事务 就使用 A的事务,如果 A 没有事务,然后 B 创建一...

2019-05-16 17:56:10

阅读数 32

评论数 0

原创 classpath

下面,我以一个ssm的项目为例,我先把开发时候的项目的目录结构图放出来。根据maven的约定,一般我们的项目结构就像下面这样。 web项目发布后的目录结构 经过对比,我们要注意到,开发时期的项目里,src/main/下面的java和resources文件夹都被(编译)打包到了生产包的W...

2019-05-16 15:58:57

阅读数 39

评论数 1

原创 类文件结构

简介概述: class 文件 是使用二进制的文件。 优点:存储,读取性能高。 文件是一组以8位字节为基础单位的二进制流,各个数据项严格顺序紧凑。 class 文件有两种数据类型:无符号数,表。 文件的排序是以严格规定好的顺序进行排列的,一旦内容有可变长度的变量,会在可变变量的前方加上一...

2019-05-09 13:00:38

阅读数 18

评论数 0

原创 JVM 垃圾回收器

垃圾收集器的互相搭配 如上几种根据年代收集器分为两种 新生代收集器:serial,ParNew,Parallel Scavenge。 老年代收集器:CMS, Serial Old, Parallel Old。 Serial(新生代) (1)新生代采用复制算法。 (2)...

2019-05-07 11:52:55

阅读数 31

评论数 0

原创 JVM 内存回收与内存的分配

我们从下面的三件事情开始今天的探讨 1、哪些内存需要回收 2、什么时候进行回收 3、如何进行回收 我们对内存进行回收,我们就要先知道哪些东西可以被我们进行回收,那就是要回收那些已经死去的对象。 如何判断对象已经死去 1、采用 引用计数法 我们对我们在一个地方对对象进行引用...

2019-05-06 21:31:20

阅读数 26

评论数 0

原创 BIO/NIO

如下为个人单纯的记录: BIO: blocking-IO 推向NIO NIO:New-IO 或是 NON-Blocking-IO selector: chanel: Buffer: NIO案例: 服务端 ...

2019-04-28 20:31:35

阅读数 29

评论数 0

原创 Java 内存区域

内存图 运行时数据区域: 线程独占:会随着线程的死去而随着消失。 程序计数器: 在虚拟机的概念模型里面,字节码解释器工作就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支,循环,跳转,异常处理,线程恢复等基础功能需要依赖这个计数器来完成。为了线程切换后能恢复到正确的执...

2019-04-25 22:00:48

阅读数 24

评论数 0

原创 对线程的中断

这里我们先来讲一下已经被弃用的 stop() 以及 suspend() 这两个方法 stop() 反对使用stop(),是因为它不安全。它会解除由线程获取的所有锁定,当在一个线程对象上调用stop()方法时,这个线程对象所运行的线程就会立即停止,假如一个线程正在执行:synchronize...

2019-04-19 14:51:53

阅读数 19

评论数 0

原创 线程池

先学如下几个概念 当前线程池的大小,最大线程池大小,核心线程池的大小 当前线程池大小:表示当前工作者线程的数量。 最大线程池大小:表示工作者线程的最大数量。 核心线程池大小:表示工作者线程数量不大于最大工作者线程池的大小。 这个概念存在以下关系 当前线程池的大小 &lt...

2019-04-18 20:01:42

阅读数 289

评论数 0

原创 双缓冲与Exchanger生产者消费者模式

双缓冲的概念: 在多线程的环境下,有时候我们会使用两个或更多的缓冲区来实现数据从数据源到数据使用方的移动。其中一个缓冲区填满来自数据源的数据后可以被数据使用方进行“消费”,而另外一个空的缓冲区则用来填充来自数据源的新的数据。这里,负责填充缓冲区的是一个线程,而使用已填充完毕的另外一个缓冲...

2019-04-18 17:59:40

阅读数 26

评论数 0

原创 信号量(Semaphore)的生产者消费者模式

使用 Semaphore 的生产者消费者模式 public class Pattern1 { private final Semaphore semaphore; //这里的队列 这里默认为一般的容器,一般为无界的阻塞队列 private final BlockingQ...

2019-04-18 10:36:26

阅读数 62

评论数 0

原创 阻塞队列的生产者消费者模式

使用 阻塞队列 的生产者消费者模式 public class Pattern { BlockingQueue<String> chanel = new ArrayBlockingQueue<String>(10); /...

2019-04-18 10:05:32

阅读数 52

评论数 0

原创 java 内存模型

什么是java模型: 他规定了一些关键字的行为用来确保正确同步的java模型能够运行在不同架构的处理器上。 我们从下面几个问题对 解答以下几个线程安全方面的问题 原子性问题: 在原子性方面,java 内存模型对除了 long/double 以外的基本数据类型以及引用类型的共享变量...

2019-04-17 20:57:25

阅读数 57

评论数 0

原创 Synchronized,final关键字的作用

Synchronized: 使用monitorenter和monitorexit指令实现的: monitorenter指令是在编译后插入到同步代码块的开始位置,而monitorexit是插入到方法结束处和异常处 每个monitorenter必须有对应的monitorexit与之配对 任何...

2019-04-17 20:29:10

阅读数 52

评论数 0

原创 volatile 的 内存屏障

如下的 写 和 读 就是对 volatile 变量进行变量值的读写操作。 为什么在写操作后加入StoreLoad 因为storeLoad 相当于一个存储屏障和加载屏障,能够把执行处理器的写缓冲区的内容冲刷到高速缓存中去,还能情况执行处理器的无效化队列,把其他处理器的更新情况更新...

2019-04-16 21:53:02

阅读数 55

评论数 0

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