JDK

IDEA 必要配置

*爱你&永不变心* 提交于 2020-11-19 10:48:34
IDEA 的设置是有工程级别的设置和全局设置两个级别的 打开工程之后再设置时更改的是当前工程的编码, “For curent project” 在 Idea 启动界面中打开设置,更改的就是全局设置了 1 、进入配置页面的方式 ( 1 )创建项目前 ( 2 )创建项目后 2 、配置页面 3 、项目和文件编码 ( 1 )全局空间和单个项目 ( 2 )单个文件 在代码编辑区右键 4 、修改项目JDK版本:三处要修改 (1) ( 2 )项目右键 -> Open Module Settings -> Project (新版本 idea 无需配置) ( 3 ) Modules (新版本 idea 无需配置) 5 、自动导包 多个可选包使用 Alt+Enter 来源: oschina 链接: https://my.oschina.net/u/4385177/blog/4724353

String、StringBuild、StringBuffer

笑着哭i 提交于 2020-11-19 10:47:52
String、StringBuild、StringBuffer   String、StringBuild、StringBuffer在java中都是可以操作字符串的对象,让我们来看看它们之间的区别和联系。 从结构分析   从结构上来看,它们都是final类,并且都是用char数组来存储内容的,不过StringBuild、StringBuffer没有用final和private来修饰这个数组。   StringBuild、StringBuffer都是继承AbstractStringBuilder,但StringBuffer为了解决线程安全问题,在对应的方法加上了关键字。 从线程是否安全分析   从线程安全方面来讲,String是不可变的,所以是线程安全的,因为多个线程调用String的方法都会去产生一个新的String,不会改变最初的内容。(之前我总是认为String做拼接的时候,是线程不安全的,所以String是线程不安全的,其实他指的线程安全并不是这个意思,因为拼接已经不是原子操作了,它只是指Sring调String的方法不会发生线程安全问题。)   StringBuild是非线程安全的,StringBuild也是用char数组去存储的,它其中某些方法是直接去操作这个数组的,比如append方法所以在多线程情况下是不安全的。   StringBuffer是线程安全的

redis 的过期策略都有哪些?内存淘汰机制都有哪些?

独自空忆成欢 提交于 2020-11-19 04:56:34
面试题 redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现? 面试官心理分析 如果你连这个问题都不知道,上来就懵了,回答不出来,那线上你写代码的时候,想当然的认为写进 redis 的数据就一定会存在,后面导致系统各种 bug,谁来负责? 常见的有两个问题: 往 redis 写入的数据怎么没了? 可能有同学会遇到,在生产环境的 redis 经常会丢掉一些数据,写进去了,过一会儿可能就没了。我的天,同学,你问这个问题就说明 redis 你就没用对啊。redis 是缓存,你给当存储了是吧? 啥叫缓存?用内存当缓存。内存是无限的吗,内存是很宝贵而且是有限的,磁盘是廉价而且是大量的。可能一台机器就几十个 G 的内存,但是可以有几个 T 的硬盘空间。redis 主要是基于内存来进行高性能、高并发的读写操作的。 那既然内存是有限的,比如 redis 就只能用 10G,你要是往里面写了 20G 的数据,会咋办?当然会干掉 10G 的数据,然后就保留 10G 的数据了。那干掉哪些数据?保留哪些数据?当然是干掉不常用的数据,保留常用的数据了。 数据明明过期了,怎么还占用着内存? 这是由 redis 的过期策略来决定。 面试题剖析 redis 过期策略 redis 过期策略是:定期删除+惰性删除。 所谓定期删除,指的是 redis 默认是每隔 100ms

Java动态代理

回眸只為那壹抹淺笑 提交于 2020-11-18 23:56:22
jdk动态代理 实现原理:利用字节码技术,生成新的class文件,来达到动态代理效果。 新的class文件是怎么组织的?由于代理目标是接口,则通过实现接口和继续代理类来完成。看看下面的例子更容易明白。 demo 接口 public interface PeoPleInterface { void say() throws Throwable; } 实现类 public class GrilPeoPle implements PeoPleInterface { @Override public void say() { System.out.println("女人说"); } } 代理类 public class PeoPleInvacationHandler implements InvocationHandler { private Object obj; public PeoPleInvacationHandler(Object obj) { this.obj = obj; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("人类开始"); Object invoke = method.invoke

从零搭建Spring Boot的Hello World

夙愿已清 提交于 2020-11-18 17:56:43
场景介绍 本教程将使用IntelliJ IDEA搭建一个简单Spring Boot项目,并将这个项目部署到阿里云服务器ECS上。 背景知识 背景知识 Spring Boot Spring Boot是近几年非常流行的一款微服务框架,具有简化配置、快速搭建、内嵌Tomcat或Jetty容器的特点,让开发人员专注于业务实现,基于Maven或Gradle插件创建可执行的JARs和WARs。 云服务器ECS 云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备,让您像使用水、电、天然气等公共资源一样便捷、高效地使用服务器,实现计算资源的即开即用和弹性伸缩。阿里云ECS持续提供创新型服务器,解决多种业务需求,助力您的业务发展。 步骤一:创建资源(未开通ECS) 1.在[阿里云从零搭建Spring Boot的Hello World体验场景]处( https://developer.aliyun.com/adc/scenario/af334c34023e423785cdf06d9a92d692)点击 开始体验开通资源后,查看本次实验资源。 2.单击 免费开通 创建所需资源。 步骤二:安装Java开发环境 1

在windows上用eclipse搭建STM32开发环境

你。 提交于 2020-11-18 08:29:03
1.下载eclipse需要的运行环境,JDK/JRE. 在http://wiki.eclipse.org/Eclipse/Installation中,找到最新的eclipse版本需要的JAVA 版本,然后去相应网站下载JAVA。这里我用的是Eclipse 4.5(Mars),它需要JAVA 7。 2.下载eclipse 在eclipse的官网下载 Eclipse IDE for C/C++ Developers 3.下载bleeding-edge-toolchain,openOCD,windows-build-tool。 在网站http://www.freddiechopin.info/en/download,找到download,选择bleeding-edge-toolchain,下载最新的即可。 之后接着点击download,下载OpenOCD,同样下载最新的。 这个网站上提供的windows-build-tool版本太老,无法使用,建议到http://gnuarmeclipse.github.io/windows-build-tools/下载最新的windows-build-tools。 4.下载eclipse GNU ARM plug-in 在https://sourceforge.net/projects/gnuarmeclipse/上下载最新的即可。 5.下载Zadig

Java基础语法

爷,独闯天下 提交于 2020-11-18 02:54:27
Java基础语法 Java语法的组成 1、关键字 关键字的定义和特点 定义:被Java语言赋予了特殊含义的单词 特点:关键字中所有字母都为小写 注意事项: 1) true、false、null 不是关键字!是字面量。 2) main 不是关键字!是一个特殊单词,可以被 JVM 识别,主函数是固定格式,作为程序的入口 2、标识符 :给类、方法、变量起的名字。 定义合法标识符规则: 1) 必须以字母或下划线或 $ 符号开始,其余字符可以是字母、数字、$ 符号和下划线。 2) 只能包含两个特殊字符,即下划线 _ 和美元符号 $ 。不允许有任何其他特殊字符。 3) 数字不可以开头。 4) 不可以使用Java中的关键字。 5) Java中严格区分大小写。 6) 标识符不能包含空格。 * 使用驼峰命名法,为了提高阅读性,见名知意。Java中的名称规范:[参照:阿里巴巴Java开发手册.pdf] 常用的命令规范: 1) 包名(package):多单词组成时所有字母都小写。xxxyyyzzz 2) 类名接口名:多单词组成时,所有单词的首字母大写。XxxYyyZzz 3) 变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。xxxYyyZzz 4) 常量名:所有字母都大写。多单词时每个单词用下划线连接。 XXX_YYY_ZZZ 3、注释

Google Play应用上架流程 超详细!

纵然是瞬间 提交于 2020-11-18 02:14:50
目录 前言 获取一个开发者账号 应用创建 应用发布 注意 1. 应用签名 2. 隐私权政策 前言 柠檬爱玩小游戏的小编喜欢玩2048,迫于市面上的小游戏广告太多了😳,机智的小编就用cocos creator写了个小游戏,想要发布到线上给大家一起玩呀😁,开始放到github page,地址为 https://luohongxfb.github.io/2048/ (移动端打开),但是网不好可咋整啊~ 机智的小编打包成apk了,因为小编不想要倒腾买软著,又费时间的又费钱😂,小编就想到发布到google play啦 Cocos Creator打包到原生平台需要先配置原生开发环境,安装jdk,下载Android Studio并且下载需要的sdk和ndk,具体查看官方文档: https://docs.cocos.com/creator/manual/zh/publish/setup-native-development.html 。打包发布原生平台查看官方文档: https://docs.cocos.com/creator/manual/zh/publish/publish-native.html 前提:科学上网;一张Visa/Master卡,开通账号需要支付25美刀。 2048 Google play地址为: https://play.google.com/store/apps

Java安装后环境变量配置及验证

大城市里の小女人 提交于 2020-11-17 22:20:29
1、安装JDK开发环境 下载网站: http://www.oracle.com/ 开始安装JDK: 修改安装目录如下: 确定之后,单击“下一步”。 注:当提示安装JRE时,可以选择不要安装。 2、配置环境变量: 对于Java程序开发而言,主要会使用JDK的两个命令:javac.exe、java.exe。路径:C:\Java\jdk 1.7.0 _09\bin。但是这些命令由于不属于windows自己的命令,所以要想使用,就需要进行路径配置。 单击“计算机-属性-高级系统设置”,单击“环境变量”。在“系统变量”栏下单击“新建”,创建新的系统环境变量。 (1)新建->变量名" JAVA_HOME ",变量值" C:\Java\jdk1.8.0_05 "(即JDK的安装路径) (2)编辑->变量名" Path ",在原变量值的最后面加上“ ; %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin ” (3)新建->变量名“ CLASSPATH ”,变量值“ .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar ” 如: JAVA_HOME 环境变量的操作如下: 3、确认环境配置是否真确: 在控制台分别输入 java,javac,java -version 命令

Netty怎么切换三种I/O模式和源码解释

耗尽温柔 提交于 2020-11-17 05:55:06
参考文献:极客时间傅健老师的《Netty源码剖析与实战》Talk is cheap.show me the code! 三种I/O模式   BIO:Block I/O,即同步并阻塞的IO;BIO就是传统的java.io包下的代码实现   NIO:New IO(non-blocking IO):同步非阻塞的IO,jdk1.4及以上版本提供   AIO:Async IO: 异步非阻塞IO,jdk1.7 阻塞和非阻塞     阻塞: 没有数据传输过来时,读会阻塞直到有数据;缓冲区满时,写操作也会阻塞。   非阻塞: 非阻塞遇到这些情况都是直接返回。 同步和异步   同步:数据就绪后需要自己去读是同步。   异步:数据就绪后直接读好再回调给程序是异步。 Netty对三种IO的支持    首先Netty是都支持三种IO模式的,准确的来说是曾经都支持过,因为BIO的被Netty给过期了,AIO被Netty给删除了,具体原因这就不多赘述;知道BIO在Netty被称为OIO,NIO在多平台下都有对应的支持,有人会问为啥有common的支持了还有Linux等其他的意义吗,这好比全栈和后端前端之分一样,一个通用一个专用的区别。 Netty切换IO模式    如上图所示,对应的实现类都差不多,甚至可以看出都是头不一样,如果NIO的通用是NioEventLoopGroup