- 博客(44)
- 资源 (1)
- 收藏
- 关注
转载 Python第三方库pip安装 清华镜像使用帮助(简单快捷超详细)
在cmd中使用pip进行Python第三库安装时,时常会遇到网速过慢导致下载失败的情况,这时候镜像的好处就凸显了出来。推荐使用清华镜像。 1. 搜索cmd打开 也可同时摁一下键盘的win键和R键,调出运行窗口,在运行窗口输出cmd,点击确定 结果如图: 2.输入Python安装第三方库的pip命令 结果如图: 3.复制粘贴下方命令 可以在使用pip的时候加上 -i https://pypi.tuna.tsinghua.edu.cn/simple 例如: pip install Tensor
2021-01-26 19:53:33 14794 5
原创 计算机优质书籍搜集(持续更新)
目录计算机基础计算机网络操作系统数据结构算法数据库数据库基础MySQLRedisJavaJava基础并发JVMSpring/SpringBoot面试
2021-01-26 11:56:32 1128 2
原创 经典MySQL练习题(一)
1、 查询Student表中的所有记录的Sname、Ssex和Class列。2、 查询教师所有的单位即不重复的Depart列。3、 查询Student表的所有记录。4、 查询Score表中成绩在60到80之间的所有记录。5、 查询Score表中成绩为85,86或88的记录。6、 查询Student表中“95031”班或性别为“女”的同学记录。7、 以Class降序查询Student表的所有记录。8、 以Cno升序、Degree降序查询Score表的所有记录。9、 查询“95031”班的学
2021-01-26 11:46:36 1833
原创 HTTP 中 GET 请求和 POST 请求的区别
1. 作用GET 用于获取资源,而 POST 用于传输实体主体。2. 参数GET 和 POST 的请求都能使用额外的参数,但是 GET 的参数是以查询字符串出现在 URL 中,而 POST 的参数存储在实体主体中。不能因为 POST 参数存储在实体主体中就认为它的安全性更高,因为照样可以通过一些抓包工具(Fiddler)查看。因为 URL 只支持 ASCII 码,因此 GET 的参数中如果存在中文等字符就需要先进行编码。例如 中文 会转换为 %E4%B8%AD%E6%96%87,而空格会转换为 %2
2021-01-25 19:45:07 1424 2
原创 常见的 HTTP 状态码详解
服务器返回的响应报文中第一行为状态行,包含了状态码以及原因短语,用来告知客户端请求的结果。状态码类别含义1XXInformational(信息性状态码)接收的请求正在处理2XXSuccess(成功状态码)请求正常处理完毕3XXRedirection(重定向状态码)需要进行附加操作以完成请求4XXClient Error(客户端错误状态码)服务器无法处理请求5XXServer Error(服务器错误状态码)服务器处理请求出错
2021-01-25 16:59:43 1717 2
转载 通俗易懂讲解TCP流量控制机制,了解一下
首先说一下流量控制和拥塞控制的区别流量控制是端到端的控制,例如A通过网络给B发数据,A发送的太快导致B没法接收(B缓冲窗口过小或者处理过慢),这时候的控制就是流量控制,原理是通过滑动窗口的大小改变来实现。拥塞控制是A与B之间的网络发生堵塞导致传输过慢或者丢包,来不及传输。防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不至于过载。拥塞控制是一个全局性的过程,涉及到所有的主机、路由器,以及与降低网络性能有关的所有因素。1. 为什么需要流量控制双方在通信的时候,发送方的速率与接收方的速率是不一
2021-01-25 11:37:16 2554 2
原创 通俗易懂的 TCP 拥塞控制
什么是拥塞控制在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫拥塞。拥塞控制就是为了防止过多的数据注入到网络中,这样就可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。拥塞控制和流量控制的区别:拥塞控制是一个全局性的过程,涉及到所有的主机,所有的路由器,以及与降低网络传输性能有关的所有因素。相反,流量控制往往是点对点通信量的控制,是个端到端的问题。流量控制所要做到的就是抑制发送端发送数据的速率,以便使接
2021-01-25 10:35:18 3923 2
原创 Ubuntu 移动和复制文件夹(文件)到另一个文件夹
1. 移动一个文件夹到另一个文件夹下$ sudo mv 文件夹名 目标文件夹路径注意:这个命令必须在要移动的文件夹的目录下执行该命令,而且该文件夹下不能有文件夹和文件 2. 复制一个文件夹到另一个文件夹下$ sudo cp -r 文件夹名 目标文件夹路径 -r 就是递归的意思,删除时 也同样这么加-r注意:必须在要移动的文件的目录下执行该命令,该文件夹下可以有文件夹或者文件...
2021-01-22 15:57:49 30908 4
原创 Ubuntu 怎么在 Libreoffice 中添加字体
Libreoffice 官网提供了一些可供下载的字体1. 在Libreoffice官网上下载字体官网地址:https://zh-cn.libreoffice.org/download/fonts/。找到所需要的字体下载下来到Ubuntu本地。2. 解压下载好的zip文件可以直接使用可视化界面,右键进行解压。也可以使用命令行解压,命令如下:$ unzip SourceHanSerifCN.zip3. 将解压缩的文件夹拷贝到 /usr/share/fonts/$ sudo cp -r Sourc
2021-01-22 15:24:23 4774 8
转载 简述同步与异步、阻塞与非阻塞概念
相信很多从事linux后台开发工作的都接触过同步&异步、阻塞&非阻塞这样的概念,也相信都曾经产生过误解,比如认为同步就是阻塞、异步就是非阻塞,下面我们先剖析下这几个概念分别是什么含义。同步:所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事异步:异步的概念和同步相对。当一个异步过程调用发出后,
2021-01-20 19:44:33 1766 3
原创 HTTP 请求报文和响应报文包括哪些内容?
HTTP请求头部信息Accept:浏览器能够处理的内容类型Accept-Charset:浏览器能够显示的字符集Accept-Encoding:浏览器能够处理的压缩编码Accept-Language:浏览器当前设置的语言Connection:浏览器与服务器之间连接的类型Cookie:当前页面设置的任何CookieHost:发出请求的页面所在的域Referer:发出请求的页面的URLUser-Agent:浏览器的用户代理字符串例如:chrome下的请求头信息:
2021-01-20 19:22:41 11688 4
原创 通俗易懂讲解进程间的几种通信方式
1. 管道/匿名管道(Pipes) :用于具有亲缘关系的父子进程间或者兄弟进程之间的通信。2. 有名管道(Names Pipes) :匿名管道由于没有名字,只能用于亲缘关系的进程间通信。为了克服这个缺点,提出了有名管道。有名管道严格遵循先进先出(first in first out)。有名管道以磁盘文件的方式存在,可以实现本机任意两个进程通信。3. 信号(Signal) :信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生;4. 消息队列(Message Queuing) :消息队
2021-01-20 19:11:46 2763 2
原创 ubuntu截图工具Flamesho安装
推荐一个ubuntun中非常好用的截图工具Flamesho安装步骤如下:$ sudo add-apt-repository ppa:harish2704/ppa1$ sudo apt-get update$ sudo apt-get install flameshot安装完成之后在系统设置-keyboard-shortcuts-custom shortcuts里加一个快捷键名称是flameshot 命令是/usr/bin/flameshot gui,确认后点一下这行,按alt+x...
2021-01-20 16:51:16 1467 2
原创 JVM 双亲委派机制(通俗易懂)
类加载器Java是运行在Java的虚拟机(JVM)中的,我们在IDE中编写的Java源代码被编译器编译成.class的字节码文件。然后ClassLoader负责将这些class文件加载到JVM中去执行。JVM中提供了自上而下提供了三层的ClassLoader:BootstrapClassLoader(启动类加载器) :最顶层的加载类,由C++实现,负责加载 %JAVA_HOME%/lib目录下的jar包和类或者或被 -Xbootclasspath参数指定的路径中的所有类。ExtensionClass
2021-01-20 11:30:25 3430 3
转载 Ubuntu16.04安装 java JDK8
Java JDK在linux系统有两个版本,一个开源版本Openjdk,还有一个oracle官方版本jdk,oracle JDK既可以通过添加ppa源命令行安装,也可以去官网下载jdk压缩包安装。下面分别记录一下这三种安装方式的步骤。推荐直接使用第一种方法安装,简单快捷。 方法一:安装开源版本openjdk1、更新软件包列表:$ sudo apt-get update2、安装openjdk-8-jdk:$ sudo apt-get install openjdk-8-jdk3、查
2021-01-19 16:55:49 1499 2
原创 详解 JVM 内存分配和垃圾回收算法
目录1. JVM 内存分配与回收1.1. 概要1.2. 堆内存常见的分配策略1.3. GC简介1. JVM 内存分配与回收1.1. 概要Java 的自动内存管理主要是针对对象内存的回收和对象内存的分配。同时,Java 自动内存管理最核心的功能是 堆 内存中对象的分配与回收。Java 堆是垃圾收集器管理的主要区域,因此也被称作GC 堆(Garbage Collected Heap)。从垃圾回收的角度,由于现在收集器基本都采用分代垃圾收集算法,所以 Java 堆还可以细分为:新生代和老年代:再细致一点有
2021-01-19 10:42:57 1916
原创 git出现错误hint: Updates were rejected because the remote contains work that you do
问题描述git push的时候出现了下面的问题hint: Updates were rejected because the remote contains work that you dohint: not have locally. This is usually caused by another repository pushinghint: to the same ref. You may want to first integrate the remote changeshint: (
2021-01-18 19:31:46 23887 9
原创 通俗易懂的 Java 线程和进程区别
1. 什么是线程和进程1.1. 何为进程?进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程。补充:什么是程序程序是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。 1.2. 何为线程?线程与进程相似,但线程是一个比进程更小的执行
2021-01-18 17:28:00 2215 2
原创 详解 Java 创建线程的三种方式
java中创建线程的方式主要有三种:继承Thread类创建线程实现Runnable接口创建线程使用Callable和Future创建线程1. 通过继承Thread类创建线程定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。创建Thread子类的实例,即创建了线程对象调用线程对象的start()方法来启动该线程。package com.thread; public class First
2021-01-18 16:02:50 3359
原创 Java中创建String的两种方式与常量池
String的两种创建方式1. 常量式创建:String str1 = "abcd";当我们创建字符串常量时,JVM会首先检查字符串常量池,如果该字符串已经存在常量池中,那么就直接返回常量池中的实例引用。如果字符串不存在常量池中,就会实例化该字符串并且将其放到常量池中。由于String字符串的不可变性我们可以十分肯定常量池中一定不存在两个相同的字符串。上面这行代码可以理解为:先检查字符串常量池中有没有"abcd",如果字符串常量池中没有,则创建一个,然后 str1 指向字符串常量池中的对象。如果有
2021-01-18 15:12:18 1749
原创 详解 Java 内存区域
目录1. 概述2. 运行时数据区域2.1. 程序计数器2.2. Java 虚拟机栈2.3. 本地方法栈2.4 堆2.5 方法区直接内存方法区和永久代的关系为什么要将永久代 (PermGen) 替换为元空间 (MetaSpace)1. 概述对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像 C/C++程序开发程序员这样为每一个 new 操作去写对应的 delete/free 操作,不容易出现内存泄漏和内存溢出问题。正是因为 Java 程序员把内存控制权利交给 Java 虚拟机,一旦出现内存
2021-01-18 14:39:18 4043
原创 HTTP1.0、HTTP1.1、HTTP2.0、HTTPS的区别
目录HTTP1.0 和 HTTP1.1 的区别HTTP 和 HTTPSSPDY:HTTP1.x的优化HTTP2.0:SPDY的升级版HTTP2.0和HTTP1.X相比的新特性HTTP2.0的多路复用和HTTP1.X中的长连接复用有什么区别服务器推送是什么HTTP1.0 和 HTTP1.1 的区别HTTP1.0最早在网页中使用是在1996年,那个时候只是使用一些较为简单的网页上和网络请求上,而HTTP1.1则在1999年才开始广泛应用于现在的各大浏览器网络请求中,同时HTTP1.1也是当前使用最为广泛的H
2021-01-18 11:24:04 4724
原创 详解 TCP 和 UDP 协议
TCP、UDP 协议的区别TCP 提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。 TCP 不提供广播或多播服务。由于 TCP 要提供可靠的,面向连接的传输服务(TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源),这一难以避免的增加了许多开销,如确认,流量控制,计时器以及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多处理机资源。TCP 一般用于文件传输、
2021-01-18 10:48:30 2405 2
原创 图解 TCP 三次握手和四次挥手
目录TCP 三次握手为什么要三次握手第2次握手为什么要传回SYN和ACKTCP四次挥手TCP 三次握手为了准确无误地把数据送达目标处,TCP协议采用了三次握手策略。如下图所示,下面的两个机器人通过3次握手确定了对方能正确接收和发送消息(图片来源:《图解HTTP》)。 为什么要三次握手 三次握手的目的是建立可靠的通信信道,通讯就是数据的发送与接收。而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的。第一次握手:客户端–发送带有SYN标志
2021-01-18 10:35:37 2195 2
原创 通俗易懂的数据库三大范式
第一范式(1NF)确保每列保持原子性要求数据库表的每一列都是不可分割的原子数据项原子性:保证每一列不可再分在上表中,“家庭信息”和“学校信息”列均不满足原子性的要求,故不满足第一范式,应该调整如下,调整后的每一列都是不可再分的,因此满足第一范式。 第二范式(2NF)在1NF的基础上,属性完全依赖于主键第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。话不多说,直接上例子。在上表中,同一个订单中可能包含不同的产品,因此主键必
2021-01-16 21:41:39 1716
原创 MySQL 事务详解
这里写目录标题事务事物的四大特性(ACID) 事务事务是逻辑上的一组操作,要么都执行,要么都不执行。事务最经典也经常被拿出来说例子就是转账了。假如A要给B转账1000元,这个转账会涉及到两个关键操作:将A的余额减少1000元,将B的余额增加1000元。万一在这两个操作之间突然出现错误比如银行系统崩溃,导致A余额减少而B的余额没有增加,这样就会出错。事务就是保证这两个关键操作要么都成功,要么都要失败。 事物的四大特性(ACID)...
2021-01-16 21:16:44 6412 10
原创 MySQL中两大引擎 MyISAM 和 InnoDB 区别
目录MyISAM和InnoDB两者对比MyISAM和InnoDBMyISAM是MySQL的默认数据库引擎(5.5版之前)。虽然性能极佳,而且提供了大量的特性,包括全文索引、压缩、空间函数等,但MyISAM不支持事务和行级锁,而且最大的缺陷就是崩溃后无法安全恢复。不过,5.5版本之后,MySQL引入了InnoDB(事务性数据库引擎),MySQL 5.5版本后默认的存储引擎为InnoDB。大多数时候我们使用的都是 InnoDB 存储引擎,但是在某些情况下使用 MyISAM 也是合适的,比如读密集的情况下。
2021-01-16 21:06:11 1712 2
原创 Java容器之Map接口详解
目录HashMap 和 Hashtable 的区别HashMap 和 Hashtable 的区别1. 线程是否安全HashMap 是非线程安全的。HashTable 是线程安全的,因为 HashTable 内部的方法基本都经过synchronized 修饰。2. 效率因为线程安全的问题,HashMap 要比 HashTable 效率高一点。另外,HashTable 基本被淘汰,不要在代码中使用它。3. 对 Null key 和 Null value 的支持HashMap 可以存储 null
2021-01-16 17:52:35 3099 6
原创 常见数据结构的Java实现
总结了一下在刷LeetCode过程中碰到的一些常用数据结构,用Java容器进行定义 1. 栈Deque<Integer> stack = new ArrayDeque<Integer>();2. 队列Queue<Integer> queue = new LinkedList<Integer>();3. 小顶堆PriorityQueue<Integer> pq = new PriorityQueue<I
2021-01-15 19:23:39 1547 6
原创 面向对象编程三大特性: 封装 继承 多态
封装将类的某些信息隐藏在类的内部,不允许外部程序直接访问,并通过该类提供的方法来实现对隐藏信息的操作和访问。也就是说隐藏对象的信息,留出访问的接口。直接通过操控类对象来达到目的,不需要对具体实现十分了解,类属性和方法的具体实现对外不可见。不但方便还起到了保护作用。 继承继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。通过使用继承能够非常方便地复用以前的代码。关于继承如下 3 点请记住:
2021-01-15 16:03:56 1946 5
原创 ubuntu 16.04安装onedrive
先依次输入以下命令$ sudo apt install libcurl4-openssl-dev$ sudo apt install libsqlite3-dev$ sudo wget http://master.dl.sourceforge.net/project/d-apt/files/d-apt.list -O /etc/apt/sources.list.d/d-apt.list$ sudo apt-get update && sudo
2021-01-15 15:41:14 1622 2
原创 Docker 入门
目录1. 安装Docker2. Docker命令3. 免sudo使用docker命令 1. 安装Docker参考博客:https://blog.csdn.net/weixin_43901865/article/details/112589405 2. Docker命令登录自己公司的artifactory,第一次登录需要根据提示输入账号和密码$ docker login artifactory.xxx.xxxpull镜像$ docker pull
2021-01-15 15:00:58 880
原创 Git 入门
GitLinux安装GitLinux安装Git首先,你可以试着输入git,看看系统有没有安装Git:$ gitThe program 'git' is currently not installed. You can install it by typing:sudo apt-get install git 根据自己的Linux版本,对应以下命令进行Git的安装 Debian或Ubuntu Linux,通过sudo apt-get install git就可以直接完
2021-01-15 11:45:13 1462
转载 Intellij idea 报错:Error : java 不支持发行版本5
推荐解决方式:感谢评论区另一位博友 Fumoon 提供的方案:https://blog.csdn.net/qq_42583206/article/details/108375173 如按上述方式解决了问题,下文可以忽略。 ------------------------------------------------------------...
2021-01-14 21:52:48 3552 2
原创 docker-ce安装方法
Docker-ce (community edition社区版)参考自https://docs.docker.com/install/linux/docker-ce/ubuntu/先决条件(prerequisites)
2021-01-14 20:56:37 1827
原创 ubuntu 如何分屏(双屏显示)
ubuntun系统实现笔记本加外接显示器两个屏幕显示1. 查看相关显示器信息,输入命令xrandr可以看到我有两个显示器:eDP-1(主显示器)和HDMI-22. 设置显示器2.1. 双屏幕显示相同的内容–克隆xrandr --output HDMI-2 --same-as eDP-1 --auto说明:HDMI-2 和 eDP-1 为你刚才查看到的显示器信息auto为最高分辨率2.2. 双屏幕显示不同的内容–扩展若是副显示器在主显示器左面,则采用左扩展xrandr --out
2021-01-14 17:04:41 22098
转载 关于Maven创建module出现Ignored pom.xml文件如何解决
问题描述:在Maven创建module时,没有正确建好module所以把它删掉了!又创建了一个之前删除了的同名的module名称。但是,新创建的module中的pom.xml文件出现Ignored pom.xml的问题,如图:问题分析:由于相同名称的module在之前被创建过,因此在IDEA中留有痕迹。重新创建一个新的同名module会让IDEA误以为是之前被删除掉的module,所以才自动将这个pom.xml文件忽略了呢。解决方案:1. 点击file > Setting进入设置&nbs
2021-01-13 22:40:24 22849 21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人