- 博客(40)
- 收藏
- 关注
原创 谈谈对垃圾回收的理解
垃圾回收机制—如何判断对象已死(1)引用计数算法:不能解决循环引起的问题(2)可达性分析算法(Java采用):GC Roots 、 GC Roots引用链。对象到GC Roots不可达时,就是可回收对象。垃圾回收内存划分Minor GC非常频繁,一般回收速度也比较快Major GC的速度一般比Minor GC慢10倍以上Full GC:在不同的语义条件下,对Full GC的定义也不同,有时候指老年代的垃圾回收,有时候指全堆(新生代+老年代)的垃圾回收,有可能指有用户线程暂停(Stop-The-
2020-09-16 02:24:16
639
原创 对类加载的理解
类加载的过程/类的生命周期加载、验证、准备、解析、初始化加载1.通过全限定类名来获取定义此类的二进制字节流2.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构3.在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口验证确定Class文件的字节流中包含的信息符合当前虚拟机的要求,并且不会危害到虚拟机自身的安全准备为类变量分配内存并设置类变量初始值,这些变量所使用的内存都将在方法区中进行分配解析虚拟机将常量池内的符号引用替换为直接
2020-09-15 23:28:01
76
原创 基础IO
IO流的分类网络数据IO本地文件IO特性实质是数据在不同设备见流转只能处理一次(读取操作后的部分就没有了)使用完毕要关闭(反向关闭)类型划分输入/输出:input输入、output输出字节/字符流字节流:字节型二进制数据 Stream字符流:字符型文本数据 Writer输出字符流、Reader输入字符流转换流:字节流和字符流之间需要通过转换流转换 InputStreamReader输入转换、OutputStreamReader输出转换文件流:FilePrintW
2020-09-15 17:37:48
148
原创 操作系统进程和线程初识
前序要了解操作系统首先先了解冯诺依曼计算机体系操作系统应该的就是该体系存储器指的是内存CPU(中央处理器)—控制器、运算器CPU的指令类型(1)逻辑处理:比如程序中逻辑运算符(2)计算型:比如程序中n++(3)数据操作:数据拷贝、IO计算机的运行效率(由快到慢)CPU高速缓存->内存->硬盘->百度网盘操作系统操作系统是一款纯正的搞管理的软件管理的范畴:(1)进程管理:通过一个PCB的结构体来保存进程信息,包括PID(进程启动以后系统分配)、进程名称、进程
2020-09-15 11:43:23
136
原创 搜索相关的算法和数据结构
什么是搜索搜索是在一个元素集合中,找到特定的某个元素的过程搜索相关的算法和数据结构1.遍历搜索插入时间复杂度(顺序表): O(N)删除时间复杂度(顺序表): O(N)查找时间复杂度: O(N)2.二分查找(折半查找)前提条件:元素有序的、支持随机访问的线性结构中插入时间复杂度(顺序表): O(N)删除时间复杂度(顺序表): O(N)查找时间复杂度: O(logN)3.哈希表插入时间复杂度(顺序表): O(1)删除时间复杂度(顺序表): O(1)查找时间复杂度: O(1)4.搜
2020-09-10 02:25:02
180
原创 聊聊HTTP和HTTPS
**HTTP和HTTPS的基本概念**HTTP(HyperText Transfer Protocol):超文本传输协议, 是一个客户端和服务器端请求和应答的标准(TCP), 是互联网上应用最为广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。可以使浏览器更加高效。HTTP协议以明文方式发送内容, 不提供任何方式的数据加密, 如果攻击者截取了Web浏览器和网站服务器之间的传输报文, 就可以直接读懂其中的信息, 因此HTTP协议不适合传输一些敏感信息。HTTPS:是
2020-08-31 18:23:32
501
原创 浅谈对OOP的认识
OPP(Object Oriented Programming):面对对象程序设计OPP的核心思想:封装、继承、多态封装:管理软件复杂程度的一种重要方式, 封装就是一个简单有效让代码变得简单有效的方式.角色主要有两个: 类的设计者(类的实现者) 类的使用者(类的调用者)封装再Java中的体现方式,主要通过 访问权限控制 来完成.public : 修饰的属性或者方法可以被类外部的代码使用private:修饰的属性或者方法,只能在类内部使用不需要用户关注的细节就被隐藏起来了[default]
2020-08-31 02:37:18
283
原创 Session和Cookie
Session会话:我们这里是指某个web系统的会话, 指用户登录以后, 在退出以前, 都是一个会话.退出的条件: 注销或超过系统设置的会话时间Session的作用:用户登录时, 服务器保存用户身份信息(总的数据结构为: Map<String, Map<K, V>). 在之后访问敏感资源时, 通过请求中k = v, 服务端通过k获取v, 在map中获取到用户身份信息(session)通过session, 解决了访问敏感资源,携带用户身份不安全的问题session的实现方式有多种
2020-08-31 01:56:38
124
原创 事务
事务的背景举个小例子准备测试表drop table if exists accout;create table accout( id int primary key auto_increment, name varchar(20) comment '账户名称', money decimal(11,2) comment '金额' ); insert into account(name, money) values ('A',5000), ('B',1000);比如说A要给B转两千元
2020-05-12 17:09:03
240
原创 索引
索引的背景是什么/索引解决了什么问题?在进行数据库查找时避免进行遍历,优化查询速度(降低插入和删除速度)。索引的工作原理索引的底层数据结构是由B+树实现的,例如:B+树是B树的更进一步,B树中非叶子结点可能会存储数据,B+树的非叶子结点只是用来辅助查找。B+树的每一层兄弟节点之间都是相互连通的(类似于链表),遍历起来更方便,尤其是指定区间进行查找的时候。B+树的相关特点1.B+树与哈希表相比它可以实现数据库中的模糊查询情况2.B+树与二叉搜索树相比它的高度更低,查找效率更高3.B+树与B
2020-05-09 18:20:07
119
原创 设计一张图书表
设计一张图书表,包含以下字段:图书名称,图书作者、图书价格、图书分类要想设计一张图书表,数据库的基本操作必须了解显示当前数据库: show databases;创建数据库: create database 数据库名称;使用数据库: use 数据库名称;删除数据库: drop database 数据库名称;表操作需要操作数据库中的表时,需要先使用该数据库:use 需使用数据库名称...
2020-04-23 19:11:57
1742
2
原创 异常的基本用法
异常是什么?异常是程序运行时出现错误之后的一种通知机制Java中的异常有很多种,针对不同种类的异常,可以有不同的处理方式如果在代码中不做任何处理,此时异常就会交给JVM来处理,JVM一般处理的方式就是把程序直接强行终止异常的应用场景 -> 防御式编程LBYL: Look Before You Leap 三思而后行 先进行合法校验,校验通过,再进行实际操作EAFP(推荐): It’...
2020-03-24 00:08:31
225
原创 抽象类和接口的使用特性
抽象类抽象类是一种特殊的类,由于这个类太抽象了,导致这个类无法创建对象抽象类和普通类最主要的区别就是不能实例化从设计的角度上,有些类,本来就不应该被实例化 我们就应该把它设置成抽象类抽象类和抽象方法存在的意义:就是为了不被其他类继承,并重写抽象方法使用抽象类的时候 和继承 多态语法是密切相关的抽象类是一种语法上的校验机制 是为了降低代码出错的概率如果某个地方抽象类,去掉abstrac...
2020-03-19 23:52:53
86
原创 顺序表和链表的比较
顺序表数据保存在连续的内存空间上,支持随机访问根据下标获取\修改元素、尾插、尾删效率比较高(尾插有可能会触发扩容逻辑,这时消耗就比较大,时间复杂度变为(O(1)))如果中间插入和删除,时间复杂度较高(O(N))基本操作的时间复杂度1. 新增元素: O(N) (尾插是O(1),不考虑扩容的情况)2. 查找元素: O(N)3. 根据下标获取/修改元素:O(1)4. 删除元素:O(N...
2020-02-28 00:21:27
240
原创 Java中的类和对象详解
对象 =>Object写代码是为了解决客观生活中的一些“物体”打交道需要先使用代码把现实生活中的物体表示出来 => 对象抽象=>反义词具体现实中的物体可能非常复杂,通过抽象的方式,把显示中复杂的物体变得简单一些C语言的结构体是一种用户自定制类型Java中的类也是一种用户自定制类型,类功能相比于结构体来说要强大很多,“高配结构体”Java中的对象就是某个自定义类型创建出...
2020-01-10 22:58:48
144
原创 单链表(不带环、无傀儡结点)增、删、改、查代码实现和时间复杂度
单链表时间复杂度1.单链表头插/头删和尾插/尾删比较高效,时间复杂度为O(1)2.单链表除上述操作其他时间度都为O(N)注:其中头删和尾删要想实现时间复杂度为O(1)代码需要优化,具体方法就是起始创建一个尾结点每次记录最后数据单链表代码相关代码// 一个节点class Node { public int data; // 数据 public Node next = ...
2020-01-10 20:12:37
385
原创 顺序表增、删、改、插代码实现和时间复杂度
顺序表基本操作的时间复杂度:1. 新增元素: O(N) (尾插是O(1),不考虑扩容的情况)2. 查找元素: O(N)3. 根据下标获取/修改元素:O(1)4. 删除元素:O(N)5. 清除所有元素:O(1)顺序表最主要的特点支持随机访问能力(可以高效的按照下标来操作)尾插的时候效率也比较高(但可能会触发扩容,如果扩容了,开销就比较大了)顺序表增删改查的代码public cla...
2020-01-10 20:02:47
6351
原创 C语言操作符总结
C语言的操作符总共分为10类,它们分别为:1.算术操作符2.移位操作符3.位操作符4.赋值操作符5.单目操作符6.关系操作符7.逻辑操作符8.条件操作符9.逗号表达式10.下标引用、函数调用和结构成员算术操作符 + - * / %使用时注意事项:%运算符的两个操作数必须必须为整数移位操作符<< //左移操作符&...
2019-11-14 23:52:05
125
原创 【C语言】整型提升
什么叫整型提升?C的整形算术运算总是至少以缺省整形类型的精度来进行的。为了获得这个精度,表达式中的字符和短整型操作数再使用之前被转转为普通整型,这种转换称为整型提升。整型提升的意义:表达式的整型运算要在CPU的相应运算器件内执行,CPU内整型运算器(ALU)的操作数的字节长度一般就是int的字节长度,同时也是CPU的通用寄存器的长度。因此,即使两个char类型的相加,在CPU执行时实际上也...
2019-11-14 23:20:41
455
1
原创 【C语言】扫雷小游戏。第一次扫雷不被炸死,若坐标周围没雷则实现展开
实现思路:1.定义两个字符型数组mine 用来存放电脑随机布的雷,show 用来向玩家展示游戏的界面。2.布置雷用rand()随机产生合法的坐标,需要注意的是:例如 rand()%10它产生的随机数是0-9而不是0-10。3.保证第一步 不会被炸死这里我采用指针的方法,在布雷的时候提前设置指针,在第一次遇到雷,用指针改变它。4.排查雷,若坐标周围没雷则实现展开这个目标我认为是最难的...
2019-11-04 20:34:24
292
原创 【C语言】用递归的方式实现二分查找(折半查找)
思路:1.求中间位置2.用data与中间位置的元素进行比较相等,找到了–>返回小于,data可能在[left,right)的左半侧,到左半侧继续二分查找大于,data可能在[left,right)的右半侧,到右半侧继续二分查找代码实现#include<stdio.h>#include<Windows.h>void BinarySearch(int* ...
2019-11-03 15:38:14
1795
原创 【C语言】三子棋游戏
用C语言实现三子棋游戏为了使代码的逻辑清晰易懂,这里采用多文件形式。由main.c game.h game.c三个文件组成。main.c实现游戏的逻辑game.h是函数的声明和头文件的声明game.c是函数的实现代码实现game.h#pragma once#include<stdio.h>#include<Windows.h>#includ...
2019-10-31 23:45:11
156
原创 【C语言】(递归)汉诺塔问题
问题:假设有3根柱子,依次标号为A,B,C ,A柱上从上至下从小到大依次放置着n个圆盘,现需借助B柱将圆盘全部移到C柱上,要求每次只能移动一块圆盘,且不能出现大盘子在小盘子上方的情况。分析:设移动盘子数为n,为了将这n个盘子从A杆移动到C杆,可以做以下三步:(1)以C盘为中介,从A杆将1至n - 1号盘移至B杆;(2)将A杆中剩下的第n号盘移至C杆;(3)以A杆为中介,从B杆将1至n - ...
2019-10-25 23:15:41
220
原创 【C语言】(递归实现)编写一个函数 reverse_string(char * string) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数。
题目: 编写一个函数 reverse_string(char * string)(递归实现)实现:将参数字符串中的字符反向排列。要求:不能使用C函数库中的字符串操作函数。#include<stdio.h>#include<Windows.h>void reverse_string(char arr[]){ if (*arr != '\0') { reve...
2019-10-25 21:57:09
225
原创 【C语言】创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。
题目:创建一个数组,实现函数init()初始化数组、实现empty()清空数组、实现reverse()函数完成数组元素的逆置。要求:自己设计函数的参数,返回值。#include<stdio.h>#include<Windows.h>void Print(int, int);void init(int arr[], int sz){ int i = 0;...
2019-10-21 23:14:27
122
原创 【C语言】在屏幕上打印菱形图案
题目:在屏幕上打印菱形图案如: * *** ***** ******* ********* ************************ *********** ********* ******* ***** *** *分析:这道题需要仔细观察图案的特点,我们可以把它分为上下两个部分,每次打印一行,研究...
2019-10-18 00:34:21
248
原创 【关机程序】如何用代码实现关机
无需借助开始菜单里面的关机键如何用代码实现关机呢?代码实现如下:#include<stdio.h>#include<Windows.h>#pragma warning(disable:4996)int main(){ char hh[32]; system("shutdown -s -t 60 "); while (1) { printf("你的电...
2019-10-17 22:19:49
2850
原创 【C语言】编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出。
题目:编写一个程序,可以一直接收键盘字符如果是小写字符就输出对应的大写字符如果接收的是大写字符,就输出对应的小写字符如果是数字不输出。分析:从键盘接收和输出字符需要用到getchar()和putchar()函数还需了解小写字符比与其相对应的大写字符ASCii值大32。代码实现#include<stdio.h>#include<Windows.h>int m...
2019-10-17 22:13:44
461
原创 【C语言】编写代码模拟三次密码输入的场景,最多能输入三次密码,密码正确,提示“登录成功”, 密码错误, 可以重新输入,最多输入三次,三次均错,则提示退出程序。
题目:3.编写代码模拟三次密码输入的场景。最多能输入三次密码,密码正确,提示“登录成功”, 密码错误,可以重新输入,最多输入三次。三次均错,则提示退出程序。分析:输入三次需要用到循环,但是如何判定密码是否正确呢?在C语言里需要用到strcmp()这个函数,当用到这个函数还需引入#<string.h>头文件。代码实现#include<stdio.h>#incl...
2019-10-17 00:03:02
926
原创 【C语言】运用折半查找实现在整型有序数组中查找想要的数字
题目:写码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回 - 1.问题分析:这里需要用到折半查找的算法,即将中间元素与想查找的值比较,如果大了就将左边的下标赋值为中间元素下标加1;如果小了就将右边的下标赋值为中间元素加1;代码演示 if (x > arr[mid]) { left = mid + 1; } else if (x < ...
2019-10-16 23:54:27
1405
原创 【C语言】完成猜数字游戏
题目:完成猜数字游戏。分析:第一步,首先需要生成菜单第二步,玩游戏难点:如何生成随机数,这里需要生成随机数种子。#include<stdio.h>#include<Windows.h>#pragma warning(disable:4996)#include<time.h>void menu()//菜单{ printf("##########...
2019-10-16 23:39:55
202
1
原创 【C语言】在屏幕上输出以下图案: * *** ***** ******* ********* ***********
题目:在屏幕上输出以下图案:* *** ***** ******* ********* *********** ************* *********** ********* ******* ***** *** * ...
2019-10-13 21:50:48
7626
1
原创 【C语言】编写程序数一下1到100的所有整数中出现多少个数字9正确方法
关于这道题有些博客输出的答案有误错误代码展示 if( i%10 == 9) count++; if( i/10 == 9) count++;这种方法导致99出现了两次最后count的值为20;而正确值应为19。思路分析:1到100之间的数字,9出现有两种情况,第一种在十位,第二种在个位。分别采用整除(i/10)和取余(i%10)实现需要强调的是,这里采用或运算符,它的特点...
2019-10-11 00:06:06
1162
1
原创 【c语言】给定两个整型变量的值,将两个值的内容进行交换的三种方法
#第一种创建临时变量法这种方法是最常用的方法。`#include<stdio.h>#include<Windows.h>#pragma warning(disable:4996)int main(){ int a = 0; int b = 0; printf("请输入a,b的值:"); scanf("%d %d", &a,&b);...
2019-10-06 20:30:52
1012
原创 初次的相遇
我的第一篇博客Hi~ 大家好,关注这个社区已经有一个多月了,在这里见识到了许许多多厉害的大佬,他们的学识与幽默使我敬重,在我内心深处我渴望成为和他们一样优秀的人,切入正题,我是一名来自西安科技大学大二的学生,你肯定以为我是计算机专业的吧,不是啦,我是学数学的哦,但是我对互联网对编程对即将到来的5G充满了兴趣,同时我也看到了自身的渺小,我认为我现在正处于最美的年华,在最美的年华应该做的事当然是努力...
2019-09-27 15:02:15
190
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人