- 博客(44)
- 收藏
- 关注
原创 Java并发编程:线程池的原理
为什么我们要用线程池?1.如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率。 假如创建一个线程消耗时间为T1,执行任务消耗时间T2,销毁线程消耗时间T3。 如果T1+T3 > T2,线程用来创建和销毁的时间大于了执行任务的...
2018-04-29 12:00:58 213
原创 趋势投资项目——(2)量化投资和趋势投资
一.量化投资1.中医与西医我们首先谈谈中医和西医,有些病症西医无法医治,而中医能得到奇效,是建立在天时地利人和的基础上的。碰到医术非常高明的老中医,用上货真价实的药材,还能恰好对症,确实能起到非常好的疗效。而西医呢,虽说对某些疑难杂症实在是无力回天,但是它标准化呀。无论大病小病,先来化验,然后根据化验单,做初步的诊断,虽然看上去像是流水线,刚毕业的医科大学生也能做,而且按照这一套标准化流程走...
2020-01-16 11:13:29 1277
原创 NPOI操作Excel文件
什么是NPOI?NPOI是一个用于操作xls,xlsx,doc,ppt文档的POI项目,POI是Java的一个框架,NPOI也就是.Net的一个项目。它的作用是在没有安装Office Excel的机器上也可以对Excel进行操作。另外一种方法是使用.Net自带的excel API,但是这种方法需要运行环境安装excel才行。NPOI尤其适合在服务器端生成文件,因为服务器一般不会安装office...
2019-04-29 16:00:03 509
原创 基金账号与基金交易账号的区别
基金账号与基金交易账号的区别一. 基金账号是客户在基金公司开立的交易账号,每申购丶认购一家基金公司的基金首先要开立该基金公司的基金账号,用于进行基金管理交易结算。简单说就是放基金份额的。 基金交易账号是代理机构为客户开立的资金交易结算账户,用于存入资金及接受基金赎回结清或其他结算资金。两者建立结转关系保证资金的畅通。对于银行来说,与客户直接关联的是基金交易账户,每个基金公司的基金账户都是...
2019-04-24 10:37:25 7400
原创 高并发秒杀系统设计
高并发秒杀系统设计功能模块划分-》秒杀策略-》自己的优化点-》工具测试抗压-》一.秒杀系统特点1.秒杀业务简单,卖家查询,买家下订单减库存2.秒杀时网站访问流量激增,出现峰值3.访问请求数量远大于实际需求量二.架构设计优化方案1.秒杀系统架构设计优化一个常规的秒杀系统从前到后,依次有: 前端浏览器秒杀页面-》中间代理服务-》后端服务层-》数据库层根据这个流程,一般优化设计思路...
2018-10-11 18:44:06 1378
原创 java实现生产者消费者模型
生产者消费者问题是多线程的一个经典问题,它描述是有一块缓冲区作为仓库,生产者可以将产品放入仓库,消费者则可以从仓库中取走产品。 主要思路是利用BlockingQueue队列模拟实现仓库 put()方法:类似于我们上面的生产者线程,容量达到最大时,自动阻塞。 take()方法:类似于我们上面的消费者线程,容量为0时,自动阻塞。 生产者。public class Producer impl...
2018-08-25 21:30:53 203
原创 Hash冲突解决方法
Hash碰撞冲突当关键字值域远大于哈希表的长度,而且事先并不知道关键字的具体取值时。冲突就难免会发 生。另外,当关键字的实际取值大于哈希表的长度时,而且表中已装满了记录,如果插入一个新记录,不仅发生冲突,而且还会发生溢出。因此,处理冲突和溢出是 哈希技术中的两个重要问题。方法1.开放地址法 开放地址法公式::H=(H(key)+di) MOD m i=1,2,…,k(k<...
2018-08-19 16:49:56 308
原创 堆排序
package sort;/* * 堆排序 */public class HeapSort { public static void heapSort(int[] arr) { if(arr == null || arr.length<2) { return; } for(int i=0;i<a...
2018-08-06 22:53:31 120
原创 归并排序
//归并排序public class MergeSort { public static void mergeSort(int[] arr) { if(arr == null || arr.length < 2) { return; } mergeSort(arr, 0, arr.length - 1); ...
2018-08-06 22:50:37 167
转载 Mysql索引(转)
转:http://database.ctocio.com.cn/353/11664853.shtmlMySQL单列索引是我们使用MySQL数据库中经常会见到的,MySQL单列索引和组合索引的区别可能有很多人还不是十分的了解,下面就为您分析两者的主要区别,供您参考学习。 为了形象地对比两者...
2018-07-28 09:56:01 235
原创 存储过程和存储函数
存储过程存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。创建存储过程用法: create or replace PROCEDURE 过程名[(参...
2018-07-27 17:40:33 218
原创 PLSQL例外
例外是程序设计语言提供的一种功能,用来增强程序的健壮性和容错性。一.系统定义例外 No_data_found(没有找到数据) Too_many_rows(select…into匹配多个行) Zero_Divide(被零除) Value_error(算术或装换错误) Timeout_on_resource(在等待资源时发生超时) 系统异常:写出...
2018-07-27 11:36:49 408
原创 PL/SQL实现按员工的工种涨工资
问题:按员工的工种涨工资,总裁涨1000,经理涨800,其他人涨400。java伪代码:ResultSet rs = "select empno,job from emp"; while(rs.next()) { int eno = rs.getInt("empno"); String job = rs.getString("job"); ...
2018-07-27 09:18:43 3238
原创 oracle数据库游标的使用
游标(光标Cursor)为什么要使用游标? 在写java程序中有集合的概念,那么在pl/sql中也会用到多条记录,这时候要用到游标,游标可以存储查询返回的多条数据 语法: CURSOR 游标名 [(参数名 数据类型, 参数名 数据类型…)] IS SELECT 语句; 例如:cursor c1 is select ename from emp; 游标的使用...
2018-07-27 01:33:44 10550 1
原创 PL/SQL编程语言
一.什么是PL/SQL?PL/SQL(Procedure Language/SQL)示例1:为职工涨工资,每人涨10%的工资。 update emp set sal = sql * 1.1 示例2:按职工的职称涨工资,总裁涨1000元,经理涨800元,其他人员涨400元。 这样的需求无法用一条SQL语句来实现,需要借助其他程序来帮助完成,也可以使用PL/SQL。二.PL/S...
2018-07-27 00:23:49 1779
原创 java面试题:输入一个数字,将其转化为汉字形式
参加笔试的一道题import java.util.Scanner;public class Solution { public static void convert(int num) { String[] nums = {"零","一","二","三","四","五","六","七","八",&
2018-06-17 19:28:43 5114 2
原创 快排(改进版)
经典快排每次只解决一个数:小于等于这个数放左边,大于的放右边。 而改进的快排选中一个基准数,将数组分为三个区:小于区,等于区,大于区。这就解决了经典快排每次只解决一个数的问题。public class QuilkSort { public static void main(String[] args) { int[] arr = {3,2,1,3,8,7,5,4,3}...
2018-05-30 00:01:07 1421
原创 利用Callable接口实现多线程
优点:可以获取返回值,可以抛出异常 Callable和Future接口 Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务 Callable和Runnable的不同: (1)Callable规定的方法是call(),而Runnable规定的方法是run()。 (2)call()方...
2018-05-19 17:29:29 429
原创 redis总结
1.什么是redis? redis是一个基于内存的高性能key-value数据库。 2.redis的特点 redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过数据库数据flush到硬盘上进行保存。因为是纯内存操作,redis的性能十分出色,每秒可以处理超过10万次读写操作,是已知性能最快的Key-Va...
2018-05-11 16:06:04 204
原创 HashMap与ConcurrentHashMap的区别
HashMap不是线程安全的,ConcurrentHashMap引入了一个“分段锁”的概念,具体可以理解为把一个大的Map拆分成N个小的Hashtable,根据Key,hashCode()来决定把key放到哪个Hashtable中。 在ConcurrentHashMap中,就是把Map分为了N个Segment,put()和get()时都是根据key.hashCode()算出放到哪个Segment...
2018-05-09 22:27:35 150
原创 HashMap和Hashtable
HashMap与Hashtable的区别一.类继承体系 HashMap继承自抽象类AbstractMap,而Hashtable继承自抽象类Dictionary。其中Dictionary已经被放弃,HashTable比HashMap多了两个公开方法,一个是elements(),另一个是contains()。 二.Null Key 与 Null Value ...
2018-05-09 22:10:03 487
原创 mybatis与hibernate区别
Mybatis和Hibernate不同,Mybatis不完全是一个ORM框架,因为Mybatis需要程序员自己编写sql语句。Mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并将java对象和sql语句映射生成最终执行的sql,最后将sql执行的结果再映射生成java对象。Mybatis学习门槛低,简单易学,程序员直接编写原生态sql,可严格控制sql执行性能,灵活度高,非常适...
2018-05-03 20:06:01 145
原创 synchronized实现原理
synchronized有何作用? 线程安全对于并发编程是十分重要的,造成线程安全问题的原因主要有两点: 一.存在共享数据(临界资源) 二.存在多条线程共同操作共享数据 我们需要当存在多个线程共享数据时,需要保证同一时刻有且只有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再进行,这种方式叫互斥锁,即能达到互斥访问目的的锁,也就是说当一个共享数据被当前正...
2018-04-26 20:17:17 148
原创 HashMap底层实现原理
JDK1.6,1.7中,HashMap采用数组+链表实现,用链表处理冲突,同一hash值的链表都存储在一个链表里。当位于同一数组中的元素较多时,通过Key值依次查找的效率较低。当有大量元素都存放到同一个数组元素时,这个数组元素下有一条长长的链表,假设链表有N个元素,遍历的时间复杂度为O(n),完全失去了它的优势。 JDK1.8中,HashMap采用数组+链表+红黑树(查找时间复杂度为O(logn...
2018-04-25 21:29:45 229
原创 Java常见Web服务器
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。开发Java Web应用所采用的服务器主要是与Jsp/Servlet兼容的Web服务器,比较常见的有Tomcat,Resin,JBoss,WebSphere和WebLogic等。 Tomcat服务器 目前最主流的To...
2018-04-20 18:37:07 744
原创 二叉树前中后遍历(非递归版本)
二叉树前中后遍历非递归版本 先序遍历: 首先1进栈 判断栈不为空,1出栈,并且右孩子先进栈,然后左孩子进栈 栈顶元素2出栈,并且2的右孩子5和左孩子4依次进栈 然后4出栈,4没有左右孩子,所以不存在进栈元素 5出栈 3出栈,3的右孩子7和左孩子6进栈 6出栈 7出栈 栈为空结束 出栈顺序: 1 2 4 5 3 6 7//先序遍历public sta...
2018-04-13 17:15:02 152
原创 二叉树的前中后遍历(递归版本)
先序遍历:根左右 中序遍历:左根右 后序遍历:左右根//定义二叉树public class Node { int val; Node left; Node right; Node(int data) { this.val = data;//先序遍历public static void preOrderRecur(Node head) { ...
2018-04-13 15:25:32 159
原创 java内存模型
Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。 主内存与工作内存 Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量主要是指共享变量,存在竞争问题的变量。Java内存模型规定所有的变量都存储在主内存中,而每条线程还...
2018-04-09 22:13:38 179
原创 CPU多级缓存-缓存一致性
MESI(缓存一致性) 缓存一致性,用于保证多个CPU cache之间缓存共享数据的一致性。 MESI协议将cache line的状态分为modify(修改),exclusive(独占),shared(共享),invalid(失效)。 modify:当前CPU cache拥有最新数据,其他CPU拥有失效数据(cache line的状态是invalid),虽...
2018-04-08 18:40:40 855 1
原创 Linux其他命令
Linux其他命令 1. 显示当前所在位置 pwd 2. 搜索命令 命令:grep 要搜素的字符串 要搜索的文件 示例:搜索/usr/sudu.conf文件中包含字符串to的行 示例:搜索/usr/sudu.conf文件中包含字符串to的行 to要高亮显示 3. 管道命令 命令: | 将前一个命令的输出作为本次目录的输入 示例:查看所有进程中包括system字符串的...
2018-04-07 23:20:23 142
原创 Linux基本命令(压缩文件相关)
压缩文件的操作命令 一.打包并压缩文件 Linux中的打包文件一般是以.tar结尾的,压缩的命令一般是以.gz结尾的。而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz 命令:tar -zcvf 打包压缩后的文件名 要打包压缩的文件 z:调用gzip压缩命令进行压缩 c:打包文件 v:显示运行过程 f:指定文件名 示例:打包并压缩/te...
2018-04-07 23:07:02 155
原创 Linux基本命令(文件相关)
文件的操作命令(增删改查) (1)文件的创建(增) 命令:touch 文件名录 —-一个空文件 示例:在test目录下创建一个空文件 touch aaa.txt (2)文件的查看(查) 命令:cat/more/less/tail 文件 示例:使用cat查看/etc/sudo.conf文件,只能显示最后一屏内容 示例:使用more查看/etc/sudo.conf文件,可以显...
2018-04-07 00:29:29 141
原创 Linux基本命令(目录相关)
LInux的基本命令 1.目录切换命令 Windows中通过图形界面和鼠标可以任意切换需要进入的目录,但Linux必须通过cd命令切换目录。 Linux的目录结构 cd usr 切换到该目录下usr目录 cd ../ 切换到上一层目录 cd / 切换到系统根目录 cd ~ 切换到用户主目录 cd -切换到上一个所在目录...
2018-04-06 23:29:37 183
转载 java面试干货(转载)
本文属于转载 。。。。。。ThreadLocal(线程变量副本)Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量。采用空间换时间,它用于线程间的数据隔离,为每一个使用该变量的线程提供一个副本,每个线程都可以独立地改变自己的副本,而不会和其他线程的副本冲突。ThreadLocal类中维护一个Map,用于存储每一个线程的变量副...
2018-03-19 21:57:57 616
原创 各大公司java开发面试题总结(2)
mysql索引使用的是B+的数据结构 索引:用于提高数据访问速度的数据库对象 优点:(1)索引可以避免全表扫描 ;(2)对于非聚焦索引,有些查询甚至可以不访问数据项;(3)聚焦索引可以避免数据插入操作集中于表的最后一个数据页;(4)一些情况下,索引还可以避免排序。 虽然索引可以提高查询速度,但是他们也会导致数据库更新数据的性能下降,因为大部分数据更新时需要同时更新索引。 聚...
2018-03-19 21:56:35 279
原创 各大公司java开发面试题总结(1)
JVM有哪些分区? 程序计数器,java虚拟机栈,本地方法栈,堆,方法区(java栈中存放的是一个一个的栈帧,每一个栈帧对应一个被调用的方法。栈顶包括局部变量表,操作数栈,方法的返回地址,指向当前方法所属的类运行时常量池的引用,附加信息)。JVM中只有一个堆。方法区中最重要的是运行时常量池。 mysql使用的引擎 (1)Mylsam:不支持事务,适用于选择密集型,插入密集型,mysql默认的...
2018-03-17 16:40:14 689
原创 后台-分类管理(查询功能)
**思路图** 步骤: 1.首先浏览器上访问路径/admin_category_list。2.tomcat根据web.xml中的配置信息,拦截到了/admin_category_list,并将其由前端控制器DispatcherServlet处理。3.DispatcherServle根据SpringMVC的配置,将这次请求交由控制器类CategoryController进...
2018-03-16 11:24:53 2924
原创 天猫商城开发流程
一. 需求分析1.需求分析 首先确定要做的那些功能,包括前台和后台。 前台又分为单纯要展示的功能,以及会提交数据到服务端的功能。 2.表结构设计 表结构设计围绕功能需求进行,表结构设计有问题,会影响功能的实现。 3.原型 借助界面原型,可以低成本,高效率的与客户达成需求的一致性,原型分为前台原型和后台原型。 4.后台-分类管理 开始进行功能开发,...
2018-03-11 18:20:23 1328 1
转载 浅谈String,StringBuffer,StringBuilder
**三者主要的区别在于运行速度和线程安全** 一.运行速度 StringBuilder>StringBuffer>String 原因:String为字符串常量,StringBuffer和StringBuilder均为字符串变量,String一旦创建是不可更改的,而后两者对象是变量,是可以更改的。 1 .String string1=”abc”; 2 .System.
2018-01-28 14:34:00 178
原创 快速排序java实现
快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序在笔试面试中也是高频考点。 假设我们要对7,4,5,6,1,8,9,3,2这几个数进行排序,我们首先要找一个基准数
2017-12-05 21:04:46 217
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人