工作中遇到的技术琐事
文章平均质量分 87
每个技术人员都是从理论到实践,然后从实践再去巩固理论;来回反复的过程~
菜刚
工作十年的互联网老兵。目前在百度,曾在NEC、新浪微博、贝壳找房等知名互联网公司从事研发工作。热爱技术,喜欢分享,习惯将工作生活中遇到的有趣的知识点写成blog,希望大家可以一起多多交流~
展开
-
为什么Go语言不允许循环引入?
每当Go程序编译出现循环引入报错的时候就非常让人头疼。那么,为什么Go不允许循环引入呢?我觉得原因如下:搞清楚package包的定位首先,搞清楚Go语言中package包的定位;Go语言的package和其他语言中的库、模块是相同的概念,在其他语言中,实现某个库或者模块需要建立"单独的项目",而在Go中,仅仅是一个包就够了。在正常Coding的时候,在我们项目中可以随便引入外来的项目(例如PHP项目引入PHP包),但是,我们可以随意的修改引入的包吗?不可以!在我们写PHP的时候,我们可以引外来的原创 2020-06-23 01:34:47 · 70092 阅读 · 2 评论 -
Laravel 以ElasticSearch的方式使用scout
Laravel5.3已经发布了,这次版本多了一个官方工具包:scout。这个包的作用就是帮助大家更好的将全文检索工具和项目更好的结合,让开发者使用起来更方便。但是我发现了一个问题:Laravel官方文档对于scout的使用说明并没有那么详细,只讲了如何将检索工具“Algolia”(法国一家公司提供的检索PaaS服务)和Laravel结合的使用方式,而没有讲使用ElasticSearch的方式...原创 2016-10-16 18:45:00 · 8058 阅读 · 3 评论 -
Scala那些奇怪的符号(三)
<% 这个符号有点像“<:”,但作用却完全不一样,类型上边界“<:”的意思有点像继承,A <: B 表示 A是B的子类;而A <% B的意思是“A可以转化为B”,这里可以不必强调A和B本身的关系,只要有一个从A到B的隐士转化即可。(注意:不必是隐士转换,因为可能是B类本身)下面我们看例子:依然是上几篇文章中的那几个例子,有Earth、Anima、Bi...原创 2016-08-18 00:40:26 · 4251 阅读 · 1 评论 -
playframework 使用日志(一)
日志模块是一个系统中必不可少的一部分,它可以帮助我们写程序的时候查看错误信息,利于调试和维护,在业务面,它也可以记录系统的一些关键性的操作,便于系统信息的监控和追踪。 play的日志是基于logback的,使用起来特别的方便,这点不得不佩服设计者。 接下来,我们先简单粗暴的试用一下:1、首先创建一个play工程,名字为:hello_log;如果你的IntelliJ id...原创 2015-01-05 02:18:18 · 15388 阅读 · 1 评论 -
Dockerfile 指令详解
Docker创建镜像的方式有两种:一种通过commit的方式:把做了一系列操作的容器关闭,然后利用docker的commit指令:dockercommit 容器ID 镜像名:tag。然后dockerpush到镜像仓库。别人pull下来的再次启动的时候,就是你当前的操作的形态。另一种是通过Dockerfile构建的方式:把操作的步骤通过脚本的形式写下来,然后构建的时候,Docker会按照你写...转载 2016-03-11 13:58:34 · 22207 阅读 · 1 评论 -
Docker入门介绍
Docker是一种虚拟化技术 刚开始看Docker,感觉很抽象“An open platform for distributed applications for developers and sysadmins”这是Docker的标语。“一个服务于分布式系统的开发人员和运维人员的开放平台”。不是很好理解,直到文档中不断地和虚拟机做对比,才理解到它可能是和虚拟机相关的技术。Docke...原创 2016-03-11 00:56:47 · 1753 阅读 · 2 评论 -
Docker镜像加速器
由于国内GFW的原因,国内的网络环境无法流畅的使用Docker,所以在国内使用Docker的时候,必须使用Docker镜像加速器。灵雀云、阿里云、和DaoCloud的配置过程过于简单,有很多有问题的地方,在这里做了补充。灵雀云:1、注册账号,获得镜像加速地址。例:http://ryugou.m.alauda.cn2、找到 https://console.alauda.cn/...原创 2016-03-11 00:40:04 · 9222 阅读 · 0 评论 -
本地安装es遇到的问题小结
自己搭建es集群,遇到如下问题(系统环境:CentOS 6.8 CentOS 7 ):root用户不能运行对于es中es总目录、logs目录、config目录中的文件必须要有读写权限要想外网访问,需要设置yaml文件的ip地址为:0.0.0.0需要设置虚拟内存 vm.max_map_count 的值不小于262144即使用sysctl命令:sysctl -w vm.max...原创 2019-05-10 21:44:02 · 318 阅读 · 0 评论 -
5分钟了解swagger
随着互联网技术的发展,现在的网站架构基本都由原来的后端渲染,变成了:前端渲染、先后端分离的形态,而且前端技术和后端技术在各自的道路上越走越远。 前端和后端的唯一联系,变成了API接口;API文档变成了前后端开发人员联系的纽带,变得越来越重要,swagger就是一款让你更好的书写API文档的框架。其他API文档工具没有API文档工具之前,大家都是手写API文档的,在什么地方书写的都有,有在confl原创 2017-08-27 20:47:06 · 351956 阅读 · 39 评论 -
php、nginx 两个分开的容器相连连不上的问题总结
php、nginx 两个分开的容器相连连不上的问题总结在网上搜罗了一圈,发现所有牵扯到php和ngin的镜像,都是php-nginx“粘”在一起的,想要搜到一个php、nginx俩分开的镜像还真不好找。于是便自己制作。但是在制作过程中,发现php和nginx通过docker的``link``指令连在一起的时候,总是连不上,经过了一番折腾,终于发现了其中的猫腻。应该注意三个点:nginx配置记得要原创 2017-08-20 23:57:14 · 5211 阅读 · 0 评论 -
laravel request 类里 get方法和input的方法的区别?
同样一个post请求,以form-data的形式传送一个数据'title'的时候,get('title')和input('title')都可以取到。但是以json的形式传送的时候,get('title')得到的是null,而input('title')却可以正确的取到值。对于get请求,get和input方法都可以取到相同的值。get和input的方法的实现类其实并不一样。get在...原创 2016-07-27 23:47:14 · 12888 阅读 · 0 评论 -
ElasticSearch 解析机制常见用法库 之 Character Filters常用用法
以下三种Character Filter是elasticsearch官方提供的三种,(只有三种哦!)Mapping Char Filter通过给定的mappings数据来替换. mappings mappings数据. mappings_path 一个存放mappings数据的地址,可以把mappi...翻译 2016-07-18 18:47:19 · 3903 阅读 · 1 评论 -
ElasticSearch 解析机制常见用法库 之 Tokenizer常用用法
Tokenizer 译作:“分词”,可以说是ElasticSearch Analysis机制中最重要的部分。standard tokenizer标准类型的tokenizer对欧洲语言非常友好, 支持Unicode。如下是设置:设置 说明 max_token_length 最大的token集合,即经过tokenizer过后得到的结果集的最...翻译 2016-06-18 14:22:04 · 18801 阅读 · 2 评论 -
Scala函数式编程原理 第三课
在上一堂课中,我们共同探索了一个非常正规有条理的表达式求值模式——“转换模型”的表达式求值。我们发现有多种方式去实现表达式的求值,我们并一起探讨了call by name和call by value这两种求值策略。在这堂课里,我们进一步探讨两种求值策略的不同,特别是在两种求值策略影响最终值的方面,会做深入的学习和探讨。 如果看看上节课中咱们比较的call by name 和 c...翻译 2016-06-18 18:30:51 · 822 阅读 · 0 评论 -
Scala函数式编程原理 第二课 编程的本质(Elements of programing)
从这周开始,我将开始学习Scala编程,我们将由浅入深的学习这门新的语言和函数式编程范式。这堂课的大部分内容对你来讲将会非常的简单易懂,因为这都是你熟悉的东西。但是,也有一些东西是对以后学习打下根基的东西,特别像是我们称之为“代替模型”的求值前的模型等知识,将会对以后的课程非常的重要,希望大家多多注意。好的,让我们开始吧: 每一门非凡的计算机语言都有以下几点:...翻译 2016-05-18 01:06:45 · 2502 阅读 · 0 评论 -
Scala函数式编程设计原理 第一课 编程范式(Programming Paradigms)
我使用Scala有一两年的时间了,这门语言仿佛有一种魔力,让人用过就不想放手。Scala给我的整个程序生涯带来了非常深刻的影响,让我学会了函数式编程,让我知道了世界上居然还有这么一种优雅、高效、强大的语言。 Scala在国外已经非常流行,但是不知为何,在国内总是不温不火,在此,我特别想为Scala这门语言在国内的发展做一些事情。不才不敢谈Scala的编程经验,因为要成为Sca...翻译 2016-05-08 15:54:54 · 4696 阅读 · 3 评论 -
laravel Pagination 如何获取实例?
laravel的Pagnation 是laravel自带的分页框架,前端只需传一个"page",后端只需写“Model::Pagnation”就可以完美的实现分页。相信大家都用过,但是你会发现不好实现特定实体的分页,比如我要返回的是User和Company俩实体的混合体的结果,该如何使用“Pagnation”来实现呢? 可能你翻过无数的资料都没找到利用Pagnati...原创 2016-04-27 00:01:01 · 5282 阅读 · 0 评论 -
三分钟学会扩展laravel服务
刚开始看了laravel "系统架构"这一章后,感觉很难懂,不知道service provider、service container、Facade等等名词讲的是什么鬼。直到自己摸索写出了一个elastic search的服务扩展才恍然大悟。 其实,laravel service provider、service container、Facade 讲的都是一件事儿:...原创 2016-04-03 15:10:58 · 6405 阅读 · 0 评论 -
Scala、PHP、Golang 二分法查找
二分法查找是比较常见的查询算法。对于一个有序序列,注意:是有序序列,找出其中某一个元素,通常的做法是序列中拿出一个一个的元素,每个元素和所需元素作比较,如果是想要的结果,就把元素的序号输出来。例如有序列:0, 3, 5, 7, 9, 11, 12, 13。我想要找7这个元素,我就取第一个元素0,和“11”比较,发现不是,然后取第二个“3”和“11”比较...直到取到第六个元素“11”,发现是想...原创 2016-03-23 18:22:12 · 1365 阅读 · 0 评论 -
浅谈Java和PHP的异同
编程范式:Java:纯面向对象的语言,有人说过:Java中一切皆对象!当然咯,人们都忘了Java的八种基本数据类型:int、double、boolean、byte、float、 long、short、char。但是念在每个Java每个基本数据类型都有包装类(int的包装类是Integer)的基础上,就姑且认为一切是对象吧。PHP:即使用可面向对象的方式编程,又可使用面向过程的方式。...原创 2015-12-18 15:57:05 · 8356 阅读 · 2 评论 -
playframework 使用日志 (二)
带着之前的疑问,我们先回顾一下日志相关的知识: 首先是SL4J,SL4J是个什么东西来着?官方解释为:“The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks (e.g. java.util.logging, log...原创 2015-01-05 02:20:17 · 4098 阅读 · 0 评论 -
细数Scala下划线“_”的用法
第一:初始化的时候。object Sample { var name:String=_ def main (args: Array[String]){ name="hello world" println(name) } 在这里,name也可以声明为null,例:var name:String=null。这里的下划线和null的作用是一样的。第二:引入的时候...原创 2015-11-24 21:05:46 · 29250 阅读 · 11 评论 -
Elasticsearch简单入门及应用
来源:多年前,一个叫做Shay Banon的刚结婚不久的失业开发者,由于妻子要去伦敦学习厨师,他便跟着也去了。在他找工作的过程中,为了给妻子构建一个食谱的搜索引擎,他开始构建一个早期版本的Lucene。 直接基于Lucene工作会比较困难,所以Shay开始抽象Lucene代码以便Java程序员可以在应用中添加搜索功能。他发布了他的第一个开源项目,叫做“Compass”。 后来...原创 2016-02-03 16:31:39 · 12178 阅读 · 0 评论 -
playframework 简介
play是一个为Scala开发者和Java开发者量身打造的高效的、一站式的开发web开发框架,适用于网站开发,也可以用作rest后端。目前,有越来越多的公司被它的“简洁”和“高效”所吸引,并且投入使用,例如LinkedIn等。如果你是一名Scala开发者,或者你是一名Java“极客”,那么相信你看到这个框架肯定会眼前一亮。在此,提倡用Scala来运用play框架。 以下是我个...原创 2015-08-27 00:55:49 · 4163 阅读 · 5 评论 -
play 认证相关的组件 silhouette
"silhouette"的名字来源于美国的科幻小说《守望者》中的一个角色名,至于作者为何会选择这个名字,我们不得而知,总之作者可定非常喜欢这个角色吧。“silhouette”是一个基于play的认证相关的库,是目前使用比较广泛的库。它提供了OAuth1, OAuth2, OpenID, Credentials, Basic Authentication等多种认证方式。它可以整合成一...原创 2015-11-10 15:44:25 · 2647 阅读 · 0 评论 -
playframework 使用 IDE
目前支持Play的IDE的有eclipse和IntelliJ IDEA,在此,推荐使用后者,因为目前为止,对Play和Scala支持最好的IDE就是IntelliJ IDEA。 要想把已有的从activator 中生成的play工程导入IDE,首先需要下载IntelliJ IDEA和这个IDE的必备插件 1、下载IntelliJ IDEA:http://www.jet...原创 2015-09-05 17:39:00 · 2402 阅读 · 0 评论 -
play 细说框架目录结构
play的目录结构制作的相当精简,以下是从play官网截下的图片: app → Application sources └ assets → Compiled asset sources └ stylesheets → Typically LESS CSS sources...原创 2015-09-07 15:43:14 · 9000 阅读 · 8 评论 -
Scala 的那些奇怪的符号 (一)
Scala的语法很多,有些人认为过于繁琐,有些人却认为正是因为繁琐,所以才让这门语言严谨和强大。 例如在翻阅Scala资料或者查看Scala源码的时候,经常会看到“<:”和“>:”,这是什么鬼?下面我就来探讨一下这两个符号的用法:“<:”符号我们定义一个类:“Earth”class Earth { def sound(){ ...原创 2016-07-29 18:21:41 · 17399 阅读 · 2 评论 -
Golang 的json处理
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2017-05-01 20:02:43 · 5407 阅读 · 0 评论 -
swagger和gitlab结合做API文档
使用docker技术,将gitlab和swagger做一个有机的结合,达到的效果为:每次提交代码,都会自动生成swagger API文档。以下是实现流程步骤:代码和目录结构docker-compose.yml文件书写swagger_ui: image: swaggerapi/swagger-ui:latest container_name: swagger_ui ports: -原创 2017-09-17 02:36:29 · 5337 阅读 · 0 评论 -
HTTP 缓存详解
用途HTTP缓存主要用在对一些实时性要求不高的静态文件进行的缓存,往往都是存在浏览器端,防止这些“多余”的请求重复的访问服务器,对服务器造成压力,从而提高网站的性能。原理现有两端,浏览器C和服务器端S。浏览器向服务器发送请求,获取一个文件f服务器就把f给返回浏览器假如这个文件的内容变化不是那么快,一两周更新一次,浏览器每次请求服务器都返回相同的文件,岂不是对服务...原创 2018-04-29 01:40:42 · 6272 阅读 · 5 评论 -
在play中如何查看h2 数据库中的数据
在Activator UI中有大量的temple使用的是H2这个内存数据库,使用这个数据库有很多好处,但是大家搞不清楚如何在play中合理的使用它,在此,我经过研究,把相对合理的使用方法告诉给大家。 单独使用H2 database想必大家都会,就是从官网下载http://www.h2database.com/html/main.html,然后解压,然后运行解压bin目录...原创 2015-08-30 23:10:31 · 10587 阅读 · 2 评论