java基础
文章平均质量分 52
qq_38089964
这个作者很懒,什么都没留下…
展开
-
通过反射改变对象私有变量的值
java中对类进行了严格的封装,对一些类私有的东西进行private包装,然而可以通过java反射获取修改该字段的值。实例:package cn.wzy.maintest; import cn.wzy.entity.User; import java.lang.reflect.Field; public class Main { public static void main(...原创 2018-06-25 15:53:08 · 1689 阅读 · 0 评论 -
前后端分离的项目,采用ssm后端接口权限校验
前后端分离的项目中,服务端对于每个请求都是一模一样的,对于每个用户的请求识别就需要用到一个统一的方式(jwt),然后在访问每个接口的时候先对这个jwt进行识别,查出这个用户的权限级别,检查是否拥有访问这个接口的权限,如果没有,那么将直接返回一个错误信息,表示权限不足,反之放过,继续往下执行。jwt就是一个包含用户信息的加密字符串:参考:JWT的生成及验证过程因为对于每个接口都需要进行权...原创 2018-11-28 15:41:10 · 3249 阅读 · 0 评论 -
JAVA NIO知识点
NIOjava Non_blocking IO的学习Knowledge pointsChannel Buffer Selectorchannel和buffer从原来的面向数据字节流的模式改为现在面向通道的模式,一个通道可以指向一个输出流或者输出流, 而与程序直接接触的对象是buffer,也就是通道是我们操作的目标,buffer则是我们操作所用到的工具, 在程序中只需要读写bu...原创 2018-12-04 09:22:14 · 140 阅读 · 0 评论 -
大数据量(10亿)的整数看是否有重复的
使用BitMap:用位存储每个数,比如1,2,3....,31,32这32个数那么可以用一个32位的int值state来存,1存到int的最低位bit位上,32则存到最高位的bit位上;比如检测5是否存在,那么看int值得第5位是否是1,也就是state>>(5-1) & 1,看是不是为1,如果为1,说明5存在,否则不存在,同时将5加进去。java实例代码:packa...原创 2018-12-19 14:49:31 · 1986 阅读 · 0 评论 -
多线程、锁相关知识
多线程、锁线程池线程池的好处1.资源利用率变高了2.提高了响应速度3.利于管理线程实现原理(线程复用、管理线程):线程复用原理:解释:线程池中有几个工作类:本身是一个runnable,内部还有一个线程,启动线程也就是启动了本身;worker的任务就是不断从队列里面拉去任务,然后执行任务的run方法,也就是说每一个worker就是串行执行任务。管理线程实现原理:在Threa...原创 2018-12-21 14:06:04 · 141 阅读 · 0 评论 -
生产者/消费者代码(使用notify和wait实现)
package cn.wzy.Lock;import java.util.Random;public class ConsumerAndProducer { static String[] food = new String[5]; static String take() throws InterruptedException { synchronized (food) {...原创 2018-12-18 17:08:13 · 489 阅读 · 0 评论 -
编写个人博客网站的一次经历
我是一直学习java后端开发的,于是想用所学知识写一个网站,记录自己的一些学习知识点或者生活点滴,注意是写,不是搭建,网上有很多的搭建网站教程,界面也多好看,但是为了巩固自己的知识,还是自己写比较好,也就是一个代码一个代码敲上去的。网站地址效果图:前端是做成了响应式,移动端:文章详情页:既然是web项目,那就采用前后端分离式开发,毕竟是当今主流,现在没谁还用jsp开发啦...原创 2019-01-17 15:52:07 · 5223 阅读 · 5 评论 -
JDK8中HashMap的resize()方法算法精髓
向HashMap的put添加元素过量的时候,hash结构会退化成链表。所以会有一个扩容机制来解决这种问题,扩容的步骤就是新建一个大一倍的数组,将旧的数组里面的所有节点重新计算放到新的数组里面。在jdk1.7中是重新计算节点新槽位的下标再插入,但是在1.8中是采用一种新的方式。关键源码:for (int j = 0; j < oldCap; ++j) { ...原创 2019-01-08 21:24:14 · 1400 阅读 · 1 评论 -
字节跳动笔试编程题-二阶魔方
链接:https://www.nowcoder.com/questionTerminal/73de370854f141a29749bb036ffd0298?orderByHotValue=1&page=1&onlyReference=false来源:牛客网二阶魔方又叫小魔方,是2*2*2的立方形结构。每一面都有4个块,共有24个块。每次操作可以将任意一面逆时针或者顺时针旋转9...原创 2019-02-20 20:34:15 · 2051 阅读 · 0 评论 -
Java NIO聊天室(简单图形界面)
基于NIO实现的聊天室demo地址:github-chat流程:服务端服务器创建ServerSocket接受所有机器的连接,并设置读事件当有读事件触发,遍历可读事件,广播到selector中的所有连接输出流中客户端新建读线程:注册可读事件服务器广播到该channel ===>输出数据说明服务端代码可以放到远端外网服务器上,修改Client的连接地址就好!效果...原创 2019-03-22 16:20:15 · 1917 阅读 · 1 评论 -
Detected both log4j-over-slf4j.jar AND bound slf4j-log4j12.jar冲突问题
首先确定肯定是pom的依赖包冲突了,需要删一个,重点就是再哪儿去删掉,一个项目很多的依赖项的,怎么知道哪两个冲突呢?这里介绍一种方法:用idea打开项目的,点击右边的mavenProjects,在dependencies里面就有很多的依赖项,而且是有层次的,那就找到含有我们的log4的依赖项。以我这个为例,就有spring-boot-starter-web和另一个依赖slf4j-l...原创 2019-04-16 15:41:11 · 4033 阅读 · 0 评论 -
关于Calendar的一些使用注意项
使用Calendar可以很方便得操作时间:输出周几,月份,年份:Calendar cal = Calendar.getInstance();cal.setTime(new Date());System.out.println(cal.get(Calendar.MONTH));//输出月份System.out.println(cal.get(Calendar.YEAR));//输出年...原创 2019-04-26 20:56:05 · 305 阅读 · 0 评论 -
Java实现LRU最近最少使用淘汰算法
一个HashMap存储缓存元素,同时元素间使用双向链表链接,链表保持使用次数从大到小排序,在get的时候更新链表,更新方法,从当前元素往前找到一个刚好比自己使用次数多的,将当前元素删除后再插入到这个元素的后面。比如 a使用3次,b,c,d,e都使用了2次,当前get(d)。那么d变为3,此时删除d,链表为a-3b-2 c-2 e-2,再讲d添加到a的后面,成为a-3 d-3 b-2 c-2 ...原创 2019-04-30 22:50:14 · 933 阅读 · 0 评论 -
spring-aop中对象MethodSignature的getParameterNames()返回结果为null
在项目中需要在aop中获取方法参数名和取值,方法名获取方法:public void verify(JoinPoint joinPoint) { //所有的参数和参数名 Object[] values = joinPoint.getArgs(); String[] names = ((MethodSignature) joinPoint.getS...原创 2019-06-16 21:59:41 · 20252 阅读 · 0 评论 -
jsonp、cookies实现单点登录(完全跨域)
单点登录实现的目标:在一个套系统的任意一个系统中登录之后,访问其他子系统能直接登录。在同一主域名下的所有系统可以共享主域名的cookies,所以再一台服务器中登录之后,将token信息存入到主域名下的cookies中,任意一个子系统访问会自动带上这个token信息,能达到单点登录的效果。这里主要实现完全跨域的情况下如何实现单点登录:也就是两个系统的域名完全分离,不能共用cookies信息,...原创 2019-06-25 13:21:18 · 5435 阅读 · 3 评论 -
JAVA使用字节流读取数据一定注意精确读取
使用InputStream读取文件数据,采用read(byte[])这个方法的时候,一般是如下方式:byte[] bytes = new byte[1024];File file = new File("G:\\NIO\\src\\cn\\wzy\\test.txt");InputStream inputStream = new FileInputStream(file);while ...原创 2018-11-30 08:42:41 · 1939 阅读 · 0 评论 -
java操作mongodb根据关键字分组统计个数
部分需求需要在mongodb的集合中按照关键字分组并统计出个数,如:一个集合里是所有公司的信息,然后在前端页面中需要展示公司的分布情况,这时就需要后端对公司所在的城市分组求和,然后给出每个城市中公司的数量。这个操作就需要mongodb的聚合函数了(aggregate);举个例子,集合中有公司的city关键字,我们需要对city分组,然后求和。聚合命令:db.getCollecti...原创 2018-11-10 14:23:38 · 6411 阅读 · 2 评论 -
基于前后端分离的验证码设计
现在的web项目基本都是前后端分离的,后台只需要整理数据传给前端进行渲染就行。验证码也是web中不可缺少的一部分,再以前的前后端不分离的场景中,一般是把图片以io流的方式传给前端,同时把内容存到session中,在前端请求验证的时候就根据request取出验证码的内容进行比对验证。但是前后端分离之后,尤其是跨域之后,每一次请求session将会对应不上,也就无法取出验证码的内容值进行验证啦。...原创 2018-06-25 16:15:30 · 8401 阅读 · 9 评论 -
java反射的相关方法示例
用java反射的动机就是在运行时获取类的相关信息,希望在扩网络的远程平台上创建和运行对象的能力。利用远端传来的.class字节文件,可以运行时生成相关的对象。1.生成相关对象示例(比如说本地就传来了一个UserFeild.class文件)Class clazz = Class.forName("cn.wzy.test.UserField");UserField userField = (User...原创 2018-06-25 16:25:33 · 147 阅读 · 0 评论 -
JWT的生成及验证过程
在前后端分离的场景中,前后台主要用jwt交互,比如说前端发一个提交信息的请求,后台必须知道这个提交者的信息吧(提交者id),但为了使传输更安全,jwt包含了需要的用户信息以加密的方式传输以达到这个目的。先看看jwt的定义,网上随处可见的:jwt全称Json Web Token,由三部分构成:头部(header)、载荷(payload, )、签证(signature).传输信息用到的就是载荷:就是存...原创 2018-06-25 16:28:52 · 10256 阅读 · 2 评论 -
学习Mybatis之缓存机制
Mybatis提供了缓存功能,在查询的时候会将结果存入缓存,当以后查询的时候会先从缓存里面去找,找不到再到数据库里面找,这样就提高了查询的效率。Mybatis对缓存分成了一二级缓存,效果是一样的,只是两个的作用域不同。1.一级缓存:mybatis的默认启动项,作用域为同一个SqlSession对象,当一个SqlSession对象多次查询数据库的时候会先从缓存里面找。但是有一个前提:SqlSessi...原创 2018-06-25 16:32:20 · 144 阅读 · 0 评论 -
MySql中count(*)和count(字段)的区别
在获取表的条数的时候一般是采用的是count(*)获取,而count(某一字段)在全满的表中是获取跟count(*)一样的结果,也就是所有的条数,但是当某一条或者多条记录的那个字段为null的时候,这时并不会算进总条数中。 例子:user_info中有15887条数据: 查询count(*)的时候是返回所有的总条数15887。 查询count(username)的时候...原创 2018-07-01 11:08:40 · 11007 阅读 · 2 评论 -
基于spring-mybatis的javaweb项目的dao层封装及自定义生成代码
在用mybatis进行javaweb项目开发中,少不了的就是写sql.xml文件,对于每个数据库表的操作,都要通过这些sql文件进行调用访问。后端开发中,每开发一个项目,都会有很多的表,也将会写对应的sql.xml文件,而且每个sql的基本操作都是那么一模一样的增删查改,所以为了方便开发,最近就写了一个代码程序来自动生成xml和dao层文件。这里有一个前提,就是要用mybatis-genera...原创 2018-07-16 19:21:22 · 1315 阅读 · 0 评论 -
ccf权限查询
问题描述 授权 (authorization) 是各类业务系统不可缺少的组成部分,系统用户通过授权机制获得系统中各个模块的操作权限。 本题中的授权机制是这样设计的:每位用户具有若干角色,每种角色具有若干权限。例如,用户 david 具有 manager 角色,manager 角色有 crm:2 权限,则用户 david 具有 crm:2 权限,也就是 crm 类权限的第 2 等级的权限。 具...原创 2018-07-11 12:19:27 · 228 阅读 · 0 评论 -
201512-3ccf画图-java题解
试题编号: 201512-3 试题名称: 画图 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 用 ASCII 字符来画图是一件有趣的事情,并形成了一门被称为 ASCII Art 的艺术。例如,下图是用 ASCII 字符画出来的 CSPRO 字样。 ..____.____..____..____.....原创 2018-07-25 19:41:12 · 164 阅读 · 0 评论 -
java操作mongodb,泛型封装增删查改、条件查询等操作
本文实现一个通用泛型封装实现类,需要给定一个集合对象,类似mysql中与java对应的表;思想就是把给定的对象解析出所有非空字段,保存到一个BasicDBObject中,这里一定要保证java对象与mongodb中的文档字段名字一样,因为代码为了实现通用,是默认以java对象的字段为BasicDBObject的查询字段。核心代码1:这是将java对象转换为查询条件。/** * ...原创 2018-07-29 15:31:46 · 4700 阅读 · 1 评论 -
使用websocket实现群聊(多个群)
最近一个项目中需要用到一个用户实时聊天需求:需要很多用户(在不同的房间)进行实时聊天,也就是一个简单的聊天室,这里用的是websocket实现。这里需要对每一个连接都指定两个参数:用户的userId和所加入的房间id(roomId);@ServerEndpoint("/community/{ro_user}")使用{ro_user}来绑定请求参数,不同的用户连接的时候就把参数加入到连接的后...原创 2018-08-09 20:08:39 · 15053 阅读 · 15 评论 -
ccf公共钥匙盒
试题编号: 201709-2 试题名称: 公共钥匙盒 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家。每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中。 钥匙...原创 2018-07-28 12:11:32 · 140 阅读 · 0 评论 -
通过自定义注解和java反射实现Spring-DI依赖注入
依赖注入的原理就是简单说就是从头往下递归生成依赖对象的,然后对引用字段赋值最后返回。这里实现通过变量类型来生成相应的对象。模拟一个用户的注册业务,首先是controller层调用service层,然后调用dao层代码实现保存用户。文件结构:UserControllerpackage cn.wzy.controller;import cn.wzy.DI.Inject;...原创 2018-08-03 15:08:06 · 2810 阅读 · 1 评论 -
对java中String的存储以及new String()的理解
创建String很特别:有两种String s = "abc"; String s = new String("abc");字符串的存储也是很特别的,存储分两种:第一种的创建方式是在编译的时候把“abc”存到字符串常量池(这个涉及到jvm的内存模型),可以看成一个特殊的堆内存;第二种创建方式会在运行期间生成一个String对象,这时候是把它存到堆内存,像其他普通对象的创建一样。就是因为...原创 2018-09-09 17:21:24 · 312 阅读 · 0 评论 -
java反射的getDeclaredFields和getFields
java反射中,获取字段属性有两种方法,getDeclaredFields和getFields。下面通过例子展示不同之处:Person类:package cn.wzy.FieldAndMethod;/** * @author wzy 不短不长八字刚好. * @since 2018/9/14 9:39 */public class Person { private St...原创 2018-09-14 10:17:17 · 1028 阅读 · 0 评论 -
参数校验插件
参数校验工具包工具说明:参数校验插件,注解式的标记参数的限制(为空、参数长度、取值范围),可以代替很多冗杂的if判断,比如:public void hello(String host, User user) { if (host == null || host.length() == 0) { throw new IllegalArgumentException("host can'...原创 2019-08-13 23:50:56 · 322 阅读 · 0 评论