自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

平湖的博客

守得云中月,方可揽星辰。

  • 博客(29)
  • 问答 (1)
  • 收藏
  • 关注

原创 Java并发核心浅谈(二)

回顾在上一篇 Java并发核心浅谈 我们大概了解到了Lock和synchronized的共同点,再简单总结下:Lock主要是自定义一个 counter,从而利用CAS对其实现原子操作,而synchronized是c++ hotspot实现的 monitor(具体的咱也没看,咱就不说)二者都可重入(递归,互调,循环),其本质都是维护一个可计数的 monitor,在其它线程访问加锁对象时会判断...

2019-06-16 18:05:14 161

原创 Java并发核心浅谈

Java并发的核心就是 j.u.c 包,而 j.u.c 的核心是AbstractQueuedSynchronizer抽象队列同步器,简称 AQS,一些锁啊!信号量啊!循环屏障啊!都是基于AQS。而 AQS 又是基于UNSAFE的一系列compareAndSet,所以理解了这块,并发不再是问题!先解释下何为compareAndSet就拿AtomicInteger先开刀: // 实际操作的值...

2019-06-12 11:31:59 191

原创 ThreadPoolExecutor浅谈

在了解线程池之前,希望你能够理解 Java 内存模型 和 AQS CAS /** * The runState provides the main lifecycle control, taking on values: * * RUNNING: Accept new tasks and process queued tasks * ...

2019-06-11 10:10:25 179

原创 Java 代码热更方案

由于 jvm just in time 和支持解释运行和过热代码编译的特性,所以无需像 c/c++ 这种纯静态语言,需要先编译再执行。jvm 系的语言是支持脚本执行,只要编译成 class 供 jvm 识别,即可执行,执行过热之后(HotSpot)再编译成机器码,从而提高开发和运行效率的。代码热更方案应用场景有状态服务的代码替换或 bugFix因为应用程序中保存了用户的信息或上下文信息,重启应用会导致内存中的数据丢失,所以代码热更非常适合这种类型的服务。比如提供与用户对话的服务,内存中保存了一些

2021-02-28 23:10:51 672

原创 leetcode - 189. 旋转数组

/** * 旋转数组:将数组的后 k 位数移至头部,前 length - k 位数移至尾部 * 要求使用原地算法,即不使用额外的空间 * @param nums 数组 * @param k 旋转的个数 */ private static void rotate(int[] nums, int k) { int length = nums.length; // 无须操...

2019-06-30 08:13:25 257

原创 字符串的四则运算表达式

public static void main(String[] args) { // 支持括号 小数 负数 String statement = "-10/(4.5+5.5)*(-4-6+20)/-2"; // 10/(-2) 也行 System.out.println(calculate(statement)); } @SuppressWarnings("...

2019-06-28 21:36:45 1076

原创 Java中各种对象的各种实例化方式

Java 中万物皆对象,Linux 中一切皆文件。简单的说下对象的实例化过程:首先我们需要有个意识,就是创建一个类的实例化对象,内存中必须要加载了这个类所以,不论是 new 还是反射或是 Unsafe.allocateInstance(Class),都必须要先找到类对象的内存地址然后知道类对象的结构,再去堆上申请新的空间,即实例化对象顺带说下,Java 占内存的原因正是因为对象携带的信...

2019-06-13 11:43:12 849

原创 英语词类浅谈

英语是一门语言,一门学科,一门语言学(Philology)大家都知道英文的构词法是前缀改变词意,后缀强调词性。Philology 可拆分为 Philo(爱) logy(意思:说。和逻辑 logic 又很像)说明语言学是爱说且富有逻辑的,英语正是如此。宾语(object)说到这,我很敬佩当初的翻译者,因为程序员最为熟知的 object 即对象,为什么解释为对象呢!我的推测是这样的,ob 是对面...

2019-06-09 14:13:46 524

原创 leetcode-cn 实现strStr()

题目如图:其实这道题相当于让我们自己手写indexOf(),平时用惯了api,手写起来不是很容易,我自己就换了好几种写法,代码如下: private static int strStr(String haystack, String needle) { if (haystack == null || needle == null) { return -1; } in...

2019-06-08 15:16:08 129

原创 leetcode-cn 删除排序数组中的重复项

题目如图:比较简单,代码如下: private static int removeDuplicates(int[] nums) { int length = nums.length; int headIndex = 0, tailIndex = 1; for (; tailIndex < length; tailIndex++) { // 比较 headIndex t...

2019-06-07 21:21:30 112

原创 leetcode-cn 有效的括号

题目描述如图:废话不多说,代码如下: private static boolean oddAndEvenNumber(int value1, int value2){ // 判断两个数是否同时为偶数或同时为奇数 return ((value1 & 1) == 1) == ((value2 & 1) == 1); } private static boolean...

2019-06-07 18:55:44 138

原创 函数依赖

函数依赖是指关系中属性间(或者说是表中字段间)的对应关系。定义:设 R 为任一给定关系,如果对于 R 中属性 X 的每一个值,R 中的属性 Y 只有唯一值与之对应,则称 X 函数决定 Y 或称 Y 函数依赖于 X ,记作 X—>Y。其中,X 称为决定因素。通俗一点,就是给定一个 X 都有唯一的 Y。可以理解为函数 y = f(x); 对于任意的 x 都有唯一的 y ,且 y 的取值由 x...

2019-06-07 15:17:57 30819 3

原创 leetcode-cn 回文数判断

解法基本分为两种,一类是转成字符串数组,然后逐个比较左边和右边的字符,或者是转成字符串,然后反转,再进行比较,其本质都是单个字符的比较,大家都能想到,就不写了。另一类是直接对数字进行操作,leetcode上有人例举了,还不错。我写完之后,看别人的代码,简洁好多,自叹不如(不过我这个是支持负数回文数的

2019-06-07 08:56:49 185 1

原创 SQL多表查询

多表查询的话,SQL提供了JOIN关键字来连接多张表的查询(即连接的是SELECT结果集)基本分为以下几种:JOIN / INNER JOIN-也称作内连接,是最为常用的一种JOIN,其效果是在表中存在一个匹配即返回该条数据等值连接:ON 子句中使用了运算符“=”,且连接的两个字段最好是主键不等连接:ON 子句中使用了不等于运算符,例如"<>" "<=>"等(可以...

2019-06-05 22:29:09 16413

原创 谈谈我对数据库三范式的字面理解

今天看了看《数据结构系统原理》(黄靖 主编)这本书(备考自考,不然以我的品味,直接豆瓣9.0以上,哈哈哈)首先看下书上给出的定义:第一范式(1NF):设 R 为任一给定关系,如果 R 中的每个列与行的交点处的取值都是不可再分的基本元素,则 R 为第一范式第二范式(2NF):设 R 为任一给定关系,若 R 为 1NF,且其所有非主属性都完全函数依赖于候选关键字,则 R 为第二范式第三范式(...

2019-05-31 16:08:20 259

原创 查找字符数组中出现次数最多的字符

昨天杭州大搜车面试,面试官出了一道字符串算法题,如下:给定一个字符串数组,例如char[] chars = { 'a', 'b', 'b', 'b', 'b', 'c', 'a', 'a', 'a'};找出数组中出现次数最多的字符,如果存在相同次数的字符,取第一次出现的字符。其实一个问题的解决方案有多种,我当时说了两种(手写了第二种):先拷贝一份原数组charsCopy作为备用,然后将ch...

2019-05-31 11:51:04 1798

原创 视图与索引

视图为什么需要视图有时候没有必要向用户展示完整的表的模型(所有字段信息)表中某些涉及安全,隐私或权限的字段需要对用户隐藏综上,视图安全及易于使用什么是视图SQL允许通过查询来定义“虚关系”(又称作虚表,并不会真的去建立物理存储表,所存储的只是SQL查询逻辑代码。类似于方法定义或函数声明,查询就是具体实现)只有在调用的时候才会去查询,且不会存储查询结果集如何定义视图c...

2019-05-28 12:49:11 130

转载 数据库集合运算

集合运算SQL作用在关系(relation,就是指表)上的union、intersect和except运算对应于数学集合论中的∪, ∩和-运算union、intersect和except运算与select子句不同,它们会自动去除重复如果想保留所有重复,必须用union all、intersect all和except all假设一个元组在关系r中重复出现了m次,在关系s中重...

2019-05-28 11:13:49 2004

原创 数据库的完整性约束

key:用于保证row(或称作元组,一条数据)的唯一性super-key:能够区分唯一的row的集合candidate key:super-key中最小集primary key:candidate key中人工选择一个(一张表只能有一个或多个组成的联合主键)举个例子:例如有students表,含有字段stu_number(学号)id(身份证号)name(姓名) 那么找出所有能够...

2019-05-28 10:36:29 1697

原创 SQL字符串匹配和运算

匹配百分号(%):匹配任意子串select dept_name from department where building like ‘%Watson’; (或前缀匹配Watson%)下划线(_):匹配任意单个字符select dept_name from department where building like ‘W_tson’; 假如匹配的字符串中包含特殊字符(%...

2019-05-28 09:58:58 3178

原创 快速排序

private static void quickSort(int left, int right, int[] array) { if (left > right) { return; } int leftIndex = left, rightIndex = right, flag = array[left]; while (leftIndex != rightIn...

2019-04-10 15:40:23 136

原创 记一个由于依赖管理糟糕踩的坑

public void someMethod(long uid){ set.add(uid); po.setString(JSON.toJSONString(set));} // 这段代码是web项目的,online会调用someMethod(long)很简单,就是将存储uid的Set通过fastjson转成String咋一看没什么问题,但是在反序列化的时候,uid会...

2019-04-02 10:56:05 140

原创 switch和枚举的小坑

工作项目中的online和room有使用到反射,在一次加需求的时候,发现了某实现类中有众多if else,看着实在难受。于是,手动&amp;amp;quot;优化&amp;amp;quot;成switch,结果发现online和room启动报错了。一开始怎么也没想到是众多if else该成switch造成的。直到发现输出class文件的目录下多了个RoomHandlerImpl$1.class如图:然后反编译后就会看见$SwitchMap$you...

2018-10-31 17:31:37 1267 1

原创 java内存模型浅谈

并发编程模型的分类命令式编程中,线程之间通信方式有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过明确的发送消息来显式进行通信。同步是指程序用于控制不同线程之间操作发生相对顺序的机制。在共享内存并发模型里,同步是显式进行的。程序员必须显式指定...

2018-09-23 11:13:40 188

原创 java生产者消费者

public class ProviderConsumer { private static final int MAX_CAPACITY = 16; private static Lock lock = new ReentrantLock(); private static Condition full = lock.newCondition(); private...

2018-08-26 10:54:03 187

转载 java.lang.ArrayStoreException:sun.reflect.annotation.TypeNotPresentExceptionProxy

&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;spring-boot-starter-web-services&amp;lt;/artifactId&amp;gt; &amp;

2018-08-26 10:39:06 9375

转载 pip install - locale.Error: unsupported locale setting

mac或linux 执行export LC_ALL=C

2018-08-04 13:30:08 167

原创 Tools -- 持续更新

Toolswindows 包管理工具 chocolatey scoopcmder – 第三方命令行工具fd filename – 第三方文件查找工具.\ filename – 打开文件命令xmind zen –思维导图工具,可直接导入到印象笔记linux ack-grep – 比grep更快的匹配工具tmux – 多连接会话工具...

2018-07-21 17:02:07 180

转载 IDEA启动tomcat报java.net.SocketException:socket closed

处理方法netstat -aon|findstr "tomcat start port"根据tomcat的启动端口找到被占用的进程idtaskkill -f -pid xxx 强制kill该进程该进程基本是java.exe,可能是某个java应用程序自启动了吧!这是我目前找到的唯一可行的解决方案!...

2018-07-21 16:44:58 14680 3

空空如也

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

TA关注的人

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