JDK

love-system SSM爱心捐赠管理系统

泄露秘密 提交于 2021-01-03 10:45:40
love-system SSM爱心捐赠管理系统 本系统为个人当初所写,现免费上传供下载,整体使用了SSM架构,Shiro来控制权限。后期如果有时间,打算使用Spring Boot和Vue重构,毕竟前后端分离已经是大势所趋。 源码地址: https://gitee.com/southwind0/love-system 1.技术选型 - IDEA - JDK8 - MySQL - Shiro - Spring - Spring MVC - MyBatis - Bootstrap - jQuery 2.使用教程 1. 将resource目录下的数据库.txt中SQL语句导入Mysql数据库 2. 将源码导入IDEA,直接配置Tomcat启动即可 3.图片展示 1.系统采用shiro进行权限管理,目前有2个用户,chenyue为admin用户,test为普通用户 2.其他功能展示 来源: oschina 链接: https://my.oschina.net/u/4399511/blog/4874146

Centos7安装zookeeper+kafka集群

…衆ロ難τιáo~ 提交于 2021-01-03 07:50:00
Centos7安装zookeeper+kafka集群 1 Zookeeper和kafka简介 1) ZooKeeper 是一个分布式的、分层级的文件系统,能促进客户端间的松耦合,并提供最终一致的,用于管理、协调Kafka代理,zookeeper集群中一台服务器作为Leader,其它作为Follower 2) Apache Kafka 是分布式发布-订阅消息系统,kafka对消息保存时根据Topic进行归类,每个topic将被分成多个partition(区),每条消息在文件中的位置称为offset(偏移量),offset为一个long型数字,它是唯一标记一条消息,它唯一的标记一条消息。 一个partition中的消息只会被group中的一个consumer消费,每个group中consumer消息消费互相独立,不过一个consumer可以消费多个partitions中的消息。 kafka只能保证一个partition中的消息被某个consumer消费时,消息是顺序的。从Topic角度来说,消息仍不是有序的。 每个partition都有一个server为"leader";leader负责所有的读写操作,如果leader失效,那么将会有其他follower来接管成为新的leader(有zookeeper选举);follower只是单调的和leader跟进,同步消息即可.

Android Studio和SDK下载、安装和环境变量配置

允我心安 提交于 2021-01-03 07:49:22
这个我的用处主要是为了weex进行服务的, 在这个里面我只讲个大概框架内容。写博客不容易勿喷。 1.进行java jdk的配置,这个关于java的有太多了。我们随处都可以搜到这里我也可以给大家提供一个网址 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2.Android Studio的安装和配置,这个里面包含有SDK的自动安装过程,所以在这里我也不做过多的赘述。 下面是关键的过程了。就是Android的安装和sdk的环境变量的配置。 Android Studio虽然会帮我们把SDK进行下载好。但是关于SDK环境变量的配置我们还是需要进行自己的完善的。 下面我把自己成功的案例的所在的博客的网址提供给大家。供咱们大家进行参考。 安卓的传送门为: 、去Android Studio的中文社区(官网)下载最新的Android Studio 这里给大家提供一个一键到达的网址。 http://www.android-studio.org/ 然后我们大家就可以进行安装了。 这里的安装过程我的大体感觉是有几个按钮需要我们大家进行设置之外(一个还是两个我忘了哦),其他的就 只是傻瓜式的安装了。 然后这里我也给大家提供一个网址哦: https://blog.csdn.net

JDK11 centos7安装

喜欢而已 提交于 2021-01-03 07:46:40
JDK11正式发布3个月了,删除了jre。 环境变量路径也有些许变化 来装一下 准备好jdk包 上传到服务器 创建目录并解压到其下 [root@localhost down]# mkdir /usr/local/jdk-11.0.1 [root@localhost down]# tar -xf jdk-11.0.1_linux-x64_bin.tar.gz -C /usr/local/jdk-11.0.1 [root@localhost down]# cd /usr/local/jdk-11.0.1 备份环境变量 [root@localhost etc]# cp profile profile.bak 编辑环境变量 vi profile JAVA_HOME=/usr/local/jdk-11.0.1 CLASSPATH=$JAVA_HOME/lib/ PATH=$PATH:$JAVA_HOME/bin export PATH JAVA_HOME CLASSPATH 来源: oschina 链接: https://my.oschina.net/u/3484671/blog/2995465

Java 并发编程:AQS 的自旋锁

懵懂的女人 提交于 2021-01-02 19:24:10
互斥锁在 AQS的互斥锁与共享锁 中已经做了详细介绍,一个锁一次只能由一个线程持有,其它线程则无法获得,除非已持有锁的线程释放了该锁。这里为什么提互斥锁呢?其实互斥锁和自旋锁都是实现同步的方案,最终实现的效果都是相同的,但它们对未获得锁的线程的处理方式却是不同的。对于互斥锁,当某个线程占有锁后,另外一个线程将进入阻塞状态。与互斥锁类似,自旋锁保证了公共数据在任意时刻最多只能由一条线程获取使用,不同的是在获取锁失败后自旋锁会采取自旋的处理方式。 自旋锁 自旋锁是一种非阻塞锁,它的核心机制就在自旋两个字,即用自旋操作来替代阻塞操作。某一线程尝试获取某个锁时,如果该锁已经被另一个线程占用的话,则此线程将不断循环检查该锁是否被释放,而不是让此线程挂起或睡眠。一旦另外一个线程释放该锁后,此线程便能获得该锁。自旋是一种忙等待状态,过程中会一直消耗CPU的时间片。 为什么自旋 互斥锁有一个很大的缺点,即获取锁失败后线程会进入睡眠或阻塞状态,这个过程会涉及到用户态到内核态的调度,上下文切换的开销比较大。假如某个锁的锁定时间很短,此时如果锁获取失败则让它睡眠或阻塞的话则有点得不偿失,因为这种开销可能比自旋的开销更大。总结起来就是互斥锁更适合持有锁时间长的情况,而自旋锁更适合持有锁时间短的情况。 自旋锁特点 自旋锁的核心机制就是死等,所有想要获得锁的线程都在不停尝试去获取锁,当然这也会引来竞争问题。

惊人!Spring5 AOP 默认使用Cglib? 从现象到源码深度分析

北城以北 提交于 2021-01-02 16:15:29
Spring5 AOP 默认使用 Cglib 了?我第一次听到这个说法是在一个微信群里: 真的假的?查阅文档 刚看到这个说法的时候,我是保持怀疑态度的。 大家都知道 Spring5 之前的版本 AOP 在默认情况下是使用 JDK 动态代理的,那是不是 Spring5 版本真的做了修改呢?于是我打开 Spring Framework 5.x 文档,再次确认了一下: 文档地址: https://docs.spring.io/spring/docs/5.2.0.RELEASE/spring-framework-reference/core.html#aop 简单翻译一下。Spring AOP 默认使用 JDK 动态代理,如果对象没有实现接口,则使用 CGLIB 代理。当然,也可以强制使用 CGLIB 代理。 什么?文档写错了?! 当我把官方文档发到群里之后,又收到了这位同学的回复: SpringBoot 2.x 代码示例 为了证明文档写错了,这位同学还写了一个 DEMO。下面,就由我来重现一下这个 DEMO 程序: 运行环境:SpringBoot 2.2.0.RELEASE 版本,内置 Spring Framework 版本为 5.2.0.RELEASE 版本。同时添加 spring-boot-starter-aop 依赖,自动装配 Spring AOP。 public

Java多线程详解

十年热恋 提交于 2021-01-02 15:21:33
线程对象是可以产生线程的对象。比如在 Java 平台中Thread对象,Runnable对象。线程,是指正在执行的一个指点令序列。在java平台上是指从一个线程对象的start()开始,运行run方法体中的那一段相对独立的过程。相比于多进程,多线程的优势有: (1)进程之间不能共享数据,线程可以; (2)系统创建进程需要为该进程重新分配系统资源,故创建线程代价比较小; (3)Java语言内置了多线程功能支持,简化了java多线程编程。 一、创建线程和启动 (1)继承Thread类创建线程类 通过继承Thread类创建线程类的具体步骤和具体代码如下: • 定义一个继承Thread类的子类,并重写该类的run()方法; • 创建Thread子类的实例,即创建了线程对象; • 调用该线程对象的start()方法启动线程。 class SomeThead extends Thraad { public void run() { //do something here } } public static void main(String[] args){ SomeThread oneThread = new SomeThread(); 步骤3:启动线程: oneThread.start(); } (2)实现Runnable接口创建线程类

java多线程详解

雨燕双飞 提交于 2021-01-02 15:20:54
1、返回当前线程的名称:Thread.currentThread.getName(); 2、Thread的名称由Thread+编号定义,编号从0开始 3、线程要运行的代码统一都放到了run方法下面 4、线程要运行必须要通过类中指定的方法开启。Start()(启动后就多了一条执行路径) 注意:start() 1、启动了一个线程 2、让jvm调用了run方法 二、Thread类中start()方法和run()方法的区别   1、线程通过调用start()方法启动了一个线程,这时线程就处于就绪状态,一旦得到cpu时间片就执行run方法。这里的run方法称为是线程体,它包含了要执行的线程的内容,run()方法执行完毕,线程终止   2、run()方法只是类的一个普通的方法,如果直接调用run()方法的话,程序中仍然只有主线程这一个线程。其程序的执行路径还是只有一条,还是按照顺序执行    总结:start()方法最本质的功能是申请另一个线程空间来执行run方法中的代码。它和当前线程是两条线,在相对独立的线程空间运行,也就是说,如果你直接调用线程对象的run()方法,当然也会执行,但那是 在当前线程中执行,run()方法执行完成后继续执行下面的代码.而调用start()方法后,run()方法的代码会和当前线程并发(单CPU)或并行 (多CPU)执行。所以请记住一句话

jdk1.7访问https报javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure问题解决

﹥>﹥吖頭↗ 提交于 2021-01-02 14:00:28
jdk1.7访问https报javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure问题解决 参考文章: (1)jdk1.7访问https报javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure问题解决 (2)https://www.cnblogs.com/remember-forget/p/10271248.html 备忘一下。 来源: oschina 链接: https://my.oschina.net/stackoom/blog/4873764

Java9 modules (Jigsaw)模块化迁移

不打扰是莪最后的温柔 提交于 2021-01-02 13:27:00
要点 通过模块化的方式开发应用程序,实现更好的设计,如关注点分离和封装性。 通过Java平台模块化系统(JPMS),开发者可以定义他们的应用程序模块,决定其他模块如何调用他们的模块,以及他们的模块如何依赖其他模块。 对于已经使用了其他模块系统(如Maven或Gradle)的应用程序来说,还是有可能再加入JPMS。 JDK为开发者提供了一些工具,用于将现有的代码迁移到JPMS。 应用程序代码仍然可以依赖Java 9之前的类库,这些类库的jar包被看成是一种特别的“自动化”模块,从而简化了向Java 9迁移的工作。 这篇文章提供了一个学习案例,演示一个真实的应用程序需要做出哪些变更才能迁移到JPMS。当然,要使用Java 9不一定要做这些事情,不过对于Java开发者来说,了解模块化系统(通过被叫作Jigsaw)无疑是一个非常重要的技能。 我将会演示如何一步步地使用新的Java模块化系统来重构一个基于Java 8的应用程序。 下载Java 9 首先要下载和安装最新版本的JDK 9,目前只有抢先预览版(这里使用的是9-ea+176版本)。在全面了解Java 9之前,你可能不希望把它作为系统的默认Java版本。所以,你可以不改变原先的 $JAVA_HOME 环境变量,而是创建一个新的变量 $JAVA9_HOME ,并把它指向新安装的JDK目录。我将在这篇文章里使用这个新变量。