- 博客(25)
- 收藏
- 关注
原创 Java异常体系
程序在运行时期会出现各种突发状况,有的状况可以通过预先设想的方式去处理,但有的情况则会导致该部分代码无法继续运行,有的情况甚至会导致整个程序无法运行,而java给我们提供了异常处理机制,用于处理代码无法继续运行的情况,这就是异常。异常主要是用于解决运行期间问题的,编译期间出现的问题会导致程序无法正常编译,所以在代码生成可执行文件之前就会告警。一、什么是异常异常是指各种在编译期间无法发现的并且在运行时可能会导致程序中断的情况,比如我们最经常见到的空指针异常,数组索引越界异常,类型转换异常等等。这些意外情况
2022-05-22 20:24:53
1094
1
原创 Scanner类常用方法
java中的Scanner类用于读取用户输入,类似于C++中的std::cin,但Scanner类对于不同的数据类型提供了不同的输入方式,在此做个记录。在使用前,需要先实例化Scanner对象,Scanner对象包含于java.util包下package java.util;import java.nio.file.Path;import java.nio.file.Files;import java.util.regex.*;import java.io.*;import java.mat
2021-11-20 23:34:59
1602
原创 Java学习笔记---类和对象
Java是一门纯面向对象的编程语言,在Java中任何事物都会被抽象成类,C++中可以出现全局变量和全局函数,而Java则不可以,本篇博客记录Java如何实现继承与多态。类和对象要实现继承和多态,则需要先有类和对象,这是一种面向对象的编程思维。一、类类是一种抽象出来的类型,比如现实世界中的人、动物都是一种类。...
2021-04-06 22:35:49
154
1
原创 Java学习笔记(一)
本篇博客是Java学习笔记,因为以前只接触过C和C++以及python,对于Java只是略知一点,所以在此对自己学习Java的成果做一些记录。下来大部分内容会以C++和python作为对照来学习Java,因为暂时还是Java小白,所以难免有些疏漏,若有错误还请各位看官指正。一、Java基本了解Java是一门开源、免费、纯面向对象且跨平台的语言,与C和C++不同。1、Java的特性(1)简单性:相对于C++而言,Java没有多继承,屏蔽了指针的概念,所以相对简单,毕竟对于C和C++程序员来说,指针造成
2021-02-22 13:16:22
311
原创 CentOS7下python虚拟环境配置出现的问题
笔者近期在做一个关于Flask的小项目,环境为CentOS7下使用python3.7.2,遇到了一些问题,在此做个笔记。下载python这些不用说,配置虚拟环境的命令为:python -m vebv 虚拟环境名称该命令会在当前目录创建一个包含python解释器环境的虚拟文件夹,名称自定,创建虚拟环境后需要进行虚拟环境的激活:. env/bin/activate当我们需要关闭虚拟环境时使用如下命令:deactivate前几步没啥问题,当在虚拟环境中安装flask时,使用简单的命令怎么
2020-11-20 15:17:50
321
原创 Python扫盲之运行程序的两种模式
Python有两种运行模式,分别为交互模式和批处理模式,批处理模式简单而言就是类似于C和C++中的模式,程序完全编写完成后再点击运行;而交互模式就类似于一问一答的状态,各有千秋,并不能说交互模式鸡肋或者批处理模式繁琐,本篇博客依旧属于扫盲类型,主要说几种编译器下批处理模式和交互模式的使用,算小功能吧,大波图片即将来袭一、Python的IDLE1、交互模式直接选择IDLE打开即可如图进入交互模式交互模式下可以直接运行相应的命令等,如上我就计算了“1+2”的值,以及查看了一些变量的类型2、批处理
2020-10-14 16:19:24
5607
2
原创 python入门
此博客用于扫盲,专业人士没有查看的必要了(狗头)笔者主要学习C/C++,但由于学习的课程大部分是应用数学相关,所以python就不可避免的需要上手,也曾经用python做过两个爬虫的小项目,对python也算略知一二,其实经过一年的对比学习,自己也发现了一些小问题,正巧学习C/C++也累了,现在就稍微对python的使用技巧做一些小的总结吧,或者说是一些小的扫盲点,在学校学习的时候,对于python更多的不是代码的问题,而是环境配置的问题,有时候确实是让人哭笑不得,也没事,就水一篇博客吧,希望能对初学.
2020-10-08 15:55:52
233
2
原创 从存储引擎了解MySQL
存储引擎,是MySQL的数据存取方式,不同的存储引擎对数据有着不同的管理方式,而MySQL中使用较多的两个存储引擎,或者说比较显著的两个存储引擎:MyISAM和InnoDB,对数据有着不同的管理方式,其中InnoDB目前是MySQL的默认存储引擎,进入mysql查看存储引擎如图:接下来我们从这两个存储引擎来剖析一下MySQL的大部分性质。一、索引索引是存储在数据库底层的一种数据结构,它可以使得数据库查询的效率加倍,而MySQL的索引使用的是B+树。1、B+树性质:B+树是一棵多路树,其父节点的
2020-09-01 17:12:49
134
原创 网络编程之三种I/O复用方式
TCP服务器在与客户端完成建立连接,并在完成整个交互过程(完成与服务器多次的收发数据)之后再断开连接,所以在web服务器的代码中,在收发数据时(recv和send上)再加上一个while循环,用于解决同一个客户端的多次收发数据请求。但当多个客户端同时向服务器发出请求时,当前的代码模式依旧无法满足要求,所以引入了I/O复用,可以使程序同时监听多个文件描述符。一、引入I/O复用的原因1.TCP服务器同时要处理监听套接字和链接套接字;2.服务器要同时处理TCP请求和UDP请求等多个请求;3.程序要同时处理
2020-08-02 11:22:12
537
原创 python基础学习之字典
python中的字典类似于C++中的map,用于存储键值对,且无序,它在python中的类型为“dict”,根据这些特点就可以总结出字典的一些特性。一、字典的特性1.由于无序,所以字典不支持索引访问;2.由于len()方法是python中的内置函数,所以字典也支持len()方法;3.字典的键不允许重复,重复时会当做更新操作而不是插入操作,只会保留新值,这些结论会在下面使用代码来验证;4.字典的键只能使用不可变数据类型,所以诸如列表list这种数据类型是不可以作为字典的键的二、字典支持的方法以
2020-05-30 19:02:37
215
原创 关于类的成员方法
在C++中,一个类会有很多的成员方法,可以分为三类:(1)public:公有的,可供用户调用(2)private:私有的,供成员方法自己调用(3)protected:在类的继承中体现;而所有的成员方法除此之外有着不同的属性,比如有些用于更改属性,有些用于读取某个属性的量,来看看他们的不同以及C++标准对它们的应对之策一、this指针二、常成员方法三、静态成员方法四、类成员的初始化列表...
2020-05-16 20:46:14
1442
原创 关于位运算
位运算是对值的各个位进行操作,在前面的博客里关于原码、反码、补码的取值方式等都是对各个数据的位进行操作,C和C++中共有6种位运算符,分为两类:(1)移位运算符(2)逻辑按位运算符,在这里简单整理一下关于位运算的知识。一、移位运算符移位运算符分两个,左移运算符和右移运算符:左移运算符:<<左移运算符的语法为:val<<shift:其中val是要被操作的数值,shift是要移动的位数。这里以13为例。例如对13进行左移3位,因为位运算符都是对数据的位进行操作,所以我们需要先将
2020-05-12 18:52:15
465
原创 C++类对象背后调用的方法
我们都知道类的设计是C++的基本思想,面向对象设计的重点就是如何将一个实体抽象成一个类,并定义它的成员方法来实现它的各种行为,定义它的成员变量来描述它的各种属性,这些都是C++最基础的东西,不再赘述,这篇博客主要是来说明C++的一个类应该具有的最基础的成员方法,也是最通用的方法。...
2020-05-07 19:05:22
1003
原创 Makefile基础简介
我们做一个项目会写很多文件,Windows平台上我们有IDE去执行所有操作,而在Linux平台上去做一个项目的话他的文件可能不在同一位置,此时使用gdb就不会那么方便了,所以我们需要添加一个Makefile文件,来执行文件的自动编译,Makefile文件带来的好处就是“自动化编译”,所以本篇博客简要介绍Makefile文件如何编写,并使用Makefile文件来提高软件开发效率。一、代码文件同样...
2020-05-03 13:05:44
306
原创 gdb调试工具基础
在windows平台下我们有IDE可以调试代码,而在Linux平台下我们则使用gdb工具来调试代码,相对于windows平台的调试工具当然是比较繁琐,要使用各种命令去实现我们的调试,但作为一个开发平台,Linux平台下的调试我们是必须要掌握的,在此做一个小的总结。...
2020-05-01 17:11:19
165
原创 掌握C和C++的区别
在学习C++之前,一般都会学习C语言作为基础,但这两类语言除了设计理念不同以外(C语言面向过程,C++面向对象),在语法上也是有些不同的。一、形参带默认值的函数在C语言中,函数的形参是不能带默认值的,而在C++中,我们经常可以看到函数中带着默认值,一般在类的构造函数中就会给定一些默认值。但在给定参数默认值的时候有以下限制:1.默认值需要从右往左给,语法规定不能跳跃传实参。2.当对函数参数给...
2020-05-01 11:42:11
159
原创 C/C++程序编译链接原理(3)----从编译器角度
一段代码在编译器上是如何生成可执行文件的呢,从编译器角度看,生成可执行文件需要经过的阶段有四个:预编译、编译、汇编、链接,在这四个过程中所做的工作各不相同,在gcc和g++编译器下我们也可以逐步执行来看下每个阶段的生成文件。下来以两段代码共同链接生成可执行文件的过程来详细说明://main.cpp//引用sum.cpp文件里定义的全局变量以及函数#define max 20extern ...
2020-04-29 22:17:03
244
原创 从操作系统角度了解进程虚拟地址空间
在看《程序员自我修养》的第一章时,较为详细的解释了为什么要使用进程虚拟地址空间这一方法,关于进程的虚拟地址空间可以查看我的这个博客:进程的虚拟地址空间,而书中也关联了一些操作系统的知识,随手一记。一、简单内存分配策略早期的计算机中程序是直接运行在物理内存上的,直接访问物理地址,例如:有两个进程,A程序需要占用10MB内存,B程序需要占用100MB的内存,而我们的内存是128MB,看起来貌似是没...
2020-04-29 13:34:45
340
原创 关于预编译指令
在看源码时经常会遇到很多“#”后面跟着的指令,而且在写代码的时候也会使用“#”来引入头文件,见的挺多的但是不知道“#”代表的的是什么含义,尤其是看源码时,“#”更是多的让人头疼,所以查了一下关于C/C++的预编译指令,自己总结了一下,后续的博客也会使用到这一部分的内容。一、#include这就是我们最常使用的形式了,用于引入头文件,不过也有两种用法,也啰嗦的说一下吧#include<c...
2020-04-23 10:02:14
368
原创 NGINX内存池C代码移植项目
nginx是一个高性能的HTTP和反向代理web服务器,是由伊戈尔·塞索耶夫为俄罗斯网站开发的,是一个开源的软件,底层由C语言编写完成,但经过提炼后,是可以将其按照面向对象的思想重新组织一下的,也相当于一个小项目吧。涉及思路是将源文件中的几个主要函数实现成为类的成员方法,成员变量则只设置一个内存池对象即可。因为nginx内存池的结构比较复杂,涉及很多网络相关的东西,我们在本地编译器上对这些变量做...
2020-04-22 09:36:06
311
原创 C/C++程序编译链接原理(2)----从汇编指令了解程序的运行过程
首先给出下面一段代码,本篇我将通过这部分代码的汇编指令来说明一段代码时怎样运行的。#include<iostream>using namespace std;int sum(int a, int b){ int temp = 0; temp = a + b; return temp;}int main(){ int a = 10; int b = 20;...
2020-04-04 19:27:56
250
原创 C/C++程序编译链接原理(1)
一段代码在我们点击编译器上的执行后形成可执行文件,此时的可执行文件是存放在磁盘上的,在可执行文件执行时则会加载到内存上运行,而可执行文件也并非直接加载到内存,而是通过虚拟地址空间的映射而执行加载操作,在X86体系、32位linux环境下程序的虚拟地址空间大小为2^32字节(即4GB),我们基于这个情况来进行分析。...
2020-04-02 15:53:28
267
原创 关于C语言变量
对很多初学者来说,C语言的变量很多时候也只是使用,而不知道他们的范围,毕竟C语言中给出了多个变量的类型,并不是像现实生活中只区分为整数、小数等简单的集合,下来就简要的说一下C语言中的变量类型以及其所涉及的一些小问题。一、变量类型C语言中提供了字符型、整型浮点型等基本的数据类型,下面以表格的形式介绍各个变量变量类型占用字节数bool一字节(但只占一个bit)char...
2020-04-01 22:14:15
471
原创 网络编程---Linux环境下TCP服务器与客户端代码仿写
在对TCP服务器与客户端的工作原理进行剖析后,又进一步了解了网络编程需要的函数等,为了更深的熟悉TCP数据交互流程,于是在Linux环境下对其代码进行仿写。在编写程序前对其涉及到的一些知识进行一个了解。然后再贴代码。一、字节序与地址结构1.字节序分为主机字节序和网络字节序,由于主机字节序有大端和小端两种模式,不同的主机使用的模式不一定相同;而网络字节序是大端模式,所以在传输中需要将主机字节序转...
2020-03-03 20:06:16
264
原创 网络数据传输流程
TCP协议(传输控制协议)是一种面向链接的、可靠的基于字节流的传输通信协议,在网络编程中是不能不了解的重要角色。下面将简单介绍一下在TCP编程中需要知道的知识,然后再上最重要的:代码。一、网络数据传输流程假设主机A向主机B发送一个"Hello World"字符串。这个字符串将经过以下几个阶段由主机A辗转到达主机B。1.在主机A上的操作—封装(1)主机A将"Hello World"发送到应用...
2020-03-03 15:04:14
442
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人