wenyl 的个人博客 wenyl 的个人博客
Tags Archives Links
  • 开始使用
  • Tags
  • Archives
  • Links
  • Search
  • RSS
参考文档 GitLab Docker 镜像 |吉特实验室 建立目录 mkdir /opt/gitlab mkdir /opt/gitlab/config mkdir /opt/gitlab/data mkdir /opt/gitlab/logs chmod -R 777 /opt/gitlab/ export GITLAB_HOME=/opt/gitlab 拉取镜像 docker pull gitlab/gitlab-ce:latest 运行镜像 运行镜像时,hostname应该是宿主机内网的IP地址 docker run --detach \ --hostname 172.21.97.71 \ --publish 8043:443 --publish 8089:80 --publish 8022:22 \ --name gitlab \ --restart always \ --volume $GITLAB_HOME/config:/etc/gitlab \ --volume $GITLAB_HOME/logs:/var/log/gitlab \ --volume $GITLAB......

docker安装gitlab

centos
聚合操作 聚合操作由管道和流构成。 聚合操作通过流来处理数据而不是通过集合,流是数据元素的序列,而集合是数据存储的数据结构,流通过管道携带来自源(如集合)得数据,管道是一系列操作,聚合操作接受lambda表达式作为参数。 管道 管道是一系列的聚合操作,包含以下 组件 源:可以是集合,数组,构造函数,输入输出通道 0个或者多个中间操作:部分中间操作会生成一个新的流,如filter 终端操作:终端操作会返回一个非流结果,如原始类型、集合或者没有返回值(如forEach) 流 流是元素序列 流不是存储数元素的数据结构,流通过管道从源携带值 聚合操作和迭代器的区别 聚合操作没有next方法 聚合操作更方便将问题划分为子问题,同时将结果组合到子问题中 聚合操作不直接处理集合中的元素,而是处理流中的元素 聚合操作支持将行为作为参数,如lambda表达式 流的常用操作 流的创建 java.util.stream.Stream public static Stream of(T... values) 产生一个元素为给定值的流 public static Stream empty() 创建空的流 pub....

Java基础--聚合操作

待分类
一、嵌套类 1.1 内部类 1.1.1 概念 内部类是定义在一个类中的类,内部类有以下特点 内部类的方法可以访问该类定义所在的作用域中的数据,包括私有数据 内部类可以对同一个包中的其他类隐藏起来 示例,下述代码中创建了一个类,里面有一个内部类,在内部类定义了一个定时器,定时输出当前时间,在TimerPrint内部类中,我们可以访问到TalkingClock的数据(包括静态变量、静态方法、普通变量、普通方法) class TalkingClock{ private int interval; private boolean beep; public static String NAME = "龙"; public TalkingClock(int interval, boolean beep){ this.interval = interval; this.beep = beep; } public void start(){ ActionListener actionListener = new TimerPrint(); Timer t = new Timer(interval,ac....

Java基础--内部类和lambda表达式

Java基础
一、悲观锁和乐观锁 多线程访问共享资源时,会对共享资源有增删改查的操作; 悲观锁在线程操作共享资源期间,枷锁成功就会禁止其他线程操作共享资源; 乐观锁不限制各个线程对共享资源的操作,但是当线程要更新共享资源时,会先判断该资源有没有被其他线程修改,如果共享资源没有被其他线程更新,则更新共享资源,如果被其他资源更新,则根据自己的需求另作处理; 悲观锁适合写操作较多的场景,加锁可以保证数据正确性,java的synchronized和Lock都是悲观锁实现 乐观锁适合读操作较多的场景,不加锁可以提升性能,java的原子操作类就是基于乐观锁实现 二、自旋锁和非自旋锁 2.1 自旋锁 多线程获取共享资源时,若资源被其他线程占用,该线程就会等待获取锁资源,但是线程不会放弃已经拿到的CPU时间片,通过自旋等待共享资源被释放 2.2 非自旋锁 非自旋锁再等待其他线程施放锁的时候,会让出CPU时间片,使线程进入休眠,所释放后,才会重新获取CPU时间片 三、无锁、偏向锁、轻量级锁和重量级锁 偏向锁通过对比Mark Word处理加锁问题,避免执行CAS操作,轻量级锁通过CAS操作和自旋来解决加锁问题,避免线程....

Java基础--常见的几种锁

Java基础
一、线程的状态 创建(NEW) 创建但是未调用start方法 可运行(RUNNABLE) 可能正在运行,也可能正在等待CPU时间片 阻塞(BLOCKED) 等待获取一个锁 等待(WAITING) 处于这种状态的线程不会被分配CPU执行时间,它们要等待被显式地唤醒 超时等待(TIMED_WAITING) 处于这种状态的线程不会被分配CPU执行时间,无须无限期等待被其他线程显示地唤醒,在达到一定时间后它们会自动唤醒 终止(TERMINATED) 线程运行结束 1.1 新建(NEW) 创建后尚未启动。 1.2 可运行(RUNNABLE) 可能正在运行,也可能正在等待 CPU 时间片。 包含了操作系统线程状态中的 Running 和 Ready。 1.3 阻塞(BLOCKED) 等待获取一个排它锁,如果其他线程释放了锁就会结束此状态 1.4 无限期等待(WAITING) 等待其它线程显式地唤醒,否则不会被分配 CPU 时间片 进入等待方法退出等待方法 Object.wait()Object.nofity或Object.nofityAll Thread.join()被调用的线程执行完毕 Lock....

Java基础--多线程

Java基础
一、概述 集合框架主要包括Map和Collection,Collecton用于存储对象,而Map则通过键值对(两个对象)存储对象 二、Collection 2.1 Set TreeSet 基于红黑树实现,支持有序操作 HashSet 基于哈希表实现,查询速度快,但是数据无序 LinkedHashSet 查询效率与hashset一致,但是内部基于双向链表实现 2.2 List ArrayList 基于数组实现,查询快,增删慢 Vector 实现与ArrayList一致,但是线程安全 LinkedList 基于双向链表实现,查询慢,增删快。还可用于栈、队列、双向队列 2.3 Queue LinkedList 实现双向队列 PriorotyQueue 基于堆结构实现,可以用他来实现优先队列 三、Map TreeMap 基于红黑树实现 HashMap 基于哈希表实现 HashTable 与HashMap类似,但是线程安全 LinkedHashMap 使用双向链表来维护元素的顺序,顺序为插入顺序或者最近最少使用(LRU)顺序 参考Java中的Map - 问尤龙の时光 (wenyoulong.co....

Java基础--集合框架

Java基础
← 1 ... 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ... 31 →
RSS 开始使用
wenyl - 鸡汤太好喝啦

Open Source, Open Mind,
Open Sight, Open Future!
183 文章
0 浏览     6 当前访客
© 2025 wenyl 的个人博客