技术文章

MVC介绍

ぐ巨炮叔叔 提交于 2021-02-18 06:02:21
##Model–view–controller Model–view–controller (MVC) is a software pattern for implementing user interfaces. It divides a given software application into three interconnected parts, so as to separate internal representations of information from the ways that information is presented to or accepted from the user.The central component, the model, consists of application data, business rules, logic, and functions. A view can be any output representation of information, such as a chart or a diagram. Multiple views of the same information are possible, such as a bar chart for management and a

poi导入excel表格数据到数据库的时候,对出生日期的校验

本秂侑毒 提交于 2021-02-18 06:00:13
出生日期格式为8位数字的字符串 如:yyyyMMdd 规则:yyyy大于1900并小于当前时间,月、日 按日期规则校验        // 解决读过来的字符串显示为科学计数法问题 BigDecimal bd = new BigDecimal(strValues[6]); // strValues[6]为第6列读取的数据 String s = bd.toPlainString(); // 设置出生日期格式 SimpleDateFormat sd = new SimpleDateFormat("yyyyMMdd" ); // 获取当前系统时间 Integer time = Integer.valueOf(sd.format( new Date())); // setLenient用于设置Calendar是否宽松解析字符串,如果为false,则严格解析;默认为true,宽松解析 sd.setLenient( false ); try { // 转成指定的格式 sd.parse(bd.toPlainString()); } catch (ParseException e) { throw new BaseException("出生日期格式不正确" ); } if ((1900 > Integer.valueOf(s.substring(0,4))) || (Integer.valueOf

一份还热乎的蚂蚁金服面经(已拿Offer)!附答案!!

泄露秘密 提交于 2021-02-18 05:58:26
点击上方“ 方志朋 ”,选择“置顶公众号” 技术文章第一时间送达! 本文转载于公众号:Hollis 由于作者面试过程中高度紧张,本文中只列出了自己还记得的部分题目。 经历了漫长一个月的等待,终于在前几天通过面试官获悉已被蚂蚁金服录取,这期间的焦虑、痛苦自不必说,知道被录取的那一刻,一整年的阴霾都一扫而空了。 笔者面的是阿里的Java研发工程师岗,面试流程是3轮技术面+1轮hr面。 1 意外的一面 一面的时候大概是3月12号,面完等了差不多半个月才突然接到二面面试官的电话。一面可能是简历面,所以问题比较简单。 ArrayList和LinkedList区别 ArrayList 是一个可改变大小的数组。当更多的元素加入到ArrayList中时,其大小将会动态地增长。内部的元素可以直接通过get与set方法进行访问,因为ArrayList本质上就是一个数组, LinkedList 是一个双链表,在添加和删除元素时具有比ArrayList更好的性能.但在get与set方面弱于ArrayList。 当然,这些对比都是指数据量很大或者操作很频繁的情况下的对比,如果数据和运算量很小,那么对比将失去意义。 什么情况会造成内存泄漏 在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点: 首先,这些对象是可达的,即在有向图中,存在通路可以与其相连; 其次,这些对象是无用的

一份还热乎的蚂蚁金服面经(已拿Offer)!附答案!!

非 Y 不嫁゛ 提交于 2021-02-18 05:57:24
本文来自我的知识星球的球友投稿,他在最近的校招中拿到了蚂蚁金服的实习生Offer,整体思路和面试题目由作者——泽林提供,部分答案由Hollis整理自知识星球《Hollis和他的朋友们》中「直面Java」板块。 经历了漫长一个月的等待,终于在前几天通过面试官获悉已被蚂蚁金服录取,这期间的焦虑、痛苦自不必说,知道被录取的那一刻,一整年的阴霾都一扫而空了。 笔者面的是阿里的Java研发工程师岗,面试流程是3轮技术面+1轮hr面。 意外的一面 一面的时候大概是3月12号,面完等了差不多半个月才突然接到二面面试官的电话。一面可能是简历面,所以问题比较简单。 ArrayList和LinkedList区别 ArrayList 是一个可改变大小的数组.当更多的元素加入到ArrayList中时,其大小将会动态地增长.内部的元素可以直接通过get与set方法进行访问,因为ArrayList本质上就是一个数组. LinkedList 是一个双链表,在添加和删除元素时具有比ArrayList更好的性能.但在get与set方面弱于ArrayList. 当然,这些对比都是指数据量很大或者操作很频繁的情况下的对比,如果数据和运算量很小,那么对比将失去意义. 什么情况会造成内存泄漏 在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点: 首先,这些对象是可达的,即在有向图中,存在通路可以与其相连

ASP.NET Core开发之HttpContext

杀马特。学长 韩版系。学妹 提交于 2021-02-18 05:36:03
ASP.NET Core中的HttpContext开发,在ASP.NET开发中我们总是会经常用到HttpContext。 那么在ASP.NET Core中要如何使用HttpContext呢,下面就来具体学习ASP.NET Core HttpContext。 注入HttpContextAccessor ASP.NET Core中提供了一个 IHttpContextAccessor接口,HttpContextAccessor 默认实现了它简化了访问HttpContext。 它必须在程序启动时在IServicesCollection中注册,这样在程序中就能获取到HttpContextAccessor,并用来访问HttpContext。 services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); 获取HttpContextAccessor 下面来实际做一个操作,获取 HttpContextAccessor。 新建一个ASP.NET Core Web 应用程序,选择Web 应用程序。 身份验证勾选为不进行身份验证。 然后在HomeController 加入如下代码: public class HomeController : Controller { private IHttpContextAccessor

用多线程优化Excel表格数据导入校验的接口

爱⌒轻易说出口 提交于 2021-02-18 05:35:28
公司的需求,当前某个Excel导入功能,流程是:读取Excel数据,传入后台校验每一条数据,判断是否符合导入要求,返回给前端,导入预览展示。(前端等待响应,难点)。用户再点击导入按钮,进行异步导入(前端不等待,好做)。当前接口仅支持300条数据,现在要求我要支持3000条数据。 解决问题,思路是关键。 首先,查看接口,找到读取表格的位置,看到判断,如果数据量大于300,直接返回。把300改成3000. 然后,分析导入数据校验,都是和哪些数据进行校验的,这些数据都是从数据库来的。每一次都从数据库查询,那肯定是慢的。就算是查询Redis缓存,也要有网络消耗,增加缓存的压力。虽然单机Redis有12万次/秒的查询性能,12万除以3000得40,如果这样玩,40个人使用就拖垮系统了。同一个数据,非要查3000次,那是不是傻???所以减少每一次的查询,把数据库查询都加上Redis缓存,把Redis缓存查到的数据,在方法中创建并发安全容器ConcurrentHashMap存储数据,避免重复的查询操作,只查一次直到方法调用结束。 Map<String, Object> map = new ConcurrentHashMap(); Object obj = map.get("key" ); if ( null == obj){ // 查询缓存,或者数据库 String value = "数据" ;

Chisel3-Intellij IDEA安装Scala插件

依然范特西╮ 提交于 2021-02-18 05:32:53
https://mp.weixin.qq.com/s/xTk5ucvSNuwsh8C6E362cg 后续开启RISC-V开发相关内容。 RISC-V开发推荐使用Chisel编程语言。Chisel即Constructing Hardware in a Scala Embedded Language: Chisel is an open-source hardware construction language developed at UC Berkeley that supports advanced hardware design using highly parameterized generators and layered domain-specific hardware languages. Hardware construction language (not C to Gates) Embedded in the Scala programming language Algebraic construction and wiring Abstract data types and interfaces Bulk connections Hierarchical + object oriented + functional construction Highly

2016女生赛 HDU 5710 Digit-Sum(数学,思维题)

霸气de小男生 提交于 2021-02-18 05:32:34
Digit-Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 782 Accepted Submission(s): 241 Problem Description Let S ( N ) be digit-sum of N , i.e S ( 109 ) = 10 , S ( 6 ) = 6 . If two positive integers a , b are given, find the least positive integer n satisfying the condition a × S ( n ) = b × S ( 2 n ) . If there is no such number then output 0. Input The first line contains the number of test caces T ( T ≤ 10 ) . The next T lines contain two positive integers a , b ( 0 < a , b < 101 ) . Output Output the answer in a new line for each

QSplitter实现滑动窗口和悬浮按钮

好久不见. 提交于 2021-02-18 05:32:15
1 QSplitter实现滑动窗口和悬浮按钮 软件应用中需要设计右侧滑动窗口,通过一个按钮来实现窗口的隐藏和显示,应用场景比如显示主界面的详细信息。 (1) 在qt design 中添加QSplitter ,添加主窗口界面和右侧滑动窗口界面。 (2) 在程序中添加浮动按钮,并在初始化中设置按钮的属性 m_btnFold.setParent(this); m_btnFold.setFocusPolicy(Qt::NoFocus); m_btnFold.setFixedSize(16, 78);//设置大小 m_btnFold.setIconSize(m_btnFold.size()); m_btnFold.move(this->width() - m_btnFold.width(), (this->height() - m_btnFold.height()) / 2);//设置移动位置 m_btnFold.setStyleSheet("border:0px;border-style:outset;");//设置无边框 m_btnFold.setFlat(true);//设置扁平按钮 m_btnFold.setVisible(true);//设置可见 m_btnFold.setStyleSheet("background:url(:/qss/image/unfoldbtn.png)

深拷贝和浅拷贝

℡╲_俬逩灬. 提交于 2021-02-18 05:30:37
  今天,我们来玩一下深拷贝和浅拷贝吧。可以吧,别给我面子,随便玩,啥姿势都行。   说深浅拷贝之前,我们先来谈一谈JS的存储,JS变量存储有栈存储和堆存储,基本数据类型存放在栈中,而复杂数据类型存放在堆中,复杂数据类型的引用数据类型的地址存储在栈中   来看看上面这张图,应该还是比较清晰的,可能有的朋友会问,不是要要说深浅拷贝吗?怎么扯到变量存储了,别急嘛,做正事前不得有个前戏啥的才舒服嘛,对吧   来,我们赶紧开始做正事   先来说一下 深拷贝:当一个对象拷贝另一个对象,其中一个对象的数据发生改变不会影响另一个对象的数据,因为拷贝的是原来对象的数据。        浅拷贝:当一个对象拷贝另一个对象的时候,只要其中一个对象发生改变那另一个对象也发生改变,因为浅拷贝拷贝的是对象的地址。    大家可以结合着上面的数据存储来理解一下子   再给大家举一个大栗子   假设你现在电脑中有一个文件夹,你把它复制了,那你改变其中一个文件夹里的数据另一个文件夹的内容会不会变,这个就是深拷贝   那现在我们给文件创建两个快捷方式,你通过其中一个快捷方式进入文件夹修改了数据,那用另一个快捷方式进入文件夹时文件夹的内容是否被改变了,这就是浅拷贝   薛微等一会啊,我去给你们做个小黄图   我做好了,准备发车      文件夹2是由文件夹一复制过去的(相当于深拷贝)