- 博客(185)
- 资源 (1)
- 收藏
- 关注
原创 JUC面试04--Atomic原子类及AtomicInteger源码分析
【说明:本系列文章所有思维导图均为纯手工打造,转载请注明出处】关于部分热心朋友提醒的几点说明1)有朋友反映说为啥我的博客很多都是只放一张图,对读者很不友好。这里说明下原因:本人很懒加上时间有限,为了保持博客编写速度尽可能高效,觉得思维导图在逻辑结构上更直观,图能表达的内容,不愿意再用文字赘述一遍; 本人习惯用思维导图的形式串联知识点,觉得通过文档目录来串联知识点并体现层级结构的方式比较麻烦; 本人博客所有内容均为自主学习过程中形成的思维导图笔记。2)有朋友反映说思维导图无法很好...
2021-09-30 23:18:30 134
原创 手把手教你在Centos服务器搭建Redis集群
说明:因个人又穷又懒,只准备了一台服务器,如下集群实为伪集群,真实生产环境搭建原理相同,这里只是为了学习搭建流程。1.基础环境Linux系统:Centos7Redis版本集群环境 节点数量:6 运行端口: 36379、36380、36381、36382、36383、36384 2.Redis下载推荐官网下载:Redis3.安装包文件上传将redis-6.2.5.tar.gz上传到/opt/software/redis/cluster_workspace目录...
2021-09-23 22:52:26 1050
原创 Redis学习06--哨兵模式
【说明:本系列文章所有思维导图均为纯手工打造,转载请注明出处】关于哨兵模式的搭建,请参考《手把手教你在Centos7服务器搭建Redis哨兵(1主2从3哨兵)》
2021-09-23 16:26:45 80
原创 手把手教你在Centos7服务器搭建Redis哨兵(1主2从3哨兵)
说明:因个人又穷又懒,只准备了一台服务器(伪集群),实际生产环境肯定不会这么玩,单台服务器宕机会导致这样部署没什么意义,这里只是为了学习,原理一样。1.基础环境Linux系统:Centos7Redis版本2.Redis下载推荐官网下载:Redis3. 上传软件压缩包到Linux服务器指定位置将redis-6.2.5.tar.gz上传到/opt/software/redis目录下 (具体路径视个人情况而定),同时在/opt/software/redis...
2021-09-22 21:17:32 577
原创 通过Xshell连接vagrant创建的Centos/7虚拟机
通过vagrant创建完虚拟机后,妄图通过用户名/密码连接vagrant创建的Centos虚拟机,点击连接会提示需要输入密钥,结局出乎意料。网上查资料记录下破局流程。1.启动虚拟机vagrant up2.连接虚拟机vagrant ssh默认用户名:vagrant3.更改配置文件sshd_configvi /etc/ssh/sshd_config将"#PasswordAuthentication yes"前的注释去掉4.重启机器,再...
2021-09-22 16:15:24 296
原创 JVM05--常量池
常量池的分类1.Class常量池当class文件被java虚拟机加载进来后存放在方法区的一些字面量和符号引用,字面量包括字符串,基本类型的常量。2.运行时常量池当class文件被加载完成后,java虚拟机会将class文件常量池里的内容转移到运行时常量池里,在class文件常量池的符号引用有一部分是会被转变为直接引用的,比如说类的静态方法或私有方法,实例构造方法,父类方法,这是因为这些方法不能被重写其他版本,所以能在加载的时候就可以将符号引用转变为直接引用,而...
2021-08-25 21:31:15 78
原创 多线程09--使用wait和notify模拟阻塞队列
什么是阻塞队列?阻塞队列常常实现了如下两个功能:1)当队列为空时,获取元素的线程会阻塞等待直到队列有数据;2)当队列满时,想要存储元素的线程会阻塞等待直到队列有空间。下面通过使用wait和notify实现如上两个功能效果,直接上代码:package com.ldzn.concurrency.blockingqueue;import java.util.LinkedList;import java.util.concurrent.TimeUnit;import java.u.
2021-08-24 21:30:52 214
原创 Java基础04--集合之ArrayList源码分析
概述 继承自AbstractList,实现List接口,底层数据存储基于数组实现容量的动态变化,用于存储同一类型的数据。关键属性// 默认的容量大小(常量)private static final int DEFAULT_CAPACITY = 10;// 定义的空数组(final修饰,大小固定为0)private static final Object[] EMPTY_ELEMENTDATA = {};// 定义的默认空容量的数组(final修饰,大小固定为0)...
2021-08-17 22:25:59 106
原创 Java基础03--数组与String
转载说明:本系列所有思维导图均为本人纯手工编写,转载请注明出处。本篇是对《Java后端全栈学习路线》中Java基础部分的《数组与String》章节进行扩展学习,会随着知识不断积累对该图进行及时更新。话不多说,直接上图(个人感觉比用纯文字描述更直观、系统):实例代码:public class StringTest { public static void main(String[] args) { /** * 情景...
2021-08-03 22:30:59 102
原创 Java基础02--OOP
转载说明:本系列所有思维导图均为本人纯手工编写,转载请注明出处。本篇是对《Java后端全栈学习路线》中Java基础部分的OOP章节进行扩展学习,会随着知识不断积累对该图进行及时更新。话不多说,直接上图(个人感觉比用纯文字描述更直观、系统):...
2021-08-03 10:13:05 79
原创 Java基础--01变量
变量 概念:内存中的一块存储区域,该区域拥有自己的名称、类型、值,变量必须先声明、再赋值、然后才能使用。 命名规则 由字母、数字、下划线、美元符号、中文汉字组成,其中不能以数字开头 数据类型 基础类型 数值型 整数类型(int、short、byte、long) 浮点类型(float、double) 字符型 ch...
2021-08-02 16:32:13 93
原创 JUC面试01--volatile关键字
1、volatile的作用volatile是JVM提供的轻量级的同步机制,具有三大特性:保证了被volatile关键字修饰的共享变量对多线程间的内存可见性 禁止了指令重排序 不保证原子性2、什么是内存可见性Java内存模型(JMM)定义了线程和主内存之间的抽象关系,多线程间共享变量存储在主内存中,线程操作共享变量前需要将共享变量拷贝到本地工作内存中,操作完毕后再同步写回主内存。每个线程是无法感知到其他线程对共享变量的修改的,可见性是指当前线程对共享变量的修改如何第一时间对其他线程可见。
2021-05-29 18:06:28 264 3
原创 JVM03--JMM(JAVA内存模型)
1.物理机解决并发的方案解决的首要问题:CPU运算速度和物理机存储设备之间的存在的巨大速度差异 解决的办法:通过在CPU和内存之间增加一层独写速度尽可能接近处理器运算速度的高速缓存,作为两者之间的缓冲。将CPU运算需要的数据复制到高速缓存中,保证运算能够快速的进行;当CPU运算结束后,再将运算结果从缓存同步回内存中,这样CPU无须再等待缓慢的内存独写(这里的缓慢是相对CPU处理而言的)。 衍生的问题:基于高速缓存的设计方案能够很好地解决处理器与内存间的速度差异矛盾,但同时也引入了一个新的问题“缓存一
2021-05-26 15:25:32 163 1
原创 JVM1x-JVM调优常用指令
(一)堆设置-Xms:初始堆大小 -Xmx:最大堆大小 -Xmn:新生代大小 -XX:NewRatio:设置新生代和老年代的比值。如:为3,表示年轻代与老年代比值为1:3 -XX:SurvivorRatio:新生代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:为3,表示Eden:Survivor=3:2,一个Survivor区占整个新生代的1/5 -XX:MaxTenuringThreshold:设置转入老年代的存活次数。如果是0,则直接跳过新生代进入老年代..
2021-05-26 08:48:46 152
原创 python+scrapy+MongoDB爬取网站数据
假设前置条件:个人PC安装好python、scrapy、MongoDB等环境1.创建项目scrapy startproject tutorial创建完后的文件夹如下:其中红色框框内的两个文件为后续创建的文件,其他的文件为执行命令后生成的。2.创建爬虫进入刚才创建的 tutorial 文件夹,执行genspider命令scrapy genspider quotes执行完毕之后,spiders 文件夹中多了一个 quotes.py文件(上图红色框1),编辑...
2021-05-08 20:45:04 479 1
原创 Python--操作MongoDB
关于Windows下MongoDB的安装及服务启动参见《Win10安装MongoDB》本篇主要对练习过程中的代码进行记录(小白入门):import pymongoclient = pymongo.MongoClient(host='127.0.0.1', port=27017)print(client)##指定数据库db = client.test##指定集合(类似表)collection = db.user##构造数据user = { 'id': '12333',.
2021-04-13 10:14:39 109
原创 Python--selenium使用
1 selenium定义Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。----from 百度百科2 安装利用pip下载安装包进行自动安装pip3 installselenium下载浏览器驱动地址:https://sites.google.com/a/chromium.org/chromedriver因为某些原因这个网址可能大部分人无法访问……^——^,作为一个科学上网的好孩纸,可从网上找其他资...
2021-04-12 23:43:46 172 1
原创 pip install pyspider报错问题
https://blog.csdn.net/u012424313/article/details/89511520
2021-04-07 15:33:34 336 1
原创 win10: pip install tesserocr报错问题
因为需要使用OCR库作为爬虫验证码识别的工具,所以本地进行tesserocr的安装,期间各种报错,折腾了一两个小时,本次记录下所有的趟坑经历。关于OCR:即 Optical Character Recognition,光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过程。对于图形验证码来说,它们都是一些不规则的字符,这些字符确实是由字符稍加扭曲变换得到的内容。我们可以使用 OCR 技术来将其转化为电子文本,然后爬虫将识别结果提交给服务器,便可以达到自动识别验证码的过程。.
2021-04-07 11:27:52 326
原创 Win10安装MongoDB
(1) 下载安装文件:1. 相关链接官方网站:https://www.mongodb.com 官方文档:https://docs.mongodb.com GitHub:https://github.com/mongodb 中文教程:http://www.runoob.com/mongodb/mongodb-tutorial.html访问官方网站,下载相应的msi安装包(2) 傻瓜式安装运行msi安装包,各种点击下一步(在安装路径选择环节如果不想用默认的,可以自定义路径),...
2021-04-07 10:31:54 194
原创 多线程08--管程
管程(英语:Monitors,也称为监视器) :是一种程序结构,结构内的多个子程序(对象或模块)形成的多个工作线程互斥访问共享资源。这些共享资源一般是硬件或一群变量。管程实现了在一个时间点,最多只有一个线程在执行管程的某个子程序。与那些通过修改数据结构实现互斥访问的并发程序设计相比,管程实现很大程度上简化了程序设计。管程提供了一种机制,线程可以临时放弃互斥访问,等待某些条件得到满足后,重新获得执行权恢复它的互斥访问。组成元素::多个彼此可以交互并共享资源的线程 多个与资源使用有关的变量 一个..
2021-04-02 13:12:55 279 1
原创 Linux同时支持Python2.x和Python3.x
本机利用VitualBox创建Centos虚拟机,默认Python版本为2.7,因为需要一个python3环境,所以对虚拟机进行安装,同时支持2.7 和 3.x1、安装python3.6可能使用的依赖(如果跳过本步骤,后边遇到报错再进行相应安装也是可以的)# yum -y install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel zlib-devel2、下载python源码包 在虚拟机/opt/下新建一.
2021-03-28 19:46:49 390 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人