delegate

C#总结(七)动态加载C++动态链接库

妖精的绣舞 提交于 2020-08-10 12:11:26
原文: C#总结(七)动态加载C++动态链接库 C#调用C++ 链接库的方式分为静态调用和动态调用这两种方式。静态调用之前的文章里面都有介绍,使用.net 提供的DllImport 导入相关的C++ 库即可。请看之前的文章, https://www.cnblogs.com/zhangweizhong/p/8119340.html 。 今天介绍动态调用的方法。很多时候,Dll库的目录可能是变化的,或是有些场景,需要根据具体的情况,来动态加载这些Dll库。这样使用静态调用的方式就很不方便,C#中我们经常通过配置动态的调用托管Dll,那么是不是也可以这样动态调用C++动态链接呢? 只要通过LoadLibrary, GetProcess, FreeLibrary这几个函数是可以动态调用动态链接的(它们包含在kernel32.dll中)。 原理 LoadLibrary ( string lpFileName):载入指定的动态链接库,并将它映射到当前进程使用的地址空间。载入成功后即可访问库内保存的资源 , 除了LoadLibrary 方法,还有一个类似的 LoadLibraryEx 方法。 GetProcAddress (int hModule, string lpProcName):GetProcAddress函数检索指定的动态链接库(DLL)中的输出库函数地址。 如果函数调用成功

Spring Cloud升级之路

本秂侑毒 提交于 2020-08-10 12:06:14
本系列示例与胶水代码地址: https://github.com/HashZhang/spring-cloud-scaffold 负载均衡Ribbon替换成Spring Cloud Load Balancer Spring Cloud Load Balancer 并不是一个独立的项目,而是 spring-cloud-commons 其中的一个模块。 项目中用了 Eureka 以及相关的 starter,想完全剔除 Ribbon 的相关依赖基本是不可能的,Spring 社区的人也是看到了这一点,通过配置去关闭 Ribbon 启用 Spring-Cloud-LoadBalancer 。 spring.cloud.loadbalancer.ribbon.enabled=false 关闭ribbon之后,Spring Cloud LoadBalancer就会加载成为默认的负载均衡器。 Spring Cloud LoadBalancer 结构如下所示: 其中: 全局只有一个 BlockingLoadBalancerClient ,负责执行所有的负载均衡请求。 BlockingLoadBalancerClient 从 LoadBalancerClientFactory 里面加载对应微服务的负载均衡配置。 每个微服务下有独自的 LoadBalancer , LoadBalancer

iOS-苹果登陆授权(AppleID SignIn)

别等时光非礼了梦想. 提交于 2020-08-10 10:07:53
why do it 如果你的App中包含或涉及到第三方登录(例如:QQ登陆、微信登陆等),就必须接入苹果登陆,如果不适配苹果推出的Sign In With Apple审核将会被拒绝。 what is Sign In With Apple 其实和平时的一些第三方登陆一样,通过授权,可以拿到用户名,邮箱地址,用户ID等信息,接入 Sign In With Apple 后, 应用程序或网站中显示“ 通过Apple登录”按钮,意味着可以使用他们已有的Apple ID进行点击或登录,而无需填写表格,验证电子邮件地址和选择密码等操作;提供了一种新的,更私密的方式登陆。 接入 Sign In With Apple 一、首先手机必须是iOS 13(包含iOS 13)以上的iOS系统 二、项目 Bundle ID(Bundle identifier)勾选 Sign In With Apple 功能,然后保存 三、Xcode 配置 Singing & Capabilities 四、添加 AuthenticationServices.framework 库 五、代码集成 引入头文件 #import <AuthenticationServices/AuthenticationServices.h> 添加代理 <ASAuthorizationControllerDelegate,

彻底弄懂Spring中Bean的解析、创建和使用

淺唱寂寞╮ 提交于 2020-08-10 09:38:23
Spring加载Bean、实例化Bean、获取Bean流程 本文旨在通过分析源码的方式,来剖析Spring加载Bean、实例化Bean、获取Bean的流程,部分核心内容会在源码中说明。内容比较枯燥,慎入! 第一步,启动一个Spring项目 Spring启动入口 从 官方文档 中我们可以获取到下面这种Spring的启动方式。 我们传入一个test.xml文件 ApplicationContext context = new ClassPathXmlApplicationContext("classpath:/spring/test.xml"); xml文件内容 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd "> <bean id="stringutil" class="com

大白话说Java反射:入门、使用、原理

浪尽此生 提交于 2020-08-10 07:41:23
文章首发于 【博客园-陈树义】 ,点击跳转到原文 《大白话说Java反射:入门、进阶、原理》 反射之中包含了一个「反」字,所以想要解释反射就必须先从「正」开始解释。 一般情况下,我们使用某个类时必定知道它是什么类,是用来做什么的。于是我们直接对这个类进行实例化,之后使用这个类对象进行操作。 Apple apple = new Apple(); //直接初始化,「正射」 apple.setPrice(4); 上面这样子进行类对象的初始化,我们可以理解为「正」。 而反射则是一开始并不知道我要初始化的类对象是什么,自然也无法使用 new 关键字来创建对象了。 这时候,我们使用 JDK 提供的反射 API 进行反射调用: Class clz = Class.forName("com.chenshuyi.reflect.Apple"); Method method = clz.getMethod("setPrice", int.class); Constructor constructor = clz.getConstructor(); Object object = constructor.newInstance(); method.invoke(object, 4); 上面两段代码的执行结果,其实是完全一样的。但是其思路完全不一样,第一段代码在未运行时就已经确定了要运行的类(Apple)

iOS开发——内存优化

吃可爱长大的小学妹 提交于 2020-08-10 02:16:16
前言: 当app经过一段儿时间的迭代,往往会出现一些性能问题,这时能够协助开发解决这些性能问题也成为我们测试的重要工作。凑巧最近一段时间就一直在协助开发去进行app内存优化。这里整理了一份关于内存优化的心得分享给大家。 目的: 首先我们先要明确我们的目的,在保证程序运行流畅的前提下尽可能的优化使用内存。所以千万不要掉进为了优化而优化的陷阱。程序要先保证能运行,然后再谈良好运转。所以解决问题比较宽泛,必要的时候在交互或者运转机制上小动刀子来保证既能完成任务,程序又能正常运转,不必去对代码进行完全重构。毕竟在优化效率达到上限的时候,只能用时间换空间了。 1. 用ARC管理内存 ARC(Automatic ReferenceCounting, 自动引用计数),它避免了最常见的由于我们忘记释放内存所造成的内存泄露。它自动为你管理retain和release的过程,所以你就不必去手动管理了。编写代码的时候很容易忘掉结尾的release。而ARC会自动在底层为你做这些工作。除了帮你避免内存泄露,ARC还可以帮你提高性能,它能保证释放掉不再需要的对象的内存。 2. 在正确的地方使用 reuseIdentifier 一个开发中常见的错误就是没有给UITableViewCells, UICollectionViewCells设置正确的reuseIdentifier。 为了性能最优化,table

C#总结(七)动态加载C++动态链接库

半世苍凉 提交于 2020-08-10 02:10:26
C#调用C++ 链接库的方式分为静态调用和动态调用这两种方式。静态调用之前的文章里面都有介绍,使用.net 提供的DllImport 导入相关的C++ 库即可。请看之前的文章, https://www.cnblogs.com/zhangweizhong/p/8119340.html 。 今天介绍动态调用的方法。很多时候,Dll库的目录可能是变化的,或是有些场景,需要根据具体的情况,来动态加载这些Dll库。这样使用静态调用的方式就很不方便,C#中我们经常通过配置动态的调用托管Dll,那么是不是也可以这样动态调用C++动态链接呢? 只要通过LoadLibrary, GetProcess, FreeLibrary这几个函数是可以动态调用动态链接的(它们包含在kernel32.dll中)。 原理 LoadLibrary ( string lpFileName):载入指定的动态链接库,并将它映射到当前进程使用的地址空间。载入成功后即可访问库内保存的资源 , 除了LoadLibrary 方法,还有一个类似的 LoadLibraryEx 方法。 GetProcAddress (int hModule, string lpProcName):GetProcAddress函数检索指定的动态链接库(DLL)中的输出库函数地址。 如果函数调用成功,返回值是DLL中的输出函数地址。 如果函数调用失败

如何在框架中使用DevExpress TreeList和TreeListLookupEdit控件

只愿长相守 提交于 2020-08-08 18:45:04
DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅、美观且易于使用的应用程序。DevExpress WinForm v20.1全新发布,想要体验? 点击下载>> DevExpress提供的树形列表控件TreeList和树形下拉列表控件TreeListLookupEdit都是非常强大的一个控件,它和我们传统Winform的TreeView控件使用上有所不同,我一般在Winform开发中根据情况混合使用这些控件,不过整体来看,基于DevExpress的TreeList和TreeListLookupEdit表现相对比较好看一些,本文主要介绍这两个控件在实际Winform项目中的使用处理。 DevExpress TreeList控件的使用 例如在菜单管理中,我们知道菜单一般情况下是层次节点的,我们为了直观显示的需要,一般把菜单用树列表控件进行展示,其中就会用到我们说的TreeList控件,如下界面所示。 其中TreeList和一个输入SearchControl来一起协同使用,可以提高界面的友好性,我们可以通过输入关键字进行节点的过滤显示。 如输入过滤内容后查询过滤树列表节点,如下所示,这样可以给用户快速模糊检索指定的树节点。 有了大概的感官认识,我们来了解下TreeList控件的使用情况。在菜单界面的设计视图下

C#中动态调用DLL动态链接库

感情迁移 提交于 2020-08-08 17:36:29
原文: C#中动态调用DLL动态链接库 其中要使用两个未公开的Win32 API函数来存取控制台窗口,这就需要使用动态调用的方法,动态调用中使用的Windows API函数主要有三个,即:Loadlibrary,GetProcAddress和Freelibrary。步骤如下: 1. Loadlibrary: 装载指定DLL动态库 2. GetProcAddress:获得函数的入口地址 3. Freelibrary: 从内存中卸载动态库 但是C#中是没有函数指针,无法直接使用GetProcAddress返回的入口地址。后来找到资料,其实.NET 2.0新增了Marshal.GetDelegateForFunctionPointer 方法可以满足这个要求,MSDN里的解释是:将非托管函数指针转换为委托。 后面的事就简单啦,我把它编成了一个类来方便调用。 using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; namespace feiyun0112.cnblogs.com { public class DllInvoke { Win API #region Win API [DllImport( " kernel32.dll " )]

2020年面向高级开发人员的iOS面试题总结(附答案)

北城余情 提交于 2020-08-08 07:37:09
前言: 欢迎关注 我的简书 查看更多好文章 这是许多硅谷公司用来衡量iOS候选人资历水平的一系列问题。 这些问题涉及iOS开发的各个方面,旨在触及对平台的广泛理解。 毕竟,高级开发人员应该能够从头到尾地发布完整的iOS产品。 这绝不是一个详尽的列表,但它可以帮助你为即将到来的技术iOS面试做准备。 目录 你使用的最新版本的iOS是什么?你喜欢什么,为什么? 什么是iOS应用程序,你的代码适合哪里? 你喜欢或不喜欢什么Swift特性?为什么? 内存管理在iOS上如何处理? 你对单身人士有什么了解?你会在哪里使用一个,你不在哪里? 你能否解释一下Delegate和KVO有什么不同? iOS应用中通常使用哪些设计模式? 你知道除了常见的可可模式外还有哪些设计模式? 你能否解释并展示SOLID原则的例子? 你有什么选择在iOS上实现存储和持久性? 你有什么选择在iOS上实现网络和HTTP? 如何以及何时需要在iOS上序列化和映射数据? 在iOS上布置UI有什么选择? 你将如何优化动态大小的表或集合视图的滚动性能? 你将如何在iOS上执行异步任务? 你如何管理依赖关系? 你如何在iOS上调试和配置文件? 你有TDD经验吗?你如何在iOS上进行单元和UI测试? 你编码审查和/或配对计划? 在下面的章节中,我们将讨论每个问题,背后的原因,预期的答案,以及可能为面试官带来危险的答案。 1