Windows设置GOPATH后不生效解决办法
文章首发于:clawhub.club
安装完GO之后,打开cmd,输入go env,可以看到当前go环境信息。默认GOPATH为用户目录下,但是工作中想把GOPATH放到非C盘目录。于是,通过右键我的电脑,设置环境变量,但是发现设置之后不生效。
终于在网上找到了解决办法:
1setx GOPATH %USERPROFILE%\go
参考地址:https://github.com/golang/go/wiki/SettingGOPATH#windows
exec gcc executable file not found in %PATH%
文章首发于:clawhub.club
通过IDEA运行GO程序的时候,抛出异常: exec gcc executable file not found in %PATH%经过网上搜索,发现原因是windows缺少GCC原码编译工具,最后安装了tdm64-gcc-5.1.0-2之后解决。官网:http://tdm-gcc.tdragon.net/官方下载地址 比较慢。百度云:链接:https://pan.baidu.com/s/1H1ReUtLJIWzLXumV6CEgeA提取码:zgn6
Golang包管理-vendor
文章首发于:clawhub.club
Vendor目录介绍Golang 官方并没有推荐最佳的包管理方案。到了1.5版本时代,官方引入包管理的设计,加了 vendor 目录来支持本地包管理依赖。官方 wiki 推荐了多种支持这种特性的包管理工具,如:Godep、gv、gvt、glide、govendor等。即使使用vendor,也必须在GOPATH中。
查找依赖包路径的顺序
当前包下的vendor目录。
向上级目录查找,直到找到src下的vendor目录。
在GOPATH下面查找依赖包。
在GOROOT目录下查找
包管理工具govendor需要把 $GOPATH/bin/ 加到 PATH 中。
安装1go get -u github.com/kardianos/govendor
命令12345678910111213141516init 创建 vendor 文件夹和 vendor.json 文件list 列出已经存在的依赖包add 从 $GOPATH 中添加依赖包,会加到 vendor.jsonupdate 从 $GOPATH 升 ...
Windows下安装Go1.12和IDEA配置GO开发插件
文章首发于:clawhub.club
1、下载GO:go1.12.windows-amd64.msi
2、双击安装,一路下一步,直到安装成功。
3、查看Go版本及Go的环境信息,已验证是否安装成功1go version
1go env
4、查找IDEA的Go插件,下载安装
5、查看及配置GOPATH
资源池-FastDFS连接池的JAVA实现
文章首发于:clawhub.club
简介分布式文件系统FastDFS非常适合中小型项目,比如说作为图片服务器。happyfish100大神的github:fastdfs,fastdfs-client-java。
简单的对客户端进行了连接池的封装,方便使用。
系统启动,池子管理连接
心跳确认连接是否可靠
构造器模式创建连接池
回调方式使用客户端
核心代码初始化连接池1234567891011121314151617181920212223242526272829/** * Build fast dfs conn pool. * * @return the fast dfs conn pool */ public FastDFSConnPool build() { // 初始化空闲连接池 idleConnectionPool = new LinkedBlockingQueue<>(maxPoolSize); //初始化全局参数 try { ...
资源池-数据库连接池简单实现-JAVA版本
文章首发于:clawhub.club
分析看了看druid和dbcp2的原码,发现他们都有各自存储连接的方式。
druid :1private volatile DruidConnectionHolder[] connections;
dbcp212private final LinkedBlockingDeque<PooledObject<T>> idleObjects = new LinkedBlockingDeque<PooledObject<T>>();
以自己的理解写了个简单的连接池
采用LinkedBlockingQueue管理数据库连接
实现javax.sql.DataSource接口
采用构造者设计模式
通过反射技术获取驱动
兼容MYSQL5与6驱动
支持配置连接池资源消耗殆尽的处理策略
未实现空闲连接数控制
核心源码
初始化连接池
获取连接
释放连接
使用连接池
github源码地址ClawDataSource
资源池-数据库连接池原理
文章首发于:clawhub.club
实现原理数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数制约。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。而连接的建立、断开都由连接池自身来管理。同时,还可以通过设置连接池的参数来控制连接池中的初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等。也可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。
注意事项
数据库连接池的最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费。
数据库连接池的 ...
资源池-指标
文章首发于:clawhub.club
initialSize初始化连接数:连接池启动时创建的初始化连接数量
maxActive最大连接数量:连接池在同一时间能够分配的最大活动连接的数量如果设置为非正数则表示不限制,表示同时最多有maxActive个数据库连接。
whenExhaustedStrategy资源消耗殆尽时,获取连接的处理策略
WHEN_EXHAUSTED_FAIL 到达pool的阀值,失败的处理
WHEN_EXHAUSTED_BLOCK 到达pool的阀值,阻止再次借用对象的处理
WHEN_EXHAUSTED_GROW 到达pool的阀值,生成新的对象提供给外部调用者
maxWaitMillis当池消耗殆尽且消耗的策略是WHEN_EXHAUSTED_BLOCK,可以设置最大等待时间,如果小于0,可能会无限期阻止。
maxIdle最大空闲连接:连接池中容许保持空闲状态的最大连接数量,超过的空闲连接将被释放,如果设置为负数表示不限制,表示即使没有数据库连接时依然可以保持maxIdle空闲的连接,而不被清除,随时处于待命状态。
minIdle最小空闲连接:连接池中容许保 ...
资源池-概念
文章首发于:clawhub.club
概念资源池指系统资源可以随时的使用,但是不随时的创建与产生。一般用于解决获取资源成本太高,或者资源总数量很少,但是又需要频繁的使用的问题。比如数据库连接池,线程池,都是因为频繁的创建或销毁连接/线程/对象会极大的浪费系统资源,增加了响应耗时,影响到系统性能。
分类资源池技术已经在编程世界应用的炉火纯青,根据资源的类型,分为连接池,线程池,内存池。
连接池管理网络连接的技术,通常在高并发高吞吐量的情况下,用连接池来管理长连接。技术例子:数据库连接池,FastDFS连接池。
线程池线程是计算机系统非常重要的资源,频繁的创建与销毁是不明智的。技术例子:JAVA线程池技术
内存池对象的创建,消费也非常的浪费资源,就比如射击游戏中的子弹,人物之类的对象,会频繁的发生对象产生与消亡。技术例子:mybatis缓存机制
参考从内存池到连接池 老码农眼中的资源池
springboot内置Tomcat的AccessLog配置与使用Log4j2管理AccessLog
文章首发于:clawhub.club
配置AccessLog在Spring boot中使用了内嵌的tomcat,可以通过server.tomcat.accesslog配置tomcat 的access日志
12345678910server.tomcat.accesslog.buffered=true # 缓存日志定期刷新输出(建议设置为true,否则当有请求立即打印日志对服务的响应会有影响)server.tomcat.accesslog.directory=logs # 日志文件路径,可以是相对于tomcat的路径也可是绝对路径 server.tomcat.accesslog.enabled=false # 是否开启访问日志server.tomcat.accesslog.file-date-format=.yyyy-MM-dd # 放在日志文件名中的日期格式 server.tomcat.accesslog.pattern=common # 日志格式,在下面详解 server.tomcat.accesslog.prefix=access_log # 日志文件名前缀server.to ...