自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java并发编程实战之 取消与关闭、线程池的使用

第六章 取消与关闭6.1 任务取消协作机制能设置某个标志位,任务会定期查看这个标志,如果设置了标志,那么任务将提前结束。如果外部代码能在某个操作正常完成之前将其置入“完成”状态,那么这个操作就可以称为可取消的。如何取消一般有两种方法:使用状态变量。线程中循环遍历状态变量,检测是否需要结束当前线程。使用中断。系统提供的大多数阻塞方法会相应中断Thread.interrupt:清除中断状态Thread.isinterrupted;抛出InterruptedException异常;表示阻塞操作由于中

2020-07-22 09:33:48 507

原创 Java并发编程实战之 基础模块构建、任务执行

基础构建模块委托是创建线程安全类的一个最有效的策略:只需让现有的线程安全类管理所有的状态即可。本章主要介绍一些比较有用的并发构建模块,特别是在 Java 5.0 和 Java 6.0 中引入的一些新模块,以及在使用这些模块来构造应用程序时的一些常用模式。同步容器类最早出现的同步容器类是Vector和Hashtable,在 JDK 1.2 及之后,又提供了一些功能类似的封装器类,这些同步容器类是由 Collections.synchronizedXxx 等工厂方法创建的。其实现线程安全的方式是:将它

2020-07-10 19:52:14 264

原创 Java并发编程实战之 线程安全性、对象的共享、对象的组合

线程安全性当多个线程访问同一个可变的状态变量时没有使用合适的同步,那么程序就会出现错误。有三种方式修复这个问题:不在线程之间共享该状态变量将状态变量修改为不可变类型在访问状态变量时使用同步内置锁Java 提供了一种内置的锁机制来支持原子性:同步代码块(Synchronized Block)。同步代码块包括两部分:一个作为锁的对象引用,一个作为由这个锁保护的代码块。synchroized (lock) { // 访问或修改由锁保护的共享状态}每个 Java 对象都可以用做一

2020-07-07 13:58:28 593

原创 Spring 之 深入理解 Spring IoC

IoC 是什么Ioc—Inversion of Control,即“控制反转”,它还有一个别名为 DI(Dependency Injection),即依赖注入。它不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解“控制反转”好呢?理解好它的关键在于我们需要回答如下四个问题:谁控制谁控制什么为何是反转哪些方面反转了在回答这4个问题之前,我们先看 IOC 的定义:所谓 IOC ,就是由 Spring IO

2020-07-03 13:54:36 169

原创 踩坑日记1——Java字符串 == 与 equals

Java字符串 == 与equals某天正在刷力扣,遇到一道需要判断字符串是否相等的题目,死活没找到问题所在,后来才发现是==与equals的问题for (int i = 0; i < len; i++) { // WRONG!会始终为 false 因为两个字符串存储地址不同 // if (words[i] == word1) w1 = i; if (words[i].equals(word1)) w1 = i; ...}推荐阅读:Hollis:图说:

2020-06-12 17:01:55 1449 2

原创 设计模式1——单例模式

单例模式(Singleton)特点:类构造器私有持有自己类型的属性对外提供获取实例的静态方法总之,单例模式就是为确保一个类只有一个实例,并为整个系统提供一个全局访问点的一种方法。饿汉模式饿汉式天生就是线程安全的,比较常用,但容易产生垃圾,因为一开始就要初始化// 饿汉式单例public class Hungry { private final static Hungry HUNGRY = new Hungry(); private Hungry() {} pu

2020-06-09 20:37:43 128

原创 Java核心技术 卷 I 读书笔记

Java基础Java位运算符与(&)、或(|)、非(~)、异或(^)与(&):两个操作数中位都为1,结果才为1,否则结果为0或(|):两个位只要有一个为1,那么结果就是1,否则就为0非(~):如果位为0,结果是1,如果位为1,结果是0异或(^):两个操作数的位中,相同则结果为0,不同则结果为1public class Count{ public static void main(String[] args){ int a=129; // a转换为二进制是100

2020-06-08 08:39:30 331

原创 六大排序算法及Java实现

冒泡排序基本思想:冒泡排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排。算法平均时间复杂度为O(n^2),且较为稳定代码实现import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class BubbleSort {

2020-06-02 18:50:13 241 1

原创 JVM学习笔记

Java 内存区域与内存溢出异常Java 程序员不需要像C、C++开发者一样去为每一个 new 操作去写配对的 delete / free 代码,不容易出现内存泄漏和内存溢出问题。但 Java 也把内存控制的权力交给了 Java 虚拟机.运行时的数据区域众所周知,Java 虚拟机有自动内存管理机制,如果出现内存泄漏和溢出方面的问题,排查错误就必须要了解虚拟机是怎样使用内存的。下图是 JDK8 之后的 JVM 内存布局。程序计数器程序计数器(Program Counter Register)

2020-05-17 19:16:38 288

原创 Java 堆内存是线程共享的吗?

本文来自作者Hollis:原文链接问题引出:1、堆是线程共享的内存区域,栈是线程独享的区域。2、堆主要存放对象实例,栈中主要存放各种基本数据类型、对象的引用。以上两个结论其实不完全正确。在解答之前,先想想Java 对象的内存分配过程是如何保证线程安全的?对象的内存分配过程中,主要是对象的引用指向这个内存区域,然后进行初始化操作。但是,因为堆是全局共享的,因此在同一时间,可能有多个...

2020-05-06 16:05:03 474 1

原创 ArrayList 系统详解

ArrayList 是最常用的 List 实现类,它适合随机查找和遍历,但不适合插入和删除。Vector 和 ArrayList 一样,但Vector 不支持线程同步,但线程安全,ArrayList 线程不安全ArrayList 非线程安全,底层是一个 Object[ ] ,添加到ArrayList中的数据保存在了elementData属性中。所以 ArrayList 具有数组的查询速...

2020-04-13 10:40:21 160

原创 基于Scrapy-redis实现分布式爬虫与热力图分析及KNN算法的预测

基于Scrapy-redis实现分布式爬虫Scrapy是一个通用的爬虫框架,但其框架本身不支持分布式,为了提高爬取效率① 充分利用多台机器的带宽速度爬取数据② 充分利用多台机器的IP爬取Python包要求:pymysql、redis、scrapy、re、urllib、jsonGithub地址:Lianjia_spiderScrapy-Redis原理图整体框架及逻辑爬虫及数据...

2020-03-04 14:01:48 319

原创 Pandas实现in与not in筛选数据

Pandas实现in与not in筛选数据通过df.isin()来判断DataFrame中每个元素是否存在DataFrame.isin()官方文档import pandas as pd# 示例数据df = pd.DataFrame({'user_id' : [1, 2, 3, 4, 5, 6], 'score' : [66, 67, 80, 71, 69, 57]})# 需被清理...

2020-02-18 22:55:27 9377

原创 Python numpy数组矩阵的合并与拼接

numpy数组拼接# 示例数组a = np.array([[1,2], [2,3]])b = np.array([[3,4], [4,5]])concatenate: 提供axis参数指定拼接方向append: 默认先flatten再拼接成一维数组,也可指定axisstack: 提供axis参数,用于生成新的维度hstack: 水平拼接,沿着行的方向,对列进行拼接vstack...

2020-02-18 12:15:57 5889

原创 SQL基础入门

SQL语句种类DDL——数据定义语言CREATE:创建数据库和表等对象DROP:删除数据库和表等对象ALTER:修改数据库和表的结构DML ——数据操纵语言SELECT:查询INSERTL:插入UPDATE:更新DELETE:删除DCL——数据控制语言COMMIT:确认对数据库中的数据进行的变更ROLLBACK:取消数据库中的数据进行的变更GRANT:赋予...

2020-02-17 00:09:26 143

空空如也

空空如也

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

TA关注的人

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