自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 收藏
  • 关注

原创 C++ 拾遗 2

在整个程序生命周期内都是有效的,在定义位置之后的任意函数中都能访问。全局变量在主程序退出时由系统收回内存空间。在函数或语句块使用在函数或语句块外部是不可用的。局部变量在函数返回或语句块结束时由系统收回内存空间。用static修饰的局部变量,并且只会被初始化一次。其,当定义它的函数或语句块结束时,其作用域随之结束。当程序想要使用全局变量的时候应该先考虑使用static考虑到数据安全性。全局变量和静态局部变量自动初始化为0。

2024-01-13 17:06:50 843

原创 C++ 单例模式

使用饿汉模式实现单例是十分简单的,并且有效避免了线程安全问题,因为将该单例对象定义为static变量,程序启动即将其构造完成了。

2024-01-13 17:01:38 528

原创 C++ 智能指针

⾸先,说⼀下为什么要使⽤智能指针:智能指针其作⽤是管理⼀个指针,避免咋们程序员申请的空间在函数结束时忘记释放,造成内存泄漏这种情况滴发⽣。然后使⽤智能指针可以很⼤程度上的避免这个问题,因为智能指针就是⼀个类,当超出了类的作⽤域是,,析构函数会⾃动释放资源。所以智能指针的作⽤原理就是在函数结束时⾃动释放内存空间,不需要⼿动释放内存空间。内存泄漏举例。

2024-01-13 16:02:25 975

原创 操作系统 内存相关

页表是一种数据结构,用于存储虚拟地址空间和物理地址空间之间的映射关系。每个进程都有自己的页表,用于将其虚拟地址映射到物理地址。

2024-01-11 22:21:28 894

原创 操作系统 进程相关

—协程、线程、进程】 https://www.bilibili.com/video/BV1Wr4y1A7DS/?高并发:线程池,不要无休止的创建线程。--> task很小很快,thread需要切换(中断)-->协程。

2024-01-11 22:18:34 830

原创 Python

同列表和元组,都是一个可以放置任意数据类型的集合。Python 中的列表和元组都支持负数索引,-1 表示最后一个元素,-2 表示倒数第二个元素不同列表是动态的,长度大小不固定,可以随意地增加、删减或者改变元素(mutable)。而元组是静态的,长度大小固定,无法增加删减或者改变(immutable)。使用count(item) 表示统计列表 / 元组中 item。index(item) 表示返回列表 / 元组中 item。list.reverse() 和 list.sort() 分别表示。

2024-01-10 22:08:15 983

原创 力扣热题100

【代码】力扣热题100。

2024-01-10 22:08:10 431

原创 基础数据结构

删除:swap[heap[1], heap[size]], size--, down[1] 删除头元素很麻烦。删除任意元素:heap[k] = heap[size];down(k), up(k)修改元素:heap[k] = x;down(k), up(k)插入:heap[s++] = x, up(size)从 n/2 开始 down,复杂度为 O(n)down: 往下调整,求最小:heap[1]

2024-01-07 15:29:06 393

原创 C++ 拾遗

宏是在预处理阶段进行文本替换的,即在代码被编译之前。宏通常是简单的字符串替换,它将代码中的宏名称替换为宏定义的文本。宏的替换是简单的文本替换,不进行类型检查。这可能导致一些问题,因为宏不关心数据类型,可能引入潜在的错误。由于是文本替换,宏可能会生成较大的代码。每次使用宏时,都会复制宏的内容,可能导致代码膨胀。宏不涉及函数调用,因此不需要调用栈。宏只是简单地进行文本替换。inline。

2024-01-02 22:22:49 774

原创 Linux环境编程基础

系统调用是操作系统提供给用户程序的接口,用于访问操作系统的核心功能和资源。通过系统调用,用户程序可以请求执行特权操作,如文件操作、进程控制、内存管理、网络通信等。它是用户程序与操作系统内核之间的通信方式,允许应用程序利用操作系统提供的服务完成各种任务。

2023-12-31 20:41:47 847

原创 二叉树 经典例题

h层,则最底层最右边元素是2^{h-1}最左边是2^{h}-1。后序最后一个节点是根节点-->确定左子树和右子树。任意节点左右子树高度差

2023-12-31 16:27:26 480

原创 双指针/滑动窗口/贪心 经典例题

【代码】双指针/滑动窗口/贪心 经典例题。

2023-12-31 14:57:53 392

原创 二分查找 经典例题

public:// 大于等于最小值模板1int r1 = r;// 小于等于最大值模板2。

2023-12-31 14:36:19 461

原创 动态规划 典型例题

以下标 i 的元素结尾的最长递增子序列的长度。可以不连续,所以else后面有差异。行号从 1 开始,列从 0 开始。大体和上一题类似,操作有三种。第一个维度删掉,第二个反过来。

2023-12-31 13:35:58 874

原创 图论 经典例题

对有向图的节点排序,使得对于每一条有向边 U-->V U都出现在V之前。建立映射 [0, a, b] 其中 0 代表人名,a 代表邮箱地址。先连通,看连通块的数量,连接 n 个块需要 n - 1 个边。找到不能进入环的点,跟它在不在环里面没关系。从出度为 0 的点出发,它们不可能在环中。构建并查集的操作基本都是一样的。1.查询根节点 + 路径压缩。并查集 + 求连通块的数量。根据父节点的特点找冗余路径。变体,需要维护连通块的数量。依次删去度数为 1 的点。题眼一般是多个集合的合并。

2023-12-27 21:23:14 1013

原创 回溯算法 典型习题

枚举各种可能的情况。0.直接枚举子集1.约束条件是子集中数字的和 392.约束条件是子集的大小 77 46 473.约束条件是1 2两者的结合 21614.约束条件是集合数 + sum 93 6985.去重:同层删去相同的递归起点6.约束条件是 子集中数的大小关系 4917.前一个情况可能是后一个情况的约束 51。

2023-12-23 22:53:01 364

原创 链表 典型习题

【代码】链表常见算法。

2023-12-23 22:21:46 373

原创 算法 for GAMES

思路:双栈模拟队列,in2out。

2023-08-25 16:22:51 288

原创 算法和数据结构

【代码】算法和数据结构。

2023-08-24 14:03:55 736

原创 Minizinc 代码大全

问题1:如何编写逻辑表达式?优化建模之MiniZinc(四) 复杂逻辑约束和调度问题实例 - 知乎 (zhihu.com)var 1..8:a;var 1..8:b;var 1..8:c;var 1..8:d;var 1..8:e;var 1..8:f;var 1..8:g;var 1..8:h;constraint (a-b)>=2 \/ (b-a)>=2;constraint (a-c)>=2 \/ (c-a)>=2;constra

2022-03-09 11:30:17 961

原创 [5197——概率趣题:25人每次kill一个谁的存活概率最高]

一共有25个人,每个人都有编号,每一回合杀死一个奇数编号的人,它之后的人的编号-1,问1.谁的存活时间最长?设 F[n, k] 为 n 人开局,第 k 位苟活到最后的概率。F[1, 1] = 1, 现在考虑 F[n, k]可以分为三个部分求解:1) k被杀该情况发生概率 = (k%2) // ((n+1)//2)期望轮数 = 12) k 之前的人被杀该人被杀的概率 = k之前的奇数/所有奇数的数目 = (k//2)/( (n+1)//2 )此人被杀后,期望轮数在原有的基础

2022-03-08 20:10:42 352

原创 Stanford 编程范式 lesson 4

【斯坦福大学公开课】编程范式_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV11441137jY?p=4&spm_id_from=pageDriver如何在不care变量类型的情况下实现swap函数一、swap 交换变量的值1.使用指针作为参数交换两个 int// 将字符串复制到数组 dest 中#include <stdio.h>#include <string.h>#include <stdlib.h

2021-12-08 17:31:25 376

原创 [算法与程序设计] 1003

Problemhttp://47.99.179.148/problem.php?id=1003#include <iostream>#include <algorithm>using namespace std; int main(){ int n; cin >> n; while(n--){// 有n行输入 int m;// 依次输入m个数 cin >> m; int input[m]; for(int i

2021-12-04 21:04:06 492

原创 [算法与程序设计] 介绍 + 1002

这个是我们老师自己搭建的一个OJ,没有解答,全是习题。之前听一个B站的UP主说,学编程,在掌握了基本的语法后,可以通过完成算法题来训练自己,从而进一步提升自己对编程语言掌握的熟练度。所以,趁完成作业的机会,利用OJ来训练自己是一个不错的选择。题目点击连接可一键直达:Problemhttp://47.99.179.148/problem.php?id=1002#include <iostream>using namespace std;void swap(int *a,

2021-12-04 20:13:10 330

原创 中特和自然辨证法

2021-09-24 13:22:23 237

原创 Java-Ch 11:集合

1.集合框架概述/*** 一、集合框架的概述** 1.集合、数组都是对多个数据进行存储操作的结构,简称Java容器。* 说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt,.jpg,.avi,数据库中)** 2.1 数组在存储多个数据方面的特点:* > 一旦初始化以后,其长度就确定了。* > 数组一旦定义好,其元素的类型也就确定了。我们也就只能操作指定类型的数据了。* 比如:String[] a...

2021-09-10 08:37:43 189

原创 Java-Ch 10: 枚举类、注解

1 定义和适用范围/*** 一、枚举类的使用* 1.枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类* 2.当需要定义一组常量时,强烈建议使用枚举类——属性亦为常量* 3.如果枚举类中只有一个对象,则可以作为单例模式的实现方式。** 二、如何定义枚举类* 方式一:jdk5.0之前,自定义枚举类* 方式二:jdk5.0,可以使用enum关键字定义枚举类*** @author shkstart* @create 2019 上午 10:17...

2021-09-02 15:38:34 138

原创 Java-Ch 9: 比较器Comparable接口

1 两种排序/** * 一、说明:Java中的对象,正常情况下,只能进行比较:== 或 != 。不能使用 > 或 < 的 * 但是在开发场景中,我们需要对多个对象进行排序,言外之意,就需要比较对象的大小。 * 如何实现?使用两个接口中的任何一个:Comparable 或 Comparator * * 二、Comparable接口与Comparator的使用的对比: * Comparable接口的方式一旦一定,保证Comparable

2021-08-30 22:55:36 178

原创 Java-Ch 9: 常用类(日期时间API,东西多用的时候再查)

1 java.util.Date类 |---java.sql.Date类package com.lee.java;import org.junit.Test;import java.util.Date;/** * @author Lee * @create 2021-08-25 10:15 */public class DateTimeTest { /* java.util.Date类 ...

2021-08-27 21:27:38 185

原创 Java Trick:IDEA 导入工程

1.复制module到要导入的Project文件目录下。如 JavaSenior下的day012.点击最右边的按键3.modules里面点击加号,然后一路next

2021-08-27 17:51:38 170

原创 Java-Ch 9: 常用类(字符串)

1 跟字符串相关的类:String类1.1 特性不可变性体现:1.当对字符串重新赋值时,需要重写指定内存区域赋值,不能使用原有的value进行赋值。 2. 当对现有的字符串进行连接操作时,也需要重新指定内存区域赋值,不能使用原有的value进行赋值。 3. 当调用String的replace()方法修改指定字符或字符串时,也需要重新指定内存区域赋值,不能使用原有的value进行赋值。/*String:字符串,使用一对""引起来表示。1.String声明为fi.

2021-08-24 17:20:17 194

原创 Java-Ch 8 : 多线程 2 (synchronized)

1. 线程的生命周期1.1 全流程(框图)1.调用start()先启动不一定先输出,因为不一定先被cpu执行2.yield()释放执行权,自己可能再抢到2 线程的同步2.1 安全问题A线程阻塞期间,B线程进去,减了两次2000*单例模式-懒汉式:给对象赋值时,如果有多个线程可能new多次2.2 买票问题(休眠:出现错票——>安全问题)what?package com.lee.java;/** * @author Le...

2021-08-20 20:05:59 157

原创 Java-Ch 8:多线程 1 (基础概念,创建方式)

1. 程序、进程、线程1.1 概念程序:一段静态代码。进程:运行中的程序,有生命周期。线程 (thread) (室友+厨房):一个进程里面可以有多个线程,并行执行。main就对应一个线程。1.2 单核CPU和多核CPU单核:主频高,轮流执行各个线程,伪多线程。多核:根据不同业务启动不同的核。并行与并发:1.3 多线程优点(单核为何需要多线程?)1.4 何时需要多线程?1.5 辨析1(能拿一条线画出来就不是多线程)1.6代码示例...

2021-08-16 22:04:42 225 1

原创 Java Trick:自定义异常

应用场景对于运行时出现的异常,可以现在当前层级进行抛出,然后再try-catcah处理,代码模板//声明一个自定义异常类public class TeamException extends Exception{ //1.标识 static final long serialVersionUID = -7034897193246939L;//类的唯一的标识 //2.空参构造器 public TeamException() { } //3.带参

2021-08-08 17:24:06 168

原创 Java Trick:枚举类

应用场景:在 Java Project03 中,一个程序员的状态有三种。我们通过定义 Status 类,并声明三个对象属性,来表示这三个状态。使用原因:语法更简洁。更安全。变量值只能为三种状态或null,不能为其他值,如果单纯地使用 String则做不到这一点。枚举类易于使用。自带很多便利方法,如toString例子1:psv实现public class Status { //私有不可修改的变量:状态 private final String NAME; /** *

2021-08-05 14:17:37 169

原创 Java 面向对象(下 2)

1 接口1.1 定义/** 接口的使用* 1.接口使用interface来定义* 2.Java中,接口和类是并列的两个结构* 3.如何定义接口:定义接口中的成员* * 3.1 JDK7及以前:只能定义全局常量和抽象方法* >全局常量:public static final的.但是书写时,可以省略不写* >抽象方法:public abstract的* ...

2021-07-12 22:50:47 187 1

原创 Java 面向对象(下 1)

1 static/** static关键字的使用** 1.static:静态的* 2.static可以用来修饰:属性、方法、代码块、内部类** 3.使用static修饰属性:静态变量(或类变量)* 3.1 属性,按是否使用static修饰,又分为:静态属性 vs 非静态属性(实例变量)* 实例变量:我们创建了类的多个对象,每个对象都独立的拥有一套类中的非静态属性。当修改其中一个对象中的* 非静态属性...

2021-06-17 11:03:44 127

原创 Java trick 多态强在哪?

1多态强在哪?main(){ Person p = new Man(); p.eat(); //p.earnMoney(); Man man = new Man(); man.eat(); man.earnMoney();}好在参数传递时不需要考虑具体传进来什么子类

2021-06-16 16:29:34 115

原创 Java trick:是否是单例?不是的话如何修改?巧用final

1 判断下列代码是否是单例设计模式package com.lee.java;public class SingletonTest { public static void main(String[] args) { Bank bank1 = Bank.instance; Bank bank2 = Bank.instance; System.out.println(bank1 == bank2); }}class Bank{ private Bank(){

2021-06-16 16:26:48 103

原创 Java 面向对象(中)2 —— Object类、包装类

1 Object类1.1 面试题: == 和 equals() 区别/** 一、回顾 == 的使用:* == :运算符* 1. 可以使用在基本数据类型变量和引用数据类型变量中 —— 两种变量都适用* 2. 如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同)* 如果比较的是引用数据类型变量:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体* 补充: == 符号使用时,必须保证符号左右两边的变量类型一致。* 二、equa...

2021-06-15 10:22:12 194

入门资料入门资料入门资料入门资料入门资料入门资料

入门资料入门资料入门资料入门资料入门资料入门资料

2023-12-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除