- 博客(61)
- 收藏
- 关注
原创 基于Shader实现的UGUI描边解决方案遇到的bug
我排查了很多次,实在是找不出问题,只能怀疑是否是IN.texcoord在传值的时候出现了精度丢失,导致偏移量出现了问题,因为_MainTex_TexelSize的值是1.0/256或者1.0/512。而unity的Vector向量的分量是float类型的,似乎不能满足1.0/256的精度。不知道是不是这里的问题。使用这边文章介绍的描边解决方案时遇到了一些问题,就是文字的描边经常会变粗,虽然有的时候也可以正常显示描边,但是运行一会儿描边就不正常了,而且不正常的描边粗细是不均匀的。不知道这个改动有没有影响。
2024-08-19 21:02:12
547
原创 进程的就绪、执行、阻塞和挂起
进程刚被创建后, 分配了资源A, 进入就绪态, 如果操作系统发现CPU需要较长时间才会分配给该进程, 则为了资源A不被闲置, 就剥夺资源A, 进程进入挂起就绪态.操作系统进行CPU的调度, 剥夺该进程的CPU, 剥夺CPU的原因可能是该进程的时间片完或者是更高优先级的进程进入就绪态并抢占了CPU, 该进程进入就绪态.进程执行过程中发现需要资源B, 但资源B当前无法使用, 需要等待, 则进程进入阻塞态. 同时操作系统剥夺进程的CPU资源.资源A可以归还了, 操作系统归还资源A, 进程进入就绪态.
2023-09-18 11:22:23
1557
原创 3.2 队列
定义:一种插入元素只能在一端进行, 删除元素只能在另一端进行的. 所谓队列是线性表, 是指队列的逻辑结构属于线性表, 只不过在操作上加了一些约束. 队列可以插入元素的一端叫做队尾(Rear), 可以删除元素的一端叫做队头(Front). 队列是一种的结构. First In, First Out (FIFO).图1. 元素入队和出队。
2023-07-25 15:38:50
371
原创 3.1 栈
定义:一种只能在一端进行插入或删除操作的. 所谓栈是线性表, 是指栈的逻辑结构属于线性表, 只不过在操作上加了一些约束. 栈的可以插入或删除元素的一端叫栈顶, 另一端叫栈底. 栈是一种的结构. First In, Last Out (FILO).图1. 元素入栈和出栈。
2023-07-24 20:52:51
80
原创 2.8 线性表的归并
归并: 把两个表或多个表按照某种策略(规则)合并成一个表. 例如以后要介绍的归并排序就是归并的一个应用. 在线性表这一章, 我们只介绍二路归并. 即把两个线性表合并成一个表. 归并规则是把两个已经有序的线性表给归并成一个更长的线性表, 得到的表也是有序的.
2023-07-21 12:27:34
771
原创 2.7 线性表取最值
取最大值策略: 用max记录最大值, maxIndex记录最大值的数组索引. max初始值为数组的第一个数据, maxIndex初始值为0. 然后遍历数组, 如果遍历到的数组数据arr[ i ]大于max, 则更新max的值为arr[ i ], 更新maxIndex的值为 i .取最小值同理.代码1: 顺序表取最值代码2: 顺序表取最大值核心代码代码3: 顺序表取最小值核心代码。
2023-07-20 11:04:42
142
原创 2.5 线性表的建表
尾插法有一个指向尾部结点的指针,尾插法表中数据与输入的数据顺序相同.头插法只需要head指针和结点指针p即可完成建表操作, 头插法表中数据与输入的数据顺序相反.
2023-07-17 16:20:39
94
原创 2.4 线性表的插入删除
图1. 单链表插入结点图2. 单链表删除结点代码1: 单链表的插入删除(没有考虑特殊情况)特殊情况: 在链表的第一个结点之前插入结点或者删除第一个结点.图3. 在含头结点的单链表的第一个结点之前插入结点图4. 在不含头结点的单链表的第一个结点之前插入结点图5. 含头结点的单链表删除第一个结点图6. 不含头结点的单链表删除第一个结点代码2: 在不含头结点的单链表的第一个结点之前插入结点或者删除第一个结点.需要注意的是, 在C++中,指针类型属于值类型。
2023-07-15 20:11:20
2363
原创 2.3 移动次数计算和静态链表
本问题针对顺序表, 因为链表不需要移动元素, 只需要重新连接指针即可.题型一:计算在某个位置上插入一个新元素会导致多少元素的移动.题型二:计算在每个位置上插入一个元素所导致的平均移动次数. 先计算每个位置上插入的概率, 一般是1/n, 平均移动次数 =每个位置上进行插入操作所导致的元素移动次数 * 每个位置上发生插入操作的概率(一般是1/n))
2023-07-14 12:09:24
712
原创 2.2 顺序表与链表特性对比
插入策略:在某个位置插入元素时, 把从该位置开始的所有元素都往后挪一个位置, 规定顺序表最后一个元素后面的位置也是一个可插入位置.删除策略:在某位置删除元素, 把从该位置之后的所有元素都往前挪一个位置, 把要删除的元素覆盖掉即可.代码1: 顺序表(数组)的插入删除操作。
2023-07-13 15:43:43
201
原创 2.1 线性表的逻辑结构与存储结构
在之前的数据结构知识铺垫2:物理结构与逻辑结构一文中, 我们介绍了物理结构与逻辑结构, 物理结构即存储结构. 本篇文章我们着重探讨一下线性表的逻辑结构与存储结构.
2023-07-12 12:06:37
1127
原创 实现临界区互斥访问的基本方法
在我们之前的生产者与消费者问题中, 在文章的最后, 我们曾尝试过把我们的代码封装成P()和V()操作, 结果却以失败告终. 归根结底是因为我们无法在不使用mutex的情况下来完成对临界区的互斥访问, 本篇文章我们就来探讨一下, 如何不使用mutex实现临界区的互斥访问.
2023-07-10 11:08:30
949
转载 C#TryAdd
与 Dictionary 索引器不同, TryAdd 如果字典中存在具有给定键的元素,则 不会重写 元素。 如果该键已存在,则 TryAdd 不执行任何操作并返回 false。
2023-02-13 17:28:58
384
原创 Unity点击按钮没有反应
Unity点击按钮没有反应的原因很多,我遇到的情况是这样的:Button下有一个Text的子物体,而Text子物体勾选了Raycast Target属性,导致Button没有检测到射线,将Text子物体的Raycast Target取消勾选即可。
2022-11-03 23:13:42
5863
原创 客户端Socket(同步方式)
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Net.Sockets;using System.Net;namespace ClientTest{ internal class Program { static Socket ClientSocket = n.
2022-04-28 19:53:01
304
原创 服务端Socket(同步方式)
using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading.Tasks;using System.Threading;namespace ServerTest{ internal class Program { static.
2022-04-28 19:51:20
409
原创 客户端Socket(异步方式)
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Net.Sockets;using System.Net;namespace ClientSocket{ public class ClientHandle { private string ip; .
2022-04-28 08:41:17
671
原创 服务端Socket(异步方式)
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Net;using System.Net.Sockets;namespace ServerSocket{ public class ClientState { private byte[] byteBuffer.
2022-04-28 08:39:45
324
原创 数据结构知识铺垫4:结构体
本文介绍一下结构体。在C语言的学习中,我们认识了数组,它是由相同类型的变量排成一列所构成的变量集。数组有哪些应用场景?我们可以用数组来表示一类数据的集合,比如全班的成绩,假如班里有50个人,就可以用一个长度为50的整型数组来存储50个人的成绩。但是这还不够,很明显只有成绩的话,我们不知道这些成绩都是哪个同学的成绩。因此我们希望这些成绩都能与同学的名字一一对应(不考虑重名的情况)。结构体可以帮助我们解决这个问题。结构体是不同类型变量组合在一起构成的变量。比如对于每个同学的成绩,我们可以定义一个...
2022-03-24 19:22:47
1563
原创 数据结构知识铺垫3:指针
在前面两篇文章中,我们简单介绍了内存(1:内存简述),并初步了解了物理结构与逻辑结构(2:物理结构与逻辑结构),在这篇文章中,我们就可以进一步学习C语言中一个比较难理解的知识点:指针。希望读者在阅读本文之前,先去看一下前两篇文章(至少看一下第一篇)。
2022-03-05 14:24:08
560
原创 数据结构知识铺垫2:物理结构与逻辑结构
本篇文章的目的在于对数据结构这门课程做一个比较浅显的概括(不包括排序和查找),使得读者能够对这门课程有一个整体的认识。
2022-01-27 14:59:45
1608
2
原创 数据结构知识铺垫1:内存简述
笔者写该系列文章的目的在于复习巩固自己所学过的数据结构知识,并尽可能以通俗易懂的语言描述数据结构,使得非科班的同学对这门课有一个大体的了解(在这之前希望读者有一定的C语言基础)。受水平限制,文章难免有纰漏,欢迎大家在评论区指正。话不多说,现在开始。
2022-01-24 20:08:50
655
1
原创 Unity - SerializeField
https://docs.unity3d.com/ScriptReference/SerializeField.html
2019-10-22 09:56:39
153
原创 Unity - EditorWindow
https://docs.unity3d.com/ScriptReference/EditorWindow.html
2019-10-21 11:37:54
122
原创 What does “where T : class, new()” mean?
https://stackoverflow.com/questions/4737970/what-does-where-t-class-new-mean
2019-10-21 11:00:17
137
1
原创 设计模式三种类型
一、创建型设计模式作用:解决对象创建过程中的相关问题。二、结构型设计模式作用:规划脚本(类)与脚本(类)之间的关系。三、行为型设计模式作用:解决对象与对象之间的沟通问题。...
2019-09-03 14:12:17
574
原创 设计模式六大原则简介
1. 单一职责原则就一个类而言,应该只有一个引起它变化的原因,即一个类只负责一项职责(功能)。2. 开放封闭原则软件实体(类,方法,模块)应该可以扩展,但是不可以修改。3. 依赖倒置原则针对抽象编程,不要针对实现编程。高层模块不应该依赖于底层模块,两个模块都应该依赖于抽象(抽象类 / 接口)。4. 里氏转换原则(1)一个软件实体如果使用的是一个父类的话,那么一定适用于其...
2019-08-22 14:40:09
151
原创 虚方法, 抽象类, 接口三者语法对比
1. 虚方法父类:class Father{ public virtual void Function() //用virtual修饰,可以在子类中使用override进行重写 { Console.WriteLine("父类中的方法"); }}子类:class Child : Father{ publ...
2019-08-22 14:05:31
211
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人