目录

菠萝🍍的博客

有谁不喜欢吃菠萝呢

Maven私服(Java升级计划7)

私服简介 私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。 我们可以使用专门的 Maven 仓库管理软件来搭建私服,比如:Apache Archiva,Artifactory,Sonatype Nexus。这里我们使用 Sonatype Nexus。 上面这部分转载自博客Nexus安装、使用说明、问题总结,由于使用转载博客的安装无法进行,这里我说明怎么安装 安装nexus nexus下载地址:https://www.sonatype.com/download-oss-sonatype 解压 进入bin目录 打开cmd窗口,在这个目录下进行安装 启动服务 nexus.exe /run (启动成功后不要关闭命令行窗口) 当看到图中所示界面时,表示启动成功 安装服务 nexus.exe /install (重新使用新的命令行安装,可能出现权限不足,请以管理员身份运行命令行) 怎么打开管理员身份的c....

Java中的一些并发工具

1. 【转载】类CountDownLatch 1.1 CountDownLatch介绍 CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有框架服务之后执行。 1.2 CountDownLatch原理 CountDownLatch是通过一个计数器来实现的,计数器的初始化值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就相应得减1。当计数器到达0时,表示所有的线程都已完成任务,然后在闭锁上等待的线程就可以恢复执行任务。 1.2.1 CountDownLatch的伪代码 Main thread start Create CountDownLatch for N threads Create and start N threads Main thead wait on latch N threads completes there tasks are returns Main thread resume execution 1.2.2 CountDownLatch....

JAVA并发编程: CAS和AQS

说起JAVA并发编程,就不得不聊聊CAS(Compare And Swap)和AQS了(AbstractQueuedSynchronizer)。

单例模式

因程序需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计。

volatile实现机制

【转载】Java 并发编程:volatile的使用及其原理 作者:liuxiaopeng 博客地址:http://www.cnblogs.com/paddix/ valatile的作用 对volatile变量的单次读/写操作可以保证原子性的,如long和double类型变量,但是并不能保证i++这种操作的原子性,因为本质上i++是读、写两次操作。 volatile的使用 1、防止重排序 我们从一个最经典的例子来分析重排序问题。大家应该都很熟悉单例模式的实现,而在并发环境下的单例实现方式,我们通常可以采用双重检查加锁(DCL)的方式来实现。其源码如下: public class Singleton { public static volatile Singleton singleton; /** * 构造函数私有,禁止外部实例化 */ private Singleton() {}; public static Singleton getInstance() { if (singleton == null) { synchronized (singleton) { if (single....

synchronized(Java升级计划2)

synchronized原理 为什么会出现脏读呢? 当两个线程同时对一个共享数据进行操作的时候,如下图: 会把内存中的x=1读到工作空间,然后进行+1,这个时候就有一个CPU的时间片轮询的情况。当线程1进行执行的时候,读取x=1到工作空间,然后+1,刚好CPU轮询的时间到了,此时线程1中x=2的结果还没有刷新到内存中,导致线程2读取的数据是线程1更改数值之前的,出现脏读。 这里还有一种情况是,如果内存中的x=1是static修饰的,那么会出现跳号的情况,比如:线程1拿到x+1,此时x已经改为2了,但是没有输出,然后时间片轮询线程2执行,线程2拿到的值就是2了 当一段代码块被synchronized修饰的时候,那段代码被一个线程执行时,要么全部执行,要么都不执行,当执行到一半的时候,另一个线程进行访问,就会等待这个线程执行完成后再切换。此时synchronized具有的特性:独占性,排他性,可见性,原子性 为什么具有可见性呢?因为对于线程1中修改的值,线程2要能够感知到线程1把synchronized所包含的变量给修改了,此时对于线程2来说就具有可见性 synchronized (....

Java内存模型(Java升级计划1)

Java内存模型 JVM什么时候启动 类被调用的时候 启动JVM线程,再启动其他的线程,包括main线程,也就是JVM线程创建了其他的线程。 线程在JVM中是怎么运行的 方法区:存放的是一些加载的类信息(类加载器加载classload),常量,static变量,JIT编译后的代码。,也可以出现out of memory JIT编译(just-in-time compilation)狭义来说是当某段代码即将第一次被执行时进行编译,因而叫“即时编译”。JIT编译是动态编译的一种特例。JIT编译一词后来被泛化,时常与动态编译等价;但要注意广义与狭义的JIT编译所指的区别。 Java堆区:大量的实例对象,也可以出现out of memory 方法区和堆区可以实现信息共享 VIM Stack:Java在运行时的内存模型,数据私有,不能实现数据共享 每一个方法有唯一的栈帧去对应去存放数据 当栈帧放满了VIM Stack时,任然不断的添加,就会出现内存溢出,也可以出现out of memory 程序计数器(PC):Java线程的私有数据,这个数据就是执行下一条指令的地址,也就是说当这条指....

前端笔记

前端笔记 标签(空格分隔): javascript jquery easyui html html5 javascript中""==0为true 一些新手web0开发者会在写JS 中这样写, if(a == 0){ console.log("进来了"); } 一般会认为不会进入,实际JS 在运行时,当a 等于空的字符串时 JS会判断其与0是相等的 所以 判断是否等于0时,可以这样判断 用String(a) == 0 这样包裹一下或者 a+""==0 这样也是可以的 JavaScript中实现键值对的方法 在写js的时候,碰到需要使用类似hashmap的情况。 1、有一种比较简单的实现办法,但是使用起来局限性比较大。 var obj1={"a":1,"b":2}; alert(obj1["a"]); 这是一种功能非常简单的键值对,只能够小范围的定义和取值。 正则 //数字 return /^[0-9]+.?[0-9]*$/.test(value); frame自适应高度 function setIframeHeight(iframe) { if (iframe) { v....

Java笔记

学习Java和工作中遇到的一些问题记录

手把手教你在Linux上部署Spring Boot项目

准备的东西: 1.项目使用maven在IDEA上打包好 2.xshell连接服务器 3.工具Xftp 步骤 linux服务器上安装jdk,maven 分别从官网下载jdk和maven 使用Xftp将下载到本地的jdk和maven复制到linux上 在复制的时候你可以现在linux上创建文件夹用来放置jdk和maven 在java文件夹中使用解压命令进行解压 tar -zxvf jdk1.8.0_201/ 在maven文件夹同上 配置linux的profile文件 和windows配置环境变量类似,在linux上也要配置 vi /etc/profile 按 i 进行插入,注意要输入你所配置的目录,以及jdk和maven解压出来的那个文件夹的名字 export JAVA_HOME=/usr/local/java/jdk1.8.0_201 export MAVEN_HOME=/usr/local/maven/apache-maven-3.6.0 export PATH=$JAVA_HOME/bin:$PATH:$MAVEN_HOME/bin export CLASSPATH=....

Docker的基本使用

在之前的有说到过在linux上安装Docker,所以这里就不再进行说明安装过程了。 这次说的是 Docker对于Mysql的安装于配置,参考的文章是 docker如何安装mysql 使用docker运行mysql实例 docker端口映射或启动容器时报错Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 我先将那篇参考的文章复制过来,然后在文章中说明要注意的地方 下载第一个镜像,通过docker pull docker.io/mysql命令 查看下载后的镜像列表,如下图所示 通过 docker run -d -p 3306:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=root docker.io/mysql:latest 在这一步操作的时候可能会出现报错:driver failed programming external connectivity on endpoint lnmp (2f....

数据库笔记

mysql.oraclce,sqlserver的一些笔记,都记在这了

linux的几种基操

Linux服务器连接另一个linux服务器 ssh root@192.168.0.30//登录 exit //登出 在服务器集群环境中,通过ssh免密码登录 ssh会产生私钥和公钥,对方通过公钥进行加密字符串,然后通过私钥进行解密 在本机生成密钥 [root@iZdpqkd3lvx9ncZ ~]# ssh-keygen //生成密钥 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:oZ1x3AP1WHCIdxuf....

手把手教你怎么白嫖亚马逊云的EC2

一些废话 很久以前就想搞这个来着,但是懒得一批所以没有实现,前些天买了域名www.runnable.run终于打算做了,所以花了半天的时间把这个弄起来。 正题 首先进入亚马逊云官网 点击注册 如果不想用自己的邮箱,可以使用临时邮箱1 ) 临时邮箱2 )哦! 比如:美国地址 然后关键的地方来了! 怎么搞到一张信用卡,而且还是得有钱的,所以推荐是某宝 )搜索visa卡,花费大概10元到25元,你说要钱不算白嫖? 但是你都快拿到小姐的牌号了,还不充值一把?也就一餐午饭钱。比起国内的服务器,一年,我给你们看看啊 是吧,亚马逊这根本就是送人啊! 注意:买的信用卡号不一定能注册成功!!! 因为亚马逊云最近查的好严,非常严。你说要是失败了怎么办?能不能退款,这个emmm你问卖家吧。 1.还有其他的办法的,如果你是土豪,可以直接绑定自己的信用卡,刷爆! 2.没钱先绑定自己的信用卡,等白嫖以后再绑定其他的没用的信用卡,然后解绑注册用的那张信用卡。据说有风险,我没有试过,因为担心被亚马逊刷爆我的卡。 下一步 说回来,买到了,然后填了,然后就下一步了嘛。就是电话验证 然后会进行电话验证 ....