.NET周报 【5月第3期 2023-05-21】

国内文章

C# 实现 Linux 视频会议(源码,支持信创环境,银河麒麟,统信UOS)

http://www.cnblogs.com/shawshank/p/17390248.html

信创是现阶段国家发展的重要战略之一,面对这一趋势,所有的软件应用只有支持信创国产化的基础软硬件设施,在未来才不会被淘汰。那么,如何可以使用C#来实现支持信创环境的视频会议系统吗?答案是肯定的。

本文讲述如何使用C#来实现视频会议系统的Linux服务端与Linux客户端,并让其支持国产操作系统(如银河麒麟,统信UOS)和国产CPU(如鲲鹏、龙芯、海光、兆芯、飞腾等)。

[MAUI】在.NET MAUI中复刻苹果Cover Flow

http://www.cnblogs.com/jevonsflash/p/17419483.html

这篇文章介绍了Cover Flow,它是iTunes和Finder中的一个视图选项,允许用户使用水平滚动的图像查看他们的音乐库或文件。文章详细介绍了Cover Flow的交互设计和实现原理,以及如何使用.NET MAUI实现跨平台支持。Cover Flow的核心算法是对专辑图片进行3D变换(3DTransform),在Skia中,3D变换是通过矩阵乘法实现的。文章还介绍了视图元素的3D变换(3DTransform)中,以视图元素的Y或X轴作为旋转中心做旋转,称之为3D旋转。最后,文章提到了Skia 本身是一个开源图形库,它提供适用于各种语言和硬件平台的通用 API,根据本博文提到的算法,你可以用Skia尝试在你擅长的平台上实现相同的效果。

在Winform中一分钟入门使用好看性能还好的Blazor Hybrid

http://www.cnblogs.com/hejiale010426/p/17419290.html

这篇文章介绍了如何使用Masa Blazor组件库,通过创建 ServiceCollection ,用于注册服务,在和BlazorWebView进行绑定,将指定的html和BlazorWebView绑定以后在对于html内的id为 app 的元素进行Blazor组件的绑定绑定到Blazor组件的 App 组件中。文章详细介绍了Masa Blazor组件库的使用方法,包括如何在Winform的MainFrom的文件中创建 ServiceCollection ,用于注册服务,在和BlazorWebView进行绑定,将指定的html和BlazorWebView绑定以后在对于html内的id为 app 的元素进行Blazor组件的绑定绑定到Blazor组件的 App 组件中;以及如何在 MApp 中使用 Masa Blazor 的组件,所有 Masa Blazor 的组件都必须在 MApp 中使用。

【源码解读】asp.net core源码启动流程精细解读

http://www.cnblogs.com/1996-Chinese-Chen/p/17417300.html

自从ASP.NET Core发布至今已7年,我接触了4年并一直关注源码。尽管主要使用Winform,但始终积极参与QQ群讨论。几年前曾计划解读ASP.NET Core源码,但因篇幅有限,未能详述。上月底决定以直播形式讲解源码,于5月18日在微信直播和哔哩哔哩录制。由于不熟悉直播及源码众多,节奏欠佳,导致观众较少,为此道歉。之后总结直播内容并补充原计划未说之话,包括直播总结、开发者提升认知与逻辑思维能力的建议。现已完成整理ASP.NET Core源码解读文档,希望对大家有所帮助。

C#中BitConverter.ToUInt16、BitConverter.ToUInt32原理与用法详解

http://www.cnblogs.com/event/p/17414103.html

如题,该文章讨论了C#中BitConverter.ToUInt16、BitConverter.ToUInt32原理与用法详解。

一个.Net开发的功能强大、易于使用的流媒体服务器和管理系统

http://www.cnblogs.com/chingho/p/17393098.html

这是基于.Net Core开发的,跨平台的开源项目;支持多种音视频格式,如MP3、MP4、AVI、WMV、FLV等;支持本地管理与远程管理,让管理员可以轻松的管理视频资源。

而且该项目还提供多平台的客户端,支持Web、桌面、Liunx、安卓、苹果等平台的客户端,让用户可以随时随地观看视频。

记一次 Visual Studio 2022 卡死分析

http://www.cnblogs.com/huangxincheng/p/17412584.html

最近不知道咋了,各种程序有问题都寻上我了,你说 .NET 程序有问题找我能理解,Windows 崩溃找我,我也可以试试看,毕竟对 Windows 内核也知道一丢丢,那 Visual Studio 有问题找我就说不过去了,但又不好拒绝,就让朋友发下卡死的 dump 我看一看。

原来.NET写的Linux桌面这么好看?

http://www.cnblogs.com/hejiale010426/p/17410664.html

本文将讲解如何使用Blazor运行跨平台应用,应用到的技术有以下几点

  • Blazor
  • Masa Blazor
  • Photino.Blazor
  • Ubuntu

用于验证跨平台性,并且是否提高开发效率,Blazor和Photino一块使用的技术称为Blazor Hybrid

.NET通过源码深究依赖注入原理

http://www.cnblogs.com/Z7TS/p/17402544.html

依赖注入 (DI) 是.NET中一个非常重要的软件设计模式,它可以帮助我们更好地管理和组织组件,提高代码的可读性,扩展性和可测试性。在日常工作中,我们一定遇见过这些问题或者疑惑。

  1. Singleton服务为什么不能依赖Scoped服务?
  2. 多个构造函数的选择机制?
  3. 源码是如何识别循环依赖的?

虽然我们可能已经知道了答案,但本文将通过阅读CLR源码的方式来学习DI实现机制,同时也更加深入地理解上述问题。如果您不想阅读源码,可以直接跳至文末的解决方案。

C# 中的“智能枚举”:如何在枚举中增加行为

http://www.cnblogs.com/liqingwen/p/17407424.html

  • 枚举的基本用法回顾
  • 枚举常见的设计模式运用
    • 介绍
  • 智能枚举
    • 代码示例
    • 业务应用
  • 小结

记一次 .NET 某医院门诊软件 卡死分析

http://www.cnblogs.com/huangxincheng/p/17401330.html

前几天有位朋友找到我,说他们的软件在客户那边卡死了,让我帮忙看下是怎么回事?我就让朋友在程序卡死的时候通过 任务管理器 抓一个 dump 下来,虽然默认抓的是 wow64 ,不过用 soswow64.dll 转还是可以的.

常用设计模式之.Net示例代码合集

http://www.cnblogs.com/chingho/p/17237462.html

每一次初学者粉丝朋友,在后台向我咨询编程问题,我除了给他们指导学习路线,我都会建议他们学完基础知识后,一定要要注重编程规范,学习设计模式,修炼内功。

虽然说很多程序员,他们日常主要工作是CRUD,但是学习设计模式也是有助于学习公司的框架,另外设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性,所以学习设计模式对提升编程能力还是很有帮助的。

所以,今天给大家分享一个采用C#编写的,常用设计模式源码合集。

主题

【英文】Visual Studio 2022 - 17.6 现已可用 - Visual Studio 博客

http://devblogs.microsoft.com/visualstudio/visual-studio-2022-17-6-now-available/

Visual Studio 2022 版本 17.6 已经发布。

  • 提高生产力

    • 改进的性能
      • 提高打开和关闭解决方案的速度
      • 改进了性能分析器收集停止速度
    • 增强编辑器
      • 粘性卷轴
      • 多合一搜索
      • 括号对着色
      • 拼写检查器
    • 调试和诊断功能
      • 断点组
      • .NET远程调试
      • Visual Studio 探查器
      • Visual Studio Profiler 中的检测
    • Git 协作工具
      • 改进的合并对话框
      • Git 行取消暂存
      • 链接到 GitHub 问题
  • 构建现代 .NET 和云原生应用程序

    • Android 清单编辑器

    • JavaScript/TypeScript 中的 CodeLens

    • JavaScript/TypeScript 语法高亮显示

    • ASP.NET Core Web API 开发

  • 高效的游戏开发

    • 虚幻引擎日志查看器
    • Tim Jones 的 HLSL 工具扩展
  • 引入 C++ 跨平台代码库

    • CMake调试器

    • z/用于 Unix 的远程文件资源管理器

    • 导入STM32CubeIDE工程

    • Vcpkg

  • 企业管理

    • 在组织的 Intranet 网站上托管和部署 Visual Studio 布局
    • 支持存储库中任何位置的多个 .vsconfig

【英文】宣布 .NET 8 预览版 4 - .NET 博客

http://devblogs.microsoft.com/dotnet/announcing-dotnet-8-preview-4/

  • MSBuild:新的现代终端构建输出
  • MSBuild:新的现代终端构建输出
  • SDK:更新输出路径简化
    • 人工制品
  • 模板引擎:来自 Nuget.org 的包的安全体验
  • NuGet:在 Linux 上验证签名包
  • NuGet:审计安全漏洞的包依赖
  • 库:改进的 UTF-8 支持
    • IUtf8SpanFormattable
  • 引入时间抽象
    • TimeProvider
  • System.Runtime.Intrinsics.Vector512 和 AVX-512
  • 改进的原生 AOT
  • Linux发行版支持
  • System.Text.Json:收集只读成员
  • 改进的 System.Text.Json
    • JsonSerializer.IsReflectionEnabledByDefault
    • JsonSerializerOptions.TypeInfoResolverChain
    • JsonSerializerOptions.TryGetTypeInfo
  • 代码生成
    • 连续寄存器分配
    • 优化 ThreadStatic 字段访问
    • Arm64
    • 矢量化代码

【英文】EF Core 8 预览版 4:原始集合和改进的包含 - .NET 博客

http://devblogs.microsoft.com/dotnet/announcing-ef8-preview-4/

Entity Framework Core 8 Preview 4 已经发布。

此版本包括支持在 LINQ 中转换 Contains、支持 OPENJSON、指定目标 SQL Server 的兼容级别、对原始集合的列支持等。

【英文】.NET 8 Preview 4 中的 ASP.NET Core 更新 - .NET 博客

http://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-preview-4/

.NET 8 Preview 4 中对 ASP.NET Core 的更新。

-Blazor
- Blazor 组件的流式渲染
- 处理 Blazor SSR 表单提交
- 路由到 Blazor 中的命名元素
- 用于 Blazor WebAssembly 应用程序的 Webcli 打包

  • API创作
    • 扩展了对最小 API 中表单绑定的支持
    • 带有 .http 文件的 API 项目模板
    • 原生AOT
    • 使用编译时生成的最小 API 进行日志记录和异常处理
    • 修剪 ASP.NET Core 顶级 API 中的警告注释
    • 通过可配置的 HTTPS 支持减少应用程序大小
    • 更新工人服务模板
    • 添加在 slim builder 中配置的默认服务
    • 更改 API 模板 JSON 配置
    • 对编译器生成的 IAsyncEnumerable 特殊类型的 JSON 序列化支持- 身份验证和授权
    • 身份 API 端点
    • 更好地支持 IAuthorizationRequirementData 中的自定义授权策略
  • ASP.NET 核心指标

【英文】Rx.NET v6.0 现已可用

http://endjin.com/blog/2023/05/rx-dotnet-v6-released

Rx.NET v6.0 已经发布。

此版本包括 .NET 6/7 支持、修整支持、使用 snupkg 提供符号以及其他改进。

本文包括对 Async Rx.NET alpha 的介绍、v6.0 中的更新以及未来的发展。

【英文】Visual Studio 2022 17.7 预览版 1 已发布!- Visual Studio 博客

http://devblogs.microsoft.com/visualstudio/visual-studio-2022-17-7-preview-1-is-here/

Visual Studio 2022 版本 17.7 Preview 1 已经发布。

  • 生产力
    • 比较文件
    • 改进的多分支图和 Git 存储库
    • 复制文本并删除缩进
    • 增强的多合一搜索
  • .NET 和云开发
    • 对 .NET 6 和 .NET Standard 的 IntelliTest 支持
    • 将 Blazor WebAssembly 发布到 Azure 静态 Web 应用
  • C++ 和游戏开发
    • 虚幻引擎 C++ 宏格式
    • 虚幻引擎 C++ 命名约定检查器

【英文】Hot Reload 支持修改泛型! - .NET 博客

http://devblogs.microsoft.com/dotnet/hot-reload-generics/

在更改泛型代码时讨论 .NET 8 对热重载的支持。

现在在以下场景中支持热重载:

  • 向(非)泛型类型添加新的(静态、实例)方法
  • 向(非)泛型类型添加新的(静态、实例)泛型方法
  • 编辑(非)通用类型的现有(静态,实例)方法
  • 编辑(非)通用类型的现有(静态,实例)通用方法

【英文】使用 System.ServiceModel 6.0 调用 WCF/CoreWCF 的客户端支持就在这里! - .NET 博客

http://devblogs.microsoft.com/dotnet/wcf-client-60-has-been-released/

发布 System.ServiceModel 6.0,这是一个调用 WCF/CoreWCF 的 WCF 客户端。

System.ServiceModel 是 Microsoft 支持的 WCF 客户端库。

此版本包括添加 NetNamedPipe 支持、删除 .NET Standard 和 .NET Framework 支持以及弃用 System.ServiceModel.Duplex 和安全性的更新。

【英文】ReSharper 和 Rider 2023.1.2 – 发布了更多错误修复 | .NET 工具博客

http://blog.jetbrains.com/dotnet/2023/05/17/rsrp-and-rider-2023-1-2-bug-fixes/

ReSharper 和 Rider 2023.1.2 发布。

此版本修复了各种错误。

【英文】Xamarin.Forms 和 Essentials 现在以 Android 13(预览版)为目标 - Xamarin 博客

http://devblogs.microsoft.com/xamarin/xamarin-forms-essentials-target-android13-preview/

Xamarin.Forms 和 Essentials 现在可以面向 Android 13(预览版)。

.NET 和 .NET MAUI 已经支持 Android 13。

【英文】在 Build 2023 上为 Visual Studio 做好准备:加入数以万计的在线人群!- Visual Studio 博客

http://devblogs.microsoft.com/visualstudio/get-ready-for-visual-studio-at-build-2023-join-tens-of-thousands-online/

在 5 月 23 日至 25 日的 Microsoft Build 2023 上介绍与 Visual Studio 相关的会议。

文章、幻灯片等

【英文】ML.NET 模型生成器中的对象检测 - .NET 博客

http://devblogs.microsoft.com/dotnet/object-detection-ml-dotnet-model-builder/

使用 ML.NET 模型生成器进行对象检测的介绍。

【英文】.NET 中的 ChatGPT 入门 - .NET 博客

http://devblogs.microsoft.com/dotnet/get-started-chatgpt-azure-dotnet/

使用 .NET 中的 OpenAI API 的系列。 ChatGPT(聊天和提示)的描述。

【英文】Sticky Scroll:保持在正确的上下文中 - Visual Studio 博客

http://devblogs.microsoft.com/visualstudio/sticky-scroll-stay-in-the-right-context/

介绍 Visual Studio 2022 17.6 中添加的粘性滚动功能。

【英文】在 .NET MAUI 上从零开始的日历控件

http://dev.to/serhii_korol_ab7776c50dba/calendar-control-from-scratch-on-net-maui-5dh6

一篇关于使用 .NET MAUI 从头开始​​创建日历控件的文章。

【英文】使用 Octokit.GraphQL 与 GitHub 讨论 API 交互

http://andrewlock.net/using-octokit-graphql-to-interact-with-the-github-discussions-api/

如何使用 Octokit.GraphQL NuGet 包的 GitHub 讨论中的 API。

本文介绍了如何获取和创建讨论、速率限制等。

【英文】AWS 无服务器解决方案的集成测试

http://dev.to/ohalay/integration-tests-for-aws-serverless-solution-12aj

如何在 AWS 无服务器配置中集成测试您的应用程序。

它介绍了如何通过使用 LocalStack 运行本地容器来运行单元测试。

【英文】如何从外部应用程序控制 Visual Studio - Gérald Barré

http://www.meziantou.net/control-visual-studio-from-an-external-application.htm

如何通过 COM 获取和操作 Visual Studio 实例。

【英文】编译查询在 C# EF Core 上真的有效吗?

http://goatreview.com/are-compiled-queries-efficient-efcore/

关于 Entity Framework Core 的编译查询是否有效。

编译查询对某些模式有效,但有许多模式无效,因此我们建议在使用之前测试和检查查询本身。

【英文】.NET 8 中的并发托管服务启动和停止 - Steve Gordon - Code with Steve

http://www.stevejgordon.co.uk/concurrent-hosted-service-start-and-stop-in-dotnet-8

.NET 8 的 Microsoft.Extensions.Hosting 并行启动和停止主机。

本文解释了并行化启动和停止的影响以及如何禁用并行化。

【日文】从 .NET NuGet 包自动将全局使用添加到您的应用程序

http://zenn.dev/nuits_jp/articles/2023-05-15-global-usings

如何创建在安装时自动添加全局使用的 NuGet 包。

【英文】Microsoft Build | 云技能挑战

http://www.microsoft.com/en-US/cloudskillschallenge/build/officialrules/2022

活动与 Build 2023 保持一致。完成挑战后,您将有权参加一次免费的 Microsoft 认证考试。

库、存储库、工具等。

drasticactions/LLaMAMaui

http://github.com/drasticactions/llamamaui

llama.cpp 中 .NET MAUI 的绑定。

http://twitter.com/drasticactions/status/1658867229637898240?s=12

image-20230524212226697

站点、文档等

【英文】简介 - 面向 C#/.NET 开发人员的 Rust 文档

http://microsoft.github.io/rust-for-dotnet-devs/latest/

面向 C#/.NET 开发人员的 Rust 文档。

它解释了 .NET 中的事物如何在 Rust 中表示。

  • microsoft/rust-for-dotnet-devs:C#/.NET 开发人员的 Rust

推文

ClaimsPrincipal 调试器上的显示变得更好的故事。还支持其他 ASP.NET Core 类型。

  • ASP.NET Core ❤️ 调试问题 #48205 dotnet/aspnetcore

http://twitter.com/jamesnk/status/1659366431920898049?s=12

image-20230524212322382


AWS FOSS 基金赞助了 Avalonia UI。

http://twitter.com/dotnetaws/status/1658578068762394625?s=12

image-20230524212346145


这个repo由一组规范的多种语言的Hello World静态编译(AOT)的程序和一个GitHub操作组成,该操作对它们进行编译并汇总大小信息。

http://twitter.com/MStrehovsky/status/1660256662975029248

image-20230524212641722

image-20230524212843759


http://twitter.com/KarenPayneMVP/status/1659904138858360832

image-20230524212930130


http://twitter.com/EgorBo/status/1659555222677585922

image-20230524213024269

image-20230524213056246


http://twitter.com/DamianEdwards/status/1659963802400731141

image-20230524213137441

深入探索

.NET 8.0 Preview 3 和 .NET 8 Preview 4 之间的 API 差异 by carlossanlop Pull Request #8469 dotnet/core

http://github.com/dotnet/core/pull/8469 .NET 8 Preview 3 到 4 API的区别

版权声明

  • 国内板块由 InCerry 进行整理 : http://github.com/InCerryGit/WeekRef.NET
  • 其余内容来自 Myuki WeekRef,由InCerry翻译(已获得授权) : http://github.com/mayuki/WeekRef.NET

由于笔者没有那么多时间对国内的一些文章进行整理,欢迎大家为《.NET周报-国内文章》板块进行贡献,需要推广自己的文章或者框架、开源项目可以下方的项目地址提交Issue或者在我的微信公众号私信。

格式如下:

  • 10~50字左右的标题
  • 对应文章或项目网址访问链接
  • 200字以内的简介,如果太长会影响阅读体验

http://github.com/InCerryGit/.NET-Weekly

.NET性能优化交流群

相信大家在开发中经常会遇到一些性能问题,苦于没有有效的工具去发现性能瓶颈,或者是发现瓶颈以后不知道该如何优化。之前一直有读者朋友询问有没有技术交流群,但是由于各种原因一直都没创建,现在很高兴的在这里宣布,我创建了一个专门交流.NET性能优化经验的群组,主题包括但不限于:

  • 如何找到.NET性能瓶颈,如使用APM、dotnet tools等工具
  • .NET框架底层原理的实现,如垃圾回收器、JIT等等
  • 如何编写高性能的.NET代码,哪些地方存在性能陷阱

希望能有更多志同道合朋友加入,分享一些工作中遇到的.NET性能问题和宝贵的性能分析优化经验。目前一群已满,现在开放二群。

如果提示已经达到200人,可以加我微信,我拉你进群: lishi-wk

另外也创建了QQ群,群号: 264167610,欢迎大家加入。

本文转载于网络 如有侵权请联系删除

相关文章

  • CentOS 7 编译安装MySQL数据库系统

    ApacheHTTPServer作为优秀的Web服务器软件,提供了面向用户的前端应用功能。在实际生产环境中,为了提供更丰富、更强大的Web应用功能,往往还需要有后台数据库、网页编程语言等多种角色的支持。作为一名合格的运维工程师,在Linux系统中搭建MySQL服务系统也是必备的技能之一。MySQL是一个真正的多线程,多用户的SQL数据库服务,凭借其高性能,高可靠和易于使用的特性,成为服务器领域中最受欢迎的开源数据库系统。在2008年以前,MySQL项目由MySQLAB公司进行开发、发布和支持,之后历经Sun公司收购MySQLAB公司,Oracle公司收购Sun公司的过程,目前MySQL项目由Oracle公司负责运营和维护。为了确保MySQL数据库功能的完整性、可定制性,我们决定采用源代码编译安装的方式安装MySQL数据库系统。MySQL5.X系统版本的使用最为广泛,该版本的稳定性、兼容性都不错,我们以mysql-5.6.36.tar.gz为例。其官方网站为:https://www.mysql.com/编译安装MySQL步骤:一、准备工作1.为了避免发生端口冲突、程序冲突等现象,建议先查

  • BeanCopierUtil 工具,比BeanUtil性能高

    packagecom.example.test.utils;importnet.sf.cglib.beans.BeanMap; importorg.springframework.cglib.beans.BeanCopier; importorg.springframework.objenesis.ObjenesisStd;importjava.util.ArrayList; importjava.util.Collections; importjava.util.List; importjava.util.Map; importjava.util.concurrent.ConcurrentHashMap;/** *@authorbianlei *@version1.0 *@date2020/4/2318:55 */ publicclassBeanCopierUtil{ privatestaticThreadLocal<ObjenesisStd>objenesisStdThreadLocal=ThreadLocal.withInitial(ObjenesisStd::new

  • PTA 7-4 素数等差数列 (20 分)

    题目2004年,陶哲轩(TerenceTao)和本·格林(BenGreen)证明了:对于任意大的n,均存在n项全由素数组成的等差数列。例如{7,37,67,97,127,157}是n=6的解。本题就请你对给定的n在指定范围内找出一组最大的解。输入格式:输入在一行中给出两个正整数:n(≤10)为等差素数数列的项数;MAXP(2≤MAXP<105)为数列中最大素数的上界。输出格式:如果解存在,则在一行中按递增序输出等差最大的一组解;若解不唯一,则输出首数最大的一组解。若解不存在,则输出不超过MAXP的最大素数。同行数字间以一个空格分隔,行首尾不得有多余空格。输入样例1: 51000 结尾无空行 输出样例1: 23263503743983 结尾无空行 输入样例2: 10200 结尾无空行 输出样例2: 199 结尾无空行复制解题思路n,MAXP=map(int,input().split()) #n,MAXP=map(int,"51000".split()) #n,MAXP=map(int,"102".split()) importmath

  • 看不懂代码也能做网站(一)---效果演示以及环境搭建

    能搭建什么网站呢?仅供大家参考学习 需要商用盈利请购买正版版权 博客:wordpress 论坛:Discuz(文章只用来介绍如何搭建,支持正版,搭建练习请遵守官方规则) 企业级网站(文章只用来介绍如何搭建,支持正版,搭建练习请遵守官方规则) dedcms phpcms 电商ecshop(文章只用来介绍如何搭建,支持正版,搭建练习请遵守官方规则) 环境搭建能搭建什么网站呢?两种服务器搭建搭建本地服务器下载vmware下载centos6镜像文件购买云服务器以及域名备案购买云服务器域名备案搭建运行环境两种服务器搭建搭建本地服务器下载vmware网上搜索自行下载 安装完成下载centos6镜像文件下载centos6镜像文件 百度搜索下载即可 下载完成后打开vmware 等待完成开启虚拟机 输入刚才设置的密码即可登陆 打开终端 su回车 如果第一次会提醒设置root密码根据提示设置即可 输入ipadd指令 看到192.168.42.141 搭建完成后下载putty点击下载 根据电脑位数选择下载对应的(电脑位数可以我的电脑属性看到) 打开putty 在HostName(orIPadd

  • 深入理解Objective-c中@class的含义

    在Objective-c中,当一个类需要引用另一个类,即建立复合关系的时候,需要在类的头文件中建立被引用类的指针。如:#import @interfaceCar:NSObject { Tire*tires[4]; Engine*engine; }复制实现类我们先省略,如果你直接这么编译,编译器会报错,告诉你它不知道Tire和Engine是什么。这时候有两个选择,一个是import这两个被引用类的头文件,另一个是使用@class声明Tire和Engine是类名。二者的区别在于:import会包含这个类的所有信息,包括实体变量和方法,而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑,后面会再告诉你。 在头文件中,一般只需要知道被引用的类的名称就可以了。不需要知道其内部的实体变量和方法,所以在头文件中一般使用@class来声明这个名称是类的名称。而在实现类里面,因为会用到这个引用类的内部的实体变量和方法,所以需要使用#import来包含这个被引用类的头文件。在编译效率方面考虑,如果你有100个头文件都#import了同一个头文件,或者这些文件是

  • 如何检测处理器是否支持AES-NI指令集?

    本文介绍如何检测处理器是否支持AES-NI指令集,首先我们先了解一下什么是AES-NI指令集。AES-NI指令集高级加密标准指令集(或称英特尔高级加密标准新指令,简称AES-NI)是一个x86指令集架构的扩展,用于Intel和AMD微处理器,由Intel在2008年3月提出。该指令集的目的是改进应用程序使用高级加密标准(AES)执行加密和解密的速度。点击查看详细介绍_______________________________________________________________________________________接下来我们开始步入正题,我们常用的系统分为Linux\Mac\Windows,下面我们将分别介绍这三类系统如何检测处理器是否支持AES-NI指令集。Linux使用命令【grepaes/proc/cpuinfo】即可查看,当此命令能返回内容,说明此服务器的处理器是支持AES-NI的。[root@xxxxx~]#grepaes/proc/cpuinfo flags:fpuvmedepsetscmsrpaemcecx8apicsepmtrrpgemcacmov

  • 分析隐藏在比特币区块链中的Pony C&C服务器

    介绍Redaman是一种通过网络钓鱼攻击活动进行传播的银行恶意软件,主要目标用户为俄语用户。该恶意软件最早出现在2015年,当时该恶意软件被称为RTM银行木马,新版本的Redaman出现在2017年至2018年间。在2019年9月份,CheckPoint的安全研究人员又发现了一个更新的版本,该版本竟然将一个小型C&C服务器的IP地址隐藏在了比特币区块链之中。实际上,我们此前已经看到很多其他的技术会利用比特币区块链来隐藏他们的C&C服务器IP地址,但是在这篇文章中,我们将跟大家分析一种新型的隐藏技术-“Chaining”。感染链攻击者如何在比特币区块链中隐藏C&C服务器?在这个真实的分析样本中,攻击者想要隐藏的IP地址为“185.203.116.47”。为了实现这个目标,攻击者需要使用一个钱包地址:1BkeGqpo8M5KNVYXW3obmQt1R58zXAqLBQ1、攻击者需要将IP地址中的每一个八元位从十进制转换为十六进制:185.203.116.47=>B9.CB.74.2F复制2、攻击者获取前两个八元位,即B9和CB,然后将它们两个反向合并为:B9.

  • Unlink漏洞简单分析

    0x1,堆溢出漏洞;0x2,闲聊:Unlink的难度不小,现在也只能勉强理解;关于unlink的漏洞简单说一下1,第一个判断if(chunksize(p)!=prev_size(next_chunk(p)))复制此判断所代表的含义为检查将从链表中卸下的chunk其size是否被恶意的修改。记录当前size的地方有两处一个是为当前chunk的size字段和下一个chunk(物理地址上相邻的高地址的chunk)的prev_size字段如果这两个字段的值不等,则unlink会抛出异常。第2个判断FD=P->fd即当前空闲chunk所指向的下一个空闲chunk BK=P->bk即当前空闲chunk所指向的上一个chunk FD->bk=BK<=>P->fd->bk=P->bk BK->fd=FD<=>P->bk->fd=P->fd 复制光看这些指针所指向的内容可能有些迷糊实际上就是将当前空闲chunk相连的前后chunk彼此相连即达到了解链的目的,明白了这一点再来看第二个if的安全检查机制if(__bui

  • Python脚本BUG引发学界震动,影响有多大?

    作者|beyondma编辑|Jane来源|CSDN博客近日一篇“Aguidetosmall-moleculestructureassignmentthroughcomputationof(1Hand13C)NMRchemicalshifts”文章火爆网络,据作者看到的资料上看这篇论文自身的结果没有什么问题,但是,这篇论文附带了一份Pyhon程序,这个附带的Python脚本会出现一定问题。为了深入分析,作者第一时间下载了相关代码。代码网址: https://media.nature.com/original/nature-assets/nprot/journal/v9/n3/extref/nprot.2014.042-S2.zip 论文阅读: https://www.nature.com/articles/nprot.2014.042下面来带大家分析一下具体的情况。BUG情况分析从目前看到的资料上看,这个BUG出现在读入“GaussianOutputFiles”,这个函数,在不同的操作系统下会有不同的输出结果。如果读者也下载了相关代码会看到这篇论文本身带有ForPython2和Pytho

  • spring 整合JMS

    Spring整合JMS 点对点模式1消息生产者(1)创建工程springjms_producer,在POM文件中引入SpringJms、activeMQ以及单元测试相关依赖(2)在src/main/resources下创建spring配置文件applicationContext-jms-producer.xml<context:component-scanbase-package="cn.itcast.demo"></context:component-scan> <!--真正可以产生Connection的ConnectionFactory,由对应的JMS服务厂商提供--> <beanid="targetConnectionFactory"class="org.apache.activemq.ActiveMQConnectionFactory"> <propertyname="brokerURL"value="tcp://192.168.

  • 聊聊MySQL系存储库

    聊聊MySQL系存储库早就耳闻TiDB,一直没实操,这两天不忙的功夫,在测试机上手操作了一把TiDB,这个国产NewSQL存储的杰出代表,协议基本兼容MySQL,想必这也是TiDB顺利攫取用户的重要亮点,目前Github上star数超18K+,增长势头不减。MySQL无疑是RDMS数据库中开源、免费的扛把子,从db-engines.com排名上可以看出,除Oracle外,长期占据第二把交椅。MySQLCommunityServer一般来讲,中小企业采用的就是这个社区版本,开源免费,但不提供官方技术支持。最新版本已经更新8.0+,版本命名方式也不同于以往的5.5/5.6/5.7的方式。一如Java,早期会称为JDK1.4/1.5等等,后面版本就称为Java8/9/10/11之类。数据存储也融入了兼容NoSQL的元素,降低了以往Schema预定义的硬伤。但MySQL扩展的硬伤依旧存在,相比时下一些互联网应用的分布式存储库而言,运维成本还是相当高。MariaDB官网地址:https://mariadb.org/,是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可MariaDB的

  • 【Math for ML】解析几何(Analytic Geometry)

    I.范数(Norm)定义:向量空间\(V\)上的范数(norm)是如下函数: \[\begin{align}||·||:V→R,\\x→||x||\end{align}\] 该函数会赋予每个向量\(x\)自身的长度\(||x||∈R\),并且对于\(\lambda∈R,\,\,x,y∈V\)满足如下性质: Absolutelyhomogeneous:\(||\lambdax||=|\lambda|\|x\|\)Triangleinequality:\(\|x+y\|≤\|x\|+\|y\|\) Positivedefinite:\(\|x\|≥0\)且\(\|x\|=0\Leftrightarrowx=0\)\(L^p\)norm公式如右:\(||x||_p=(\sum_i|x_i|^p)^{\frac{1}{p}}\)for\(p∈R,p≥1\).1)\(L^1\)Norm这个也叫Manhattannorm。二范式在零点附近增长很慢,而且有的机器学习应用需要在零点和非零点之间进行区分,此时二范式显得力不从心,所以我们可以选择一范式,即\(L^1\)norm,其表达式为:\(||x||

  • SVN版本管理工具的使用

    一、svn下载https://tortoisesvn.net/downloads.html下载网站http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2407610.html学习网站二、使用步骤1、安装VisualSVN-Server(管理员安装服务器端)2、普通开发人员安装客户端SVN安装后,在任一文件夹右键都会出现“tortoiseSVN",如果没有,则重启电脑3、启动VisualSVNmanager在Repositories上右键-->createnewRepository--->保持默认选项-->仓库名---->完成(仓库文件千万不能删除)在user上添加新用户三、客户端操作1、建立本地版本库    (1)新建项目文件夹"project",在"project"上右键--->SVNCheckout--->从服务端得到仓库的url地址:比如:https://Lenovo-PC/svn/st/     (2)单击accept的第一项    (3

  • 2018-08-05 没有测试用例的代码,根本不应该跑在服务器上

    原文地址什么是单元测试?imageWikipedia对单元测试的定义:在计算机编程中,单元测试(UnitTesting)又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。 在实际测试中,一个单元可以小到一个方法,也可以大到包含多个类。从定义上讲,单元测试和集成测试是有严格的区分的,但是在实际开发中它们可能并没有那么严格的界限。如果专门追求单元测试必须测试最小的单元,反而容易造成多余的测试并且不易维护。换句更严谨一点的说法,我们要考虑测试的场景再去选择不同粒度的测试。单元测试和集成测试即可以手工执行,也可以是程序自动执行。但现在一般提到单元测试,都是指自动执行的测试。所以我们下面提到的单元测试,没有特别注明,都是泛指自动执行的单元测试或集成测试。单元测试入门下面我们先看两个案例,感受一下单元测试到底是什么样子的。例子1:生命游戏单元测试我们先看一个很简单的例子,实现一个康威生命游戏。如果不了解康威生命游戏的话,可以看Wikipedia的介绍。假设我们实现时定义这样的接口:publicinterfaceGame{ voidinit(int[][]shape);

  • EigenFace

    EigenFace在人脸识别历史上应该是具有里程碑式意义的,其被认为是第一种有效的人脸识别算法。1987年SirovichandKirby为了减少人脸图像的表示采用了PCA(主成分分析)的方法进行降维,1991年MatthewTurk和AlexPentland首次将PCA应用于人脸识别,即将原始图像投影到特征空间,得到一系列降维图像,取其主成份表示人脸,因其主成份中就包含人脸的形状,估称EigenFace为“特征脸”。 EigenFace是一种基于统计特征的方法,将人脸图像视为随机向量,并用统计方法辨别不同人脸特征模式。EigenFace的基本思想是,从统计的观点,寻找人脸图像分布的基本元素,即人脸图像样本集协方差矩阵的特征向量,以此近似的表征人脸图像。

  • SCSS 简要教程(常用指令与方法)

    Sass是成熟、稳定、强大的CSS预处理器,而SCSS是Sass3版本当中引入的新语法特性,完全兼容CSS3的同时继承了Sass强大的动态功能。 特性概览 CSS书写代码规模较大的Web应用时,容易造成选择器、层叠的复杂度过高,因此推荐通过SASS预处理器进行CSS的开发,SASS提供的变量、嵌套、混合、继承等特性,让CSS的书写更加有趣与程式化。 变量 变量用来存储需要在CSS中复用的信息,例如颜色和字体。SASS通过$符号去声明一个变量。 $font-stack:Helvetica,sans-serif; $primary-color:#333; body{ font:100%$font-stack; color:$primary-color; } 复制 上面例子中变量$font-stack和$primary-color的值将会替换所有引用他们的位置。 body{ font:100%Helvetica,sans-serif; color:#333; } 复制 嵌套 SASS允许开发人员以嵌套的方式使用CSS,但是过度的使用嵌套会让产生的CSS难以维护,因此是一种不好的实践,下面

  • 【算法】哈希表法四部曲

    哈希表 散列表(Hashtable,也叫哈希表),是根据关键码值(Keyvalue)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash)函数。 关键码值与地址一一映射 适用场景 适用于关键字与某一值一一对应,即可使用键值对map,而hashmap是键值对中较好的实现类 适合计数 记录一个元素的出现次数 记录一个元素的位置 关键词:一一对应 遍历哈希表的四种方式 注意区分下面的方法: map.entrySet() map.keySet map.values:需要注意这里是values,而不是valueSet,毕竟value值是可以重复的,不是一个集合set map.containsKey() map.containsValue() publicstaticvoidmain(String[]args){ Map

  • 使用命令行导出 mysqldump 命令行使用

    使用命令行导出mysqldump命令行使用 #备份数据 #mysqldump-h主机-u用户名-p密码数据库表名>物理磁盘位置/文件名 mysqldump-hlocalhost-uroot-p123456schoolstudent>D:/a.sql #mysqldump-h主机-u用户名-p密码数据库表1表2表3>物理磁盘位置/文件名 mysqldump-hlocalhost-uroot-p123456schoolstudentresult>D:b.sql #mysqldump-h主机-u用户名-p密码数据库>物理磁盘位置/文件名 mysqldump-hlocalhost-uroot-p123456school>D:/c.sql #导入数据 #先登录 #mysql-h主机-p密码 mysql-hlocalhost-p123456 #切换到需要导入的数据库use数据库 useschool #登录的情况下,切换到指定的数据库 #source备份文件 sourced:/a.sql #未登录的情况 #mysql-u主机-p密码库名<备份文件 m

  • Tdsql proxy ,命令行看版本好

    Tdsql proxy,命令行看版本好    

  • (转) redis的事务和watch

    redis的事务 严格意义来讲,redis的事务和我们理解的传统数据库(如mysql)的事务是不一样的。 redis中的事务定义 Redis中的事务(transaction)是一组命令的集合。 事务同命令一样都是Redis的最小执行单位,一个事务中的命令要么都执行,要么都不执行。 事务的原理是先将属于一个事务的命令发送给Redis,然后再让Redis依次执行这些命令。 Redis保证一个事务中的所有命令要么都执行,要么都不执行。如果在发送EXEC命令前客户端断线了,则Redis会清空事务队列,事务中的所有命令都不会执行。而一旦客户端发送了EXEC命令,所有的命令就都会被执行,即使此后客户端断线也没关系,因为Redis中已经记录了所有要执行的命令。 除此之外,Redis的事务还能保证一个事务内的命令依次执行而不被其他命令插入。试想客户端A需要执行几条命令,同时客户端B发送了一条命令,如果不使用事务,则客户端B的命令可能会插入到客户端A的几条命令中执行。如果不希望发生这种情况,也可以使用事务。 事务的应用 事务的应用非常普遍,如银行转账过程中A给B汇款,首先系统从A的

  • python redis存入字典序列化存储

    在python中通过redishset存储字典时,必须主动把字典通过json.dumps()序列化为字符串后再存储, 不然hget获取后将无法通过json.loads()反序列化为字典 序列化存储 r=redis_conn() r.hset('wait_task','one',json.dumps({'project':'india','total_size':'15.8MB'})) r.hset('wait_task','two',json.dumps({'project':'india','total_size':'15.8MB'})) r.hset('wait_task','three',json.dumps({'project':'india','total_size':'15.8MB'}))复制   反序列化读取 forkinr.hkeys('wait_task'): d=r.hget('wait_task',k) print(json.loads(d))复制   输出 {'project':'india','total_size':'15.8M

相关推荐

推荐阅读