sql 恶意注入问题
sql 恶意注入问题
Extension文件夹:存放所有的扩展类
//这样在字典中取值比较麻烦
string myValue;
dic.TryGetValue(key,out myValue);
=========为内置的字典类扩展方法===========
using System.Collections;
using System.Collections.Generic;
public static class DictionaryExtension{
// 尝试根据key得到value,得到了返回value,没有得到直接返回null
public static Tvalue TryGet<Tkey,Tvalue>(this Dictionary<Tkey,Tvalue> dict,Tkey key){
Tvalue mvalue;
dict.TryGetValue(key,out mvalue);
return mvalue;
}
}
// 使用扩展方法
string result = myDic.TryGet("keyStr");
using system;
public enum MyEnum
{
TypeOne,
TypeTwo,
TypeThree,
TypeFour
}
[Serializable]
public class MyJsonData : ISerializationCallbackReceiver
{
[NonSerialized]
public MyEnum myEnum;
public string typeString;
/// <summary>
/// 反序列化之后调用此方法
/// 反序列化:文本信息 -> 对象
/// </summary>
public void OnAfterDeserialize()
{
myEnum = (MyEnum)Enum.Parse(typeof(MyEnum), typeString);
}
/// <summary>
/// 序列化之前调用此方法
/// 序列化:对象 -> 文本信息
/// </summary>
public void OnBeforeSerialize()
{
}
}
MyJsonData jsonData = JsonUtility.FromJson<MyJsonData>("{\"typeString\":\"TypeThree\"}");
print(jsonData.myEnum.ToString());
移动节点至头部,不需要在最后判断Tail是否为空.
if (pNode == Tail) Tail = pNode.prev;这一句已经判断过了.
回调方法,结束以后,把信息传递给了clientsocket,再定义一个socket等于ar里返回结果的socket。
(相当于复制下来)。
Send不会堵塞?
UTF8.GetByte()
Socket.Receive()返回一个int型的值(count)。这个值是接受的字符串的长度,以便知道读取多少位,方便数据转化。
/// <summary>
/// 把某个节点移到头部
/// </summary>
/// <param name="pNode"></param>
public void MoveToHead(DoubleLinkedListNode<T> pNode)
{
if (pNode == null || pNode == Head)
return;
if (pNode.prev == null && pNode.next == null)
return;
if (pNode == Tail)
Tail = pNode.prev;
if(pNode.prev != null)
pNode.prev.next = pNode.next;
if (pNode.next != null)
pNode.next.prev = pNode.prev;
pNode.prev = null;
pNode.next = Head;
Head.prev = pNode;
Head = pNode;
//这里不对
if (Tail == null)
Tail = Head;
}
//最后一句代码有误吧,想不出例子可以证明(Tail == null)
尽量少使用 if else
尽量少嵌套
float、half、fixed在PC上没有太大却别,在移动端区别比较明显。
切线范围为-1~1
法线范围为-1~1
GameObject.Find("Canvas").transform
GameObject go=Resources.Load<GameObject>("GamePanel");
GameObject panel=GameObject.Instantiate(go);
panel transform SetParent(UIParent,false);
实测粘包没有吧一个数据分成一半传输。
我猜解决方案就是在每条消息上,加上标记。
3次for循环,100*100*100次。这增大数据快。
同步,没分包问题?这需要测试下。
siki老师说的对,同步有分包为题,而异步没有。神奇。
面向过程果然不如面向对象。客户端链接过来时,可以在服务器端创建个客户端对象,这样简洁多了。
单例核心
1.定义一个静态对象 在外部访问,内部实现
2.构造方法私有化
确保只有一个实例
复习:怎么实现单例模式?
UIPaneltype.cs
枚举类型,记录panel类型
UIPaneltype.json
描述加载路径
实现瞬移:
在手柄上挂在以下两个脚本
VRTK_Controller Events
VRTK_Bezier Pointer
在CameraRig上挂载
VRTK_Height Adjust Teleport
可在 Events脚本下设置按键
可在Bezier脚本下 Layers To Ignore设置忽略层
缩小被萨尔曲线的检测范围可以缩小模型的collider
等比例缩小 shift+拖动
unity现在不是mono架构了,蛋疼。垃圾算法,内存和性能都不是最好的。