自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CnPeng

最新文章请移步 GitHub:https://github.com/CnPeng/LearningNotes

  • 博客(229)
  • 资源 (2)
  • 收藏
  • 关注

原创 Go | 代码断行规则

本文基于《Go代码断行规则》补充整理1.1. 分号插入规则1.1.1. 插入规则在很多语言中,都使用分号 ; 作为语句终止符。但是在 Go 中不需要显示书写分号,而是会自动插入分号。根据 Go白皮书 中的描述,Go 中自动插入分号的规则如下:在 Go 代码中,除注释外,如果一个代码行的最后一个语法词段(token)为下列所示之一,则自动在此字段后(即行尾)插入一个分号:一个标识符;一个整数、浮点数、虚部、码点或者字符串字面量表示形式;这几个跳转关键字之一:break、continue

2021-05-19 20:02:34 718

原创 Go | defer 的使用总结

1.1. defer基本使用被 defer 修饰的内容,定义在函数内,在函数将要结束时调用(也就是:先调用没有 defer 的语句,最后调用被 defer 修饰的语句),通常用于释放资源(比如 defer file.close())。package mainimport "fmt"func main() { defer fmt.Println("aaaaaaaa") fmt.Println("bbbbbb")}运行结果:cnpeng$ go run Day1.go bbbbbba

2021-05-14 08:42:47 397

原创 Go | struct 的比较

1. struct 能不能进行比较?不同类型的 struct 之间不能进行比较,编译期就会报错(GoLand 会直接提示)同类型的 struct 也分为两种情况,struct 的所有成员都是可以比较的,则该 strcut 的不同实例可以比较struct 中含有不可比较的成员(如 Slice),则该 struct 不可以比较1.1. 同类型 struct 比较import "fmt"type A struct { age int name string}func Stru

2021-05-13 10:48:22 3731 1

原创 Go | sort 排序的使用

sort 包主要用来实现排序相关的操作,它实现了四种基本的排序算法:插入排序(insertionSort)、归并排序(symMerge)、堆排序(heapSort)和快速排序(quickSort);sort 包会依据实际数据自动选择最优的排序算法。1.1. sort.Interface 接口如果某个 struct 需要排序,则必须实现 sort.Interface 接口,提供 Len、Less、Swap 三个方法的实现,然后调用 sort.Sort() 。Interface 的具体定义如下:type

2021-05-11 16:53:07 1596

原创 Git | 基于远程分支新建本地分支

1.1. 使用场景远程分支与本地现有分支差异较大,需要基于远程分支进行新的开发。将远程分支拉取到本地时不能对本地现有分支进行污染或被本地分支污染。1.2. 方案1注意:该方式使用前提是,之前已经添加过远程仓库,并且执行过对该仓库的 pull 或者 fetch 操作直接执行 checkout 命令,检出远程分支命令格式:git checkout -b 新的分支名 远程仓库别名/远程仓库分支名1.3. 方案2注意:该方案不区分远程仓库是新增还是已有,也不区分本地是否执行

2021-04-30 12:03:33 11061 1

原创 小程序 | 云数据库的条件查询

官方文档-查询 官方文档-查询指令1.1. 查询单条数据我们先来看看如何获取一个记录的数据,假设我们已有一个_id为todo-identifiant-aleatoire的在集合todos上的记录,那么我们可以通过在该记录的引用调用 get 方法获取这个待办事项的数据:db.collection('todos').doc('todo-identifiant-aleatoire').get({ success: function(res) { // res.data 包含该...

2021-04-28 17:29:55 5935

原创 小程序 | 定义并引用全局函数

在 app.js 文件中定义方法或者变量,然后在其他页面的 js 文件中引用。如下:在 app.js 中定义方法其他页面的 js 文件中引用

2021-04-28 17:24:43 1627

原创 小程序 | 云数据库模糊查询

本文介绍如何在小程序的云数据库中实现模糊查询。1. 官方方案官方文档官方文档构造正则表达式,仅需在普通 js 正则表达式无法满足的情况下使用options 参数说明:options 支持 i, m, s 这三个 flag,注意 JavaScript 原生正则对象构造时仅支持其中的 i, m 两个 flag,因此需要使用到 s 这个 flag 时必须使用 db.RegExp 构造器构造正则对象。flag 的含义见下表:flag 说明 i 大小写不敏感 m 跨行.

2021-04-28 17:22:13 2742 1

原创 小程序 | 控制文本的显示行数

在小程序中,控制文本的显示行数时,需要通过 wxss 中的配置来实现,示例如下:.service { font-size: 30rpx; color: "#999"; margin-top: 10rpx; /* 内容超宽不显示。末尾生硬结束,没有省略号标识*/ overflow: hidden; /* 内容末尾追加省略号。 */ text-overflow: ellipsis; /* 使用自适应布局方式显示 */ display: -webkit-box; /* 限

2021-04-28 17:17:04 1290

原创 工具 | VNote问题和技巧整理-1

VNote 是一款非常不错的 markdown 编辑软件,本文对实际使用中的部分问题和技巧进行了整理。1. 导出时启用 wkhtmltopdf点击下载 wkhtmltopdf作用是将 md 文件导出为 pdf ,本质上是先转为 html , 然后转为 pdf。启用之后可以生成 pdf 目录。如上图,第一次使用时,需要先点击 1 处的按钮去下载并安装。安装完成后,将wkhtmltopdf路径指向wkhtmltopdf可执行程序的存储路径,Mac 上查看该路径的方法是:在命令行中...

2021-04-28 13:15:59 2410

原创 工具 | Charles对Chrome浏览器抓包

Charles 和 switchy sharp 配合,可以对 Chrome 进行抓包。本文以 Mac 电脑中的配置为例,介绍如何实现抓包。(Windows 中操作基本一致)1. 安装 Charles可根据自己的电脑下载对应的版本:点击下载 Charles2. 安装 switchy sharp如果可以访问 Chrome 应用商店,直接在商店中搜索并下载即可。如果无法访问 Chrome 应用商店,可以在https://www.crx4chrome.com网站中下载,如下图:..

2021-04-28 12:10:03 11817

原创 Mac | 解决证书不受信任问题

1. 问题现象2. 解决方案从系统的启动台中找到钥匙串应用:然后双击打开,找到对应的证书,然后按照下图操作:在上图中,选择始终信任之后,点击左上角的关闭按钮关闭页面,然后就会出现下图中的密码输入框:点击上图中的更新设置之后,可能界面上还是会看到此证书已标记为不受此账户信任的提示,此时,我们退出钥匙串应用(退出快捷键cmd+q),重新打开之后即可正常,如下图:...

2021-04-28 12:03:56 24220 1

原创 小程序 | 15-页面跳转

实现界面跳转有两种方式:通过 navigator 组件 和 通过 wx 的 api 跳转1. navigator 组件实现跳转1.1. 属性介绍navigator api 文档:navigator 组件主要用于实现界面的跳转,其常用属性如下:其中open-type有如下取值:1.2. 基本使用 app.json { "pages": [ "pages/home/home", "pages/about/about", "pages/de.

2021-04-28 08:00:42 353

原创 小程序 | 14-小程序登录

1. 小程序登录流程1.1. 客户端的操作客户端操作的内容主要有如下四项: 调用wx.login 获取 code 调用 wx.request 发送 code 到我们自己的服务器(我们自己的服务器会返回一个登录态的标识,比如 token) 将登录态的标识 token 进行存储,以便下次使用 请求需要登录态标识的接口时,携带 token 1.2. 完整的操作流程:2. 代码演练// app.jsconst TOKEN = "token"App.

2021-04-27 21:43:30 200

原创 小程序 | 13-弹窗和Toast

1. showToastToast API 文档Toaset 可以设置的内容如下:// pages/about/about.jsPage({ onBtnClick(event){ wx.showToast({ title: '正在加载ing。。。', duration:2000, icon:"loading", // 自定义展示的图片——会覆盖 icon // image:"/assets/

2021-04-27 21:38:24 822

原创 小程序 | 12-网络请求

1. 介绍官方 API 文档:官方 指南 文档:1.1. wx.request(Object object)微信提供了wx.request(Object object)用来发起网络请求,其中,object 可传递的内容包括:1.2. 注意事项在使用网络请求 API 前需要先在小程序后台-开发-开发设置-服务器域名中配置服务器域名。不配置的话触发网络请求时会报错。测试阶段可以在 微信开发者工具 界面中勾选详情-本地设置中的不校验合法域名。2. 基本使用...

2021-04-27 21:20:28 297

原创 小程序 | 11-组件化

1. 创建自定义组件自定义组件由 json、wxml、wxss、js 四个文件组成,我们通常是在根目录下创建一个文件夹——components,在该文件夹中存放我们自定义的公共组件。自定义组件的步骤:现在 json 文件中进行自定义组件声明——"component": true, 在 wxml 中编写自定义组件的模板内容 在 wxss 中编写自定义组件的样式 在 js 文件中定义数据和组件内部的相关逻辑 在使用方的 json 文件中引用自定义组件——"引用自定义组件时的标签名":"自定义

2021-04-27 21:10:14 262

原创 小程序 | 10-事件

小程序需要经常和用户进行各种交互,比如,点击界面上的某个按钮或者区域,比如滑动了某个区域;这些交互都会产生各种各样的事件。通过bind或catch属性可以将事件绑定到组件上,然后在该页面对应的 Page 构造器(.js文件)中定义对应的事件处理函数,如果没有对应的函数,触发事件时会报错。当用户和组件产生交互后,就会触发绑定的事件,并调用事件函数,该函数将会受到一个事件对象-event.1. 事件类型分为通用事件和特有事件。 通用事件: 特有事件 如:input...

2021-04-27 20:47:15 166

原创 小程序 | 9-wxs

WXS(WeiXin Script)是小程序的一套脚本语言,有自己的语法,结合 WXML,可以构建出页面的结构。WXS != JavaScript由于在 WXML 中无法直接调用 Page 或 Component 中定义的事件绑定以外的函数,但在某些情况下,我们又希望使用函数来处理 WXML 中的数据(类似 Vue 中的过滤器),所以微信官方就推出了 WXS。1.WXS 的限制和特点 WXS 的运行环境和其他 JavaScript 代码是隔离的,WXS 中不能调用其他 JavaScript .

2021-04-27 20:27:14 320

原创 小程序 | 8-wxml

介绍 wxml 中的相关语法内容。wxml 基本格式: 类似 html 代码:比如,可以写生单标签也可以写成双标签 必须有严格的闭合:没有闭合会导致编译报错 大小写敏感:class 和 Class 是不同的属性 1.{{}}- Mustache 语法mustache.wxml:<!--pages/mustache/mustache.wxml--><!-- 1- 绑定内容 --><view>{{name}}</v.

2021-04-27 17:21:17 249

原创 小程序 | 7-wxss样式

1.wxss 样式组件在引用样式时有三种写法:wxss.wxml<!--pages/wxss/wxss.wxml--><!-- 1-内联样式/行内样式 --><view style="background:red; color:white; font-size:32px; ">wxss-行内样式</view><!-- 2-页面样式。绑定 class 或者 id ,样式写在对应页面的 wxss 文件中--><v.

2021-04-27 16:53:20 713

原创 小程序 | 6-常用组件及组件共同属性

1. Text是行内元素,默认情况下多个<text></text>会显示在一行<!--pages/about/about.wxml--><!-- 1-基本使用 --><text>text是行内元素</text><text>所以多个text不会换行,除非末尾加上换行符或用换行元素包裹,如 \\n \n\n</text>​<!-- 2-selectable 决定文本是否可以被长按选中,默..

2021-04-27 16:41:06 897

原创 小程序 | 5-页面生命周期

小程序中的每个页面都有一个对应的 js 文件,在小程序初始化过程中,会调用其中的Page()实现该页面实例的注册。在注册页面实例时,我们可以做以下事情: 在生命周期函数中发送网络请求,从服务器获取数据 初始化一些数据,以方便被 wxml 引用展示 监听 wxml 中相关的事件 js 函数的两种写法:<!--方式1-->onLaunch:function(){}​<!--方式2-->onLaunch(){}1.页面生命周期...

2021-04-27 16:18:52 402

原创 小程序 | 4-生命周期

1.小程序的启动流程了解小程序的启动流程之后,就知道了代码的执行顺序:2. 小程序生命周期《小程序的生命周期》中主要的周期有:onLaunch(Object object)小程序初始化完成时触发,全局只触发一次。参数也可以使用wx.getLaunchOptionsSync获取。参数:与wx.getLaunchOptionsSync一致onShow(Object object)小程序启动,或从后台进入前台显示时触发。也可以使用wx.onAppShow绑定监听...

2021-04-16 17:37:33 403

原创 小程序 | 3-架构和配置

基于以下内容整理:《小程序的架构和配置-7》 《小程序的架构和配置-8》 《小程序的架构和配置-9》1 配置小程序的很多开发需求都是通过配置文件来实现。这样可以提高开发效率且能保证小程序的基础风格一致。配置文件的类型如下:配置文件名称 说明 project.config.json 项目配置文件,如项目名称、appid 等 sitemap.json 小程序内搜索相关的配置 app.json 全局配置 page.json 页面配置 前两种很

2021-04-16 17:20:39 173

原创 小程序 | 2-小程序初体验

1.小程序的数据绑定xx.js文件中放置页面的逻辑和变量内容。小程序数据绑定使用的是{{ }}双大括号语法,标准叫法为Mustache语法。在xx.js的Page-data节点中定义变量Page({ /** * 页面的初始数据 */ data: { name:'张三' }} 然后在xx.wxml页面中通过{{}}引用:<text>{{name}}</text>此时,小程序的预览界面就会显示张...

2021-03-01 19:14:54 198

原创 小程序 | 1-小程序文件结构和创建新页面

基于《itlike 2019小程序教程》 整理点击下载:小程序开发工具1 小程序的文件结构app.json是程序的入口,程序的页面需要在其中的pages节点中注册,排第一位的将作为程序首屏。app.json 示例:{ "pages": [ "pages/index/index", "pages/logs/logs", "pages/temp/temp" ]} 2 新建文件(夹)2.1 新建文件夹方式1:方式2:...

2021-03-01 18:58:46 278

原创 [项目管理] ISO900X 标准体系

欢迎关注我的公众号:CnPeng ,工作日 8:08 准时更新。前几天,山东省市场监管局下发工作方案和相关通知,决定自2021年1月开始,全面开展小微企业质量管理体系认证提升行动。鼓励引导小微企业积极采用国际质量管理体系标准(ISO9000系列标准)。指导建立适宜的质量管理体系并有效运行,解决小微企业质量管理人才匮乏、质量水平不稳定、管理成本和风险较高等堵点、痛点问题。那么,到底什么是 ISO9000 质量管理体系呢?ISO 全称 International Organization for St.

2021-02-07 14:15:50 751

原创 Go | 字符串拼接方式总结和分析

欢迎关注我的公众号:CnPeng ,工作日 8:08 准时更新。1. 拼接方式+=append(,)buf.WriteString()fmt.Sprintf(,)copy(,)示例代码如下:package strimport ( "bytes" "fmt" "time")func Add(s1, s2 string) string { s1 += s2 return s1}func FmtSprintf(s1, s2 string) string { s1.

2021-02-06 14:13:21 1127

原创 Go | 字符串比较方式总结和分析

欢迎关注我的公众号:CnPeng ,工作日 8:08 准时更新。1 比较方式在 go 语言中字符串比较的方式有如下三种:== 直接比较,区分大小写strings.Compare(a,b) 该函数返回值为 int, 0 表示两数相等,1 表示 a>b, -1 表示 a<b。区分大小写strings.EqualFold(a,b) 直接返回是否相等,不区分大小写。示例如下:// 1-使用等号比较——区分大消息func Equal(s1, s2 string) bool { r.

2021-02-05 21:32:30 7675

原创 iOS | 动态获取字符串宽高并添加约束

欢迎关注我的公众号:CnPeng ,工作日 8:08 准时更新。实际编码过程中,我们可能会需要通过代码动态的向某个 View 视图中添加 UILabel, 此时,我们必须手动的为这些 UILabel 对象添加约束条件,否则,这些 UILabel 将会因为没有约束条件而无法显示。只有获取到 UILabel 中填充的字符串所占据的宽高信息信息之后,才能为其添加具体的约束,所以——通过代码获取字符串所占视图宽度:/** 获取字符串边框*/func getStrBoundRect(str:Stri.

2021-01-28 19:04:02 343

原创 CnPeng说:“快应用”的慢节奏

欢迎关注我的公众号:CnPeng ,工作日 8:08 准时更新。在 Android 手机中,除了标准的 APK 应用程序之外,还有各大厂商推出的小程序,其中以微信小程序最为人所熟知。此外,还有一种即将 3 周岁的 "快应用"。1.快应用的诞生2018 年 3 月,在微信小程序诞生一年多以后,九大手机厂商联合推出了快应用。这九大厂商分别是:华为、小米、中兴、金立、联想、魅族、努比亚、OPPO、vivo。快应用本质上也是一种小程序,也具有无需安装、触手可及、用完即走、无需卸载的特...

2021-01-27 22:01:34 447

原创 CnPeng说 | 小程序-用户争夺战的新战场

欢迎关注我的公众号:CnPeng ,工作日 8:08 准时更新。提到小程序,我们最先想到的肯定是微信小程序。但是,你可知道,除了微信小程序之外还有八家小程序平台?你可曾想过,为什么这么多厂商分别要推出自家的小程序呢?1. 小程序介绍2017年1月9日,微信小程序正式面世。随后,支付宝、百度、头条也相继跟进,分别推出了自己的小程序。小程序的特点是:无需安装、触手可及、用完即走、无需卸载、更新便捷。相较于传统意义的 APP,小程序开发更为快捷,为企业节省了人力成本,也大幅降低了应用对用户手机磁盘空间.

2021-01-26 22:14:22 195

原创 Android | 网络类型判断工具类

欢迎关注我的公众号:CnPeng ,工作日 8:08 准时更新。在 Android 中获取网络类型时,我们之前通常是先使用 ConnectivityManager.getActiveNetworkInfo() 判断是不是 Wifi , 然后通过 TelephonyManager.getNetworkType() 判断具体是 3G 还是 4G。但是,这两个函数分别在 API23(Android M)和 API24(Android N)中已经被标记为 @Deprecated。那么,在更高版本的 And.

2021-01-25 19:32:10 2215 1

原创 [工具] IntelliJ IDEA 中文语言包插件

欢迎关注我的公众号:CnPeng ,工作日 8:08 准时更新。IntelliJ IDEA 系列的产品一直以来都是英文界面,这对我们的使用造成了一定程度的影响。2020 年开始,IntelliJ 开始推进 IDEA 本地化,提供了中文、日语、韩语的语言包插件。该语言包插件在 IDEA 系列的产品中都可以使用,文中以 GoLand 为例。具体安装步骤如下:我们先打开Preferences界面(Mac 下的快捷键是Command + ,),然后选择Plugins -Marketp.......

2021-01-25 10:29:44 52129 4

原创 [Go] GoLand运行断点调试

实现的目标:本地服务运行过程中,触发断点调试,及时跟踪服务运行状况。1 现状目前项目中,编译脚本被整合到了Makefile文件中。在 GoLand 中,我们打开该文件,点击左侧的绿色箭头就可以直接执行对应的脚本内容。如下图:但是,这样运行服务之后,我们无法对运行中的服务进行断点调试。对于习惯了 AndroidStudio 断点调试的人来说,GoLand 中不能断点调试实在太难受,那么我们想要进行断点调试的话,该怎么做呢?2 配置点击下图中的Edit Configurations...

2021-01-21 18:29:43 6064

原创 [Go] Swaggo安装超时的解决

1 问题现象在 GOPATH 目录中通过 go get -u github.com/swaggo/swag/cmd/swag 安装 swag 时可能会遇见连接超时的错误信息,导致安装失败,如下:package golang.org/x/text/unicode/bidi: unrecognized import path "golang.org/x/text/unicode/bidi" (https fetch: Get https://golang.org/x/text/unicode/bidi?g

2021-01-21 15:57:50 1239

原创 [CnPeng说]低代码并不Low

欢迎关注我的公众号:CnPeng ,工作日 8:08 准时更新。1 月 14 日,在钉钉 6.0 版本的发布会上,阿里云智能总裁张建锋断言:“未来的软件开发一定是碎片化的,低代码开发将是 2021 年的行业关键词”。那么,到底什么是 低代码 ?它的优缺点有哪些?它会对程序员造成什么影响呢?1.1 什么是低代码低代码 全称 Low-Code Development ,即低代码开发,指的是通过少量的代码或没有代码的方式实现某一项功能或产品。它的本质是将代码内容转化成可视化图形界面,让具有不同经验和水平.

2021-01-20 21:10:41 300

原创 [项目管理]四象限时间管理法

欢迎关注我的公众号:CnPeng ,工作日 8:08 准时更新。1 为什么需要进行时间管理可以增强时间观念,从而预防和克服拖延症。可以更高效的完成自己的工作或学习任务, 避免落入“事事紧急,疲于应付”的窘境。可以合理规划时间,让自己拥有充足的个人休闲时间。可以加强日程管理能力和执行力。可以避免无意义的努力,让你离成功更近。2 如何进行时间管理2.1 四象限管理法时间管理中最重要的一个方法就是:四象限管理法。其示意图如下:上图中,将事情或任务按照重要程度和紧急程度划分为四大模块:.

2021-01-19 21:33:44 4200

原创 [iOS] 创建推送证书并导出为.p12格式

欢迎关注我的公众号:CnPeng ,工作日 8:08 准时更新。在 iOS 项目中集成极光推送时,需要我们上传 p12 推送证书,如下图。本文将以图文的形式详细讲解如何申请和导出该证书。创建证书时需要先创建证书请求文件,然后再去开发者网站创建 AppId,最后从开发者网站申请对应的推送证书,具体如下:1 创建证书请求文件创建证书时需要先从本机的钥匙串访问程序中创建一个用于请求证书的.certSigningRequest文件,如下:然后按下图填写信息,注意,此处选择 存...

2021-01-18 21:38:20 3601 2

20小时入门学会go语言.docx

基于黑马程序员同名视频教程整理,讲解了 go 语言的入门知识。 如果您需要该文件,但是没有积分,可留言给我

2021-04-28

软件项目工作量评估表(模板)

适用于软件开发项目的工作量评估表。 如果您需要该文件,但积分不足,可留言给我

2021-01-11

空空如也

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

TA关注的人

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