- 博客(47)
- 收藏
- 关注
原创 进程和线程
进程和线程一、进程1.1、进程的状态进程的内存空间布局进程的控制块和上下文切换父子进程的拷贝fork写时拷贝进程之间的监控(wait())一、进程我们的操作系统中运行着各种各样的程序,为了管理这些程序的运行,操作系统提出了进程。为了使程序看起来是同一时间运行的,操作系统进一步提出了上下文切换的概念。1.1、进程的状态进程存在五个状态。分别为:新生状态,预备状态,运行状态,阻塞状态,终止状态。新生状态是指:一个进程刚被创建出来,还没有完成初始化,这里初始化的意思应该是给进程创建相应的数据结
2022-02-22 09:49:18
269
原创 自研Spring项目小总结
文章目录一、Spring是什么二、源码分析自研Spring框架Xml解析Bean单例注册BeanFactory一、Spring是什么spring其实是一个容器框架,可以用来配置各种bean(配置文件xml),并且可以维护bean与bean的关系,当我们需要某个bean的时候,只需要getBean(id) 就可以了。这里getBean是以反射为基础的,因为一开始并不知道我要初始化的类对象是什么,只能通过xml文件解析出类的路径,所以不能用new来创建对象。没有spring之前,我们都是通过代码来维
2021-11-15 14:42:59
755
原创 MapReduce
文章目录前言一、MapReduce是什么?二.编程模型自己实现MapReducemaster里面要写的东西worker里面要写的东西rpc里面要写的东西思路整体思路前言此项目来源于mit6.824Lab1链接:pdos.csail.mit.edu/6.824论文链接:https://pdos.csail.mit.edu/6.824/papers/mapreduce.pdf建议大家做lab的时候先看下代码和注释,之后再确定思路点进去之后能看到下面这个,就是实验指导手册一、MapRedu
2021-10-04 09:44:31
265
原创 JVM内存区域
目录前言一.程序计数器二.虚拟机栈2.1 栈帧的内部结构2.1.1 局部变量表2.1.1.1 变量Slot2.1.1.2 静态变量与局部变量对比:2.1.2 操作数栈2.1.3 动态链接2.1.4 方法返回地址三.本地方法栈四.Java堆五.方法区5.1 运行时常量池前言以上黄色部分包括的地方就是运行时数据区。运行时数据区包括:堆,方法区,虚拟机栈,本地方法栈,程序计数器一.程序计数器线程私有它可以当作是当前线程所执行的字节码的行号指示器。字节码解释器就是通过改变计数器的值来选取下一条
2021-07-20 19:23:38
247
1
原创 HTTP和HTTPS
文章目录一、HTTP的缺点1.1 不验证对方身份容易遭遇伪装1.2 解决办法二、使用步骤1.引入库2.读入数据总结一、HTTP的缺点使用明文加密,容易被窃听不验证通信方的身份,有可能遭遇伪装无法证明报文的完整性,有可能已经被篡改。1.1 不验证对方身份容易遭遇伪装有可能是伪装的web服务器有可能是伪装的客户机。无法确定正在通信的对方是否具备访问权限。1.2 解决办法查明对方的证书,服务器会向权威机构申请一个证书,这个证书不会被破解,所以,只要确认通信双方持有的证书,就可以判断
2021-07-20 10:56:32
158
原创 Cookie和Session
CookieCookie 一般用来保存用户信息我们在 Cookie 中保存已经登录过得用户信息,下次访问网站的时候页面可以自动帮你登录的一些基本信息给填了;一般的网站都会有保持登录也就是说下次你再访问网站的时候就不需要重新登录了,这是因为用户登录的时候我们可以存放了一个 Token 在 Cookie 中,下次登录的时候只需要根据 Token 值来查找用户即可(为了安全考虑,重新登录一般要将 Token 重写);登录一次网站后访问网站其他页面不需要重新登录。Session主要作用就是通.
2021-07-19 10:40:24
107
原创 Java基础问题
Java基本数据类型java三种注释方式:单行注释 快捷键 ctrl + /多行注释 快捷键 ctrl + shift + /文档注释 快捷键 /** + enter
2021-07-18 13:40:44
106
原创 hadooop常用端口号
目录一. Hadoop3.x二.Hadoop2.x三.常用配置文件3.1 Hadoop3.x3.2 Hadoop2.x一. Hadoop3.xHDFS NameNode 内部常用端口 :8020 / 9000 / 9820HDFS NameNode 对用户的查询端口:9870Yarn 查看用户的运行情况:8088历史服务器:19888二.Hadoop2.xHDFS NameNode 内部常用端口 :8020 / 9000HDFS NameNode 对用户的查询端口:50070Yarn
2021-07-17 20:25:35
281
1
原创 在浏览器中输入url地址->显示主页的过程
文章目录一.浏览器首先要解析URL(确定协议,要进行通信的主机,要访问的文件)1.1 URI和URL二.生成HTTP消息2.1 GET方法和POST方法2.1.1 GET方法2.1.2 POST方法三.找到想要访问的服务器的ip3.1 DNS解析3.1.1 DNS解析过程3.1.1.1 根据什么确定ip3.1.1.2 DNS递归查询3.1.1.3 DNS分层四. 连接五.发送请求六.服务器处理请求并返回HTTP报文(响应)七.断开连接一.浏览器首先要解析URL(确定协议,要进行通信的主机,要访问的文件)
2021-07-17 16:35:52
2486
2
原创 Hadoop本地测试wordcount案例
先创建一个文件目录wcinput,用于存放数据mkdir wcinput创建文件wordvim word.txt郭志浩郭志浩郭志浩王欢韩奔韩奔返回上一级目录cd ..运行 hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput/ ./wcoutput 这里输出的文件不可以被创建最后会看到出现wcoutput进去看看cd wcou.
2021-07-16 13:28:37
385
原创 Hadoop目录
[lanjie@Hadoop102 hadoop-3.1.3]$ ll总用量 176drwxr-xr-x. 2 lanjie lanjie 183 9月 12 2019 bindrwxr-xr-x. 3 lanjie lanjie 20 9月 12 2019 etcdrwxr-xr-x. 2 lanjie lanjie 106 9月 12 2019 includedrwxr-xr-x. 3 lanjie lanjie 20 9月 12 2019 libdrwx
2021-07-16 12:43:27
164
原创 死锁---------
这里写目录标题一.死锁的例子二.死锁产生的必要因素三.如何处理死锁3.1 鸵鸟策略(就是不管他)3.2 检测死锁3.3 死锁恢复3.4 死锁的预防3.5 死锁的避免一.死锁的例子二.死锁产生的必要因素互斥条件:资源在某一时刻只能被一个线程(进程占用)请求与保持条件:当前进程(线程)因为获取不到想要资源而阻塞,并且也不会释放自己已经拥有的资源。不可剥夺条件:当前进程(线程)已经获得的资源在没有释放的时候,不能被其他进程(线程)强行剥夺。循环等待: 存在一个进程等待队列{P1 , P2 , …
2021-07-16 11:41:05
118
原创 mysql优化
这里写目录标题软优化:sql查询语句的优化:增加冗余字段:增加中间表:设计数据库结构的时候,尽可能遵守三范式。三范式硬件优化:硬件三件套(cpu、内存、磁盘):参数设置:分库分表 + 读写分离:软优化可以简单地从查询sql语句的优化、使用索引、增加中间表三个方面来说;硬优化可以从硬件三件套(cpu、内存、磁盘)、参数设置、以及分库分表 + 读写分离来说。软优化:sql查询语句的优化:覆盖索引:如果在我们建立的索引上就已经有我们需要的字段,就不需要回表了。可以直接通过遍历索引取得数据,而无需读表
2021-07-15 22:41:35
123
原创 mysql索引失效
所有的索引失效的根本原因就是违反了最左匹配原则。如果条件中有or,并且其中的任意一方不是索引的时候就会失效,只有在or的左右双方都是索引的时候才会有用。对于联合索引,如果左边第一个索引没有设置,也会失效like查询以%开头的,也会失效索引中使用了运算或者函数如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引索引字段中使用is null 、is not null 、!=、<>也会导致索引失效...
2021-07-15 22:16:57
112
原创 包装类和基本数据类型的区别
文章目录一. 为什么要有这两个东西二. 二者的区别三.自动装箱和自动拆箱3.1 自动装箱3.2 自动拆箱一. 为什么要有这两个东西在Java中new的对象都是在堆里面的,通过栈来进行引用。包装类是在堆里面,而基本数据类型是在栈里面的,如果我们只想要用到一个数的话,如果在堆上开辟空间的话会很浪费。但是如果我们想要对基本数据类型做一个变更,比如改变其数据类型的话,就需要一些方法,在java中方法都是通过对象进行调用的,这时就需要了包装类。所以,基本数据类型和包装类都很重要。二. 二者的区别声明
2021-07-14 21:59:52
640
原创 MySQL基础
文章目录一.DDL1.1 创建数据库1.2 创建表1.3 查询其字段信息1.4 添加一列1.5 修改某一字段的类型1.6 删除一列1.7 修改表的列名1.8 删除表二. DML一.DDL1.1 创建数据库create database date713;1.2 创建表//先进入一个数据库,如果不进入数据会报错//下面这个是进入数据库use date713;这里就是没有选择数据库而报的错。//创建表create table 表名 (列名1 列的类型 [约束],
2021-07-14 21:06:57
225
原创 HTTP状态码
2×× 表明请求被正常处理了200 ok 表示从客户端发来的请求在服务器端被正常处理了。(正常)204 no content 该状态码代表服务器接收请求已经处理成功,但在返回的响应报文中不含实体的主体成分。(请求处理好了,但是啥也不返回)206 partial content 该状态码表示客户端进行了范围请求,而服务器成功过执行了这部分GET请求。(返回部分资源,范围在Content-Range)3×× 重定向 表示浏览器需要执行某些特殊处理以正确处理请求301 Moved Perma
2021-07-13 19:00:38
117
原创 方法重载和重写的区别
文章目录一、方法重载1.1 参数个数或者类型或者顺序不一样,改变返回值类型1.2 能够在同一个类中或者在一个子类中被重载二、方法重写一、方法重载被重载的方法必须改变参数列表(参数个数或类型或顺序不一样)被重载的方法可以改变返回类型被重载的方法可以改变访问修饰符被重载的方法可以声明新的或更广的必检异常方法能够在同一个类中或者在一个子类中被重载无法以返回值类型作为重载函数的区分标准1.1 参数个数或者类型或者顺序不一样,改变返回值类型//方法重载public class Test1 e
2021-07-02 20:16:43
189
原创 Java中的修饰符
文章目录前言一、public二、private三、protected四、default前言访问的范围从小到大private ---- default ---- protected ---- public一、public对所有类可见。使用对象:类、接口、变量、方法对同一工程下的。二、private在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)范围最小,就自己可见如果想得到其中用private修饰的变量,可以使用get()方法。eg:public cla
2021-07-02 19:53:39
113
原创 原子类解析
原子类首先执行一段代码public class AutoTic { public static void main(String[] args) { TThread t1 = new TThread(); TThread t2 = new TThread(); t1.start(); t2.start(); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Aut
2021-07-02 13:38:07
118
原创 链表实现栈
文章目录前言一、实现思路二、代码前言这里主要实现了栈的push(),pop(),peek(),size()方法一、实现思路首先明确一点栈是先进先出这里需要两个结点,一个是头节点(head),一个是尾节点(tail)不同于链表,这里是尾节点(tail)不动,头节点(head)向前走如下图二、代码public class Stack { Node head = null; Node tail = null; public void push(int data) {
2021-07-01 21:37:43
112
原创 ReentrantLock源码分析
文章目录一. AQS二、总体结构三、加锁3.1 公平锁3.2 tryAcquire(arg) 图解3.3 入队 -> addWaiter(Node.EXCLUSIVE)总结一. AQSReentrantLock是基于AQS实现的,AQS即AbstractQueuedSynchronizer的缩写,这个是个内部实现了两个队列的抽象类,分别是同步队列和条件队列。其中同步队列是一个双向链表,里面储存的是处于等待状态的线程,正在排队等待唤醒去获取锁,条件队列不用管,ReentrantLock里面.
2021-06-30 12:49:00
143
原创 Java中I/O模型
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码
2021-06-25 08:03:29
152
原创 哈希表源码分析
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、动态规划二、思路总结给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。两个字符串的 公共子序列 是这两
2021-06-19 19:32:48
365
原创 剑指 Offer 49. 丑数
文章目录一、思路二、代码我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。说明: 1 是丑数。n 不超过1690。一、思路思路就是:首先,只包含质因子为2,3,5,那就用这个数去乘以2,3,5就行了。让每个从 1到 n的数去乘以{2,3,5},然后给他装到优先队列里面去,优.
2021-05-14 10:23:43
111
原创 二叉树
文章目录一、二叉树是什么二、使用步骤1.引入库2.读入数据总结一、二叉树是什么List item二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarnings('ignore')import sslssl._create_default_htt.
2021-05-13 19:49:09
151
原创 70. 爬楼梯
文章目录一、题目描述二、解题思路三、代码一、题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶二、解题思
2021-05-13 14:54:10
111
原创 98. 验证二叉搜索树
文章目录一、解题思路二、代码一、解题思路用递归,一般二叉树都用递归递归思路就是给每个二叉搜索树中的元素指定一个范围,最开始弄两个最大的 (Long.MAX_VALUE) 和最小的数(Long.MIN_VALUE),这就是根节点的范围,之后到了根节点的左节点,这个值可以无限小,但是其上限应是根节点的值根节点的右节点可以无限大,但其下限应该是根节点的值主要是为了避免以下情况的出现:二、代码class Solution { public boolean isValidBST(Tr
2021-05-13 14:32:51
89
原创 22. 括号生成
文章目录一、题目描述二、递归方法递归思想代码一、题目描述数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["()"] 提示:1 <= n <= 8二、递归方法递归思想递归就是明显的有重复性的问题的时候,并且有明确的终止条件的时候,我们会用到递归。递归递归.
2021-05-13 13:37:27
77
原创 堆排序详解
https://shimo.im/docs/J3KKgvyKjdRc8Qvy/ 《堆排序》,可复制链接后用石墨文档 App 或小程序打开
2021-05-12 10:56:22
339
原创 选择排序
文章目录一、选择排序原理二、代码总结一、选择排序原理很简单,就是从第一个开始遍历数组,然后从第二个遍历,确保每一次遍历之后,该数组元素都是最小的二、代码public class ChooseSort { public static void main(String[] args) { int[] array = { 4, 8, 9, 7, 2, 12, 56, 14 }; for (int i = 0; i < array.length - 1; i++) { fo.
2021-05-12 10:32:05
122
原创 快速排序
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、快排原理二、使用步骤1.引入库2.读入数据总结一、快排原理二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarnings('ignore')import sslssl._c
2021-05-12 09:50:57
118
原创 冒泡排序
文章目录一、冒泡排序算法思想二、代码三.时间复杂度分析一、冒泡排序算法思想首先假设是从小到大排序如下图所示,其算法思想就是要把最大的数像泡泡一样弄到最后面去,就像在水里吹泡泡,泡泡越往上浮肯定是越来越大的。实现方式就是通过交换。但是,我们要清楚,从第一次操作,最后一个数已经是最大的了,所以我们不需要每次都比较所有的数。注:关键就是每遍历一次就要把数组中最大的数放到最后二、代码public class BubbleSort { public static void main(St.
2021-05-11 19:36:59
84
原创 插入排序
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、插入排序过程原理二、代码时间复杂度分析一、插入排序过程原理首先,假设我们是从小到大排序插入排序就是从第二个元素开始,和前面的元素比较大小,如果后面的元素比前面的元素大,就交换位置,一直到前面的元素比本元素要小(找到正确的位置)。就像下面这张图。注:从这张图中可以看出之前的数都是已经排好序的。因为这是从第二个元素开始比较大小的, 前两个元素就可以直接比出来,并且排好序,到了第三个元素的话,面对的就是已经排好序的前两
2021-05-11 19:03:46
251
原创 生产消费者模型
文章目录一、生产者消费者模型是什么?二、代码三、常见面试题说说 sleep() 方法和 wait() 方法区别和共同点为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法一个线程两次调用start()方法会出现什么情况一、生产者消费者模型是什么?其实生产者消费者模型就是线程之间的通信,因为听名字就知道这个模型肯定有两个人,一个是生产者,一个是消费者,生产者一边生产,消费者一边消费。这两个线程同时进行,并且是对同一个物体进行操作,所以涉及到这两个线程的
2021-05-11 16:31:44
204
原创 ArrayList源码分析
ArrayList源码分析文章目录ArrayList源码分析一、定义的变量二、构造方法1.空参构造方法2.传入初始容量的构造方法3.构造一个包含指定集合的元素的列表、定义的变量总结一、定义的变量//初始容量10private static final int DEFAULT_CAPACITY = 10;//一个空的数组private static final Object[] EMPTY_ELEMENTDATA = {};//也是一个空的数组,不同于上面的EMPTY_ELEMENTD
2021-05-11 14:35:32
99
原创 网络编程第三步(搞一个low版的网络画图板)
实现功能,传入颜色,能画多种图形其实,通信的本质基本就是Socket st = new Socket("127.0.0.1",4455);ServerSocket sst = new ServerSocket(4455);sst.accept();只要确保以上代码,那么客户端和服务器端基本就是可以连通的,剩下的基本就是传数据的问题,怎么传,怎么接收的问题。比如本次我是要画一个直线和一个矩形,其实本质就是怎么将直线和矩形的坐标传到客户端而已。客户端代码首先,我们要有一个图形界面,其上面.
2021-01-29 19:22:52
182
原创 网络编程第二部(服务器与客户端双向通信)
之前实现了服务器与客户端的单项通信,现在来实现双向通信,这里其实就是加了一个线程,因为调用read()方法的时候会产生阻塞;所以要调用线程。下面上代码,在代码里有注释。在代码里说明会好一点。客户端代码//这个模块里主要是要显示出客户端界面public class DrawClient { public void showUI() { JFrame jf = new JFrame(); jf.setSize(400, 300); jf.setTitle("客户端 Meetting by
2021-01-29 18:09:00
461
原创 网络编程第一步(实现文本单向传输)
网络编程想要进行网络编程,我们首先要找到要进行通讯的主机,那么如何找到主机呢,就需要ip和端口号,每个主机都有对应的ip地址,找到了ip地址就找到了相应的主机,再在主机上找到对应端口号的程序,通讯就能进行。实现网络通讯,至少需要两个个体,而在我们的程序中,称呼这两个个体为服务器端和客户端。下面用代码来演示:实现的效果:要写一个界面,在客户端发送,服务器端接收//客户端public class DrawClient { public void showUI() { //界面 JF
2021-01-26 18:10:24
318
原创 安卓登陆界面
登陆界面写登录界面之前我们要知道登陆界面都有什么,首先要有用户名和密码,还要有一个确认登陆的按钮;所以,第一步先把大体的框架写出来:输入用户名的组件名称为EditText确认登陆的组件为一个按钮代码为<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schem
2021-01-08 14:47:22
1428
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人