自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 资源 (2)
  • 收藏
  • 关注

原创 读懂 Pin,一次搞清 Rust 最难的指针

本文介绍了Rust中的Pin指针及其相关概念。Pin是一种智能指针包装器,用于固定内存地址,防止特定类型被移动。Unpin是标记trait,表示类型可以安全移动,而!Unpin类型需要Pin保护。Pin主要作用于栈上对象地址,确保内部引用安全。文章通过示例展示了Pin的API使用,包括Pin<Box<T>>、自引用结构和Future中的应用。Pin对!Unpin类型才真正有效,而Copy或Unpin类型即使被Pin也能移动。Pin在异步编程中保护自引用结构不被移动,确保Future执

2025-11-09 20:46:13 674

原创 [特殊字符] 从崩溃到稳定:我踩过的 Rust Tokio 线程池坑(含代码示例)

摘要: 本文深入探讨Rust中Tokio线程池的使用陷阱与解决方案。对比了标准库线程、Rayon、Tokio Runtime等不同线程池方案的优缺点及适用场景(CPU密集/IO密集)。重点分析了Tokio使用时的6个关键问题:避免阻塞操作、正确取消任务、合理配置线程池、处理panic传播等,并通过代码示例展示最佳实践。例如使用spawn_blocking处理阻塞任务,设置超时防止资源耗尽等。为Rust异步编程提供了实用的性能优化指南。(148字)

2025-11-05 22:42:40 877

原创 十分钟掌握 Rust json 序列化工具

本文介绍了Rust中使用serde_json库进行JSON序列化和反序列化的核心知识。主要内容包括:1)基础API使用,如结构体序列化和动态JSON访问;2)常用特性,包括可选字段设置、字段重命名;3)自定义序列化逻辑的实现方法。该库提供了高性能且类型安全的JSON处理能力,适用于web/移动开发中的常见场景。通过derive宏和灵活配置,能够高效处理各种JSON格式转换需求,同时支持文件读写等实用功能。

2025-10-30 16:59:08 584

原创 掌握 anyhow,让你的 Rust 错误处理优雅又安全

摘要:Rust错误处理库anyhow的核心应用 anyhow是针对Rust应用层错误处理的轻量级库,解决了标准库错误处理的痛点:泛型爆炸和缺乏上下文追踪。其核心特性包括: 统一错误类型:通过Box<dyn Error>动态分发,避免定义复杂枚举 上下文增强:提供context()/with_context()方法,支持错误链追踪 便捷宏:anyhow!、bail!、ensure!简化错误创建和条件校验 异步友好:满足Send+Sync+'static约束,兼容tokio运行时 panic捕获:可

2025-10-26 16:04:37 1057

原创 Rust Web 初学者必看:用一个宏搞定错误处理和统一返回

Rust过程宏简化Axum响应处理 本文介绍如何通过自定义过程宏简化Axum框架中的JSON响应处理,减少重复代码。主要内容: 项目结构采用Rust workspace组织,分离宏定义和业务逻辑 定义attribute宏json_response,自动封装函数返回值为Axum响应 宏实现解析函数AST,生成包含JSON包装和错误处理的代码 实际应用示例展示宏如何简化路由处理函数的编写 关键点: 使用syn解析源码,quote生成代码 宏自动添加JSON响应封装 workspace组织使宏和业务代码分离 相比

2025-10-19 16:47:28 623

原创 chrome插件:拼多多商家后台自动配置Excel价格小助手

本文介绍了一个Chrome插件的开发过程,旨在通过解析Excel文件自动填充拼多多商家后台价格。项目采用轻量级的浏览器插件方案,相比Selenium等工具更简洁易用。文章详细说明了开发流程:从环境准备、目录结构搭建,到核心文件编写(包括manifest配置、前端界面和数据处理逻辑)。通过SheetJS库解析Excel,将数据注入网页表单,实现价格自动填充功能。该插件简化了运营人员操作,只需上传Excel并点击按钮即可完成批量价格设置,显著提升了工作效率。

2025-10-15 23:36:16 776

原创 Rust 多线程编程入门:从 thread::spawn 步进入 Rust 并发世界

Rust 多线程编程入门:从 thread::spawn 步进入 Rust 并发世界这是Rust九九八十一难的第六篇。本篇聊下Rust的多线程。为了提高性能,多线程几乎在每种语言中都有应用。多线程思想是一致的,但是Rust有独特的所有权设计,还是有需要注意的地方。

2025-10-12 21:42:23 989

原创 Rust的Option碰到指针Box:数据怎么解

Rust中Option与Box指针的配合使用解析 本文通过链表交换节点问题,分析了Option<Box<T>>的常见操作难点。主要内容包括: Box指针与Option的as_ref/as_mut区别:as_ref返回Option<&Box<T>>,as_mut返回Option<&mut Box<T>>; &mut dummy与dummy.as_mut()的区别:前者获取Box的可变引用,后者获取内部数据的可变引用

2025-10-07 20:42:59 679

原创 apache POI 万字总结:满足你对报表一切幻想

本文对比了多种Excel处理技术选型,最终选择Apache POI实现服务端报表功能。通过需求分析,POI在格式兼容、样式设置、公式计算、安全防护等方面表现最全面。文章详细介绍了POI的基本使用,包括创建工作簿、增删改查单元格等操作,并指出删除行时需注意的特殊处理。该方案能满足机构报表的复杂样式需求,同时具备良好的扩展性和安全性。

2025-10-06 20:33:56 824

原创 Rust 新手必看:彻底搞懂 String 和 &str,不再被坑!

Rust字符串类型速查:String与str的区别与转换 本文详细解析了Rust中String和str类型的区别: String是堆分配的可变字符串,拥有所有权;str是字符串切片,编译期大小未知,需通过引用(&str)使用 转换方式:&String可自动转&str,&str需克隆为String获得所有权 使用场景: &str适合函数参数、字面量、配置等只读场景 String适合需要所有权或修改的情况 &mut String用于整体修改,&mut st

2025-10-03 11:03:41 1013

原创 Rust工具不顺手?VSCode一站式丝滑配置

本文介绍了如何配置VSCode的Rust开发环境。推荐了5个必备插件:rust-analyzer(智能补全)、CodeLLDB(调试)、Even Better TOML(Cargo.toml支持)、crates(版本管理)、Error Lens(错误高亮)。还提供了选配辅助工具如GitLens、Better Comments等。文章包含一键安装脚本,并详细说明了settings.json的配置参数,涵盖代码格式化、类型提示、错误显示等功能。最后提供了tasks.json自动化任务配置示例,帮助开发者快速搭建

2025-09-28 12:39:48 1367

原创 Rc和RefCell:严父Rust的叛逆小儿子

本文介绍了Rust中Rc和RefCell智能指针的用法与特性。Rc用于实现多所有权共享数据,通过引用计数管理内存释放;RefCell则提供运行时内部可变性,允许对不可变变量进行可变借用。两者常结合使用,如树形结构中既要共享又要修改节点数据的情况。但需注意循环引用问题,可通过Weak弱引用来解决。Rc+RefCell的组合在保证安全性的同时提供了灵活性,但开发者需自行遵守借用规则。

2025-09-26 21:12:43 603

原创 再也不怕 Rust Box<T>!这篇文章让你一看就懂

这是rust九九八十一难第二篇文章,整理下Box是啥,怎么用。原因是写代码时遇到Box,先查了一些资料,依然满脑子问号。最后焚香沐浴,打开官方文档,咬紧牙关读完,通篇每个字都认识,写代码却不知怎么下手。仔细分析下,就是没研究明白,蚊子还是要用大炮打,下面整体梳理下Box指针。在 C/C++ 里,指针只是单纯的内存地址,开发者需要手动管理内存(malloc/free 或 new/delete),很容易出 bug(悬垂指针、内存泄漏)。

2025-09-13 15:16:08 937

原创 四种方式配置你的nginx跳转

前言最近工作用到了nginx,但是路由配置特殊,业务场景复杂,因此整理了集中nginx跳转的配置方式,如servername的正则,location的匹配顺序,rewrite和proxy的示例,相信总有一种满足你的需求。一、配置server对应的域名server name 为虚拟服务器的识别路径。因此不同的域名会通过请求头中的HOST字段,匹配到特定的server块,转发到对应的应用服务器中去。server_name匹配规则:后面可以跟多个域名,第1个是主域名1.1、精确匹配如下nginx配置

2021-08-29 17:10:04 6880

原创 docker部署filebeat

一、背景最近公司用到了filebeat,所以学习了下这个技术。filebeat是一个轻量级的日志采集工具,使用golang语言开发,可以将日志转发到es,kafka等。官方对filebeat提供了最全面的支持。filebeat的性能非常好,部署简单,是一个非常理想的文件采集工具。相比logstash它的内存占用更少,filebeat开发的目的也是为了替换logstash。当然也有缺点,比如filebeat官方提供的功能比较单一,往往无法满足我们的需求,我们经常把日志采集到kafka,然后借助flink等工

2021-08-17 22:18:20 1557

原创 hyperloglog实战 - 你的过滤器选对了吗?

一、业务背景最近接到一个统计需求,为了监控视频效果,我们每次浏览视频都要记录uv。当量小的时候,没有问题,随着用户量的的增长,占用空间大的问题开始暴露。假如有1000万用户,采用set结构记录UV,我们只存储int类型的用户id,1000万*4byte/1024kb/1024mb=38.14G,这是一个视频一天的数据,很明显存储成本太高,必须找到一种既能满足需求,又很少占用空间的方案。二、技术选型经过调研,找到了以下几种技术方案,下面一一分析。1、flink的state去重MapState 是 F

2021-08-11 17:15:34 343

原创 二叉树的迭代遍历(前,中,后)

目录1、迭代方式的前序遍历2、迭代方式的中序遍历3、迭代方式的后续遍历1、迭代方式的前序遍历class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> res = new ArrayList(); if(root == null) { return res; }

2021-03-20 18:46:22 210

原创 linux scp 免密码传输

最近在做一个服务端的项目,需要将文件同步到其他虚拟机上,所以采用了scp传输这个方案。这里总结下无密码传输配置流程(心情不好,写个文章发泄)。一、环境和场景两台 远程 linux 虚拟机,假设为 A 和 B场景 :A 向 B 无密码传输文件。二、配置流程1、获取 A 机器用户公钥 - 已存在的话可以直接使用,路径一般是 ~/.ssh/id_ras.pub - 不存在的话执行 ssh-key

2017-09-16 23:20:35 2993

原创 phpstorm 实现同步代码到远程虚拟机

最近开发php,因为代码要部署到远端开发机上进行调试,所以研究了下phpstorm连接远程开发机的配置。尝试过两种方案:一种是开发机上下载代码各种版本管理,然后连接到本地,本地的文件变化同步到远端。这种方案管理git merge等不太方便,没有GUI的工具使用。第二种方案是本地进行版本管理,变化的文件推到远端。这种开发还是部署都非常方便,下面就说下这种配置的流程。1、选择从已有文件中创建项目2、因为

2017-08-24 23:19:47 7809 3

原创 mac rvm 安装流程

最近要开发一个 ruby gem,提示说 ruby 版本太低,于是想用 rvm 升级ruby。直接按照官网的说明根本安装不上,中间踩了一些坑,这里做个总结。1、安装gpggpg适用于签名相关的。本身 brew 是有这个库的,但是安装后报 link 错误。所以从 gpg 官网下载了套装直接安装。 安装完成后,在命令行输入 gpg –version ,如果出现以下信息则表示安装成功。 2、安装

2017-05-14 19:20:12 10458

原创 python包开发学习

最近经常写python脚本,感觉东西多了需要把代码分割开来,方便后期维护.因此学习了下python的包相关知识.1.简单入门python包与普通文件夹的区别是多了一个init.py文件.如就是最简单的包结构,init.py可以不放任何内容,仅表示他是一个包.使用这个包的时候可以直接from app import submoduleapp/ __init__.py subm

2017-03-18 18:41:12 2510

转载 git ignore无效处理

转发一个小技巧,忘记来源了. 有的时候创建项目的时候没有加.gitignore.导致后面git会添加pods文件夹,这个时候想要让gitignore生效。必须。 1. git rm -r –cached . 2. git add . 3. git commit -m “add gitignore” 这样gitignore文件就能生效了。

2017-03-11 18:42:45 653

原创 Jenkins学习(四)job界面详解

一.创建jobjob安装后,点击new item会出现如下界面,这个界面用于创建不用风格的job 1.Freestyle project 这个是jenkins的基础功能,可以用它来执行各种构建任务,他只能构建在一个电脑上,如果没有太多的需求,这个job基本够用了,它包含了所有基础功能. 2.Pipeline 真实的工作环境有很多job,比如先编译,然后执行静态代码检查、单元测试、然后部署服务

2017-03-11 18:35:21 21426

原创 python路径操作常用方法

由于经常用python写脚本,将路径操作的一些api做了总结,方便以后查询#!/usr/bin/python# -*- coding:UTF-8 -*-import osimport sysimport shutil# python路径操作整理# 递归遍历文件夹def listFiles(dirPath): fileList=[] for root,dirs,files in

2017-03-10 23:42:33 3607

原创 Clang插件学习 Clang插件常用API

1.定义一个plugin子类头文件#ifndef MyPlugin_hpp#define MyPlugin_hpp#include <stdio.h>#include<iostream>#include<sstream>#include<typeinfo>#include "clang/Frontend/FrontendPluginRegistry.h"#include "clang/AST

2017-03-03 00:49:44 2547

原创 手把手教你开发 clang 插件

clang 插件开发入门Clang是llvm的编译器前端,非常适合进行源码分析.目前开源的oclint就是基于clang进行的代码静态检查.工作中遇到了一些问题需要进行代码分析,所以学习了插件的开发流程.既然开发插件就要有合适的IDE,Mac上最合适的无疑是xcode了.本文将讲述如何使用xcode开发clang插件,在此之前请先了解clang的相关知识. 1、编译插件1.1、代码下载a.查看xco

2017-02-26 21:55:22 8112

原创 protobuf3 从object-c角度学习数据编码

一.protobuf编码类型protobuf.一共有6中编码方式,其中group目前已不建议使用.* WireVarint = 0 // int32, int64, uint32,* uint64, ,sint32 sint64, bool, enum. 变长,1-10个字节,用VARINT编码且压缩* WireFixed64 = 1 // fixed64, sfixed64,

2017-02-25 23:52:06 2020

原创 protobuf3 从object-c角度说明数据类型

定义一个基本消息类型syntax = "proto3";message SearchRequest { string query = 1; int32 page_number = 2; int32 result_per_page = 3;}syntax = “proto3”:表示这是使用protobuf3的语法,不加这句默认使用protobuf2的语言.两者还是有不少差异的.me

2016-12-05 00:40:23 3716

原创 protobuf3 iOS 接入 protobuf

protobuf是一种可扩展的数据格式.它不依赖语言,平台.相比xml格式,它更小,更快,更简单.这种语言目前支持了java,php,c++等多种语言,可以根据官网教程使用该数据格式.本文主要讲述object-c的接入.这是最近官方支持的语言,以前更多的是使用c++或者第三方的库导入object-c项目中使用.本文会对object-c的使用做简单介绍,后面的文章会有一些分析.1.引入官方基础pod谷

2016-12-04 20:19:51 4721

原创 iOS对大文件MD5摘要性能测试

最近接到了一个需求,里面需要对文件进行md5摘要.从网上搜索到了两个还可以的代码片段,为了更好的判断该使用哪个,这里对这两种摘要方式做了时间和内存的测试.一 测试环境1.四种大小的文件:1m,10,20m,30m3.工具:xcode84.设备:iphone4s,ios8;iphone5,ios10;iphone6,ios9;iphone6s,ios10二. 两种方法代码使用filehandl

2016-11-07 21:14:35 2587

原创 iOS 小知识-设置UISwitch的颜色

效果图如下 lazy var mySwitch:UIView = { let sw = UISwitch.init() sw.onTintColor = UIColor.red return sw; }() lazy var mySwitch2:UIView = { let sw = UISwitch.init(

2016-09-21 22:37:18 17381

原创 iOS 小知识-添加shadow(阴影)

普通添加 let layer = view.layer layer.shadowColor = UIColor.black.cgColor//阴影颜色 layer.shadowOffset = CGSize(width: 10, height: 10)//width表示阴影与x的便宜量,height表示阴影与y值的偏移量 layer.sh

2016-09-21 18:36:11 17139

原创 如何把Pod本地化(Localize)

公司 app 进行本地化,发现 pod 本地化与直接在 project 本地化还是有差异的,这里以英文和简体中文本地化作为例子。文章最后提供了 pod 本地化的工具类。一、添加多语言文字1、创建多语言文件夹多语言文件夹采用语言的编码和 .lproj 作为文件夹名称。例如英文的为 en.lproj 。语言的编码可以从苹果官网查询到。当然也可以自定义编码,这里不做讨论,因为读取本地文本的方式只和文件夹名

2016-08-03 14:58:10 3698

原创 AppleScirpt设置打开Terminal快捷键

前几天学习了下appleScirpt,用它写了个在当前文件夹打开Terminal的小程序,配置成service方便平时使用.基本思路1.编写脚本:appleScirpt获取当前文件夹路径.启动Termianl,cd到当前文件夹路径2.在Automator中设置service,调用脚本3.在快捷键设置中增加该service的快捷键编写脚本```on run -- 当程序开始运行https://

2016-07-17 17:33:37 2193

原创 Jenkins学习(三)脚本打包

前面已经介绍了基本使用,这次不再使用xcode插件来打包,完全使用脚本打包,脚本如下:#!/bin/bash -ex#export LANG=en_US.UTF-8#设置编译模式CONFIG="Debug"#项目位置WORKSPACE="/Users/xxxx/Documents/GeXin"#打开钥匙串需要的密码MAC_PASSWD="xxxxx"#总的根目录HOME="/Users/S

2016-01-17 02:16:40 2864

原创 iOS盲人模式小结

1.盲人模式开启最近接到一个无障碍使用app的活,学了下相关内容 1. 直接设置:[view setIsAccessibilityElement:YES]; 2. 代理中设置: - (BOOL)isAccessibilityElement { return YES; } 3.accessibilityLabel为读取的内容

2016-01-16 20:54:27 9557

原创 Mac下Jenkins安装(一)

一.Jenkins是什么?他是一个开源的自动化服务器。由java和上百个插件组成,支持编译,测试,部署任意的自动化项目二.怎样安装Jenkins这里只介绍mac系统安装。1.从官网下载首页右侧有Native packages,选择Mac OS x2.使用第三方工具下砸命令行输入以下命令brew install jenkins如果没有brew工具,可以去官网获取脚本安装,脚本如下:ruby -e "$

2016-01-03 21:22:02 14078

原创 iOS百度地图打包成pod总结

百度地图也可以打包成pod,方便使用。不知道为什么百度的人不做一个。。环境配置百度sdk这里就不在作说明了。这里使用.a的包来打pod所在的项目不能支持swift项目,否则会引起bundle图片无法加载的问题。步骤创建私有pod,过程参照之前写的podsepc文件://把自己的代码仿classes文件夹下,inc下放百度地图的头文件s.source_files = 'Pod/Class

2015-09-06 22:54:53 1503

原创 RACCommand使用总结

1、RACCommand是什么平常使用button可以使用rac_signalForControlEvents获得点击事件的信号,执行点击事件。rac提供了rac_command来执行某个block。首先看下RACCommand的基本属性有哪些:1. executionSignals:需要执行的block成功的时候返回的信号,他是在主线程执行的。2. executing:判断当前的block是否在

2015-09-05 18:42:15 9942

原创 iOS调起微信,qq,支付宝app支付总结

一.调起微信支付申请应用id见官方文档需要的资源文件SDK文件包括 libWeChatSDK.a,WXApi.h,WXApiObject.h info中添加申请的微信key,idenfifirer为weixin,urlSchema为申请的keyappdelegate中添加如下代码:“` //如果是微信的话 那么(BOOL)application:(UIApplication *)appl

2015-08-19 09:26:56 4425

PluginTest

博文中插件入门的附件工程,私有头文件等也在工程中,安装的话直接运行就可以,然后重启xcode

2015-10-07

jQquery日期插件

jQuery日期插件,采用较低的jQuery版本制作

2013-01-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除