Java专栏
swordsmanye.
stay hungry , stay foolish
展开
-
简单聊下java反射机制
JAVA反射机制是在运行状态中, 对于任意一个类都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。光这样子说可能有点抽象, 我们举个例子来说明一下.首先我们创建一个Robot类package com.daohewang.javabasic.reflect;public class Robot { private String name; public void sayHi(Stri原创 2020-05-14 22:23:18 · 366 阅读 · 0 评论 -
深入 Spring Boot :怎样排查 java.lang.ArrayStoreException
深入 Spring Boot :怎样排查 java.lang.ArrayStoreExceptionhengyunabc.github.io/spring-boot-ArrayStoreException/java.lang.ArrayStoreException 分析这个demo来说明怎样排查一个spring boot 1应用升级到spring boot 2时可能出现的java.lang.ArrayStoreException。demo地址:https://github.com/hengy转载 2020-05-10 15:32:28 · 531 阅读 · 0 评论 -
高效学习开源项目的五大步骤!
高效学习开源项目的五大步骤!得益于开源运动的蓬勃发展,众多技术顶尖的公司、团队或者个人通过开源的方式向技术社区贡献了许多优秀的开源项目,一方面大大促进了整体技术的发展,另一方面大大减轻了中小公司和团队在技术方面的投入压力,让团队能够更加聚焦于业务。开源项目对团队和业务有很大好处,但对于技术人员来说,如果只是简单的采取“拿来主义”,那就变成一个陷阱:看似很快的用开源项目实现了需求,但自己的技术水平并没有什么提升;甚至可能出现看起来用了很多开源项目,知道很多项目名称,但技术水平止步不前的窘境。因此,对于开转载 2020-05-10 15:34:07 · 516 阅读 · 0 评论 -
从权限控制到shiro框架的应用
权限管理基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。权限管理包括用户身份认证和授权两部分,简称认证授权。对于需要访问控制的资源用户首先经过身份认证,认证通过后用户具有该资源的访问权限方可访问。用户身份认证身份认证,就是判断一个用户是否为合法用户的处理过程。...转载 2020-04-26 00:03:06 · 361 阅读 · 0 评论 -
Shiro中Relam的概念
在 Shiro 中存在 Realm 这么个概念, Realm 这个单词翻译为 域,其实是非常难以理解的。域 是什么鬼?和权限有什么毛关系? 这个单词Shiro的作者用的非常不好,让人很难理解。那么 Realm 在 Shiro里到底扮演什么角色呢?当应用程序向 Shiro 提供了 账号和密码之后, Shiro 就会问 Realm 这个账号密码是否对, 如果对的话,其所对应的用户拥有哪些角色,哪...原创 2020-04-21 15:20:58 · 839 阅读 · 0 评论 -
Servlet 与 Filter 执行原理
Servlet 的两个 Map当请求到达后,web 容器是如何查找 Servlet 的呢?其底层的执行原理是什么呢?当 Servlet 实例被创建好后,会将该 Servlet 实例的引用存放到一个 Map 集合中。该 Map集合的 key 为 URI,而 value 则为 Servlet 实例的引用,即 Map<String, Servlet>。当 Web 容器从用户请求中分离出 ...原创 2020-03-02 12:57:57 · 483 阅读 · 0 评论 -
MySql查询语法实现细节
MySql查询语法揭秘作为一名后端开发人员, 数据库可谓是与你如影随形, 但是天天和数据库打交道的你真的了解数据库么, 你写的每一条查询语句内部是怎么工作的你有没有了解过呢, 或许大多数的人只是停留在会用的阶段, 并不了解其实现细节. 如果SQL查询语句的实现细节不了解的话, 那么优化也无从说起, 所以下面就聊聊sql的查询细节.1. Mysql查询语法书写顺序SELECTFROMLE...原创 2020-02-26 19:48:53 · 320 阅读 · 0 评论 -
什么是覆盖索引?如何利用覆盖索引进行SQL语句优化?
如果你不知道什么是覆盖索引,那么SQL性能优化便无从谈起!什么是覆盖索引?如何利用索引进行SQL语句优化?表结构150多万的数据,这么一个简单的语句:慢查询日志里居然很多用了1秒的,Explain的结果是:从Explain的结果可以看出,查询已经使用了索引,但为什么还这么慢?分析:首先,该语句ORDER BY 使用了Using filesort文件排序,查询效率低;其次,查询字段...转载 2020-02-25 14:38:43 · 3705 阅读 · 1 评论 -
mybatis 插入操作主键值获取
当前表支持主键自动增长在JDBC技术中,可以通过Statement接口中getGeneratedKeys()方法获得本次插入后得到自动增长主键值.MyBatis框架也采用这个技术.因此MyBatis在插入完毕后也可以获得本次插入数据id.做法如下<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC ...原创 2020-02-07 10:23:52 · 267 阅读 · 0 评论 -
单例设计模式 - 懒汉式和饿汉式
单例设计模式1. 作用: 在应用程序中保证最多只能有一个实例.2. 好处:提升运行效率.实现数据共享. 案例:application 对象 - tomcat启动时就创建,通过getServletContext()取出来懒汉式对象只有被调用时才去创建.示例代码 public class SingleTon { // 由于对象需要被静态方法调用,把方...原创 2020-01-26 18:52:32 · 189 阅读 · 0 评论 -
数字验证码自动生成 - Java
效果图验证码:<input type="text" size="1" name="code"/><img src="VerifyServlet" width="80" height="40"/><a href="">看不清</a><br/>VerifyServlet.javapackage com.daohewang.servl...原创 2020-01-07 23:46:33 · 333 阅读 · 0 评论 -
mybatis实现简单分页功能 - 完整代码版
实现效果图 :项目结构搭建代码实现1.数据库搭建CREATE DATABASE teachsysUSE teachsysCREATE TABLE teacher(id INT(10) PRIMARY KEY AUTO_INCREMENT,tname VARCHAR(20));INSERT INTO teacher VALUES(DEFAULT, 1);INSERT IN...原创 2020-01-05 10:22:12 · 883 阅读 · 0 评论 -
Java分页原理简介
Java分页原理分页目的数据方面 :减少带宽和网络资源降低浏览器渲染负荷用户体验方面更好的展示和查询信息网站常见分页样式采用传统的分页方式(后台常用),可以明确的获取数据信息,如有多少条数据分多少页显示等采用下拉式的分页方式(社交网络常用),一般无法获取明确的数据数量相关的信息但是在分页操作以后,仍然可以看到之前査询的数据常见的分页实现方式使用List接口...原创 2019-12-31 16:44:00 · 931 阅读 · 1 评论 -
Hibernate入门经典
Hibernate概述1.1 什么是Hibernatehibernate就是一个持久层的ORM框架,对JDBC做了封装,说的简单一点就是和Dao的功能类似,用来简化操作数据库的一个框架。1.2 什么是ORMORM:(Object Relational Mapping)对象关系映射,将Java中一个对象与数据库中的表建立映射关系,从而操作对象就可以操作数据库中的表。Hibernate入门...原创 2019-12-31 08:49:27 · 387 阅读 · 0 评论 -
教你如何配置Log4j.properties
一、 Log4j简介Log4j有三个主要的组件:Loggers(记录器):日志类别和级别;Appenders (输出源):日志要输出的地方;Layouts(布局):日志以何种形式输出1.1 LoggersLoggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。这五个级别是有顺序的,DEBUG < INFO < WARN <...转载 2019-12-30 15:28:06 · 985 阅读 · 0 评论 -
SecureCRT中文软码问题解决 - 史上最简单有效
SecureCRT中文软码问题相信是很多初学Linux同学都会遇到的问题, 第一时间肯定是头都要大了, 博主也是如此, 网上有很多的解决方案, 但是也是仁者见仁, 智者见智, 有些人用了适用, 相反有些人却又没用, 那叫一个烦躁. 是的, 我就是那个最不幸的人, 全网所有的方法我都尝试了一遍, 没有一个可行的. 但是该死的linux还是得学呀, 要想方便还不得下点苦工, 于是我煞费苦心, 苦心...原创 2019-11-23 11:52:20 · 361 阅读 · 0 评论 -
Servlet 中文乱码原理及解决方法
Generosity is its own form of power.别低估了慷慨的力量。——《纸牌屋》乱码原理:在整个Servlet访问过程中牵扯到 浏览器,Tomcat,Java程序三者浏览器默认编码方式:gbk,Tomcat默认编码:iso-8859-1 ,java代码中的编码一般常用utf-8造成乱码问题的原因只有一个:即客户端与服务端的字符编码不一...原创 2019-10-27 23:15:19 · 1219 阅读 · 0 评论 -
servlet 重定向和请求转发区别
重定向Redirect的原理/*没有重定向时的跳转方法 *response.setStatus(302); *response.setHeader("Location", "login_success.html"); *///重定向写法: 重新定位方向 参数即跳转的位置response.sendRedirect("login_success.html");处理流程接受客户端的...原创 2019-10-27 22:15:06 · 204 阅读 · 0 评论 -
JDBC初探
If we did all the things we are capable of doing, we would literally astound ourselves.如果把我们能做到的都做了,最终连我们自己都会被吓到。##1. JDBC基础操作JAVA Database Connectivity java数据库连接为什么会出现JDBCSUN公司提供的一种数据库...原创 2019-10-18 17:33:14 · 124 阅读 · 0 评论 -
idea 配置Junit(史上最简单)
The difference between who you are and who you want to be is what you do.你是什么样的人和你想成为什么样的之间的差距就是,你做了什么。1. 首先C在你工程目录下建一个test文件夹2. 在test文件夹下创建一个测试类, 跟下面一样的格式. 这里要注意的是,我们创建的是测试类,所有不需要引入main函数, 但是...原创 2019-10-17 13:40:15 · 4036 阅读 · 0 评论 -
Intellij IDEA 查找接口实现类的快捷键
Intellij IDEA 查找接口实现类的快捷键查找接口的实现类:ctrl + alt + b查看类或接口的继承关系:ctrl + n原创 2019-09-03 10:32:08 · 2090 阅读 · 0 评论 -
TCP之网络文件上传
客户端实现package internet_coding;import java.io.*;import java.net.Socket;import java.util.Scanner;/** * @author swordsmanye */public class TCP_Client { public static void main(String[] args)...原创 2019-09-03 09:25:12 · 202 阅读 · 0 评论 -
JavaGUI之UDP网络聊天室实现
package internet_coding;import java.awt.*;import java.awt.event.*;import java.io.*;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.text.Si...原创 2019-09-01 19:46:10 · 694 阅读 · 0 评论 -
深入理解泛型原理
参考文章:java 泛型详解什么是泛型?为什么要使用泛型?泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。泛型的本质是为了参数化类型(在不创建新的类型...原创 2019-07-16 16:07:50 · 294 阅读 · 0 评论 -
自建反射修改属性方法:setProperty
方法介绍可将属性名为propertyName的属性值设置为valueclass Tool {/**des: 此方法可将属性名为propertyName的属性值设置为value * * @param obj : 相当于学生对象 * @param propertyName : 相当于学生对象的name或者age属性 * @param value :要修...原创 2019-09-04 11:55:30 · 565 阅读 · 1 评论 -
埃拉托斯特尼筛法(Java实现)
维基百科:埃拉托斯特尼筛法 简称埃氏筛,也称素数筛。这是一种简单且历史悠久的筛法,用来找出一定范围内所有的素数。所使用的原理是从2开始,将每个素数的各个倍数,标记成合数。一个素数的各个倍数,是一个差为此素数本身的等差数列。此为这个筛法和试除法不同的关键之处,后者是以素数来测试每个待测数能否被整除。埃拉托斯特尼筛法是列出所有小素数最有效的方法之一,其名字来自于古希腊数学家埃拉托斯特尼,并且被...原创 2019-09-14 18:55:27 · 3073 阅读 · 0 评论 -
GitHub以及StackOver flow访问速度慢解决方案
第一步: 找到windows系统内的Host文件,一般在 C:\Windows\System32\drivers\etc 目录下,右键获取管理员权限。第二步:在文件内添加以下代码即可192.30.253.112 github.com 185.199.111.153 assets-cdn.github.com 151.101.193.194 github.globa...原创 2019-09-15 15:12:33 · 7037 阅读 · 1 评论 -
andThen和compose区别(Java)?
在辨别andThen和compose区别之前我们先来看一段简单的代码class FunctionTest { public static void main(String[] args) { Function<Integer, Integer> f = x -> x + 1; Function<Integer, Integer> g = x -> ...原创 2019-09-15 16:46:20 · 1324 阅读 · 0 评论 -
List接口如何实例化?(Java)
List接口初始化错误写法List<String> supplierNames = new List<String>();supplierNames.add("sup1");supplierNames.add("sup2");supplierNames.add("sup3");System.out.println(supplierNames.get(1));...原创 2019-09-15 19:15:20 · 3378 阅读 · 0 评论 -
Lambda表达式之方法引用和构造器引用
Lambda表达式的含义Lambda省去面向对象的条条框框,格式由3个部分组成:一些参数一个箭头一段代码Lambda表达式的标准格式为:(参数类型 参数名称) -> { 代码语句 }格式说明:( ):接口中的抽象方法的参数列表,无参数则留空,有参数就写出参数;多个参数则用逗号分隔。-> :是新引入的语法格式,代表指向动作,传递的意思,把小括号内的参数传递给后...原创 2019-09-15 20:00:42 · 462 阅读 · 0 评论 -
面试常问:问题拆解
在面试时,我有一个重点考察项,贯穿于整个面试过程的始终,就是面试者对于所提问题的审题和分析能力,其中包含“问题内容”本身所需的业务知识,也包含“体现面试者逻辑性”的问题理解力。业务知识还可以通过实践学习,而问题理解力不是那么容易习得,体现了面试者的综合素养,我更在乎后者。对待“问题”的第一反应如何听到问题,是马上回答,还是先思考一下?大部分面试者第一反应都是马上作答,其中有的人是刻意保持...转载 2019-09-01 19:42:28 · 599 阅读 · 0 评论 -
面试求职大法
其实求职者有更多的面试机会,不但可以增加成功求职机会,还可以增加自己的信心,工资越叫越高还可以积累面试经验。很多优秀的求职者网上发了很多简历没有回应,以为自己不行没有竞争力,只好自动降价,实为可惜!其实在求职过程中做到以下几点可以助面试更为顺利:1)简历要与大公司沾边当人事经理搜索人才时,一般会以关键字“知名企业名称+职位名称”,比如消费品行业可能喜欢可口可乐及宝洁的人,人事经理会这样搜索...原创 2019-08-17 14:48:35 · 200 阅读 · 0 评论 -
一分钟教你理解什么是多线程
我们都知道,如果程序在没有跳转语句的前提下,都是按照程序的编写顺序由上至下依次执行的,那假如现在想让你设计一个程序,可以边打游戏边听歌,那么我们该怎么设计呢?如果你不知道多线程的概念的话,肯定是没有办法设计的,但是我们平常生活中,多线程无处不在,手机,电脑都有多线程的体现。因此,如果要解决上述问题,咱们得使用多进程或者多线程来解决.1. 并发与并行并发:指两个或多个事件在同一个时间段内发...原创 2019-07-25 14:27:25 · 3979 阅读 · 0 评论 -
List集合,Set接口,Collections完美解读
一. List集合我们掌握了Collection接口的使用后,再来看看Collection接口中的子类,他们都具备那些特性呢? 接下来,我们一起来分析Collection中的常用几个子类(java.util.List 集合、 java.util.Set 集合)。1.1. List接口介绍java.util.List 接口继承自Collection 接口,是单列集合的一个重要分支,习惯性地会...原创 2019-07-20 21:43:35 · 278 阅读 · 0 评论 -
你不能不学的Java异常机制
异常,就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响。那么在程序中,异常是什么样子的呢? 让我们一起来看看吧。1.1. 异常概念异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常...原创 2019-07-24 19:31:11 · 146 阅读 · 0 评论 -
java数组完全解析(干货满满)
1. 数组的定义和访问1.1 容器概述案例分析现在需要统计某公司员工的工资情况,例如计算平均工资、找到最高工资等。假设该公司有50名员工,假如我没有数组的话,程序首先需要声明50个变量来分别记住每位员工的工资,然后在进行操作,这样做会显得很麻烦,而且错误率也会很高。因此我们可以使用容器进行操作。将所有的数据全部存储到一个容器中,统一操作。容器概念容器:是将多个数据存储到一起,每个数据称...原创 2019-07-19 21:41:53 · 64601 阅读 · 20 评论 -
Java中取余(%)和取模(Math.floorMod)的区别
之前一直都认为取模和取余是一样的,甚至还怀疑设计语言的大神们不是脑子有问题么,为什么要整两个一样的东西,现在想想还是自己太 low了,竟然不能 get 到大神们的良苦用心。今天莫名其妙的用到了Java的取模方法,发现竟然和我之前的认知完全不一样,what。。fuck。。于是来这里记录我的天真无知。共勉。。。。。。。在解读为啥两者会有不同之前,先让我们看一组代码,结果导向总是好的。看看你是否能看...原创 2019-07-23 20:45:17 · 13895 阅读 · 7 评论 -
斗地主游戏(Java版)简单逻辑实现之洗牌,发牌
1. 规则介绍按照斗地主的规则,完成洗牌发牌的动作。具体规则:使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌,抢地主的人可以得到那最后的三张底牌。2. 逻辑分析1. 准备牌:将54张牌,存储到一个集合当中特殊牌:大鬼,小鬼其他52张牌:定义一个数组 / 集合,存储4种花色:♠,♥(红),♣,♦(红)定义一个数组 / 集合,存储13个序号...原创 2019-07-16 18:02:58 · 1593 阅读 · 0 评论 -
深入理解包装类
1. 包装类概述Java提供了两个类型系统,基本类型与引用类型 (包装类是一种引用类型,而基本数据类型是一种值类型),使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类。Java中每一种基本类型都会对应一个唯一的包装类,基本类型与其包装类都可以通过包装类中的静态或者成员方法进行转换。每种基本类型及其...原创 2019-07-15 12:11:06 · 611 阅读 · 0 评论 -
StringBuilder类解析
在解析StringBuilder类之前,我们先对String类做一个简单的分析。不过分析之前先想一个问题,为什么有好好的String类不用,要专用StringBuilder类呢?5分钟之后。。。。。。。。。。。。。。。。。。。。。。。。。。。1. String类简介1.1. String(字符串常量)概述String类在API中是这样描述:String 类代表字符串。Java 程序中的...原创 2019-07-15 11:12:18 · 495 阅读 · 0 评论