- 博客(325)
- 资源 (7)
- 收藏
- 关注

原创 Nginx安装
Nginx安装安装包下载依赖下载安装pcre 依赖其他依赖的安装nginx安装安装包下载采用wget 命令进行下载.登录linux。进入到/usr/local/src 目录。建立nginx目录. mkdir nginx。然后进入到nginx目录。 执行 wget http://nginx.org/download/nginx-1.12.2.tar.gz进行下载.依赖下载nginx 依赖如下包:pcre-8.37.tar.gzopenssl-1.0.1.tar.gzzlib-1.2.8.tar
2022-05-22 21:47:54
822

原创 java面试总结--2020-10,深圳
最近面试的常见问题总结:一.java集合:1.常见的集合类型有哪些2.ArrayList,LinkedList HashMap的底层原理3.jdk 1.8对hashMap的优化,以及如何hash冲突的原理以及是否可以避免hash冲突二:java虚拟机 1.描述java虚拟机的内存分布情况 2.常见的虚拟机的内存回收机制以及常见的java虚拟机 3.常见的内存异常有哪些以及你自己有使用过哪些Java命令来调试跟踪对应的java问题三:Spring系列1...
2020-10-22 14:06:46
312
2

原创 二:MyBatis的构成
一:MyBatis的基本构成 MyBatis的核心组件: SqlSessionFactoryBuilder(构造器):它会根据配置信息或者代码来生成SqlSessionFactory(工厂接口) SqlSessionFactory: 依靠工厂来生成SqlSession(会话) SqlSession:是一个既可以发送SQL去执行并返回结果,也可以获取Mapper的接口 SQL Mapper:它是MyBatis新设计的组件,它是由一个Java接口和XML文件...
2020-08-20 19:27:57
294

原创 一:MyBatis简单介绍
MyBatis简介一:传统的JDBC编程1.传统的JDBC编程的步骤: 创建连接,注册驱动和数据库信息 操作Connection,打开Statement对象 通过Statement执行SQL,返回结果到ResultSet对象 使用R...
2020-08-19 20:33:00
224

原创 为Java虚拟机编译
Java虚拟机是为了支持Java语音而设计的,Oracle的JDK包括两部分内容:一部分是将Java源代码编译成Java虚拟机的指令集的编译器,另一部分是用于Java虚拟机的运行时环境。2.1 示例的格式说明 本次的示例主要包括有源文件和Java虚拟机代码注解列表,其中Java虚拟机的代码注解列表是由Oracle的1.0.2版本的Jdk的javac编译器生成。Java虚拟机代码将使用Oracle的javap工具所生成的非正式的 虚拟机汇编语言的格式。格式如下: <index>...
2020-08-19 19:59:42
260

原创 java虚拟机数据结构
从本节开始学习Java虚拟机规范。1.1 Class文件格式 class文件格式是编译后被虚拟机所执行的代码。并且精确地定义了类和接口的表现形式。1.2 数据类型 java虚拟机可以操作的数据类型可以分为两类:原始类型(Primitive Types) 和引用类型(Reference Types).其中原始类型的值不需要通过特殊标记或者别的额外识别手段来在运行期间确定他们的实际数据类型,也无需可以将他们与引用类型的值区分开。虚拟机的字节码指令本身就可以确定他的指...
2020-08-13 09:07:34
307

原创 小记 获取dump文件
系统应用出现问题,可以采用查看dump文件来进行分析。常见的dump文件有heapdump,threaddump.hprofdump 等。其中threaddump很容易查看线程的阻塞等情况。hprofdump可以分析应用的对象是否内存泄漏等。举例在linux服务器上打hprofdump文件。首先找到对应的进程:ps -ef| grep java. 显示的进程号和java的目录。然后 在对应的java目录的bin 目录下看是否有jrcmd文件夹(一般会有)。最后,需要切换成对应...
2020-05-13 10:28:03
398

原创 项目接入redis
首先通俗的介绍下redis:可以把redis当做一个数据库,像mysql这样,只是存放的方式和地方不一样。 redis将数据存放在内存中,所有读取的速度肯定比mysql快。 同时redis的数据类型是key-value型。和Map<S...
2020-05-12 17:56:23
604

原创 小记开发遇到的问题
数据库问题一:oracle 对于时间的格式要求(显示 ORA 01810 格式化代码出现两次): 比如: insert into 属主.表明(login_time) values(to_date('yyyy-MM-dd HH24 :mm:ss')). 由于中不区分大小写,mm和MM无法区分,小写mm需要改为mi即可。配置问题:一:对于maven项目,编译的过程中...
2020-03-31 11:43:49
129

原创 Oracle大表分区(表大小超过2G)
背景:公司要求将数据库中表超过2G的表进行分区。刚好我们负责的表有5张大于2G的。所以需要进行表分区。所谓分区,讲的的通俗点,就是根据某个字段的范围进行划分,将表分成几块。以后查询,维护都更加方便。 比如可以根据创建时间,2018年的数据放入一个分区,以后每3年存入一个分区。实际环境:我负责的这个表,大小是12G作右,接近7千万条数据。因为这个表已经使用了很多年了,刚开始建表的时...
2019-11-23 17:20:18
2763

原创 基础排序(冒泡排序,选择排序和插入排序)
一些常见的排序方法,记录在此。(好记性不如烂笔头)一:冒泡排序法: 1.思路:第一次两两遍历所有的元素,找到最大的元素放置到最右边,第二次遍历(n-1)个。这样下来整个就是从小到大排列了。public void bubbleSort(int[]source){ for(int i=source.length-1;i>0;i--){ for(int j=0;j&l...
2019-01-11 14:57:04
227

原创 java 二进制以及二进制运算
虽然现在很少用到二进制,可是一些源码中会经常遇到,比如://HashMap中的hash方法: static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); }这里记录一些二进制知识。...
2019-01-09 23:02:50
1504
2

原创 常见sql 面试题
之前面试遇到一个sql题。当时没写出sql语句,把题目记下。现在分享给大家(知识贵在精,学会举一反三)。这里采用的是mysql.sql语句如下。DROP TABLE IF EXISTS `depart_month`;CREATE TABLE `depart_month` ( `id` int(11) NOT NULL AUTO_INCREMENT,//id自增长 `depa...
2019-01-09 19:22:44
1141
3

原创 对shiro的初步理解
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。其中 SecurityManager是核心,相当于Spring MVC的前端控制器,起管家调度作用。 Subject可以理解为账户。来验证其是否合法或者权限。 Realms可以理解为数据源,即程序从Realm中拿数据来确认该用户时候是合法,权限等。Realm可以自...
2019-01-06 14:43:56
327
1

原创 LinkedList 源码 的理解
之前看了ArrayList。一般拿ArrayList和LinkedList进行比较。因为两者有很多相似,又有一些不同。相同:都是List类型(说了白说)。都可以进行存放对象。不同点:实现的接口有些差异,底层实现的原理不一样。ArrayList底层是靠数组实现的。LinkedList是链表结构。由一个个节点构成,每个节点连接有上下两个节点的信息。然后彼此连接成一种数据结构。有了这种大概印象,...
2019-01-05 20:30:16
234

原创 sql server的数据库的转移
前一段时间,客户的服务器经常出现问题,不得已得更换服务器,所以服务器上的sql server数据库同样需要进行转移。这里建议一个相对方便的方式。借助于sql server的工具,Management studio.工具下载地址:https://download.youkuaiyun.com/download/echohuangshihuxue/10898132首先选择需要转移的数据库右键选择第...
2019-01-05 19:14:10
593
2

原创 ArrayList 源码的理解
ArrayList是常用的集合.平时用的时候做了些笔记。一:首先看下ArrayList的继承基础:public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.SerializableArr...
2019-01-04 21:10:42
202
1

原创 Collection集合的理解
由于数组的的大小是固定的,这个局限使得的实用性远远小于集合。所以现在聊聊集合类Collection.一:Collection是个接口。并且LIst和Set都是接口。并继承与Collection.其的关系如图下:其中List是允许有重复值的有序列表。所谓的有序是指你添加的顺序。Set是不允许重复的无序列表。所谓无序是指跟添加的顺序不一致。并且不允许重复。不重复原理和Map的key不允...
2019-01-03 17:36:53
517

原创 二分法查找
二分法经常用于有序数组中查找。不需要循环遍历。使得效率提高。面试经常会有考到。即每次查找都喝中间的数比较。小于中间数,就和前面一半比较。大于中间数就和后面一半比较/** * 查找元素(因为是有序,所以采用二分法查询) * 返回-1表示没有,返回其他Int值代表对应的位置(下标) * @param value * @return */ public int find(...
2019-01-02 23:18:53
201

原创 单例模式
单例模式主要解决该类只能实例一个对象的问题。是面试的常考点。自己慢慢看着其他人的博客,记录自己的学习点滴。package designPattern.single;import java.util.ArrayList;import java.util.List;import java.util.Random;/** * 单例模式:一个类只允许创建一个对象 * * 但...
2019-01-02 21:22:00
160

原创 HashMap的源码理解
HashMap是常用的集合。采用键值对方式存储. 此博客是基于jdk1.8分析的。 一:先看看HashMap的继承关系:public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { 1.继承Abst...
2018-11-11 00:14:02
293

原创 利用dom4j来生成xml
代码中经常有xml的配置,其实最终都需要解析成对象。然后封装成对象。比如spring的xml配置,源码都是解析xml.说到底xml比较常用,处理xml的方式也比较多。现在就聊聊如何用dom4j来生成xml吧 先看看效果。。。上传代码:/** * 生成xml * @param action * @param path */ private static void ...
2018-08-19 15:32:54
387

原创 java实现excel的生成,利用poi jar包实现excel的生成
利用工具就是站在牛人的肩膀上。现在看看利用poi jar包达成的效果吧内容给注释掉了,简单的实现了标题以及表格标题和内容的实现(包括不一样的格式) 直接上传代码吧/** * 生成excel 包括订单细节 * @param path excel路径(所在的目录) * @param ids id的字符串,用逗号隔开。 */ private static voi...
2018-08-19 14:44:09
5141

原创 ant jar包实现压缩文件和压缩文件夹
采用的是 ant-1.9.7jar包代码先上传:package cloud.prj.donson.imp.api;import java.io.*;import org.apache.tools.zip.ZipEntry;import org.apache.tools.zip.ZipOutputStream;public class ZipUtil { //参数是文...
2018-08-19 14:15:24
846

原创 group by语句,join on ,left join on ,vue 的下拉框,按钮事件,方法的触发等。
最近项目里要写报表,我写了5-6张报表,包括sql语句和页面表格(vue实现).业务不是很复杂。最多就关联7-8张表。前面有点捉急,vue的很多不会,慢慢的网上查查,问下前端。功能基本能实现(三个功能)1.查询,2.选择条件(比如时间,部门,订单等)来查询3.导出信息。这里分享下最近一些知识点。首先说下sql语句。看到一个需求,第一,要将需求分解。在多个字段中(如果是多张表)找到一个主...
2018-08-11 16:39:43
550

原创 条形码的打印,pdf打印条形码
条形码的打印效果如下图: 想实现上面的这种打印输出(内容可以自己设定),大概需要三大步。 第一步:选择jar包(其实实现条形码可以有多个方式,这里讲述下我最熟悉的);采用barcode4j这个jar包。第二步:采用barcode4j来生成image流,即生成条形码。这个是核心步骤。下面我就来具体来说说这个步骤。废话不多说,先上传 这个方法吧。(可能写的不够简洁,但能实现基...
2018-07-23 17:39:36
3010
1

转载 tomcat配置文件的详解。比如配置端口号,配置连接等。
这是一篇很不错的文章。推荐给大家。网址: https://www.cnblogs.com/kismetv/p/7228274.html
2018-07-06 22:36:13
820

原创 svn的一些基本操作。比如下载项目,更新,提交,比对等,同时还有就是在myeclipse上的操作。
虽然现在有用git等工具,但我还是比较习惯svn。觉得它还是比较好用的。现在我就分享一些常用技巧吧。欢迎大家一起讨论。首先是安装svn.我说的是安装客户端(小乌龟图标)。安装完后随便找个文件夹空白处右键,就会出现TortoiseSvn等图标。说明客户端安装就成功了。然后说下svn的几个常见操作吧。 1.checkOut(检出):将svn库的东西拷贝下来。比如你们java代码存储...
2018-07-06 20:52:24
3818

原创 使用npm命令来导包,npm命令来build项目(前后端分离)
现在很多前端项目采用node.js,npm来管理项目。所以呢,一些基本的操作还是要懂些。像我们公司的前端基本用vue来开发。然后采用node.js和npm来管理。前端工具webstorm,后端开发myeclipse.比如从svn checkout下来一份代码后,java代码用myeclipse导入,选择.gradle项目,这里不再叙述。 前端代码用webStorm导入,但是需...
2018-07-05 21:33:09
22268

原创 如何正确导入.gradle项目
前言:目前很多公司的项目都采用.gradle。所以你也必须学会如何导入.gradle项目,大致了解一些。接触过一些项目之后。我把自己的一些总结写出来分享给大家。 第一:得下载gradle.比如下载3.2.1版本(我用的),下载地址:https://download.youkuaiyun.com/my 我的博客地址有。第二:配置环境变量。主要是在path里添加下路径即可。第三:打开myec...
2018-07-05 13:10:53
10724

原创 如何解决tomcat服务器不能选择项目问题
首先我自己在平时导入项目的时候遇到过几次,每次都话费很长的时间。现在有机会把解决方法给大家分享下。 我的情况是:导入项目后,tomcat添加项目时没有该项目选择。 据网上搜索:这是因为该项目不是web项目。解决办法:选择该项目,右键--properties---myEclipse--Project Facets. 看到如下界面,勾选即可。然后再用tomcat选择项...
2018-07-05 12:53:34
1881

原创 java输出pdf(pdfptable和pdftcell)
介绍:由于pdf在java端的实现的需求最近挺多的,自己又实现了两个pdf打印功能。熟悉了一些方法和技巧。希望能记录下来。能给有需要的朋友一个参考。欢迎大家一起探讨。。。。先把实现结果给大家展示下,由于涉及到隐私,所以内容去掉。 一:写pdf输出,主要是涉及到PdfpTable 和PdfPCell两个类。看名字就很容易理解。前面一个是一个表格,后面的是表格单元。当然了...
2018-07-01 16:58:57
19198
3
原创 记一次双十一抢购性能瓶颈调优
减少抢购中操作数据库的次数,缩短抢购流程,是抢购系统设计和优化的核心点。抢购系统的性能瓶颈主要是在数据库,即使我们对服务进行了横向扩容,当流量瞬间进来,数据库依然无法同时响应处理这么多的请求操作。我们可以对抢购业务表进行分库分表,通过提高数据库的处理能力,来提升系统的并发处理能力。除此之外,我们还可以分散瞬时的高并发请求,流量削峰是最常用的方式,用一个队列,让请求排队等待,然后有序且有限地进入到后端服务,最终进行数据库操作。当我们的队列满了之后,可以将溢出的请求放弃,这就是限流了。
2024-09-03 10:45:22
687
原创 如何使用缓存优化系统性能?
从前端到后端,对于一些不常变化的数据,我们都可以将其缓存起来,这样既可以提高查询效率,又可以降低请求后端的压力。对于前端来说,一些静态资源文件都是会被缓存在浏览器端,除了静态资源文件,我们还可以缓存一些常量数据,例如商品信息。服务端的缓存,包括了JVM的堆内存作为缓存以及Redis实现的分布式缓存。如果是一些不常修改的数据,数据量小,且对缓存数据没有严格的一致性要求,我们就可以使用堆内存缓存数据,这样既实现简单,查询也非常高效。
2024-09-03 10:40:40
984
原创 电商系统的分布式事务调优
在同服务多数据源操作不同数据库的情况下,我们可以使用基于XA规范实现的分布式事务,在Spring中有成熟的JTA框架实现了XA规范的二阶事务提交。事实上,二阶事务除了性能方面存在严重的阻塞问题之外,还有可能导致数据不一致,我们应该慎重考虑使用这种二阶事务提交。在跨服务的分布式事务下,我们可以考虑基于TCC实现的分布式事务,常用的中间件有TCC-Transaction。TCC也是基于二阶事务提交原理实现的,但TCC的二阶事务提交是提到了服务层实现。
2024-09-03 10:39:25
976
原创 如何设计更优的分布式锁?
实现分布式锁的方式有很多,有最简单的数据库实现,还有Zookeeper多节点实现和缓存实现。我们可以分别对这三种实现方式进行性能压测,可以发现在同样的服务器配置下,Redis的性能是最好的,Zookeeper次之,数据库最差。从实现方式和可靠性来说,Zookeeper的实现方式简单,且基于分布式集群,可以避免单点问题,具有比较高的可靠性。因此,在对业务性能要求不是特别高的场景中,我建议使用Zookeeper实现的分布式锁。
2024-09-03 10:37:42
696
原创 MySQL中InnoDB的知识点串讲
以上InnoDB的实现和运行原理到这里就介绍完了。回顾模块六,前三讲我主要介绍了数据库操作的性能优化,包括SQL语句、事务以及索引的优化,接下来我又讲到了数据库表优化,包括表设计、分表分库的实现等等,最后我还介绍了一些数据库参数的调优。总的来讲,作为开发工程师,我们应该掌握数据库几个大的知识点,然后再深入到数据库内部实现的细节,这样才能避免经常写出一些具有性能问题的SQL,培养调优数据库性能的能力。这一讲的内容就到这里,相对基础,不熟悉的同学抓紧补补课,如有疑问,欢迎留言讨论。
2024-09-03 10:36:50
623
原创 电商系统表设计优化案例分析
这一讲,我们结合电商系统实战练习了如何进行表设计,可以总结为以下几个要点:在字段比较复杂、易变动、不方便统一的情况下,建议使用键值对来代替关系数据库表存储;在高并发情况下的查询操作,可以使用缓存代替数据库操作,提高并发性能;数据量叠加比较快的表,需要考虑水平分表或分库,避免单表操作的性能瓶颈;除此之外,我们应该通过一些优化,尽量避免比较复杂的JOIN查询操作,例如冗余一些字段,减少JOIN查询;创建一些中间表,减少JOIN查询。
2024-09-03 10:34:43
1021
原创 什么时候需要分表分库?
在业务开发之前,我们首先要根据自己的业务需求来设计表。考虑到一开始的业务发展比较平缓,且开发周期比较短,因此在开发时间比较紧的情况下,我们尽量不要考虑分表分库。但是我们可以将分表分库的业务接口预留,提前考虑后期分表分库的切分规则,把该冗余的字段提前冗余出来,避免后期分表分库的JOIN查询等。当业务发展比较迅速的时候,我们就要评估分表分库的必要性了。一旦需要分表分库,就要结合业务提前规划切分规则,尽量避免消耗性能的跨表跨库JOIN查询、分页查询以及跨库事务等操作。
2024-09-03 10:33:55
723
2.5.0-proto.exe和对应的maven依赖
2023-01-09
poi jar 轻松实现excel的生成自定义格式
2018-08-19
ant-1.9.7jar包 java实现压缩文件文件夹
2018-08-19
pdfp打印所需jar包
2018-07-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人