- 博客(71)
- 收藏
- 关注
原创 设计模式--创建型模式--原型模式
上一篇文章我们介绍了设计模式的七种面向对象设计原则,本篇文章我们将介绍设计模式中创建型模式的单例与多例模式。在了解单例模式之前我们先来了解一下设计模式的分类有哪些呢?设计模式的分类有哪些?设计模式是在软件开发中,经过验证的,用于解决在特定环境下、重复出现的或者特定问题的解决方案。而这些都是前辈们经过大量的实践总结出来的宝贵经验,学习和领会其中的设计思想,能让我们在面...
2024-06-20 09:10:28
469
1
原创 linux将一个大文件按行拆分成小文件
split命令-l指定行数,每个文件多少行-b指定大小,每个文件100M.,这种担心会破坏一行的完整性-d指定用数字递增为生成的文件名编号 test111为前缀-a指定有几位数字这里指定了4位,则从0000开始split -l 700000 /data.csv -d -a 4 testsplit -b 100M /data.csv -d -a 4 test...
2020-07-06 21:30:36
1475
2
转载 Session锁和session_write_close和session_commit函数
session默认是文件存储,也可以存在数据库和内存,存入内存可以使用Memcached和Redis技术Session默认存在文件中,在这种情况下:使用session_start()函数之后就会对该sessionId文件锁定,直到还脚本执行完毕才存入文件和解锁,当一下情况会非常耗时:1:一个页面有多个ajax请求,并且多个ajax请求页都涉及到session,即都得操作同一个session文件,由于锁定ajax的执行必须是逐个执行的。2:同时访问一个网站的多个页面,各个页面都涉及se
2020-06-02 22:17:25
482
原创 PHP中9大缓存技术总结
1、全页面静态化缓存也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程。此种方式,在CMS系统中比较常见,比如dedecms;一种比较常用的实现方式是用输出缓存:Ob_start()******要运行的代码*******$content = Ob_get_contents();****将缓存内容写入html文件*****Ob_end_clean();2、页面部分缓存该种方式,是将一个页面中不经常变的部分进行静态缓存,而经常变化的块不缓存,
2020-05-17 09:10:20
312
转载 如何设计Web API?
大多数现代的Web应用程序都公开了客户端可以用来与应用程序交互的API。精心设计的Web API应该旨在支持: 平台独立性。无论内部如何实现API,任何客户端都应该能够调用API。这需要使用标准协议,并具有一种机制,使客户端和Web服务可以就要交换的数据格式达成一致。 服务演进。Web API应该能够独立于客户端应用程序进行演化和添加功能。随着API的发展,现有的客户端应用程序...
2019-12-09 17:37:31
403
转载 设计模式--创建型模式--原型模式
欢迎大家关注我的公众号,以后发布的文章会同步在csdn与公众号上!上一篇文章我们介绍了设计模式的创建型模式中单例与多例模式,本篇文章我们将介绍设计模式中创建型模式的原型模式。原型模式原型模式的定义及特点原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原...
2019-12-09 15:29:53
211
转载 设计模式--创建型模式--单例与多例模式
上一篇文章我们介绍了设计模式的七种面向对象设计原则,本篇文章我们将介绍设计模式中创建型模式的单例与多例模式。在了解单例模式之前我们先来了解一下设计模式的分类有哪些呢?设计模式的分类有哪些?设计模式是在软件开发中,经过验证的,用于解决在特定环境下、重复出现的或者特定问题的解决方案。而这些都是前辈们经过大量的实践总结出来的宝贵经验,学习和领会其中的设计思想,能让我们在面对相同问题时可...
2019-12-09 15:25:43
347
转载 设计模式--7种面向对象设计原则
软件设计模式的产生背景1995 年,艾瑞克·伽马(ErichGamma)、理査德·海尔姆(Richard Helm)、拉尔夫·约翰森(Ralph Johnson)、约翰·威利斯迪斯(John Vlissides)等 4 位作者合作出版了《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Soft...
2019-12-09 15:15:57
389
原创 go mod 与 goproxy 的使用
go modules是 golang 1.11 新加的特性,Modules官方定义为:模块是相关Go包的集合。modules是源代码交换和版本控制的单元。 go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。使用把 golang 升级到 1.11(现在1.12 已经发布了,建...
2019-11-19 11:17:10
2982
原创 每日一道 Go 编程题
非常非常有意思的一道编程题package mainimport ( "fmt" "sync" "time")var mu sync.RWMutexvar count intfunc main() { go A() time.Sleep(2 * time.Second) mu.Lock() defer mu.Unlock() count++ fmt.Println...
2019-11-14 10:00:20
270
转载 Golang构建HTTP服务(二)--- Handler,ServeMux与中间件
Golang标准库http包提供了基础的http服务,这个服务又基于Handler接口和ServeMux结构的做Mutilpexer。实际上,go的作者设计Handler这样的接口,不仅提供了默认的ServeMux对象,开发者也可以自定义ServeMux对象。本质上ServeMux只是一个路由管理器,而它本身也实现了Handler接口的ServeHTTP方法。因此围绕Handler接口的方法S...
2019-11-12 11:32:09
1117
转载 Golang构建HTTP服务(一)--- net/http库
实现一个最简单HTTP server需要多少代码?只需要一行,Python2的python -m SimpleHTTPServer,ruby的ruby -run -e httpd . -p 8888。对于Golang,实现一个最简单的http server也用不着几行,却能带来更具杀伤力的性能。一个Go最简单的http服务器:package mainimport ( "fmt...
2019-11-12 11:22:13
514
转载 golang实现RPC的几种方式
什么是RPC远程过程调用(Remote Procedure Call,缩写为 RPC)是一个计算机通信协议。 该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。 如果涉及的软件采用面向对象编程,那么远程过程调用亦可称作远程调用或远程方法调用。维基百科:远程过程调用用通俗易懂的语言描述就是:RPC允许跨机器、跨语言调用计算机程序方法。打个比方,我...
2019-11-12 10:51:53
334
原创 Go 实现RESTful
RESTful,是目前最为流行的一种互联网软件架构。因为它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。本小节我们将来学习它到底是一种什么样的架构?以及在Go里面如何来实现它。什么是RESTREST(REpresentational State Transfer)这个概念,首次出现是在 2000年Roy Thomas Fielding(他是HTTP规范的主要编写者之...
2019-11-12 10:25:25
840
原创 Linux CentOS7 安装 Chrome
下载 wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm 安装依赖包 yum install -y lsbyum install -y libXScrnSaveryum install -y liberation-fontsyum install ...
2019-10-27 12:28:55
942
转载 三次握手和四次挥手
希望大家能带着如下问题进行阅读,收获会更大。请画出三次握手和四次挥手的示意图 为什么连接的时候是三次握手? 什么是半连接队列? ISN(Initial Sequence Number)是固定的吗? 三次握手过程中可以携带数据吗? 如果第三次握手丢失了,客户端服务端会如何处理? SYN攻击是什么? 挥手为什么需要四次? 四次挥手释放连接时,等待2MSL的意义?...
2019-10-09 09:44:39
110
原创 今天的想法
引用史蒂夫·乔布斯的话:您的时间有限,所以不要浪费时间过别人的生活。不要被教条所困-教条是与他人思维的结果一起生活的。不要让别人意见的喧闹淹没您内心的声音。最重要的是,要勇于跟随自己的内心和直觉。他们已经以某种方式知道您真正想要成为什么。其他一切都是次要的。保持饥饿。保持愚蠢。...
2019-09-30 13:13:28
136
原创 Centos7 防火墙 firewalld 实用操作
一.前言Centos7以上的发行版都试自带了firewalld防火墙的,firewalld去带了iptables防火墙。其原因是iptables的防火墙策略是交由内核层面的netfilter网络过滤器来处理的,而firewalld则是交由内核层面的nftables包过滤框架来处理。 相较于iptables防火墙而言,firewalld支持动态更新技术并加入了区域(zone)的概念。简单来说,区...
2019-09-14 20:10:28
261
原创 Linux CentOS7 安装 Nginx PHP7 并设置开机启动
所有操作需要在root用户下安装路径:/usr/local/php先安装如下依赖包:yum install -y gcc gcc-c++ make zlib zlib-devel pcre pcre-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-deve...
2019-09-13 17:43:25
485
原创 Linux CentOS7 下安装 Mysql5.7 并设置自启动
安装软件:mysql5.7说明:使用官方编译好的二进制文件进行安装1.检查操作系统是否自带mysql[root@localhost local]# rpm -qa|grep mysqlmysql-libs-5.1.73-8.el6_8.x86_64比如我这里自带了一个mysql。使用yum命令,因为yum命令可以自动删除与mysql相关的依赖;如果使用rpm命令,则还需要手...
2019-09-12 17:16:08
3601
转载 基于go的 rpc框架实践
我们先回顾一下 rpc 的历史,再介绍我们常用的两个Go RPC框架。一个是 rpc 本身的官方库,还有就是大家常用的 Grpc 框架,我并不想在这个分享会推广我的框架,而是想跟大家分享一下我在做这个框架的过程中考虑的一些问题。大家如果没有用过 rpc 的框架的话可以了解一下这方面的知识,正在用的同学也可以熟悉一下使用rpc框架的时候需要考虑的方面, 如果碰巧你正在做rpc框架,可...
2019-09-07 18:55:57
525
原创 Redis,Memchche,MongoDb的区别
一、Nosql介绍1.Nosql简介2.Nosql的特点和关系型数据库的区别3.Redis,Memcache,MongoDb的特点与区别4.参考文章Nosql介绍Nosql的全称是Not Only Sql,这个概念早起就有人提出,在09年的时候比较火。Nosql指的是非关系型数据库,而我们常用的都是关系型数据库。就像我们常用的mysql,sqlserver一样,这些数据库一般...
2019-09-07 14:04:50
154
原创 git下载出现:Failed to connect to 127.0.0.1 port 1753: Connection refused拒绝连接错误
一、git拒绝连接原因分析使用git从远程仓库下载代码出现上述的错误是因为使用了proxy代理,所以要解决该问题,核心操作就是要取消代理二、错误解决方式1、查看Linux当前有没有使用代理方式一:通过git的配置文件查看有无使用代理(没有成功)查询是否使用代理:git config --global http.proxy1注: 我在使用该方法并没有返回任何信息,也没有返回代理使用...
2019-09-03 19:40:35
1827
转载 go语言核心—channel学习
这周来学习一下go语言的核心之一-channel,都知道go语言支持高并发,其原因就是goroutine-协程的存在,这是一种逻辑上等同于线程,而实际和线程又和线程有所不同,关于协程的学习,等下次结合这线程一起学习对比一下。今天主要简单的学习一下线程之间通讯的方式-channel。一、channle的基本概念channels是go中不同goroutines交互数据的一种通道,也就是说如果两...
2019-09-02 20:27:01
201
原创 如何 优雅的关闭 channel
在使用Go channel的时候,一个适用的原则是不要从接收端关闭channel,也不要在多个并发发送端中关闭channel。换句话说,如果sender(发送者)只是唯一的sender或者是channel最后一个活跃的sender,那么你应该在sender的goroutine关闭channel,从而通知receiver(s)(接收者们)已经没有值可以读了。维持这条原则将保证永远不会发生向一个已经关...
2019-09-02 20:22:24
1154
原创 Go中的Channel——range和select
数据接受者总是面临这样的问题:何时停止等待数据?还会有更多的数据么,还是所有内容都完成了?我应该继续等待还是该做别的了?对于该问题,一个可选的方式是,持续的访问数据源并检查channel是否已经关闭,但是这并不是高效的解决方式。Go提供了range关键字,将其使用在channel上时,会自动等待channel的动作一直到channel被关闭 示例代码1 package...
2019-09-02 20:11:42
427
转载 知乎社区核心业务 Golang 化实践
导读:Go 语言是近年来迅速发展的新编程语言,国内已经有大量公司从其他语言转换到Go 语言。知乎作为国内 Python 语言大厂之一,也开启了切转换 Go 语言的大门。他们为何要做这样的转换?又是怎样转换的?碰到了什么问题?又是怎样解决这些问题的?本文作者一一为你解答。背景众所周知,知乎社区后端的主力编程语言是 Python。随着知乎用户的迅速增长和业务复杂度的持续增...
2019-09-01 19:53:40
251
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人