- 博客(75)
- 收藏
- 关注
原创 Java中的多线程编程2
多线程是一个独立的执行流,解决并发编程这样的问题(虽然进程也能行,但是不如线程更轻量)上面说的“就绪”和“阻塞”都是针对系统层面上的线程的状态(PCB)在java中Thread类,对于线程的状态又进一步细化了把Thread对象创建好了,但是还没有调用start操作系统的线程已经执行完毕,销毁了但是Thread对象还在以上两个状态,是java内部搞出来的状态。就和操作系统PCB没有任何关系。
2024-07-15 14:20:48 768
原创 Java中的多线程编程1
上节课内容回顾进程, 进程调度, PCB结构,进程的虚拟空间地址,进程间的通信多线程仍然是最主流最常见的一种并发编程的方式Java中如何进行多线程编程;在Java标准库中,就提供了一个Thread类来表示操作线程Thread可以视为Java标准库提供的API创建好的Thread实例,其实和操作系统的线程是一一对应的关系,操作系统提供了一组关于线程的API(C语言风格)Java对于这组API进一步封装,就成了Thread类。
2024-07-15 12:09:57 616
原创 【日志消息类的编写】
这个类的实现就是:什么时间,哪个线程,哪个文件的哪一行,发生了什么等级的日志,日志机器名字是什么,日志的消息。由于上篇的代码比较简单,今天就多写两段代码顺便把日志消息类编写完成。日志消息类也就编写完成了。
2024-06-27 17:12:31 210
原创 【日志等级类编写】
我们使用的时候传入的是一个等级,我们需要将它转换为字符串。这篇文章接着上篇文章,继续来完成日志系统。在一个日志文件当中,有各种各样的等级日志。
2024-06-27 16:58:27 248
原创 【工具类的编写】
最近在写一个C++的项目,发现编写项目的过程真是曲折,所以写通过博客方式来对本项目进行一个重新的梳理。以便于自己来更好的了解这个项目。
2024-06-24 17:18:51 328
原创 【Linux】网络基础2
站在应用层的角度看到的是一连串的数字应用程序看到这一连串的字节数据,就不知道那个部分开始啊到那个部分,是一个完整的数据报。这通常用于临时性的重定向,例如当一个网页被移到了新的URL上时,服务器可以返回302状态码和新的URL,以便客户端自动跳转到新的URL。找到一个最小的时间,保证“确认应答一定能在这个时间内返回”,但是这个事件段的长短,随着网络环境的不同也是有差异的。如果设置的时间太长,会影响整体的重传效率,如果设置的时间太短,有可能频繁发送重复的包。接收端处理数据的速度是有限的,如果发送端发送的太快。
2023-08-11 19:54:27 2226 16
原创 【Linux】网络编程套接字
是把返回结果放到了静态区,这个时候不需要手动释放。如果多次调用,会覆盖掉上一次的值。声明socket fd处于监听状态,并且允许多个客户端来连接等待状态。不管这台主机是大端还是小端,就需要先将数据转换为大端字节序。TCP由于是全双工的,所以初始化工作一共有五步。三次握手完成后,调用服务器连接,客户端需要调用这个函数连接服务器。TCP 简单的客户端。
2023-08-10 14:34:04 656 7
原创 【Linux】网络基础1
局域网任何时刻只允许一个人向局域网中发送消息,任何人要通信都要有一个唯一的标识符,对于计算机来说每台计算机都配有网卡。软件分层之后,每一层只关注自己同层的功能,只使用下层的接口,任何一层出现问题都不会影响到下一层,大大减少开发者的维护成本。计算机生产的厂商很多,计算机的操作系统也很多,计算机的网络硬件也很多。MAC地址是用来识别数据链路层中的相邻的节点,在网卡出厂时就已经确定了并且不能修改,mac地址是唯一的。它的最大优点是将服务、接口、协议三个概念明显的区分开来,但是它复杂又不实用,所以一般都谈。
2023-08-09 14:07:12 295 2
原创 【动态规划】子序列系列
最长递增子序列、摆动序列、最长递增子序列的个数、最长数链对、最长定差子序列、最长的斐波那契子序列的长度、最长等差子序列、等差数列划分 ||
2023-07-31 23:38:41 554 20
原创 【动态规划】子数组系列
最大子数组和、环形子数组的最大和、乘积最大子数组、乘积为正数的最长子数组的长度、等差数列化划分、最长湍流子数组、单词拆分、环形字符串中唯一的子字符串
2023-07-30 13:46:47 424 12
原创 【C++】C++11
在C++11之前,涉及到多线程的问题,都是和平台相关的。window和Linux都有自己的接口,这就让代码的移植性比较差。C++11当中最重要的特性就是对线程进行了支持,使C++在编程时不需要依赖第三方库注意:线程是操作系统中的概念,线程对象可以关联一个线程,用来控制线程以及获取线程的状态当创建一个线程时, 没有提供线程函数,该对象实际没有对应任何线程当创建一个线程对象后,并且线程关联线程函数,这个线程就被启动。与主线程一起运行。函数指针lambda表达式函数对象。
2023-07-20 20:52:31 141 10
原创 【数据结构】红黑树
public :在节点的定义当中,为什么将节点的默认颜色给为红色?通过把新插入的节点默认为红色,可以较快地满足红黑树的性质,并且减少了插入操作时需要进行的旋转操作次数,提高了插入操作的效率。同时,红色节点相对于黑色节点来说,占用的存储空间更小,节省了内存空间。因此,在红黑树中,默认将节点的颜色给为红色。
2023-07-08 18:16:29 691 16
原创 【数据结构】map和set
这四种容器的共同特点是:使用平衡搜索树(即红黑树)作为底层,容器中的元素是一个有序的序列。注意:multimap与map唯一不同的是:map当中的key是唯一的,但是multimap当中的值是可以重复的。也是用来存储数据的,但是里面存储的是结构的键值对。因为底层是线性序列的数据结构,里面存储的是元素本身。Alloc:set当中元素空间的管理方式,使用STL提供的空间适配器来管理。key代表的是键值,value表示与key对应的信息。剩下的操作文档当中,都有显示,使用的时候查看即可。
2023-07-08 11:07:24 632
原创 【数据结构】二叉树经典题目
二叉树创建字符串、二叉树的层序遍历、二叉树的最近公共祖先、二叉搜索树与双向链表、前序与中序构造二叉树、二叉树的三种非递归遍历方法
2023-06-14 21:32:13 1092 13
原创 【C++】多态
多态是在不同继承关系的类对象,去调用同一个函数,产生了不同的行为。比如Student对象继承Person。Person对象买票全价,Student对象买票半价在继承中要构成多态还有两个条件必须通过基类的指针或者引用调用虚函数被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写在虚函数的后面加上=0这个虚函数表示纯虚函数。**包含纯虚函数的类叫做抽象类(也叫作接口类),抽象类不能实例化出对象)派生类继承后也不能实例化出对象,只有重写纯虚函数,派生类才能实例化出对象。
2023-05-22 20:37:26 906 15
原创 【Linux】基础IO
系统文件IO,接口的介绍,open函数返回值、文件描述符、文件描述符的分配规则,使用dup2函数实现系统调用、FILE
2023-04-05 10:34:38 1208 17
原创 【Java】Mybatis查询数据库
使用${}可以实现排序查询,而是用#{}就不能实现排序查询,因为当使用#{}查询时,如果传递的值为String则会加引号,就会导致SQL错误。经过前面的学习Spring系列的操作已经差不多了,接下来我们继续学习更加重要的知识,将前端传递的参数存储起来,或者查询数据库里面的数据。也就是说使用MyBatis可以像操作对象一样操作数据库中的表,可以实现对象和数据表之间的转换,我们接下来看看MyBatis的使用。在多表查询的时候,如果使用resultMap标签,在一个类中包含了另一个对象是查询不出来包含的对象的。
2023-03-07 23:16:29 6153 58
原创 【Java】Spring MVC程序开发
Spring Web MVC是基于Servlet API构建的原始Web框架,从一开始就包含在Spring框架中。它的正式名称是“Spring Web MVC”来自其原模块的名称,但是它通常被称为“Spring MVC”Spring MVC 是一个Web框架Spring MVC 是基于Servlet API构建的然而要真正的搞懂Spring MVC?我们要先理解什么是MVC?
2023-03-04 20:05:38 9058 73
原创 【C++】模板初阶
template < class T1 , class T2 , . . . , class Tn > class 类模板名 {// 类内成员定义 };
2023-03-03 20:04:43 820 27
原创 【Java】Spring Boot 日志文件
日志是程序员中的重要组成部分,使用日志可以快速的发现和定位问题,Spring Boot提供了日志框架,默认情况下使用的是info日志级别将日志输出到控制台的。我们可以通过lombok提供的@Slf4j注解和log对象快速的打印自定义日志,日志包含了6个级别:- trace:微量,少许的意思,级别最低- debug:需要调试的时候的关键信息打印- info:普通的打印信息- warn:警告,不影响使用,但需要注意的问题- error:错误信息,级别较高的错误日志信息- fatal:致命的,因为代
2023-03-01 23:00:00 4427 61
原创 【Java】Spring Boot项目的创建和使用
Spring Boot是为了快速开发Spring而诞生的,- 快速继承框架,SpringBoot提供了启动添加依赖的功能,用于秒级继承各种框架- 内置运行容器,无需配置Tomcat等Web容器,直接运行和部署程序- 快速部署项目,无需外部容器启动并运行项目- 可以完全抛弃繁琐的XML,使用注解和配置的方式进行开发- 支持更多的监控的指标,可以更好的了解项目的运行情况它的设计思想是**约定大于配置**
2023-02-25 14:14:40 1016 26
原创 【Java】Spring更简单的读取和存储
1. 将对象存储到Spring中: 1. 使用类注解:@Controller、@Service、@Repository、@Configuration、@Component【它们之间的关系】 2. 使用方法注解:@Bean【注意事项:必须配合类注解一起使用】2. Bean的命名规则:首字母和第二个字母都不是大写,首字母小写来获取Bean,如果首字母和第二个字母都是大写,那么直接使用Bean名来获取Bean3. 从Spring中获取对象 1. 属性注入 2. Setter注入
2023-02-23 20:54:10 1106 15
原创 【Java】Spring的创建和使用
1. 操作容器之前,先要有一个容器,所以要先得到容器2. 存对象 1. 创建Bean(普通类) 2. 将Bean注册到配置文件当中3. 取对象 1. 得到Spring的上下文,并读取到Spring的配置文件 2. 获取到某一个Bean对象 3. 使用Bean对象
2023-02-22 12:37:02 1628 19
原创 【Java】Spring核心与设计思想
我们通常所说的Spring指的是Spring Framework(Spring框架),它是一个开源的框架。有着庞大而且活跃的社区,这也是长久不衰的原因。用一句话来概括:Spring是包含了众多工具方法的IOC容器。那么什么是容器?什么是IOC容器?
2023-02-20 19:33:50 3389 24
原创 【C++】C/C++内存管理
C/C++当中的内存分布、C语言当中的动态内存管理、C++内存管理方式、operator new和operator delete函数、new和delete的实现原理、定位new表达式、free/malloc和new/delete 的区别
2023-02-17 00:00:00 2106 27
个人简历Markdown编辑,简洁大方,让人一看就像要认识你的感觉
2023-02-14
TCP三次握手和四次挥手
2023-02-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人