大漠知秋的加油站

  • 首页
大漠知秋的加油站
你就当我的烂笔头吧
Java

编写高质量代码 - Java

参考:编写高质量代码:改善Java程序的151个建议 持续更新、Java、笔记 1.使用 long 类型时注意使用 大写L // 错误的 long i = 1l; // 正确的 long i = 1L; 2.三元表达式类型务必一致   三元操作符是if-else的简化写法,在项目中使用它的地方很多,也非常好用,但是好用 又简单的东西并不表示就可以随便用,我们来看看下面这段代码: public static void main(String[] args) { int i = 80; String s = Strin…

2019年1月3日 0条评论 1108点热度 0人点赞 大漠知秋 阅读全文
Maven

Docker 安装 Maven 私服 Nexus 3.12.1

  Apache Maven 是当 Java 技术栈前最流行的项目管理工具,它提供了一系列方便快捷的命令帮助程序员们进行Java工程的开发工作。Maven 服务器位于美国,由于出国带宽和众多因素,在国内直接使用 Maven 的体验并不好。同时,国内还有很多公司的程序员开发机器无法直接连接互联网,鉴于这种情况,在公司区域网架设一部Maven私服能大大提高开发效率。   Apache Maven的私服有很多开源提供商,目前用的最多的就是 Sonatype Nexus Repository。 安装环境 ContOS 7.…

2019年1月3日 0条评论 1245点热度 0人点赞 大漠知秋 阅读全文
Develop Software

问题 - iTerm2 中文输出显示问号

  解决之道: export LC_ALL=zh_CN.UTF-8 export LANG=zh_CN.UTF-8

2019年1月3日 0条评论 1285点热度 0人点赞 大漠知秋 阅读全文
Golang

并发 - 同步

  之前喊过一句口号,倡导用通信来共享数据,而不是通过共享数据来进行通信,但考虑到即使成功地用 channel 来作为通信手段,还是避免不了多个 goroutine 之间共享数据的问题,Go 语言的设计者虽然对 channel 有极高的期望,但也提供了妥善的资源锁方案。 同步锁   Go 语言包中的 sync 包提供了两种锁类型:sync.Mutex 和 sync.RWMutex。Mutex 是最简单的一种锁类型,同时也比较暴力,当一个 goroutine 获得了 Mutex 后,其他 goroutine 就只能乖…

2019年1月3日 0条评论 1219点热度 0人点赞 大漠知秋 阅读全文
Golang

问题 - 出让时间片

  Go 和 Java 在并发执行上的不同还在于,Java 的多线程是一种抢占式的时间片占用规则,而 Go 的 goroutine 是一种非抢占式的时间片占用规则,也就是说,如果一个 goroutine 在使用 CPU 时间片,那么其他再多的 goroutine 都得阻塞。   我们可以在每个 goroutine 中控制何时主动出让时间片给其他 goroutine,这可以使用 runtime 包中的 Gosched() 函数实现。   实际上,如果要比较精细地控制 goroutine 的行为,就必须比较深入地了解 …

2019年1月3日 0条评论 1216点热度 0人点赞 大漠知秋 阅读全文
Golang

问题 - 多核并行化

  如果你的电脑是16核心的话,可以开16个 goroutine 共同计算一列数的的综合,就会发现总的执行时间没有明显缩短。再去观察 CPU 运行状态,你会发现尽管我们有16个 CPU 核心,但在计算过程中其实只有一个 CPU 核心处于繁忙状态,这是会让很多 Go 语言初学者迷惑的问题。   官方的答案是,这是当前版本的 Go 编译器还不能很智能地去发现和利用多核的优势。虽然确实创建了个 goroutine,并且从运行状态看这些 goroutine 也都在并行运行,但实际上所有这些 goroutine 都运行在同一…

2019年1月3日 0条评论 1168点热度 0人点赞 大漠知秋 阅读全文
Golang

channel

  channel 是 Go 语言在语言级别提供的 goroutine 间的通信方式。我们可以使用 channel 在两个或多个 goroutine 之间传递消息。channel 是进程内的通信方式,因此通过 channel 传递对象的过程和调用函数时的参数传递行为比较一致,比如也可以传递指针等。如果需要跨进程通信,建议用分布式系统的方法来解决,比如使用 Socket 或者 HTTP 等通信协议。Go 语言对于网络方面也有非常完善的支持。   channel 是类型相关的。也就是说,一个 channel 只能传递一…

2019年1月3日 0条评论 545点热度 0人点赞 大漠知秋 阅读全文
Golang

goroutine

并发概念   回到在 Windows 和 Linux 出现之前的古老年代,程序员在开发程序时并没有并发的概念,因为命令式程序设计语言是以串行为基础的,程序会顺序执行每一条指令,整个程序只有一个执行上下文,即一个调用栈,一个堆。并发则意味着程序在运行时有多个执行上下文,对应着多个调用栈。我们知道每一个进程在运行时,都有自己的调用栈和堆,有一个完整的上下文,而操作系统在调度进程的时候,会保存被调度进程的上下文环境,等该进程获得时间片后,再恢复该进程的上下文到系统中。   从整个操作系统层面来说,多个进程是可以并发的,那…

2019年1月3日 0条评论 526点热度 0人点赞 大漠知秋 阅读全文
Golang

面向对象 - 接口

  Go 语言的接口并不是其他语言(C++、Java、C#等)中所提供的接口概念。   在 Go 语言出现之前,接口主要作为不同组件之间的契约存在。对契约的实现是强制的,你必须声明你的确实现了该接口。为了实现一个接口,你需要从该接口继承: interface IFoo { void Bar(); } class Foo implements IFoo { // Java文法 // ... } class Foo : public IFoo { // C++文法 // ... } IFoo* foo = new Fo…

2019年1月3日 0条评论 1204点热度 0人点赞 大漠知秋 阅读全文
Golang

面向对象 - 使用组合和定义别名

  上一节说过: public 和 private 是针对包一级的可见性,那么如果我们引入了一个其他同事或者第三方的包,有一个功能我们需要使用,但是他们并没有提供,这时候该怎么扩充呢? 使用组合   如下,有一个第三方提供的加法方法: package third_partyh type TMath struct { I int } func (math *TMath) Add(tarMath TMath) { math.I += tarMath.I }   我们可以这样使用: package main import…

2019年1月3日 0条评论 1199点热度 0人点赞 大漠知秋 阅读全文
1…2021222324
分类
  • C++ / 11篇
  • Develop Software / 3篇
  • Docker CE / 24篇
  • Elasticsearch / 3篇
  • FastDFS / 1篇
  • Flutter / 1篇
  • Git / 3篇
  • GitLab / 6篇
  • Golang / 21篇
  • Http Client 4.5.2 / 2篇
  • Java / 14篇
  • Kubernetes / 19篇
  • Linux / 65篇
  • Mac / 5篇
  • Maven / 1篇
  • MyBatis / 1篇
  • MySQL / 8篇
  • Nginx / 6篇
  • Rabbit MQ / 10篇
  • Redis / 1篇
  • Spring / 1篇
  • Spring Boot / 12篇
  • Spring Cloud Finchley.RELEASE / 50篇
  • Sublime / 2篇
  • Windows / 1篇
  • 吉他 / 2篇
  • 图论 / 8篇
  • 数据结构与算法 / 11篇
  • 未分类 / 1篇

COPYRIGHT © 2023 大漠知秋的加油站. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

豫ICP备16029200号-2