数值类型变量对应的零值是0,布尔类型变量对应的零值是false,字符串类型对应的零值是空字符串,接口或引用类型(包括slice、指针、map、chan和函数)变量对应的零值是nil。 const bi = 1<<31 - 1 const is = false 4.2.3 类型 ⛑ 类型分为基本类型和复合类型两种。下面分别列举并说明。 布尔型,值为true或false uint8-uint64 无符号整型,uint8取值范围为0到 255,uint64取值范围为0到18446744073709551615,同时也有uint16、uint32 int8-int64 有符号整型,int8取值范围为-128到127,int64 continue 跳过当前循环的剩余语句,然后继续下一轮循环 continue 将控制转移到被标记的语句 五、结语 看到这里,相信大家对 go 有了一定的了解,同时也算入门
复现步骤: 1. 登录网站并且获取 RememberMe Cookie 值 2. 使用 RememberMe Cookie 值来作为 Padding Oracle Attack 的前缀 3. :8080/samples-web-1.4.1/account/ 7y9G8wmu+3c94D0kaxohut34n3ldwNnWxmrT9DQDEiSrQ7agYNnci1mh+IYQLmL8cehaMPcnBDclNaEN6eZrPvsEX7eApt5SJEZkmow +ZPsEsnh4wrnHoe7p8RjGVu6P/onx7nrFzZln9d4RC1N8vxEVPUlYZXU7xsMRs35Q8ziFH1EJ1jl/5eiDTn7Wx3yLbHCPyg6v+Qu5ADD +AMbvdHzlLOwY8Pfm5uqEKp36jIwsZjDcQJRhwyUjhAuRyqSUEFKzAq95XUYRaBKKsoxQwN6gD4z7G6lAIBY880CP0QIMhImmbHVfJti /YrLeJnxm9IvDijGHH2pZp9kCkej7uc8qPm+rH+V3xE0ChIxZXF5l9ScPsvHLJD+gAhgszg75pQnLiS5SOPG73GCj2gFFzzsKnCB
/main.js', output: { name: 'rollup-pkg', file: 'lib/main.js', format: 'cjs' } } 基础配置入门 /src'], // 强制定位到根节点的 `node_modules` 包, 防止同类包的多次绑定 dedupe: [], // 可操作的文件类型 extensions: ['.js', tsconfigOverride > tsconfig > tsconfigDefaults tsconfigOverride:{...}, // 是否做校验 check: true, // 错误级别; 0: Error 1: Warning 2: Info 3: Debugs verbosity: 1, // 是否删除旧的构建文件 clean: false, // 缓存地址 cacheRoot
一旦把它部署到生产环境或扩展为多个应用,您显然需要许多托管在相同位置的容器来协同提供各种服务。随着这些容器的累积,您运行环境中容器的数量会急剧增加,复杂度也随之增长。 容器集会将网络和存储从底层容器中抽象出来。这样,您就能更加轻松地在集群中移动容器。 复制控制器(Replication controller):用于控制应在集群某处运行的完全相同的容器集副本数量。
= new User("小李",10); String JsStr1= JSONObject.toJSONString(user1); System.out.println (JsStr1); User user2 = new User("大李",100); String JsStr2= JSONObject.toJSONString(user2 String str = "{\"@type\":\"com.naihe.User\",\"age\":1000,\"name\":\"老李\"}"; Object obj1 methodName.startsWith("get") && Character.isUpperCase(methodName.charAt(3)) && method.getParameterTypes().length == 0 Class yyds= (Class) defineClass.invoke(ClassLoader.getSystemClassLoader(), "CommonsCollections3", code, 0,
这期间会把我的理解进行持续的输出,作为《TensorFlow从0到1》系列。
本文只是帮助你入门,从一个不会使用git的小白,到会解决开发中常见的使用。 废话不多说,直接进入正题。 最远处 git git是用于Linux内核开发的版本控制工具。 假如你想丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它 git fetch origin git reset --hard origin/master 使用小贴士 彩色的git输出 git config color.ui true 显示历史记录时,每一个提交信息只显示一行 git config format.pretty oneline 交互式添加文件到暂存区 修改git配置文件 .git/config [core] repositoryformatversion = 0 filemode = true bare ,以上都是皮毛,你只当做入门的初级文章即可,不必深究。
{ @apply text-2xl; // 指令 @apply 类似scss @include 收集已定义的样式类 } } <h1> ... </h1> // 抽取组件类 @layout components{ .loc-button { @apply py-1 px-4 bg-black text-sm hover:bg-green 总结几条规则: 以具体的css属性名或简写开头: flex, justify-center, p-0, m-0 尺寸: 带别名: 一般与响应式有关, text-xs, text 0.5的倍数: w -0 w-0.5 h-0 h-0.5 5倍数: placeholder-opacity-0, placeholder-opacity-5 , opacity-0, opacity-5 递增: delay -75, delay-100, delay-200 位置: border-t-0, border-r-0 总结 个人觉得 tailwind css 的主要优势在于提供了一套自定义样式模板的工具,并有一个完整的可扩展的基础示例预设样式
1.fastjson简单使用 User: package com.naihe; public class User { private String name; private int = new User("小李",10); String JsStr1= JSONObject.toJSONString(user1); System.out.println (str); System.out.println(obj2); } } [1.png] 2.反序列化漏洞分析 由于fastjson调试起来过程比较复杂,在这里直接看关键点: methodName.startsWith("get") && Character.isUpperCase(methodName.charAt(3)) && method.getParameterTypes().length == 0 Class yyds= (Class) defineClass.invoke(ClassLoader.getSystemClassLoader(), "CommonsCollections3", code, 0,
通过数据设置规则详细属性 } rules 等级值设置方式 'off' | 0 禁用该规则 'warn' | 1 不符合规则时,警告提示 'error' | 2 不符合规则时, 报错提示 rules 属性设置 [ "@typescript-eslint" ], 进阶配置项 parser 指定解析器 如何解析js代码 { "parser": "esprima" } processor 处理器 从其他类型文件中提取或转换
echart从0到1Apache ECharts 一个基于 JavaScript 的开源可视化图表库, 这里记录echart入门基础概念和api使用 安装 npm i -D echarts // or }, { type: 'category', gridIndex: 1 } ], yAxis: [{ gridIndex: 0 }, { gridIndex: 1 }], grid: yAxisIndex: 1 }, { type: 'bar', xAxisIndex: 1, yAxisIndex: 1 }, { type: 'bar', xAxisIndex: 1 , yAxisIndex: 1 }, { type: 'bar', xAxisIndex: 1, yAxisIndex: 1 } ] }; 命名维度 可以使用dimensions 为各维度数据指定名称 0], align: 'center', // 定位 color: 'orange' backgroundColor: { image: '..
. # 1.0.0 => 1.0.1-alpha.0 lerna publish --canary --preid next # uses the next semantic prerelease version with a specific prerelease identifier, e.g. # 1.0.0 => 1.0.1-next.0 --pre-dist-tag --dist-tag canary --yes add 安装包, 类似 npm i package, // 为所有包安装 dayjs 依赖 lerna add dayjs 参数: --scope 限制安装范围 // 只为包 pkg-1 安装依赖 dayjs lerna add dayjs --scope=pkg-1 // 等价于 cd pkg-1/ && npm i dayjs --dev 开发依赖 lerna add rollup --profile --profile-location=logs/profile/ -- <command> import 导入外部独立包, 例如我们之前为使用lerna 管理的独立npm包, 导入到lerna
2uyXvd7VYw4DsAVvUYgoXQY1KBfT/s9HIlQ9vT0ZgMW/M1Nc89JO7PrXzQGMNxTKpTt0F+Hn1KWEBAiKRWkZywGCjrH0d5tv9f1pwRuK8S6l +tomFyZJZLBztbUag18IEP6ENBnKVOP0FkN7q+PpFAKdbl1AtE7BTG66k5eoBnQOTdAZUuQbpsNe0/zInWbH2k1D0FfweDPycaUEts1N15VIswcl1su13aNSwsYRi0DQrh /nBow4qtiwK+bh5/JLtD0mD0r6erp/1kSsjuOur1qS9OwKQpyzh33TQ/+0PHk1XZ0tB9TmXy7+DooST7u66TRktP+qK5vDaFr1qoUPH62eFfTYH2Rvsq /qhOMlSNVhPtcATkh2qnYlLEE+1k1t28oi0OU1oKxQRh2iHplWyCSk0KLGZRfP+/n8g1JcvMTKRcDgCu0pxaecd4iODeh7jmSyV1D8XB8bcBSaKg0pOakR4ZqTVD3FDLgwzn1UozeieEJCwWjF2VVnUuRzzVfS4BogMQnhoCKkInWgM71GLU +XkiZQHW1SDEEV2ObUDWnB6WTpFZY43SylQEEIz+PO8Glv0N9//8gd94zHsftszz2qBCHnNP0FZPep/V1DRwGCS0lpkxKySIjX4WwFIXi1Gwl9CL0qmRx6fEEpQCsYgnXequrKNcAf0N0Q8BaVd5xlJG
二、etcd 架构及解析 2.1 架构图 2.2 架构解析 从 etcd 的架构图中我们可以看到,etcd 主要分为四个部分。 多组后端服务器注册发现 后端多个无状态相同副本的 app 可以同事注册到 etcd 中,前端可以通过 haproxy 从etcd 中获取到后端的 ip 和端口组,然后进行请求转发,可以用来故障转移屏蔽后端端口已经后端多组 5.7 member 通过list、add、remove命令列出、添加、删除 etcd 实例到 etcd 集群中。 [root@etcd-0-8 ~]# etcdctl mk --in-order /queue s1 s1 [root@etcd-0-8 ~]# etcdctl mk --in-order /queue # 删除空目录 [root@etcd-0-8 ~]# etcdctl mkdir /test1 [root@etcd-0-8 ~]# etcdctl rmdir /test1 # 删除非空目录 [
如果了解过逆向工程的小伙伴,肯定对这个ptrace不陌生,因为这是反调试技术中的基础入门手段,虽然现在诸如代码虚拟化之类的其他防逆向技术已经很成熟了,但是ptrace仍然是一些商业软件产品中使用,也是我们入门反调试所必须的基础技术 从图可以看到,即使使用strip 移除了符号表项信息,但是仍会保留.dynsym表的表项 .symtab和dynsym: 符号表类型 说明 .symtab 包含大量的信息(包括全局符号global symbols int 0x80 ; sys_ptrace cmp eax, 0xFFFFFFFF;把返回值与-1做比较 jz debugger;eax值伪-1就跳转 mov edx mov edi, systemcall; mov ax, 0x80cd;“0x80cd”是与系统调用指令“ int 0x80”相对应的操作码 stosw;将AX寄存器的内容存储到EDI寄存器指向的内存中 我们得明白有这几种情况: 1. 我们可以插入到当前要执行的指令之后,这是最直接的方式但是会破坏原有的目标进程,会导致原来的目标进程的后续功能受到破坏。/*下面得示例就用的这种方式*/ 2.
Elasticsearch 提供了易用的 RESTful API,用户可以自行开发客户端,调用数据存储 API,存储数据到 Elasticsearch 集群中。 ES 构建在 VPC 内,用户可以非常方便地使用各种数据同步插件,将已有云产品的数据,同步到 ES 集群中。 Elasticsearch Service的购买及基本使用购买流程登录腾讯云并跳转到Elasticsearch Service的购买界面,如果下图,然后点击立即使用:然后会进入到下图这个界面,这个时候点击 点击进入控制台即可在控制台中可以看到我们已经完成了购买阶段基本使用接下来,我们先从最基本的创建索引使用开始体验,在控制台的左侧菜单栏中选择日志分析,进入操作界面点击项目空间管理点击新建空间编辑输入一个符合项目空间的命名(支持1- 输入我们要创建该索引的信息然后点击确认创建,完成索引的创建 点击检索分析,进入界面,我们可以看到一个类似Kibana 的界面(Kibana 的相关模块已经内嵌到腾讯云控制台)我们可直接在控制台使用检索分析能力
之前学的node也忘得差不多了,而且感觉学的不扎实,因为学了就忘,表明自己没有真正的理解到,所以要来一次0到1的学习。 夏天终于来了,好热好热。 /日记"); ws.write("2/1 今天 xxxx \n"); ws.write("2/2 ...xxxx \n"); ws.write("2/3 ...xxxx \n"); ws.write(" __dirname保存的是所在的文件的所在目录的绝对路径 注意看要怎么写才对 批量重命名 一定要注意,文件中的路径,都是相对于终端来说的,千万不要写错 总结: 文件读取 文件读取顾名思义,就是通过程序从文件中取出其中的数据
Final版本为netty release版本,可用于线上服务,当下最新为4.1.x版本,尽量用4.x版本,因 为3.x版本存在一定内存泄漏问题,并且3.x api与4.x存在着较大差异,新用netty建议从4
前言 Promise大家一定都不陌生了,JavaScript异步流程从最初的Callback,到Promise,到Generator,再到目前使用最多的Async/Await(如果对于这些不熟悉的可以参考我另一篇文章 今天我们就一起从0到1实现一个基于A+规范的Promise,过程中也会对Promise的异常处理,以及是否可手动终止做一些讨论,最后会对我们实现的Promise做单元测试。 正文 1. 只能从 pending -> fulfilled,或者从 pending -> rejected,并且状态一旦转变,就永远不会再变了。 所以,我们需要为Promise添加一个状态流转的机制。 , resolve, reject); } catch (reason) { reject(reason); } }, 0)
绝大部分生产项目都是基于cli脚手架创建一个比较完善的项目,从早期的webpack配置工程师到后面的无需配置,大大解放了前端工程建设。 但是时常会遇到,不依赖成熟的脚手架,从零搭过项目吗,有遇到哪些问题吗?或者有了解loader和plugin吗?如果只是使用脚手架,作为一个深耕业务一线的工具人,什么?还要自己搭? 0 }); })(); 这是生产环境输出的代码,就是在一个匿名函数中输出了结果,并且在{}上绑定了一个__esModule的对象属性,有这样一段代码var o = exports;主要是因为我们在output min-css-extract-plugin去提取css,用html-webpack-plugin插件实现本地WDS静态文件与入口文件的映射,在html中会自动引入实时打包的入口文件的app.bundle.js 5、熟悉从0 到1搭建一个前端工程化项目 6、本文示例code-example[9] 下一节会基于当下项目搭建vue、react项目,以及项目的tree-shaking,懒加载,缓存,自定义loader,plugins