Java
文章平均质量分 94
Hwweic
没有时间观念的人永远是loser
展开
-
将二进制转为十进制--调优篇
二进制转为十进制前言二进制转十进制(一)二进制转十进制(二)十进制转二进制前言上一篇帖子中尝试性的写了一下将二进制转为十进制的代码,但总感觉效果不理想。后续又查阅了其它的资料,并发现了二者之间进行转换的奥妙:0xFF!二进制转十进制(一)代码展示 /** * 将十进制数值转为二进制 * ①正数存储的二进制原码 * ②负数存储的是二进制的补码。补码是负数的绝对值的反码再加1求得的。 * @param num 目标数值 * @return 数值对应的二原创 2021-04-07 15:48:45 · 361 阅读 · 0 评论 -
protobuf---三种序列化方式比较
protobuf入门之三种序列化方式比较前言测试环境常规序列化ObjectMapper序列化ProtocolBuffer序列化总结附录前言学习protobuf需要先知道为什么会有它的存在。前后端之间的协议传输从而产生了流量,在当下力图节省流量成为了趋势。如何使得协议体减小便成为了研发过程中应该去考虑的一个问题。想到以前学习时常说的一句话就是"万物皆对象",在协议这里也可以得到验证。协议的封装其实可以看做是一个对象,前端负责将传递的消息封装在对象中,后端接收后再按照对象的格式去解析。那么,这种“封装为对象原创 2021-03-31 13:39:57 · 1138 阅读 · 0 评论 -
BeanFactory向spring依赖注入的转变
想必已经对BeanFactory已经轻车熟路。这里我先演示下BeanFactory的演变过程:1.早期的三成思想中的解耦①早期三层思想中我们创建了servlet,service和dao三个目录。②servlet负责接收前端的请求③service负责业务逻辑的处理④dao负责与数据库对接并完成数据库的CURD后来我们发现用户需求会频繁发生改动,所以说service中的逻辑...原创 2020-03-19 23:53:33 · 383 阅读 · 0 评论 -
Mybatis的XxxMapper.xml中SQL语句内如何完成参数计算
这个需求是在完成分页的时候产生的。分页时候需要参数如下:①当前页:currentPage②每页数量:pageSize并通过上面两个参数完成分页-->limitpageSize*(currentPage-1),pageSize但是在mybatis的mapper.xml中又该如何书写呢?首先看下mapper接口: /** * 筛选指定国家的电影 ...原创 2019-12-20 21:46:34 · 3878 阅读 · 0 评论 -
Mybatis的XxxMapper.xml中模糊查询条件如何拼接
这里举一MySQL中模糊查询例子:select count(*) from `movie` where gids like concat('%',1,'%');上面指令用于查询movie表中gids字段带有1的行数在Mybatis中如何拼接这种模糊查询字符串呢?首先看下mapper接口中定义的方法: /** * 根据模糊条件查询电影数量 * @pa...原创 2019-12-20 21:37:59 · 2261 阅读 · 0 评论 -
Mybatis的XxxMapper.xml中能否配置重载方法
大家是否都知道如何区分方法的重载?具体以来与以下几点:①方法名相同,参数列表长度相同参数类型不同②方法名相同,参数列表长度不同符合上面几点的都可以被称之为方法重载!在接触到Mybatis后,发现XxxMapper.java的接口以及XxxMapper.xml中却不允许重载方法的配置了。期间遇到报错信息如下:java.lang.IllegalArgumentExcept...原创 2019-12-20 19:50:09 · 1554 阅读 · 0 评论 -
浮点数运算时精度损失的解决方案--BigDecimal
下面是处理浮点数运算的工具类,现在不是很全,后期会随着应用而完善import java.math.BigDecimal;import java.math.RoundingMode;/** * @author :hwweic * @date :Created in 2019/11/24 15:34 * @description : * * @version: 1.0 */p...原创 2019-11-24 16:44:48 · 545 阅读 · 0 评论 -
maven自定骨架创建流程
骨架就是现成的模板的意思,我们拿来直接可以使用,避免了在结构上花费大量时间,提高效率骨架的创建依据每个人的工作环境,以及编码习惯的不同而不同,这里只是举个例子描述下流程!1.创建骨架的前身ModuleFile->New->Module2.将父module指定为None3.定义groupId以及module名称:myarchetype4.设置modul...原创 2019-11-08 00:42:32 · 276 阅读 · 0 评论 -
MySQL的中文模糊查询武结果的解决办法
检查数据库驱动配置中是否设置了数据库的字符集<c3p0-config> <default-config> <!-- property标签,配置数据库连接四大信息 name属性,要配置什么,标签体,配置的实际内容 --> <property name="driverClass">...原创 2019-10-27 22:10:46 · 209 阅读 · 0 评论 -
Spring之IOC之sping-context实现立即加载
通过之前的学习使用BeanFactory通过延迟加载实现了全部对象的创建并存储到了容器map中今天学习SpringIOC的spring-context如何实现立即加载!预习:需要引入依赖:spring-context bean标签的解释: ①id:从容器中准确取出对象的唯一标识,接口类文件名(开头字母小写) ②class:所要创建对象的实现类全路径 ③scope:代表创建对...原创 2019-08-14 00:00:25 · 308 阅读 · 0 评论 -
Spring之IOC之BeanFactory实现延迟加载
***以下内容是假设你已经了解了springIOC***传统的三层模式中,各层间需要互相调用,比如Service层需要调用Dao层的方法既然需要调用方法,就需要先创建Dao层对应类的实例单就在Service层创建Dao层类实例这块就产生了程序的耦合.怎么才能解耦呢?之前的学习过程中,通过将接口与其对应的实现类配置在了bean.properties中,再通过BeanFactory...原创 2019-08-13 22:43:19 · 1432 阅读 · 0 评论 -
程序的耦合
一.什么是程序的耦合?耦合性(Coupling),也叫耦合度,是对模块间关联程度的度量。耦合的强弱取决于模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立性)。耦合性存在于各个领域,而非软件设计中独有的,但是我们只讨论软件工程中...原创 2019-08-13 21:04:28 · 3624 阅读 · 1 评论 -
MyBatis之手动映射之一对多关系
案例背景:数据库表中一个用户对应着多个订单信息根据一个用户ID只可以查询出多条订单记录我们需要查询出指定的用户信息并且信息中包含有对应的订单记录补充:同以往User的定义不同,User中需要封装List<Order>属性一.案例展示1.测试准备①数据库mysql一枚②database名为batistest且表名为user和order③项目...原创 2019-08-13 15:11:14 · 315 阅读 · 0 评论 -
MyBatis之手动映射之一对一关系
案例背景:数据库表中一个订单对应着一个用户信息根据一个订单ID只可以查询出一条用户记录我们需要查询出所有的订单信息并且信息中包含有对应的用户记录补充:同以往Order的定义不同,Order中需要封装User属性一.案例展示1.测试准备①数据库mysql一枚②database名为batistest且表名为user和order③项目工程2.代码展...原创 2019-08-13 14:36:29 · 202 阅读 · 0 评论 -
MyBatis之动态SQL
在XML配置文件中编写SQL语句时,有时会遇到多条件查询情况但有时,条件具体是什么又不明确,为了避免代码的冗余,这里就提出了动态SQL!本次重点:动态SQL中where的写法 动态SQL中foreach的写法 foreach中如何遍历集合list下面就以案例的形式演示!一.案例展示1.测试准备①mysql数据库一枚②database名为batistest且表名为u...原创 2019-08-13 13:43:52 · 184 阅读 · 0 评论 -
MySql之模拟C3P0解析c3p0-config.xml的过程
前面的学习我们了解到,想要使用C3P0必须加入c3p0-config.xml那么C3P0内部是如何运作来获取数据库连接信息的呢?其实,也是它是通过dom4j+xpath对xml文件进行了解析,从而获取到了想要的属性这也就明确了为什么c3p0-config.xml的名字不能被修改,而且里面的配置格式也不可能调整,因为都是程序内定的!下面通过案例来模拟模拟C3P0解析c3p0-conf...原创 2019-08-06 11:42:53 · 561 阅读 · 0 评论 -
MySql之QueryRunner
使用原生的JDBC进行开发,发现代码过于冗余为了简化开发apache commons组件诞生了一个新成员dbutils!dbutils的三个核心功能简介:QueryRunner中提供对sql语句操作的API ResultSetHandler接口,用于定义select操作后,怎样封装结果集 DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法一.QueryRunn...原创 2019-08-06 10:02:47 · 733 阅读 · 0 评论 -
MySql之C3P0连接池
之前的学习使用需要操作数据库时,就会去生成一个数据库连接对象这种方式效率很低.同数据库之间的连接是建立在TCP上的TCP就不用了讲了,三次握手本就很慢了,当你操作数据库时再去获取连接自然效率更低为此,连接池出现了(这里讲的是C3P0)!连接池技术的目的:解决建立数据库连接耗费资源和时间很多的问题,提高性能 !下面以案例演示下C3P0的操作流程.一.案例展示1.案例背景:...原创 2019-08-06 00:40:26 · 436 阅读 · 0 评论 -
MySql之Sql注入的产生与预防
相信大家对于SQL注入这种东西并不陌生!仍记得很久以前尝试利用SQL注入登录系统的时候.....什么是SQL注入呢?其实就是用户输入的内容作为SQL语句语法的一部分,从而改变程序内原有设定的SQL的真正意义下面就以案例的形式为大家演示SQL注入的过程:一.案例展示1.测试准备①MySql数据库一枚 ②database名为mysqlstudy,且表尾admin ...原创 2019-08-05 21:22:05 · 211 阅读 · 0 评论 -
MySql之原生JDBC衍生JDBCUtils
之前学习了原生JDBC的使用,但是发现设定数据库信息,获取数据库驱动以及连接对象这一块代码过于冗余故抽取出来作为工具类使用,衍生出JDBCUtils一.案例展示1.测试准备①MySql数据库一枚 ②database名为batistest一枚 ③项目工程2.代码展示:***pom.xml<?xml version="1.0" encoding="...原创 2019-08-05 18:44:21 · 181 阅读 · 0 评论 -
MySql之原生JDBC的使用
JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API 是Java访问数据库的标准规范 由一组用Java语言编写的接口和类组成 它需要连接驱动一.案例演示1.测试前准备①MySql数据库一枚 ②database名为batistest的一枚 ③项目工程:2.代码展示***pom.xm...原创 2019-08-05 18:05:00 · 350 阅读 · 0 评论 -
数据库的隔离级别
一.事务的基本特征原子性(atomicity) 一个事务必须视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚 对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性 一致性(consistency) 数据库总数从一个一致性的状态转换到另一个一致性的状态 一致性是对数据可见性的约束,保证在一个事务中的多次操作的数据中间状态对其...原创 2019-08-23 18:40:50 · 211 阅读 · 0 评论 -
Spring之IOC&DI的差异
学习Spring知识之前,A类中需要使用到B类的对象,我们会怎么办呢?当A类需要使用到B类的资源的话,会直接在A类中创建B类的对象学习Spring知识之后,A类中需要使用到B类的对象,我们会怎么办呢?当A类需要使用到B类的资源的话,IOC/DI容器会先去获得B类的实例(①)IOC/DI容器再将B类的实例注入到A类中(②)我们已经看到了容器存在的意义,就是先将程序内所有...原创 2019-08-15 00:08:58 · 180 阅读 · 0 评论 -
java中线程死锁的出现
之前参加工作时总是听说某某功能出现了死锁,经过简要的询问也算是认识到了死锁.关于"锁"的出现这里就不再赘述了,它的出现就是实现线程同步,维护数据的唯一性,使得多线程访问共享资源是顺序进行的那么死锁是什么呢?我的理解是:所有线程都在等待根本不可能被释放的锁资源,导致工作无法正常进行下面就来介绍下死锁出现的四个条件↓↓↓↓①互斥条件:即当资源被一个线程使用(占有)时,别的线程不...原创 2019-10-04 16:49:19 · 276 阅读 · 0 评论 -
java中阻塞队列的实现方式
学习阻塞队列之前需要掌握线程的wait(),notify()以及notifyAll()的相关知识!①wait()为什么要放置在while循环中,而不是使用if进行判断②notify()和notifyAll()有什么区别?为什么有时候认为该使用notify()的地方却使用了notifyAll()?上面这两个问题是我在学习多线程时产生的疑问,我相信也会是大多数人的疑问下面是相关介绍:...原创 2019-10-03 17:54:00 · 933 阅读 · 0 评论 -
线程同步问题
什么是线程安全?多个线程同时运行一段代码,每次运行结果同单线程运行结果一样,就是安全的什么是线程同步?线程并发访问同一个资源会出现安全性问题,所以需要使用线程同步有三种方式实现线程同步:①同步代码块②同步方法③Lock锁下面会依次介绍三种实现的具体方式!案例背景:火车站即将开启3个窗口售卖100张票,为了保证三个窗口售卖的票不重复,不会产生多卖票的情况,设计...原创 2019-10-03 13:19:17 · 172 阅读 · 0 评论 -
Thread类之join方法
最近在看面试题遇到一个问题描述如下:有线程 T1、T2 和 T3。你如何确保 T2 线程在 T1 之后执行,并且 T3 线程在 T2 之后执行?刚看到这个问题时我认为,想让T1->T2->T3依次执行,那就依次定义这样三个线程并按这个顺序启动就可以了嘛!后来想想是我天真了,其实题目的要求应该是"T2在T1结束后开始执行,T3在T2执行结束后开始执行"依据测试人员的思想,...原创 2019-10-02 22:10:49 · 273 阅读 · 0 评论 -
不使用第三方变量交换两个变量的值引发的思考
今天在学习算法时涉及到了不停的交换两个变量的值的操作,就在想有没有什么高大上的方式来实现交换呢?回想起以前茶语饭给给朋友出过这道问题,他们也真的给了我很多思路当时很是感慨,每个人的思想真的就是不一样,人家的思想偏偏就是你没有的,也是你值得学习的地方!今天要介绍的内容也都写在标题中了,有可能下面要讲的远不止你想像的.各大平台上也都有讲到这个知识,但我仍然想记录下自己的思路,重在思想!...原创 2019-08-27 02:58:02 · 299 阅读 · 0 评论 -
JWeb之Velocity模板渲染
之前学习过一种模板渲染技术是Thymleaf,今天讲解下另一种模板渲染技术Velocity!知识点预习:使用Properties封装Velocity的各种属性 VelocityEngine根据Properties封装属性实例化模板引擎对象 实例化VelocityContext并在其中封装渲染数据 VelocityEngine将上下文中的数据渲染至指定的模板中并将渲染后的页面数据写入S...原创 2019-08-23 12:09:54 · 419 阅读 · 0 评论 -
JWeb之FreeMaker模板渲染
前面学习了Thymleaf和Velocity模板渲染,今天接触第三种模板渲染技术FreeMaker!知识点预习:通过PrintWriter out = resp.getWriter();可以获取输出流 依赖为freemarker 使用前需要获取其下的配置对象Configuration cfg 通过cfg.setDirectoryForTemplateLoading()读取模板文件目录...原创 2019-08-23 15:50:30 · 383 阅读 · 1 评论 -
MyBatis之手动映射&log4j
前面的学习中XxxMapper.xml文件中SQL语句查询结果都是依赖resultType进行自动映射的什么是自动映射呢?将数据库表中查询出的结果按照字段名将值封装至对应的实体类对象属性中所以这里也就要求数据库表中的字段名称与实体类中定义的属性名称一致否则,无法映射成功,主要体现就是该实体类对象的该属性为null而恰巧数据库表字段命名规范有时就与java属性名命名规范不一致...原创 2019-08-12 13:08:07 · 228 阅读 · 0 评论 -
MyBatis之Mapper动态代理
通过之前的学习,已经了解了MyBatis下传统三层模式如何运作了现在会将以前的部分知识点与今天要学习的知识点进行对比学习回顾:SQL映射文件的namespace随意命名 SQL映射文件中的SQLID可以随意命名 dao层操作数据库需要创建接口(UserDao)实现类(UserDaoImpl)对象 找寻SQL语句的方式,通过在SqlSession中指定参数:"nameSpace+S...原创 2019-08-12 11:12:57 · 743 阅读 · 0 评论 -
MyBatis之初识案例
一.案例背景:使用mybatis完成对数据库表user的DURD二.知识点加油站:1.传统的三层模式为dao,service和controllerdao:主要完成对数据库的操作 service:主要完成业务逻辑 controller:接收前端数据,传入service完成逻辑处理2.三层模式中的解耦service层需要调用dao层方法,必须先new出dao层指定类对象 c...原创 2019-08-12 00:40:21 · 216 阅读 · 0 评论 -
MyBatis之初识
什么是MyBatis呢?官宣一波:MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集 MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录↓↓(...原创 2019-08-11 23:05:35 · 228 阅读 · 0 评论 -
动态代理之进阶理解
现实生活中的代理想必大家都已经知晓了,下面以买房代理为例讲解!有三个互相认识的购房者ABC都有购房的需求,但是他们对要购买的房屋都有自己的要求A:85平B:90平C:100平他们开始活动了,ABC分别在城市中寻找自己的房屋资源有一天找房都很疲惫的他们都瘫坐在了地上,擦着汗互相分享着自己的找房经历A想了想就提议可以去找买房代理机构去帮我们找房啊,我们只需要告诉他我们的要求...原创 2019-08-20 18:05:06 · 158 阅读 · 0 评论 -
数据库连接报错:The server time zone value '�й���ʱ��' is unrecognized
最近使用maven框架学习原生JDBC时遇到了如下错误:Exception in thread "main" java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone. You must configure either...原创 2019-08-05 17:50:54 · 1954 阅读 · 0 评论 -
Elasticsearch常用API粗略笔记
----------------------------------------------------------------------------------SearchRequest:查询请求SearchRequest searchRequest = new SearchRequest();它提供的常用方法:SearchRequest source(SearchSourceBu...原创 2019-08-01 13:10:50 · 198 阅读 · 0 评论 -
JWeb之Servlet注解开发
之前学习Servlet的过程中都是在web.xml中对定义的servlet类进行配置的<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-i...原创 2019-07-24 10:39:21 · 261 阅读 · 0 评论 -
JWeb之Cookie
插播:学习这块知识的时候在网上采集资料,发现网上大都是理论讲解,让不理解这块的人实在摸不清头脑,当你需要互联网辅助学习时却发现搜索到的都是相同的帖子,没有营养.我想那些写完帖子乃至博客的人又能理解cookie多少,让你使用代码演示,你又能演示的出来效果吗?简直凉了自己的心!Cookie是服务器响应给客户端的少量数据用于记录上次浏览网页位置 用于存储当前登录的用户信息 用于存储tok...原创 2019-07-28 22:38:30 · 381 阅读 · 0 评论 -
JVM-虚拟机栈之动态链接
*****标题写的是介绍虚拟机栈中的动态链接,但是这里讲解的是动态链接和静态链接的区别*****一.概述:Class文件的常量池中存在有大量的符号引用,字节码中的方法调用指令就以指向常量池的引用作为参数部分符号引用在类加载阶段(解析)的时候就转化为直接引用,这种转化为静态链接 部分符号引用在运行期间转化为直接引用,这种转化为动态链接二.虚/非虚方法1.非虚方法:在类加载阶段...原创 2019-07-16 19:48:09 · 12966 阅读 · 3 评论