电商首页尺寸App首页IOC下边的叫什么

全部项目分类
<ins class="adsbygoogle"
style="display:inline-width:250height:250px"
data-ad-client="ca-pub-9510"
data-ad-slot=""
上海亿速网络科技有限公司
<ins class="adsbygoogle"
style="display:inline-width:250height:250px"
data-ad-client="ca-pub-9510"
data-ad-slot=""
共 212 个项目
上次更新: 日
上次更新: 日
上次更新: 日
上次更新: 日
上次更新: 日
上次更新: 日
上次更新: 日
上次更新: 日
上次更新: 日CyclicBarrier、CountDownLatch以及Semaphore是Java并发包中几个常用的并发组件,这几个组件特点是功能相识很容易混淆。首先我们分别介绍这几个组件的功能然后再通过实例分析和源码分析其中设计原理。 CyclicBarr...
先想说明一点,虽然有这样那样的不好的心态(比如中文技术书),但总体来说,国内的技术人员还是喜欢分享和教导别人的,这点我的个人感受和之前在园子里看到的朋友的感受恰恰相反。个人认为其实国内很多技术网友都是...
我们鼓励在编程时应有清晰的哲学思维,而不是给予硬性规则。我并不希望你们能认可所有的东西,因为它们只是观点,观点会随着时间的变化而变化。可是,如果不是直到现在把它们写在纸上,长久以来这些基于许多经验的...
前言 实例由于出现故障、部署或自动缩放的情况,会进行持续启动、重新启动或停止操作。它可能导致它们暂时或永久不可用。为避免问题,您的负载均衡器应该从路由中跳过不健康的实例,因为它们当前无法为客户或子系...
写在前面: 使用 vue-cli 可以快速创建 vue 项目,vue-cli很好用,但是在最初搭建环境安装vue-cli及相关内容的时候,对一些人来说是很头疼的一件事情,本人在搭建vue-cli的项目环境的时候也是踩了相当多的坑,特此...
问题 在微信小程序开发中,获取用户信息是经常会用到的!在之前,我们直接调用wx.getUserInfo接口,就可以直接获取用户的信息,然而为了安全考虑,从号开始,wx.getUserInfo接口不能直接调用,需要使用...
1)、SpringBoot默认的错误处理机制 默认效果: 1)、浏览器,返回一个默认的错误页面 浏览器发送请求的请求头: 2)、如果是其他客户端,默认响应一个json数据 原理: 可以参照ErrorMvcAutoConfiguration;错误处...
相信小伙伴们对C++已经非常熟悉,但是对命名空间经常使用到的地方还不是很明白,这篇文章就针对命名空间这一块做了一个叙述。 命名空间在1995年被引入到 c++ 标准中,通常是这样定义的: 命名空间定义了新的作用域...
为什么使用自动分区? 在oracle11g之前,oracle是不支持自动分区功能的,这就可能导致我们系统在运行一段时间之后,就需要看看分区是否创建或者写触发器进行创建分区,否则就会导致数据无法入库或者大量的数据全部...
最近国内MicroPython风靡程序界,是什么原因导致它这么火呢?是因为他功能强大,遵循Mit协议开源么? 错!因为使用它真的是太舒服了!!! Micropython的由来,这得益于Damien George这位伟大的计算机工程师,Dam...
概述 进行SpringBoot的Web开发过程中,我们很多时候经常需要重启Web服务器才能保证修改的 源代码文件、或者一些诸如xml的配置文件、以及一些静态文件生效,这样耗时又低效。所谓的热部署指的是我们不需要重启Web...
The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Test public void testQuer...
一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上供下载。 创建informi...
一、需求 由于我们的业务报警比较频繁,之前是针对每个报警进行具体处理,但是有时还会重复出现,或者后续处理有时忘记跟进等,因此进行报警短信的统计,可以针对一些问题与业务跟进,明确后续的优化方向等。 二、...
字数:2061 阅读时间:15分钟 环境:webpack3.8.1 前言 本文续接文章: webpack实战(一):真实项目中一个完整的webpack配置 上篇文章讲的是框架的配置方案,本文讲的是应用系统的配置方案。 这里,我们先梳理一...
作者:个推研发专家朱明智 前言:随着以Docker为典型代表的容器化理念逐渐兴起,众多的使用分布式架构的公司和企业,开始考虑对原有系统进行容器化升级。传统分布式架构为什么需要容器化?容器化面临怎样的机遇与...
作者董霖,个推高级技术总监。 前言:近期,智能大数据服务商“个推”推出了应用统计产品“个数”,今天我们就和大家来谈一谈个数实时统计与AI数据智能平台整合架构设计。 很多人可能好奇,拥有数百亿SDK的个推,...
不要以为年纪轻轻就跌倒了人生谷底,未来还有更大的下降空间等着你。 idea下载和安装JRebel 激活JRebel 访问https://my.jrebel.com/ 使用facebook或twitter登录 勾选 Build project automatically 快捷键 ctrl+s...
Git的git-merge是在Git中频繁使用的一个命令,很多人都觉得git合并是一个非常麻烦的事情,一不小心就会遇到丢失代码的问题,从而对git望而却步。本文基于Git 2.8.2对git-merge命令进行完整详细的介绍,特别是关于...
前言 最近有些朋友在面试阿里,加上 Java-Interview 项目的原因也有小伙伴和我讨论,近期也在负责部门的招牌,这让我想起年初那段长达三个月的奇葩面试经历。 本来没想拿出来说的,毕竟最后也没成。 但由于那几个...
最近在进行压力测试的时候发现在高并发下,有些接口很可能因为重复请求导致对数据库操作出来的数据不是你想要的那个样子。比如,用户签到,你只想让用户一天签到一次,为了防止签到多次,你对于每次强求,都去查询数据库今天是不是已经签到了,如果签了,就不让继续签到,如果没签到,插入签到数据,更新积分数据什么的。但是数据库操作是有时间的,在高并发下这种方式明显是不能限制重复请求提交的,有可能一个用户一天签到好几次,只要这个提交时间在很短的范围内就行(亲测确实是这样的)。
于是就引出了今天要讨论的问题,如何处理重复提交的问题。
首先看看准确的出现重复请求问题的原因(容老夫ctrl+v一段文字):
在业务开发中,我们常会面对防止重复请求的问题。当服务端对于请求的响应涉及数据的修改,或状态的变更时,可能会造成极大的危害。重复请求的后果在交易系统、售后维权,以及支付系统中尤其严重。 前台操作的抖动,快速操作,网络通信或者后端响应慢,都会增加后端重复处理的概率。
前台操作去抖动和防快速操作的措施,我们首先会想到在前端做一层控制。当前端触发操作时,或弹出确认界面,或disable入口并倒计时等等,此处不...
今年6月25日至27日, LinuxCon + ContainerCon + CloudOpen(LC3)将在北京国家会议中心召开。本次会议针对开源技术在人工智能和深度学习、区块链、云原生、虚拟服务器架构和微服务、新兴技术、基础实施和自动化、IoT和M2M、KVM、Linux系统、网络编排等10大前沿领域的应用,邀请了全球数百位业界大咖,用三天时间、超过200场分享,从市场、技术、产业甚至整个生态层面,将做全方位的探讨。
做父母的在给宝宝取名的时候,每一个字都包含着父母对孩子的期望和“爱”,所以每个字的含义都很重要,下面就给大家分享一些取名是比较好的一些字和它所代表的含义 磊:适合给高大威猛的男性做名字,有身姿挺拔,待人温和,卓立不群,不同凡响的美好寓意。 嘉:出自成语“盈车嘉穗”,形容稻子长得很好,一棵就能装满一车; 荟:音律优美,悦耳动听,有朝气蓬勃,善良珍贵的含义。 卉:指花草争艳的美好景色,也指在太平盛世中有才能的人不再隐瞒自己的才华,纷纷展露身手。 鹤:是动物字,指鸟类的一种,大多为白色,象征着吉祥、长寿的寓意。 海:指人有广阔的胸襟以及开阔的视野。 岗:比喻人有坚定的内心,坚强的性格,适合五行缺土的小男孩作名字。 川:指山川,指人有威望,受到众人的爱戴与支持, 程:比喻男孩理想远大,前程似锦,希望他建功立业,长大成才,坚韧不屈。 诚:表示男孩子工作能力出众,刚开始就能获取成功,也表示男孩成功也不忘诚信做人的品质。 梓:有朝气、茁壮成长的涵义,体现了家长希望男孩健康成长,学业有成,事业成功的愿望。 重:受到父母珍惜以及重视的含义,五行属火。 知:指知识以及见解;知适合作男孩名字,学识渊博,博学强知的美好...
写在前面 本系列是综合了自己在学习spark过程中的理解记录 + 对参考文章中的一些理解 + 个人实践spark过程中的一些心得而来。写这样一个系列仅仅是为了梳理个人学习spark的笔记记录,所以一切以能够理解为主,没有必要的细节就不会记录了,而且文中有时候会出现英文原版文档,只要不影响理解,都不翻译了。若想深入了解,最好阅读参考文章和官方文档。 大数据学习群: 其次,本系列是基于目前最新的 spark 1.6.0 系列开始的,spark 目前的更新速度很快,记录一下版本好还是必要的。 最后,如果各位觉得内容有误,欢迎留言备注,所有留言 24 小时内必定回复,非常感谢。 Tips: 如果插图看起来不明显,可以:1. 放大网页;2. 新标签中打开图片,查看原图哦。 1. spark 基本编程模式 spark 里有两个很重要的概念:SparkContext [一般简称为 sc] 和 RDD,在上一篇文章中 『 Spark 』2. spark 基本概念解析 有讲到。可以说,sc 和 RDD 贯穿了 spark app 的大部分生命周期,从 app 的初始化,到数据的清洗,计算,到最后获取,展示结果。 为了更加深入的了解 RDD 和基于 RDD 的编程模型,我们先把 RDD 的属性简单的分一个类,然后再通过一张流程图来理解。 1.1 RDD ...
https://zhuanlan.zhihu.com/p/ 中剖析过,consumer的每个实例是靠队列分配来决定如何消费消息的。那么消费进度具体是如何管理的,又是如何保证消息成功消费的(RocketMQ有保证消息肯定消费成功的特性(失败则重试)? 本文将详细解析消息具体是如何ack的,又是如何保证消费肯定成功的。 由于以上工作所有的机制都实现在PushConsumer中,所以本文的原理均只适用于RocketMQ中的PushConsumer即Java客户端中的DefaultPushConsumer。 若使用了PullConsumer模式,类似的工作如何ack,如何保证消费等均需要使用方自己实现。 注:广播消费和集群消费的处理有部分区别,以下均特指集群消费(CLSUTER),广播(BROADCASTING)下部分可能不适用。 保证消费成功 PushConsumer为了保证消息肯定消费成功,只有使用方明确表示消费成功,RocketMQ才会认为消息消费成功。中途断电,抛出异常等都不会认为成功——即都会重新投递。 消费的时候,我们需要注入一个消费回调,具体sample代码如下:
consumer.registerMessageListener(new MessageListenerConcurrently() {
public ConsumeConcurrentlyStatus consumeMessage(List&MessageExt& msgs, Cons...
算法简介 在网络资讯和电子商务信息爆炸式的增长,繁杂的信息中容易造成流失,再次背景下用户的个性化推荐系统显得尤为重要,对电子商务平台和社交信息平台产生了质的影响。 协同过滤推荐算法是诞生最早,并且较为著名的推荐算法。主要的功能是预测和推荐。算法通过对用户历史行为数据的挖掘发现用户的偏好,基于不同的偏好对用户进行群组划分并推荐品味相似的商品。 其主要价值体现在: 将潜在用户转化为支付用户; 提升电子商务平台交叉销售能力; 提升客户对网站的忠诚度; 提升广告渠道转化效率; 提升用户个性化体验。 协同过滤算法分类 基于用户的协同过滤算法(user-based collaboratIve filtering,简称:ucf) 基于物品的协同过滤算法(item-based collaborative filtering,简称:icf) 算法阶段性工作内容 第一阶段 建立用户行为评分权重模型,达到对用户行为数据化和可视化,。 以电子商品平台为例: 某用户进入商品下单页权重2%; 点击详情权重8%; 收藏15%; 支付20%; 分享15%; 好评20%; 评分20%; 差评即分数为负数(向量为反方向)。 第二阶段 建立测试集和训练集。 训练集:用于模型构建; 测试集:用于检测模型构建,此数据只在模型检验时使用,用于评估...
后台通过@RequestParam参数获取前台的中文时,产生乱码: 解决方法是修改tomcat的配置文件server.xml 将&Connector port="8080" protocal="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /& 修改为&Connector port="8080" protocal="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" /&
这是在学习css中遇到的一个问题。
div层调整zindex属性在IE中无效原因分析及解决方法 在CSS中,只能通过代码改变层级,这个属性就是z-index,要让z-index起作用有个小小前提,就是元素的position属性要是relative,absolute或是fixed。 1.第一种情况(z-index无论设置多高都不起作用情况): 这种情况发生的条件有三个: 1、父标签 position属性为relative; 2、问题标签无position属性(不包括static); 3、问题标签含有浮动(float)属性。 eg:z-index层级不起作用,浮动会让z-index失效,代码如下: &div style="position: z-index:9999;"& &img style="float:" src="http://7te9u8.com1.z0.glb.clouddn.com/wp-content/uploads/084691.jpg" alt="div层调整z-index属性无效原因分析及解决方法"& &/div& 解决办法有三个(任一即可): 1、position:relative改为position:absolute; 2、浮动元素添加position属性(如relative,absolute等); 3、去除浮动。 2.第二种情况 IE6下,层级的表现有时候不是看子标签的z-index多高,而要看整个DOM tree(节点树)的第一个relative属性的父标签的层级。 eg:IE7与IE6有着同样的bug,原因很简单,虽然图...
oracle数据库根据年龄段分组并查询每组的人数。
http://www.wps.cn/
Activiti脚本任务(ScriptTask) Activiti脚本任务(ScriptTask) 作者:邓家海 你一直问为什么到不了远方,请停下数数你的脚步,是不是还没迈开腿 对于没有接触过groovy脚本语言的人来说,可能比较难使用 应用场景: Activiti脚本任务比较少用,脚本任务一般是用在当前的监听器或者监听服务类都不能满足的情形下面,或者说后期系统维护,突然在不想改动系统的情况下需要对流程做一些适当的改变。仅仅是几个变量或者仅仅是一个计算公式等等。这个时候可以使用脚本任务。至于还用其他的作用,我暂时没去多了解。
官方解释: Script Task(脚本服务) A script task is an automatic activity. When a process execution arrives at the script task, the corresponding script is executed. 脚本任务是一个自动化活动。当一个流程执行到达脚本任务时,执行相应的脚本。 Graphical Notation(图形)
A script task is visualized as a typical BPMN 2.0 task (rounded rectangle), with a small 'script' icon in the top-left corner of the rectangle. d的的脚本任务可视化为一个典型的BPMN 2.0 任务(圆角矩形),在矩形的左上角带有一个小的‘脚本’图标。
来自公众号:京东技术 消息队列(MQ)是一种不同应用程序之间(跨进程)的通信方法。应用程序通过写入和检索出入列队的数据(消息)来通信,而无需通过专用链接来连接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用(Remote Procedure Call. RPC)的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求,这样天然的就实现了异步的目标。那么MQ还有哪些功能场景呢?下面逐一介绍。 解耦 MQ最直接的使用场景就是可以将两个系统进行解耦,比如我们的货款抵扣业务场景,用户生成订单发送MQ后立即返回,结算系统去消费该MQ进行用户账户金额的扣款。这样订单系统只需要关注把订单创建成功,最大可能的提高订单量,并且生成订单后立即返回用户。而结算系统重点关心的是账户金额的扣减,保证账户金额最终一致。这个场景里面还会涉及到重试幂等性问题,后面有介绍。 削峰填谷 还是以订单系统和结算系统场景为例,如果订单系统通过RPC框架来调用结算系统,在有高峰促销的情况下生成订单的量会非常大,而且由于生成订单的速度也非常快,这样势必会给结算系统造成...
###### 序言: 为啥要写这篇文章: 仅仅是因为这个框架让我了解和学习了很多其他额外的东西,不吐不快。 最近一直在寻找一个简单方便的模板框架,了解了众多nodejs的blog 和 cms 框架, 如: calypso,ghost, wordexpress, netlify-cms 电脑里装了一大坨各类项目。 纠结来纠结去,感觉KeystoneJS更具有特色。 calypso, wordexpress 说到底依赖wordpress的phpserver,并且wordpress 异常难用 ghost git上目前最火的cms项目,十分简洁高大上,theme目前还是太少 keystone 他特别的地方是,前端代码完全交给你创造,吼吼,可能起点比较其他高了一丢丢。 但是做过wordpress,你会发现这是多么难得。 --- 接下来就是记录一下我研究Keystone的整个过程,和该框架关系并不大。 Demo:https://tobeone.herokuapp.com/home (working on) ##### 列个提纲 - [安装keystone](#1) - [了解keystone以及如何编写](#2) - [配置HTTP2](#3) - 部署到heroku - 注册使用MongoLab云database - 使用cloudinary云服务存图片 - 注册使用mailchimp邮件系统 ## 安装keystone [安装方法](http://keystonejs.com/zh/docs/getting-started/)可以看官网。 准备工作,需要Node + MongoDB ,确保你的电脑里...
win下laravel Call to undefined function Illuminate\Encryption\openssl_cipher_iv_length() 解决方法 openssl_cipher_iv_length为openssl扩展里的函数
解决方法很简单 首先检查php.ini里有没有开启扩展:extension=php_openssl.dll 如果开启了还报错 只需要把php的目录加入环境变量 -重启电脑
细化配置讲解
性能优化的定义:在不影响系统运行正确性的前提下,使之运行的更快,完成特定的时间更短 上面的定义笼统,我们从五个方面进行阐述: 1.运算的性能——哪一个算法的执行性能好 2.内存的分配——程序需要分配多少内存,运行时的效率和性能最高 3.启动的时间——程序启动需要多少时间 4.程序的可伸缩性——程序在用户负载过重的情况下的表现 5.性能的认识——用户怎样才能认识到程序的性能
主要记录异常处理部分
``` 四、服务器的gzip压缩 1.ngx_http_gzip_module模块处理的9个指令 在处理时实时压缩 1&gzip on|off 开启或关闭gzip功能 2&gzip_buffers number size 用于设置文件使用缓存空间大小 number为空间个数 size为每个空间大小 3&gzip_comp_level 压缩程度 1-9 默认为1 4&gzip_disable根据客户端的请求 选择性的开启或关闭功能 如gzip_disable MSIE [4-6]\. 表示包含MSIE4 MSIE5 MSIE6的请求 nginx不会进行压缩 5&gzip_http_version 1.0|1.1 默认1.1 表示只有使用1.1版本以上的HTTP协议时 才会进行压缩 6&gzip_min_length 默认20 表示大于20字节的返回值才会被压缩 7&gzip_proxied 在反向代理时有效 是否在后端返回时进行gzip压缩 8&gzip_types text/plain ...表示根据响应页的mime 开启压缩功能 9&gzip_vary on|off 告诉客户端是否使用了压缩处理 默认off IE4会有bug 可以在nginx的配置add_header强制在返回头部添加vary:Accept-Encoding 达到相同的效果 2.ngx_http_gzip_static_module模块处理的指令 主要负责搜索和发送gzip预压缩的数据 并保存在服务器上 1&gzip_static on|off|always 开启或关闭该功能 2&gzip_proxied expired no-cache no-store private auth 3&gzip_var...
一个三维物体(一个长方体),它围绕着一个轴旋转。我已经有过一些与css 3d一起工作的经验,并且我脑海里开始出现了一个解决方案。我搜索了像“css 3d立方体”这样的关键词来确认我的想法。 对技术感兴趣的朋友可以加我前端学习裙
学习编号:落叶,,一起讨论进步~ 削尖轴 让我提醒你关于浏览器轴的事情。不是战争轴心,而是数字线路.。在三维笛卡尔坐标系中,我们都学到了同样的轴。 三维空间的笛卡尔坐标系是一对垂直的直线(轴)的有序三重奏,所有三个轴都有一个长度单位,每个轴都有一个方向。 维基百科:笛卡尔坐标系 下图显示了如何在浏览器中指向轴。 一种直角坐标系,它指向观察者。(图像信用:维基百科) x轴是水平的,y轴是垂直的,z轴从屏幕内出来。z轴零点值位于屏幕的平面上。记住这个事实。 理清视角 要创建一个3D对象,我需要一个带有透视图的元素(让我们称之为“场景”)。透视图是场景的深度,它取决于它包含的对象的大小。 .scene {
perspective: 800
如果透视图太小,物体就会被扭曲。如果它太大,3D效果就会减少到零。 此外,场景中的所有对象只有一个视角。而三维效应则取决于视点位置。 那么,如何计算视角呢?我发现它取决于转动轴。...
个人认为PySpider是一个十分容易上手而且功能强大的Python爬虫框架。支持多线程爬取、JS动态解析、出错重试、定时爬取等等的功能。最重要的是,它通过web提供了可操作界面,使用非常人性化。 最近由于工作的原因,秉承这服务广大高考考生和家长的态度ヾ(≧O≦)〃嗷~,我搜集了多所高校的高校招生章程。 安装PySpider 首先先要安装pip跟phantomjs: 1 sudo apt install python-pip phantomjs phantomjs是一个基于webkit内核的无界面浏览器,提供JavaScript API接口。在PySpider中用于JS动态解析。 之后可以用pip直接安装PySpider: 1 sudo pip install pyspider 通过以下指令就可以启动PySpider啦: 1 pyspider all 打开浏览器访问http://localhost:5000可以看到web界面: 之后点击Create可以新建一个爬虫项目: 之后就可以看到一个爬虫操作的页面: 页面分开为两半。左半边是爬虫结果预览,右半边是爬虫代码编写区域。 左侧上半部分是爬虫的每个网络请求的解析。下半部分是爬虫页面浏览。 最下面有5个按钮: enable css selector helper按钮:点击它启动css selector helper。用鼠标点击页面的元素可以很方便地生成该元素的css选择器表达式; web: 点击可以查看抓取的...
一、下载IPFS https://dist.ipfs.io/go-ipfs/v0.4.15/go-ipfs_v0.4.15_darwin-amd64.tar.gz 二、安装IPFS $ sudo ./install.sh Moved ipfs to /usr/local/bin $ /Users/shijun/Desktop/openSourceProject/go-ipfs/ipfs init initializing IPFS node at /Users/shijun/.ipfs generating 2048-bit RSA keypair...done peer identity: QmRMqW15KVaE4SWNx827fCGnkFhrJNigLqVVu71W4stqYf to get started, enter: ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme 三、加入节点 $ /Users/shijun/Desktop/openSourceProject/go-ipfs/ipfs daemon Initializing daemon... Successfully raised file descriptor limit to 2048. Swarm listening on /ip4/10.85.110.146/tcp/4001 Swarm listening on /ip4/127.0.0.1/tcp/4001 Swarm listening on /ip6/::1/tcp/4001 Swarm listening on /p2p-circuit/ipfs/QmRMqW15KVaE4SWNx827fCGnkFhrJNigLqVVu71W4stqYf Swarm announcing /ip4/10.85.110.146/tcp/4001 Swarm announcing /ip4/127.0.0.1/tcp/4001 Swarm announcing /ip6/::1/tcp/4001 API server listening on /ip4/127.0.0.1/tcp/5001 Gateway (readonly) s...
问:今年这是多少届的世界杯了? 答:第21届! 问:这是第几次开源众包做真正的现金抵用活动了?
什么么是JPA? 全称Java Persistence API,可以通过注解或者XML描述【对象-关系表】之间的映射关系,并将实体对象持久化到数据库中。 为我们提供了: 1)ORM映射元数据:JPA支持XML和注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中; 如:@Entity、@Table、@Column、@Transient等注解。
2)JPA 的API:用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的JDBC和SQL代码中解脱出来。 如:entityManager.merge(T t);
3)JPQL查询语言:通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。 如:from Student s where s.name = ? 但是: JPA仅仅是一种规范,也就是说JPA仅仅定义了一些接口,而接口是需要实现才能工作的。所以底层需要某种实现,而Hibernate就是实现了JPA接口的ORM框架。 也就是说: JPA是一套ORM规范,Hibernate实现了JPA规范!如图: 什么是spring data jpa? spirng data jpa是spring提供的一套简化JPA开发的框架,按照约定好的【方法命名规则】写dao层接口,就可以在不写接口实现的情况下,实现对数据库的访问和操作。同时提供了很多除了CRUD之...
作者:黄东旭 &“我希望能够把 TiDB 的设计的一些理念能够更好的传达给大家,相信大家理解了背后原因后,就能够把 TiDB 用的更好。” 做 TiDB 的缘起是从思考一个问题开始的:为什么在数据库领域有这么多...
华为云年中钜惠,注册抽免费高配(2核4G)云服务器,单人成团2折起抢购热销云产品;云服务器、数据库、安全防护、大数据等150+云产品,更有精彩好礼送不停!
最近两个月一直在研究 Swoole,研究成果即将在6.21正式开源发布,这段时间没有来水文章,趁着今天放假来水水吧。 借助这篇文章,我希望能够把 Swoole 安利给更多人。虽然 Swoole 可能目前定位是一些高级 phper 的玩具,让中低级望而生畏,可能对一些应用场景也一脸懵逼,但其实没这么难的。 在 Swoole 官网的自我介绍是“面向生产环境的 PHP 异步网络通信引擎”,首先 Swoole 它是一个网络应用的开发工具,它支持 Http、TCP、UDP、WebSocket。 Swoole 和我们传统的 PHP 开发差别是有的,需要理解的概念也是有的。使用目前一些基于 Swoole 的框架开发的话,从开发习惯上和传统的TP、LV 框架相差不多。 那为什么要使用 Swoole? 宇润认为有以下几点: - 常驻内存,避免重复加载带来的性能损耗,提升海量性能 - 协程异步,提高对 I/O 密集型场景并发处理能力(如:微信开发、支付、登录等) - 方便地开发 Http、WebSocket、TCP、UDP 等应用,可以与硬件通信 - PHP 高性能微服务架构成为现实 ### 常驻内存 目前传统 PHP框架,在处理每个请求之前,都要做一遍加载框架文件、配置的操作。这可能已经成为性能问题的一大原因,而使用 Swoole 则没有这个问题,一次加载多...
闲着没事,撸了一个App.使用Flutter,开开始在网上找的一些例子太马虎,研究了官网和MicroSoftHub写完的。已经在Android 5和 IOS11.3上测试通过。安装我就不说了,放个外链吧
# 概述 --- `Intellij IDEA`真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜。出于对`Intellij IDEA`的喜爱,我决定写一个与其相关的专栏或者系列,把一些好用的`Intellij IDEA`技巧分享给大家。本文是这个系列的第一篇,主要介绍一些你可能不知道的但是又实用的小技巧。 --- # 我最爱的【演出模式】 --- 我们可以使用【Presentation Mode】,将`IDEA`弄到最大,可以让你只关注一个类里面的代码,进行毫无干扰的`coding`。 可以使用`Alt+V`快捷键,弹出`View`视图,然后选择`Enter Presentation Mode`。效果如下: ![这里写图片描述](https://img-blog.csdn.net/49248?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpbnNvbmdiaW4x/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 这个模式的好处就是,可以让你更加专注,因为你只能看到特定某个类的代码。可能读者会问,进入这个模式后,我想看其他类的代码怎么办?这个时候,就要考验你快捷键的熟练程度了。你可以使用`CTRL+E`弹出最近使用的文件。又或者使用`CTRL+N`和`CTRL+SHIFT+N`定位文件。 如何退出这个模式呢?很简单,使用`ALT+V`弹出view视图,然后选择`Ex...
前言 最近有些朋友在面试阿里,加上 Java-Interview 项目的原因也有小伙伴和我讨论,近期也在负责部门的招牌,这让我想起年初那段长达三个月的奇葩面试经历。 本来没想拿出来说的,毕竟最后也没成。 但由于那几个...
今天来写一下关于购物车的东西, 这里首先抛出四个问题: 1)用户没登陆用户名和密码,添加商品, 关闭浏览器再打开后 不登录用户名和密码 问:购物车商品还在吗?
2)用户登陆了用户名密码,添加商品,关闭浏览器再打开后 不登录用户名和密码 问:购物车商品还在吗?
3)用户登陆了用户名密码,添加商品, 关闭浏览器,然后再打开,登陆用户名和密码
问:购物车商品还在吗? 4)用户登陆了用户名密码,添加商品, 关闭浏览器 外地老家打开浏览器
登陆用户名和密码 问:购物车商品还在吗? 上面四个问题都是以京东为模板, 那么大家猜猜结果是什么呢? 1)在 2)不在了 3)在 4)在 如果你能够猜到答案, 那么说明你真的很棒, 那么关于这四点是怎么实现的呢? (如果有不认可的小伙伴可以用京东实验一下) 下面我们就来讲解下购物车的原理,最后再来说下具体的code实现. 1)用户没有登录, 添加商品, 此时的商品是被添加到了浏览器的Cookie中, 所以当再次访问时(不登录),商品仍然在Cookie中, 所以购物车中的商品还是存在的. 2)用户登录了,添加商品, 此时会将Cookie中和用户选择的商品都添加到购物车中, 然后删除Cookie中的商品. 所以当用户再次访问(不登录),此时Cooki...
本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:SqlSessionFactoryBuilde...
String对象是不可变的。String类中每一个看起来会修改String值的方法,例如拼接、裁剪字符串,实际上都会创建一个全新的String对象,用来包含修改后的字符串内容。因此字符串的相关操作往往对性能有明显的影响。 1.2 定义 public final class String
implements java.io.Serializable, Comparable&String&, CharSequence
从代码可以看出String是final类型的,表示该类不能被继承,并且实现了Serializable、Comparable、CharSequence三个接口。 Serializable接口,表明String类是可序列化的。 Comparable接口,提供了一个compareTo(T o) 方法。 CharSequence接口,提供了length(),charAt(int index),subSequence(int start,int end),toString()方法。 1.3 属性 //final类型的字符数组,用于存储字符串内容
private final char value[];
//存放字符串的哈希值
// Default to 0
//序列化id
private static final long serialVersionUID = -4667710L; 1.4 构造函数 //不含参数的构造函数
public String() {
this.value = "".
//使用字符串类型的参数来初始化
public Stri...
tio-websocket-server的首发教程,并且是以showcase的形式展现的----不仅仅是个教程,还是个可以放心使用的脚手架。
单例模式(Singleton Pattern)是 Java 中常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 注意: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 主要解决:一个全局使用的类频繁地创建与销毁。 何时使用:当您想控制实例数目,节省系统资源的时候。 如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。 关键代码:构造函数是私有的。 优点: 1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。 2、避免对资源的多重占用(比如写文件操作)。 缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。 使用场景: 1、要求生产唯一序列号。 2、WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例...
&文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:`好好学java`,获取优质学习资源。 ### 一、概述 单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始。 链式存储结构的线性表将采用一组任意的存储单元存放线性表中的数据元素。由于不需要按顺序存储,链表在插入、删除数据元素时比顺序存储要快,但是在查找一个节点时则要比顺序存储要慢 使用链式存储可以克服顺序线性表需要预先知道数据大小的缺点,链表结构可以充分利用内存空间,实现灵活的内存动态管理。但是链式存储失去了数组随机存取的特点,同时增加了节点的指针域,空间开销较大。 ### 二、图解 下图就是最简单最一般的单向链表: ![这里写图片描述](https://user-gold-cdn.xitu.io//345c?w=668&h=87&f=png&s=8183) ##### 新增节点: 将值为element的新节点插入到第index的位置上。 首先要先找到索引为index-1的节点,然后生成一个数据为element的新节点newNode,并令index-1处节点的next指向新节点,新节点的next指向原来index处的节点。 ![这里写图片描述](https://user-gold-cdn.xitu.io//164...
The best elasticsearch highlevel java rest api-----bboss
基于bboss持久层和bboss elasticsearch客户端...
今天收到了来自Apache Vote我成为Serviceomb项目Committer的邮件,代表自己的贡献得到了充分的肯定;除了感谢团队的给力支持,我更希望将自己的成长经历——如何践行Apache Way的心得介绍给大家,让大家爱上Apache开源社区,也能和我一样成长为自己喜爱项目的Committer。 根据个人贡献获得价值(Government By Merit)
回忆我刚参与ServiceComb项目,面对上万行的存量代码,总觉得无从下手,甚至认为开源社区高手如云,如果没有深厚且对口的技术功底,还是不要来掺和了。
在这个困难而关键的时候,社区导师给了我明确的指导——不要怕,从小事做起,不要“善小而不为”。于是我静下心来,在Jira上寻找最简单的任务,主动请缨的第一个任务是支持配置兼容,具体需求是cse.xxx配置项和servicecomb.xxx配置项要具备等同效果,经过一番努力,成功Merge PR ;之后我又接下另一个简单任务,增加一个Annotation用于支持Json String作为请求参数……
Apache Way非常看重个人贡献,没有贡献,一切无从谈起,与开源软件同行,不仅看你获得了多少,更要坚持长期贡献,这是它与商业软件最大的不同...
最纯粹的世界杯,最神奇的大冷门。 德国0比1被墨西哥摩擦了。 日本历史性的赢了哥伦比亚。 C罗也挑平了西班牙。 梅西被冰岛狮吼吼愣神了。 就连11次进世界杯4强的巴西也被瑞士逼平了。 天台已经挤满了输红眼的人们。空气中充满了悲伤的气氛。这时候人群中突然传来一声嘶哑声:“快看,楼下又来了一大股民朋友!“ 众人揉揉眼,对的。那些是6月19日从股市中劳作归来的人们。大家目不斜视的直接上了天台,乌央乌央变的异常拥挤,颇有西二旗,高米店这类地铁绞肉机味道。 也许是惺惺相惜,此刻的球迷和股民互诉衷肠,互相安慰。一丝温暖阳光渐渐从众人眼里浮现。那是对面大厦的全屏广告版。硕大的标语像是符文一样催动着大家内心那最柔软的部分!没错!钱没了可以再赚。赚钱的动力就来源于花钱。人们凑了过来看着标牌上的字迹。那上面都写的什么呢? 如果看不清请走近点。点击我
一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操作。 - Redis 发布订...
今天发现使用chrome浏览器时,打开flash的网站后就出现"**此Flash Player 与您的地区不相容**"的提示信息。 按照提示操作后,点击 “重新安装” 按钮打开的是 [2144网站](https://flash.2144.com/) ,不是真实的Adobe官方网站。
一个即将消亡的技术,竟然还耍流氓,瞬间心里飞过十万个。。。。。。 ### 官网安装
打开 [Adobe的官网](https://get.adobe.com/cn/flashplayer/) (如何打开,就不说了,大家懂得),下载Flash Player版本,经过安装后不再出现`地区不兼容的提示`,则问题得到圆满解决。
如果问题依然存在,则继续向下看。 ### 安装低版本
卸载已安装的Adobe Flash Player PPAPI,在网上下载 低于 30.0.0 的Adobe Flash Player PPAPI 离线包安装,同时设置为”不检查更新“。 可在此处下载 [Flash Player PPAPI 25、26]( https://www.portablesoft.org/adobe-flash-player-offline-installer/)两个版本,如需其他版本自寻找。
查看当前win7、10系统,已安装的Flash版本: &
控制面板 -& Flash Player -& 更新 ### 禁止Chrome更新Flash插件
在Chrome安装目录下有一个名叫PepperFlash得文件夹,删除该文件夹下的所有内容,将该文件夹权限设...
相关文章 NIO 之 Selector实现原理 NIO 之 Channel实现原理 NIO 之 ByteBuffer实现原理 阻塞IO 所有的读写IO都是阻塞操作。 多路复用模型 select/poll 从程序的角度解释: 将 channel 注册到 seletor 上,通过轮询...
## 一、基本部署 ### 安装Ansible ``` # yum -y install epel-release # yum list all *ansible* # yum info ansible # yum -y install ansible ``` ### Ansible配置文件 ``` /etc/ansible/ansible.cfg 主配置文件 /etc/ansible/hosts Inventory /usr/bin/ansible-doc 帮助文件 /usr/bin/ansible-playbook 指定运行任务文件 ``` ### 定义Inventory ``` # cd /etc/ansible/ # cp hosts{,.bak} # & hosts # cat hosts [webserver] 127.0.0.1 192.168.10.149 [dbserver] 192.168.10.113 ``` ### 使用秘钥方式连接 ``` # ssh-keygen -t rsa # ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.10.149 # ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.10.113 # ssh-copy-id -i /root/.ssh/id_rsa.pub root@127.0.0.1 ``` ### 使用帮助 ``` # ansible-doc -l 列出ansible所有的模块 # ansible-doc -s MODULE_NAME 查看指定模块具体适用 ``` ### Ansible命令应用基础 ``` 语法:ansible [-f forks] [-m module_name] [-a args] 这次命令对哪些主机生效的 inventory group name ip all -f forks 一次处理多少个主机 -m module_name 要使用的模块 -a args 模块特有的参数 ...
二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则...
需要注意的是,在X86项目中,可以使用__asm{}来嵌入汇编代码,但是在X64项目中,再也不能使用__asm{}来编写嵌入式汇编程序了,必须使用专门的.asm汇编文件来编写相应的汇编代码,然后在其它地方来调用这些汇编代码...
华为云年中钜惠,注册抽免费高配(2核4G)云服务器,单人成团2折起抢购热销云产品;云服务器、数据库、安全防护、大数据等150+云产品,更有精彩好礼送不停!
ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, Tim...
问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里的问题啊; 解决:根...
前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");
按照文档要求创建数据库 sudo sercice mysql start wget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sql vim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了gradesystem数据库,并创建了...
node 模块机制 前言 说到node,就不免得提到JavaScript。JavaScript自诞生以来,经历了工具类库、组件库、前端框架、前端应用的变迁。通过无数开发人员的努力,JavaScript不断被类聚和抽象,从而更好的组织业务逻...
其实算不上一个游戏,就是两张图片,不停的重画,改变ball图片的位置。一个左右直线碰撞的,一个有角度碰撞的。 左右直线碰撞 package com.bjsxt. import javax.swing.*; import java.awt.*; publ...
你真的明白RPC 吗?一起来探究 RPC 的实质 不论你是科班出身还是半路转行,这么优秀的你一定上过小学语文,那么对扩句和缩句你一定不陌生。缩句就是去除各种修饰提炼出一句话的核心,而不失基本的语义。下面来实现...
今天碰到了一个问题,就是在给li设置提示框的时候,有用到遮罩效果,本来想把对应的出现在最顶层,可是不管将li设置的z-index值设为多大,li都没有出现在遮罩层之上。 我在网上查了z-index设置无效的原因,是这么...
CyclicBarrier、CountDownLatch以及Semaphore是Java并发包中几个常用的并发组件,这几个组件特点是功能相识很容易混淆。首先我们分别介绍这几个组件的功能然后再通过实例分析和源码分析其中设计原理。 CyclicBarr...
wget http://apache.fayea.com/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz export M2_HOME=/opt/apache-maven-3.3.9 terwer@terwer-PC:/opt/apache-maven-3.3.9$ PATH=$M2_HOME/bin:$PATH ter...
Java对象的序列化与反序列化
1.Sqoop: 《=》 SQL to Hadoop 背景 1)场景:数据在RDBMS中,我们如何使用Hive或者Hadoop来进行数据分析呢? 1) RDBMS ==& Hadoop(广义) 2) Hadoop ==& RDBMS 2)原来可以通过MapReduce InputFormat OutputFor...
问题1 : 新建了一个简单的工程,打包成release 包,并使用androidpluginmgr 来加载。发现启动了在宿主中的代理Activity 界面。而且宿主程序也意外停止了。 log发现,在 PluginInstrumentation.callActivityOn...
1.全量构建每次更新时都需要更新整个数据集,增量构建只对需要更新的时间范围进行更新,所以计算量会较小。 2.全量构建查询时不需要合并不同Segment,增量构建查询时需要合并不同Segment的结果,查询性能会受影响...
我在S/4HANA的事务码MM02里为Material维护图片文件作为附件: 通过如下简单的ABAP代码即可将图片文件的二进制内容读取出来: REPORT zgos_api. DATA ls_appl_object TYPE gos_s_obj. DATA lo_gos_api ...
导读 人们都希望在工作和生活中有所选择。但心理学家的调查研究表明,在多种选项中进行选择并不一定会使人们更快乐,甚至不会产生更好的决策。心理学家Barry Schwartz称之为“选择悖论”。云计算为企业IT组织带来...
Question 637. Average of Levels in Binary Tree Solution 思路:定义一个map,层数作为key,value保存每层的元素个数和所有元素的和,遍历这个树,把map里面填值,遍历结束后,再遍历这个map,把每层的平均数放到数组里...
可能大家在网上已经看过类似的python单行代码可以实现的功能,比如: 九九乘法表: print(' '.join([' '.join(['%s*%s=%-2s'%(y,x,x*y)for y in range(1,x+1)]) for x in range(1,10)])) 或者输出前100项斐波那契数...
## 前言 **背景情况** - vue - 2.5.11 - vue-cli 使用模板 `webpack-simple` - http请求:axios Vue 官方对于 ie 浏览器版本兼容情况的描述是 ie9+,即是 ie9 及更高的版本。经过测试,Vue 的核心框架 `vuejs` 本身,以及生态的官方核心插件(VueRouter、Vuex等)均可以在 ie9 上正常使用。 Vue 的作者尤雨溪对于 [Vue 的学习建议](https://github.com/TerryZ/js-develop-skill-summary/blob/master/vue-base.md#vue2x-%E5%AD%A6%E4%B9%A0%E9%A1%BA%E5%BA%8F%E5%BB%BA%E8%AE%AE) 中有提及为了将项目更好的生态化/工程化,要尽可能学习及使用新的 ECMAScript 规范。目前 ES6/ES2015 是可用度和稳定度较高的规范,文档齐全,国内还有 [阮一峰 《ECMAScript 6 入门》](http://es6.ruanyifeng.com/) 做了大量的文档翻译,开发环境可谓完善。然而版本较旧的浏览器并不支持 es6 规范,尤其是 ie 浏览器,即使是最高的 ie11 版本,对于 es6 规范也支持得并不全。如此则需要对所有原生不支持 ES6 特性的浏览器做兼容性处理。 本文将针对使用 Vue 生态开发完成的网站,以 ie9 版本为基础兼容目标,实现全功能正常使用的全面兼容解决方案。 ## ES6兼容 在 ie9 的环境上,es6 的部分新...
![心静只需一杯茗](http://upload-images.jianshu.io/upload_images/a25.jpg) --- ## 概述 在我的[《Docker Swarm集群初探》](https://www.jianshu.com/p/3f3c9e0e3db5)一文中,我们实际体验了Docker Swarm容器集群技术的魅力,与[《Kubernetes实践录》](https://www.jianshu.com/p/9bc87b5380e8)一文中提到的Kubernetes集群技术相比,Docker Swarm没有Kubernetes显得那么厚重,因此可以认为是更加轻量级的容器集群技术,这也就意味着上手更加方便快捷,使用起来也要省事很多。作为Docker集群技术三(或“四”)架马车之一的Docker Swarm,它从一开始便是Docker官方的“亲儿子”,发展到现在也经历了很多阶段和迭代。作者在学习的过程中也了解了一点其发展历史,发现有几个概念还是挺容易混淆的,因此撰写成文,是梳理,也是总结。 --- --- ## 初出茅庐之:经典Swarm 早在2014年底,Docker公司就设计了容器集群的方案组合:**Machine + Swarm + Compose**。其中Machine主要用于快速创建Docker运行环境,其支持在创建出来的节点上自动部署Swarm,此时的Swarm我们称为 **“经典Swarm”**,它是一款整合跨节点网络的集群式容器服务,其利用Docker守护进程...
最近两个月一直在研究 Swoole,研究成果即将在6.21正式开源发布,这段时间没有来水文章,趁着今天放假来水水吧。 借助这篇文章,我希望能够把 Swoole 安利给更多人。虽然 Swoole 可能目前定位是一些高级 phper 的玩具,让中低级望而生畏,可能对一些应用场景也一脸懵逼,但其实没这么难的。 在 Swoole 官网的自我介绍是“面向生产环境的 PHP 异步网络通信引擎”,首先 Swoole 它是一个网络应用的开发工具,它支持 Http、TCP、UDP、WebSocket。 Swoole 和我们传统的 PHP 开发差别是有的,需要理解的概念也是有的。使用目前一些基于 Swoole 的框架开发的话,从开发习惯上和传统的TP、LV 框架相差不多。 那为什么要使用 Swoole? 宇润认为有以下几点: - 常驻内存,避免重复加载带来的性能损耗,提升海量性能 - 协程异步,提高对 I/O 密集型场景并发处理能力(如:微信开发、支付、登录等) - 方便地开发 Http、WebSocket、TCP、UDP 等应用,可以与硬件通信 - PHP 高性能微服务架构成为现实 ### 常驻内存 目前传统 PHP框架,在处理每个请求之前,都要做一遍加载框架文件、配置的操作。这可能已经成为性能问题的一大原因,而使用 Swoole 则没有这个问题,一次加载多...
单例模式(Singleton Pattern)是 Java 中常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 注意: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 主要解决:一个全局使用的类频繁地创建与销毁。 何时使用:当您想控制实例数目,节省系统资源的时候。 如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。 关键代码:构造函数是私有的。 优点: 1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。 2、避免对资源的多重占用(比如写文件操作)。 缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。 使用场景: 1、要求生产唯一序列号。 2、WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例...
## 一、基本部署 ### 安装Ansible ``` # yum -y install epel-release # yum list all *ansible* # yum info ansible # yum -y install ansible ``` ### Ansible配置文件 ``` /etc/ansible/ansible.cfg 主配置文件 /etc/ansible/hosts Inventory /usr/bin/ansible-doc 帮助文件 /usr/bin/ansible-playbook 指定运行任务文件 ``` ### 定义Inventory ``` # cd /etc/ansible/ # cp hosts{,.bak} # & hosts # cat hosts [webserver] 127.0.0.1 192.168.10.149 [dbserver] 192.168.10.113 ``` ### 使用秘钥方式连接 ``` # ssh-keygen -t rsa # ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.10.149 # ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.10.113 # ssh-copy-id -i /root/.ssh/id_rsa.pub root@127.0.0.1 ``` ### 使用帮助 ``` # ansible-doc -l 列出ansible所有的模块 # ansible-doc -s MODULE_NAME 查看指定模块具体适用 ``` ### Ansible命令应用基础 ``` 语法:ansible [-f forks] [-m module_name] [-a args] 这次命令对哪些主机生效的 inventory group name ip all -f forks 一次处理多少个主机 -m module_name 要使用的模块 -a args 模块特有的参数 ...
什么么是JPA? 全称Java Persistence API,可以通过注解或者XML描述【对象-关系表】之间的映射关系,并将实体对象持久化到数据库中。 为我们提供了: 1)ORM映射元数据:JPA支持XML和注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中; 如:@Entity、@Table、@Column、@Transient等注解。
2)JPA 的API:用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的JDBC和SQL代码中解脱出来。 如:entityManager.merge(T t);
3)JPQL查询语言:通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。 如:from Student s where s.name = ? 但是: JPA仅仅是一种规范,也就是说JPA仅仅定义了一些接口,而接口是需要实现才能工作的。所以底层需要某种实现,而Hibernate就是实现了JPA接口的ORM框架。 也就是说: JPA是一套ORM规范,Hibernate实现了JPA规范!如图: 什么是spring data jpa? spirng data jpa是spring提供的一套简化JPA开发的框架,按照约定好的【方法命名规则】写dao层接口,就可以在不写接口实现的情况下,实现对数据库的访问和操作。同时提供了很多除了CRUD之...
# 本文介绍 本文仅按照业务系统开发角度描述异常的一些处理看法.不涉及java的异常基础知识,可以自行查阅 **《Java核心技术 卷I》** 和 **《java编程思想》** 可以得到更多的基础信息. ## 写在前面的话 笔者文笔功力尚浅,言语多有不妥,请慷慨指正,必定感激不尽. 本文提出了几个概念: **处理反馈** **业务异常** **代码错误** ,请认真思考一下各中区别. 在开发业务系统中,我们目前绝大多数采用MVC模式,但是往往有人把service跟controller紧紧的耦合在一起,甚至直接使用Threadlocal来隐式传值,并且复杂的逻辑几乎只能使用service中存储的全局对象来传递处理结果,包括异常. 这样一来首先有违MVC模式,二来逻辑十分不清晰,难以维护.本文结合工作经验,给出一些异常使用建议,使用spring来实战异常为我们带来的好处. 常常,我们读罢了各种java的书,异常的各种机制,特性都很清楚,但是始终还是不知道如何使用,甚至背下了概念,却不知道如何致用. 我们开发的业务系统,或者是产品,常常面临着这样的问题: * 系统运行出错,但是完全不知道错误发生的位置. * 我们找到了错误的位置,但是完全不知道是因为什么. * 系统明明出了错误,但是就是看不到错误堆栈信息. ## 什么情况需要自定义异常 经常看...
### 前端后台以及游戏中使用google-protobuf详解 [TOC] #### 0、什么是protoBuf protoBuf是一种灵活高效的独立于语言平台的结构化数据表示方法,与XML相比,protoBuf更小更快更简单。你可以用定义自己protoBuf的数据结构,用ProtoBuf编译器生成特定语言的源代码,如C++,Java,Python等,目前protoBuf对主流的编程语言都提供了支持,非常方便的进行序列化和反序列化。 特点: - 平台无关、语言无关。 - 二进制、数据自描述。 - 提供了完整详细的操作API。 - 高性能 比xml要快20-100倍 - 尺寸小 比xml要小3-10倍 高可扩展性 - 数据自描述、前后兼容 #### 1、下载protobuf的编译器 [目前最新版本为Protocol Buffers v3.5.1](https://github.com/google/protobuf/releases) #### 2、配置环境变量 解压 `protoc-3.5.1-osx-x86_64.zip` Mac 配置环境变量 `vi ~/.bash_profile` 使其配置生效`source ~/.bash_profile` ```json #protobuf export PROTOBUF_HOME=/Users/Javen/Documents/dev/java/protobuf/protoc-3.5.1-osx-x86_64 export PATH=$PATH:$PROTOBUF_HOME/bin ``` Window 将bin添加到path 即可 例如:`D:\protobuf\protoc-3.5.1-win32\bin` `本文在Mac环境下编写` **Mac**...
#### t-io 集群解决方案以及源码解析 [TOC] ##### 0x01 概要说明 本博客是基于老谭[t-io](https://gitee.com/tywo45/t-io) showcase中的[tio-websocket-showcase](https://gitee.com/tywo45/tio-websocket-showcase) 示例来实现集群。看showcase 入门还是挺容易的,入坑(入门)请看老谭写的[用t-io来写一个网页聊天室或客服是个怎样的体验](https://my.oschina.net/talenttan/blog/1806324)。 要深入理解具体实现原理后续的业务扩展,把t-io玩6起来还需要耐心看看源码,看了之后我相信你一定会有收获的,祝你好运。 其实[t-io](https://gitee.com/tywo45/t-io) 在`2.4`的版本中已加入的集群实现的逻辑代码,只是官方没有写文档以及完整的示例而已,在此不得不说[t-io](https://gitee.com/tywo45/t-io) 是一个比较良心的开源项目,很多业务场景都有考虑到。你们有需求也可以去[t-io](https://gitee.com/tywo45/t-io)提[issues](https://gitee.com/tywo45/t-io/issues)。 ##### 0x02 已有的集群解决方案 - [后天雨街同学写的小改下把tio-websocket-showcase变成可集群方式](https://my.oschina.net/u/2078/blog/1810080) - [J-IM 自己实现的一套集群方案](https://gitee.com/x...
&作者:张建 ## 什么是 Hash Join Hash Join 的基本定义可以参考维基百科:[Hash join](https://en.wikipedia.org/wiki/Hash_join)。简单来说,A 表和 B 表的 Hash Join 需要我们选择一个 Inner 表来构造哈希表,然后对 Outer 表的每一行数据都去这个哈希表中查找是否有匹配的数据。 我们不用 “小表” 和 “大表” 这两个术语是因为:对于类似 Left Outer Join 这种 Outer Join 来说,如果我们使用 Hash Join,不管 Left 表相对于 Right 表而言是大表还是小表,我们都只能使用 Right 表充当 Inner 表并在之上建哈希表,使用 Left 表来当 Outer 表,也就是我们的驱动表。使用 Inner 和 Outer 更准确,没有迷惑性。在 Build 阶段,对 Inner 表建哈希表,在 Probe 阶段,对由 Outer 表驱动执行 Join 过程。 ## TiDB Hash Join 实现 TiDB 的 Hash Join 是一个多线程版本的实现,主要任务有: + Main Thread,一个,执行下列任务: - 读取所有的 Inner 表数据; - 根据 Inner 表数据构造哈希表; - 启动 Outer Fetcher 和 Join Worker 开始后台工作,生成 Join 结果,各个 goroutine 的启动过程由 [fetchOuterAndProbeHashTable](https://github.com/pingcap/tidb/blob/source-...
Web 模板就在那里 模板引擎负责组装数据,以另外一种形式或外观展现数据。 浏览器中的页面是 Web 模板引擎最终的展现。 无论你是否直接使用模板引擎,Web 模板一直都在,不在前端就在后端,它的出现甚至可以追溯到超文本标记语言 HTML 标准正式确立之前。 服务器端的模板引擎 我所知道最早的 Web 模板引擎是 PHP,它正式诞生于 1997 年,工作在服务器端。让我们看看 PHP 官方的 intro-whatis: PHP(“PHP: Hypertext Preprocessor”,超文本预处理器的缩写)是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到 HTML中,尤其适合 web 开发。 PHPer 普遍赞同 PHP 本身就是最天然、原生的 PHP 模板引擎,因为她本来就是。在 PHP 的世界里多次出现过再包装的模板引擎,著名的有 smarty。 其它服务器端语言很多都有 HTML 模板引擎,比如 JSP、mustache。 毫无疑问,这些服务器端模板引擎最终生成的结果是 HTML(XML) 字符串,处理流程逻辑使用宿主语言本身的语法实现。 它们的共同特征:HTML 只是个字符串, 最终结果可能还需要类似 Tidy 这样的清洁或修正验证工具。 这里提出一个问题:二次封装的 smarty 有存在的必要么? 浏览器端的模板引擎 我所知道最早的前端...
前言 在上文Nginx+Tomcat关于Session的管理中简单介绍了如何使用redis来集中管理session,本文首先将介绍默认的管理器是如何管理Session的生命周期的,然后在此基础上对Redis集中式管理Session进行分析。 Tomcat Manager介绍 上文中在Tomcat的context.xml中配置了Session管理器RedisSessionManager,实现了通过redis来存储session的功能;Tomcat本身提供了多种Session管理器,如下类图: 1.Manager接口类 定义了用来管理session的基本接口,包括:createSession,findSession,add,remove等对session操作的方法;还有getMaxActive,setMaxActive,getActiveSessions活跃会话的管理;还有Session有效期的接口;以及与Container相关联的接口; 2.ManagerBase抽象类 实现了Manager接口,提供了基本的功能,使用ConcurrentHashMap存放session,提供了对session的create,find,add,remove功能,并且在createSession中了使用类SessionIdGenerator来生成会话id,作为session的唯一标识; 3.ClusterManager接口类 实现了Manager接口,集群session的管理器,Tomcat内置的集群服务器之间的session复制功能; 4.ClusterManagerBase抽象类 继承了ManagerBase抽象类,实现ClusterMana...
本文通过一个简易安全认证示例的开发实践,理解过滤器和拦截器的工作原理。 很多文章都将过滤器(Filter)、拦截器(Interceptor)和监听器(Listener)这三者和Spring关联起来讲解,并认为过滤器(Filter)、拦截器(Interceptor)和监听器(Listener)是Spring提供的应用广泛的组件功能。 但是严格来说,过滤器和监听器属于Servlet范畴的API,和Spring没什么关系。 因为过滤器继承自javax.servlet.Filter接口,监听器继承自javax.servlet.ServletContextListener接口,只有拦截器继承的是org.springframework.web.servlet.HandlerInterceptor接口。 上面的流程图参考自网上资料,一图胜千言。看完本文以后,将对过滤器和拦截器的调用过程会有更深刻理解。 一、安全认证设计思路 有时候内外网调用API,对安全性的要求不一样,很多情况下外网调用API的种种限制在内网根本没有必要,但是网关部署的时候,可能因为成本和复杂度等问题,内外网要调用的API会部署在一起。 实现REST接口的安全性,可以通过成熟框架如Spring Security或者shiro搞定。 但是因为安全框架往往实现复杂(我数了下Spring Security,洋洋洒洒大概有11个核心模块,shiro的源码代码量也比较惊人)同时可能...
& 凡是我yii2学习社群的成员都知道,我不止一次给大家说构造表单100%使用yii2的ActiveForm来实现,这除了能和AR更好结合外就是自动生成csrf隐藏域,一个非常安全的举措。 今天北哥就给大家普及下csrf是啥?如果你已经知道了可以直接拉文章到底部点个赞。:smile: **CSRF**(Cross-site request forgery跨站请求伪造)是一种对网站的恶意利用,在 2007 年曾被列为互联网 20 大安全隐患之一。 关于CSRF,要从一个故事开始~ # 老王丢钱事件 这个故事要从程序员老王丢了1万块钱说起,总之是进了小偷,找回无果。丢钱后的老王一直在思考,**钱是怎么丢的、为何丢钱、为何是我丢钱~~** 后来老王出现了严重的心理问题,他决定报复社会。 老王首先研究了网银系统,他发现转账是通过GET形式 ```php https://bank.abc.com/withdraw?account=liuxiaoer&amount=1000&to=abei ``` 这意思就是说将 **liuxiaoer** 的1000元钱转给**abei**,当然当请求到达银行服务器后,程序会验证该请求是否来自合法的session并且该session的用户就是 **liuxiaoer** 并且已经登录。 老王自己也有一个银行账号 **wang2**,他尝试登录并且通过浏览器发送请求给银行,代码如下 ```php https://bank.abc.com/wi...
![Desktop](https://upload-images.jianshu.io/upload_images/9824247-cf33cdd.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) --- ## 0x01. 概述 SpringBoot平时我们用的爽歪歪,爽到它自己连Tomcat都自集成了,我们可以直接编写SBT启动类,然后一键开启内置的Tomcat容器服务,确实是很好上手。但考虑到实际的情形中,我们的Tomcat服务器一般是另外部署好了的,有专门的维护方式。此时我们需要剥离掉SBT应用内置的Tomcat服务器,进而将应用发布并部署到外置的Tomcat容器之中,本文就实践一下这个。 --- ## 0x02. 修改打包方式 修改项目的pom.xml配置,我们修改其打包方式为war方式,如: ``` com.example demo 0.0.1-SNAPSHOT war ``` --- ## 0x03. 移除SBT自带的嵌入式Tomcat 修改pom.xml,从maven的pom中移除springboot自带的的嵌入式tomcat插件 ``` org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat ``` --- ## 0x04. 添加servlet-api依赖 修改pom.xml,在maven的pom中添加servlet-api的依赖 ``` javax.servlet javax.servlet-api 3.1.0 provided ``` --- ## 0x05. 修改启动类,并重写初始...
Intellij IDEA神器那些让人爱不释手的小技巧
目前提升H5应用加载速度的方式有很多,比如缓存、cdn加速、代码压缩合并和图片压缩等技术。这些方法相信大伙如数家珍,然而这些招用完后,是否还有优化空间呢?现在我们祭出大杀器——HTTP 2.0 ...
MySQL-性能优化-索引和查询优化 要知道为什么使用索引,要知道如何去使用好索引,使自己的查询达到最优性能,需要先了解索引的数据结构和磁盘的存取原理 参考博客:MySQL索引背后的数据结构及算法原理 如上这篇博客写的挺好,我就不再造轮子了,对如上博客,我总结如下几个重要的要点: 1. 不使用顺序查找,因为顺序查找比较慢,通过特定数据结构的特点来提升查询速度,这种数据结构就是可以理解成索引。 2. 索引一般以文件形式存储在磁盘上,索引检索需要磁盘I/O操作,为了尽量减少磁盘I/O。磁盘往往不是严格按需读取,而是每次都会预读,而且主存和磁盘以页为单位交换数据,所以在读取的数据不在主存中时,会从磁盘中读取一批数据(页)到主存中。 3. 不管在哪种程序优化上,要想快速挺高性能,直接将常用的、少变更的数据直接读取到内存中,使用的时候就直接在内存上读取,而不去磁盘上读取,减少I/O操作,这样就能使程序快上10倍以上。但由于内存容量的限制,也不可能将所有的数据都放内存中。 MySQL索引分类 普通索引:最基本的索引,没有任何限制。 唯一索引:与”普通索引”类似,不同的就是:索引列的值必须唯一,但允许有空值。 主键索引:它是一种特殊的唯一索引...
摘要: 在最近的飞天技术汇CDN Tengine开源技术沙龙上,阿里云CDN团队的高级开发工程师墨飏进行了《Tengine的调试与资源监控》的主题分享。本文为演讲记录,从Tengine的内存调试、核心结构、upstream、coredump四个部分展开,为大家整理和分享一些实践经验,希望能给关注Tengine的开发者带来一些帮助与启发。
老码农在[上一篇博客](https://my.oschina.net/greenlaw110/blog/1811714) 给出了如何从头开始创建一个 自带自动化测试工具的 RESTful 服务项目的例子. 今天我们在这个简单例子上做延伸, 把这个例子改写为一个简单的 TODO Task 应用. 该应用会提供以下服务端口: * GET /todos - 返回所有的 TODO 项 * GET /todos/?q=? - 查询 TODO 项, 所有描述符合 q 参数的 TODO 项都会被返回 * GET /todos/{id} - 返回指定 ID 的 TODO 项 * POST /todos - 添加一条 TODO 项 * DELETE /todos/{id} - 删除指定 ID 的 TODO 项 ## 1. 创建项目 下面开始创建初始项目: ``` mvn archetype:generate -B \ -DgroupId=demo.todo \ -DartifactId=todo-service \ -DarchetypeGroupId=org.actframework \ -DarchetypeArtifactId=archetype-simple-restful-service \ -DarchetypeVersion=1.8.8.5 ``` 下面我们将项目用 Intellij IDEA 打开. (推荐使用 IDEA 开发 Act 应用, 社区版足够使用了) ![image](https://user-images.githubusercontent.com/01817-cd25d77e--b55b77e1b.png) ## 2. 加入数据库访问插件依赖 可以删除掉项目创建的 `Service.java` 文件. 然后在 `pom.x...

我要回帖

更多关于 电商首页 的文章

 

随机推荐