unity各种特效shader效果资源以及位置

2023-11-01

 

录制自己的视频或者写博客

实时更新
学习unity资源商店的Demo
多在资源商店逛逛很重要
shader必须学,shader的基础是3D图形学

unityTextMeshPro中文字体制作

https://blog.csdn.net/qq_37057633/article/details/81120583?utm_source=blogxgwz1


unity镜子效果资源资源商店搜索MagicMirror
unity打破玻璃效果  资源商店搜索Breakable Windows
unity合并mesh减少DrawCall  资源商店搜索搜索Simplest mesh  baker

unityOutline边框效果,用法直接把shader符合该物体,作为物体的子物体

//======= Copyright (c) Valve Corporation, All rights reserved. ===============
//
// Purpose: Used to show the outline of the object
//
//=============================================================================
// UNITY_SHADER_NO_UPGRADE
Shader "Valve/VR/Outline"
{
	//-------------------------------------------------------------------------------------------------------------------------------------------------------------
	Properties
	{
		g_vOutlineColor( "Outline Color", Color ) = ( .5, .5, .5, 1 )
		g_flOutlineWidth( "Outline width", Range ( .001, 0.03 ) ) = .005
		g_flCornerAdjust( "Corner Adjustment", Range( 0, 2 ) ) = .5
	}

	//-------------------------------------------------------------------------------------------------------------------------------------------------------------
	CGINCLUDE

		//-------------------------------------------------------------------------------------------------------------------------------------------------------------
		#pragma target 5.0

		//-------------------------------------------------------------------------------------------------------------------------------------------------------------
		#include "UnityCG.cginc"

		//-------------------------------------------------------------------------------------------------------------------------------------------------------------
		float4 g_vOutlineColor;
		float g_flOutlineWidth;
		float g_flCornerAdjust;

		//-------------------------------------------------------------------------------------------------------------------------------------------------------------
		struct VS_INPUT
		{
			float4 vPositionOs : POSITION;
			float3 vNormalOs : NORMAL;
		};

		//-------------------------------------------------------------------------------------------------------------------------------------------------------------
		struct PS_INPUT
		{
			float4 vPositionOs : TEXCOORD0;
			float3 vNormalOs : TEXCOORD1;
			float4 vPositionPs : SV_POSITION;
		};

		//-------------------------------------------------------------------------------------------------------------------------------------------------------------
		PS_INPUT MainVs( VS_INPUT i )
		{
			PS_INPUT o;
			o.vPositionOs.xyzw = i.vPositionOs.xyzw;
			o.vNormalOs.xyz = i.vNormalOs.xyz;
#if UNITY_VERSION >= 540
			o.vPositionPs = UnityObjectToClipPos( i.vPositionOs.xyzw );
#else
			o.vPositionPs = mul( UNITY_MATRIX_MVP, i.vPositionOs.xyzw );
#endif
			return o;
		}

		//-------------------------------------------------------------------------------------------------------------------------------------------------------------
		PS_INPUT Extrude( PS_INPUT vertex )
		{
			PS_INPUT extruded = vertex;

			// Offset along normal in projection space
			float3 vNormalVs = mul( ( float3x3 )UNITY_MATRIX_IT_MV, vertex.vNormalOs.xyz );
			float2 vOffsetPs = TransformViewToProjection( vNormalVs.xy );
			vOffsetPs.xy = normalize( vOffsetPs.xy );

			// Calculate position
#if UNITY_VERSION >= 540
			extruded.vPositionPs = UnityObjectToClipPos( vertex.vPositionOs.xyzw );
#else
			extruded.vPositionPs = mul( UNITY_MATRIX_MVP, vertex.vPositionOs.xyzw );
#endif
			extruded.vPositionPs.xy += vOffsetPs.xy * extruded.vPositionPs.w * g_flOutlineWidth;

			return extruded;
		}

		//-------------------------------------------------------------------------------------------------------------------------------------------------------------
		[maxvertexcount(18)]
		void ExtrudeGs( triangle PS_INPUT inputTriangle[3], inout TriangleStream<PS_INPUT> outputStream )
		{
		    float3 a = normalize(inputTriangle[0].vPositionOs.xyz - inputTriangle[1].vPositionOs.xyz);
		    float3 b = normalize(inputTriangle[1].vPositionOs.xyz - inputTriangle[2].vPositionOs.xyz);
		    float3 c = normalize(inputTriangle[2].vPositionOs.xyz - inputTriangle[0].vPositionOs.xyz);

		    inputTriangle[0].vNormalOs = inputTriangle[0].vNormalOs + normalize( a - c) * g_flCornerAdjust;
		    inputTriangle[1].vNormalOs = inputTriangle[1].vNormalOs + normalize(-a + b) * g_flCornerAdjust;
		    inputTriangle[2].vNormalOs = inputTriangle[2].vNormalOs + normalize(-b + c) * g_flCornerAdjust;

		    PS_INPUT extrudedTriangle0 = Extrude( inputTriangle[0] );
		    PS_INPUT extrudedTriangle1 = Extrude( inputTriangle[1] );
		    PS_INPUT extrudedTriangle2 = Extrude( inputTriangle[2] );

		    outputStream.Append( inputTriangle[0] );
		    outputStream.Append( extrudedTriangle0 );
		    outputStream.Append( inputTriangle[1] );
		    outputStream.Append( extrudedTriangle0 );
		    outputStream.Append( extrudedTriangle1 );
		    outputStream.Append( inputTriangle[1] );

		    outputStream.Append( inputTriangle[1] );
		    outputStream.Append( extrudedTriangle1 );
		    outputStream.Append( extrudedTriangle2 );
		    outputStream.Append( inputTriangle[1] );
		    outputStream.Append( extrudedTriangle2 );
		    outputStream.Append( inputTriangle[2] );

		    outputStream.Append( inputTriangle[2] );
		    outputStream.Append( extrudedTriangle2 );
		    outputStream.Append(inputTriangle[0]);
		    outputStream.Append( extrudedTriangle2 );
		    outputStream.Append( extrudedTriangle0 );
		    outputStream.Append( inputTriangle[0] );
		}

		//-------------------------------------------------------------------------------------------------------------------------------------------------------------
		fixed4 MainPs( PS_INPUT i ) : SV_Target
		{
			return g_vOutlineColor;
		}

		//-------------------------------------------------------------------------------------------------------------------------------------------------------------
		fixed4 NullPs( PS_INPUT i ) : SV_Target
		{
			return float4( 1.0, 0.0, 1.0, 1.0 );
		}

	ENDCG

	SubShader
	{
		Tags { "RenderType"="Outline" "Queue" = "Geometry-1"  }

		//-------------------------------------------------------------------------------------------------------------------------------------------------------------
		// Render the object with stencil=1 to mask out the part that isn't the silhouette
		//-------------------------------------------------------------------------------------------------------------------------------------------------------------
		Pass
		{
			Tags { "LightMode" = "Always" }
			ColorMask 0
			Cull Off
			ZWrite Off
			Stencil
			{
				Ref 1
				Comp always
				Pass replace
			}

			CGPROGRAM
				#pragma vertex MainVs
				#pragma fragment NullPs
			ENDCG
		}

		//-------------------------------------------------------------------------------------------------------------------------------------------------------------
		// Render the outline by extruding along vertex normals and using the stencil mask previously rendered. Only render depth, so that the final pass executes
		// once per fragment (otherwise alpha blending will look bad).
		//-------------------------------------------------------------------------------------------------------------------------------------------------------------
		Pass
		{
			Tags { "LightMode" = "Always" }
			Cull Off
			ZWrite On
			Stencil
			{
				Ref 1
				Comp notequal
				Pass keep
				Fail keep
			}

			CGPROGRAM
				#pragma vertex MainVs
				#pragma geometry ExtrudeGs
				#pragma fragment MainPs
			ENDCG
		}
	}
}

 

 

UIOverlay效果

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "UI/Overlay"
{
	Properties
	{
		[PerRendererData] _MainTex ("Font Texture", 2D) = "white" {}

		_Color("Tint", Color) = (1,1,1,1)

		_StencilComp ("Stencil Comparison", Float) = 8
		_Stencil ("Stencil ID", Float) = 0
		_StencilOp ("Stencil Operation", Float) = 0
		_StencilWriteMask ("Stencil Write Mask", Float) = 255
		_StencilReadMask ("Stencil Read Mask", Float) = 255

		_ColorMask ("Color Mask", Float) = 15
	}
	
	SubShader
	{
		LOD 100

		Tags
		{
			"Queue" = "Transparent"
			"IgnoreProjector" = "True"
			"RenderType" = "Transparent"
			"PreviewType"="Plane"
			"CanUseSpriteAtlas" = "True"
		}

		Stencil
		{
			Ref [_Stencil]
			Comp [_StencilComp]
			Pass [_StencilOp] 
			ReadMask [_StencilReadMask]
			WriteMask [_StencilWriteMask]
		}
		
		Cull Off
		Lighting Off
		ZWrite Off
		ZTest Always
		Offset -1, -1
		Blend SrcAlpha OneMinusSrcAlpha
		ColorMask [_ColorMask]

		Pass
		{
			CGPROGRAM
				#pragma vertex vert
				#pragma fragment frag
				#include "UnityCG.cginc"
				#include "UnityUI.cginc"

				struct appdata_t
				{
					float4 vertex : POSITION;
					float2 texcoord : TEXCOORD0;
					float4 color : COLOR;
				};
	
				struct v2f
				{
					float4 vertex : SV_POSITION;
					half2 texcoord : TEXCOORD0;
					fixed4 color : COLOR;
				};
	
				sampler2D _MainTex;
				float4 _MainTex_ST;
				fixed4 _Color;
				fixed4 _TextureSampleAdd;
				
				v2f vert (appdata_t v)
				{
					v2f o;
					o.vertex = UnityObjectToClipPos(v.vertex);
					o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
					o.color = v.color * _Color;
#ifdef UNITY_HALF_TEXEL_OFFSET
					o.vertex.xy += (_ScreenParams.zw-1.0)*float2(-1,1);
#endif

					return o;
				}
				
				fixed4 frag (v2f i) : SV_Target
				{
					fixed4 col = (tex2D(_MainTex, i.texcoord) + _TextureSampleAdd) * i.color;
					clip (col.a - 0.01);
					return col;
				}
			ENDCG
		}
	}
}

高亮效果

//======= Copyright (c) Valve Corporation, All rights reserved. ===============
//
// Purpose: Used for the teleport markers
//
//=============================================================================
// UNITY_SHADER_NO_UPGRADE
Shader "Valve/VR/Highlight"
{
	Properties
	{
		_TintColor( "Tint Color", Color ) = ( 1, 1, 1, 1 )
		_SeeThru( "SeeThru", Range( 0.0, 1.0 ) ) = 0.25
		_Darken( "Darken", Range( 0.0, 1.0 ) ) = 0.0
		_MainTex( "MainTex", 2D ) = "white" {}
	}

	//-------------------------------------------------------------------------------------------------------------------------------------------------------------
	CGINCLUDE
		
		// Pragmas --------------------------------------------------------------------------------------------------------------------------------------------------
		#pragma target 5.0
		#pragma only_renderers d3d11 vulkan
		#pragma exclude_renderers gles

		// Includes -------------------------------------------------------------------------------------------------------------------------------------------------
		#include "UnityCG.cginc"

		// Structs --------------------------------------------------------------------------------------------------------------------------------------------------
		struct VertexInput
		{
			float4 vertex : POSITION;
			float2 uv : TEXCOORD0;
			fixed4 color : COLOR;
		};
		
		struct VertexOutput
		{
			float2 uv : TEXCOORD0;
			float4 vertex : SV_POSITION;
			fixed4 color : COLOR;
		};

		// Globals --------------------------------------------------------------------------------------------------------------------------------------------------
		sampler2D _MainTex;
		float4 _MainTex_ST;
		float4 _TintColor;
		float _SeeThru;
		float _Darken;
				
		// MainVs ---------------------------------------------------------------------------------------------------------------------------------------------------
		VertexOutput MainVS( VertexInput i )
		{
			VertexOutput o;
#if UNITY_VERSION >= 540
			o.vertex = UnityObjectToClipPos(i.vertex);
#else
			o.vertex = mul(UNITY_MATRIX_MVP, i.vertex);
#endif
			o.uv = TRANSFORM_TEX( i.uv, _MainTex );
			o.color = i.color;
			
			return o;
		}
		
		// MainPs ---------------------------------------------------------------------------------------------------------------------------------------------------
		float4 MainPS( VertexOutput i ) : SV_Target
		{
			float4 vTexel = tex2D( _MainTex, i.uv ).rgba;
			float4 vColor = vTexel.rgba * _TintColor.rgba * i.color.rgba;
			vColor.rgba = saturate( 2.0 * vColor.rgba );
			float flAlpha = vColor.a;

			vColor.rgb *= vColor.a;
			vColor.a = lerp( 0.0, _Darken, flAlpha );

			return vColor.rgba;
		}

		// MainPs ---------------------------------------------------------------------------------------------------------------------------------------------------
		float4 SeeThruPS( VertexOutput i ) : SV_Target
		{
			float4 vTexel = tex2D( _MainTex, i.uv ).rgba;
			float4 vColor = vTexel.rgba * _TintColor.rgba * i.color.rgba * _SeeThru;
			vColor.rgba = saturate( 2.0 * vColor.rgba );
			float flAlpha = vColor.a;

			vColor.rgb *= vColor.a;
			vColor.a = lerp( 0.0, _Darken, flAlpha * _SeeThru );

			return vColor.rgba;
		}

	ENDCG

	SubShader
	{
		Tags{ "Queue" = "Transparent" "RenderType" = "Transparent" }
		LOD 100

		// Behind Geometry ---------------------------------------------------------------------------------------------------------------------------------------------------
		Pass
		{
			// Render State ---------------------------------------------------------------------------------------------------------------------------------------------
			Blend One OneMinusSrcAlpha
			Cull Off
			ZWrite Off
			ZTest Greater

			CGPROGRAM
				#pragma vertex MainVS
				#pragma fragment SeeThruPS
			ENDCG
		}

		Pass
		{
			// Render State ---------------------------------------------------------------------------------------------------------------------------------------------
			Blend One OneMinusSrcAlpha
			Cull Off
			ZWrite Off
			ZTest LEqual

			CGPROGRAM
				#pragma vertex MainVS
				#pragma fragment MainPS
			ENDCG
		}
	}
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

unity各种特效shader效果资源以及位置 的相关文章

  • QT中QDockWidget使用详解

    Qt系列文章目录 文章目录 Qt系列文章目录 前言 一 具体操作 1 QDockWidget控件配置函数 2 代码 1 头文件 2 实现文件 效果 遇到的问题 前言 QDockWidget提供了dock widget的概念 也称为工具面板或
  • shell脚本基础5——常用命令写作技巧

    文章目录 一 grep命令 二 sed命令 2 1 选项参数 2 2 常用命令 三 AWK命令 3 1 常用参数 3 2 常用示例 四 find与xargs 五 date命令 六 对话框 6 1 消息框 6 2 yes no对话框 6 3
  • 信息安全风险评估---矩阵法计算风险

    矩阵法计算风险 假设 有以下信息系统中资产面临威胁利用脆弱性的情况 共有两项重要财产 资产A1和资产A2 资产A1面临一个主要威胁T1 资产A2面临两个主要威胁T2 T3 威胁T1可以利用资产A1存在的两个脆弱性 脆弱性V1和V2 威胁T2
  • 小程序DOM如何转为图片并将图片分享给朋友?

    方案一 h5中转页 1 利用web端插件html2canvas将dom转成图片 h5端 入参请参考文档 http www dtmao cc ios 65361 html html2canvas refdom useCORS true sca
  • 可穿戴设备未来市场巨大

    可穿戴设备将冲击智能手机的存在 不可否认 可穿戴设备未来的市场非常之大 甚至极有可能冲击智能手机的存在 从功能角度讲 可穿戴设备有机会一步步替代智能手机 现阶段来讲 许多可穿戴设备只能算是手机的附庸产品 通讯 社交等功能以手机为基础 可穿戴
  • STM32定时器(输入捕获)

    上一章讲了输出比较的内容 输出比较就是定时器自增 同时和CCR比较 按照自己设置的比较要求 输出REF高低电平 这一章我们讲下面结构图输出比较左边部分 也就是输入捕获 首先 介绍一下输入捕获 IC input capture 输入捕获 输入
  • Vuforia SDK分析

    Vuforia Architecture 高通组件 camera 单实例 在需要摄像头的时候会返回唯一的摄像头实例 Image Converter 单实例 像素级的图像转换器 在相机的 OpenGL ES rendering 格式和 tra
  • Android中保存当前按钮的状态 按back键返回之后再次进入没有改变

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到网站 一 使用SharedPreferences类 把用户操作记录保存到里面 因为是按钮的状态 所以在点击事件里面保存用户的操作数据 获取用户
  • 哨向 Mika & Lelush 1

    Report On Sentinels Guides of Atypical Combinations 非典型性哨兵向导结合报告 1 你是我的灯塔
  • HTML5 地理定位 【来自百度应用分享平台】

    百度给的地图API接口相当完善 复制过来一下 以后备用 基本使用方法
  • Day2:跨站脚本攻击

    目标 持续输出 每日分享关于web前端常见知识 面试题 性能优化 新技术等方面的内容 篇幅不会过长 方便理解和记忆 主要面向群体 前端开发工程师 初 中 高级 应届 转行 培训等同学 Day2 今日话题 想必大家经常会在面试中或者工作生活中
  • QT从入门到实战x篇_30_绘图设备(QPixmap、QBitmap、QImage和 QPicture;QPixmap、QBitmap绘制及保存;QImage像素操作;QPicture记录和重现)

    前面QT从入门到实战x篇 27 绘图事件QPainter 绘图事件void painterEvent 声明一个画家对象 QPainter painter this 画笔QPen 画刷QBrush QT从入门到实战x篇 28 绘图事件QPai
  • 用pandas进行数据分析实战

    安装pandas模块包 载入练习数据 在pandas中 常用的载入函数是read csv 除此之外还有read excel和read table table可以读取txt 若是服务器相关的部署 则还会用到read sql 直接访问数据库 但
  • 机器学习基础:核密度估计(Machine Learning Fundamentals: Kernel Density Estimation)

    在概率密度估计过程中 如果我们队随机变量的分布是已知的 那么可以直接使用参数估计的方法进行估计 如最大似然估计方法 然而在实际情况中 随机变量的参数是未知的 因此需要进行非参数估计 核密度估计是非参数估计的一种方法 也就是大家经常听见的pa
  • 关于LLVM IR和Valgrind 中间语言区别

    1 LLVM和Valgrind简介 LLVM Low Level VirtualMachine 是伊利诺伊州立大学香槟分校的ChrisLattner主持开发的一个编译器框架 随着ChrisLattner去苹果公司 LLVM作为苹果公司官方支
  • pymongo使用update_many方法批量更新记录

    使用的主要函数是 coll update many 当需要对同一批数据进行更新的时候 可以用这个函数 使用时 coll update many 筛选这一批数据需要查询的内容 字典类型 set 更新的内容 字典类型 使用方法如示例代码 示例代
  • 从0搭建Hyperledger Fabric2.5环境

    Hyperledger Fabric 2 5环境搭建 一 Linux环境准备 root登录 yum y install git curl docker docker compose tree yum y install autoconf a
  • NSNumber NSValue与NSDate 详解

    我们在编码中 很多时候需要将C里面原生的数据封装成对象 这样可以用NSDictionary或者NSArray来存取访问 尤其是一些做适配的情况下 这种封装是不可避免的 Objective C提供了不少类可以帮助我们 比较常见的是NSNumb
  • [转载]Stanford华人教授李飞飞写给她学生的一封信,如何做好研究以及写好PA

    De mystifying Good Research and Good Papers By Fei Fei Li 2009 03 01 Please remember this 1000 computer vision papers ge

随机推荐

  • 算法——动态规划算法

    动态规划的核心思路 动态规划的解题核心主要分为两步 第一步 定义问题 有的问题过于抽象 或者过于啰嗦干扰我们解题的思路 我们要做的就是将题干中的问题转化成一系列同类问题的某个解的情况 比如说 题目 求一个数列中最大连续子序列的和 我们要将这
  • tomcat部署项目

    今天总算是把部署tomcat部署项目的几种方式实验了一下 一 1 下载 Tomcat 服务器 官网下载地址 http tomcat apache org 2 启动并部署 Tomcat 服务器 解压 tomcat 安装包到一个非中文目录下 配
  • 微服务架构详解

    一 微服务架构的由来 在微服务架构出现之前 最常用的架构就是单体架构 俗称 一个jar war 包打天下 在一个jar包工程中 采用MVC架构 分为表现层 业务层 数据访问层 所有的业务模块 都放在这个工程中集成 如下图所示 随着软件行业规
  • DS18B20温度传感器

    1 DS18B20 单线数字温度传感器 即 一线器件 其具有独特的优点 采用单总线的接口方式 与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯 单总线具有经济性好 抗干扰能力强 适合于恶劣环境的现场温度测量 测量
  • 【前端】ant design中树形控件的父子节点受控实现

    前言 1 ant design的树形控件里面先设置好checkStrictly属性 即checkable 状态下节点选择完全受控 父子节点选中状态不再关联 这样的话 onCheck函数中的checkedKeys参数打印出来它是一个有chek
  • conda添加清华镜像源

    Anaconda 是一个用于科学计算的 Python 发行版 支持 Linux Mac Windows 包含了众多流行的科学计算 数据分析的 Python 包 Anaconda 安装包可以到 清华镜像源下载anaconda 下载 TUNA
  • 异步赠书:10月Python畅销书升级

    2018年最新活动 免费赠书 1 关注微信号 异步图书 2 邀请10位好友关注10天后 填写下方表单登记信息 即可免费获得异步图书一本 异步社区选书网址 www epubit com 点击登记免费图书邮寄信息 活动已结束 最新活动地址 ht
  • LeetCode 1689. 十-二进制数的最少数目

    如果一个十进制数字不含任何前导零 且每一位上的数字不是 0 就是 1 那么该数字就是一个 十 二进制数 例如 101 和 1100 都是 十 二进制数 而 112 和 3001 不是 给你一个表示十进制整数的字符串 n 返回和为 n 的 十
  • idea 通过访问路径快速定位到Controller方法

    目录 问题原因 解决方案 RestfulToolkit插件 使用方式 windows MAC 扩展 效果展示 问题原因 我们在调试 或者某个接口出现bug首先知道和拿到的一般是接口路径 系统运行久了 模块会很多 接口也会很多 找起来很麻烦
  • Strus2+Spring整合笔记

    1 拷贝Struts2 jar包和Spring jar包到 WEB INF lib目录下 2 配置Strust2核心控制器 配置文件 3 为第三步的Spring提供配置文件 4 添加Struts2 Spring整合的插件包 5 在appCt
  • 虚拟IP是什么?

    要是单讲解虚拟 IP 理解起来很困难 所以干脆把 动态 IP 固定 IP 实体 IP 与虚拟 IP都讲解一下 加深理解和知识扩展 实体 IP 在网络的世界里 为了要辨识每一部计算机的位置 因此有了计算机 IP 位址的定义 一个 IP 就好似
  • 2023-5-16第十六天

    permanent永久的 temporary instruction教授 传授 impart教授 initiate教授 接纳 reside居住于 resident居民 recover恢复 找回 laternate交替的 轮流的 interp
  • 小米官网项目制作——javascript知识分享上

    目录 前言 一 整体架构 二 弹出的盒子 1 定位盒子 2 弹出效果 3 其他细节 三 下拉 展开的切换菜单 1 放置盒子 2 切换盒子 3 添加索引 4 侧边展开的盒子 四 轮播图 1 本体的部件 2 轮播图 3 节流阀 4 其他的细节
  • Docker搭建Seata环境

    Docker搭建Seata环境 添加seata需要的数据库表 直接点击 mysql数据库 oracle数据库 postgresql数据库 为业务数据库也添加一个undo log表 Seata的AT模式下之所以在第一阶段直接提交事务 依赖的是
  • scikit keras_使用Scikit-Learn,Scikit-Opt和Keras进行超参数优化

    scikit keras Hyperparameter optimization is often one of the final steps in a data science project Once you have a short
  • Redis第十四讲 Redis是单线程还是多线程以及Redis保持高性能的原因

    Redis是单线程还是多线程 redis 4 0 之前 redis 是完全单线程的 redis 4 0 时 redis 引入了多线程 但是额外的线程只是用于后台处理 例如 删除对象 核心流程还是完全单线程的 这也是为什么有些人说 4 0 是
  • 【CTF知识库】常见安全设备默认口令清单

    设备 默认账号 默认密码 地址 深信服产品 sangfor sangfor sangfor 2018 sangfor 2019 无 深信服科技 AD dlanrecover https wenku baidu com view d49d55
  • UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x82 in position 193: illegal multibyte sequence

    终端命令行运行python出错 UnicodeDecodeError gbk codec can t decode byte 0x82 in position 193 illegal multibyte sequence 解决方法 参考博客
  • 【编译原理】FIRST集合和FOLLOW集合

    FIRST集合 定义 可从 推导得到的串的首符号的集合 其中 是任意的文法符号串 规则 计算文法符号 X 的 FIRST X 不断运用以下规则直到没有新终结符号或 可以被加入为止 1 如果 X 是一个终结符号 那么 FIRST X X 2
  • unity各种特效shader效果资源以及位置

    录制自己的视频或者写博客 实时更新 学习unity资源商店的Demo 多在资源商店逛逛很重要 shader必须学 shader的基础是3D图形学 unityTextMeshPro中文字体制作 https blog csdn net qq 3