- 博客(74)
- 资源 (1)
- 收藏
- 关注
原创 读书笔记 (2)
![image.png](https://img-blog.csdnimg.cn/img_convert/bfec7ae8ea9173f8d0309957d6714961.png#clientId=u39499d18-0477-4&from=paste&height=507&id=u524e397a&margin=[object Object]&name=image.png&originHeight=1014&originWidth=1290&
2021-04-29 11:24:20
153
原创 leetcode 数组,链表,跳表
数组,链表,跳表283. 移动零给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。方法一: loop的时候,统计0的个数,有0就移动数组,最后,将在数组后面补0方法二: 直接弄一个新的数组,一旦有非0的...
2020-04-27 23:32:42
241
原创 并发编程面试(四)Java内存模型相关问题
并发编程面试(四)Java内存模型相关问题什 么 是 Java 的 内 存 模 型 , Java 中 各 个 线 程 是 怎 么 彼 此 看 到 对 方 的 变 量 的 ?java 的 内 存 模 型 定 义 了 程 序 中 各 个 变 量 的 访 问 规 则 , 即 在 虚 拟 机 中 将 变 量 存 储 到 内 存 和 从 内 存 中 取 出 这 样 的 底 层 细 节 。此 处 的 变...
2020-04-27 23:32:03
352
原创 并发编程面试(三) 线程池
并发编程面试(三) 线程池Java 中 的 线 程 池 是 如 何 实 现 的 ?在 Java 中 , 所 谓 的 线 程 池 中 的 “ 线 程 ” , 其 实 是 被 抽 象 为 了 一 个 静 态 内 部 类 Worker, 它 基 于 AQS 实 现 , 存 放 在 线 程 池 的 Hash Set< Worker> workers 成 员 变 量 中 ;而...
2020-04-27 23:29:57
194
原创 并发编程面试 (二)ReentrantLock 相关
并发编程面试 (二)ReentrantLock 相关跟Synchronized 相 比 , 可 重 入 锁 Reentrant Lock 其 实 现 原 理 有 什 么 不 同 ?其 实 , 锁 的 实 现 原 理 基 本 是 为 了 达 到 一 个 目 的 : 让 所 有 的 线 程 都 能 看 到 某 种 标 记 。Synchronized 通 过 在 对 象 头 中 设 置 标 记 实 ...
2020-04-27 23:28:12
282
原创 并发编程面试 (一)Synchronized 相关
并发编程面试(一)Synchronized 相关Synchronized 原 理 是 什 么 ?Synchronized 是 由 JVM 实 现 的 一 种 实 现 互 斥 同 步 的 一 种 方 式 , 如 果 你 查 看 被 Synchronized 修 饰 过 的 程 序 块 编 译 后 的 字 节 码 , 会 发 现 , 被 Synchronized 修 饰 过 的 程 序 块...
2020-04-27 23:15:17
149
原创 前后端分离
前后端分离以及token的使用为什么使用前后端分离:首先说一下jsp的工作原理:jsp实际上也是是一个继承自Servlet接口的java类,实际上它就是一个Servlet,JSP的页面渲染是在后端完成的,经过tomcat的处理后,把jsp转为html后,再统一发送给前端(浏览器)显示出来那现在手机移动端app这么普及,那我怎么写一份后端代码,即又可以显示在手机app上面,又可以在pc...
2020-03-21 18:19:10
273
原创 (10 Android)实验项目_Android UI与Activity组件(上)
(10 Android)实验项目_Android UI与Activity组件(上)一、实验目的(1) 掌握常用的布局方法。(2) 掌握Activity组件的生命周期。二、实验内容及步骤在Android Studio中,新建名为Example3的项目,然后在此项目中完成如下几个模块的设计:1.掌握各种布局的特点、Android常用控件的使用(1) 在项目里,新建名为example3_1...
2020-03-21 09:06:54
757
原创 (9 Android) 活动组件Activity
(9 Android) 活动组件Activity3.2.1 AppCompatActivity、Activity和ContextAppCompatActivity随着Android开发技术的发展,在不同的阶段(开发环境)创建Activity组件所使用的基类不同。在使用eclipse进行Android开发时,自动创建的MainActivity继承Activity,而Android Stu...
2020-03-21 09:06:16
289
原创 (8 Android) 用户界面UI设计
(8 Android) 用户界面UI设计3.1.1 Android界面视图类Android 图形化的用户界面(Graphical User Interface , GUI) 采用了结构清晰的MVC模型(Model-View-Controller) ,其具体含义:·提供了处理用户输入的控制器(Controller) ;·显示用户界面的视图(View) ;·保存数据和代码的模型(Model)...
2020-03-21 09:05:44
332
原创 Centos服务器配置与部署过程
Centos服务器配置与部署过程安装与配置docker1、检查内核版本,必须是3.10及以上uname -r2、安装dockeryum install docker3、输入y确认安装4、启动docker[root@localhost ~]# systemctl start docker[root@localhost ~]# docker -vDocker version 1...
2020-03-21 08:59:44
362
原创 (1 Linux) 手动配置网络
Linux 手动配置网络桥接桥接:桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。在桥接模式下,虚拟机ip地址需要与主机在同一个网段,如果需要联网,则网关与DNS需要与主机网卡一致。其...
2020-03-21 08:56:13
695
原创 HasnMap常见面试题解
HashMap常见面试题解析HashMap的底层数据结构?数组+链表 , 数组+链表+红黑树HashMap的存取原理?通过获取key对象的hashcode计算出该对象的哈希值,通过改哈希值与数组长度减去1进行位与运算(n-1 & hash),得到buckets 的位置,当发生hash冲突时,如果value值一样,则会替换旧的key的value,value不一样则新建链表结点,当链表...
2020-03-12 15:57:17
365
原创 HashMap源码
HashMap源码HashMap简介HashMap基于哈希表的Map接口实现。是以key-value存储形式存在。线程不安全。key和value都可以为null,无序JDK1.8之前由数组+链表组成,数组是HashMap主体,链表则主要是为了解决哈希冲突(两个对象调用的hashCode方法计算的哈希码值一致导致计算的数组索引值相同)而存在的(“拉链法”解决冲突),JDK1.8之后,当链表长度...
2020-03-12 15:56:45
101
原创 7 Android Studio项目调试
(7 Android) Android Studio项目调试1 主动调试(Toast与Logcat)android.widget.Toast类用于实现消息提醒,其信息在显示几秒后自动消失。Toast可以看作是一个会自动消失的信息框,它只能是以程序代码的方式设计。Toast类的定义及主要方法如图所示。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5cGCjjwz...
2020-03-12 15:48:24
592
原创 6 Android应用程序的基本组成
(6 Android) Android应用程序的基本组成Android应用程序是由组件组成的,组件可以调用相互独立的功能模块。根据完成的功能,组件可划分为四类核心组件,即Activity、Service、BroadcastReceiver和ContentProvider。1 Activity组件Activity是Android最重要的组件,负责用户界面的设计。Activity用户界面框架采用...
2020-03-12 15:47:55
839
原创 5 Android 项目的文件系统结构
(5 Android) Android 项目的文件系统结构由于Android将用户界面和资源从业务逻辑中分出来,并使用XML文件进行描述形成独立的资源文件。因此, Android应用项目的文件系统结构比Java/Java Web项目更为复杂,特别是资源文件的调用关系。在Android Studio中,项目有多种视图查看方式。默认使用Android视图,创建项目时自动生成的模块App包含mani...
2020-03-12 15:47:21
395
原创 2 Android Studio开发环境
(2 Android) Android Studio开发环境1 Android Studio 概述Android Studio 是一项全新的基于IntelliJ IDEA 的Android 集成开发和调试环境,与Eclipse Android 环境相比,具有如下优点:• Intellij IDEA / Android Studio 的智能提示很强大;• Android Studio 内置终...
2020-03-12 15:44:53
247
原创 4 实验项目_Android开发环境搭建
(4 Android )实验项目_Android开发环境搭建一、实验目的•掌握使用向导创建Android项目的方法;•掌握Android模拟器的创建与使用;•掌握Android项目的部署及运行方法。二、实验内容及步骤1. 在Android Studio中创建一个AndroidHello项目。•新建项目AndroidHello时,自动创建一个名为app的模块。•模块app分别包含名...
2020-03-12 15:42:20
1834
原创 3 创建和运行android应用
(3 Android)创建和运行android应用1 创建一个Hello 级Android Studio 项目在Android Studio 主菜单中,选择Start a new Android Studio project 后, 出现创建Android 项目对话框。首先为项目指令一个名称,如"HelloAndroid",然后进入选择目标设备对话框, 一般默认勾选Phone and Table...
2020-03-12 15:40:29
418
原创 2 Android Studio开发环境
(2 Android) Android Studio开发环境1 Android Studio 概述Android Studio 是一项全新的基于IntelliJ IDEA 的Android 集成开发和调试环境,与Eclipse Android 环境相比,具有如下优点:• Intellij IDEA / Android Studio 的智能提示很强大;• Android Studio 内置终...
2020-03-12 15:35:32
488
原创 1 Android系统架构
(1 Android) Android系统架构Android 是基于Linux内核的软件平台和操作系统,采用了软件堆栈架构。该架构分为四层,自上而下分别为应用程序层、应用程序框架层、Android 运行时环境层和Linux 内核层,如下图所示。1 Linux 内核层Linux 内核是硬件和其他软件堆层之间的一个抽象隔离层,提供由操作系统内核管理的底层基础功能,主要有安全机制、内存管理、进程...
2020-03-12 15:32:55
412
原创 7(计算机网络) ICMP与ping
无论是在宿舍,还是在办公室,或者运维一个数据中心,我们常常会遇到网络不通的问题。那台机器明明就在那里,你甚至都可以通过机器的终端连上去看。它看着好好的,可是就是连不上去,究竟是哪里出了问题呢?ICMP 协议的格式一般情况下,你会想到 ping 一下。那你知道 ping 是如何工作的吗?ping 是基于 ICMP 协议工作的。ICMP全称Internet Control Message Pro...
2020-02-20 22:47:46
396
原创 6(计算机网络) 交换机与VLAN
拓扑结构是怎么形成的?我们常见到的办公室大多是一排排的桌子,每个桌子都有网口,一排十几个座位就有十几个网口,一个楼层就会有几十个甚至上百个网口。如果算上所有楼层,这个场景自然比你宿舍里的复杂多了。具体哪里复杂呢?我来给你具体讲解。首先,这个时候,一个交换机肯定不够用,需要多台交换机,交换机之间连接起来,就形成一个稍微复杂的拓扑结构。我们先来看两台交换机的情形。两台交换机连接着三个局域网,每个...
2020-02-20 22:46:26
437
原创 5(计算机网络)从物理层到MAC层
故事就从我的大学宿舍开始讲起吧。作为一个八零后,我要暴露年龄了。我们宿舍四个人,大一的时候学校不让上网,不给开通网络。但是,宿舍有一个人比较有钱,率先买了一台电脑。那买了电脑干什么呢?首先,有单机游戏可以打,比如说《拳皇》。两个人用一个键盘,照样打得火热。后来有第二个人买了电脑,那两台电脑能不能连接起来呢?你会说,当然能啊,买个路由器不就行了。现在一台家用路由器非常便宜,一百多块的事情。那时...
2020-02-20 22:43:32
355
原创 03 (mysql实战) 事务隔离
提到事务,你肯定不陌生,和数据库打交道的时候,我们总是会用到事务。最经典的例子就是转账,你要给朋友小王转 100 块钱,而此时你的银行卡只有 100 块钱。转账过程具体到程序里会有一系列的操作,比如查询余额、做加减法、更新余额等,这些操作必须保证是一体的,不然等程序查完之后,还没做减法之前,你这 100 块钱,完全可以借着这个时间差再查一次,然后再给另外一个朋友转账,如果银行这么整,不就乱了么?...
2020-02-20 22:37:46
96
原创 2 (mysql实战) 日志系统
前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。相信你还记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。那么,一条更新语句的执行流程又是怎样的呢?之前你可能经常听 DBA 同事说,MySQL 可以恢复到半个月内任意一秒的状态,惊叹的同时,你是不是心中也会不免会好奇,这是怎样做到的呢?我们还是从一个表的一条更新语句说...
2020-02-20 22:36:10
384
原创 1 (msql实战)基础架构
1 (msql实战) 基础架构mysql> select * from T where ID=10;我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在 MySQL 内部的执行过程。所以今天我想和你一起把 MySQL 拆解一下,看看里面都有哪些“零件”,希望借由这个拆解过程,让你对 MySQL 有更深入的理解。这样当我们碰到 MySQL 的一些异常或者问题时,就能够直戳本质,...
2020-02-20 22:33:08
116
原创 4 DHCP与PXE: IP是怎么来的,又是怎么没的?
如何配置 IP 地址?那如何配置呢?如果有相关的知识和积累,你可以用命令行自己配置一个地址。可以使用 ifconfig,也可以使用 ip addr。设置好了以后,用这两个命令,将网卡 up 一下,就可以开始工作了。使用 net-tools:$ sudo ifconfig eth1 10.0.0.1/24$ sudo ifconfig eth1 up使用 iproute2:$ sudo...
2020-02-18 11:58:21
201
原创 3 ifconfig:最熟悉又陌生的命令行
当面试听到这个问题的时候,面试者常常会觉得走错了房间。我面试的是技术岗位啊,怎么问这么简单的问题?的确,即便没有专业学过计算机的人,只要倒腾过电脑,重装过系统,大多也会知道这个问题的答案:在 Windows 上是 ipconfig,在 Linux 上是 ifconfig。那你知道在 Linux 上还有什么其他命令可以查看 IP 地址吗?答案是 ip addr。如果回答不上来这个问题,那你可能没...
2020-02-18 11:56:58
185
原创 2 理解网络协议的工作模式
网络为什么要分层?网络为什么要分层?因为,是个复杂的程序都要分层。理解计算机网络中的概念,一个很好的角度是,想象网络包就是一段 Buffer,或者一块内存,是有格式的。同时,想象自己是一个处理网络包的程序,而且这个程序可以跑在电脑上,可以跑在服务器上,可以跑在交换机上,也可以跑在路由器上。你想象自己有很多的网口,从某个口拿进一个网络包来,用自己的程序处理一下,再从另一个网口发送出去。当然网络...
2020-02-18 11:53:58
277
原创 1 我们常用的网络协议有哪些
你先在浏览器里面输入 https://www.taobao,com,这是一个URL。浏览器只知道名字是“www.taobao.com”,但是不知道具体的地点,所以不知道应该如何访问。于是,它打开地址簿去查找。可以使用一般的地址簿协议DNS去查找,还可以使用另一种更加精准的地址簿查找协议HTTPDNS。无论用哪一种方法查找,最终都会得到这个地址:106.114.138.24。这个是IP地址,是互...
2020-02-18 11:45:11
2820
原创 图解JVM--(四)内存模型
内存模型java 内存模型很多人将【java 内存结构】与【java 内存模型】傻傻分不清,【java 内存模型】是 Java Memory Model(JMM)的意思。简单的说,JMM 定义了一套在多线程读写共享数据时(成员变量、数组)时,对数据的可见性、有序性、和原子性的规则和保障1.原子性问题提出,两个线程对初始值为 0 的静态变量一个做自增,一个做自减,各做 5000 次,结果是...
2020-02-06 22:44:06
266
原创 图解JVM--(三)类加载与字节码技术
类加载与字节码技术1.类文件结构根据 JVM 规范,类文件结构如下ClassFile { u4 magic; //魔数 u2 minor_version; //小版本号 u2 major_version; //java 主版本号 u2 constant_pool_count; //常量池 cp_info constant_pool[constant_...
2020-02-06 22:43:27
314
原创 图解JVM--(二)垃圾回收
垃圾回收1.如何判断对象可以回收1.1 引用计数在对象中添加一个引用计数器,每当有一个地方引用它,计数器值就加一,当引用失效时,计数器值就减一,任何时刻计数器为零的对象就不可能再被使用的,就可以做为垃圾被回收会出现如上图的循环引用,永远清除不了1.2 可达性分析算法java虚拟机中的垃圾回收器采用可达性分析来探索所有存活的对象扫描堆中的对象,看是否能够沿着GC Root对象...
2020-02-06 22:42:53
141
原创 图解JVM--(一)内存结构
jvm内存结构1.程序计数器1.1 定义Program Counter Register 程序计数器(寄存器)作用,记住下一条jvm指令的执行地址特点是线程私有的(唯一)不会存在内存溢出1.2 作用二进制字节码 jvm指令 public int add(); Code: 0: iconst_1 // 把1压入操作数栈中 1...
2020-02-06 22:42:12
305
原创 剑指offer_8_1数组的整数次方
数组的整数次方给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0暴力public class Solution {public double Power(double base, int exponent) { double num = 1; boole...
2020-01-27 10:11:11
89
原创 剑指offer_7_二进制中1的个数
二进制中1的个数首先我们要明确一种运算规则“与” (&) 运算 即 1 与 0为 0 , 1 与 1 为 1, 0 与 0为 1, 即相同时才为1 (偶数与1相与为0,奇数与1相与为1)“或” (|) 运算 即 1 或 0 为 1 ,1 或 1 为 1 ,0 或 0 为 0,即有1则为1“异或” (^) 运算 即 只有1与 0 时才为1,其他情况为0题目: 输...
2020-01-21 10:50:27
347
原创 剑指offer_6_1青蛙变态跳台阶
青蛙变态跳台阶一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法方法一:公式推导f(n) = f(n-1)+f(n-2)+f(n-3)+f(4)+…+f(0)f(n-1) = f(n-2)+f(n-3)+f(4)+…+f(0)代入 f(n) = 2*(f(n-2)+f(n-3)+f(4)+…+f(0)) = 2 * f(n-1...
2020-01-21 10:16:44
76
原创 剑指offer_6_青蛙跳台阶,矩形覆盖
青蛙跳台阶,矩形覆盖 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 递归 青蛙跳台阶有两种情况 假如跳1级,则剩下 n-1级台阶需要跳 假如调2级,则剩下 n-2级台阶需要跳 public static int jump(int n){ if(n <=...
2020-01-21 09:06:31
98
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人