Sketch中文用户手册(基础与核心功能篇)
本文内容提取并整理自 Sketch中文用户手册。由于官方手册涵盖内容较多,本文抽取了“介绍”、“界面”、“图层”与“图形”等核心基础功能,带你快速入门 Sketch。 介绍Sketch 是一款适用于所有设计师的矢量绘图应用。矢量绘图也是目前进行网页,图标以及界面设计的最好方式。但除了矢量编辑的功能之外,我们同样添加了一些基本的位图工具,比如模糊和色彩校正。 我们尽力让 Sketch 容易理解并上手简单,有经验的设计师花上几个小时便能将自己的设计技巧在Sketch中自如运用。对于绝大多数的数字产品设计,Sketch 都能替代 Adobe Photoshop,Illustrator 和 Fireworks。 为什么选择 SketchSketch 是为图标设计和界面设计而生的。它是一个有着出色 UI 的一站式应用,所有你需要的工具都触手可及。在 Sketch 中,画布将是无限大小的,每个图层都支持多种填充模式;我们有最棒的文字渲染和文本式样,还有一些你一定会爱上的文件导出工具。 必要的话,你可以用无限精准的分辨率无关模式来查看画布,或者打开像素模式来查看每一个像素导出后的样子。 但...
支持通用链接 (Support Universal Links)
支持通用链接 (Support Universal Links)当你支持通用链接(Universal Links)时,iOS 用户可以点击你网站的链接并无缝重定向到你已安装的 App 中,而无需通过 Safari 跳转。如果你的 App 尚未安装,点击你网站的链接将在 Safari 中正常打开你的网站。 与使用自定义 URL Schemes 相比,通用链接为你提供了几个无法比拟的关键优势。具体而言,通用链接具有以下特点: 唯一性。 与自定义 URL Schemes 不同,通用链接不能被其他 App 抢占使用,因为它们使用的是指向你网站的标准 HTTP 或 HTTPS 链接。 安全性。 当用户安装你的 App 时,iOS 会检查你上传到 Web 服务器的一个配置文件,以确保你的网站允许你的 App 代表它打开相关的 URL。只有你能够创建和上传此文件,因此你的网站与 App 之间的关联是绝对安全的。 灵活性。 即使你的 App 尚未安装,通用链接也能正常工作。当你的 App 未安装时,点击指向你网站的链接会在 Safari 中打开对应的内容,这完全符合用户的预期。 简单性。 同一...
FRP内网穿透搭建教程(2025最新版)
本文是基于v0.61.2版本的FRP服务搭建流程,包含服务端与客户端配置、防火墙设置、管理面板使用等核心内容。 一、本文环境说明1、一台Linux公网主机。2、一台Mac内网主机。需要开启ssh服务,在设置->通用->共享->远程连接设置中开启。 二、frps服务器搭建1.下载frps1234# 根据CPU架构选择amd64或arm64wget https://github.com/fatedier/frp/releases/download/v0.62.1/frp_0.62.1_linux_amd64.tar.gz# 解压tar -zxvf frp_0.62.1_linux_amd64.tar.gz 2.配置frps1234# 进入解压目录cd frp_0.62.1_linux_amd64# 修改配置文件vi frps.toml 复制配置文件内容: 123456789101112# 绑定端口,端口需要在服务器安全组中开放,如果有安装iptables或ufw等防火墙,也必须开放bindPort = <bind_port># HTTP服务端口,需要...
智能合约开发
一、环境准备本教程基于Mac电脑,这里进行简单说明:Ganache是本地区块链模拟器。Truffle是开发框架,帮助编译、部署和测试合约。Solidity是智能合约的编程语言。 1. 安装Node.js1brew install node 2. 安装Ganache1npm install -g truffle 3. 安装Truffle1npm install -g ganache 4. 安装Solidity1npm install -g solc 二、创建智能合约1234# 1. 创建项目目录mkdir my-contract && cd my-contract2. 初始化Truffle项目truffle init 目录结构说明: 1234├── contracts # Solidity合约目录├── migrations # 部署脚本目录├── test # 测试用例目录└── truffle-config.js # 配置文件 三、创建智能合约在contracts 目录下创建 MultiFunctionToken...
Spring Security+JWT搭建登录系统
本文介绍如何使用Spring Security和JWT构建安全的登录认证系统: Spring Security核心概念 JWT原理及结构 项目搭建步骤 安全配置类实现 JWT工具类开发 认证过滤器实现 完整示例代码 1. 添加依赖123456789<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></dependency><dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-api</artifactId> <version>0.11.5</version></dependency> 2. 安全配置类1234567891011121314...
JetpackCompose自定义注解
注解在Compose中的作用Jetpack Compose中注解主要用于: 标记可组合函数 提供编译时检查 生成代码 优化重组性能 常用内置注解 @Composable - 标记可组合函数 @Preview - 标记可预览的组合函数 @Stable - 表示类型在组合期间是稳定的 自定义注解实现1. 定义注解123@Retention(AnnotationRetention.RUNTIME)@Target(AnnotationTarget.FUNCTION)annotation class LogComposable 2. 注解处理器123456789101112class LogComposableProcessor : AbstractProcessor() { override fun process( annotations: MutableSet<out TypeElement>, roundEnv: RoundEnvironment ): Boolean { roundEnv...
Spring boot集成Activiti的详细步骤和示例代码
本文详细介绍如何在Spring Boot项目中集成Activiti工作流引擎,包括: 添加Maven依赖 配置数据源和Activiti 创建流程定义 部署流程 启动流程实例 任务处理 完整示例代码 1. 添加Maven依赖12345<dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter</artifactId> <version>7.1.0.M6</version></dependency> 2. 配置数据源和Activiti12345678910spring: datasource: url: jdbc:mysql://localhost:3306/activiti username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver a...
阿里ARoute框架的使用详解
什么是ARoute阿里ARoute是阿里巴巴开源的一款Android路由框架,用于解决组件化开发中的页面跳转问题。 核心功能 页面路由:支持Activity、Fragment的路由跳转 服务发现:通过接口查找服务实现 拦截器机制:支持全局和局部拦截 自动注入:支持参数自动注入 基本使用1. 添加依赖12implementation 'com.alibaba:arouter-api:1.5.2'annotationProcessor 'com.alibaba:arouter-compiler:1.5.2' 2. 初始化12345if (isDebug()) { ARouter.openLog(); ARouter.openDebug();}ARouter.init(application); 3. 页面配置1234@Route(path = "/test/activity")public class TestActivity extends AppCompatActivity ...
Vue Component动态组件使用
Vue动态组件(component)全面解析Vue的<component>元素是一个特殊的”元组件”,用于动态渲染组件。 基本用法1<component :is="currentComponent"></component> is属性决定当前渲染哪个组件,可以是: 已注册的组件名(字符串) 组件选项对象 异步组件函数 属性绑定动态组件可以像普通组件一样绑定属性: 123456<component :is="currentComponent" :title="pageTitle" :content="pageContent" :disabled="isDisabled"></component> 事件处理动态组件可以监听和触发事件: 12345<component :is="currentComponent" @click="handleClick" @s...
如何在Vue模版中递归创建元素
递归组件是Vue中一个强大的特性,允许组件在其模板中调用自身。这在处理树形结构数据时特别有用,比如文件目录、评论树等。 基本实现方式1.给组件设置name属性 1234export default { name: 'RecursiveComponent', // ...} 2.在模板中调用自身 123456<template> <div> <!-- 其他内容 --> <recursive-component v-if="hasChildren" :data="childData"/> </div></template> 注意事项 必须设置终止条件,通常通过v-if控制 递归层级不宜过深,可能影响性能 可以通过provide/inject跨层级传递数据 实际应用示例12345678910111213141516// 树形菜单组件export default { name: '...









