分类

编程语言

Java 正则中的非捕获组

正则表达式中的非捕获组(non-capturing group)用于匹配但不“保存”匹配结果,出现在正则表达式模式中的 (?:pattern) 这部分就是非捕获组。 我试了几个在线的正则表达式测试工具,返回的匹配结果都是“整个组”,不是非捕获组。 Java 中 Matcher#group() 返回的是 group(0),也是整个匹配结果,如果要返回第一个非捕获组,需要用 group(1)。 Pattern pattern = Pattern.compile("([0-9]+)(?:st|nd|rd|th)?"); Matcher matcher = pattern.matcher("1st 2nd 3 4th"); while (matcher.find()) { System.out.printf("%3s %s\n", matcher.group(), matcher.group(1)); } 输出: 1st 1 2nd 2 3 3 4th 4 另外,使用非捕获组时需要注意结尾的 ?,在上面例子中 ([0-9]+)(?:st|nd|rd|th)? 说明该非捕获组是可选的,如....

More...

Solo 的 golang 版计划

Solo.go Solo 经过多年众多用户的使用、反馈和开发迭代,目前从功能上和实现上都比较稳定了,我和 @Vanessa 都觉得是时候将 Solo 推入维护阶段了,后续只做必要的缺陷修复。 另外,我们打算用 golang 实现一个 Solo.go(代号),并在 Solo v2.5.0 中提供 JSON 格式的数据导出功能,以便 Solo.go 进行导入。如果你一直是 Solo 用户,那么以后可以考虑通过跑 Solo.go 来节省服务器内存用量。 系统分析 前端管理后台使用 Vue.js,前台皮肤使用 golang 原生的模板在 Solo.go 初期版本中以下功能暂不实现 插件机制(技术待研究)邮件发送(鸡肋功能)草稿夹(鸡肋功能) Solo v2.5.0 提供 JSON 导出功能 多租户 这里的“多租户”指的是在 Solo.go 上可以创建多个独立博客,每个独立博客有自己的管理员,自己的皮肤,和其他博客在功能上完全隔离。 每个独立博客是一个团队博客,团队使用同一个后台,同一个前端皮肤。 所有用户账号都必须是黑客派社区的账号初始化时的用户是平台管理员,并且初始化一个博客,使用 /{....

More...

模板引擎实现(一)词法分析

如果你想实现模版引擎、编译器前端、文本解析器(比如 Markdown )或想要了解它们的实现原理,请一定不要错过本系列的文章 :grin: 模板引擎实现(一)词法分析 另外,* 本系列的文章面向的是撸起袖子就开干的朋友,所以不会介绍基础理论,比如 DFA/NFA,算法复杂度等(确切的说是没法介绍理论,因为作者能力有限 :joy:)* 在使用到的术语/定义方面作者是认真查过资料并再三斟酌的,不会出现胡编乱造,请放心理解和使用 :white_check_mark:* 本系列文章的对应项目是 freemarker.go(FreeMarker 的 golang 实现),欢迎大家关注点赞 :star2: 本文介绍了词法分析的基本概念,主要参考 golang 的 text/template/parse 包源码进行解析。 词法分析 将面向源码的字符流转成 token 流的过程是词法分析。用“流”来描述主要说明了处理过程是有序连续的。比如读取源码文件时是一个字符一个字符读取的,生成的 token 也是一个接一个的。 当我们在源码中看到 scanner、lex/le....

More...

Java 开源博客 Solo 2.0.0 发布 - 聚合分类

在 Solo 2.0.0 中我们实现了一个重要特性:聚合分类。 Solo 是一款一个命令就能搭建好的 Java 开源博客系统,并内置了 15+ 套精心制作的皮肤。除此之外,Solo 还有着非常活跃的社区,文章分享到社区后可以让很多人看到,产生丰富的交流互动。 信息架构 已有的很多博客系统在文章的信息架构上面都是自顶向下的: 一篇文章只能属于一个分类 分类在发布文章时就已固定 这会带来几个问题: 有的文章很难决定属于某个分类 随着文章越来越多,想要修改文章分类非常困难 分类可能具有时效性,固定分类没法与时俱进 而聚合分类就是来解决这些问题的,并且向前兼容: 一个分类包含多个标签,分类和标签是多对多 浏览分类时根据标签动态聚合出文章列表 设置分类可以随时灵活调整 安装与升级 下载安装包 解压后执行 java -cp WEB-INF/lib/*;WEB-INF/classes org.b3log.solo.Starter 1.9.0 到 2.0.0 升级只需将已有的配置拷贝覆盖即可,启动后会自动升级。 项目地址 GitHub:https://github.c....

More...

Java 开源博客 Solo 1.9.0 发布 - 新皮肤

这个版本主要是改进了评论模版机制,让大家更方便皮肤制作,并发布了一款新皮肤:9IPHP。 Solo 是一款一个命令就能搭建好的 Java 开源博客系统,并内置了 15+ 套精心制作的皮肤。除此之外,Solo 还有着非常活跃的社区,文章分享到社区后可以让很多人看到,产生丰富的交流互动。 项目地址: GitHub:https://github.com/b3log/solo 码云:https://git.oschina.net/dl88250/solo

More...

Java 开源博客 Solo 1.8.0 发布 - 改进文件上传

本次发布主要是更新了编辑器,使其更好地支持文件上传。(1.8.0 版本变更记录请看这里) 我们的 Markdown 编辑器: 另外,我们对 HTTPS 的支持也更完善了,欢迎大家试用! 简介 Solo 是一款一个命令就能搭建好的 Java 开源博客系统,并内置了 15+ 套精心制作的皮肤。除此之外,Solo 还有着非常活跃的社区,文章分享到社区后可以让很多人看到,产生丰富的交流互动。 功能 Solo 沉淀至今的每一个功能你应该都会用到。我们不会将只有“20%”用户使用的功能添加进来,只有这样才能保持博客系统本该有的纯净,足够轻量才能带来简约的使用体验。 Markdown / TinyMCE / KindEditor 自定义导航(页面、链接) 草稿夹 评论/回复邮件提醒 随机文章 / 相关文章 / 置顶 / 更新提醒 自定义文章永久链接 自定义站点 SEO 参数 自定义公告 / 页脚 多个签名档 代码高亮 多皮肤,多端适配 / 社区皮肤 多语言 / 国际化 上传七牛云 友情链接管理 多用户写作,团队博客 SQL 文件导出 插件系统 Atom / RSS 订阅 Si....

More...

Java 开源博客 Solo 1.6.0 发布 - 新后台

Solo 是一款一个命令就能搭建好的 Java 开源博客系统,并内置了 15+ 套精心制作的皮肤。除此之外,Solo 还有着非常活跃的社区,文章分享到社区后可以让很多人看到,产生丰富的交流互动。本次发布主要是重写了后台 UI,感谢一直以来关注和支持我们的朋友! ## 功能 Solo 沉淀至今的每一个功能你应该都会用到。我们不会将只有“20%”用户使用的功能添加进来,只有这样才能保持博客系统本该有的纯净,足够轻量才能带来简约的使用体验。 * Markdown / TinyMCE / KindEditor * 自定义导航(页面、链接) * 草稿夹 * 评论/回复邮件提醒 * 随机文章 / 相关文章 / 置顶 / 更新提醒 * 自定义文章永久链接 * 自定义站点 SEO 参数 * 自定义公告 / 页脚 * 多个签名档 * 代码高亮 * [多皮肤,多端适配](https://github.com/b3log/solo-skins/tree/maste....

More...

基于 Web 的 Go 语言 IDE - Wide 1.5.1 发布!

Wide 是一个基于 Web 的 Go 语言 IDE, 其目标不是彻底代替本地 IDE,而是做本地 IDE 很难做到的事情。

More...

你保存用户密码的姿势正确吗?

这几年陆陆续续有很多大站被脱裤,最终导致了很多用户的密码明文泄露。本文不探讨脱裤技术,主要研究的是如何正确(尽量安全)地保存用户密码。

More...

基于 Web 的 Go 语言 IDE - Wide 1.5.0 发布!

Wide 是什么 Wide 是一个基于 Web 的 Go 语言团队 IDE。 * 在线开发:打开浏览器就可以进行开发、全快捷键 * 智能提示:代码自动完成、查看表达式、编译反馈、Lint * 实时运行:极速编译、实时结果输出 * 团队协同:统一开发环境,分布式开发,代码分享 * DevOps! 大家可以使用我们提供的 Wide 在线服务,也可以自行下载并在本地环境运行 _Wide 私服_! ### Playground Wide 提供了运行单文件的 Playground,可以看作是 golang.org 的 Go Playground 的增强版: * 语法高亮、自动完成 * 通过 WebSocket 进行实时运行输出 * Disqus 整合 * 能够方便地嵌入其他站点(比如个人博客),请查看 [《Go 学习笔记》....

More...

Java 开源博客 Solo 1.3.0 发布 - Docker 支持

Solo 1.3.0 正式发布了,感谢一直以来关注 B3log 开源的朋友! 可以通过一个命令启动(不需要安装数据库、部署容器),也可以通过 war 方式部署容器,连接 MySQL。这应该是史上最容易跑起来的博客系统了,欢迎大家下载体验,也欢迎来 Star/Fork ! 在 1.3.0 中,我们正式支持了 Docker 方式启动,并已经同步至 Docker 镜像中央库。 ### 特性简介 * 基于标签的文章分类 * 博客/标签 Atom/RSSSitemap 输出 * [评论回复及邮件提醒](https://github.com/b3log/solo/wiki/Comment_r....

More...

Java 开源博客 Solo 1.2.0 发布 - 一键启动

Solo 1.2.0 正式发布了,感谢一直以来关注 B3log 开源的朋友! 在这个版本中,我们引入了一个新的特性 —— 独立模式: * 不需要安装数据库、Servlet 容器 * 只需要安装好 Java 环境,一个命令就可以启动 这应该是史上最容易跑起来的博客系统了,欢迎大家下载体验,也欢迎来 Star/Fork ! ### 特性简介 * 基于标签的文章分类 * 博客/标签 Atom/RSSSitemap 输出 * [评论回复及邮件提醒](https://github.c....

More...

理解 HTTPS 原理,SSL/TLS 协议

###为什么要使用 HTTPS 当我们使用 HTTP 协议时,传输的数据是不安全的,因为所有在客户端和服务端往来的数据都是明文: * 第三方可以获取到真实数据 * 第三方可以篡改数据 * 第三方可以冒充服务端或客户端 为了解决这些问题,需要在 HTTP 协议中加入一个安全机制,由此并产生了 HTTPS,我们可以认为 HTTPS = HTTP + TLS/SSL。TLS/SSL 的引入解决了安全问题,而上层应用协议还是 HTTP。 ###历史 SSL(Secure Sockets Layer)中文称作“安全套接层”,TLS(Transport Layer Security),中文称作“传输层安全协议”。 1. 1994 年,网景(NetScape)公司设计了 SSL 1.0 2. 1995 年,SSL 2.0,存在严重漏洞 3. 1996 年,SSL 3.0,得到大规模应用 4. 1999 年,IETF 对 SSL 进行标准化,发布了 TLS 1.0 5. 2006 年和 2008 年,TLS 进行了两次升级,分别为 TLS 1.1 和 TLS 1.2 在应用层,我们习惯将两者并称 TL....

More...

Java 实时论坛 - Sym 1.3.0 发布

简介 Sym 是一个用 Java 写的实时论坛,欢迎来体验! ### 初衷 Sym 的诞生是有如下几点原因: * 我们想实现一种新的网络社区体验,独立博客+社区互动 * 大多数论坛用户体验不够现代化,想做一个和聊 QQ 一样体验的论坛 * 已有的用 Java 写的论坛真的很少/丑,并且大多已经不再维护 ### 基本理念 #### 实时交互 在浏览帖子时,传统论坛都是需要刷新页面来查看回帖的。Sym 在类似的用户交互场景上是基于 WebSocket 技术进行架构的,看帖时不需要刷新页面也可以看到其他人回帖。 #### HTML5 Sym 使用了很多 HTML5 提供的技术特性,比如通过使用_本地存储_防止编辑帖子/评论时内容丢失;使用了_音频_特性来进行帖子/评论音频录制;复制/粘贴上传图片等等。 运用这些技术,Sym 可以让用户在分享、灌水时更加便捷、舒服 :smirk: #### 积分系统 积分系统是所有论坛的基础/标配系统之....

More...

Java 开源博客 Solo 1.1.0 发布 - 告别 GAE

Solo 1.1.0 正式发布了,感谢一直以来关注 B3log 开源的朋友! 在这个版本中,我们对项目结构和发布包进行了重大调整: 1. 各式科学上网尚未普及,所以决定去除 GAE 版本 2. H2 版本使用人数较少,所以决定去除 也就是说, 1. Solo 的发布包只有一个 for MySQL 版本的了 2. 项目的 POM 结构也大幅度进行了简化,只有一个 war 项目了 欢迎大家来 Star/Fork ! ### 特性简介 * 基于标签的文章分类 * 博客/标签 Atom/RSSSitemap 输出 * 评论回复及邮件提醒 * 自定义页面、导航 * 多编辑器:Markdown、TinyMC....

More...

基于 Web 的 Go 语言 IDE - Wide 1.4.0 发布!

我们在 Wide 1.4.0 中对跨平台编译(交叉编译)进行了支持!

More...

Go 编译跨平台

适用于 [Linux],拷贝代码后新建文件 cross.bash,并在 ${go 安装路径}/src 目录下执行。

More...

Java 开源博客 —— Solo 1.0.0 发布了!

从 Solo 第一个版本发布至今,已经过去 5 年了。今天我们非常自豪地宣布,Solo 1.0.0 正式发布,感谢一直以来关注 B3log 开源的朋友! 目前 B3log 开源有三款产品: * GitHub 上 Star 数最多的 Java 博客 Solo * Golang 黑科技之在线 IDE Wide * 基于实时交互技术的社区 Sym ### 特性 * 基于标签的文章分类 * 博客/标签 Atom/RSSSitemap 输出 * 评论回复及邮件提醒 * 自定义页面、导航 * 多编辑器:Markdown、T....

More...

Go 边看边练 -《Go 学习笔记》系列(十四)(已完结)

上一篇: [1438938175118] ---- ### ToC * Go 边看边练 -《Go 学习笔记》系列(一)- 变量、常量 * Go 边看边练 -《Go 学习笔记》系列(二)- 类型、字符串 * Go 边看边练 -《Go 学习笔记》系列(三)- 指针 * Go 边看边练 -《Go 学习笔记》系列(四)- 控制流1 * Go 边看边练 -《Go 学习笔记》系列(五)- 控制流2 * [Go 边看边练 -《Go 学习笔记》系列(六)- 函数](http://symphony.b3....

More...

Go 边看边练 -《Go 学习笔记》系列(十三)

上一篇: [1438845728987] ---- ### ToC * Go 边看边练 -《Go 学习笔记》系列(一)- 变量、常量 * Go 边看边练 -《Go 学习笔记》系列(二)- 类型、字符串 * Go 边看边练 -《Go 学习笔记》系列(三)- 指针 * Go 边看边练 -《Go 学习笔记》系列(四)- 控制流1 * Go 边看边练 -《Go 学习笔记》系列(五)- 控制流2 * [Go 边看边练 -《Go 学习笔记》系列(六)- 函数](http://symphony.b3....

More...