h1z3y3 / h1z3y3.github.io Goto Github PK
View Code? Open in Web Editor NEWblog source for https://h1z3y3.me, powered by hugo, theme by hugo-theme-meme, but I customized some features and fixed some bugs
Home Page: https://h1z3y3.me
blog source for https://h1z3y3.me, powered by hugo, theme by hugo-theme-meme, but I customized some features and fixed some bugs
Home Page: https://h1z3y3.me
https://h1z3y3.me/posts/grepsedawk/
grep 概述 在给出文件列表或标准输入后, grep会对匹配一个或多个正则表达式的文本进行搜索, 并输出匹配(或者不匹配)的行或文本.
使用格式 grep [options] PATTERN [FILE...] 常用选项 -i 忽略字符大小写 -v 显示未被模式匹配到的行或串 -o 只显示匹配到的串而不是整行 -n 显示匹配的行及行号 -E 使用扩展的正则表达式 -A n 显示出匹配到的行和后n行 -B n 显示出匹配到的行和前n行 -C n 显示出匹配到的行和前后各n行 扩展的正则表达式
扩展正则表达式与基础正则表达式的唯一区别在于: () {} ? + 这几个字符.
基础正则表达式中, () {} ? + 表示特殊含义,使用时需要将他们转义
而扩展正则表达式中, () {} ? + 不表示特殊含义, 你需要将他们转义.
转义符号, 都是一样的: 反斜线 \ .
所谓特殊含义, 就是正则表达式中的含义. 非特殊含义, 就是这个符号本身.
……
https://h1z3y3.me/posts/create-hexo-on-github-3/
更换主题很简单,首先感谢@iissnan,因为博主用的是@iissnan的NexT主题,所以本文就以NexT主题为例讲解如何更换博客主题。在文末我会给出更多优秀主题的Github地址。 为自己的Hexo……
https://h1z3y3.me/posts/twoscrollviewlinkage-1-baseview/
自己再开发app过程中遇到了这样那样的需求,其中有一项是新闻页面,需要两个scrollView联动,上面的scrollView是新闻类型,下面scrollView是tableView新闻标题。开发过程中我全部都是用代码布局的,因为自己是新手,不知道到底是用代码写比较方便还是用storyBoard更方便,但是感觉手写代码适应屏幕上更容易上手吧。需求实现之后现在拿出来简单整理一下,方便自己日后查看,也给后来者以参考。因为刚刚开始学,用到的都是些简单的方法,也可能会出错,如果有什么不足,请留言给我指出。谢谢~
……
https://h1z3y3.me/posts/design-pattern-simple-factory/
这个系列是《大话设计模式》的读后感,将书中的设计模式用golang实现。 第一个设计模式是简单工厂模式,主要用到的知识点是类的多态。 多态表示不同的类可以执行相同的方法,但要通过它们自己的实现代码来执行。……
https://h1z3y3.me/posts/design-pattern-decorator/
装饰器模式主要解决要动态的给一个类添加一些新功能,而又不想让这个类变得庞大。 这种模式需要创建一个装饰类来包装扩展原有的类,并且在保证原有的类保持结构一致的前提下,提供额外的功能。 下面是给一个人装饰衣服……
https://h1z3y3.me/posts/javascript-md5-base64-sha1/
简介 在编写Web程序时,表单的提交若密码使用明文提交会十分不安全,因此在浏览器端也要对密码进行加密处理。但是若只是在浏览器端处理了,而服务器没有再一次加密,也是不妥当的,因为"中间人"只要获取了浏览器端加密的密码,不需要进行处理也能进行登录。所以我一般的做法是在前端加密一次,在服务器再加密一次。密码加盐(salt)的问题等我先研究下再写一下。而浏览器端加密一般我都用javascript进行加密后再提交。下面是用javascript编写的base64加密,md5加密和sha1加密。使用方法也极其简单,只要在页面内引入相应js文件即可。
……
https://h1z3y3.me/posts/remove-ckfinder-copyright/
最近在做毕业设计,使用到了CkEditor和CkFinder来做富文本编辑框以及文件管理。 因为CkFinder只能下载使用Demo版本,会有一些版权信息。 我不是用做商业目的,仅仅为了学习,所以想把版权信息去掉。 看了几篇博客,都是教你把alert框加上display:none,我考虑到这样并不好,因为如果有其他正常的信息也不能显示了,所以花了些时间改了下ckfinder.js,既去掉了版权信息,又不会影响其他信息的提示。
下文提供了两种方法,建议使用第二种。
如果你是用于商业目的,请到官网购买使用的License使用。
……
https://h1z3y3.me/posts/ios-md5/
为了使保存的密码更安全, 我们应该实现一个NSString的分类,为密码创建一个MD5的哈希值,而且并把它保存在keychain中;keychain是在设备中保存关键数据的唯一安全的地方。 step1. 新建文件 新建……
https://h1z3y3.me/posts/tomcat-shiro-disable-jsessionid-in-url/
在J2EE项目中使用Shiro进行权限验证后,每次部署跳转到登录界面总会在链接后面多出;JSESSION=xxxx,查了很多,大概有下面几种方法:
在web.xml中添加以下代码:
COOKIE 具体请参考:
http://stackoverflow.com/questions/11327631/remove-jsessionid-from-url
……
https://h1z3y3.me/posts/writing-a-tcp-server-using-kqueue/
介绍 在 非阻塞 I/O 超简明介绍 中, 我们已经讨论过现代 Web 服务器可以处理大量并发请求,这得益于现代操作系统内核内置的事件通知机制。 受 Linux epoll [ 文档 ] 启发, FreeBSD 发明了 kqueue [ 论文 , 文档 ] 这篇文章我们将仔细研究下 kqueue……
https://h1z3y3.me/posts/go-private-git-repository/
Go Module 使用 gitlab 私有仓库 包管理是 Go 一直被诟病做的不好的功能。在 1.11 之前,go get 缺乏对依赖包版本管理和 reproducible build 的支持。 当时在 Go 社区当时诞生了许多好用的工具,比如 glide,dep 等。 在 1.11 版本之后, Go 引入了 Go Modu……
https://h1z3y3.me/posts/http3/
英文原文链接:https://www.zdnet.com/article/http-over-quic-to-be-renamed-http3/
据 IETF 官方人员透露,HTTP-over-QUIC 实验方案将会被命名为 HTTP/3,并将成为 HTTP 协议的第三个官方版本。 在谷歌将 SPDY 技术发展成为 HTTP/2 协议之后,这是谷歌第二次将实验技术发展成为 HTTP 的官方协议版本。 HTTP-over-QUIC 协议是 HTTP 协议的升级,谷歌使用 QUIC 取代 TCP (Transmission Control Protocal) 作为 HTTP 的基础技术。 QUIC 全称 Quick UDP Internet Connections,是谷歌将 TCP 协议重写为一种结合了HTTP/2、TCP、UDP 和 TLS 的改进技术。
……
https://h1z3y3.me/posts/design-pattern-proxy/
代理模式即在真实类的基础上封装一层代理类,由代理类完成对真实类的调用。 以便可以在代理类中做一些额外的工作,如进行访问权限校验、保存Cache缓存等操作。 下面以"读取图片资源"为例说……
https://h1z3y3.me/posts/two-methods-to-reuse-cell/
今天在学习iOS开发的时候,偶然发现tableView有两种重用cell的方法。先整理一下方便日后查阅。
第一种:[tableView dequeueReusableCellWithIdentifier:identifier] (SDK 6.0之前)
第二种:[tableView dequeueReusableCellWithIdentifier:identifier forIndexPath:indexPath]] (SDK 6.0之后)
……
https://h1z3y3.me/posts/uilabel-with-height-fixed/
https://h1z3y3.me/posts/gophercon-china-2021/
GopherChina 2021 北京 托 团队 leader 的福,白嫖了今年 GopherCon China 的票,和历届大会相比,第二天分了两个分会场,分享不同的内容,参会者可以根据个人兴趣自行选择参加。 然而不得不说,本次和之前几次的分享安排相比,多了一些针对自己公司产品……
https://h1z3y3.me/posts/go-html-template-script-unescape/
While using values in a html template, my colleague faced a problem that the values in <script> tags are all escaped. So the template developer can not use the values in javascript. It just looks like this:
// ... <script type="text/json" id="channel" ch="recommend" tk=""> ["news","comedy","cartoon","tech","travelling","fashion","photograph","household","movies","foods","military","health","test"] </script> // ... I tried to find out the reason. So I copied the template values in other HTML tags rather than in <script>. It rendered correctly, and was not escaped:
// ...
https://h1z3y3.me/posts/how-to-use-vim/
前言 没有接触过Vim的同学, 一定会觉得平时使用的IDE很好用, 但是当你开始使用Vim, 并且渐渐熟悉, 我觉得你会爱上这一款编辑器. 千万不要因为一开始Vim有太多命令需要记忆而放弃它.
这篇博客是翻译自《Learn Vim Progressively》, 并在我觉得有必要添加说明的地方添加了自己的说明. 我认为是最适合入门Vim的教程, 没有之一.
正文开始 你想以最快的方式自学Vim吗? 在人类最优秀的编辑器面前, 你必须至少先学会如何幸存下来, 然后再去一点点整合使用它的技巧.
Vim the Six Billion Dollar editor
Better, Stronger, Faster
当你学会使用Vim, 它将成为你最后一个编辑器. 虽然学习它的过程很不容易, 但是最后它会难以置信的好用.
……
https://h1z3y3.me/posts/lowcode-and-serverless/
对于业务应用程序的要求不断提高,但是 IT 部门困于大量的应用程序积压的工作而不可能很快的完成工作。而且,目前面临的挑战是,IT 需要重新思考提高交付速度的方法。有两个解决方案:low-code 和 server……
https://h1z3y3.me/posts/how-i-structure-services-in-go/
译者注:在翻译这篇文章之前,我自己其实对 Bob 大叔的 Clean Architecture 也做过一些研究,在项目中实践之后, 也确确实实体验到了分层的魅力。在层与层之间将依赖进行隔离,各个层只关注自己本身的逻辑, 所以能让开发者只关注本层的业……
https://h1z3y3.me/posts/create-hexo-on-github-4/
这一篇是本系列的最后一篇,到目前为止,我们搭建的Hexo博客已经能满足我们日常的需求。可是有没有想过我们其实只能在这一台电脑上更新我们的博客?如果有一天我换了一台电脑,或者公司和家里不同的电脑都想更新……
https://h1z3y3.me/posts/predicateuse/
谓词(NSPredicate)提供在Cocoa中指定查询的普通解决方案。NSPredicate类用于定义逻辑条件以限制或筛选获取结果。 NSPredicate 的基本使用 定义: NSPredicate *predict = [NSPredicate predicateWithFormat: @"SELF CONTAINS[cd] %@", SOMESTRING]; 常用方法: 关键字 效果 比较运算符……
https://h1z3y3.me/posts/shiro-clear-update-authorization/
Apache Shiro用于权限管理十分方便,但存在一个问题,就是当用户的权限发生变化的时候,就需要用户重新登录,重新缓存用户的权限信息。
现在想要在改变用户的权限的时候,清理用户的权限。 在写的过程中查找了一些资料,但是并没有成功实现权限的清理,所以我进行了一些修改,并实现了Helper类。
……
https://h1z3y3.me/posts/uitableviewadvanced01/
UITableView 是开发中使用十分频繁的控件,本系列记录UITableView的进阶使用:UITableView的搜索栏和字母索引表。
不想看我废话的可以直接到gitHub仓库下载源码😏。 UITableView使用进阶gitHub源码
搜索栏有两种实现方式,第一种是通过UISearchBar和UISearchDisplayController实现,第二种是通过UISearchController实现。而在iOS8.0之后,苹果官方推荐使用第二种方式。
本文使用的是第二种方式(UISearchController),不过源码中也实现了第一种(UISearchBar+UISearchDisplayController)。关于UISearchBar和UISearchDisplayController的使用,可以参考我的另一篇文章:UISearchBar和UISearchDisplayController实现搜索栏
……
https://h1z3y3.me/posts/stretchableimagewithleftcapwidth/
https://h1z3y3.me/posts/hugo-auto-deploy-github-with-actions/
从 2018 年底到 2021 年初,博客一直搁置,虽然也偶尔写几篇文章,但是都发布在团队的公众号中了, 现在重新开始维护自己的博客,也从 hexo 转移到了 hugo , 这两个都是非常优秀的静态网站生成工具。 但是不得不说,使用 hugo 之后感觉易用……
https://h1z3y3.me/posts/html5webworker/
什么是WebWorker
web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能。我们知道页面的展示放在主线程,如果让主线程进行一系列复杂的操作,那么页面就会变得非常卡,用户体验会很差。这是我们可以使用web worker进行复杂操作的实现,然后将处理结果返回给页面,页面进行更新即可,这样就不会影响用户主页面展示的执行。
方法: postMessage() : 用于向HTML页面返回消息 terminate() : 终止web worker, 并且释放资源
……
https://h1z3y3.me/posts/how-to-use-uiscrollviewdelegate/
罗列了UIscrollView的一些基本设置和常用方法
……
https://h1z3y3.me/posts/cpu-io/
计算密集型任务 计算密集型任务主要消耗CPU资源,需要进行大量的计算,如计算圆周率或对视频进行高清的解码等,全靠CPU的运算能力。 这种任务虽然可以利用多任务去完成,但是任务越多,花在任务切换上的时间就会……
https://h1z3y3.me/posts/uitableviewadvance02/
前文已经介绍了如何给UITableView添加搜索栏,这次要给UITableView进一步添加索引条。 基本思路:
获取总统名字的首字母组成一个索引字母表储存在数组中; 修改TableView的代理方法实现section的显示,section的数量应为索引字母表的元素的个数; 把索引条添加到TableView 中,用TableView的代理方法即可实现。 ……
https://h1z3y3.me/posts/event-streaming-vs-enterprise-messaging/
业务消息传递技术(AKA Enterprise Messaging),如 IBM MQ、RabbitMQ 和 ActiveMQ,在应用程序内和跨应用程序间提供异步通信技术已经很多年了。 最近,事件流技术(AKA Event Streaming,如 Apache……
https://h1z3y3.me/posts/how-to-use-founction-respondstoselector/
-(BOOL)respondsToSelector: selector //用来判断是否有以某个名字命名的方法(被封装在一个selector的对象里传递)
……
https://h1z3y3.me/posts/design-pattern-strategy/
在策略模式中,我们需要创建一系列策略对象和一个能随策略对象改变而改变的Context对象,策略对象改变Context的执行方法。 仍以两个数字的加减乘除操作作为示例 package strategy import "fmt" // Context 类 type Context struct { strategy Strategy } func NewContext(strategy Strategy) *Context {……
https://h1z3y3.me/posts/some-uiimageview-fit-way/
UIImageView三种contentMode区别:UIViewContentModeScaleToFill、UIViewContentModeScaleAspectFit、UIViewContentModeScaleAspectFill
……
https://h1z3y3.me/posts/how-to-prevent-scraping/
Web 反爬指南(或至少让其更难抓取) 提示:这篇文章是我 Stack Overflow 这个问题 回答的扩展, 我把它整理在 Github 因为它实在是太长了,超过了 Stack Overflow 的字数限制(最多 3 万个字,这文章已经超过 4 万字) 欢迎大家修改、完善还有分享,本文使……
https://h1z3y3.me/posts/uisearchbar-uisearchdisplaycontroller/
要实现tableview的搜索栏,实现方法有两种:第一种是UISearchBar和UIDisplayController结合起来实现,另一种是通过UISearchController实现。这里只介绍第一种:
注意: UISearchBar和UISearchDisplay只推荐iOS8.0之前使用。 关于UISearchController的使用请跳转至: UITableView使用进阶(一):搜索栏
……
https://h1z3y3.me/posts/how-to-use-sethidebottombarwhenpushed/
一开始自己将tabBar全部自定义,将系统tabbar设置为self.tabBar.hidden=YES,隐藏系统的tabbar。但是自定义的tabbar在push出新页面的时候,tabbar并不会自动隐藏。之后在新页面viewWillAppear中设置自动隐藏,但是pop回之前页面(在viewDidAppear中设置tabbar显示)又出现不能及时出现,会有时间延迟,看上去特别不舒服。而且,边缘返回旧页面的时候不能及时显示tabbar也,所以打算用系统默认的tabbar。记录下系统tabBar样式的简单定义。
……
https://h1z3y3.me/posts/html5webcache/
什么是应用缓存?
HTML5引入了应用缓存概念,意味着在没有因特网连接时也可以进行访问。
使用应用缓存好处:
离线浏览,没有因特网的情况下依然可以进行访问 访问速度提升,已经缓存的资源加载更快 减少服务器负载,浏览器只需要下载更新过的页面资源 实现方法:
如果需要使用应用缓存,需要在页面标签中包含 manifest 属性,而manifest文件建议使用文件扩展名.appcache。
Manifest文件功能:
CACHE: 在此标题下列出的文件会在首次访问加载之后进行缓存; NETWORK: 在此标题下列出的文件需要与服务器连接、且不会被缓存; FALLBACK: 在此标题下列出的文件规定当页面无法访问时的退回页面(如404页面) ……
https://h1z3y3.me/posts/linux-avarage-load/
平均负载是单位时间内“正在使用CPU”、“等待CPU”、“等待IO”的进程数量 平均负载和CPU使用率不一样,但是CPU密集型任务可能导致平均负载升高 由1,2可知,平均负载升高,不一定是由于CPU使用率……
https://h1z3y3.me/posts/how-to-config-ssh-on-github/
什么是SSH SSH为Secure Shell的缩写,是建立在应用层和传输层基础上的协议。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理中额信息泄漏……
https://h1z3y3.me/posts/markdown-base-use/
Markdown 介绍 Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。Markdown的使用十分简单,常用的标记其实就十几个,所以相对于HTML这种复杂的标记语言来说,Markdown是十分轻量的标记语言。
……
https://h1z3y3.me/posts/demysitifying-pprof-labels-with-go/
深入剖析 Golang Pprof 标签 Polar Signal 提供的持续分析工具可以和任何格式的 pprof 配置适配,Go 深度集成了 pprof 甚至支持了它的标签特性。然而,自从我们发布了我们持续分析的产品之后,我们收到了很多工程师的反馈,发现许多工程师不知道如……
https://h1z3y3.me/posts/create-hexo-on-github-2/
如何配置Hexo 上一节中我们已经在本地和Github上搭建起了自己的博客,但是博客的配置都是默认值,如果我们想个性化自己的博客,我们应该做什么呢。这一节中我们一起来配置自己的博客的基本信息和介绍如何写……
https://h1z3y3.me/posts/create-hexo-on-github-1/
什么是Hexo Hexo是一个基于Node.js的静态博客程序,可以方便的生成静态网页托管在Github和Heroku上。并且有很多人为其制作了很多优秀的主题(theme),你可以根据自己的喜好进行设置……
https://h1z3y3.me/posts/twoscrollviewlinkage-2-businesslogic/
上一篇已经实现了页面的布局,这一篇我们来实现界面的逻辑变换。主要用到的是scollView的两个代理方法。我们先看一下效果。
……
https://h1z3y3.me/posts/golang-escape-analysis/
Golang 逃逸分析 Golang 的垃圾回收机制可以进行自动内存管理让我们的代码更简洁,同时发生内存泄漏的可能性更小。 然而,GC 会定期停止并收集未使用的对象,因此还是会增加程序的开销。 Go 的编译器十分聪明,比如决定变量需要分……
https://h1z3y3.me/posts/uiimageview-image-fade-out/
实现原理十分简单,使用UIImageView的透明度即可。然后在动画中完成。 alpha = 1 为全透明。 运行图例: 实现代码: //图片渐隐渐现 self.backgroundView.alpha = 0.7; [UIView animateWithDuration:0.5 animations:^{ self.backgroundView.alpha = 1; self.backgroundView.image = [UIImage imageNamed:@"weather_bg_02.jpg"]; }]; 后来我知道了可以用更好的方法实现, 后续会有更……
https://h1z3y3.me/posts/design-pattern-factory-method/
工厂方法模式是简单工厂的升级。他创建一个用于实例化类的接口,并由工厂的子类决定实例化哪个类。工厂方法模式使得一个类的实例化延迟到子类。 下面仍然以“两个数字的运算”作为例子 operations.go // 运算类 package factory_method // 运算 type Operation interface { SetA(float64)……
https://h1z3y3.me/posts/tietuku-clienthold/
站长之家(ChinaZ.com) 3月4日消息,昨日开始,国内知名图床服务网站贴图库首页和服务器部分地区出现了无法访问的情况。据站长之家了解,贴图库因被检测到非法内容,遭到网信办下令要求域名服务商易名中……
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.