准备20届校招啦
文章平均质量分 69
创建一个新的专栏,记录牛客刷题中遇到的问题,作为届时复习的笔记吧。目标内容有:Java,数据库,网络,操作系统,linux,组成原理,高并发,Spring全家桶
力扣小男孩
菜鸟的进阶之路。
展开
-
20190324leetcode周赛
首先,原谅我这个菜狗子用的中文版。紧接着上题目。这是一道easy的题目。一开始,我还是很懵逼的。用两个指针,分别指向两端,向中间移动。对应的左边和与右边和相等时,查看中间部分的情况即可。很显然结果是没通过。所以当时就简单暴力了一下。哎,暴力出真知啊。class Solution { public boolean canThreePartsEqualSum(int[] A...原创 2019-03-25 00:04:13 · 432 阅读 · 0 评论 -
2018博客总结前言
2018年最后一天,想总结一下这一年的博客内容。之前一直有写博客的习惯,,,你懂得,总有各种理由。。。好吧,其实我这下半年确立了研究方向,然后就是苦逼的科研生活。不过好在有有道云笔记这个工具。所以我还是把资料记录在了那上面。主要是方便。而且易于查看。今天,2018年最后一天。把自己整理的东西都放上来吧。丰富一下自己的博客。阿里春招提前批也开始了(慌得一批)2019年应该是忙碌的一年。以后只会越来越...原创 2018-12-31 10:21:55 · 144 阅读 · 3 评论 -
线程安全策略
1.不可变对象1.1.不可变对象需要满足的条件:① 对象创建后其状态就不能修改;② 对象所有域都是final类型的;③ 对象是正确创建的(在对象创建期间,this引用没有逸出);1.2. final关键字① final可以用来修改类 方法 变量;② final修饰的类不能被继承(我们平时使用的基础数据类型的类都是final的);③ final修饰方法不能被继承类修改...原创 2018-12-31 15:47:29 · 202 阅读 · 3 评论 -
安全发布对象
1.发布与逸出1.1概念发布对象 : 使一个对象能够被当前范围之外的代码所使用;对象逸出 : 一种错误的发布,当一个对象还没有构造完成时,就使他被其他线程所见;1.2代码演示/** * 发布对象 */@Slf4j@NotThreadSafepublic class UnsafePublish { private String[] states = {"a"...原创 2018-12-31 15:05:30 · 187 阅读 · 0 评论 -
线程安全性
1.定义当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些进程将如何交替执行,并且在主调代码中不需要任何额外的同步和协同,这个类都能够表现出正确的行为,那么就称这个类为线程安全的类; 2.线程安全的体现并发程序正确地执行,必须要保证原子性、可见性以及有序性。只要有一个没有被保证,就有可能会导致程序运行不正确。原子性:一个操作或多个操作要么全部执行完成且执行过程不被中...原创 2018-12-31 14:52:14 · 153 阅读 · 0 评论 -
并发的优势与风险
优势:速度:应用并发系统可以同时处理多个请求,等待的时间就会变短,响应就会更快,另一个方面,复杂的操作可以分为多个进程同时操作加快了处理速度;设计:假设一个应用程序需要从本地读取和处理两个文件,如果是都单线程的情况,我们就需要记录每个文件的读取和处理状态,如果使用并发处理,我们就可以启动两个线程,每个线程独立的处理一个文件的读取和操作。资源利用:线程会在处理的时候被阻塞,其他线程可...原创 2018-12-31 11:38:17 · 244 阅读 · 0 评论 -
Java内存模型简单讲解
在实际讲解并发与高并发之前我们还需要先学习一下Java虚拟机是怎么解决这些问题的;为了屏蔽掉硬件以及各种操作系统的内存访问差异以实现让java程序在各个平台下都能达到一致的并发效果,Java虚拟机规范中定义了Java内存模型(Java Memory model,简称JMM).个人比较推荐《深入理解JVM》中的关于JMM的讲解。很详细了。书中的理论知识,准备面试足够了。1.JMM基...原创 2018-12-31 11:25:36 · 141 阅读 · 0 评论 -
并发编程入门
最近在学习慕课网的高并发课程。为面试做准备。这门课程个人感觉讲的不错。有理论,有实践。最好结合《Java并发编程实战》这本书来看。当时看书的时候各种云里雾里。后来看了这门课之后,好多东西感觉都懂了。所以说有一个能用实例把知识讲明白的老师很难得。在开始真正的讲解以前,我们实现一个简单的场景-实现一个计数功能 : CountExample//计数功能@Slf4jpublic class ...原创 2018-12-31 10:38:55 · 122 阅读 · 0 评论 -
简单理解交换机、路由器、网关的概念,并知道各自的用途
1)交换机在计算机网络系统中,交换机是针对共享工作模式的弱点而推出的。交换机拥有一条高带宽的背部总线和内部交换矩阵。交换机的所有的端口都挂接在这条背 部总线上,当控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪个端口上,通过内部 交换矩阵迅速将数据包传送到目的端口。目的MAC若不存在,交换机才广播到所有的端口,接收端口回应后交换机...转载 2018-10-28 23:54:52 · 1350 阅读 · 0 评论 -
如何判断一个数是否为2的幂次方
最近在OJ上做题,遇到一道题,其中一个细节就是需要判断一个数是否为2的幂次方。初看似乎很简单,可我想来想去,竟然无甚好办法。最后我用一个笨办法解决了,那就是将2 4 8 16 32… …存到一个数组里,遍历一遍数组就知道了。但是这个办法着实不优美。下面介绍一个好办法 (n & n - 1) == 0 将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有...转载 2018-10-28 23:54:09 · 1028 阅读 · 0 评论 -
进程与线程总结(比较全面)
1.进程和线程1.1 概述:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.一个...转载 2018-10-11 23:13:58 · 495 阅读 · 0 评论 -
Java异常总结
Java 异常的概念 Java语言在设计的当初就考虑到这些问题,提出异常处理的框架的方案,所有的异常都可以用一个异常类来表示,不同类型的异常对应不同的子类异常(目前我们所说的异常包括错误概念),定义异常处理的规范,在JDK1.4版本以后增加了异常链机制,从而便于跟踪异常。 Java异常是一个描述在代码段中发生异常的对象,当发生异常情况时,一个代表该异常的对象被创建...转载 2018-10-11 23:57:32 · 263 阅读 · 0 评论 -
Java异常常见面试问题总结
Java提供了一个健壮的、面向对象的方法来处理出现异常,称为Java异常处理。 我以前写过一篇长文章来介绍Java异常处理,今天我将列出一些重要的Java异常面试的问题及答案,希望对你们的面试有所帮助。1.什么是Java异常答:异常是发生在程序执行过程中阻碍程序正常执行的错误事件。比如:用户输入错误数据、硬件故障、网络阻塞等都会导致出现异常。 只要在Java语句执行中产生了异常,一个异常对...转载 2018-10-11 23:59:33 · 142 阅读 · 0 评论 -
一篇很不错的单例模式详解
1、什么是设计模式? 首先我们来看第一个问题什么是设计模式?在百度百科中它的定义是这样的: 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。(百度百科) 其实设计模式是人们实践的产物,在初期的开发过程中好多人发现再进行重复的代码书写,那些开发大牛们就不断总结、抽取最终得到了大家的认可于是就产生了设计模式,其实设计...转载 2018-09-04 09:16:46 · 3358 阅读 · 1 评论 -
HashTable与HashMap
Hashtable的应用非常广泛,HashMap是新框架中用来代替Hashtable的类,也就是说建议使用HashMap,不要使用Hashtable。可能你觉得Hashtable很好用,为什么不用呢?这里简单分析他们的区别。1.Hashtable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。查看Hashta...转载 2018-09-06 15:20:39 · 238 阅读 · 0 评论 -
网络中的拓扑结构
一.星型拓扑结构星型拓扑结构是目前应用最广、实用性最好的一种拓扑结构,这主要是因为它非常容易实现网络的拓展。星型拓扑结构又叫集中式拓扑结构,是因集线器或交换机连接的各节点呈星状分布而得名,在这种拓扑结构的网络中有中央节点(集线器或交换机),其他节点(工作站、服务器)都与中央节点直接相连。星型拓扑结构的优点:1.节点扩展、移动方便2.网络传输数据快3.维护容易缺点:1.核心交换机...转载 2018-09-08 09:41:13 · 3242 阅读 · 0 评论 -
二叉树最大深度和最小深度
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。递归形式 /** *输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 */ public int RMaxDeepth(TreeNode head){ ...原创 2018-09-16 22:23:51 · 532 阅读 · 0 评论