自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 剑指Offer-17-打印从1到最大的n位数-Java代码实现(两种思路)

剑指Offer 17题打印从1到最大的n位数题目描述输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。来源于LeetCode示例 1:输入: n = 1输出: [1,2,3,4,5,6,7,8,9]代码实现(两种思路)import java.util.Arrays;public class Test17 { public static void main(String[] args) {

2020-10-29 23:21:56 126

原创 kuangshenshuo-注解和反射-反射详解

注解和反射 -> 反射0. 静态语言 VS 动态语言动态语言是一类在运行时可以改变其结构的语言:如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。通俗点说就是在运行时代码可以根据某些条件改变自身结构主要的动态语言有:Object-C 、C#、JavaScript、PHP、Python等静态语言与动态语言相对应的,运行时结构不可变的语言就是静态语言。如Java、C、C++Java不是动态语言,但Java可以称之为”准动态语言“。即Java有一定的动态

2020-10-28 22:24:39 148 1

原创 剑指Offer-16-数值的整数次方-递归方法Java代码实现

剑指Offer 16题数值的整数次方题目描述实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。来源于LeetCode示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25递

2020-10-27 23:05:12 88

原创 原码、反码、补码的理解

原码、反码、补码的理解0. 预备知识二进制、十进制机器数:任何存储在计算机中的数据,本质都是以二进制形式存储的,这叫做机器数。根据冯诺依曼提出的经典计算机体系结构框架,一台计算机由运算器、控制器、存储器、输入和输出设备组成。其中运算器,只有加法运算器,没有减法运算器。所以,计算机中没法直接做减法运算,其减法运算是通过加法来实现的。减去一个数,可以看作加上这个数的相反数,因此不得不引入一个符号位。机器数的最高位存放符号位,正数是0,负数是1。原码、反码、补码产生的过程,其实就是为了解决计算机做减

2020-10-25 22:49:36 121

原创 kuangshenshuo-注解和反射-注解

注解和反射 -> 注解1. 注解入门Java.AnnotationAnnotation是JDK5.0开始引入的新技术Annotation作用:不是程序本身,可以对程序做出解释可以被其他程序(如编译器等)读取Annotation格式:注解是以"@注释名"在代码中存在的,还可以添加一些参数值,如:@SuppressWarnings(value=“unchecked”).Annotation在哪里使用可以附件在package,class,method,field等上面,

2020-10-25 10:41:59 162 1

原创 剑指Offer-15-二进制中1的个数-java实现(两种方法(无符号右移、二进制字符串))

剑指Offer 15 题二进制中1的个数题目描述请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。来源于LeetCode示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。示例 2:输入:0000000000000000000000

2020-10-22 23:27:48 120

原创 kuangshenshuo-多线程-线程池

多线程详解 -> 线程池背景:经常创建和销毁、使用量特别大的资源,比如并发情况下的线程,对性能影响很大思路:提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。可以避免频繁创建销毁,实现重复利用。好处:提高响应速度(减少了创建线程的时间)降低资源消耗(重复利用线程池中线程,不需要每次都创建)便于线程管理JDK5.0提供了线程池相关API:import java.util.concurrent.ExecutorService;import java.util.c

2020-10-21 23:54:45 169

原创 kuangshenshuo-多线程-生产者消费者问题-管程法&信号灯法

多线程详解 -> 线程通信 ——生产者消费者问题1.1 线程通信应用场景:生产者消费者问题假设仓库中只能存放一件产品,生产者将生产出来的产品放入仓库,消费者将仓库中产品取走消费如果仓库中没有产品,则生产者将产品放入仓库,否则停止生产并等待,直到仓库中的产品被消费者取走为止如果仓库中放有产品,则消费者可以将产品取走消费,否则停止消费并等待,直到长裤中再次放入产品为止1.2 问题分析这是一个线程同步问题,生产者和消费者共享一个资源,并且生产者和消费者之间相互依赖,互为条件对于生产者

2020-10-21 23:33:28 217

原创 kuangshenshuo-多线程-Lock

多线程详解 -> Lock(锁)从JDK5.0开始,Java提供了更强大的线程同步机制——通过显示定义同步锁对象来实现同步。同步锁使用Lock对象充当import java.util.concurrent.locks.Lock 接口是控制多个线程对共享资源进行访问的工具,锁提供了对共享资源的独占访问,每次只能有一个线程对Lock对象加锁,线程开始访问共享资源之前应先获得Lock对象Reenactment类实现了Lock,拥有与synchronized相同的并发性和内存语义,在实现线程安全的控制

2020-10-19 23:20:08 148

原创 kuangshenshuo-多线程-死锁

多线程详解 -> 死锁多个线程各自占有一些共有资源,并且相互等待其他线程占有的资源才能运行,而导致两个或者多个线程都在等待对方释放资源,都停止执行的情形。某一个同步块同时拥有两个以上对象的锁时,就可能会发生死锁的问题案例package com.anobabe.lock;//死锁:多个线程互相抱着对方需要的资源,然后形成僵持public class DeadLock { public static void main(String[] args) { Makeup

2020-10-19 23:19:25 98

原创 kuangshenshuo-多线程-CopyOnWriteArrayList

多线程详解 -> CopyOnWriteArrayListimport java.util.concurrent.CopyOnWriteArrayList;//测试JUC安全类型的集合public class TestJUC { public static void main(String[] args) { CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<String>(

2020-10-19 22:23:47 125

原创 kuangshenshuo-多线程-线程同步机制synchronized

多线程详解 -> 线程同步机制1. 线程同步?并发:同一个对象被多个线程同时操作现实生活中的例子:上万人同时抢100张票两个银行同时取钱食堂排队打饭处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象,这时就需要线程同步线程同步,其实就是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面线程使用完毕,下一个线程再使用2. 队列 + 锁队列 + 锁 才能保证线程同步的安全性由于同一进程的多个线程共享同一块存储空间,在

2020-10-19 22:23:26 87

原创 kuangshenshuo-多线程-守护线程

多线程详解 -> 守护线程(daemon)线程分为用户线程和守护线程虚拟机必须确保用户线程执行完毕虚拟机不用等待守护线程执行完毕如:后台记录操作日志、监控内存、垃圾回收等待//测试守护线程:上帝守护你public class TestDaemon { public static void main(String[] args) { God god = new God(); You you = new You(); Thread

2020-10-18 22:22:05 87

原创 kuangshenshuo-多线程-线程优先级

多线程详解 -> 线程优先级Java提供一个线程调度器来监控程序中启动后进入就绪状态的所有下线程,线程调度器按照优先级决定勇敢调度哪个线程来执行线程的优先级用数字表示,范围:1~10Thread.MIN_PRIORITY = 1;Thread.MAX_PRIORITY = 10;Thread.NORM_PRIORITY = 5;使用以下方式改变或获取线程的优先级getPriority().setPriority(int a);//测试线程的优先级publ

2020-10-18 22:21:39 183

原创 kuangshenshuo-多线程-线程状态

多线程详解 -> 线程状态线程五大状态图解线程方法方法说明setPriority(int newPriority)更改线程的优先级static void sleep(long millis)在指定的毫秒数内让当前正在执行的线程体休眠void join()等待该线程终止static void yield()暂停当前正在执行的线程对象,并执行其他线程void interrupt()中断线程(不建议使用)boolean isAli

2020-10-18 21:42:14 110

原创 kuangshenshuo-多线程-Lambda表达式

多线程详解 -> Lambda表达式希腊字母表中第十一位字母——λ,英文Lambda为什么要使用Lambda表达式避免匿名内部类定义过多;可以让代码看起来简洁;去掉了一堆没有意义的代码,只留下核心的逻辑。实质属于函数式编程函数式接口Functional Interface任何接口,如果只包含唯一一个抽象方法,那么就是一个函数式接口;对于函数式接口,可以通过Lambda表达式来创建该接口的对象。/*推导Lambda表达式 */public class TestL

2020-10-16 23:04:46 104

原创 kuangshenshuo-多线程-静态代理模式

多线程详解 -> 静态代理模式静态代理模式案例package com.anobabe.staticProxy;public class StaticProxy { public static void main(String[] args) { You you = new You(); WeddingCompany weddingCompany = new WeddingCompany(you); weddingCompany.Ha

2020-10-16 21:56:05 129

原创 kuangshenshuo-多线程-线程创建的三种方式

多线程详解 -> 线程创建(三种方式)1. 线程创建的三种方式①继承Thread类②实现Runnable接口③实现Callable接口2. 第一种方式——继承Thread类自定义线程类继承Thread类重写run()方法,编写线程执行体创建线程对象,调用start()方法启动线程//创建线程方式1:继承Thread类,重新run(),调用start()开启线程public class TestThread extends Thread{ @Override

2020-10-15 23:10:02 120

原创 剑指Offer-14-Ⅱ-剪绳子Ⅱ-详解及代码实现(java)

剑指Offer 14-Ⅱ题剪绳子Ⅱ题目描述给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]k[1]…*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。来源于LeetCode示例 1:

2020-10-15 22:05:38 156

原创 剑指Offer-14-Ⅰ-剪绳子Ⅰ-详解及代码实现(java)

剑指Offer 14-Ⅰ题剪绳子Ⅰ题目描述给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]k[1]…*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。来源于LeetCode示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1示例 2:输入: 10输出:

2020-10-15 22:04:03 79

原创 kuangshenshuo-多线程-概述

多线程详解 -> 线程、进程、多线程1. 多任务2. 多线程多个车道、打游戏、普通方法调用和多线程:普通方法调用即只有主线程一条执行路径;而多线程是多条执行路径,主线程和子线程并行交替执行。3. 程序、进程、线程在操作系统中运行的程序就是进程,如QQ等一个进程可以有多个线程,如视频中同时听声音、看图像、看弹幕等。进程 Process线程 Thread程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态概念。进程是执行程序的一次执行过程,是一个动态的概念。是系统资

2020-10-12 18:46:30 86

原创 剑指Offer-13-机器人的运动范围-详解及代码实现(java)

剑指Offer 13题机器人的运动范围题目描述地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?来源于LeetCode示例 1:输入:m

2020-10-12 17:51:03 155

原创 kuangshenshuo-网络编程-URL下载网络资源

网络编程 -> URL下载网络资源URL 统一资源定位符定位互联网上的某个资源协议://IP地址:端口/项目名/资源import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;public class URLDown { public stat

2020-10-11 22:57:11 76

原创 kuangshenshuo-网络编程-UDP实现聊天

网络编程 -> UDP实现聊天不用连接,需要知道对方地址DatagramPacketDatagramSocket1. UDP 实现发送消息发送端import java.io.IOException;import java.net.*;//不需要连接服务器public class UdpClientDemo01 { public static void main(String[] args) throws IOException { //1. 建立一个S

2020-10-09 23:08:23 71

原创 kuangshenshuo-网络编程-TCP实现聊天和文件上传

网络编程 -> TCP实现聊天和文件上传1. TCP实现聊天1.1 客户端① 连接服务器 Socket② 发送消息import java.io.IOException;import java.io.OutputStream;import java.net.InetAddress;import java.net.Socket;//客户端public class TcpClientDemo01 { public static void main(String[] args)

2020-10-09 21:17:36 93

原创 kuangshenshuo-网络编程-IP、端口及通信协议

网络编程 -> IP、端口、通信协议1. 概述计算机网络计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。网络编程的目的传播交流信息数据交换通信网络编程中的两个主要问题:如何准确定位网络上的一台或多台主机,以及定位到这个计算机上的某个资源?找到了这个主机,如何传输数据?JavaWeb 是网页编程,B/S架构;网络编程是针对T

2020-10-08 16:56:45 122

原创 剑指Offer-12-矩阵中的路径 -回溯法详解及java代码实现

剑指Offer 12题矩阵中的路径题目描述(来源于LeetCode)请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。[[“a”,“b”,“c”,“e”],[“s”,“f”,“c”,“s”],[“a”,“d”,“e”,“e”]]但矩阵中不包含

2020-10-08 12:02:12 138

原创 kuangshenshuo-GUI编程-贪吃蛇游戏

GUI编程 --> 贪吃蛇游戏狂神说的详细视频教程1. 一些概念帧:如果时间片足够小,就是动画。如1s 30帧。帧拆开就是静态的图片。键盘监听定时器:Timer类2. 思路①定义数据②绘制图形③添加监听事件3. 代码实现3.1 Datapackage com.anobabe.snake;import javax.swing.*;import java.net.URL;//数据中心public class Data { //相对路径:XX.png

2020-10-06 22:49:36 182

空空如也

空空如也

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

TA关注的人

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