![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java的语法
pjiang000
这个作者很懒,什么都没留下…
展开
-
最坏情况为线性时间的选择算法
最坏情况为线性时间的选择算法参考:【算法】算法导论:https://www.bilibili.com/video/BV1Tb411M7FA?p=6提出问题:从一个数组中找到第K个最大数字,即TOPK问题,这个题目在面试和研究中经常遇到,那么,这个题目应该怎么解决呢?理所当然的我们会想到排序,我们可以使用排序算法将数组变得有顺序,然后直接选取,使用快速排序,归并排序,或者是堆排序,都可以使得时间复杂度是 O(nlgn)建堆,取出前K个数字,当k 接近于 0,或者是数组长度的时间,其时间复杂度几乎原创 2021-07-15 09:34:55 · 525 阅读 · 0 评论 -
设计模式(第一次复习)
复习软件模式什么是设计模式?不要说具体的策略,工厂什么的……第一页的PPT,分类连用,最多考一题目,比较难相同类型的模式往往可以连用 ——> 往往可以变化,组合:工厂不同类型的模式往往可以连用 ——> 解决不同角度的问题和需求目的分类是最重要的创建型结构性行为型中介,挂差2类模式:静态的对象模式:动态的既有类,又有对象:适配器原型和香园很像原型:创建型,原型工厂享元:结构性,香园管理器看这一张表,就得得到所有的东西两个英文的问题设计原原创 2021-06-08 00:29:28 · 77 阅读 · 0 评论 -
软件系统设计 表驱动法
表驱动法表驱动是一种编程模式(scheme)pattern 是可以被实例化的scheme 是一种方式当我需要有很复杂的逻辑判断的时候,我不会直接写出来,而是通过表中的数据来进行。表可以放在文件中,从而实现分离解决复杂逻辑问题的,适用范围包含了从代码中避免复杂的逻辑判断策略模式工厂模式实例使用复杂的逻辑对字符分类使用一个查询表对字符进行分类chartype = table[inputchar]代码数据化的设计模式命令表驱动的问题存什么数据原创 2021-06-07 21:27:37 · 114 阅读 · 0 评论 -
IDEA 全局搜索
CTRL + N全局搜索原创 2021-06-06 16:01:49 · 92 阅读 · 0 评论 -
devops的公开课
ECM中国负责人在关系比较好Develops 原发方法和实践分布式系统应用设计 orely书籍,主要使用K8s微服务架构设计模式Spring Cloud和docker 我i服务架构实战,微服务实战,架构进阶1:架构的历史CSBSLAMP架构MVC写很多的action处理函数分层架构自动的装配技术,把Java的代码翻译成C库的代码SOA架构服务的封装,松耦合,契约,抽象,宠用,可组合型,自治,无状态,可被发现性质ESB企业消息总线基于SOAP协.原创 2021-05-26 17:58:25 · 66 阅读 · 0 评论 -
你有退休的机会吗?
中国是60岁退休,目前有慢慢增加的趋势美国是65——67岁日本是65岁,但是可自行选择是否延长5年个人认为,35岁退休是一个不错的选择…………原创 2021-05-09 17:06:50 · 66 阅读 · 0 评论 -
必看的编程书籍
有哪些你看了以后大呼过瘾的编程书?http://www.360doc.com/content/20/0420/15/65400510_907251953.shtml荣老板在课堂上提到了人月神话和人件,曰科班出来的必须要看过这两本书(惭愧)转载 2021-05-08 10:52:45 · 78 阅读 · 1 评论 -
synchronized(xxx.class)
synchronized(xxx.class)只能锁住类的方法,类的属性、元数据等都是没有被锁住的,可以被其他线程访问。原创 2021-04-20 14:55:43 · 611 阅读 · 1 评论 -
windows subsystem for linux
Windows下的Linux可以通过cmd直接访问这是VSCODE 推荐我安装的但是我自己不安装原创 2021-04-14 14:13:10 · 71 阅读 · 0 评论 -
REDIS
1:简单的介绍2:分布式缓存1.本地23:memcached 和redis的对比2:key value持久化4:缓存的处理流程看缓存看数据库 -> 缓存5:为什么要用它做缓存6:常见的数据结构以及场景分析String非C获取长度,安全的,没有缓冲区的溢出计数,访问,点赞,评论,播放list非C双向的链表发布和订阅,消息队列hash类似 hashmap用来存储商品信息,用户信息set类似于hashset,没有重复值可以实现并集原创 2021-04-11 15:22:26 · 59 阅读 · 0 评论 -
HTTP 和 HTTPS
原创 2021-04-09 23:54:56 · 147 阅读 · 0 评论 -
并发编程的艺术:第二章
第二章:Java并发机制的底层实现原理Java代码在编译之后会生成字节码文件,也就是.class文件。class文件经过类加载器的加载到JVM中,JVM解释字节码文件,最终转化为汇编指令在CPU上执行。Java中所使用的并发机制依赖于JVM的实现和CPU的指令2:volatile保证了所有变量的内存可见性修改完之后,就会立即写入内存,并且告诉各个CPU中的缓存失效汇编指令:LOCK将当前的缓存行写入内存中锁总线,或者是锁缓存告诉其他的COU缓存的数据无效3:synchroni原创 2021-04-09 10:40:14 · 72 阅读 · 0 评论 -
Java ACM模式
Java ACM模式文章目录Java ACM模式1:java.util.*2:其他1:java.util.* Scanner reader = new Scanner(System.in); List<Integer> res = new ArrayList<>(); HashMap<Integer,String> you = new HashMap<>(); Queue<Integer原创 2021-03-28 15:50:47 · 1778 阅读 · 0 评论 -
IDEA不能导入List包
原创 2021-03-24 19:22:33 · 1861 阅读 · 0 评论 -
多路复用
单线程的遍历文件描述符,看看有没有内容,有内容,就直接弄过来判断有没有数据是程序做的,效率比较低文章目录1:select2:poll3:epoll1:selectrset 有五个描述符,是运行在用户空间的,此时会拷贝到我们的内核态如果没有数据,内核就会一直判断,阻塞状态有数据,会把FD设置为有数据,select函数会返回然后再判断哪一个fd被设置了,会将数据给读出来(可能同时几个都有数据,所以还是需要遍历)max + 1 = 9 + 1 = 10,给他卡住长度select (max.原创 2021-03-24 15:22:11 · 94 阅读 · 0 评论 -
java 8
java 8为什么现在这么多人都还在用 jdk 1.8呢??现在已经出现到16了啊从JDK 8u211开始,都是需要商业收费的也就是你自己开发,可以免费使用但是你开发的软件用于商业活动,就需要收费当然,白嫖是可以的,但是有名气之后,就肯定会被发现最后的免费的版本是 8u201 和 8u202,这两个有什么差别呢?关键补丁一般用 CPUs来表示,代表包含关键的漏洞修复,是需要所有的用户及时更新的,版本号一般用奇数补丁集更新版本用PSUs来表示,openjdk完全免费的开源版本原创 2021-03-20 12:15:00 · 73 阅读 · 1 评论 -
网络和通信
网络文章目录网络1:三次握手和四次挥手2:可靠传输的保证3:进程之间的通信方式3:线程之间的同步方式1:三次握手和四次挥手客户端发送带有SYN标志的数据包,一次握手——服务器服务端发送带有 SYN/ACK标志的数据包,二次握手——客户端客户端发送带有ACK标志的数据包,三次握手——服务端为什么要三次第一次,client什么都不能确定,server确定了对方发送正常,自己接受正常第二次,client确定了:自己发送,接受正常,对方两项也正常,server确认了对方发送正常,自己接受正常第原创 2021-03-16 01:18:56 · 118 阅读 · 0 评论 -
I/O
I/O1:常见的 I/O 模型unix 系统中同步阻塞同步非阻塞I.O 多路复用信号驱动异步 I/O轮询终端DMA通道?BIO同步阻塞应用程序发起请求之后,就一直都等待数据的返回,一直阻塞NIONon- blocking I/O面向缓冲的,基于通道的I/O多路复用线程首先发起select 调用,询问数据是否准备就绪等内核数据准备好了,线程再发起read调用多路复用器只需要一个线程便可以管理多个连接当数据到了之后,才会为其进行服务AIO原创 2021-03-14 10:31:11 · 64 阅读 · 0 评论 -
并发的容器
并发的容器文章目录并发的容器1:JDK提供的并发容器2:conlinkedlist3:blockingqueue3.1:你了解什么3.2:arrayblockingqueue3.3:linkedblockingqueue3.4:priorityblockingqueue4:concurrentskiplistmap5:copyonwritearraylist5.1实现原理5.2 读取操作5.3写操作6:concurrenthashmap1:JDK提供的并发容器提供的都在java.util.concur原创 2021-03-14 10:23:16 · 55 阅读 · 0 评论 -
垃圾回收
垃圾回收在垃圾回收中,我们需要判断三个条件,什么时候回收?在哪里回收?以及如何回收1:hotspot的GC分类partial GC,并不收集整个GC堆的模式young GC,只收集年轻代的GCold GC,只收集老年代的GC,只有CMS中的concurrent collection是这个模式mixed GC,收集整个年轻代以及部分老年代的GC,只有G1是这个模式full GC,收集整个堆包括young,old,永久代(如果存在的话)major GC,通常和full GC 是等原创 2021-03-14 10:22:31 · 67 阅读 · 0 评论 -
反射机制
反射机制Java的反射机制指的是在运行状态中,对于任意的一个类,都知道这个类的所有属性和方法,对于任意的一个对象,都能调用它的所有属性和方法,这种动态获得对象的信息和方法的功能称为Java语言的反射机制1:获取对象的四种方法如果我们要动态到获取到这些信息,我们需要依靠class对象,class对象将一个类的方法,变量等信息告诉正在运行的程序。具体类的时候Class my = String.classclass.ForName()传入类的路径内部调用的是native方法forNa原创 2021-03-14 10:21:18 · 62 阅读 · 0 评论 -
ThreadLocal
1:结构每个thread都维护了一个自己的threadLocals变量,每个线程的数据是存在了自己的threadLocal中的ThreadLocalMapstatic class Entry extends WeakReference<ThreadLocal<?>>一个线程中,可以由多个threadLocal来存放不同类型的对象,将他们都放在threadLocalMap中,所以需要数组int i = key.threadLocalHashCode &a原创 2021-03-13 15:51:59 · 54 阅读 · 1 评论 -
Java 对象布局
G2 compiler 是很重要的一个部分full GC 和轻 GC原创 2021-03-10 00:21:26 · 72 阅读 · 1 评论 -
多线程基础知识
3:5:实现runnable 接口继承Thread类子类继承Thread具备多线程的能力启动线程:子类对象.start()不建议使用,避免OOP单继承的局限性实现Runnable接口实现接口runnable具有多线程能力传入目标对象+thread.start()推荐使用:避免单继承的局限性,灵活方便,让同一个对象被多个线程使用7:实现callable接口开启服务,实现call 接口提交线程执行使用代理,得到返回值9:静态代理两个都实现同一个接口21原创 2021-03-07 10:55:55 · 63 阅读 · 1 评论 -
一面凉凉问题
1:equals 和 == 的区别枚举类型 中 == 和 equals 区别hashmap 和 hashtable的区别hashtable 和 concurrenthashmapJava的 字节码到 运行Java的运行时数据区OOM 有哪几种情况mysql 中的索引结构B 树和 B + 树2:排序算法知道哪一些能不能用二分法来查找BST 的搜索过程创建一颗二叉搜索树AVL 树如何将常见的不安全的array 转化为 安全的数组...原创 2021-03-06 20:47:18 · 99 阅读 · 1 评论 -
GC 可达性分析
可达性分析从GC roots开始作为七点,向下搜索他们引用的对象,可以生成一棵引用树。所有树的节点被称为可达的节点,否则就是不可达的节点在Java语言中,可以作为GC roots的对象包含以下的几种虚拟机栈中的引用对象方法区中的类静态属性引用的对象方法区中的常量引用的对象本地方法栈中的native方法的引用对象...原创 2021-03-06 00:06:24 · 654 阅读 · 0 评论 -
hashcode
hashcodehashcode的作用就是获取哈希码,是一个int整数,是确定这个对象在哈希表中的位置hashcode是一个对象都有的方法,是一个native方法对象是分配在堆中的hashset放对象加入到hashset 的时候,会先计算hashcode判断所在的位置如果为空,就直接加进去如果有数值,则hash冲突,此时调用equals方法来检查两个对象是否相等如果相等,就不会加入如果不相等,那么就重新散列如果两个对象相等,那么hashcode相等原创 2021-03-06 00:05:52 · 69 阅读 · 0 评论 -
concurrenthashmap
concurrenthashmapjdk7ReEntryLock + Segment + Hashentry并发度 就是segment的个数第一次hash的时候定位到segment,第二次hash定位到元素所在的链表get方法无需加锁,通过volatile来保证不会读到脏数据jdk8synchronized + CAS +Node + 红黑树CAS 是一个乐观锁 ,消息更高Node 的value 和 next 都是用volatile 来修饰,来保证可见性替换,查找,和赋值都是用原创 2021-03-06 00:05:17 · 41 阅读 · 0 评论 -
HashMap 死循环
HashMap 死循环多线程扩容的时候,两个分别指向 e1 next一个线程扩容完成之后,变成下图的形式线程二没有感知,还是扩容,它扩容的时候,按照 3 2 ,的顺序来进行最终会得到一个环状的死循环,此时属于overflow...原创 2021-03-05 21:45:31 · 91 阅读 · 0 评论 -
OOM 错误
OOM 错误文章目录OOM 错误1:OutOfMemoryError2:为什么会有OOM3:JVM的内存模型1:OutOfMemoryError堆内存溢出,这种情况是最常见的,一般是由于内存泄漏或者是堆设置过小造成的。堆的大小可以通过Xms,Xmn进行调节。PermGen溢出,也就是方法区溢出了产生了大量的class对象在方法区,这种情况可以更改方法区的大小来解决。过多的常量尤其是字符串也会造成方法区溢出栈溢出,即StackOverFolw,一般是由于死循环或者是深度调用造成的,或者是栈过小。一原创 2021-03-05 20:19:49 · 174 阅读 · 0 评论 -
deque双向队列的使用
Deque的使用 /** * Retrieves and removes the first element of this deque, * or returns {@code null} if this deque is empty. * * @return the head of this deque, or {@code null} if this deque is empty */ E pollFirst(); /**原创 2021-03-03 23:06:19 · 73 阅读 · 1 评论 -
Java 源码中 unchecked 什么意思
这个只是一个注解,通知编译器在编译时不进行检查,比如在类型转换时原创 2021-03-03 23:05:27 · 262 阅读 · 1 评论 -
JVM
JVM1:JVM的位置Java 程序JVM(JRE)操作系统(Windows Linux Mac)硬件 (内存,CPU,GPU,磁盘)2:JVM的体系结构java file -> calss file -> class loader -> 加载到 JVM中运行时数据区方法区 method areaJava 栈 Java stack本地方法区 native method area堆 heap程序计数器 PC原创 2021-02-01 14:16:21 · 75 阅读 · 0 评论 -
IDEA 中快捷键
public static void main(String[] args)psvmSystem.out.println()soutfor(int i=0 ;i<N;i++)foi原创 2021-02-01 13:41:45 · 55 阅读 · 0 评论 -
Windows 中进程的相关操作
以下的操作均为Windows 10 系统①:查看进程tasklisttasklist会按照pid(进程号)从小到大进行排列②:关闭进程taskkill /im qq.exe /ftaskkill /im 1024 /f出处:进行VS 插件安装时,提示需要关闭具体的进程才能接着安装。...原创 2020-12-21 20:31:38 · 427 阅读 · 1 评论 -
win 10下方搜索栏没见了解决方法
解决方法一右键左下角的win图标,再选择搜索即可解决方案二(建议)右键 下方的任务栏,选择Cortana,再点击显示搜索框就可以啦~原创 2020-12-17 19:51:34 · 466 阅读 · 0 评论 -
(算法)QUICKSORT
package sorting;public class quicksort { public static void main(String[] args) { int arr[] = {1, 4, 2, 6, 8, 3, 9, 0, 7, 5,222,2222222,11,-1,-8}; QuickSort(arr, 0, arr.length - 1); for (int i = 0; i < arr.length; i++) {原创 2020-12-17 17:17:55 · 113 阅读 · 2 评论 -
(算法) BST
package tree;class node{ int value; node left; node right; public node(int i) { this.value = i; }}public class bst { node root; public void insert(int i){ if(root==null){ root=new node(i);原创 2020-12-17 17:16:16 · 109 阅读 · 0 评论 -
2020 操作系统第二天复习(习题总结)
I:分时系统的响应与下列的哪一个因素无关1.2.4 操作系统的发展和分类 分时系统 分时系统指的是允许多个联机的用户同时使用一个计算级系统进行交互式设计的操作系统。系统把处理的时间分为时间片,公平的分给每一个用户,这样使得各个用户好像独占了计算机系统,所以实际上分时系统是多道程序的一个变相实现,CPU被若干个交互式的用户多路复用,每一个用户都有独自的联机终端。 IBM开发了第一个分时系统CTSS,分时系统的特点是:同时性,独立性,及时性和交互性。它强调原创 2020-12-13 22:06:47 · 424 阅读 · 0 评论 -
(第一次)NODEJS学习笔记
回调函数 事件循环 读文件 events.EmitterI:nodejs异步的实现noddJs的异步编程就体现在回调函数上,node.js的所有api都支持回调函数。通过回调函数可以实现异步化,但不能说使用了回调后程序就异步化了II:非阻塞代码和阻塞代码非阻塞代码也就是异步的操作,我先去完成其他的事情,等你IO操作好之后,我再来处理阻塞代码 就是一直等着你IO操作 等IO好了之后,再做下面的事情。III:nodejs为什么性能比较高nodejs 是单进程单线程的应用程序,但是由于V8引擎原创 2020-12-10 21:22:57 · 76 阅读 · 0 评论