UnityWebGL调研(3) 项目打包

2023-11-16

之前单独打包项目中用到的插件的Demo场景都没有问题,开始尝试打包项目参加,结果有问题。

打包能够成功,但是运行有问题,提示中找不到问题所在。

然后这个是新项目,考虑用Unity2019.2.1f打包看看。

和之前一样,逐个打包插件的Demo,都可以,然后加上整个项目,不行。然后一点一点的减少文件,还是不行,最后发现空的项目也不行。新建了一个全新的项目也不行。

错误是:

Failed running "C:/Program Files/Unity2019.2.1f/Editor/Data/PlaybackEngines/WebGLSupport\BuildTools\Emscripten_Win\python\2.7.5.3_64bit\python.exe" -E 
"C:/Program Files/Unity2019.2.1f/Editor/Data/PlaybackEngines/WebGLSupport\BuildTools\Emscripten\emcc" 
@"D:\SoftwareProjects\GitHub\UnityWEBGL\NewProject\Webgl3\New Unity Project\Assets\..\Temp\emcc_arguments.resp"

stdout:
stderr:Traceback (most recent call last):  
File "C:\Program Files\Unity2019.2.1f\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emcc.py", line 3063, in <module>    sys.exit(run())  
File "C:\Program Files\Unity2019.2.1f\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emcc.py", line 2051, in run    wasm_text_target, misc_temp_files, optimizer)  
File "C:\Program Files\Unity2019.2.1f\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emcc.py", line 2531, in do_binaryen    shared.check_call(cmd)  
File "C:\Program Files\Unity2019.2.1f\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\tools\shared.py", line 180, in check_call    run_process(cmd, *args, **kw)  
File "C:\Program Files\Unity2019.2.1f\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\tools\shared.py", line 167, in run_process    return run_base(cmd, universal_newlines=universal_newlines, check=check, *args, **kw)  
File "C:\Program Files\Unity2019.2.1f\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\tools\shared.py", line 158, in run_base    proc = Popen(cmd, *args, **kw)  
File "C:\Program Files\Unity2019.2.1f\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten_Win\python\2.7.5.3_64bit\lib\subprocess.py", line 711, in __init__    errread, errwrite)  
File "C:\Program Files\Unity2019.2.1f\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten_Win\python\2.7.5.3_64bit\lib\subprocess.py", line 948, in _execute_child    startupinfo)WindowsError: [Error 2] 
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
Exception: Failed building WebGL Player.
UnityEditor.WebGL.ProgramUtils.StartProgramChecked (System.Diagnostics.ProcessStartInfo p) (at /Users/builduser/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/ProgramUtils.cs:48)
UnityEditor.WebGL.WebGlBuildPostprocessor.EmscriptenLink (UnityEditor.Modules.BuildPostProcessArgs args, System.Boolean wasmBuild, System.String sourceFiles, System.String sourceFilesHash) (at /Users/builduser/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/BuildPostprocessor.cs:446)
UnityEditor.WebGL.WebGlBuildPostprocessor.LinkBuild (UnityEditor.Modules.BuildPostProcessArgs args) (at /Users/builduser/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/BuildPostprocessor.cs:496)
UnityEditor.WebGL.WebGlBuildPostprocessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args) (at /Users/builduser/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/BuildPostprocessor.cs:931)
UnityEditor.Modules.DefaultBuildPostprocessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args, UnityEditor.BuildProperties& outProperties) (at C:/buildslave/unity/build/Editor/Mono/Modules/DefaultBuildPostprocessor.cs:27)
UnityEditor.PostprocessBuildPlayer.Postprocess (UnityEditor.BuildTargetGroup targetGroup, UnityEditor.BuildTarget target, System.String installPath, System.String companyName, System.String productName, System.Int32 width, System.Int32 height, UnityEditor.BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.Build.Reporting.BuildReport report) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:281)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

查到的解决方法有

1.用Administrator启动unity

     --不行

2.修改emscripten.config里面的stack_size,加大

    --以及是8192了

3.打包目录放到项目同级文件夹 不要放到里面

   --同事发现的,他可以,我不行。他的是2019.2.0f

---------------------------------------------------------------------------------

今天出差,在一台新笔记本上安装2019.2.1f,不能打包。正好让我看看一个asm2wasm.exe的文件被360删除了,加到信任中也不会恢复,没找到恢复的选项,重装了unity,结果可以打包了。tmd,居然是这个原因,浪费了我2天时间!

应该是之前在公司安装unity2019时把杀毒软件关了,因为破解程序会被识别为病毒删除掉,然后打包测试,然后什么时候把电脑重启了,那个asm2wasm.exe就被杀毒软件删了,不知道是不是打包过程中删的,没注意到。

unity也不提示一下缺少这个exe,要不是今天看到了,不就永远不知道这个原因吗!

----------------------------------------------
项目打包时的另一个问题,经过排查,发现是wcf自动生成的Reference.cs的问题。

通信部分采用webapi,因为客户端服务端的类要一致,而现有的项目的类已经有很多了,在客户端这边重新整理工作量很大,就直接把wcf的类拿来用。另外,之前发现,webgl时类定位放到dll里面会导致json反序列化失败,得不到数据。而直接把类定位代码放到unity项目中则不会有这个问题,采用的方式时把wcf生成的Refrence.cs拿到项目中的方式。

其实之前2017.3.1时,这样时能打包的。只是打包项目场景后运行时出现了其他问题,而改为2019.2时,这个不能打包了。

但是这个确实挺可疑的。

Failed running D:\Unity2019.2.1f\Editor\Data\il2cpp\build/UnityLinker.exe -out="D:/cww/newwebgl/New Unity Project/Temp/StagingArea/Data/Managed/tempStrip" -x=D:/Unity2019.2.1f/Editor/Data/PlaybackEngines/WebGLSupport/Whitelists/Core.xml -x="D:/cww/newwebgl/New Unity Project/Temp/StagingArea/Data/Managed/TypesInScenes.xml" -d="D:/cww/newwebgl/New Unity Project/Temp/StagingArea/Data/Managed" --include-unity-root-assembly="D:/cww/newwebgl/New Unity Project/Temp/StagingArea/Data/Managed/Assembly-CSharp.dll" --include-unity-root-assembly="D:/cww/newwebgl/New Unity Project/Temp/StagingArea/Data/Managed/UnityEngine.UI.dll" --dotnetruntime=il2cpp --dotnetprofile=unityaot --use-editor-options --include-directory="D:/cww/newwebgl/New Unity Project/Temp/StagingArea/Data/Managed" --rule-set=Conservative --editor-data-file="D:/cww/newwebgl/New Unity Project/Temp/StagingArea/Data/Managed/EditorToUnityLinkerData.json" --disable-engine-module-support --enable-engine-module-stripping --engine-stripping-flag=EnableUnityConnect --engine-modules-asset-file=D:/Unity2019.2.1f/Editor/Data/PlaybackEngines/WebGLSupport/Whitelists/../modules.asset

stdout:
Fatal error in Unity CIL Linker
System.InvalidOperationException: �������޸ģ������޷�ִ��ö�ٲ�����
   �� System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
   �� System.Collections.Generic.List`1.Enumerator.MoveNextRare()
   �� Mono.Linker.Steps.MarkStep.ProcessMarkedTypesWithInterfaces()
   �� Mono.Linker.Steps.MarkStep.ProcessPrimaryQueue()
   �� Mono.Linker.Steps.MarkStep.Process()
   �� Unity.Linker.Steps.UnityMarkStep.Process(LinkContext context)
   �� Mono.Linker.Pipeline.ProcessStep(LinkContext context, IStep step)
   �� Unity.Linker.UnityPipeline.ProcessStep(LinkContext context, IStep step)
   �� Mono.Linker.Pipeline.Process(LinkContext context)
   �� Unity.Linker.UnityDriver.Run()
   �� Unity.Linker.UnityDriver.RunDriverWithoutErrorHandling()
   �� Unity.Linker.UnityDriver.RunDriver()
stderr:

UnityEngine.Debug:LogError(Object)
UnityEditorInternal.Runner:RunProgram(Program, String, String, String, CompilerOutputParserBase) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildUtils.cs:126)
UnityEditorInternal.Runner:RunManagedProgram(String, String, String, CompilerOutputParserBase, Action`1) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildUtils.cs:71)
UnityEditorInternal.AssemblyStripper:RunAssemblyLinker(IEnumerable`1, String&, String&, String, String) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/AssemblyStripper.cs:222)
UnityEditorInternal.AssemblyStripper:StripAssembliesTo(String[], String[], String, String, String&, String&, String, IIl2CppPlatformProvider, IEnumerable`1, BuildTargetGroup, ManagedStrippingLevel, Boolean, String) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/AssemblyStripper.cs:158)
UnityEditorInternal.AssemblyStripper:RunAssemblyStripper(IEnumerable, String, String[], String[], String, IIl2CppPlatformProvider, RuntimeClassRegistry, ManagedStrippingLevel) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/AssemblyStripper.cs:358)
UnityEditorInternal.AssemblyStripper:StripAssemblies(String, IIl2CppPlatformProvider, RuntimeClassRegistry, ManagedStrippingLevel) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/AssemblyStripper.cs:246)
UnityEditorInternal.IL2CPPBuilder:Run() (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:326)
UnityEditorInternal.IL2CPPUtils:RunIl2Cpp(String, IIl2CppPlatformProvider, Action`1, RuntimeClassRegistry) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:70)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

处理方式:

1.把服务端的类定义代码拷贝到unity中,理论上可行的。但是结果发现命名空间不一致,导致需要修改大量的代码(999+个错误)。

2.处理Refrence.cs,将System.ServiceModel.dll相关的代码去掉。

   在我这里其实就是把接口定位代码去掉:    ILocationService,ILocationServiceChannel,LocationServiceClient。

     

最开始时打算把[System.ServiceModel......]注释掉的,后来想到直接把接口定位都注释到就好了,这里我需要的也只有类的定义。

--------------------------------------------

还是Refrence.cs的问题,单独测试没问题,加载正式项目时,发现这个文件被识别为“杂项文件”,也就是说,这个文件不被包含在项目中。

感觉这个using有点奇怪,改到外面去,可以包括在项目中了。

然后再改回原来那样,还是再项目中,不知道怎么回事。

反正这样一个过程。

这个“杂项文件”导致的问题就是,项目中的脚本找不到Refrence.cs里面的类了。

----------------------------------

项目文件基本都放进去,修改好后,能够打包出一个东西了,但是为了能够发现打包后的问题,要打包“”Development Build“”。

结果出现错误:

Failed running "D:/Unity2019.2.1f/Editor/Data/PlaybackEngines/WebGLSupport\BuildTools\Emscripten_Win\python\2.7.5.3_64bit\python.exe" -E 
"D:/Unity2019.2.1f/Editor/Data/PlaybackEngines/WebGLSupport\BuildTools\Emscripten\emcc" @"D:\cww\webgl2\New Unity Project\Assets\..\Temp\emcc_arguments.resp"

stdout:
stderr:warning: unexpected number of arguments 1 in call to '__cxa_pure_virtual', 
should be 0warning: unexpected number of arguments 2 in call to '_ZN6il2cpp6icalls8mscorlib6System6String22RedirectToCreateStringEv', 
should be 0warning: unexpected number of arguments 4 in call to '_ZN6il2cpp6icalls8mscorlib6System6String22RedirectToCreateStringEv', 
should be 0warning: unexpected number of arguments 2 in call to '_ZN6il2cpp6icalls8mscorlib6System6String22RedirectToCreateStringEv', 
should be 0warning: unexpected number of arguments 4 in call to '_ZN6il2cpp6icalls8mscorlib6System6String22RedirectToCreateStringEv', 
should be 0warning: unexpected number of arguments 5 in call to '_ZN6il2cpp6icalls8mscorlib6System6String22RedirectToCreateStringEv', 
should be 0warning: unexpected number of arguments 4 in call to '_ZN6il2cpp6icalls8mscorlib6System6String22RedirectToCreateStringEv', 
should be 0warning: unexpected number of arguments 2 in call to '_ZN6il2cpp6icalls8mscorlib6System6String22RedirectToCreateStringEv', 
should be 0warning: unexpected number of arguments 3 in call to '_ZN6il2cpp6icalls8mscorlib6System6String22RedirectToCreateStringEv', 
should be 0error: 
unresolved symbol: ExportGetFrameAvailableerror: 
unresolved symbol: ExportGetLenghterror: 
unresolved symbol: ExportGetPositionerror: 
unresolved symbol: ExportGetRenderEventFuncerror: 
unresolved symbol: ExportGetTimeerror: 
unresolved symbol: ExportGetVideoHeighterror: 
unresolved symbol: ExportGetVideoTexturePointererror: 
unresolved symbol: ExportGetVideoWidtherror: 
unresolved symbol: ExportGetVolumeerror: 
unresolved symbol: ExportInitMediaPlayererror: 
unresolved symbol: ExportIsPlayingerror: 
unresolved symbol: ExportPauseerror: 
unresolved symbol: ExportPlayerror: 
unresolved symbol: ExportReleaseerror: 
unresolved symbol: ExportSetDataSourceerror: 
unresolved symbol: ExportSetFrameAvailableerror: 
unresolved symbol: ExportSetMediaPlayerEventListenererror: 
unresolved symbol: ExportSetPlaybackRateerror: 
unresolved symbol: ExportSetPositionerror: 
unresolved symbol: ExportSetTimeerror: 
unresolved symbol: ExportSetVolumeerror: 
unresolved symbol: ExportStopAborting compilation due to previous errors | undefinedTraceback (most recent call last):  
File "D:\Unity2019.2.1f\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emcc.py", line 3063, in <module>    sys.exit(run())  
File "D:\Unity2019.2.1f\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emcc.py", line 1780, in run    final = shared.Building.emscripten(final, append_ext=False, extra_args=extra_args)  
File "D:\Unity2019.2.1f\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\tools\shared.py", line 2274, in emscripten    emscripten._main(cmdline)  
File "D:\Unity2019.2.1f\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten.py", line 2233, in _main    return temp_files.run_and_clean(
    lambda: main(  File "D:\Unity2019.2.1f\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\tools\tempfiles.py", line 93, in run_and_clean    return func()  
    File "D:\Unity2019.2.1f\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten.py", line 2238, in <lambda>    DEBUG=DEBUG,  
    File "D:\Unity2019.2.1f\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten.py", line 2164, in main    temp_files=temp_files, DEBUG=DEBUG)  
    File "D:\Unity2019.2.1f\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten.py", line 86, in emscript    glue, forwarded_data = compiler_glue(metadata, libraries, compiler_engine, temp_files, DEBUG)  
    File "D:\Unity2019.2.1f\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten.py", line 218, in compiler_glue    glue, forwarded_data = compile_settings(compiler_engine, libraries, temp_files)  
    File "D:\Unity2019.2.1f\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten.py", line 541, in compile_settings    cwd=path_from_root('src'), error_limit=300)  
    File "D:\Unity2019.2.1f\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\tools\jsrun.py", line 132, in run_js    
    raise Exception('Expected the command ' + str(command) + ' to finish with return code ' + str(assert_returncode) + ', but it returned with code ' + str(proc.returncode) + ' instead! Output: ' + str(ret)[:error_limit])
    Exception: Expected the command ['D:/Unity2019.2.1f/Editor/Data\\Tools\\nodejs\\node.exe', '--stack_size=8192', '--max-old-space-size=4096', 
    'D:\\Unity2019.2.1f\\Editor\\Data\\PlaybackEngines\\WebGLSupport\\BuildTools\\Emscripten\\src\\compiler.js', 
    'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\tmpi3op66.txt', 
    'D:\\Unity2019.2.1f\\Editor\\Data\\PlaybackEngines\\WebGLSupport\\BuildTools\\lib\\Audio.js', 
    'D:\\Unity2019.2.1f\\Editor\\Data\\PlaybackEngines\\WebGLSupport\\BuildTools\\lib\\Cursor.js', 
    'D:\\Unity2019.2.1f\\Editor\\Data\\PlaybackEngines\\WebGLSupport\\BuildTools\\lib\\Eval.js', 
    'D:\\Unity2019.2.1f\\Editor\\Data\\PlaybackEngines\\WebGLSupport\\BuildTools\\lib\\FileSystem.js', 
    'D:\\Unity2019.2.1f\\Editor\\Data\\PlaybackEngines\\WebGLSupport\\BuildTools\\lib\\Logging.js', 
    'D:\\Unity2019.2.1f\\Editor\\Data\\PlaybackEngines\\WebGLSupport\\BuildTools\\lib\\Profiler.js', 
    'D:\\Unity2019.2.1f\\Editor\\Data\\PlaybackEngines\\WebGLSupport\\BuildTools\\lib\\SystemInfo.js', 
    'D:\\Unity2019.2.1f\\Editor\\Data\\PlaybackEngines\\WebGLSupport\\BuildTools\\lib\\UnetWebSocket.js', 
    'D:\\Unity2019.2.1f\\Editor\\Data\\PlaybackEngines\\WebGLSupport\\BuildTools\\lib\\Video.js', 
    'D:\\Unity2019.2.1f\\Editor\\Data\\PlaybackEngines\\WebGLSupport\\BuildTools\\lib\\WebCam.js', 
    'D:\\Unity2019.2.1f\\Editor\\Data\\PlaybackEngines\\WebGLSupport\\BuildTools\\lib\\WebRequest.js', 
    'D:\\cww\\webgl2\\New Unity Project\\Assets\\Plugins\\Lib\\ThirdAssets\\Best HTTP (Pro)\\Plugins\\WebGL\\BestHTTP_WebRequest.jslib', 
    'D:\\cww\\webgl2\\New Unity Project\\Assets\\Plugins\\Lib\\ThirdAssets\\Best HTTP (Pro)\\Plugins\\WebGL\\BestHTTP_WebSocket.jslib', 
    'D:\\cww\\webgl2\\New Unity Project\\Assets\\Plugins\\Lib\\ThirdAssets\\Best HTTP (Pro)\\Plugins\\WebGL\\BestHTTP_EventSource.jslib', 
    'D:\\Unity2019.2.1f\\Editor\\Data\\PlaybackEngines\\WebGLSupport\\BuildTools\\Emscripten\\src\\library_pthread_stub.js'] to finish with return code 0, but it returned with code 1 instead! 
    Output: 
    // The Module object: Our interface to the outside world. We import
    // and export values on it. There are various ways Module can be used:
    // 1. Not defined. We create it here
    // 2. A function parameter, function(Module) { ..generated code.. }
    // 3. pre-run appended it, var Module = {}; ..generated 
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

通过老方法,一个一个打包,发现是插件UniversalMediaPlayer导致的,或者说包括UniversalMediaPlayer的话,会出这个问题,但是不知道其它是否有插件也会导致这个问题。继续看看是UniversalMediaPlayer里面的哪个导致的。

发现直接就是UniversalMediaPlayer.cs导致的,至于是里面的什么代码,估计也就是使用UMP的dll的那部分了。

啊,说起来我这个插件是1.1版本的,它反正不支持Webgl,换成新版本的试试。

---------好吧,结果发现2.0.3也不行,单独一个插件一个项目,打包Development Build也是出问题。

先确认大部分功能的可行性,可以先把UMP插件去掉,并且把相关使用代码注释掉。

结论来看,这样子确实能够打包成功,Development模式。

------------------------------------------------------------------

之前大体的打包问题解决了,项目确实能够打包运行了,接下来修改具体功能问题。

改着,改着,改好了要打包测试,发现又不能打包了。

新建独立项目又能打包,而且Reimport All也不行。

Failed running "D:/Unity2019.2.1f/Editor/Data/PlaybackEngines/WebGLSupport\BuildTools\Emscripten_Win\python\2.7.5.3_64bit\python.exe" 
-E "D:/Unity2019.2.1f/Editor/Data/PlaybackEngines/WebGLSupport\BuildTools\Emscripten\emcc" 
@"D:\cww\webgl2\New Unity Project\Assets\..\Temp\emcc_arguments.resp"

stdout:
stderr:ERROR:root:
'D:/Unity2019.2.1f/Editor/Data/PlaybackEngines/WebGLSupport\BuildTools\Emscripten_FastComp_Win\binaryen\bin\asm2wasm 
D:\cww\webgl2\New Unity Project\Temp\StagingArea\Data\linkresult_wasm\build.temp.asm.js 
--total-memory=33554432 --trap-mode=clamp -O3 
--mem-init=D:\cww\webgl2\New Unity Project\Temp\StagingArea\Data\linkresult_wasm\build.js.mem 
--mem-base=1024 --wasm-only 
--symbolmap=D:\cww\webgl2\New Unity Project\Temp\StagingArea\Data\linkresult_wasm\build.js.symbols 
-o D:\cww\webgl2\New Unity Project\Temp\StagingArea\Data\linkresult_wasm\build.wasm' failed
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

----------------------------------------------
重新创建一个项目,慢慢把东西拷贝进去,结果到最后,可以。

奇怪。

在打包一下两个场景的情况试试。

 

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

UnityWebGL调研(3) 项目打包 的相关文章

随机推荐

  • Mac M1 安装 Ruby

    在M1芯片的Macbook安装Ruby会遇到很多问题 比如 用ruby install会失败 rbenv install 2 7 2也会失败 我结合网上的一些方法把成功的流程梳理一下 供参考 第一步 安装gpg brew install g
  • 网络证书有含金量吗?(转)

    网络证书有含金量吗 转 more 老板 含金量 市场需求 个人能力 说到证书的含金量 微软某培训经理曾经在网上有一个非常精辟的论述 如果两个人都是清华大学计算机系本科毕业的 两个人毕业时工资会一样么 如果发展三年以后 我想工资会相差很大 但
  • Java 终止线程的几种方式

    一 正常运行结束 所谓正常运行结束 就是程序正常运行结束 线程自动结束 public class ThreadTest extends Thread public void run do something 二 使用退出标志退出线程 一般r
  • JVM篇-堆空间(Heap)

    堆的核心概述 一个JVM实例只存在一个堆内存 堆也是Java内存管理的核心区域 Java堆区在JVM启动的时候既被创建 其空间到校也就确定了 是JVM管理的最大一块内存空间 堆内存可以调节 Java虚拟机规范 规范 对可以处于物理上不连续的
  • 关于SaaS平台中应对多租户模式的设计

    这几年 在公司尝试转型做产品 所以引入了很多的产品的理念 不管是对产品的定义 还是针对产品的管理 以及摸索产品的落地等等 我之前更多的是接触的ToB端 所以想必也猜到了是一个SaaS模式的产品 其实 现在回想并总结 之前所做的产品并不理想
  • Windows应急响应 - 敏感目录文件痕迹排查,最近打开的文件 Recent,临时目录Temp,预读取文件Prefetch,程序执行情况Amcache.hve,Windows文件访问时间不更新原理

    作者简介 CSDN top100 阿里云博客专家 华为云享专家 网络安全领域优质创作者 推荐专栏 对网络安全感兴趣的小伙伴可以关注专栏 网络安全入门到精通 敏感文件痕迹排查 一 根据时间查找 Forfiles 1 访问时间不更新问题 二 最
  • 电源管理芯片8个引脚说明

    1 脚 COMP 为误差放大器补偿脚 该脚与误差放大器反相输入端 VFB 之间应接入RC补偿网络 以改善误差放大器的性能 2 脚 VFB 为误差放大器的反相输入端 反馈电压接入该脚 与误差放大器同相输入端的基准电压比较 以便设定误差电压 3
  • 实现增删改查

    实现增删改查 1 UserMapper接口 要在UserMapper xml配置中的namespace中绑定这个接口 在mybatis config xml中绑定UserMapper xml这个配置文件
  • 阿里把中台变薄,背后逻辑是什么?

    颠覆式创新怎么做 中台适合做组合式创新 不适合做颠覆式创新 那么颠覆式创新如何做呢 各家巨头做法不太一样 腾讯使用 赛马机制 马化腾没有想到 10年前的那场 赛马 最后跑出来的是一个叫张小龙的人和他所带领的 微信 团队 而他们此前 从来没做
  • 关于接口自动化,你不能不知道的高级技巧——接口自动化神器apin进阶操作

    一 变量提取和引用 变量提取和引用主要是为了解决接口之间的参数依赖问题 使用场景 接口 A 的参数中需要使用接口 B 返回的某个数据 那么就要在请求 B 接口之后 提取数据保存 给请求 A 接口时使用 1 变量提取 在用例集或用例数据中 通
  • 简单的相似度计算

    相似度就是比较两个事物的相似性 一般通过计算事物的特征之间的距离 如果距离小 那么相似度大 如果距离大 那么相似度小 欧氏距离 计算两个点的空间距离 距离越小 越相似 二维平面 三维平面 n维向量 例 a 1 1 2 0 1 1 0 0 0
  • Opencv系列1_opencv对单张DCM文件的读取并显示

    实例1 opencv对单张DCM文件的读取并显示 include
  • react+antd中使用插件js-export-excel将table数据导出为excel文件

    首先在项目中安装js export excel插件 进入项目目录 执行以下命令 npm安装 npm install save js export excel yarn安装 yarn add js export excel 安装好之后 查看p
  • OpenBLAS简介及在Windows7 VS2013上源码的编译过程

    OpenBLAS Open Basic Linear Algebra Subprograms 是开源的基本线性代数子程序库 是一个优化的高性能多核BLAS库 主要包括矩阵与矩阵 矩阵与向量 向量与向量等操作 它的License是BSD 3
  • 【OpenCV】C++ OpenCV 快速入门案例Demo

    目录 1 开发环境配置 1 1 软件版本 1 2 具体配置 1 3 程序框架 2 程序代码 2 1 Demo头文件 QuickDemo h 2 2 Demo源代码 QuickDemo cpp 2 3 测试代码 test450 cpp 1 开
  • 没有计算机基础如何学习Java、Python或者前端?

    这是一个学习为主的时代 没有自我驱动能力很容易被淘汰 在大家的固有印象中就会觉得科班出身的就一定优秀 非科班相对来说就不专业 其实不尽然 一 非科班怎么学编程 科班在计算机基础方面 计算机基础原理 计算机网络 数据结构和算法 操作系统这些方
  • 作业:修改JSP注册页面

    恢复内容开始 表单 userLogin jsp
  • 一篇文章教你Pytest快速入门和基础讲解,一定要看!

    前言 目前有两种纯测试的测试框架 pytest和unittest unittest应该是广为人知 而且也是老框架了 很多人都用来做自动化 无论是UI还是接口 pytest是基于unittest开发的另一款更高级更好用的单元测试框架 出去面试
  • MySQL利用Navicat导出数据字典

    数据字典是一名DBA需要维护的重要内容 可以通过db直接查看 也可以导出到excel后进行查看 1 利用mysql的information schema中的COLUMNS表 和navicat中的导出功能实现快速导出数据字典 SQL sele
  • UnityWebGL调研(3) 项目打包

    之前单独打包项目中用到的插件的Demo场景都没有问题 开始尝试打包项目参加 结果有问题 打包能够成功 但是运行有问题 提示中找不到问题所在 然后这个是新项目 考虑用Unity2019 2 1f打包看看 和之前一样 逐个打包插件的Demo 都