自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

涛声依旧的博客

一个喜欢分享的码农,力争用通俗易懂的语言讲编程,欢迎大家关注公众号:趣谈编程

  • 博客(40)
  • 资源 (2)
  • 问答 (7)
  • 收藏
  • 关注

原创 代码整洁之道-函数副作用

在编写代码的时候,我们的函数应该是无副作用的,也就是说我们的函数名是A,就应该去做A相关的事情,不应该附带做其他事情比如我们有一个检查参数的方法,如果在方法里面初始化了某些数据,那就违反了无副作用原则,因为调用着如果不了解其内部实现,在不恰当的时间调用了你的方法就会导致问题,这个造成了时序性耦合

2022-11-09 23:48:43 205 1

原创 git 报错 LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443

2022-05-11 22:50:42 790

原创 go依赖下载报错

golang 在下载依赖包的时候出现错误: dial tcp 142.251.42.241:443: i/o timeout 解决:执行命令 go env -w GOPROXY=https://goproxy.cn如还有疑问,欢迎关注公众号:趣谈编程,回复微信,加我微信一起解决。可以微信扫描二维码关注公众号,回复“微信”...

2021-10-08 21:31:54 694

原创 Source Insight前进和后退(返回上一步)快捷键

Source Insight前进和后退(返回上一步)快捷键后退: Alt + , 前进: Alt+ .

2021-04-25 22:55:27 7427

原创 Source Insight跳转不了结构体解决办法

最近下载了Source Insight软件去阅读Linux内核源码,所以就导入Linux内核源码到我创建的项目中,但是当我在阅读/kernel/signal.c 文件的时候,发现在这个文件中的结构体跳转不到结构体定义。我尝试了两种跳转方法:① Ctrl +鼠标左键②鼠标移动到结构体名之上,然后鼠标点击右键,选择Jump To Definition以上两种方法都不可以跳转到结构体定义之中。解决办法:① 选择Project -> ...

2021-04-25 21:56:53 4091 2

原创 MySQL如何给字段添加注释?

下面的命令行或则图形界面均在软件Navicat中运行MySQL测试版本: 5.5.39问:MySQL如何给字段添加注释?答:给MySQL字段添加注释有两种方式①创建表的时候添加 create table student( s_no int not null comment '学号', s_name varchar(100) comment '姓名') comment = '学生'如上面的创建表语句,字段s_no和s_name...

2020-12-10 23:14:43 13065

原创 选择排序

本文来自 趣谈编程 公众号

2018-03-09 17:51:46 307

原创 算法可以这样学 —— 插入排序

本文来自公众号:趣谈编程

2018-02-08 22:18:48 410

原创 临界区

本文来自公众号:趣谈编程

2018-01-29 21:24:30 262

原创 一文看懂堆排序

这是一篇连载文章 对堆不熟的伙伴强烈先看堆 关于堆的介绍请看:可以管理时间的二叉堆

2017-12-27 21:49:17 392

原创 可以管理时间的二叉堆

面试官:写一个堆排吧 我心想:堆排是什么鬼

2017-12-16 18:56:30 484

原创 冒泡排序

面试官: 写一个冒泡排序吧

2017-11-18 21:49:30 429

原创 synchronized与Lock 擂台之战

面试官:说说synchronized和Lock(或ReentrantLock)的区别Java 1.5之后,对共享变量访问的协调机制除了之前的synchronized和volatile又多了一个Lock,深刻理解synchronized与Lock,并熟悉两者的应用场景对编写并发程序有着非常重要的作用部落新添大将话说JDK1.5之前,并发部落 synchronized 和 volatile 可谓红人,无

2017-10-13 10:19:45 929 3

原创 轻而快的CAS

面试官: 讲讲CAS,CAS会有什么问题?慢腾腾的synchronized并发世界,分秒必争,快者为王,synchronized那厮,整天情绪消极,完全一个悲观主义者,怎么说呢?每当他访问一个共享变量的时候,他都认为这个共享变量会被其他人所修改,所以他就给这个共享变量加一个锁,自己独占着,这样别人就不能修改了可是这样导致一个结果就是每当一个线程要来修改这块共享变量的时候,都会被挂起,这样一来,操作系

2017-10-04 17:23:55 841 2

原创 happens-before揭秘

面试官:讲讲happens-beforehappens-before是判断数据是否存在竞争、线程是否安全的重要依据,今天我们来听听程序员与JMM的对话JMM的自我介绍Hello 大家好,我原名叫Java Memory Model(Java 内存模型),大家都叫我JMM,简洁又好听,我挺喜欢。并发编程这块,没有我可是不行的,我要解决的问题就是一个线程对共享变量的写入何时对另一个线程可见比如一个线程给

2017-10-01 11:31:28 4206 4

原创 我是一个垃圾收集器——上篇

面试官:垃圾回收算法介绍一下垃圾回收算法算是一个常问的知识点了,今天我们听听垃圾收集器的叙述

2017-09-21 17:16:14 777 4

原创 TCP三次握手四次挥手——下篇

这是一个系列故事,没有读过上篇的不妨看看《TCP三次握手与四次挥手——上篇》面试官:说说TCP四次挥手的过程酋长从宫中回来不久,国王就颁布了新的TCP协议法案,这次修正版的TCP协议运行的很好,举国上下一片喜悦从小白到菜鸟的转变经过上次的聊天后,司马和上官成为了好朋友,今天,司马又给上官发消息了,但是这次,两人建立连接后,同时给对方发送了一个报文“在吗?”,导致过了一会,司马和上官都收到对方的“在吗

2017-09-13 13:12:48 1157

原创 TCP三次握手与四次挥手——上篇

面试官:说说TCP三次握手过程,如果两次握手会怎么样?

2017-09-06 09:52:35 1989 6

原创 什么是无后效性?

某阶段的状态一旦确定,则此后过程的演变不再受此前各种状态及决策的影响

2017-09-01 15:47:17 18731 14

原创 Shell中的$0、$1、$2的含义

在 shell 中我们会见到 $0、$1、$2这样的符号,这是什么意思呢? 简单来说$0就是你写的shell脚本本身的名字,$1是你给shell传的第一个参数,$2是你给shell传的第二个参数

2017-08-11 10:58:59 120264 11

原创 Java程序中文件目录的跨平台 --- File.separator的作用

最近在看别人的代码,有一段代码中有File.separator,然后就翻阅了一下资料,发现这是一段挺好的跨平台代码,写博客以记之 比如说你要在D盘下的temp目录下创建一个Demo.txt 在Windows下你会这样写:File file = new File("D:\temp\Demo.txt");而在Linux下你要这样写:File file = new File("/temp/Demo

2017-08-09 16:20:02 861

转载 Intellij IDEA 15中文输入框不跟随怎么办?

最近刚转向IDEA,发现了一个令人头疼的事情,就是搜狗输入法在IDEA里面使用的时候,打字只显示第一个字母,后面你再打字的时候,字母和汉字都不随着你的打字而向后提示,导致你不知道现在你打的字是什么,只有当你按下空格键的时候才知道你打的是什么。在网上找了好久都没有解决,直到看到了知乎上的一位网友的回答,才解决了这个问题,现在在这里与大家分享分享 本文转载于一位网友的回答(略修改): 地址:

2017-08-07 11:23:16 16775 16

转载 Maven中的GroupID和ArtifactID指的是什么?

GroupId和ArtifactId被统称为“坐标”是为了保证项目唯一性而提出的

2017-08-06 11:35:28 146435 22

原创 Java并发之神修炼之路---创建多线程的三种方式

清晨,阳光明媚,秋早早地就来到了“训练室”,刚进门,只见大师飞一般地敲着键盘,空格键如拍子一样打着节奏,宛如一首美妙的音乐。秋来到了大师身旁,拿出电脑开了机,大师瞅了一眼秋,说,“上次对多线程有了一个大概的认识吧”,秋点了点头,“那今天就让你开开眼吧,见识一下启动多线程的三剑客”。 启动多线程一般由三种方式,我们常用的就两种 第一种: 继承Thread类 只见大师键锋一转,飞速的写了几行代码

2017-07-25 00:09:36 489

原创 JVM之执行引擎

前言在之前的JVM之Class文件中已经对class文件的结构有了一个大致的认识,其中有一个Code属性没有详细的讨论,这里就详细的讨论一下这个Code属性以及执行引擎和它的关系概述class文件经过加载后会在方法区形成一个该类的一些数据结构(或者说是Java虚拟机规定的格式),然后执行引擎会在方法区中找到main方法code属性中的指令,并且去执行它。执行引擎会维护一个虚拟机栈,虚拟机栈中有栈帧,

2017-06-06 11:40:47 969

原创 JVM之类文件结构——下篇(字段、方法和属性)

LZ水平有限,如果发现有错误之处,欢迎大家指出,或者觉得那块说的不好,欢迎建议。希望和大家一块讨论学习 LZ QQ:1310368322上篇我们着重讨论了class文件中的常量池,接下来我们来看看下面的十六进制数到底是什么含义?以及它们和我们的Java源码之间有什么联系? 访问标志 常量池之后,紧接着的两个字节代表了访问标志(access_flags),这个标志用于识别一些类或者接口层次的访问

2017-05-17 09:42:07 835

原创 Java并发编程系列(一)——Volatile

在讨论Volatile关键字之前,我们先来聊聊并发 什么是并发?为什么需要并发?并发会产生什么问题、是如何解决的?接下来我们就看看这些问题 什么是并发? 并发简单来说就是在一个CPU上(也可以是多个CPU),在一段时间之内,同时启动了多个进程或线程,在宏观上看好像多个进程或线程在同时执行,其实在一个确定的时刻,一个CPU上只有一个线程或者进程在运行。 为什么需要并发? ①提高资源利用率:如

2017-05-09 17:29:21 378

原创 操作系统之进程和线程

进程和线程理解起来比较抽象,是因为它本来就是一种抽象,一种操作系统层面的抽象。

2017-04-28 18:29:54 511

原创 JVM之类文件结构——上篇(常量池)

Java语言之所以强大的一个原因就在于它具有跨平台性,Java源文件被编译后的结果不是本地机器码(与机器平台相关联)而是字节码(与机器平台无关),然后由JVM将字节码去加载并执行它。 那么Java的字节码文件到底长什么样? 下面就是我们程序员入门的HelloWorld程序的Class文件 源文件public class HelloWorld{ public static void ma

2017-04-20 17:17:03 1464 1

原创 Java中补码的那些事

内存、显示器、键盘都是非常要好的哥们,他们协同合作为人类服务者,但是人类却对键盘和显示器情有独钟,根本不关心内存长什么样子

2017-04-09 11:41:51 5046

原创 Unicode 与 UTF-8的关系

要弄清Unicode与UTF-8的关系,我们还得从他们的来源说起,下来我们从刚开始的编码说起,直到UTF-8的出现,我们就会感觉到他们之间的关系

2017-03-30 23:21:23 461

原创 批处理系统和分时系统的区别

要弄清批处理系统和分时系统的区别,首先我们得了解何为批处理系统和分时系统?

2017-03-29 15:32:16 27823 13

原创 浅谈操作系统之虚拟内存

首先我们来一个概念 虚拟内存,虚拟内存是一种内存管理技术,它会使程序自己认为自己拥有一块很大且连续的内存,然而,这个程序在内存中不是连续的,并且有些还会在磁盘上,在需要时进行数据交换 难以实现的物理寻址 我们把内存可以看成一个一维数组,那么这个数组的下标就是内存的物理地址,CPU用内存的物理地址来定位他想获取的内存块(数组中的内容),我们把这种方式称为物理寻址。 如下图: 我们都知道...

2017-03-26 19:53:46 12362 3

原创 浅谈匿名内部类

一、什么是匿名内部类? 匿名内部类,顾名思义,就是没有名字的内部类

2017-03-19 11:44:08 477

原创 初探Java IO 系统

Java的IO家族很是繁荣,刚接触有点让人摸不清关系,今天让我们来认识一下他们。

2017-03-10 11:17:20 363

原创 动态规划

初探动态规化刚学动态规划,或多或少都有一些困惑,这个也许是因为书上的表达过于严谨,苦涩难懂。今天我们来看看什么是动态规划,以及他的应用。 学过分治方法的人都知道,分治方法是通过组合子问题来求解原问题,而动态规划与分治方法相似,都是通过组合子问题的解来求解原问题,只不过动态规划可以解决子问题重叠的情况,即不同的子问题有公共的子子问题。

2017-01-25 17:20:41 513

原创 数组指针和指针数组的区别

数组指针和指针数组的区别中国的文字博大精深,不仔细研读,很容易理解错误,就拿这个数组指针和指针数组来说吧,刚开始接触很容易弄混 那么到底什么是数组指针?什么是指针数组?他们之间又有什么区别?* 指针数组: 数组里的每一个元素都为指针的数组,本质为数组,只不过数组里的元素为指针罢了,至于是什么类型的指针,那要视情况而论 数组指针:指向数组的指针,本质为指针,只不过这个指针指向了数组而已 下来我

2016-10-01 00:25:23 5868 1

原创 for循环分号之间的多个语句执行次序问题

最近在编程时要用到给for循环小括号里面的分号之间写上几个语句,所以,就想到了执行顺序的问题比如 for(i = 0 ;  i 所以写了一段代码测试了一下#includeint main(void){int i,j = 4;for(i = 0; i {if(i)printf("先执行 i++ 再执行 i = j\n");}printf("

2016-07-22 14:09:33 2271

原创 关于sizeof 和strlen 的用法

被调函数中的sizeof和strlen的使用

2016-06-06 13:26:36 937

原创 unsigned char 数值溢出问题

#includeint main(void){    unsigned char i = 256;int a;a = i + 256;i = a;printf("%d\n",i);printf("%d\n",a);  return 0;}/*在VC++中的输出结果是:0256Press any key to conti

2016-06-04 13:32:00 10064

深入理解Java虚拟机(周志明著)

皇帝”又是从事最基础工作的“劳动人民”——既拥有每一个对象的“所有权”,又担负着每 一个对象生命开始到终结的维护责任。 对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每一个new操 作去写配对的delete/free代码,不容易出现内存泄漏和内存溢出问题,由虚拟机管理内存这 一切看起来都很美好。不过,也正是因为Java程序员把内存控制的权力交给了Java虚拟机, 一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误 将会成为一项异常艰难的工作。 本章是第二部分的第1章,笔者将从概念上介绍Java虚拟机内存的各个区域,讲解这些 区域的作用、服务对象以及其中可能产生的问题,这是翻越虚拟机内存管理这堵围墙的第一 步。

2017-09-04

Java并发编程的艺术PDF

记得第一次写并发编程的文章时还是在2012年,当时花了几个星期的时间写了一篇文章 《深入分析volatile的实现原理》,准备在自己的博客中发表。在同事建法的建议下,怀着试一试 的心态投向了InfoQ,庆幸的是半小时后得到InfoQ主编采纳的回复,高兴之情无以言表。这也 是我第一次在专业媒体上发表文章,而后在InfoQ编辑张龙的不断鼓励和支持下,我陆续在 InfoQ发表了几篇与并发编程相关的文章,于是便形成了“聊聊并发”专栏。在这个专栏的写作 过程中,我得到快速的成长和非常多的帮助,在此非常感谢InfoQ的编辑们。2013年,华章的福 川兄找到我,问有没有兴趣写一本书,当时觉得自己资历尚浅,婉言拒绝了。后来和福川兄一 直保持联系,最后允许我花两年的时间来完成本书,所以答应了下来。由于并发编程领域的技 术点非常多且深,所以陆续又邀请了同事魏鹏和朋友晓明一起参与到本书的编写当中

2017-09-04

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除