- 博客(35)
- 收藏
- 关注
原创 2019 蓝桥杯答案详解
1、平方和 小明对数位中含有 2、0、1、9 的数字很感兴趣,在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574,平方和是 14362。注意,平方和是指将每个数分别平方后求和。请问,在 1 到 2019 中,所有这样的数的平方和是多少?暴力求解或使用contain()判断public class Test1 { public static v
2022-04-12 16:28:31
546
原创 HashMap安全容器
HashMap->数组+链表/红黑树负载因子(加载因子)0.75 尽量皮面哈希冲突所带来的的性能开销问题,以空间换取当大于16*0.75时进行扩容出现死循环是因为1.7下transfer() 是头插法1.7将ConcurrentHashMap分成几个segment 进行加锁(悲观锁)1.8优化 读时不加锁,写加锁,使用大量CAS volatile等乐观锁HashTable 给put() 整体加锁,HashMap ConcurrentHashMap HashTable 区别[面试]:
2021-07-29 17:05:57
193
原创 juc下常见的类
juc(java.util.concurrent)下常见的类:ReentrantLock①lock写在try之前,不然释放锁会有问题;②使用Lock之后一定要记得在finally里面unlock();Semaphore信号量(来控制锁的数量)使用场景:秒杀系统 停车管理semaphore.acquire(); 尝试获取锁semaphore.release(); 释放锁CountDownLatch计数器,用来保障一组线程同时完成某个操作后,才能进行下一步操作①线程数量不满足它数量时,执行
2021-07-29 17:04:39
267
原创 多线程面试问题总结
start和run之间的区别线程的状态1、NEW2、RUNNABLE(RUNNING/ READY)3、WAITING4、TIMED_WAITING5、BLOCKED6、TERMINATED线程不安全的五个因素:1、CPU抢占式执行2、内存可见性(volatile可解决,操作完成时强制删除工作内存)3、指令重排序(编译器优化)4、原子性5、多线程同时修改同一个变量线程安全问题解决方案1、锁(让线程排队执行)–synchronized实现原理2、私有变量synchronize
2021-05-25 19:04:02
174
原创 线程池知识总结
线程池的六种创建方式:创建固定的线程池(任务数趋向无限大,建议谨慎使用);Executors.newFixedThreadPool:创建一个固定大小的线程池,可控制并发的线程数,超出的线程会在队列中等待;创建带缓存的线程池newCachedThreadPool(根据任务额数量成成对应的线程数,适用短期大量任务)Executors.newCachedThreadPool:创建一个可缓存的线程池,若线程数超过处理所需,缓存一段时间后会回收,若线程数不够,则新建线程;创建可以执行定时任
2021-05-24 17:14:54
160
原创 anaconda常用命令
1.查看版本conda --version2.检测已经安装的环境:conda info --envs3.创建虚拟环境:conda create --name[虚拟环境名称和所需] 例如conda create --name myenv pytohon=2.7 numpy scipy4.激活新建的环境:activate 环境名
2021-05-14 11:07:26
87
原创 Python爬取豆瓣Top250并存储至mysql数据库
步骤:安装 pymysql库连接数据库初始化数据库和表将爬取的数据存入数据库的表老师使用的是SQLite 我自己改用成了mysql----教程来自B站李巍老师的视频# 将爬取下来的数据存入mysql数据库def savaDataDB(datalist): init_db("movie250.db") conn = pymysql.connect( host='localhost', user='root', password
2021-04-27 22:58:04
1100
2
原创 普通代码块,构造方法,父类构造方法,静态代码块的执行顺序
普通代码块:类中方法的方法体,普通代码块和一般语句的执行顺序由他们在代码中出现的次序决定,先出现先执行。构造代码块:构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数。如果存在多个构造代码块,执行顺序由他们在代码中出现的次序决定,先出现先执行。静态代码块:用static{}包裹起来的代码片段,只会执行一次。由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行,优先于构造块执行。在非静态代码块之前执行。如果类中包含多个静态代码块,那么将按照"先定.
2021-04-25 19:02:49
508
原创 给定以下方法声明,调用执行 mystery(1234) 的输出结果?
给定以下方法声明,调用执行 mystery(1234) 的输出结果?(43211234)//precondition: x >=0public void mystery (int x) { System.out.print(x % 10); if ((x / 10) != 0){ mystery(x / 10); } System.out.print(x % 10);}下列关于继承的描述正确的是(C )A:函数的出口应该尽可能少,最好只有一个出口B:为了防止程序中.
2021-04-23 16:42:38
882
原创 UDP协议为什么是不稳定的
UDP协议特点检验和:判断数据是否有效,保证了数据的安全性,用来确定数据在传输过程中是否已被篡改、数据完整性,加密方式有多种,例如md5。如果UDP编程的时候的数据大于64kb 会怎么样?1、在应用层进行数据包的拆分和组合。2、 大于64KB 时不处理,会交给TCP/IP协议去处理,在网络层进行分包和组包,但是这种方式不用,容易丢包,一旦丢包便整体舍弃,及其不稳定。基于UDP实现的协议DNS、NFS、...
2021-04-20 19:08:38
987
原创 总结TCP协议的八大特性
TCP全称为 “传输控制协议(Transmission Control Protocol”)。TCP协议段格式:URG:紧急指针ACK:是否确认应答消息PSH:是否立即从缓冲区取走数据RST:复位标识SYN:同步序列号标识(TCP连接时使用)FIN:结束序列号标识(TCP断开时使用)16位窗口----不是滑动窗口的大小,滑动窗口的大小是固定的,他是用来记录接受缓冲区的大小,如果大小为0,就不会发送数据了。以此达到流量控制。TCP特性确认应答ACK机制;(保证TCP稳定性最核心的机制
2021-04-18 15:05:57
3990
原创 面试重点之网络原理
会定期整理一些面试重点以及自己的理解,请大佬指正:OSI 7层模型7.应用层: 针对特定应用6.表示层: 数据格式和网络标准数据格式的转换5.会话层: 管理会话,建立和断开链接4.传输层: 数据传输,管理原地址和目标地址3.网络层: 运输路线管理与路由选择2.数据链路层: 进行相邻结点的数据传输1.物理层: 电信号和光信号 使用网购举例:传输层来管理卖家买家的详细地址,网络层来确定快递运输使用的交通工具,网络层来确定
2021-04-13 22:36:27
202
原创 在浏览器输入URL后如何获取我们所需要的界面(资源)?
输入url后,我们向服务器发送请求,将我们自己的信息以及想要请求到的信息打包发送给服务器,也就是我是谁以及我想找什么的过程,以http:为例,我们通过IP地址请求资源,在这里我们输入的是百度的域名信息,(为了方便好记忆,不然)服务器呢有个小助手会帮我们将url内的域名信息映射到ip地址,...
2021-03-25 16:02:37
791
6
原创 Java中创建String类型变量后,变量的内存使用情况
字符串创建的三种方式:String str1 =“hello”;String str2=new String(“hello”);char[] value = {‘h’,‘e’,‘l’,‘l’,‘o’};String str3=new String(value); 三种创建方式在内存中开辟的空间是不一样的,每次new一个对象,就会在内存中开辟一个空间;第一种方式是在堆上的字符串常量池放入"hello" ,str1.
2021-01-19 16:26:20
332
1
原创 Java初学者如何利用类和对象、封装继承多态以及接口等知识从无到有写一个简易的系统?
1、找对象:首先我们要分析系统需求,从中摘要出你所需要的对象。2、创建对象:根据需求理出每一个对象需要的功能,其中包括成员属性以及方法。封装,然后提供访问方法,也包括创建构造方法。每一个文件里只有一个public方法,最好一个文件里只写一个class。其中还包括一些类和接口的继承,抽象方法接口的使用以及实现。3、使用对象:整理对象之间的关系,通过搭建整体逻辑将他们整合使用,逐个实现你想实现的功能。...
2021-01-18 17:27:51
158
原创 Java的三大特性之封装,继承与多态
封装 封装(Encapsulation)是把过程和数据包围起来,对数据的访问只能通过已定义的接口。通过建立这样一个保护屏障,来控制对程序数据访问和修改的程度,也更加便于理解和维护,体现了Java的安全性。 我们使用 private 封装属性, 并提供 public 方法供类的调用者使用,从而实现封装。由于Person类里面的成员变量为private 私有的,所以在TestDemo这个类里面就.
2021-01-18 15:18:22
138
原创 常见的接口实例
我们知道,在Java中一个类只能继承(extends)一个父类,但是一个类的实现可以包含多种多样的功能,仅仅通过继承一个类是不能实现用户需求的。所以Java引入了接口这个概念。我们可以通过实现(implements)多个接口,来丰富我们的类,让程序猿忘记类型, 有了接口之后,类的使用者就不必关注具体类型, 而只关注某个类是否具备某种能力。Interface – 接口 &nb
2021-01-18 15:14:37
2593
原创 this与super到底是什么牛马?该如何使用?
this表示当前对象,将右值name 赋值给当前对象的name成员。public Animal(String name) { this.name = name;} 子类代码中由于使用了重写机制, 调用到的都是子类的方法. 但如果需要在子类内部调用父类方法,我们可以使用 super 关键字.super 表示获取到父类实例的引用。super 的俩种常见用法:调用父类构造方法‘ pub
2021-01-17 20:41:02
129
原创 类的成员可以包括什么?
类和对象可以说是一个抽象与具体的例子吧,将一个具有共同属性的集合高度概括为一个抽象的“类(Class)”,在创建一个Class后可以将它实例化为许多具体的“对象”。我们借用类和对象来实现我们所需要的功能。创建类以及实例化对象的基本语法如下:// 创建类class <class_name>{ field;//成员属性 method;//成员方法}// 实例化对象<class_name&g
2020-12-27 22:26:25
7804
原创 什么是方法?方法调用在内存中经历了怎样的过程?
方法方法就是一个代码片段. 类似于 C 语言中的 “函数”.但是Java里面没有函数声明这个概念,放在主函数前面或后面都可以;方法存在的意义有以下几点:是能够模块化的组织代码(当代码规模比较复杂的时候).做到代码被重复使用, 一份代码可以在多个位置使用.让代码更好理解更简单.直接调用现有方法开发, 不必重复造轮子.基本语法// 方法定义public static 方法返回值 方法名称([参数类型 形参 ...]){ 方法体代码; [return 返回值];//可有可无}/
2020-12-06 20:55:23
215
原创 java(结构)流程控制----顺序 分支 循环
顺序结构 比较简单. 像我们之前写过的代码就是顺序结构的, 按照代码书写的顺序一行一行执行,如果调整代码的书写顺序, 则执行顺序也发生变化。分支结构if语句 基本结构如下,可支持嵌套if(布尔表达式){//条件满足时执行代码}else{//条件不满足时执行代码}要注意:悬垂else的陷阱, else 是和最接近的 if 匹配,所以一定要注意{ }的添加switch语句 基本结构如下,可支持嵌套switch(整数|
2020-12-06 18:47:33
123
原创 运算符优先级口诀
运算符优先级优先级运算符备注类型1( ) [ ]优先级最高括号2! + - ~ ++ - -需要区分清楚 前置自增 和 后置自增之间的区别单目3* / %% 表示取余, 不仅仅可以对 int 求模, 也能对 double 来求模算数4+ -区分正负号和加减号算数5<< >> >>>移位运算符见如下详情移位单目6< <= >= >判断大小,返回值
2020-12-06 11:09:59
492
原创 数据类型和类型的转换与提升
写在前面:啦啦啦开始系统的学习java啦,会记录很多小知识点,加油加油。变量和类型 :我们都知道,变量是程序在运行时,开辟一块内存空间来保存数据的可变的量,不同的变量有不同的类型,主要概括为如下的类型,当然还有一部分有待完善。在数据类型上,java语言与C中的不同:java吸收了C++语言(也就是C语言的继承语言)的优点,同时摒弃了一些概念。在以上数据类型中有些与C不同的地方:1、在C语言中int类型在不同的编译器上所占的字节大小是不一样的,但是在java中是固定的;2、在C语言中char类型
2020-12-03 20:56:11
214
原创 C-文件操作
文件类型二进制文件数据在内存中以二进制形式存储,不加转换输出到外存就是二进制文件文本文件需要在存储前转换为ASCII形式存储的文件就是文本文件数据文件的内容不是程序而是程序运行时候读写的数据。文件存储字符在内存中以ASCII码形式存储,数值型数据既可以用ASCII形式存储,也可以使用二进制形式存储。例如一个十进制整数10000,以ASCII形式存储,占用5个字节(每个字符都占一个字节),以二进制形式存储则只占4个字节。如下图:文件打开关闭文件在使用时用fopen函数
2020-11-23 17:42:36
117
原创 C文件的编译过程是怎样的?
编译过程:一个源文件到可执行程序的历程:define定义标识符:举个栗子:#define PI 3.1415 使用#define定义一个标识符来表示一个常量,可以做到“一改全改”,减少工作量,一般与#include写在一起,都在函数的外面,在源文件进行预编译的时候就将这个临时的符号PI全部替换为3.1415,当需要改变这个常量的值时,就不需要对整个程序一个一个进行修改,只需修改宏定义中的常量即可。且当常量比较长时,使用宏就可以用
2020-11-15 17:50:12
350
原创 图文解读结构体内存对齐
结构体内存对齐1、内存对其的规则:第一步:第一个成员存储在结构体变量偏移量为0的地址,也就是直接放置。第二步:存储下一个成员时,其地址要是对齐数的整数倍;也就是说中间可能是不存储变量的。最后一步:结构体成员变量存储完毕后要检查:结构体总体的大小是成员最大对齐数的整数倍。① 对齐数=min{编译器默认的对齐数,申请内存成员的大小} ;所以每个成员都有自己的对齐数。② 在VS中的默认对齐数为8;③ 在嵌套结构体中,嵌套的结构体对齐到自身成员的最大对齐数的整数倍,结构体整体大小是所有对齐数之中最大
2020-10-28 20:40:04
182
原创 C语言----关于memcpy、memmove模拟实现
memcpy1、void *memcpy(void *destin, void *source,size_t num);2、#include <string.h>3、正序拷贝4、函数与到\0 不会停下来;5、source 和destination有重叠,那么结果都是未定义的;char *str_dst = (char *)dst;char *str_src = (char *)src;此处为强制转换,可以转换成任意类型,因为void*不可以解引用也不可以做相应的++或者–运.
2020-10-27 21:38:48
105
原创 C语言----关于strlen,strcpy,strcat,strcmp的模拟实现
标准库string.h的内置函数的模拟实现1、strlen 2、strcpy 3、strcat 4、strcmpstrlen函数描述:C 库函数 size_t strlen(const char *s
2020-10-21 20:22:31
251
原创 encode&decode Python里的编码与解码
在python3中str类型存储unicode数据,bytes类型储存二进制bytes数据。编码就是将人类所熟悉的明文编码成计算机存储的二进制格式。其中unicode是万国码,可以表达覆盖各国所有符号,是一种国际标准的编码准则。 当我们在pycharm内保存一个文件时,文件的内容会被以pycharm默认的编码方式对文件
2020-10-18 10:13:39
224
原创 面试题 : sizeof()、strlen() 与 指针、数组的结合题型
区别sizeofstrlen运算符函数参数可以是变量也可以是一种类型strlen(char*)不检查越界情况参数类型需要对应用来计算该变量或者类型所占内存大小是用来计算字符串的长度,不是类型占内存的大小包含于头文件string.h( C )或cstring(C++), 从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符’\0’为止,然后返回计数器值(长度不包含’\0’)。strle.
2020-10-17 15:55:06
363
原创 三子棋小游戏的问题分解+程序实现总结
三子棋问题描述:用“井”字分出3×3的格子,玩家与电脑双方轮流下棋子(可以用*和#来区别),只要一方的棋子连成直线就是赢家。游戏流程① 游戏菜单:函数打印菜单,玩家选择;② 根据玩家的输入开始并打印棋盘 / 退出游戏;③ 玩家先手下棋 * ,电脑后手 # ;④ 直至棋盘下满,判断输赢。以上总结为菜单选择、玩游戏、以及判定游戏结果三个部分。3. 问题分解 主程序为test.c,main函数调
2020-09-19 17:45:25
314
原创 扫雷小游戏框架总结
扫雷游戏描述:用“井”字分出3×3的格子,玩家与电脑双方轮流下棋子(可以用*和#来区别),只要一方的棋子连成直线就是赢家。游戏流程① 游戏菜单:函数打印菜单,玩家选择;② 根据玩家的输入开始并打印棋盘 / 退出游戏;③ 玩家先手下棋 * ,电脑后手 # ;④ 直至棋盘下满,判断输赢。以上总结为菜单选择、玩游戏、以及判定游戏结果三个部分。3. 问题分解 主程序为test.c主逻辑int
2020-09-19 17:06:47
323
1
原创 一文读懂strlen()和sizeof()的区别
/0是结束符,不算内容,长度是随机值,内容也随机sizeof() 计算所占空间大小和‘/0’strlen()//函数用来计算字符串的长度,’/0’结束`我们用一下代码举个栗子:#include <stdio.h>#include <string.h> //使用strlen()int main(){ char arr1[]="hello"; char arr2[]={'h','e','l','l','o'}; printf(strlen(arr1)); pri
2020-08-09 15:44:10
153
原创 日常碎碎念
都说,种一棵树最好的时间是十年前,其次就是现在;编程也是。要跟随大佬们的步伐,付出时间和精力,为以后的学习和工作生活打下基础,慢慢进步吧!通过一点一点的学习,不断总结吸收知识,并且加以应用,会更好的。欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器
2020-08-08 14:00:46
95
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人