- 博客(40)
- 资源 (2)
- 问答 (7)
- 收藏
- 关注
原创 代码整洁之道-函数副作用
在编写代码的时候,我们的函数应该是无副作用的,也就是说我们的函数名是A,就应该去做A相关的事情,不应该附带做其他事情比如我们有一个检查参数的方法,如果在方法里面初始化了某些数据,那就违反了无副作用原则,因为调用着如果不了解其内部实现,在不恰当的时间调用了你的方法就会导致问题,这个造成了时序性耦合
2022-11-09 23:48:43 219 1
原创 git 报错 LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
2022-05-11 22:50:42 808
原创 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 710
原创 Source Insight前进和后退(返回上一步)快捷键
Source Insight前进和后退(返回上一步)快捷键后退: Alt + , 前进: Alt+ .
2021-04-25 22:55:27 7537
原创 Source Insight跳转不了结构体解决办法
最近下载了Source Insight软件去阅读Linux内核源码,所以就导入Linux内核源码到我创建的项目中,但是当我在阅读/kernel/signal.c 文件的时候,发现在这个文件中的结构体跳转不到结构体定义。我尝试了两种跳转方法:① Ctrl +鼠标左键②鼠标移动到结构体名之上,然后鼠标点击右键,选择Jump To Definition以上两种方法都不可以跳转到结构体定义之中。解决办法:① 选择Project -> ...
2021-04-25 21:56:53 4154 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 13163
原创 synchronized与Lock 擂台之战
面试官:说说synchronized和Lock(或ReentrantLock)的区别Java 1.5之后,对共享变量访问的协调机制除了之前的synchronized和volatile又多了一个Lock,深刻理解synchronized与Lock,并熟悉两者的应用场景对编写并发程序有着非常重要的作用部落新添大将话说JDK1.5之前,并发部落 synchronized 和 volatile 可谓红人,无
2017-10-13 10:19:45 940 3
原创 轻而快的CAS
面试官: 讲讲CAS,CAS会有什么问题?慢腾腾的synchronized并发世界,分秒必争,快者为王,synchronized那厮,整天情绪消极,完全一个悲观主义者,怎么说呢?每当他访问一个共享变量的时候,他都认为这个共享变量会被其他人所修改,所以他就给这个共享变量加一个锁,自己独占着,这样别人就不能修改了可是这样导致一个结果就是每当一个线程要来修改这块共享变量的时候,都会被挂起,这样一来,操作系
2017-10-04 17:23:55 854 2
原创 happens-before揭秘
面试官:讲讲happens-beforehappens-before是判断数据是否存在竞争、线程是否安全的重要依据,今天我们来听听程序员与JMM的对话JMM的自我介绍Hello 大家好,我原名叫Java Memory Model(Java 内存模型),大家都叫我JMM,简洁又好听,我挺喜欢。并发编程这块,没有我可是不行的,我要解决的问题就是一个线程对共享变量的写入何时对另一个线程可见比如一个线程给
2017-10-01 11:31:28 4242 4
原创 TCP三次握手四次挥手——下篇
这是一个系列故事,没有读过上篇的不妨看看《TCP三次握手与四次挥手——上篇》面试官:说说TCP四次挥手的过程酋长从宫中回来不久,国王就颁布了新的TCP协议法案,这次修正版的TCP协议运行的很好,举国上下一片喜悦从小白到菜鸟的转变经过上次的聊天后,司马和上官成为了好朋友,今天,司马又给上官发消息了,但是这次,两人建立连接后,同时给对方发送了一个报文“在吗?”,导致过了一会,司马和上官都收到对方的“在吗
2017-09-13 13:12:48 1171
原创 Shell中的$0、$1、$2的含义
在 shell 中我们会见到 $0、$1、$2这样的符号,这是什么意思呢? 简单来说$0就是你写的shell脚本本身的名字,$1是你给shell传的第一个参数,$2是你给shell传的第二个参数
2017-08-11 10:58:59 120690 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 877
转载 Intellij IDEA 15中文输入框不跟随怎么办?
最近刚转向IDEA,发现了一个令人头疼的事情,就是搜狗输入法在IDEA里面使用的时候,打字只显示第一个字母,后面你再打字的时候,字母和汉字都不随着你的打字而向后提示,导致你不知道现在你打的字是什么,只有当你按下空格键的时候才知道你打的是什么。在网上找了好久都没有解决,直到看到了知乎上的一位网友的回答,才解决了这个问题,现在在这里与大家分享分享 本文转载于一位网友的回答(略修改): 地址:
2017-08-07 11:23:16 16805 16
转载 Maven中的GroupID和ArtifactID指的是什么?
GroupId和ArtifactId被统称为“坐标”是为了保证项目唯一性而提出的
2017-08-06 11:35:28 146821 22
原创 Java并发之神修炼之路---创建多线程的三种方式
清晨,阳光明媚,秋早早地就来到了“训练室”,刚进门,只见大师飞一般地敲着键盘,空格键如拍子一样打着节奏,宛如一首美妙的音乐。秋来到了大师身旁,拿出电脑开了机,大师瞅了一眼秋,说,“上次对多线程有了一个大概的认识吧”,秋点了点头,“那今天就让你开开眼吧,见识一下启动多线程的三剑客”。 启动多线程一般由三种方式,我们常用的就两种 第一种: 继承Thread类 只见大师键锋一转,飞速的写了几行代码
2017-07-25 00:09:36 499
原创 JVM之执行引擎
前言在之前的JVM之Class文件中已经对class文件的结构有了一个大致的认识,其中有一个Code属性没有详细的讨论,这里就详细的讨论一下这个Code属性以及执行引擎和它的关系概述class文件经过加载后会在方法区形成一个该类的一些数据结构(或者说是Java虚拟机规定的格式),然后执行引擎会在方法区中找到main方法code属性中的指令,并且去执行它。执行引擎会维护一个虚拟机栈,虚拟机栈中有栈帧,
2017-06-06 11:40:47 976
原创 JVM之类文件结构——下篇(字段、方法和属性)
LZ水平有限,如果发现有错误之处,欢迎大家指出,或者觉得那块说的不好,欢迎建议。希望和大家一块讨论学习 LZ QQ:1310368322上篇我们着重讨论了class文件中的常量池,接下来我们来看看下面的十六进制数到底是什么含义?以及它们和我们的Java源码之间有什么联系? 访问标志 常量池之后,紧接着的两个字节代表了访问标志(access_flags),这个标志用于识别一些类或者接口层次的访问
2017-05-17 09:42:07 842
原创 Java并发编程系列(一)——Volatile
在讨论Volatile关键字之前,我们先来聊聊并发 什么是并发?为什么需要并发?并发会产生什么问题、是如何解决的?接下来我们就看看这些问题 什么是并发? 并发简单来说就是在一个CPU上(也可以是多个CPU),在一段时间之内,同时启动了多个进程或线程,在宏观上看好像多个进程或线程在同时执行,其实在一个确定的时刻,一个CPU上只有一个线程或者进程在运行。 为什么需要并发? ①提高资源利用率:如
2017-05-09 17:29:21 385
原创 JVM之类文件结构——上篇(常量池)
Java语言之所以强大的一个原因就在于它具有跨平台性,Java源文件被编译后的结果不是本地机器码(与机器平台相关联)而是字节码(与机器平台无关),然后由JVM将字节码去加载并执行它。 那么Java的字节码文件到底长什么样? 下面就是我们程序员入门的HelloWorld程序的Class文件 源文件public class HelloWorld{ public static void ma
2017-04-20 17:17:03 1470 1
原创 Java中补码的那些事
内存、显示器、键盘都是非常要好的哥们,他们协同合作为人类服务者,但是人类却对键盘和显示器情有独钟,根本不关心内存长什么样子
2017-04-09 11:41:51 5060
原创 Unicode 与 UTF-8的关系
要弄清Unicode与UTF-8的关系,我们还得从他们的来源说起,下来我们从刚开始的编码说起,直到UTF-8的出现,我们就会感觉到他们之间的关系
2017-03-30 23:21:23 470
原创 浅谈操作系统之虚拟内存
首先我们来一个概念 虚拟内存,虚拟内存是一种内存管理技术,它会使程序自己认为自己拥有一块很大且连续的内存,然而,这个程序在内存中不是连续的,并且有些还会在磁盘上,在需要时进行数据交换 难以实现的物理寻址 我们把内存可以看成一个一维数组,那么这个数组的下标就是内存的物理地址,CPU用内存的物理地址来定位他想获取的内存块(数组中的内容),我们把这种方式称为物理寻址。 如下图: 我们都知道...
2017-03-26 19:53:46 12381 3
原创 动态规划
初探动态规化刚学动态规划,或多或少都有一些困惑,这个也许是因为书上的表达过于严谨,苦涩难懂。今天我们来看看什么是动态规划,以及他的应用。 学过分治方法的人都知道,分治方法是通过组合子问题来求解原问题,而动态规划与分治方法相似,都是通过组合子问题的解来求解原问题,只不过动态规划可以解决子问题重叠的情况,即不同的子问题有公共的子子问题。
2017-01-25 17:20:41 524
原创 数组指针和指针数组的区别
数组指针和指针数组的区别中国的文字博大精深,不仔细研读,很容易理解错误,就拿这个数组指针和指针数组来说吧,刚开始接触很容易弄混 那么到底什么是数组指针?什么是指针数组?他们之间又有什么区别?* 指针数组: 数组里的每一个元素都为指针的数组,本质为数组,只不过数组里的元素为指针罢了,至于是什么类型的指针,那要视情况而论 数组指针:指向数组的指针,本质为指针,只不过这个指针指向了数组而已 下来我
2016-10-01 00:25:23 5883 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 2288
原创 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 10153
深入理解Java虚拟机(周志明著)
2017-09-04
Java并发编程的艺术PDF
2017-09-04
Mac 如何修改VS Code快捷键
2021-11-03
编译Mysql 8.0报错(openssl 找不到)
2021-10-18
Source insight如何跳转到结构体定义
2021-04-24
idea 变量值不能显示
2021-03-31
#define宏的相关问题
2020-12-05
Java多线程的奇怪现象
2017-05-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人