IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    love 0
    usubeni fanstay
    发表于
    2023-10-17 17:15:42

    TypeScript Generic Parsing

    Introduction to GenericsGenerics can be understood aspassing types as variables to type definitions, just like passing parameters to functions. For example:functionidentity(arg:Type):Type{returnarg}letoutput=identity('myString')By enclosingTypein, we can pass the type to the generic function. The effect of the above function is: it accepts an argument of typeTypeand returns a result of typeType.SinceTypeis a parameter, its name can be freely chosen. We often useTas the parameter name, so it can be written like this:functionidentity(arg:T):T{returnarg}Type InferenceWhen using a generic function ...继续阅读 (136)


    love 0
    usubeni fanstay
    发表于
    2023-10-17 17:15:42

    Análisis de los genéricos en TypeScript

    Introducción a los genéricosEn pocas palabras, los genéricos se pueden entender comopasar un tipo como variable a una definición de tipo, de la misma manera que se pasan los argumentos a una función, por ejemplo:functionidentity(arg:Type):Type{returnarg}letoutput=identity('myString')Al envolverTypecon, se puede pasar el tipo a la función genérica. El efecto de la función anterior es: aceptar un argumento de tipoTypey devolver un resultado de tipoType.Dado queTypees un parámetro, su nombre es libre, a menudo usamosTcomo nombre de parámetro, por lo que se puede escribir de la siguiente manera:fu ...继续阅读 (121)


    love 0
    usubeni fanstay
    发表于
    2023-10-17 17:15:42

    TypeScriptのジェネリック解析

    ジェネリック入門ジェネリックは、型を変数として型定義に渡すということを簡単に言えば、関数に引数を渡すのと同じようなものです。例えば:functionidentity(arg:Type):Type{returnarg}letoutput=identity('myString')でTypeを囲むことで、ジェネリック関数に型を渡すことができます。上記の関数は、Type型の引数を受け取り、Type型の結果を返します。Typeは引数なので、名前も自由ですが、一般的にはTという名前を使用することがよくあります。したがって、以下のように書くこともできます:functionidentity(arg:T):T{returnarg}型の推論ジェネリック関数を使用する際には、Tの型を明示的に指定する必要はありません(実際、通常はそうします)。この場合、TS はTの型を自動的に推論します:letoutput=identity('myString')// outputもstring型です先ほどの例でも、型を明示的に指定しない場合、TS は"myString"の型をTとして推論するため、関数の戻り値も文字列になります。型の制約デフォルトでは、ジェネリックは任意の型になりますが、これでは可読性が低くなりますし、ジェネリックを適用した型に対して操作やメソッドの呼び出しを行う際には、任意の型であるため必ずチェックに ...继续阅读 (125)


    love 0
    usubeni fanstay
    发表于
    2023-10-17 17:15:42

    TypeScript 泛型解析

    泛型入门泛型简单来说可以理解成把类型当变量传到类型定义里,就如同参数传到函数一样,例如:functionidentity(arg:Type):Type{returnarg}letoutput=identity('myString')使用包裹Type就能把类型传入泛型函数,上面函数的效果是:接受类型为Type的参数,返回类型为Type的结果。既然Type是个参数,那名字自然也是很自由的,我们常常会使用T当参数的名称,所以可以这么写:functionidentity(arg:T):T{returnarg}自我推断在使用泛型函数时可以不明确指出T的类型(而且我们通常都会这么做),此时 TS 将自动推断T的类型:letoutput=identity('myString')// output 也是 string还是上面的例子,如果不显式指定类型,TS 就直接推断"myString"的类型为T,所以这样函数返回的也是字符串。画个圈默认状态下泛型可以是任何类型,这样可读性就很低了,而且在对“施加了泛型”的类型进行操作或调用起方法时,因为是任意类型,必然不能通过检查,为了解决这个问题,可以通过extends给泛型画个圈,框定它的类型。interfaceLengthwise{length:number}functionloggingIdentity(arg:T):T{console.log(arg. ...继续阅读 (216)


    love 0
    Usubeni Fantasy
    发表于
    2023-10-17 17:15:42

    TypeScript Generic Parsing

    Generics can be understood as **passing types as variables to type definitions**, just like passing parameters to functions. For example: ```typescript function identity(arg: Type): Type { ... ...继续阅读 (132)


    love 0
    Usubeni Fantasy
    发表于
    2023-10-17 17:15:42

    Análisis de los genéricos en TypeScript

    En pocas palabras, los genéricos se pueden entender como **pasar un tipo como variable a una definición de tipo**, de la misma manera que se pasan los argumentos a una función, por ejemplo: ```typ... ...继续阅读 (113)


    love 0
    Usubeni Fantasy
    发表于
    2023-10-17 17:15:42

    TypeScriptのジェネリック解析

    ジェネリックは、**型を変数として型定義に渡す**ということを簡単に言えば、関数に引数を渡すのと同じようなものです。例えば: ```typescript function identity(arg: Type): Type { return arg; } let output = identity("myString"); ``` ``で`Type`を... ...继续阅读 (136)


    love 0
    Usubeni Fantasy
    发表于
    2023-10-17 17:15:42

    TypeScript 泛型解析

    泛型简单来说可以理解成**把类型当变量传到类型定义里**,就如同参数传到函数一样,例如: ```typescript function identity(arg: Type): Type { return arg; } let output = identity("myString"); ``` 使用 `` 包裹 `Type` 就能把类型传入泛型函数,... ...继续阅读 (99)


    love 0
    熊的猫
    发表于
    2023-10-17 14:56:19

    Bros!使用 focus 和 blur 事件时别忽略了这一点!

    前言欢迎关注同名公众号《熊的猫》,文章会同步更新,也可快速加入前端交流群!最近小伙伴又遇到一个需求,那就是给复选框选中时添加一个边框样式,大致如下:原本的效果:现在需要的效果:这个外边框的隐藏时机为:复选框未选中点击复选框内容外的区域小伙伴很快就完成了需求,但测试同学反馈了如下的 BUG:正常速度点击快速来回点击很明显快速点击时外部边框并没有按预期效果进行展示/隐藏,为了更好的复现问题,接下来重新实现一遍功能,然后再解决问题。实现 checkbox 组件由于这个checkbox使用的是内部业务组件,并且是通过JSX 语法来实现,所以这里就不使用template 模版语法了。核心分析内容比较简单,要自己实现一个checkbox核心无非以下几点。使用关联为了实现点击文字部分也能达到直接点击checkbox的效果,就可以通过标签来实现,而关联方式又分为两种的id与的for属性保持一致Do you like cheese?直接包裹Click me自定义checkbox样式为了统一展示样式,因此都会使用span 元素来替换原始的 checkbox,并且将原始 checkbox隐藏起来,例如Ant Design、Element UI中的复选框。支持v-model双向绑定自行封装的组件为了方便外部使用,需要支持v-model数据双向绑定的形式,而在组件内部只需要将对应的props和emits事件 ...继续阅读 (142)


    love 0
    coder4
    发表于
    2023-10-17 14:29:29

    Ubuntu制作离线安装源

    需求:在一个没联网的机器安装若干deb包,其中依赖很复杂 1~3在联网机器执行,4在没网机器执行 1 下载所需deb包及其依赖 下面vim后面可以跟多个包 mkdir offline-debs cd offline-debs sudo apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances vim | grep "^\w" | sort -u) 2 打包依赖关系 sudo dpkg-scanpackages -m . /dev/null | gzip -9c > Packages.gz cp Packages.gz ./archives 3 最终打包 tar -zcvf offline-debs.tar.gz offline-debs 4 (在没联网的机器上)使用离线源 sudo tar -zxvf offline-debs.tar.gz […] ...继续阅读 (158)


    love 0
    xuan
    发表于
    2023-10-17 14:06:59

    Marine Aluminum Alloy Sheet

    Marine aluminum alloy sheet most use Al-Mg series and Al-Mg-Si series alloys are the maximum used and feature precise consequences. The alloy of marine aluminum sheet are 5052, 5053H116, 5083H321, 5086, 5A06 aluminum plates, and so forth. As an example, a ship uses aluminum 5.6 and 8 mm thick 5083 aluminum alloy sheet, 10 and 14 mm thick5052 Aluminum Sheet, round head flat aluminum of 5A06 alloy, some aluminum alloy castings. The installation of the superstructure is riveted to the metal deck with 5A05 alloy rivets and measures are taken to save you contact corrosion. The superstructure of the ...继续阅读 (137)


    love 0
    FranzKafka95
    发表于
    2023-10-17 14:03:09

    Android VTS测试实践

    Read Time:2 Minute, 55 SecondVTS (Vendor Test Suite)由一套测试框架和测试用例组成,目的是提高安卓系统 ( 如核心硬件抽象层HAL和依赖库libraries ) 与底层系统软件(如,内核kernel,模块modules,固件firmware等)的健壮性,可依赖性和依从性。Google推出VTS的很重要的一点是由于各Soc厂商对于HAL(Hardware Abstract Layer)的实现都是不同的,为了保证Framework乃至App的正常运行,需要确保各个厂商对于HAL的实现满足规范,基于此推出了VTS,同时也设定了相应的流程认证体系来保证各个厂商对于VTS测试的合规性。VTS有两种测试套件:1.自动化测试(如record-and-replay and fuzzing)2.结构化测试(如gtest and host-driven python)VTS框架和测试用例是为userdebug或者eng版本的设备而设计的,当然其中有些测试用例可以在user版本下执行,此时需要使用相对应的应用软件,也就是VTS Agent APP。在本示例中,以userdebug版本为例,进行自动化测试。原理简介VTS的测试原理简单来讲就是通过编写测试代码,从而与硬件HAL程序进行交互,以测试其接口是否能正常工作;这意味着我们需要接入实际的物理硬件,并运 ...继续阅读 (137)


    love 0
    boke123百科
    发表于
    2023-10-17 13:54:05

    终于彻底放弃了谷歌广告联盟AdSense,账号停用是最后一根稻草

    不记得是从哪一年开始,谷歌广告联盟的中文单价降到了0.01美元,原本我还在大站投放Google Adsense,结果一天几十个点击都不到1美元,所以早在2022年就放弃了。 不过当初对Google Adsense还抱有一丝希望,所以在boke123百科和WYYB网站库中继续投放,哪怕每天是0.01美元收入,甚至是0收入,都从未想过放弃,总想着有一天会恢复高单价! 正因为有着希望,所以一直都挂着Go...查看全文:https://boke123.net/6518.html ...继续阅读 (160)


    love 0
    青南
    发表于
    2023-10-17 12:22:30

    一日一技:Requests被网站识别怎么办?

    现在有很多网站,已经能够通过JA3或者其他指纹信息,来识别你的请求是不是Requests发起的。这种情况下,你无论怎么改Headers还是代理,都没有任何意义。我之前写过一篇文章:Python如何突破JA3,但方法非常复杂,很多初学者表示上手有难度。那么今天我来一个更简单的方法,只需要修改两行代码。并且不仅能过JA3,还能过Akamai。先来看一段代码:123456789101112131415161718192021importrequestsheaders = {'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7','accept-language':'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6','cache-control':'no-cache','dnt':'1','pragma':'no-cache' ...继续阅读 (163)


    love 0
    青南
    发表于
    2023-10-17 12:21:20

    拒绝成为这样的程序员

    产品经理这两天在跟我抱怨他们公司的一个码农。听的我火冒三丈,差点把跟了我十多年的搪瓷水杯砸烂。正好在知识星球和微信群里面,有不少同学跟我咨询程序员的职业发展以及怎么应对三十岁危机。借此机会,我准备用几篇文章来讲讲自己的经验和个人的观点。有这样一批人,他们在大公司里工作了十几年,年龄一大把,还是一个大头兵。他们被号称经验丰富,但实际上是把一年的工作经验用了十多年,对主流的技术一无所知,他们已经无法适应现在的技术发展。这些人,每天看起来非常努力,加班加到很晚。产品经理提需求,他们看起来是在非常努力的完成,但完成的效果非常差。产品给他们提修改意见,他们看起来非常积极地去修改。但是改了A问题,出现B问题,改了B问题,出现C问题,修好C问题,A问题又出现了……产品经理每次一说产出效果不好,他们马上就会蹦出一大堆技术名词,又是什么业界难题,又是什么行业边界,又是什么技术翘翘板,把A改了,那么从理论上说B就一定有问题。ABC三个需求无法同时满足。言语之间时不时蹦出一些他们昨天刷公众号看到的技术名词。但其实真正的原因是这个需求达到了他们知识的边界,而他们又不愿意学习。他们花3个月做出来的东西,换一个应届生2天就能完成,而且效果好十倍。这些人,永远把自己当作一个螺丝钉。产品需要什么,自己就做什么。产品不说的,自己坚决不做。产品找过来,一句“你又没有说要这个功能”就把自己的责任推卸干净。当任务涉及到多 ...继续阅读 (147)


    love 0
    caimouse
    发表于
    2023-10-17 10:58:39

    C#开发的OpenRA游戏之金钱系统(2)

    先定义了Actor的名称,接着用SpawnOffset来描述这个物品与建筑物左上角坐标的相对位置,这个位置是描述物品的出生地点,在这里就是说明采矿车在建成精炼工厂后所在位置。FreeActor就是标记为免费的物品,在这里是一台采矿车,因为它的名称是HARV,而这个名称在前面我们已经看到过它的定义,如果你已经忘记了,就返回前面的文章来查看一下。同理,我们也可以通过属性定义规则,就可以找到类HarvesterInfo,这个类定义采矿车的相关属性,并且设置了缺省值,最后可以调用创建接口。 ...继续阅读 (153)


    love 0
    chokcoco
    发表于
    2023-10-17 10:29:44

    小技巧 | 渐变消失遮罩的多种实现方式

    在知乎看到一题比较有意思的题目。题目大致是如何实现下述图片的效果,如果使用 div 前置遮挡的话,会影响 div 后面的按钮,使其无法被点击。本文将简单介绍几种这个效果的实现方案。渐变配合 pointer-event第一种方式,比较容易想到。使用渐变配合pointer-event实现。简单模拟一下场景,假设我们有如下一个ul列表,超出可以滚动:ButtonButtonButtonButtonButtonButtonul { width: 300px; display: flex; flex-wrap: nowrap; border: 1px solid #999; padding: 5px; overflow-x: scroll; }像是这样:首先,我们需要实现右侧的渐变消失的遮罩效果,这个最常见的,就是通过叠加一个从透明到白色的渐变层实现。这个简单,我们借助元素的伪元素,绝对定位到右侧即可:.g-container { ... &::before { content: ""; position: absolute; right: 0; bottom: 0; top: 0; width: 100px; ...继续阅读 (136)


    love 0
    Philippe Bouchard
    发表于
    2023-10-17 09:37:29

    Les Réglementations en matière de serrurerie à Villeurbanne

    En France, l’industrie de la serrurerie est soumise à diverses réglementations, dont beaucoup varient en fonction du lieu d’opération. La situation n’est pas différente à Villeurbanne, une ville française située dans la métropole de Lyon où plusieurs normes et directives spécifiques s’appliquent aux serruriers. Cet article cherchera à éclairer nos lecteurs sur ces réglementations. Licence […]The postLes Réglementations en matière de serrurerie à Villeurbanneappeared first onInfos et culture du Net. ...继续阅读 (106)


    love 0
    Guang Cai Li
    发表于
    2023-10-17 08:52:22

    用户有connect,resource,dba角色权限后回收dba权限导致无UNLIMITED TABLESPACE权限造成业务中断

    如果授予用户connect,resource时,此时用户已经有了UNLIMITED TABLESPACE权限。此时如果授予用户DBA权限,然后再回收DBA角色;此时会收回UNLIMITED TABLESPACE权限。近期遇到过此种情况,导致业务用户无法使用表空间,造成较为严重的事故,记录一下。测试如下;1.创建用户并授予connect,resource、dba权限并验证SQL> create user test identified by test;User created.SQL> grant connect,resource to test;Grant succeeded.SQL>SQL> select * from dba_role_privs where grantee=’TEST’;GRANTEE GRANTED_ROLE ADM DEF—————————— —————————— — —TEST RESOURCE NO YESTEST CONNECT NO YESSQL> select * ...继续阅读 (107)


    love 0
    飞虫
    发表于
    2023-10-17 06:59:49

    Linux通过iptables禁止特定IP或端口访问服务器

    总有无聊的人不停地尝试攻破你的服务器,而且都是自动化脚本,以下是通过iptables禁止IP和端口访问你的服务器:禁止特定IP访问:iptables -A INPUT -s 91.240.118.187 -j DROP禁止一个IP段访问:iptables -A INPUT -s 91.240.118.1/24 -j DROPiptables -A INPUT -s 83.64.0.0/16 -j DROP禁止特定IP和端口:iptables -A INPUT -s 91.240.118.187 -ptcp --dport 22 -j DROP查看当前IP规则:iptables -L查看拦截IP记录:iptables -vnL解封已禁止的IP:iptables -D INPUT -s 91.240.118.187 -j DROP ...继续阅读 (122)


    love 0
    coder4
    发表于
    2023-10-17 06:46:05

    Typescript小知识

    1 Utility Types(工具类型) keyof 只抽属性名 interface exampleA { name:string; id:number; create:string; } type TypeA = keyof exampleA; // 其实就相当于 type TypeA = 'name'|'id'|'create' let b:TypeA = 'name'; b = 'id'; // b = 'end'; // Type '"end"' is not assignable to type 'keyof exampleA' console.log(b) Partial<T> 所有属性都改成optional 与这个操作相反的是Required<T> interface A { name:string; id:string } let […] ...继续阅读 (156)


    love 0
    zongyan86
    发表于
    2023-10-17 06:15:12

    window.open打开并修改名字

    直接看代码:123456789 const win = window.open(routeData.href, this.windowTitle); win.windowTitle = this.windowTitle; const loop = setInterval(function() { if (win.closed) { clearInterval(loop); } else { win.document.title = win.windowTitle; } }, 1000);web开发分享声明:本文采用BY-NC-SA协议进行授权 |WEB开发分享转载请注明转自《window.open打开并修改名字》 ...继续阅读 (123)


    love 0
    crossoverJie
    发表于
    2023-10-17 06:01:48

    在 kubernetes 环境中实现 gRPC 负载均衡

    前言前段时间写过一篇gRPC的入门文章,在最后还留了一个坑没有填:也就是gRPC的负载均衡问题,因为当时的业务请求量不算大,再加上公司没有对 Istio 这类服务网格比较熟悉的大牛,所以我们也就一直拖着没有解决,依然只是使用了 kubernetes 的 service 进行负载,好在也没有出什么问题。由于现在换了公司后也需要维护公司的服务网格服务,结合公司内部对 Istio 的使用现在终于不再停留在理论阶段了。所以也终有机会将这个坑填了。gRPC 负载均衡负载不均衡原理先来回顾下背景,为什么会有gRPC负载不均衡的问题。由于gRPC是基于 HTTP/2 协议的,所以客户端和服务端会保持长链接,一旦链接建立成功后就会一直使用这个连接处理后续的请求。除非我们每次请求之后都新建一个连接,这显然是不合理的。所以要解决gRPC的负载均衡通常有两种方案:服务端负载均衡客户端负载均衡在gRPC这个场景服务端负载均衡不是很合适,所有的请求都需要经过一个负载均衡器,这样它就成为整个系统的瓶颈,所以更推荐使用客户端负载均衡。客户端负载均衡目前也有两种方案,最常见也是传统方案。这里以 Dubbo 的调用过程为例,调用的时候需要从服务注册中心获取到提供者的节点信息,然后在客户端本地根据一定的负载均衡算法得出一个节点然后发起请求。换成gRPC也是类似的,这里以go-zero负载均衡的原理为例:gR ...继续阅读 (212)


    love 0
    Carl Notes
    发表于
    2023-10-17 05:13:16

    Version Control System, IntelliJ IDEA, Create a Git Repository for a Project and push to multiple remotes-CarlZeng

    IDEA, 无法识别 .yml文件,配置错误,导致: 无法全局搜索,双击会打开别的编辑器怎么搞?File > Setttings >Editor > File and Code Templates中间选Files > 点击+号添加模版输入模版名字: Yml File,后缀名: yml应用,保存 ...继续阅读 (157)


    love 0
    Conan Zhang
    发表于
    2023-10-17 04:48:58

    用R语言进行量化文本分析quanteda

    R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大。 R语言作为统计学一门语言,一直在小众领域闪耀着光芒。直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器。随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长。现在已不仅仅是统计领域,教育,银行,电商,互联网….都在使用R语言。 要成为有理想的极客,我们不能停留在语法上,要掌握牢固的数学,概率,统计知识,同时还要有创新精神,把R语言发挥到各个领域。让我们一起动起来吧,开始R的极客理想。 关于作者: 张丹,分析师/程序员/Quant: R,Java,Nodejs blog: http://blog.fens.me email: bsspirit@gmail.com 转载请注明出处: http://blog.fens.me/r-word-quanteda/ 前言 在互联网的今天,我们每天都会生产和消费大量的文本信息,如报告、文档、新闻、聊天、图书、小说、语音转化的文字等。海量的文本信息,不仅提供扩宽的研究对象和研究领域,也为商业使用带来了巨大的机会。 量化文本分析(Quantitative Analysis of Textual Data),一种新的方式,用结构化数据的方式来管理文本。quanteda包,提出以语料库的形式管理文本,语料库被定义为文本的集合,其中包括 ...继续阅读 (128)


    love 0
    伍华聪
    发表于
    2023-10-17 02:54:00

    循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(9) -- 实现系统动态菜单的配置和权限分配 - 伍华聪

    【摘要】在WPF应用端开发,它的界面类似于Winform端,因此我们也需要对系统的菜单进行动态配置,这样才能把系统的功能弹性发挥到极致,通过动态菜单的配置方式,我们可以很容易的为系统新增所需的功能,通过权限分配的方式,可以更有效的管理系统的菜单分配到不同的角色用户,本篇随笔介绍在WPF应用端中实现系统动态菜单的配置和权限分配。阅读全文 ...继续阅读 (240)


    love 0
    ike‘s blog
    发表于
    2023-10-17 00:00:00

    如何从zookeeper切换为clickhouse—keeper

    简介clickhouse-keeper和zookeeper的功能类似,都能实现数据复制和分布式DDL查询,但也有不同之处,clickhouse分布式表使用zookeeper作为元数据的存储,客户端每次读写分布式表都会读写zookeeper,zookeeper是个小型的日志文件系统,在大范围读写时会进入只读模式。clickhouse官方为了解决这个问题,自己开发了clickhouse-keeper来代替。clickhouse-keeper用C++语言编写,在Clickhouse的21.8版本开始引入,目前22.5版的写性能和zookeeper相当,读的性能比zookeeper好,最新版本已经读写性能都超过zookeeper,更加适配大量数据的Clickhouse集群。对比zookeeper:使用java开发运维不便要求独立部署zxid overflow问题snapshot和log没有经过压缩不支持读的线性一致性keeper:使用c++开发,技术栈与ck统一即可独立部署,又可集成到ck中没有zxid overflow问题读写性能更好支持对snapshot和log的压缩和校验支持读写的线性一致性部署因为当前Clickhouse集群是用zookeeper作为数据复制和分布式查询的,切换为Clickhouse-keeper需要保留现有的数据,所以需要进行数据迁移,官方提供了相关的方法:1、准 ...继续阅读 (38)


    love 0
    accolac99
    发表于
    2023-10-16 20:37:31

    Teachersgram up to 30% off teacher polo shirts Halloween sale for you

    Autumn is a season of vibrant colors, falling leaves, and a time when preschool teachers bring warmth and creativityteacher stampsinto the lives of their little students. It's also a time when comfortable and stylish clothing becomes essential. Preschool teachers need attire that allows them to move freely, while still looking professional and fun. Autumn preschool teacher t-shirts are the ideal solution, offering both comfort and style to educators. In this article, we'll explore the importance of these specially designed t-shirts and discuss some creative designs to inspire preschool teacher ...继续阅读 (177)


    love 0
    Denis &#124; 邓鸿华
    发表于
    2023-10-16 15:16:18

    WPJAM「外部链接」:WordPress 的外链跳转安全提示插件

    我们在一些社交网站浏览的时候,如果点击内容中的外部链接,都会有安全提示,比如知乎:OSChina:这些站点点击外链就会有如下图所示的安全提示,这样就可以提醒用户在即将离开网站的时候,要注意账号和财产安全,特别注意不要被人钓鱼了。在 WordPress 中,点击文章或者评论职工的外链,默认都是直接跳转的,没有经过一下中间安全确认页面这样的步骤,所以我就做了一个类似的插件,名字叫做「外部链接」,它主要的功能就是实现外部链接跳转安全提示,然后还有一些其他外链 SEO 相关的功能。外链跳转安全提示比如这是一个外部链接:http://www.baidu.com/,点击之后跳转到一个安全的提示的页面:是不是一下子自己的网站和这些大网站一样有了安全提示,立马感觉逼格满满。😂 并且比他们 还多了一个跳转到网站首页的按钮,一些不想跳转的用户,还可以跳回网站首页,算是回流那么一丢丢流量吧。另外为了防止被做黑产的利用,这个中间跳转页是无法直接访问的,意思是直接把链接中的 redirect 参数中的域名替换成其他域名是无法访问的,必须要在博客中的链接点击跳转到中间页才行,否则就会显示非法请求:外部链接功能设置WPJAM「外部链接」主要实现了外链安全跳转的功能,但是一样也有相应的设置界面,所以还有其他几个功能,安装之后,在后台「WPJAM」主菜单下就有「链接设置」子菜单中的「外部链接」标签页:首先提供两个开 ...继续阅读 (164)


    love 0
    SHERlocked93
    发表于
    2023-10-16 14:45:19

    C++ 中的左值引用和右值引用

    最近看拷贝复制部分内容的时候看到移动构造函数和移动赋值运算符的声明中有个&&符号,另外在看多线程的时候也看到了这个符号,所以把这个右值引用集中学习了一下,同时做了一些输出,希望也可以帮助到大家。C 语言中的左/右值和 C++ 中的左/右值是不一样的,C 语言中的左值可以位于赋值语句的左侧,右值不能,比较直观,但 C++ 中的左值和右值里面的内容就比较多一些。1. 左值和右值在 C++ 中,左值(Lvalue)是可以被赋值的表达式,通常具有内存地址,可以被引用和修改。例如,变量、数组元素和对象成员等都是左值。右值(Rvalue)则是临时的、无法被赋值的表达式,通常是计算结果或临时对象。右值不能被引用或修改,因为它们没有明确的内存地址。例如,常量、字面量和临时对象都是右值。左值和右值的主要区别在于内存持久性,左值有持久的状态,比如变量,而右值要么是字面常量,要么是在表达式求值过程中创建的临时对象。《C++ Primer》 中对左值和右值有个形象的描述:当一个对象被用作右值的时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中的位置)。所以当一个左值被当成右值使用时,实际使用的是它的内容(值)。在需要右值的地方可以用左值来代替,但是不能把右值当成左值(也就是位置)使用。比如取地址符&,就是对一个左值取地址,取出来的地址是个右值,因为右值只有内容,在内存中没有位 ...继续阅读 (129)

上一页 496/4404 下一页
沪ICP备19023445号-2号
友情链接