
Java
平凡的威哥
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
乐观锁&悲观锁&AQS
本章威哥想分享一下乐观锁&悲观锁&AQS。锁的模式主要分:共享 (S) 用于不更改或不更新数据的操作(只读操作),如 SELECT 语句。更新 (U) 用于可更新的资源中。防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生常见形式的死锁。排它 (X) 用于数据修改操作,例如 INSERT、UPDATE 或 DELETE。确保不会同时同一资源进行多重更新。意向锁 用于建立锁的层次结构。意向锁的类型为:意向共享 (IS)、意向排它 (IX) 以及与意向排它共享 (SI原创 2021-09-12 10:28:48 · 1125 阅读 · 0 评论 -
JVM内存模型
威哥有2个月没有写博客了,动手写写JVM内存模型,也当做是自己成长的笔记。JVM:Java Virtual Machine,即Java虚拟机,用于运行Java程序编译后的字节码文件。java运行环境的一部分,是一个虚构出来的计算机,它是通过在实际的计算机上仿真模拟各种计算机功能来实现的。即一次编写,到处运行。当我们写java代码时,实际上是写.java文件,之后通过编译器编译威.class文件,然后通过ClassLoader(类加载器)把类信息加载到JVM中。最后JVM再调用操作系统,这样就实行了跨原创 2020-07-10 09:19:23 · 347 阅读 · 0 评论 -
开启你的第一行Spring Cloud代码
进入途虎后, 威哥基本没怎么写过博客了。今天打算继续开启博客历程。本篇威哥打算分享如何搭建Spring Cloud框架,威哥自己也是在学习的过程中。好了,跟随威哥一起开启你的第一行Spring Cloud代码。1、首先打开你的IDEA。创建一个Maven项目:william-spring-project。按照威哥下面截图来操作。注意,上面Maven的配置请换成自己...原创 2020-04-13 09:25:03 · 469 阅读 · 0 评论 -
IDEA 选择Spring Initializr 报错:https://start.spring.io
威哥在途虎中午休息时打算搭建下Spring Cloud框架,发现出了些问题:难受,网上找了答案,如下:打开Settings找到HTTP Proxy选中Auto-detect proxy settings勾选Automatic proxy configuration URL 输入 https://start.spring.io 。可是还是不行!!!愤怒!于是威哥不用这个...原创 2020-04-03 12:39:17 · 1046 阅读 · 0 评论 -
ELK之简单理解
ELK是Elasticsearch、Logstash、Kibana的简称(在狭义上:日志分析架构技术栈)。Elasticsearch:是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。也可理解为实时全文搜索和分析引擎。提供搜集、分析、存储数据三大功能。Logstash:是ELK的中央数据流引擎,用来搜集、分析、过滤日志的工具。用于从不同目标(文件/数据存储...原创 2020-03-16 19:34:31 · 502 阅读 · 0 评论 -
jdk、jar、jvm 区别(附加Java7条基础知识)
1.java环境如何搭建,jdk和jre有什么区别答题:Java环境如何搭建:1.安装ideaIU;2.安装&配置JDK;3.安装&配置tomcat;4.中间涉及一些环境变量设置,自行百度。Jdk:全称:Java Development Kit,java开发工具包,java语言编写的程序所需的开发工具包,JDK包含了JRE,同时还包括java源码的...原创 2020-03-06 12:54:06 · 2136 阅读 · 0 评论 -
判断字符串是否数字、英文字母、汉字
威哥今天好忙,不废话了,直接代码吧,大家一起参考参考。 /** * 判断字符串是否为纯数字 * Author:William(徐威) * Create Time:2018-12-05 * * @param str * @return */ public static Boolean isNumber(Strin...原创 2018-12-05 18:25:47 · 2972 阅读 · 0 评论 -
代码设置标签背景图片:setBackground & 代码取色getColor
Android后台如何设置setBackground,之前有setbackgrounddrawable,参考代码:layout.setBackgroundDrawable(getResources().getDrawable(R.drawable.img_wstat_tstorm));但是该语法已经过时。可以使用下面方法替换实现:1.setBackground;2.setBac...原创 2018-11-20 18:59:58 · 9486 阅读 · 0 评论 -
Android存储数据5种方式&SharedPreferences存储泛型T数据
本文是威哥总结了Android存储数据存储方式和大家分享,同时重点是介绍威哥自行封装的SharedPreferences存储泛型T数据。Android存储数据5种方式:1 、文件存储数据; 2 、SQLite数据库存储数据;3、 使用SharedPreferences存储数据;4 、使用ContentProvider存储数据;5 、网络存储数据。1)文件存储...原创 2018-11-07 14:19:10 · 1115 阅读 · 0 评论 -
android 点击空白区域键盘消失&加载gif图片
威哥开发手机Pda系统,发现输入完用户名后,发现秘密文本框被软键盘阻挡,非常影响用户使用,如是,威哥想用户在完成用户名输入之后,手指点击空白处,自动消失软键盘,方便用户手指直接定位到密码框。威哥遇到的效果图如下:威哥希望输入完用户名,手指轻轻触碰下空白处自动收缩起软键盘。需要2步操作。1.封装类:/** * 窗体页面帮助类 * Author:William(徐威)...原创 2018-11-09 10:34:28 · 682 阅读 · 0 评论 -
实现基于PopupWindow的数字软键盘
威哥工作中,需要再EditText文本框下展示数字软键盘,用于输入数字。效果图如下: 威哥从来都是一个直来直去的人,直接上代码实现,大家借鉴借鉴,自行修改。1.xml布局popup_number.xml:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://sch...原创 2018-10-23 11:18:02 · 483 阅读 · 0 评论 -
Java验证手机号
威哥不废话,直接上代码:1.判断方法:/** * 判断是否手机号 * Author:William(徐威) * Create Time:2018-10-05 * @param phone * @return */public static boolean isMobilePhone(String phone) { boolean flag=true; Str...原创 2018-10-08 20:18:01 · 2419 阅读 · 0 评论 -
事物隔离级别
事务的几大特性: 原子性(Atomicity ); 一致性( Consistency ); 隔离性或独立性( Isolation); 持久性(Durabilily)。 简称就是ACID。本文主要介绍隔离性的实现有哪些级别,和这些级别的具体讲解。未授权读取也称为读未提交(Read Uncommitted):允许脏读取,但不允许更新丢失。如果一个事务已经...原创 2018-09-27 12:49:26 · 224 阅读 · 0 评论 -
自定义AlertDialog消息提示框
自定义AlertDialog消息提示框,大家根据我的代码自行扩展。下图是威哥做的demo消息提示效果图:威哥不喜欢废话,直接上代码。1、消息提示java类:package com.msh.mshselfweighing.utils;import android.app.AlertDialog;import android.content.Context;import an...原创 2018-09-13 19:43:09 · 934 阅读 · 0 评论 -
AppCompatDialogFragment自定义模态弹框
很多时候系统自带的AlertDialog并不能满足我们模态弹框的需求,我们的app具体业务可能需要定制化的模态弹框,这个时候我们可以通过继承AppCompatDialogFragment来定制化开发我们需要的模态弹框。现在大家看看威哥在威哥开发的《妙生活自助称重》App上的继承自AppCompatDialogFrament的定制化弹框效果图:童鞋们,怎么样?威哥做出来的效果还不错吧。...原创 2018-09-13 17:11:22 · 4931 阅读 · 0 评论 -
AlertDialog、Dialog、AppCompatDialogFragment自定义弹框点击空白处自动关闭
AlertDialog、Dialog、AppCompatDialogFragment自定义弹框点击空白处自动关闭:方法一:setCanceledOnTouchOutside(false):调用这个方法时,按对话框以外的地方不起作用。按返回键还起作用。setCanceledOnTouchOutside(true):点击灰色空白处关闭弹框。方法二:setCanceleable(fa...原创 2018-09-13 16:50:52 · 3423 阅读 · 0 评论 -
Android Studio 如何查看Sqlite数据文件
威哥本次的门店妙管家收货项目,需要考虑sqlite实现收货数据本地持久化,调试过程,读取数据出了些意外,威哥就考虑想直接查看下sqlite持久化的数据库文件,中间遇到些波折,想着大家可能也会遇到类似问题,就一起分享下。1、首先我们需要再Android Studio 上面sqlite数据库文件在哪里?如何将导出? i)可以先打断点调试,找到sqlite数据库文件地址,之后有目的的去查找;...原创 2018-12-19 14:27:42 · 25464 阅读 · 2 评论 -
Android数据持久化-Sqlite篇
威哥在本期妙管家项目中需要实现收货数据本地化存储,防止app意外崩溃,再次打开app时还能继续上次的收货数据,接着收货,比喻门店蔬菜100多个品类,正好收到99个Sku,各自原先导致app崩溃,或者不小心退出了app,总不能再重头开始收货。故威哥设计将收货实时存储在本地,之前使用的SharedPreferences不能存储大量数据,因为威哥的收货信息比较多,一个品类收货就有百来条数据信息需要存...原创 2018-12-19 17:59:52 · 422 阅读 · 0 评论 -
IDEA设置全局编码格式为utf-8
相信很多刚刚使用IDEA开发Java的同学很郁闷,新建的Jsp页面不是utf-8格式的,需要单独页面自己去添加编码格式。现在威哥教大家怎么设置,直接参照威哥截图操作:1.打开settings操作配置:2.开始配置:一定要按照威哥截图的配置,特别是最后红色方框框起来的部分。3.现在可以新建一个Jsp文件看看效果:...原创 2019-06-12 12:34:14 · 16073 阅读 · 3 评论 -
浅谈Servlet、Tomcat
威哥要开始Jsp之旅了,开始学习Java的web编程。在这里和大家一起简单理解下Jsp涉及到2个重要概念:Servlet、Tomcat。Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。狭义的Servlet是指Java语言...原创 2019-06-12 12:01:17 · 861 阅读 · 0 评论 -
Android布局:ConstraintLayout-约束布局
威哥更新了Android Studio 的IDE后,发现每次新建Activity时,默认创建的布局文件是下面这样的:<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/...原创 2019-04-08 15:07:04 · 966 阅读 · 0 评论 -
Android 让一个控件在另一个控件下方(layout布局属性)
如何让一个控件在另一个控件下面,直接操作下面代码:<LinearLayout android:id="@+id/ly_dialogPersonCode_Title" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginT...原创 2019-03-30 17:12:07 · 38382 阅读 · 1 评论 -
Android Gradle是什么?
威哥学习Java写了大半年的Android,今天打开项目,一直疑惑着项目里面这么多后缀.gradle,到底是干嘛的呢?汗颜啊!!!所有网上总结了下,和初学Android的同学一起分享下。首先我们的Android项目中会发现很多的后缀.gradle文件,如图: 现在威哥先介绍下这些.gradle是啥东东。Gradle官方定义:Gradle是一个基于Apache Ant和...原创 2019-03-25 10:46:31 · 19312 阅读 · 2 评论 -
Android Studio 升级之后项目报错:ERROR: Failed to open zip file
威哥最近升级Android Studio之后,发现项目崩溃了,什么都用不了,报下面该死的错误,可是威哥啥都没做啊?ERROR: Failed to open zip file.Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)Re-downl...原创 2019-03-02 10:39:37 · 1093 阅读 · 1 评论 -
Android Studio 更新最新IDE后SVN不显示
威哥把Android Studio更新最新的IDE之后,发现SVN图标没有了。威哥忙会了大半天,尝试了各自方法,终于解决了。下面直接上图和童靴们分享,虽说现在流行git了,不过威哥这边公司还没来得及迁移到Git,详细还是有好多同学在使用SVN。1.威哥更新完突然崩溃了,哥的大SVN哪去了?2.威哥找回了丢失的大SVN:按照威哥截图选中“Subversion”,美...原创 2019-03-01 18:02:16 · 1305 阅读 · 1 评论 -
Android Studio Sdk路径错误 找不到调试真机
威哥在项目开发时,因为团队各个Android Studio的SDK安装路径不一致,提交.iml文件重新定位指向的SDK位置不一致,但是在打开Android Studio时,会自动重新定位,弹出下面类似弹框:按照威哥的经验,这个时候点击“OK”确定即可自动更新本机SDK路径。但是有时候出了异常,不在弹出上面弹框,比喻你安装了sqlscout,这个破玩意安装需要购买正版验证码,而且一旦安装了该...原创 2019-02-02 15:21:41 · 2081 阅读 · 0 评论 -
获取Android系统版本号
威哥本次发布app更新时发现原来自己写到类里面的版本号时不顶用的,需要使用build.gradle里面的系统内嵌版本信息才能发布升级app。威哥这里和大家一起分享下,首先我们需要在build.gradle文件中配置每次升级的版本序号和版本显示名称,版本号必须大于上次发布的版本号。注意:系统内嵌版本序号为int类型。废话不多说,威哥直接上版本获取方法:/** * 系统帮助类...原创 2018-12-25 17:44:35 · 1328 阅读 · 0 评论 -
Android引入Java8 - lambda表达式使用
威哥发现java针对泛型List取值实在太麻烦,没有.Net方便。今天把Android Studio 做了升级,支持Android SDK 9.0,之后启用了java8.0。这之后发现世界变得好美好,java直接玩lambda表达式,和.net一样通畅。和大家一起分享一下。首先大家先升级Android Studio的IDE,升级到最新,把Android SDK 9.0的SDK也下载下来,当然,...原创 2018-12-10 18:17:13 · 1585 阅读 · 0 评论 -
Android Studio 开发功能快捷键简介
不啰嗦,直接大纲加截图介绍:1、在当前窗口查找文本【Ctrl+F】:注意上面的上下方向键可以向上和向下查找,也可以使用快捷键:F3 向下查找关键字出现位置;Shift+F3 向上一个关键字出现位置。2、在当前工程内查找文本【Ctrl+Shift+F】:在上面红框匹配查找3、查找类【Ctrl+N】:4、查找项目中的方法或变量【Ctrl+Shift+Alt+N】:...原创 2018-09-06 20:04:42 · 289 阅读 · 0 评论 -
EditText文本输入框使用完毕自动掩藏输入法
很多时候EditText文本输入框在输入信息完成操作之后后,我们希望能够自动收缩掩藏起虚拟键盘,以方便处理其他业务逻辑。比喻本文中EditText文本在输入商品编号完成商品检索之后,需要自动掩藏虚拟键盘,不要遮挡其他页面操作信息,当下次再检索商品信息时,再自动弹出虚拟键盘完成输入。看上图效果,晚上输入操作之后,自动掩藏了输入法,下次使用时再打开。关键代码如下:EditTe...原创 2018-08-30 15:06:31 · 901 阅读 · 0 评论 -
MagicIndicator设置指示器Title字体大小
MagicIndicator设置指示器Title字体大小:MagicIndicator magicIndicator = (MagicIndicator) findViewById(R.id.magic_Category);magicIndicator.setBackgroundColor(Color.parseColor("#d43d3d"));CommonNavigator comm...原创 2018-08-28 17:15:58 · 5078 阅读 · 3 评论 -
java System.arrayCopy使用
System.arrayCopy的源代码声明 :public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);参数说明:Object src : 原数组int srcPos : 从元数据的起始位置开始Object dest : 目标数组int destPos :...原创 2018-08-08 12:50:23 · 293 阅读 · 0 评论 -
java中String转byte 编码格式
在.Net中,字符串转换byte编码格式如下:StringBuilder str = new StringBuilder();str.Append("妙生活");var coding = "GB18030"; //GBK,UTF-8byte[] bSmall = Encoding.GetEncoding(coding).GetBytes(str.ToString());在Ja...原创 2018-08-08 11:41:51 · 11008 阅读 · 1 评论 -
android返回首页
android返回首页有2种模式。一种是层层返回,一种是直接返回首页同时强转关闭当前页和首页外的其他页面资源。1.层层返回:在除首页外的每一个页面重写onActivityResult方法:/** * 页面退出回调 * Author:William(徐威) * Create Time:2018-07-31 * * @param requestCode * @param re...原创 2018-08-02 20:45:54 · 14560 阅读 · 0 评论 -
获取商米本机SN码
如果有对接商米机型的同学可以参考,在Android环境下获取商米机型的SN码,参考如下代码:1.首先在AndroidManifest.xml中添加如下权限: <uses-permission android:name="android.permission.READ_PHONE_STATE" />2.在需要的地方用以下代码获取商米SN号:try { Cla...原创 2018-08-01 17:07:44 · 4838 阅读 · 0 评论 -
Android Studio 引入arr包
aar包是Android Studio下打包android工程中src、res、lib后生成的aar文件,aar包导入其他android studio 工程后,其他工程可以方便引用源码和资源文件。Android Studio 如果需要引入arr资源包,参照。1、将AAR拷贝到app的libs目录下;2、修改app目录下的build.gradle:android同级增加代码:re...原创 2018-08-01 14:57:14 · 1968 阅读 · 0 评论 -
Java时间Date与字符串String转换
Java开发中经常涉及到时间Date与字符串String之间的相互转换,如何转换呢?主要是通过SimpleDateFormat类来操作的。 下面代码说明:1.日期转字符串格式化: Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); System.out.pr...原创 2018-07-28 10:44:17 · 2612 阅读 · 0 评论 -
Java BigDecimal类型的 加减乘除运算
Java BigDecimal类型的 加减乘除运算不能像C#一样简单,需要调用方法:加法:add减法:subtract乘法:multiply除法:divide 可参考下面代码:BigDecimal bignum1 = new BigDecimal("10"); BigDecimal bignum2 = new BigDecimal("5"); BigDeci...原创 2018-07-27 20:05:40 · 349506 阅读 · 2 评论 -
Java获取时间戳方法比较
Java获取当前时间戳有3种方法://方法 ASystem.currentTimeMillis();//方法 BCalendar.getInstance().getTimeInMillis();//方法 Cnew Date().getTime();其中效率从高到低排序:A > C >B,尝试些一个1000W次的循环,发现耗时如下:A:187 B:7032 ...原创 2018-07-27 19:42:15 · 2171 阅读 · 0 评论 -
android studio 打包apk发布
开发完Android项目,需要将项目打包成apk安装文件,才能在机器上安装和到应用市场发布。android studio 打包apk发布,打包步骤参照下面:1、点击Build->Generate,创建签名文件(如已经存在,直接选中):2、选择签名文件,如果没有生成过keystore,会弹出下面弹框 ,点击Create new,新建keystore:3、填写签名参数...原创 2018-08-09 12:57:16 · 992 阅读 · 0 评论