- 博客(34)
- 收藏
- 关注
原创 Java-数组,怎么根据索引直接得到元素
本篇博客的目的是理清为什么数组数据结构可以直接根据索引得到元素,而不是需要像链表一样遍历查找。 自己实现一个非循环双向链表请看上篇:Java-链表结构、自己实现一个LinkedList一:基本数据类型数组怎么根据索引直接得到元素?创建一个int类型的数组,int[] arr=new int[5];此时就会知道数组arr的首地址为x和元素类型为int,那么a[i]的地址为x+i*sizeof(int)。所以a[0]的地址=x //数组开始的地址和数组第一个元素的地址是同一个地址a[1]的...
2021-09-16 18:33:21 1463
原创 Java-链表结构、自己实现一个LinkedList
1、什么是链表?链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针连接次序实现的。 每一个链表都包含多个节点,每个节点又包含两部分,一部分是数据域(储存节点含有的元素),另一部分是引用域(储存下一个节点),当然如果是双向链表就有两个引用域(一个存储上一个节点地址另一个存储下一个节点地址)。 链表的理解示意图双向链表的删除示意图2、链表的特点是什么?获取数据麻烦,因为需要遍历查找,比数组慢。见下面node(int index)方...
2021-09-16 15:35:42 338
原创 二:计算机中减法是通过加补码的方式实现而非设计新电路
先说结论:结论一:减法在计算机中并没有单独设计减法电路,而是把减法转换为加补码,这样就能复用加法电路。因为加法电路难度和成本已经很高了, 在当时的条件下,再去设计一个减法电路,费力又费钱,前辈们就想用加法电路来解决减法运算问题。所以才引申出补码和反码的概念。(加法电路请参考上篇博客:计算机中加法的电路实现)结论二:正数的原码=反码=补码,这是规定的。因为补码本身就是为了把减法转化为加法才设计的,又补码可用反码加1得来,所以补码反码的概念只是针对负数,对于正数的话,就规定死“正数的原码=反码.
2021-08-17 14:26:47 1824
原创 三:计算机中乘法的电路实现
转载自:https://zhuanlan.zhihu.com/p/3388140351937年麻省理工学院研究生克劳德香农发表了他的一篇划时代的论文《对继电器和开关电路中的符号分析》,首次向人们展示了如何使用二进制开关来实现数学运算。为了方便没有相关背景的读者阅读本文,我首先介绍一些逻辑电路的基本知识,有基础的朋友们可以直接跳过。本文所采用的所有逻辑电路符号都采用美国标准。1. 二进制:我们日常生活中最常用的是十进制,也就是逢10进1,所有的数字都可以由0到9来构成,例如10是由1和0组成的
2021-08-16 20:30:24 3079
原创 一:计算机中加法的电路实现
转载自:https://blog.csdn.net/weixin_34417814/article/details/88960830另外还参考了https://zhuanlan.zhihu.com/p/3388140351937年麻省理工学院研究生克劳德香农发表了他的一篇划时代的论文《对继电器和开关电路中的符号分析》,首次向人们展示了如何使用二进制开关来实现数学运算。为了方便没有相关背景的读者阅读本文,我首先介绍一些逻辑电路的基本知识,有基础的朋友们可以直接跳过。1. 二进制:我们日
2021-08-16 18:21:06 1931 1
原创 FindBugs作为eclipse的插件的使用
1 FindBugs是干嘛的findbugs是一个开源的用来检查java程序的代码检查工具;它可以简单高效全面地帮助我们发现程序代码中存在的bug和bad smell(坏味道),以及潜在隐患。针对各种问题,它并且提供了简单的修改意见供我们重构时进行参考; 通过使用它,可以一定程度上降低我们code review(代码评审)的工作量,并且会提高review效率。 通过findbugs找到bug,再由我们自己重构代码,可以培养我们的编码意识及水平,形成好的习惯提高开发编码能力。注:FindBugs官方说
2021-07-26 14:46:26 1315
转载 根据CPU核心数确定线程池并发线程数(转)
转载自:根据CPU核心数确定线程池并发线程数这里只做备份,还请看上面的转载链接哦一、抛出问题 关于如何计算并发线程数,一般分两派,来自两本书,且都是好书,到底哪个是对的?问题追踪后,整理如下: 第一派:《Java Concurrency in Practice》即《java并发编程实践》,如下图: 如上图,在《Java Concurrency in Practice》一书中,给出了估算线程池大小的公式:Nthreads=Ncpu*Ucpu*(1+w/c),其中Ncpu
2021-07-05 20:27:17 538
转载 Junit测试代码编写命名规范
转载自:链接1.测试类的命名定义规范测试 类的命名规则是:Test+被测试的业务、Test+被测试的接口、Test+被测试的类类的名字必须由大写字母开头而单词中的其他 字母均为小写;如果类名称由多个单词组成,则每个单词的首字母均应为大写,如 TestMobileBind。如果类名称中包含单词缩写,则这个所写词的每个字母均应大写,如:XMLExample。比如你需要测试业务MobileBind ,那么它的测试类的命名就是 TestMobileBind比如你需要测试接口GetMobileBind
2021-07-05 17:42:18 1151
原创 java.math.BigDecimal。因为java中浮点数不能进行小数的精确计算
描述:商业计算往往要求结果精确,都是采用BigDecimal而不是浮点数Double或者Float来进行计算。原因:float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。所以它们没有提供完全精确的结果,所以也就没办法用于要求精确结果的场合。浮点数不能进行精确计算的举例: /*--测试浮点数类型能否进行小数的精确计算--*/ @Test public void testDouble() {
2021-07-01 15:08:17 732
原创 git的使用
使用git作为版本控制工具的话,推荐基于GitLab与Git Extensions搭建版本控制工具:IDE: eclipse||IDEA客户端: git客户端 + git扩展工具Git Extensions 服务端: gitlab||gitee||github。最全的讲解git客户端命令的博客:深入浅出Git教程(转载) - 小奔的早晨 - 博客园 (cnblogs.com) 和B站狂神说讲的一样。但太多了,自己摘抄如下:下载安装git客户端:官网下载太慢,就到阿里的镜像那里
2021-04-29 17:42:53 698
原创 DBeaver小松鼠的介绍和快捷键
目录前注:一:使用:要先设置驱动管理器,然后才能设置连接。二:DBeaver的快捷键介绍三:怎么给连接重命名&怎么编辑一个连接:四:怎么设置模板:如sf w前注:DBeaver是绿色开源软件,解压即用。其界面更加美观,操作也相对简单。对于习惯了eclipse的开发者来说,DBeaver绝对是个不错的选择。DBeaver 是一个通用的数据库管理工具和 SQL 客户端,支持 MySQL, PostgreSQL, Oracle, DB2, MSSQL, Sybase,..
2021-04-13 23:32:45 8523 2
原创 RPC和HTTP的介绍
历史背景下面一堆答案给题主科普各种RPC和HTTP的原理,什么RPC也可以包含HTTP协议,其实并没有解答题主的困惑。题主的问题准确来讲,是说:既然有HTTP请求可以解决系统间调用的问题了,为什么还会有人使用RPC调用?题主明显是只看到现状,而忽略了两种远程请求调用的历史进程。RPC在1984年就被人用来做分布式系统的通信,Java在1.1版本提供了Java版本的RPC框架(RMI),而HTTP协议在1990年才开始作为主流协议出现,而且HTTP发明的场景是用于web架构,而不是分布式系统间通信,这导致
2021-04-13 22:38:39 138
原创 笔记本安装内存条、重装系统教程
文章目录怎么看自己笔记本有几个卡槽:怎么看自己的笔记本最大支持多达内存:怎么看笔记本内存类型是DDR4还是DDR3或者DDR3L呢?怎么看电脑系统是64位还是32位:制作PEU盘装系统拓展:进入PE工具箱的几种方式介绍。怎么看自己笔记本有几个卡槽:拆机推荐:任务管理器——性能——内存怎么看自己的笔记本最大支持多达内存:C:\Users\zhangjian8512>wmic memphysical get maxcapacity 得到:MaxCapacity671088
2021-04-13 22:20:54 1349
原创 数据库事务的三种提交方式介绍
文章目录数据库事务提交的三种方式:为什么需要隐式提交:通过不同的数据库介绍自动提交和手动提交:数据库事务提交的三种方式:显式提交、隐式提交及自动提交。参考:https://blog.csdn.net/qq_43686584/article/details/84548264显式提交:手动管理事务时,需要用COMMIT命令直接完成的提交为显式提交。其格式为SQL>COMMIT;自动提交自动管理事务时,一条DML语句就会自动开启一次事务,并自动提交它。其语法为:SQL>.
2021-04-12 19:46:13 8159
原创 合格的异常信息的日志打印
文章目录合格的异常信息日志打印应当如下:代码举例:分析解释:合格的异常信息日志打印应当如下:异常信息+堆栈信息。其中堆栈信息能直接定位问题所在的代码行。java.lang.ArithmeticException: / by zero at com.amar.dateAndCalendar.KK.main(KK.java:12) ... ...skipping... java.lang.NullPointerException at com.amar.dateAndCalendar.
2021-04-12 19:37:33 853
原创 关系型数据库索引
目录索引索引的优点: 创建索引可以大大提高系统的性能。创建索引的缺点:哪些情况适合创建索引哪些情况不适合创建索引索引的分类,这里是以mysql讲解的,其实oracle的也是这么个意思。拓展1:哪些情况有索引却不走索引而走全表扫描:拓展2:已知一个普通索引建立在列ename上,一个组合索引建立在ename+job上,判断下面的sql语句会触发索引吗?拓展3:线上一张频繁DML的大表,如何正确地创建索引,到底加不加online,要不要暂停业务:拓展4:索引的底层数据结构
2021-04-12 19:14:51 814
原创 关系型数据库设计范式
文章目录背景:为什么要学习数据库设计范式:范式的分类:三种范式的解释:每一列都是原子数据项、消除部分依赖、消除传递依赖。背景:为什么要学习数据库设计范式:为了给我们所开发的项目设计出一个结构合理的数据库,必须遵循一定的设计规则也叫设计规范,在关系数据库中这种规则就称为范式。参考:https://blog.csdn.net/h330531987/article/details/71194540范式的分类:目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德
2021-04-06 16:21:11 136
原创 Eclipse的 Java Build Path
Java Build Path用于设置Java的构建路径,管理Java工程所包含的资源,使工程结构清晰合理。包括以下几项: Source:源码包 Projects:当前项目依赖的其他项目 Libraries:当前项目依赖的库文件 Order and Export:调用优先级、打包等相关设置 一、Source Source包括:source folder和output folder两块 source folder:存放.java源文件的根目...
2021-04-01 17:28:26 729
原创 Eclipse中自带的编译器和引入的JRE(JDK)的关系
引用:引用其实写这篇文章的出发点就是因为在Eclipse中用maven时,被各种jre、jdk搞得混乱,于是决定弄清楚。先简单的介绍一下:Eclipse:是一款集成开发的IDE,可以开发,编译,调试,运行代码等;JDK:java开发工具,用来将.java文件编译成字节码文件;JRE:java运行时环境,执行编译后得字节码文件;Maven:一款项目管理工具;Eclipse中其实内嵌了Java编译器,其编译器的作用等同于jdk中的javac,所以eclipse其实只需要jre就可以.
2021-03-09 21:58:04 2128
原创 妙用小乌龟方便我们抽自己修改新加过的所有文件,为了抽版本
选中你要抽版本的项目,使用本地小乌龟查看日志。如果小乌龟看不了,可能是eclipse上svn插件版本和小乌龟版本不匹配。
2021-01-15 10:20:53 254
原创 在eclipse里直接使用Win系统的cmd命令行以及javap -c
一:使用eclipse对javaSE项目中的class文件使用javap -c进行反汇编1、配置Name是你自定义的名字;Location是你要使用的命令的位置;WorkingDirectory 是工作目录=工作空间目录 拼接 项目名称目录 Arguments 是参数。myjavap_SED:\DevFolder\myJDKss\jdk1.8.0_171\bin\javap.exe${workspace_loc}\${project_name}-...
2021-01-07 20:09:39 1621
原创 为什么要用slf4j日志框架 (slf4j+log4j)
引用:https://blog.csdn.net/PanPa_WoNiu/article/details/81179644目录一、概述二、slf4j优势三、slf4j的使用方法以及实现原理一、概述 slf4j(全称是Simple Loging Facade For Java)是一个为Java程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就好像我们经常使用的JDBC一样,只是一种规则而已。因此单独的slf4j是不能工作的,它必须搭配其他具体的日志实现方案,比如common
2020-12-18 21:11:01 475 1
原创 整理介绍log4j在javaSE、javaEE中的使用 (不涉及slf4j)
日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j可以免费下载到Log4j最新版本的软件包。引用https://blog.csdn.net/u013870094/article/details/79518028这里将分别介绍javaSE、javaEE、javaEE(使用spring框架)的项目怎么使用log4j。注:这里不涉猎slf4j这个抽象层的日志类库,等我学习了怎..
2020-12-17 21:17:28 558 1
原创 oracle数据库游标、jdbc和游标的关系
以前也接触过游标,但是打心里说不是太理解,通过这次学习感觉理解深刻了很多,特此总结学习一下。目录什么是游标一,游标是什么?二,作用是什么?三,游标的类型:四,游标有哪些属性:五,游标简单认识了,我们来看看游标的具体使用:jdbc和游标的关系1.什么是JDBC?2.既然说JDBC是API,那它的常用接口有哪些呢?3.JDBC连接数据库的步骤?4.释放资源的顺序?5.超出打开游标最大数ORA-01000?6.注意事项?7.批处理?什么是游标..
2020-12-04 16:13:39 1369
转载 EJB到底是什么,真的那么神秘吗??
转载自:https://blog.csdn.net/jojo52013145/article/details/5783677 1. 我们不禁要问,什么是"服务器集群"?什么是"企业级开发"? 既然说了EJB 是为了"服务集群"和"企业级开发",那么,总得说说什么是所谓的"服务集群"和"企业级开发"吧!这个问题其实挺关键的,因为J2EE 中并没有说明白,也没有具体的指标或者事例告诉广大程序员什么时候用EJB
2020-11-19 17:37:00 122
转载 TreeMap的排序
一、TreeMapTreeMap 默认排序规则:按照key的字典顺序来排序(升序)当然,也可以自定义排序规则:要实现Comparator接口。用法简单,先看下下面的demopublic class SortDemo { public static void main(String[] args) { System.out.println("---------------- 默认 排序结果-----------------"); createDefa
2020-11-14 12:27:02 16367
转载 代理模式(Proxy Pattern)——静态代理、动态代理(JDK、CGlib)
代理模式(Proxy Pattern)基本介绍代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象。 是AOP(Aspect Oriented Programming面向切面编程)的核心实现机制!核心作用通过代理,控制对对象的访问! 可以详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用
2020-11-13 19:37:05 182
原创 我的springBoot框架学习总结
一、SpringBoot的介绍什么是SpringBoot:Springboot它是对 spring的一种封装,采用一些默认的配置、默认的依赖简化了我们对spring的使用,大大于提高了我们的工作效率。我们知道流行起来的新框架,一般都是能解决某些痛点的。那么SpringBoot能解决哪些问题呢?Spring的优点:IOC(控制反转):把三层的实例的创建权交给sping容器即applicationContext,就能DI-依赖注入(DI能解耦)AOP (面向切面编程) :基于JDK和..
2020-11-11 20:28:11 600 1
转载 oracle的悲观锁和乐观锁
目录 1 悲观锁 1.1 单表 for update 1.2 关联表for update 1.3 解除for update 锁的占用 1.4 悲观锁缺点 2 乐观锁 2.1 比对法 2.2 版本戳 2.3 timestamp型 2.4 例子Demo 问select *from person for update或update perso...
2020-11-11 08:51:58 2279 1
转载 初识java中的hashMap
请相信我,你一定会更优秀! 备注:jdk版本为 1.7,初识 HashMap(后续会继续带你拿下 1.8+的HashMap) 目录 1、什么是 HashMap,什么时候选择 HashMap? 2、HashMap 数据结构及其工作原理? 2.1 数据结构 2.2 工作原理 3、HashMap和HashTable 的异同? 4、如何优化 HashMap? 1、什么是 H...
2020-11-10 20:05:05 2796
原创 Java并发编程——分析使用线程池
一.Java中的ThreadPoolExecutor类 java.uitl.concurrent.ThreadPoolExecutor类是线程池中最核心的一个类,因此如果要透彻地了解Java中的线程池,必须先了解这个类。下面我们来看一下ThreadPoolExecutor类的具体实现源码。 在ThreadPoolExecutor类中提供了四个构造方法:?123456789101112131415public class ThreadPoolExecutor extends AbstractE
2020-11-10 19:22:18 191 1
原创 代码试验,观察oracle不同事务隔离级别的影响现象与库中真实数据
首先需要强调:隔离不是加锁、不是不让另一个事务进行操作,只是说我这一个事务范围内的第二次查询结果可能和第一次查询结果到底会不会有区别。比如隔离级别设置为串行化,事务T1有两个查询均是select * from person有8条记录,在第一次查询后、第二次查询前,另一个线程开启一个新事务T2,做了一笔插入操作并提交,此时数据库中真实数据有9条。然后我们的事务T1里面第二次查询结果还是8条,即不受并发事务T2的插入操作影响。也就是说,数据库里的串行化和java里面的synchronized同步锁的概念不一
2020-11-07 10:01:18 237 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人