自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 虚幻中常用的一些蓝图(持续更新)

仅在第一次命中节点时触发,但可以重置。: 在指定位置播放音效,可以同时设置。: 在指定位置播放特效,可以同时设置。: 对指定的actor应用伤害。: 销毁指定的actor。: 添加控制映射上下文。: 判断对象是否有效。

2023-07-29 16:44:59 472

原创 19.特殊工具与技术

某些应用程序对内存分配有特殊的需求,需要自定义内存分配的细节,比如使用new将对象放置在特定的内存空间中。因此,需要重载new和delete运算符以控制内存分配的过程。

2023-03-16 16:01:38 507 1

原创 18.用于大型程序的工具

异常处理机制允许程序中独立开发的部分能够在运行时就出现的问题进行通信并做出相应的处理。

2023-03-04 16:42:41 857

原创 17.标准库特殊设施

tuple(定义在tuple头文件中)是类似pair的模板。不同tuple类型的成员类型也不相同,但一个tuple可以有任意数量的成员。每个确定的tuple类型的成员数目是固定的,但一个tuple类型的成员数目可以与另一个tuple类型不同。当希望将一些数据组合成单一对象,但又不想麻烦地定义一个新数据结构来表示这些数据时,tuple是非常有用的。

2023-02-27 16:39:16 262

原创 16.模板与泛型编程

模板是创建类或函数的蓝图或者说公式,需要提供足够的信息,将蓝图转换为特定的类或函数。这种转换发生在编译时。

2023-02-22 15:23:43 319

原创 15.面向对象程序设计

面向对象程序设计基于三个基本概念:数据抽象、继承和动态绑定。

2023-02-09 15:30:29 608

原创 14.重载运算与类型转换

重载的运算符由关键字operator和其后要定义的运算符号共同组成,同时包含返回类型、参数列表以及函数体。其参数数量与该运算符作用的运算对象数量一样多。例如,一元运算符有一个参数,二元运算符有两个。除了重载的函数调用运算符operator()之外,其他重载运算符不能包含有默认实参。当一个重载的运算符是成员函数时,this绑定到左侧运算对象。成员运算符函数的(显式)参数数量比运算对象的数量少一个。

2023-01-30 16:39:33 813

原创 13.拷贝控制

拷贝控制操作:拷贝构造函数和移动构造函数定义了当用同类型的另一个对象初始化本对象时做什么。拷贝赋值运算符和移动赋值运算符定义了将一个对象赋予同类型的另一个对象时做什么。析构函数定义了当此类型对象销毁时做什么。

2023-01-17 15:51:05 649 1

原创 12.动态内存

每个程序拥有一个内存池,被称作自由空间(free store)或堆(heap)。程序用堆来存储动态分配的对象,即,那些在程序运行时分配的对象。动态对象的生存期由程序来控制,也就是说,当动态对象不再使用时,代码必须显式地销毁它们。

2023-01-05 15:26:12 564

原创 11.关联容器

类型map和multimap定义在头文件map中;set和multiset定义在头文件set中;无序容器则定义在头文件unordered_map和unordered_set中。

2022-12-14 15:59:03 397

原创 10.泛型算法

大多数算法都定义在头文件algorithm中。标准库还在头文件numeric中定义了一组数值泛型算法。一般情况下,这些算法并不直接操作容器,而是遍历由两个迭代器指定的一个元素范围来进行操作。

2022-12-11 14:55:55 598

原创 16.C预处理器和C库

C预处理器在程序执行之前查看程序。根据程序中的预处理器指令,预处理器把符号缩写替换成其表示的内容。预处理器可以包含程序所需的其他文件,可以选择让编译器查看哪些代码。预处理器并不知道c。基本上它的工作是把一些文本转换成另外一些文本。

2022-12-10 16:54:17 639

原创 15.位操作

十进制数2157可以写成:2 x 103 + 1 x 102 + 5 x 101 + 7 x 100,因为这种数学数字的方法是基于10的幂,所以称以10为基底书写2157。计算机的位只能被设置为0或1,关闭或打开。因此,计算机适用基底为2的数制系统,即二进制数。二进制中的2和十进制中的10作用相同。例如,二进制数1101可以表示为:1 x 23 + 1 x 22 + 0 x 21 + 1 x 20,结果为13。

2022-12-02 16:37:13 509

原创 14.结构和其他数据形式

该声明并未创建实际的数据对象,只描述了该对象由什么组成。可以把这个声明放在所有函数的外部,那么该声明之后的所有函数都能使用;也可以放在一个函数定义的内部,这样只限于该函数内部使用。

2022-11-26 14:53:53 592

原创 13.文件输入/输出

所有文件的内容都以二进制形式(0或1)储存。但是,如果文件最初使用二进制编码的字符(例如,ASCII或Unicode)表示文本(就像c字符串那样),该文件就是文本文件,其中包含文本内容。如果文件中的二进制值代表机器语言代码或数值数据或图片或音乐编码,该文件就是二进制文件,其中包含二进制内容。为了规范文本文件的处理,c提供两种访问文件的途径:二进制模式和文本模式。在二进制模式中,程序可以访问文件的每个字节。而在文本模式中,程序所见的内容和文件的实际内容不同。程序以文本模式读取文件时,把本地环境表示的行末尾或

2022-11-17 15:40:50 174

原创 12.存储类别、链接和内存管理

从硬件方面来看,被储存的每个值都占用一定的物理内存,c语言把这样的一块内存称为对象。对象可以储存一个或多个值。一个对象可能并未储存实际的值,但是它在储存适当的值时一定具有相应的大小。可以用存储期描述对象,所谓存储期是指对象在内存中保留了多长时间。标识符用于访问对象,可以用作用域和链接描述标识符,标识符的作用域和链接表明了程序的哪些部分可以使用它。不同的存储类别具有不同的存储期、作用域和链接。标识符可以在源代码的多文件中共享、可用于特定文件的任意函数中、可仅限于特定函数中使用,甚至只在函数中的某部分使用。对

2022-11-02 16:51:29 243

原创 11.字符串和字符串函数

用双引号括起来的内容称为字符串字面量,也叫作字符串常量。双引号中的字符和编译器自动加入末尾的\0字符,都作为字符串储存在内存中。从ANSI C标准起,如果字符串字面量之间没有间隔,或者空白字符分隔,c会将其视为串联起来的字符串字面量。例如:

2022-10-28 16:02:24 346

原创 10.数组和指针

C99增加了一个新特性:指定初始化器。利用该特性可以初始化指定的数组元素。例如,只初始化数组中的最后一个元素:

2022-10-17 16:29:06 277

原创 8.字符输入/输出和输入验证

回显用户输入的字符后立即重复打印该字符是属于无缓冲(或直接)输入,即正在等待的程序可立即使用输入的字符。大部分系统属于缓冲输入,用户输入的字符被收集并储存在一个被称为缓冲区的临时存储区,按下enter键后,程序才可使用用户输入的字符。缓冲区的意义在于,把若干字符作为一个块进行传输比逐个发送这些字符节约时间。另一方面,如果用户输错字符,可以直接修正,当最后按下enter键时,传输的是正确的输入。虽然缓存输入的好处很多,但是某些交互式程序也需要无缓冲输入。例如,在游戏中,希望按下一个键就执行相应的指令。缓

2022-10-12 15:53:40 78

原创 5.运算符、表达式和语句

C语言中,整数除法会截断计算结果的小数部分,不会四舍五入结果。而负数的整数除法会遵循趋零截断的规则,即把-3.8转换成-3。

2022-10-11 15:42:48 180

原创 4.字符串的格式化输入/输出

C语言没有专门用于储存字符串的变量类型,字符串都被储存在char类型的数组中。其中,空字符用来标记字符串的结束,不是数字0,它是非打印字符,其ASCII码值是(或等价于)0。因此,数组的容量必须至少比待储存的字符串中的字符数多1。

2022-10-10 17:24:06 406

原创 3.数据和c

字是设计计算机时给定的自然存储单位。对于8位的微型计算机,1个字长只有8位,目前是64位。计算机的字长越大,其数据转移越快,允许的内存访问也更多。

2022-10-09 16:05:08 340

原创 1.初识c语言

C编程的基本策略是,用程序把源代码文件转换为可执行文件,通过编译和链接两个步骤来完成这一过程。编译器把源代码转换成中间代码,链接器把中间代码和其他代码合并,生成可执行文件。这样方便对程序进行模块化,可以独立编译单独的模块,稍后再用链接器合并已编译的模块。通过这种方式,如果只更改某个模块,不必因此重新编译其他模块。另外,链接器还将编写的程序和预编译的库代码合并。

2022-10-09 08:44:12 54

原创 6.Android应用架构指南:界面层界面事件

界面事件指的是应该在界面层中由界面或ViewModel处理的操作。最常见的事件类型是用户事件。用户通过与应用程序交互(例如,点击屏幕或手势)来生成用户事件。然后,界面会使用onClick()监听器等回调来使用这些事件。

2022-08-23 14:42:35 669

原创 5.Android应用架构指南:界面层概览

界面的作用是在屏幕上显示应用程序数据,同时也充当与用户交互的角色。每当数据发生变化时,不管是由于用户交互(如按下按钮)还是外部输入(如网络响应),都应该更新界面以反映这些变化。不过,从数据层获取的应用数据的格式通常不同于界面显示的信息的格式。例如,可能只需要在界面中显示部分数据,或者可能需要合并两个不同的数据源,以便提供切合用户需求的信息。

2022-08-19 15:16:51 1282

原创 4.Android应用架构指南:概览

典型的android应用包含多个应用组件,包括Activity、Fragment、Service、内容提供程序和广播接收器。需要在应用清单中声明其中的大多数应用组件。Android操作系统随后会使用此文件来决定如何将你的应用集成到设备的整体用户体验中。鉴于典型的android应用可能包含多个组件,并且用户经常会在短时间内与多个应用进行互动,因此应用需要适应不同类型的用户驱动型工作流和任务。请注意,移动设备的资源也很有限,因此操作系统可能随时终止某些应用进程以便为新的进程腾出空间。...

2022-08-11 15:58:10 1057

原创 3.Android应用资源:处理配置变更

某些设备配置可能会在运行时发生变化(例如屏幕方向以及当用户启用多窗口模式时)。发生这种变化时,android会重启正在运行的Activity(先后调用onDestroy()和onCreate())。重启行为旨在通过利用与新设备配置相匹配的备用资源来自动重新加载应用,从而帮助它适应新配置。...

2022-08-10 14:55:23 548

原创 2.Android应用资源:概览

资源是指代码使用的附加文件和静态内容,例如位图、布局定义、界面字符串、动画说明等。应始终外部化应用资源(例如图像和代码中的字符串),以便单独对其进行维护。此外,还应该为特定的设备配置提供备用资源,方法是将其进行分组并放入专门命名的资源目录中。在运行时,android会根据当前配置使用合适的资源。例如,可能需根据屏幕尺寸提供不同的界面布局,或根据语言设置提供不同的字符串。外部化应用资源后,便可以使用在项目R类中生成的资源id来访问这些资源。..................

2022-08-08 16:13:59 440

原创 1.Android应用基础知识

每个android应用都处于各自的安全沙盒中,并受以下android安全功能的保护:Android操作系统是一种多用户linux系统,其中的每个应用都是一个不同的用户。默认情况下,系统会为每个应用分配一个唯一的linux用户id(该id仅由系统使用,应用并不知晓)。系统会为应用中的所有文件设置权限,使得只有分配给该应用的用户id才能访问这些文件。每个进程都拥有自己的虚拟机(VM),因此应用代码独立于其他应用而运行。默认情况下,每个应用都在其自己的linux进程内运行。Android系统会在需要执行..

2022-08-04 15:17:00 354

原创 7.取消与关闭

有时候希望提前结束任务或线程,例如用户取消操作,或者应用程序需要被快速关闭。而java对此没有提供任何机制来安全地终止线程。但它提供了中断,这是一种协作机制,能够使一个线程终止另一个线程的当前工作。这种协作式的方法是必要的,很少希望某个任务、线程或服务立即停止,因为这种立即停止会使共享的数据结构处于不一致的状态。相反,可以使用一种协作的方式:当需要停止时,首先清除当前正在执行的工作,然后再结束。这提供了更好的灵活性,因为任务本身的代码比发出取消请求的代码更清楚如何执行清除工作。...

2022-06-27 17:14:16 169

原创 6.任务执行

当围绕任务执行来设计应用程序结构时,第一步就是要找出清晰的任务边界。在理想情况下,各个任务之间是相互独立的:任务并不依赖于其他任务的状态、结果或边界效应。独立性有助于实现并发,因为如果存在足够多的处理资源,那么这些独立的任务都可以并行执行。为了在调度与负载均衡等过程中实现更高的灵活性,每项任务还应该表示应用程序的一小部分处理能力。......

2022-06-07 10:57:19 906

原创 5.基础构建模块

文章目录*基础构建模块**5.1同步容器类**5.1.1同步容器类的问题**5.1.2迭代器与`ConcurrentModificationException`**5.1.3隐藏迭代器**5.2并发容器**5.2.1`ConcurrentHashMap`**5.2.2额外的原子`Map`操作**5.2.3`CopyOnWriteArrayList`**5.3阻塞队列和生产者/消费者模式**5.3.1示例:桌面搜索**5.3.2串行线程封闭**5.3.3双端队列与工作密取**5.4阻塞方法与中断方法**5.5

2022-05-26 10:44:16 173

原创 4.对象的组合

文章目录*对象的组合**4.1设计线程安全的类**4.1.1收集同步需求**4.1.2依赖状态的操作**4.1.3状态的所有权**4.2实例封闭**4.2.1Java监视器模式**4.2.2示例:车辆追踪**4.3线程安全性的委托**4.3.1示例:基于委托的车辆追踪器**4.3.2独立的状态变量**4.3.3当委托失效时**4.3.4发布底层的状态变量**4.3.5示例:发布状态的车辆追踪器**4.4在现有的线程安全类中添加功能**4.4.1客户端加锁机制**4.4.2组合**4.5将同步策略文档化*对

2022-05-13 09:14:41 340

原创 3.对象的共享

文章目录*对象的共享**3.1可见性**3.1.1失效数据**3.1.2非原子的64位操作**3.1.3加锁与可见性**3.1.4`volatile`变量**3.2发布与逸出**安全的对象构造过程**3.3线程封闭**3.3.1Ad-hoc线程封闭**3.3.2栈封闭**3.3.3`ThreadLocal`类**3.4不变性**3.4.1`final`域**3.4.2示例:使用`volatile`类型来发布不可变对象**3.5安全发布**3.5.1不正确的发布:正确的对象被破坏**3.5.2不可变对象与初始

2022-05-06 10:33:05 193

原创 2.线程安全性

文章目录*线程安全性**2.1什么是线程安全性**2.2原子性**2.2.1竞态条件**2.2.2示例:延迟初始化中的竞态条件**2.2.3符合操作**2.3加锁机制**2.3.1内置锁**2.3.2重入**2.4用锁来保护状态**2.5活跃性与性能*线程安全性要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对共享的和可变的状态的访问。从非正式的意义上来说,对象的状态是指存储在状态变量(例如实例或静态域)中的数据。对象的状态可能包括其他依赖对象的域。共享意味着变量可以由多个线程同时

2022-04-28 11:52:26 262

原创 1.并发简介

文章目录*简介**1.1并发简史**1.2线程的优势**1.2.1发挥多处理器的强大能力**1.2.2建模的简单性**1.2.3异步事件的简化处理**1.2.4响应更灵敏的用户界面**1.3线程带来的风险**1.3.1安全性问题**1.3.2活跃性问题**1.3.3性能问题**1.4线程无处不在*简介1.1并发简史之所以在计算机中加入操作系统来实现多个程序的同时执行,主要是基于以下原因:资源利用率。当一个程序等待时,其他程序可以继续运行。公平性。不同的用户和程序对于计算机上的资源有着同等的使用

2022-04-26 09:36:07 124

原创 13.Spring security权限管理

文章目录*权限管理**13.1什么是权限管理**13.2Spring security权限管理策略**13.3核心概念**13.3.1角色与权限**13.3.2角色继承**13.3.3两种处理器**13.3.4前置处理器**投票器**决策器**13.3.5后置处理器**13.3.6权限元数据**`ConfigAttribute`**`SecurityMetadataSource`**13.3.7权限表达式**`SecurityExpressionRoot`**`WebSecurityExpressionRo

2022-04-14 15:16:18 10974 6

原创 12.Spring security中的异常处理

文章目录*异常处理**12.1Spring Security异常体系**12.2`ExceptionTranslationFilter`原理分析**`AuthenticationEntryPoint`**`AccessDeniedHandler`**`ExceptionTranslationFilter`**12.3自定义异常配置*异常处理Spring security中关于异常的处理主要是两个方面:认证异常处理、权限异常处理,除此之外的异常则抛出,交给spring去处理。12.1Spring S

2022-03-28 16:08:53 1704 1

原创 11.Spring security跨域问题

文章目录*跨域问题**11.1什么是CORS**11.2Spring处理方案**11.2.1`@CrossOrigin`**11.2.2`addCorsMappings`**11.2.3`CorsFilter`**11.3Spring Security处理方案**11.3.1特殊处理`OPTIONS`请求**11.3.2继续使用`CorsFilter`**11.3.3专业解决方案*跨域问题11.1什么是CORSCORS(Cross-Origin Resource Sharing)是由W3C制定的一种

2022-03-26 16:05:18 9388 1

原创 10.Spring security中的HTTP认证(实际使用较少)

文章目录*HTTP认证(实际使用较少)**10.1HTTP Basic authentication**10.1.1简介*HTTP认证(实际使用较少)HTTP提供了一个用于权限控制和认证的通用方式,这种认证方式通过HTTP请求头来提供认证信息,而不是通过表单登录。最熟知的应该是HTTP Basic authentication,另外还有一种相对更安全的HTTP Digest authentication。10.1HTTP Basic authentication10.1.1简介HTTP Ba

2022-03-26 15:52:14 1087

空空如也

空空如也

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

TA关注的人

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