问大家V10的mac系统哪个版本稳定最稳定省电

正在初始化报价器问问大家太原隔音窗哪家质量好?3个回答1836fff64太原隔音窗以下几家的产品质量做的好
红旗门窗厂
北大街85号
兴华门窗厂
解放路205号附近
鑫源铁艺门窗厂
王村南街170号附近
赤果果丶9113太原隔音窗质量的是下面几家,都是比较出名的,售后服务很好,群众也都认可的。
亲贤千禧发满门窗有限公司
山西云盛公司塑钢门窗厂
金不换经贸有限公司铝塑门窗厂
太原市小店区华福德灵门窗加工厂
你可以参考一下,希望我的回答能帮到你。
dfe30281:太原市亿嘉门窗有限公司
地址:太原市小店区黄陵路38
2:泽布尼茨门窗制造公司
地址:太原市迎泽区龙堡街39号
以上是太原隔音窗质量比较好的两家,希望对你有所帮助。
热门问答123456789101112131415161718192021222324252627282930相关问答1个回答猴肮扒1西安买房子一般首付是房屋总价款的百分之二十到百分之三十之间,具体还得看多大面积,然后总房款多少。希望我的回答可以给你带来帮助!
3个回答TD哥哥5089笔记本dell设置bios密码的方法
1、若知道用户原来设定的口令,可在HDD硬盘主菜单下按小键盘的6键(或右方向键),选择“Disk sequrity commands”-...1个回答你猜5036原理为:门体采用优质不锈钢及铝合金专用型材制作,采用平行四边形原理铰接,伸缩灵活行程大。驱动器采用特种电机驱动,蜗杆蜗轮减速,并设有自动离合或手动离合器,自动离合停电时可自动启闭,...3个回答xiazhmengw439深圳市阿莱斯科技有限公司的笔记本触摸板维修价格是50元
深圳市福田区赛格电子市场创赛特电子经营部的笔记本触摸板维修价格是80元
深圳亚星华科技有限公司的笔记本触摸板维修...3个回答挚爱小慧zXX看看你卧室的环境,挑个能与墙面、地板的色调应当相互呼应的上下床,这样能使空间感变强,至少看起来不那么挤,另外现在市面上也有很多针对小型卧室设计的家具你可以去看看希望能装修成你想要的...3个回答njQBZ95异武汉市蚂蚁搬家公司服务还是很好的,他们工人服务很好。 武汉吉庆蚂蚁搬家公司是武汉市专业搬家公司,自开业以来,汉口搬家公司已为众多的家庭和工厂完成搬家搬场大事。汉口搬家公司以服务居民...1个回答天使的眼泪麻麻长虹等离子屏幕维修需要80-190元,是一种平面显示屏幕,光线由两块玻璃之间的离子,射向磷质而发出。放出的气体并无水银成份,而是使用惰性气体氖及氙混合而成,这种气体是无害气体。希望...3个回答ssll0591买房时,我们考虑小区的公共交通方便与否,有无,是否有公交直达,但却忽视了小区的内部交通。2个回答坬疝峖办理西安房产证交费都需要交:1、契税;按房屋交易额5%缴纳。(买方承担)2、销售不动产营业税:按房屋交易额5.5%缴纳。(卖方承担)3、土地增值税:按房屋交易额1%缴纳。(卖方承担...3个回答时尚-小素格兰仕多用途锅的价格现在大概在100元-300元左右,格兰仕多用途锅的功能还是很强大的,可以炖汤、煮面、煎饼、炸鸡翅、烤肉。温控器准确控温,烹饪得以应手。防干烧设计,干锅自动安全保...每周为您推送最有价值的开源技术内参!
### 一、背景
在学习Spring Cloud过程中,使用了Eureka发现服务,但是发现EurekaServer的界面全英文,并且和我们现在页面风格不符,所以尝试找到汉化和修改样式的方法。网上的方法多,但是大多都是,下载jar替换文件,这样做的话,需要把jar修改后重新上传到私服,更新也是比较麻烦 ### 二、主要思路
方式还是采用覆盖但是,不是修改jar包,而是将jar中文件复制到新项目中,放到resource文件下,通过打包进行文件覆盖 ### 三、实现过程 1. 解压 spring-cloud-netflix-eureka-server.jar 2. 将 static 和 templates 两个文件夹复制到resource中 3. 修改ftl文件 和 css 文件 ### 四、代码实现 Pom 文件 4.0.0 com.demodashi eureka-server-hans 1.0-SNAPSHOT Eureka 服务器 Edgware.SR2 org.springframework.boot spring-boot-starter-parent 1.5.9.RELEASE org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-eureka-server org.springframework.boot spring-boot-maven-plugin org.springframework.cloud spring-cloud-dependencies ${spring.cloud.version} pom import 修改ftl 和 css 首页 启动时起最后1000条 ...
SpringDataJPA是Spring Data的一个子项目,通过提供基于JPA的Repository极大的减少了JPA作为数据访问方案的代码量,你仅仅需要编写一个接口集成下SpringDataJPA内部定义的接口即可完成简单的CRUD操作。
Autowired注解 Autowired顾名思义,表示自动注入,如下是Autowired注解的源代码: @Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Autowired {
* Declares whether the annotated dependency is required.
* &p&Defaults to {@code true}.
boolean required()
} 从Autowired的实现可以看到,Autowired可以用于类的构造方法,类的字段,类的方法以及注解类型上,但是Autowired不能用于类上面。 关于Autowired注解,有如下问题需要解决:
1. Autowired作用在不同的范围上(构造方法,字段、方法)上,它的装配策略如何,按名称还是类型?
2. 为构造方法,字段和方法添加Autowired注解之后,谁来解析这个Autowired注解,完成装配
3. 装配的bean从何处而来,是在Spring的xml文件中定义的bean吗? 从Autowired的javadoc开始
从Autowired的javadoc中得到如下信息
1. AutowiredAnnotationBeanPostProcessor负责扫描Autowired注解,然后完成自动注入
2. 可以对私有...
& 通过之前的[《消息驱动的微服务(入门)》](http://blog.didispace.com/spring-cloud-starter-dalston-7-1/)一文,相信很多朋友已经对Spring Cloud Stream有了一个初步的认识。但是,对于[《消息驱动的微服务(核心概念)》](http://blog.didispace.com/spring-cloud-starter-dalston-7-2/)一文中提到的一些核心概念可能还有些迷糊,下面我们将详细的来学习一下这些概念。本文我们就来学习和使用一下“消费组”这一概念。 ## 使用消费组实现消息消费的负载均衡 通常在生产环境,我们的每个服务都不会以单节点的方式运行在生产环境,当同一个服务启动多个实例的时候,这些实例都会绑定到同一个消息通道的目标主题(Topic)上。 默认情况下,当生产者发出一条消息到绑定通道上,这条消息会产生多个副本被每个消费者实例接收和处理,但是有些业务场景之下,我们希望生产者产生的消息只被其中一个实例消费,这个时候我们需要为这些消费者设置消费组来实现这样的功能,实现的方式非常简单,我们只需要在服务消费者端设置`spring.cloud.stream.bindings.input.group`属性即可,比如我们可以这样实现: - 先创建一个消费者应用`SinkReceiver`,实现了`greetings`主题上的输入通道...
本文首发于个人微信公众号《andyqian》,期待你的关注~ 引言
熟悉Java的童鞋,应该对OOM比较熟悉。该类问题,一般都比较棘手。因为造成此类问题的原因有很多。今天就分享一个非常有意思的案例。(说实话。这个问题,我也是前两天才遇到的。花了不少时间来分析。觉得非常有意思,记录在此。大神勿喷!) 问题场景 重启应用时,调试到给MQ发消息时。有如下错误: Exception in thread "Thread-4" java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:717)
at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:957)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1378)
at org.apache.activemq.thread.PooledTaskRunner.wakeup(PooledTaskRunner.java:81)
at org.apache.activemq.transport.failover.FailoverTransport.reconnect(FailoverTransport.java:757)
at org.apache.activemq.transport.failover.FailoverTransport.start(FailoverTransport.java:344)
本文首发于个人微信公众号《andyqian》,期待你的关注! 前言
今天我们一起来做个简单有趣的实验。熟悉Java的童鞋,对ScheduledExecutorService 类应该不陌生。不记得的童鞋,先回忆下。 实验一 我们先看下下面这段简单的代码。如下: public class ExecutoryServiceTest {
private static ScheduledExecutorService executorService = Executors.newScheduledThreadPool(10);
public static void main(String[] args){
executorService.scheduleAtFixedRate(new Runnable() {
public void run() {
int[] array
= new int[1];
System.out.println("&hello world&");
System.out.println(array[1]);
}},0,2, TimeUnit.SECONDS);
} 够简单了吧。意思我就不再阐述了。看完别急,我们先回答下面这个问题。 问题一: 请问:上面一共打印了多少个&hello world&。 实验二
看到此处的童...
## 又产生的问题 自从上次做过优化之后,貌似程序跑的还行,但是,最近发现日志中有报这样的错: ```java java.lang.IllegalStateException: The remote endpoint was in state [TEXT_PARTIAL_WRITING] which is an invalid state for called method at org.apache.tomcat.websocket.WsRemoteEndpointImplBase$StateMachine.checkState(WsRemoteEndpointImplBase.java:1224) at org.apache.tomcat.websocket.WsRemoteEndpointImplBase$StateMachine.textPartialStart(WsRemoteEndpointImplBase.java:1182) at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendPartialString(WsRemoteEndpointImplBase.java:222) at org.apache.tomcat.websocket.WsRemoteEndpointBasic.sendText(WsRemoteEndpointBasic.java:49) at org.springframework.web.socket.adapter.standard.StandardWebSocketSession.sendTextMessage(StandardWebSocketSession.java:203) at org.springframework.web.socket.adapter.AbstractWebSocketSession.sendMessage(AbstractWebSocketSession.java:101) ``` 这是为啥呢?不是同一个 session 都已经做同步处理了么? 仔细看这里,跟之前的报错不...
1 概述 Jenkins是一个Java语言编写的开源的持续集成工具,它的前身为Hudson,使用它可以进行项目的自动编译、测试与发布,这极大的减轻了团队之间的繁琐重复的工作,从而加快了整个项目的交付进度。 jenkins官方wiki:https://wiki.jenkins.io/display/JENKINS/Use+Jenkins 2 安装Jenkins
2.1 安装JDK (1)安装包:jdk-7u80-linux-x64.rpm (2)解压安装包 $ rpm -ivh jdk-7-linux-x64.rpm (3)环境变量配置:vi /etc/profile JAVA_HOME=/usr/java/jdk1.7.0_80
JRE_HOME=/usr/java/jdk1.7.0_80/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH 2.2 安装Maven (1)安装包:apache-maven-3.5.2-bin.tar.gz (2)解压安装包 $ tar -zxvf apache-maven-3.5.2-bin.tar.gz -C /usr/local/
(3)配置maven的环境变量 2.3 安装Jenkins 这里有两种方式 方式一:直接下载jenkins.war包 运行jenkins.war的两种方式 (1)通过jenkins内建的容器运行 java -jar jenkins.war (2)通过独立的tomcat/jboss容器运行 方式二:通过yum安装(这里选择安装稳定...
公司某项目网站接入PC端扫码支付(微信和支付宝),代码全部流程已经调通
通过统计数据库中的1000多个项目,我们发现在 JavaScript 中最常出现的错误有10个。下面会向大家介绍这些错误发生的原因以及如何防止。 对于这些错误发生的次数,我们是通过收集的数据统计得出的。Rollbar 会收集每个项目中的所有错误,并总结每个错误发生的次数,然后通过各个错误的特征进行分组。 下图是发生次数最多的10大 JavaScript 错误:
下面开始深入探讨每个错误发生的情况,以便确定导致错误发生的原因以及如何避免。
Uncaught TypeError: Cannot Read Property 这是 JavaScript 开发人员最常遇到的错误。当你读取一个属性或调用一个未定义对象的方法时,Chrome 中就会报出这样的错误。 导致这个错误发生的原因有很多,常见的一种情况是在渲染 UI 组件时,不正确地初始化状态。我们来看一个真实的应用程序中发生这种情况的例子。 class Quiz extends Component {
componentWillMount() {
axios.get('/thedata').then(res =& {
this.setState({items: res.data});
render() {
{this.state.items.map(item =&
&li key={item.id}&{item.name}&/li&
& 原文地址如下 http://www.yiiframework.com/news/165/yii-2-0-14-is-released (英文版) **翻译中文内容如下,翻译参与人员 google翻译参与99% 阿北参与1%,鉴于水平有限,有的地方可能有点绕口,但是整体理解是没问题的。** 我们非常高兴地宣布发布Yii Framework 2.0.14版。 请参阅http://www.yiiframework.com/download/上的说明安装或升级到此版本。 这是一个次版本,其中包含一百多个增强功能和bug修复,包括安全修复。这也是包含功能增强的最后一个2.0.x版本,接下来我们将专注于2.1分支的开发,2.0版本将只进行bug修复。在2.1版本发后时我们也将给出每个分支的时间表。 该版本有一些细微的变化可能影响你正在运行的yii2程序,所以在升级前务必仔细阅读 [UPGRADE.md](https://github.com/yiisoft/yii2/blob/2.0.14/framework/UPGRADE.md) 文件。 感谢所有为这个框架贡献力量的Yii社区成员。 我们一起做了! 您可以通过**star**或**watch** yii2的GitHub项目来关注开发进度。还有许多活跃的yii社区,所以如果您需要帮助或想分享您的经验,请随时加入。 由于**yii2.1**正在开发中,因此请确保您的composer.json中有一个版本限制,这样它允许自动安装最新版本,直到下...
一、PMDK介绍
pmdk,全称Persistent Memory Development Kit ,它是一套用于使用具有DAX(Direct Access)访问特性存储的开发工具库。如下如所示,NVM(NON-VOLATILE MEMORY)存储可以使用使能DAX功能的文件系统直接暴露在用户空间,用户态程序可以使用标准的文件系统API来操作NVM,同样也可以使用mmap将其直接映射到用户空间,无论使用哪种方式,对NVM的操作都会直接转换为对NVM的load和store,中间是没有page cache的(这就是支持DAX模式的文件系统和普通文件系统之间的一点区别)。在使用文件系统时,数据的完整性一般都由文件系统来保证,而NVM作为一种非易失性存储,在使用mmap方式来读写时,如何保证数据的完整性和一致性就显得尤为重要。通常可以有很多种方式可以做到这一点(也就是后文即将讨论的),比如靠上层应用程序自己的策略来保证,也可以使用第三方库来做,而pmdk(更具体点来说是pmdk中的 libpmemobj)就是用来完成这项工作的。
下图是pmdk的各个组件之间的依赖关系,其中libpmem提供底层的内存持久化、刷新接口,基于它,pmdk上层还提供了很多其他组件,比如本文重点介绍的libpmemobj就提供了存储的事务特性,其他...
微信自15年年底上线FOOM上报,每天FOOM次数与登录用户数比例接近3%,同期crash率1%不到。而16年年初某东老大反馈微信频繁闪退,接着16年8月不少外部用户反馈微信启动不久后闪退,分析大量日志还是不能找到FOOM原因。微信急需一个有效的内存监控工具来发现问题。
本文为 TiDB 源码阅读系列文章的第二篇,第一篇文章介绍了 TiDB 整体的架构,知道 TiDB 有哪些模块,分别是做什么的,从哪里入手比较好,哪些可以忽略,哪些需要仔细阅读。 这篇文章是一篇入门文档,难度系数比较低,其中部分内容可能大家在其他渠道已经看过,不过为了内容完整性,我们还是会放在这里。 ## TiDB 架构 ![](http://upload-images.jianshu.io/upload_images/ab.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 本次 TiDB 源码之旅从这幅简单的架构图开始,这幅图很多人都看过,我们可以用一句话来描述这个图:『TiDB 是一个支持 MySQL 协议,以某种支持事务的分布式 KV 存储引擎为底层存储的 SQL 引擎』。从这句话可以看出有三个重要的事情,第一是如何支持 MySQL 协议,与 Client 交互,第二是如何与底层的存储引擎打交道,存取数据,第三是如何实现 SQL 的功能。本篇文章会先介绍一些 TiDB 有哪些模块及其功能简要介绍,然后以这三点为线索,将这些模块串联起来。 ## 代码简介 TiDB 源码完全托管在 Github 上,从[项目主页](https://github.com/pingcap/tidb "项目主页")可以看到所有信息。整个项目使用 Go 语言开发,按照功...
原文:[www.spring4all.com](http://www.spring4all.com) ### 1 线程中断 #### 1.1 什么是线程中断? 线程中断是线程的标志位属性。而不是真正终止线程,和线程的状态无关。线程中断过程表示一个运行中的线程,通过其他线程调用了该线程的 `interrupt()` 方法,使得该线程中断标志位属性改变。 深入思考下,线程中断不是去中断了线程,恰恰是用来通知该线程应该被中断了。具体是一个标志位属性,到底该线程生命周期是去终止,还是继续运行,由线程根据标志位属性自行处理。 #### 1.2 线程中断操作 调用线程的 `interrupt()` 方法,根据线程不同的状态会有不同的结果。 下面新建 InterruptedThread 对象,代码如下: ```java /** * 一直运行的线程,中断状态为 true * * @author Jeff Lee @ bysocket.com * @since 日19:03:02 */ public class InterruptedThread implements Runnable { @Override // 可以省略 public void run() { // 一直 run while (true) { } } public static void main(String[] args) throws Exception { Thread interruptedThread = new Thread(new InterruptedThread(), "InterruptedThread"); interruptedThread.start(); TimeUnit.SE...
基于前面系列文章的详细阐述,我们已经可以手工去K8S集群的命令行下将CentOS 7.4操作系统的Docker镜像启动起来,然后用户可以通过SSH登录到CentOS容器之中进行使用。但实际使用过程中不同的用户不可能每次都手动去命令行启动一个CentOS镜像,然后用命令去查看该容器的IP地址和端口是多少,然后再通过ssh去连接。我们最好可以将Docker容器的启动、查询、删除等再封装一层,然后通过WEB页面去提供给用户操作,这才符合用户行为需求!
& 在Spring Boot 2.0中推出了Relaxed Binding 2.0,对原有的属性绑定功能做了非常多的改进以帮助我们更容易的在Spring应用中加载和读取配置信息。下面本文就来说说Spring Boot 2.0中对配置的改进。 & & 本文首发:http://blog.didispace.com/Spring-Boot-2-0-feature-1-relaxed-binding-2/ ## 配置文件绑定 ### 简单类型 在Spring Boot 2.0中对配置属性加载的时候会除了像1.x版本时候那样**移除特殊字符**外,还会将配置均以**全小写**的方式进行匹配和加载。所以,下面的4种配置方式都是等价的: - properties格式: ```properties spring.jpa.databaseplatform=mysql spring.jpa.database-platform=mysql spring.jpa.databasePlatform=mysql spring.JPA.database_platform=mysql ``` - yaml格式: ```yaml spring: jpa: databaseplatform: mysql database-platform: mysql databasePlatform: mysql database_platform: mysql ``` **Tips:推荐使用全小写配合`-`分隔符的方式来配置,比如:`spring.jpa.database-platform=mysql`** ### List类型 在properties文件中使用`[]`来定位列表类型,比如: ```properties spring.my-example.url[0]=http://example.com spring.my-...
2016年 Spring Boot 还没有被广泛使用,在网上查找相关开源软件的时候没有发现几个,到了现在经过2年的发展,很多互联网公司已经将 Spring Boot 搬上了生产,而使用 Spring Boot 的开源软件在 Github/码云 上面已有不少,这篇文章就给大家介绍一下 Github/码云 上面和 Spring Boot 相关的开源软件。 ## 1、 [awesome-spring-boot](https://github.com/ityouknow/awesome-spring-boot) 首先给大家介绍的就是Spring Boot 中文索引,这是一个专门收集 Spring Boot 相关资料的开源项目,也有对应的导航页面。 **产品主页** [http://springboot.fun](http://springboot.fun/) **项目主页** [https://github.com/ityouknow/awesome-spring-boot](https://github.com/ityouknow/awesome-spring-boot) **产品截图** ![](http://www.ityouknow.com/assets/images/2018/springboot/awesome-spring-boot.png) ## 2、 [云收藏](https://github.com/cloudfavorites/favorites-web) 云收藏是一个使用 Spring Boot 构建的开源网站,可以让用户在线随时随地收藏的一个网站,在网站上分类整理收藏的网站或者文章,可以作为稍后阅读的一个临时存放。作为一个开放开源的软件,可以让用户从浏览...
感觉目前地铁上的地铁线路图也不是很人性化,很多交互方面没有考虑到用户的需求?感觉总是有各种容易看串的信息,利用 html5 canvas 完成的这个交互式地铁线路图 Demo,如果地铁上的展示信息稍微有点交互会怎么样?不用忙着上车下车,轻轻一点,就能省去很多时间。
生产销售链条跟踪涉及环节,农产品的供应链是一个非常复杂的过程,涉及多方,农业局、卫生局、药监局、工商局、环保局等多个部门交织其中。
Kubernetes 1.5正式发布StatefulSet,在Kubernetes 1.9 stable。这里将对StatefulSet进行解读分析,包括最佳实践、与Deployment的主要区别、Node网络异常等情况下处理方法以及在网络、存储、伸缩、滚动更新方面的原理解析等内容。下一篇博客将对StatefulSet Controller进行源码分析,相信一定会有其他收获。
Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置
本文主要介绍卷积神经网络(CNN)的经典模型VGGNet的特点和网络结构,包括VGG16、VGG19等
详细解读阿里巴巴开源技术,包括框架、组件、引擎、数据库/存储、平台/系统、解决方案、工具、中间件、Web Sever、设计等十大类73款!
前言 在Spring的第二篇中主要讲解了Spring Core模块的使用IOC容器创建对象的问题,Spring Core模块主要是解决对象的创建和对象之间的依赖关系,因此本博文主要讲解如何使用IOC容器来解决对象之间的依赖关系! 回顾以前对象依赖 我们来看一下我们以前关于对象依赖,是怎么的历程 直接new对象 在最开始,我们是直接new对象给serice的userDao属性赋值...
UserService{
UserDao userDao = new UserDao();
写DaoFactory,用字符串来维护依赖关系 后来,我们发现service层紧紧耦合了dao层。我们就写了DaoFactory,在service层只要通过字符串就能够创建对应的dao层的对象了。 DaoFactory
public class DaoFactory {
private static final DaoFactory factory = new DaoFactory();
private DaoFactory(){}
public static DaoFactory getInstance(){
public &T& T createDao(String className,Class&T& clazz){
T t = (T) Class.forName(className).newInstance();
}catch (Exception e) {
throw new RuntimeException(e);
Groovy运行于JVM之上,然而其对**动态语言**、**函数式编程范式**以及**元编程功能**的加持所带来的表现力和简洁性可以说甩了Java几条街。我们可以利用Groovy的所有动态功能构建高性能的JVM应用、将开发效率提高几个数量级! 这就是我们为什么要学它!
这里需要说明,很多开发者觉得 Memcached 是一种分布式 Cache ,但其实 Memcached 服务端本身是单实例的,只是在客户端实现过程中可以根据存储的主键作分区存储,而这个区就是 Memcached 服务端的一个或者多个实例,如果将客户端也囊括到 Memcached 中,那么可以部分概念上说是集中式的。集中式的构架,无非两种情况: 1. 节点均衡的网状( JBoss Tree Cache ),利用 JGroup 的多播通信机制来同步数据。 2.Master-Slaves 模式(分布式文件系统),由 Master 来管理 Slave ,如何选择 Slave ,如何迁移数据,都是由 Master 来完成,但是 Master 本身也存在单点问题。 特性、优点和限制 Memory :内存存储,速度快,对于内存的要求高,所缓存的内容非持久化。对于 CPU 要求很低,所以常常采用将 Memcached 服务端和一些 CPU 高消耗 Memory 低消耗应用部属在一起 。(否则会互相挤占资源) 集中式 Cache :避开了分布式 Cache 的传播问题,但是需要非单点保证其可靠性,这需要 cluster 的工作,可以将多个 Memcached 作为一个虚拟的 cluster ,同时对于 cluster 的读写和普通的 memcached 的读写性能没有差别。 分布式扩展...
java.io.FileNotFoundException: C:\Users\ABC\.m2\repository\com\mchange\c3p0\0.9.5.2\mchange-commons-java-0.2.11.jar (The system cannot find the file specified)
1.什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高,这时需要使用SolrCloud来满足这些需求。 SolrCloud是基于Solr和Zookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作为集群的配置信息中心。 它有几个特色功能: 1)集中式的配置信息 2)自动容错 3)近实时搜索 4)查询时自动负载均衡 3. Solr集群的系统架构 ![1](https://static.oschina.net/uploads/img/04532_06xH.png "在这里输入图片标题") 3.1. 物理结构 三个Solr实例( 每个实例包括两个Core),组成一个SolrCloud。 3.2. 逻辑结构 索引集合包括两个Shard(shard1和shard2),shard1和shard2分别由三个Core组成,其中一个Leader两个Replication,Leader是由zookeeper选举产生,zookeeper控制每个shard上三个Core的索引数据一致,解决高可用问题。 用户发起索引请求分别从shard1和shard2上获取,解决高并发问题。 3.2.1. collection Collection在SolrCloud集群中是一个逻辑意义上的完整的索引结构。它常常被划分为一个或多...
作为职场老手的你,也许对服务化(SOA)并不陌生。当今 Web 2.0 架构如火如荼,越来越多的企业正在进行着服务化的改造,最为著名莫过于 Amazon 。
多系统之间通讯现在最常用的是使用标准的http服务,如:restful,定义企业通用的数据格式。怎样定义一个标准,定义一种编码规范,让所有的开发者遵循这个标准?
结合我们公司服务返回数据的格式,自己写了一个通用的工具类,有兴趣的朋友可以使用一下。 1. 定义一个ResponseVO对象,代码如下:2. 定义标准的ResponseCode,代码如下: &span style="font-size: 16"&public class ResponseVO {
//返回消息
private String version = "v1.0";
//data对象
public String getVersion() {
public void setVersion(String version) {
this.version =
public int getCode() {
public void setCode(int code) {
this.code =
public String getMessage() {
public void setMessage(String message) {
this.message =
public Object getData() {
public void setData(Object data) {
this.data =
public ResponseVO() {
搞了三年的Java开发,突然被朋友问到Java到底是值传递还是引用传递,被问到时突然发现自己从来没有留意过这方面的问题,查阅资料后,做一下记录吧!
笔记和代码都放在码云:https://gitee.com/tangijia/anguarjs_learning_notes
# 摘要 为了让大家能快速对android组件化有个整体的认识,本文将从多个维度对目前网上一些有代表性的开源组件化开发方案进行对比,从而更好的区分各组件化方案的特点,快速选择适合自己使用的方案深入学习并使用,在面试中被问到时也能做到心中有数。 # 前言 --- android平台上组件化开发的概念近两年非常火热,有些同学反映在面试中被问到的频率也很高。 目前网上关于组件化开发方案的文章、开源库比较多,让很多初学者感到迷茫,不知该从何处入手,难以确定自身的业务特性适合使用哪种框架,如果全部都学习一遍成本比较高,而且在学习过程中容易将各方案的一些特性记混淆。 为了让大家能快速对android组件化有个整体的认识,本文将从多个维度对目前网上一些有代表性的开源组件化开发方案进行对比,从而更好的区分各组件化方案的特点,快速选择适合自己使用的方案深入学习并使用,在面试中被问到时也能做到心中有数。 由于篇幅及个人精力所限,只选取了比较有代表性的几个组件化方案进行比较,对比内容中如有谬误之处,欢迎大家指正,可以在评论中留言或者[提issue](https://github.com/luckybilly/AndroidComponentizeLibs/issues/new)和[pr](https://github.com/luckybi...
本节学习如何将应用回滚到某个特定 revision。
http://blog.csdn.net/omnispace/article/details/
在前面的章节中,我们着手介绍了dubbo的相关知识,在这个基础之上,我们可以考虑将dubbo服务应用于我们的分布式系统了,从今天开始,我们会详细介绍如何将dubbo和spring集成并应用于我们的分布式系统。 1. 创建ant-bookmark-facade项目(dubbo服务接口),其中pom.xml文件定义如下: &span style="font-size: 16"&&?xml version="1.0"?&
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&
&modelVersion&4.0.0&/modelVersion&
&groupId&com.sml.sz&/groupId&
&artifactId&ant-project&/artifactId&
&version&1.0.0&/version&
&artifactId&ant-member-facade&/artifactId&
&packaging&jar&/packaging&
&name&ant-member-facade&/name&
&url&http://maven.apache.org&/url&
&description&ant的收藏模块Dubbo服务接口包,提供相关的Dubbo服务入口&/description&
&properties&
&project.build.sourceEncoding&UTF-8&/project.build.sourceEncoding&
&/properties&
&dependencies&
据国外媒体报道,世界各地都对辛辣食物有着独特的情愫。泰国菜、墨西哥菜、中餐、印度菜、埃塞俄比亚菜等美食恨不得让你嘴中喷火,却又令人回味无穷。
# -*- coding:utf-8 -*-
from selenium import webdriver
from PythonHTTP调用示例.YDMHTTP import YDMHttp
#引用显示等待
from selenium.webdriver.support.ui import WebDriverWait
from PIL import Image
driver = webdriver.Firefox()
driver.get("https://ics.autohome.com.cn/passport/account/login")
# 找到用户名输入
username = WebDriverWait(driver,10).until(lambda driver: driver.find_element_by_id("UserNameDealer"))
username.send_keys("元信汽车")
# 找到密码框输入
password = WebDriverWait(driver, 10).until(lambda driver:driver.find_element_by_id("PasswordDealer"))
password.send_keys("123456")
# 找到验证码标签
captcha = WebDriverWait(driver, 10).until(lambda driver:driver.find_element_by_id("imgValidCodeDealer"))
captcha.screenshot(filename="captcha.png")
# 截图保存的另一个函数
# driver.save_screenshot("page.png")
# left = captcha.location["x"]
# top = captcha.location["y"]
# right = captcha.location["x"] + captcha.size["width"]
# bottom = captcha.location["y"] + captcha.size["height"]
网页中频繁更改的内容,应该从后台动态获取,对内容较多的请求通常采用富文本编辑器来编辑内容,从而自带了样式。因此同一份内容若需要在pc和移动端同时展示,有许多差异: 页面尺寸大小: pc尺寸使用px(980,1040,...),移动端使用px或 当同时为px时,样式没有差异,而为rem时,(通常设置1rem =100px),页面通常会有缩放(0.5,大部分手机dpx&=2),导致正常大小的字体会变小;此时应禁用rem,页面宽度为屏幕宽度, 因此,为了保证富文本内容在pc和移动端同时正常显示,需要采用以下设置: 富文本编辑器默认是pc端样式(px) 而图片,表格等宽度有可能超出移动端屏幕宽度的元素,采用百分比设置他们的宽度 移动端应禁用rem,禁止缩放,让页面宽度为屏幕宽度
你真的是一个Kotlin开发者吗?
最近在学习Spring boot,写了个读写分离。并未照搬网文,而是独立思考后的成果,写完以后发现从零开始写读写分离并不难! 我最初的想法是: 读方法走读库,写方法走写库(一般是主库),保证在Spring提交事务之前确定数据源.
保证在Spring提交事务之前确定数据源,这个简单,利用AOP写个切换数据源的切面,让他的优先级高于Spring事务切面的优先级。至于读,写方法的区分可以用2个注解。 但是如何切换数据库呢? 我完全不知道!多年经验告诉我 当完全不了解一个技术时,先搜索学习必要知识,之后再动手尝试。
我搜索了一些网文,发现都提到了一个AbstractRoutingDataSource类。查看源码注释如下 /** Abstract {@link javax.sql.DataSource} implementation that routes {@link #getConnection()}
* calls to one of various target DataSources based on a lookup key. The latter is usually
* (but not necessarily) determined through some thread-...
# 环境要求 1、Java SDK 1.8 [下载](http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html) 2、Eclipse IDE for Java EE Mars 2 (4.5.2) [下载](https://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/mars2) 3、Apache Maven 3.3+ [下载](https://maven.apache.org/download.cgi) 4、MySql 5.7+ [下载](https://dev.mysql.com/downloads/windows/installer/5.7.html) # 导入到Eclipse 1、检出JeeSite4源代码: ``` git clone https://gitee.com/thinkgem/jeesite4.git ``` 2、拷贝`web`文件夹,到你的工作目录(不包含中文和空格的目录)下,重命名为你的工程名,如:`jeesite-demo` 3、打开`pom.xml`文件,修改第13行,artifactId为你的工程名,如:`jeesite-demo` 4、导入到Eclipse,菜单 File -& Import,然后选择 Maven -& Existing Maven Projects,点击 Next& 按钮,选择第2步的`jeesite-demo`文件夹,然后点击 Finish 按钮,即可成功导入 5、这时,Eclipse会自动加载Maven依赖包,初次加载会比较慢(根据自身网络情况而定),若工程上有小叉号,请打开Problems窗口,查看具体错误内容,直到无错误为...
# 准备阶段 ## 下载 Flutter SDK 新建 Flutter 文件夹,克隆 Flutter SDK: ```bash git clone -b beta https://github.com/flutter/flutter.git ``` ## 配置 Flutter 环境 我是 Mac 系统,Flutter SDK 下载完后的路径:Users/wuxiaolong/Flutter/flutter/ 。 ### 在命令行下,进入用户目录 ```bash cd $HOME ``` ### 打开.bash_profile文件 执行命令打开文件: ```bash open -e .bash_profile ``` 打开文件后,添加 Flutter SDK 安装的路径: ```bash export PATH=${PATH}:/Users/wuxiaolong/Flutter/flutter/bin:$PATH ``` ### 更新刚配置的环境变量 ```bash source .bash_profile ``` ### 验证 终端直接输入 flutter,没有提示该命令找不到,则配置成功。 ## flutter doctor 命令行输入`flutter doctor`,安装 Futter 剩余依赖项。 ## 安装 Flutter 和 Dart 插件 启动 Android Studio,搜索 Flutter 插件并单击 install,系统提示您安装 Dart 插件,点击 Yes 安装即可。 **提示**:安装 Dart 插件可能会提示下载失败,多试几次。 ## 第一个项目 Android Studio - File - New - New Flutter Project,等待创建成功后,运行效果如下: ![](http://7q5c2h.com1.z0.glb.clou...
  社区中并不缺少有关软件工程师职业发展的文章,甚至可以说是泛滥。很多人都能在这个话题上说两句,三五年工作经验的编程老鸟也好,架构师也好,技术 VP 也好,CTO 也好,都有各自的看法与实践经验。没有哪一套方法是适用于所有人的,这一套软件工程师职业发展纲要,也不过是在你踽踽前行的路上,迷茫时可用来参考借鉴。你的核心竞争力,永远是你的自身实力。切记! 一、专业技能学习捷径 1、爱上你的编码神器   众所周知,软件工程师要做的工作就是写代码,准确地说,你的目标应该是写出满足业务需求并且无法找出 Bug 的代码,而不是写一大堆没用的文字。既然你的任务是写出高质量的代码,那么你首先应该训练的就是打字速度,你需要掌握键盘盲打技能,甚至还要爱上你的“编码神器”,并做到将此工具的用法烂熟于心,闭上眼睛都能正确敲中你想要的快捷键。 2、熟悉底层技术原理   当你完全驾驭了计算机的输入设备以后,你需要进一步了解计算机的内部工作原理,不是让你把机器大卸八块,而是你需要全面了解计算机的组成结构与工作原理。如果你不是计算机科班出生也没关系,在网上买一本关于计算机组成原理的书自学即可。你无需做到精通,能全面了解即可,因为接下来你...
如何快速申请免费的阿里云服务器
### ElasticSearch ``` 现有三台服务器[192.168.1.30, 192.168.1.31, 192.168.1.32],使用这三台服务器搭建ElasticSearch集群 ``` #### CentOS 使用 yum 安装 ###### 编辑 repo ``` vim /etc/yum.repos.d/elasticsearch.repo # 内容如下 [elasticsearch-6.x] name=Elasticsearch repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md ``` ###### 使用yum安装 ``` yum install elasticsearch ``` ###### 创建用户 ``` useradd elastic ``` ###### 修改权限 ``` # 数据 chown -R elastic:elastic /var/lib/elasticsearch # 日志 chown -R elastic:elastic /var/log/elasticsearch # 配置 chown -R elastic:elastic /etc/elasticsearch chown -R elastic:elastic /etc/sysconfig/elasticsearch # 指令 chown -R elastic:elastic /usr/share/elasticsearch ``` ###### 配置 ``` # 主节点 192.168.1.30 vim /etc/elasticsearch/elasticsearch.yml # 修改以下几项 cluster.name: etl_es node.name: node-30 node.master: true node.d...
### Logstash ##### 使用yum安装 ###### 编辑 repo ``` vim /etc/yum.repos.d/elasticsearch.repo # 内容如下 [elasticsearch-6.x] name=Elasticsearch repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md ``` ###### 安装 ``` sudo yum install logstash ``` #### 配置 Logstash ``` # 参考 https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.html # input项配置源数据,此处为监听 "/log"目录下满足"insert.*.log"匹配的所有日志文件 # filter项过滤input输入的数据, "insert.*.log"中每条日志形式如:" | type | cid | src | eventId | reason", 所以使用" | "拆分每条日志 # output项是输出数据,此处为输出至ElasticSearch # 新建配置文件 insert.conf vim conf.d/insert.conf # 内容如下 input { file { path =& "/log/insert.*.log" } } filter { mutate{ split=&["message"," | "] add_field =& { "date" =& "%{[message][0]}" } add_field =& { "type" =& "%{[message][1]...
### 新增Python3编译环境 ``` Tools & Build System & New Build System 将默认内容替换为: { "cmd": ["python3", "-u", "$file"], "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", "selector": "source.python" } 保存为 Python3.sublime-build ``` ### 选中Python3环境 ``` Tools & Build System & Python3 ``` ### 使用Python3编译运行 ``` Ctrl + b ``` ### 可能遇到的问题 ##### 问题 ``` UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128) ``` ##### 原因 ``` 默认是ascii编码但是输出中包含中文 ``` ##### 解决 ``` Preferences & Browse Packages & Users & Python3.sublime-build 修改配置文件, 配置文件中新增一条 "env": {"LANG": "en_US.UTF-8"} 修改后如下: { "cmd": ["python3", "-u", "$file"], "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", "selector": "source.python", "env": {"LANG": "en_US.UTF-8"} } ```...
## 更新model #### 需求 ``` 概览表增加"创建时间,修改时间,软删除" ``` #### 以往的方式 ###### 1. 修改model.jh, 在实体 Overview 中增加三个属性 ``` /** * 数据概览 -- 概览 */ entity Overview { id Long, ... /* 以下属性为新增的属性 */ /* 创建时间 */ createTime ZonedDateTime, /* 更新时间 */ updateTime ZonedDateTime, /* 是否删除 */ delFlag Boolean, } ``` ###### 2. 生成配置文件 ``` jhipster import-jdl model.jh ``` ###### 3. 运行项目使配置生效 ``` 运行项目时提示"Validation Failed",原因是配置文件的MD5值不同, 此时需要以下操作 1. 修改 DATABASECHANGELOG 表中相关记录的 MD5SUM 2. 在overview表中手动新增三个属性. ``` #### 现在的方式 ###### 1. 修改model.h, 在实体 Overview 中增加三个属性 ###### 2. 生成配置文件 ###### 3. 修改生成的配置文件 ``` src/main/resources/config/liquibase/changelog/15_added_entity_Overview.xml 将 changeSet中新增的三个column提取至新的changeSet中, 如下: 注意: changeSet的id不能与之前的相同 ``` ###### 4. 运行项目使配置生效 ``` 不需要手动修改MySQL,自动生效 ```...
### 1.虚拟环境 ``` tianshl:workspace tianshl$ mkdir server tianshl:workspace tianshl$ cd server/ tianshl:server tianshl$ virtualenv venv --python=python3 tianshl:server tianshl$ source venv/bin/activate ``` ### 2. 安装依赖 ``` (venv) tianshl:server tianshl$ pip install django (venv) tianshl:server tianshl$ pip install djangorestframework ``` ### 3. 创建项目 ``` (venv) tianshl:server tianshl$ django-admin.py startproject server (venv) tianshl:server tianshl$ tree server/ server ├── manage.py └── server ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py ``` ### 4. 更新配置 ``` (venv) tianshl:server tianshl$ cd server/ (venv) tianshl:server tianshl$ vim server/settings.py # 1.修改 INSTALLED_APPS = ( ... 'rest_framework', ) # 2.添加 REST_FRAMEWORK = { # Use Django's standard `django.contrib.auth` permissions, # or allow read-only access for unauthenticated users. 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly' ] }...
# django ``` # 刚写的就不复制粘贴了 https://my.oschina.net/tianshl/blog/1611257 # 列一下目录结构 root@tianshl:~# cd server/ root@tianshl:~/server# tree server server ├── db.sqlite3 ├── manage.py └── server ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py ``` # gunicorn ##### 安装 ``` pip install gunicorn ``` ##### 配置 ``` # 修改django项目的settings.py INSTALLED_APPS = [ ...... 'gunicorn', ] ``` ##### 运行 ``` root@tianshl:~# cd /root/server/server/ root@tianshl:~/server/server# gunicorn --pythonpath /root/server/venv/bin/python3 -w 3 -b 0.0.0.0:80 server.wsgi # 测试能否正常运行, 然后ctrl+c结束进程 ``` # supervisor ##### 安装 ``` pip install supervisor ``` ##### 配置 ``` # 默认配置 # 使用echo_supervisord_conf命令查看默认配置 root@tianshl:~# echo_supervisord_conf # 自定义配置 root@tianshl:~# mkdir /etc/supervisor root@tianshl:~# mkdir /etc/supervisor/conf.d root@tianshl:~# echo_supervisord_conf & /etc/supervisor/supervisor.conf root@tianshl:~# vim /etc/su...
### 一.使用脚本切割 ##### 编辑脚本 ``` tianshl@tianshl nginx $ vim nginx_log_division.sh ``` ##### 脚本内容 ``` #! /bin/sh # 昨天日期 yesterday=`date -v -1d +%Y%m%d` # 日志目录 log_path="/usr/local/var/log/nginx/" # SDK日志路径 sdk_path=${log_path}sdk # 以天为单位切分日志 mv -f ${sdk_path}.log ${sdk_path}_${yesterday}.log # 重新生成日志文件 pid_path="/usr/local/var/run/nginx.pid" sudo kill -USR1 `cat ${pid_path}` ``` ##### 定时任务 ###### 切换到root身份 ``` tianshl@tianshl nginx $ sudo su root ``` ###### 编辑 crontab ``` sh-3.2# crontab -e ``` ###### crontab 添加一行 ``` 0 0 * * * sh /usr/local/var/log/nginx/nginx_log_division.sh ``` ###### 查看是否添加成功 ``` sh-3.2# crontab -l ``` ### 二.不使用脚本切割 ##### server 段增加以下代码 ``` if ($time_iso8601 ~ "(\d{4})-(\d{2})-(\d{2})") { set $time $1$2$3; } ``` ##### 日志文件路径中增加日期参数 ``` access_log /var/log/nginx/api-$time. ``` ##### 举个栗子 ``` events { worker_connections 1024; } http { server { # 监听88端口 listen 88;...
### 写在开头 ``` 使用jhipster声明的OneToMany在One的一方DTO中是没有与Many的DTO的映射关系的, 为了在One的一方DTO中使用Many的DTO, 使用以下三步解决此问题。 ``` ### 步骤 ``` 1. OneDTO 中的"mark 1"处为自己写的一对多的关系, 此处变量名称不能与实体One中相应的变量名称一致,否则编译失败。 2. OneMapper 中的"mark 2"处 uses属性添加ManyMapper。 2. OneMapper 中的"mark 3"处使用@Mapping注解声明 Entity 转 DTO 的映射关系。 ``` ### Entity ``` @Entity @Table(name = "one") public class One { ... @OneToMany(mappedBy = "one") private Set manys = new HashSet&&(); ... public void setManys(Set manys) { this.manys = } public Set getManys() { } } @Entity @Table(name = "many") public class Many { ... @ManyToOne private O } ``` ### DTO ``` public class OneDTO { ... // mark 1 private Set manyDTOS = new HashSet&&(); ... public void setManyDTOS(Set manyDTOS) { this.manyDTOS = manyDTOS; } public Set getManyDTOS() { return manyDTOS; } } public class ManyDTO { ... private Long oneId; ... public...
### 拷贝文件或文件夹 ``` /** * 拷贝文件 * * @param source 源文件 * @param target 目标文件 */ public void copyFile(String source, String target) { // 源文件 File sourceFile = new File(source); if (!sourceFile.exists()) { } // 目标文件 File targetFile = new File(target); // 文件拷贝 if (sourceFile.isFile()) { copyFromChanel(sourceFile, targetFile); } // 文件夹拷贝 if (!targetFile.exists()) { targetFile.mkdirs(); } for (File file: sourceFile.listFiles()) { copyFile(file.getAbsolutePath(), target + File.separator + file.getName()); } } ``` ### 利用文件管道拷贝文件 ``` /** * 利用文件管道拷贝文件 * * @param source 源文件 * @param target 目标文件 */ public void copyFromChanel(File source, File target) { // 文件流 FileInputStream fis = FileOutputStream fos = // 文件管道 FileChannel fci = FileChannel fco = try { // 文件流 fis = new FileInputStream(source); fos = new FileOutputStream(target); // 文件管道 fci = fis.getChannel(); fco = fos.getChannel(); ...
### 需求 ``` 对MySQL数据库中某个表的某个字段执行k-means算法,将处理后的数据写入新表中。 ``` ### 源码及驱动 ``` http://download.csdn.net/download/xiaobuding007/ ``` ### 源码 ```java import java.sql.*; import java.util.*; /** * @author tianshl * @version
上午11:13 */ public class Kmeans { // 源数据 private List origins = new ArrayList&&(); // 分组数据 private Map& // 初始质心列表 private L // 数据源 private String tableN private String colN /** * 构造方法 * * @param tableName 源数据表名称 * @param colName 源数据列名称 * @param cores 质心列表 */ private Kmeans(String tableName, String colName,List cores){ this.cores = this.tableName = tableN this.colName = colN } /** * 重新计算质心 * * @return 新的质心列表 */ private List newCores(){ List newCores = new ArrayList&&(); for(List v: grouped.values()){ newCores.add(v.stream().reduce(0, (sum, num) -& sum + num) / (v.size() + 0.0)); } Collections.sort(newCores); return newC } /...
Message Broker与AMQP简介 Message Broker是一种消息验证、传输、路由的架构模式,其设计目标主要应用于下面这些场景: 消息路由到一个或多个目的地 消息转化为其他的表现方式 执行消息的聚集、消息的分解,并将结果发送到他们的目的地,然后重新组合相应返回给消息用户 调用Web服务来检索数据 响应事件或错误 使用发布-订阅模式来提供内容或基于主题的消息路由 AMQP是Advanced Message Queuing Protocol的简称,它是一个面向消息中间件的开放式标准应用层协议。AMQP定义了这些特性: 消息方向 消息队列 消息路由(包括:点到点和发布-订阅模式) 可靠性 安全性 RabbitMQ 本文要介绍的RabbitMQ就是以AMQP协议实现的一种中间件产品,它可以支持多种操作系统,多种编程语言,几乎可以覆盖所有主流的企业级技术平台。 安装 在RabbitMQ官网的下载页面https://www.rabbitmq.com/download.html中,我们可以获取到针对各种不同操作系统的安装包和说明文档。这里,我们将对几个常用的平台一一说明。 下面我们采用的Erlang和RabbitMQ Server版本说明: Erlang/OTP 19.1 RabbitMQ Server 3.6.5 Windows安装 安装Erland,通过官方下载页面http://www.erlang.org/downloads获取exe安装包...
最近看到网上流传着,各种面试经验及面试题,往往都是一大堆技术题目贴上去,而没有答案。 为此我业余时间整理了,Java基础常见的40道常见面试题,及详细答案,望各路大牛,发现不对的地方,不吝赐教,留言即可。 1. 八种基本数据类型的大小,以及他们的封装类 1. 引用数据类型 1. Switch能否用string做参数 1. equals与==的区别 1. 自动装箱,常量池 1. Object有哪些公用方法 1. Java的四种引用,强弱软虚,用到的场景 1. Hashcode的作用 1. HashMap的hashcode的作用 1. 为什么重载hashCode方法? 1. ArrayList、LinkedList、Vector的区别 1. String、StringBuffer与StringBuilder的区别 1. Map、Set、List、Queue、Stack的特点与用法 1. HashMap和HashTable的区别 1. JDK7与JDK8中HashMap的实现 1. HashMap和ConcurrentHashMap的区别,HashMap的底层源码 1. ConcurrentHashMap能完全替代HashTable吗 1. 为什么HashMap是线程不安全的 1. 如何线程安全的使用HashMap 1. 多并发情况下HashMap是否还会产生死循环 1. TreeMap、HashMap、LindedHashMap的区别 1. Collection包结构,与Collections的区别 1. try?catch?finally,try里有return,finally还执行么 1. Excption与Err...
JDK 10 是 Java 10 标准版的部分实现,将于 2018 年 3 月 20 日发布,改进的关键点包括一个本地类型推断、一个垃圾回收的“干净”接口。
# 组织管理 ## 用户管理 用户管理是能够登录平台的账号集合,即登录用户。其最基本的属性为用户名和密码。登录用户类型分为内部员工、往来单位用户、会员用户,往来单位又分为供应商、客户、网点、院校、科研院所等。 主要功能包括:用户的维护、查询、授权角色、授权数据权限 ## 机构管理 机构管理是指组织机构也是部门,采用多级组织管理维护,无限层级,支持全国应用。 ## 公司管理 公司管理,包含以下几种场景: 1. 在财务总账中具有 “帐套”的概念; 2. 在费用预算系统中具有 “出账公司”的概念; 3. 在HR系统中具有 “合同公司” 的概念; 4. 在供应链中具有“交易公司”的概念,采用多级公司管理维护。 ## 岗位管理 岗位管理,是组织架构下的精细岗位划分,是业务流程控制、业绩考核、预警体系的基础,不同的机构、部门下的同一职务,则是不同的岗位。内部员工的属性。 主要是面向业务管理,而角色主要是针对权限功能。 # 权限管理 ## 角色管理 角色维护,是系统功能权限设置的基础,相当于权限分组,所有用户对应到相应权限角色,便具有该权限角色所赋予的所有菜单权限和操作权限。 主要功能包括:角色维护、授权功能菜单、授权数据权限、快速分配用户 ## 二级管...
SpringBoot 中使用自定义的 Servlet, Filter, Listener
由于众所周知的原因,至今仍有大量生产环境的代码跑在 Python 2.7 之上,在 Python 2 的世界里,并没有一个官方的类型系统实现。那么生产环境的类型系统是如何实现的呢,为什么一定要在在线服务上实现类型系统?下文将针对这两个问题进行深入讨论。
前言 3种创建自定义服务的方式。
Factory Service Provider 大家应该知道,AngularJS是后台人员在工作之余发明的,他主要应用了后台早就存在的分层思想。所以我们得了解下分层的作用,如果你是前端人员不了解什么是分层,那么你最好问问你后台的小伙伴。
dao层:就是Model层,在后台时,这一层的作用,就要是写与数据库交互数据的一层,在angularJS里就主要是写ajax的。
service层:主查写逻辑代码的,但在angularJS里也可以持久化数据(充当数据容器),以供不同的controller高用。
controller层:即控制层,在angularJS里就是写控制器的。控制器里尽量不要写那些不必要的逻辑,尽量写在service层里。
所以,就有了创建自定义服务的三种方式。 1.factory factory方式创建的服务,作用就是返回一个有属性有方法的对象。相当于:var f = myFactory(); &!DOCTYPE html&
&meta charset="utf-8"&
&script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"&&/script&
&div ng-app="myApp" ng-controller="myCtrl"&
&p&{{r}}&/p&
//创建模型
var app = angular.module('myApp', []);
什么是会思考的避障车?
在日常生活中,大家会经常见到各种各样的遥控车,它需要我们人为的操作,控制它的前进、后退和转弯。今天就带大家认识一个不一样的新朋友——会思考的避障车。 会思考的避障车和我们平时的遥控车最主要的区别就是智能化,它可以不需要我们去操控,自己就能行走。同时它还会实时检测前方是否有障碍物,思考自己是否要前进或者转弯。 听到这里,是不是已经跃跃欲试了呢。话不多说,动起手来吧!
所需器材: ?
TurnipBit开发板 1块 ?
下载数据线 1条 ?
智能小车套件 1套(底盘、车轮、电机等) ?
超声波模块(HC-SR04)1个(用作小车的“眼睛”) ?
L298N电机驱动模块 1个 ?
接入互联网的电脑 1台(推荐使用Google Chome或者Firefox浏览器)
电机驱动和超声波的安装 超声波模块共4个引脚,分别是VCC、GND、Trig和Echo。VCC接TurnipBit扩展板的+5V引脚,GND接TurnipBit扩展板的GND引脚,Trig触发引脚接P5,Echo回传引脚接P8。 L298N电机驱动模块左侧OUT3、OUT4接线端子对应接入左轮电机的下侧、上侧侧铜片,右侧也是。L298N的输...
[https://www.cnblogs.com/ddrsql/p/5909683.html](https://www.cnblogs.com/ddrsql/p/5909683.html) [https://www.cnblogs.com/Kubility123/articles/5657999.html](https://www.cnblogs.com/Kubility123/articles/5657999.html) [http://blog.csdn.net/cabing2005/article/details/](http://blog.csdn.net/cabing2005/article/details/) [http://svndoc.iusesvn.com/svnbook/1.4/svn.branchmerge.using.html](http://svndoc.iusesvn.com/svnbook/1.4/svn.branchmerge.using.html) [合并分支](http://svndoc.iusesvn.com/svnbook/1.4/svn.branchmerge.copychanges.html) - 在本节,你需要记住两件重要的课程。首先,Subversion并没有内在的分支概念—只有拷贝,当你拷贝一个目录,这个结果目录就是一个“分支”,只是因为你给了它这样一个含义而已。你可以换一种角度考虑,或者特别对待,但是对于Subversion它只是一个普通的拷贝,只不过碰巧包含了一些额外的历史信息。第二,因为拷贝机制,Subversion的分支是以普通文件系统目录存在的,这与其他版本控制系统不同,它们都为分支定义了另一维度的“标签”。...
Linux系统技术交流QQ群(2659106)验证问题答案:刘遄 Calamares安装程序 针对GNU/Linux发行版重大的Calamares 3.2通用Linux安装程序框架版本的发布,随着第一个开发版本的发布,将继续快速的进行,该版本首先介绍了新功能和改进。 Calamares是一个独立于发行版的系统安装程序,它具有先进的分区功能,支持在KaOS,KDE Neon,OpenMandriva,Netrunner,Sabayon,Siduction,Tanglu,Bluestar Linux,Chakra GNU/Linux,GeckoLinux等常用GNU/Linux发行版中使用的全盘加密支持。 Calamares 3.2将是通用安装程序框架的下一个主要更新,承诺为操作系统开发人员提供大量有吸引力的新功能和增强功能,他们希望在下一代版本中实现它作为默认的图形安装程序,比如LUbuntu next 18.04 (Bionic Beaver)。 其中一项新功能是用于KDE Plasma桌面环境的模块,可以从安装程序中选择 Plasma Look-and-Feel。但是,只有当KDE Plasma和KDE Frameworks在构建时存在于目标系统上时,该模块才会启用。 “该模块仅在KDE Plasma和KDE Package框架可用时才可用,并且需要通过Plasma look-and-feel工具提供运行时支持,”Calamares团队表示。因此,如果这些KDE Plasma开发文件不存在,模块将被默认禁...
1.将View和Controller挂钩 2.按键事件设置 3.页面跳转
在前面的章节中,我们着手介绍了dubbo的相关知识,在这个基础之上,我们可以考虑将dubbo服务应用于我们的分布式系统了,从今天开始,我们会详细介绍如何将dubbo和spring集成并应用于我们的分布式系统。 1. 创建ant-bookmark-facade项目(dubbo服务接口),其中pom.xml文件定义如下: &span style="font-size: 16"&&?xml version="1.0"?&
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&
&modelVersion&4.0.0&/modelVersion&
&groupId&com.sml.sz&/groupId&
&artifactId&ant-project&/artifactId&
&version&1.0.0&/version&
&artifactId&ant-member-facade&/artifactId&
&packaging&jar&/packaging&
&name&ant-member-facade&/name&
&url&http://maven.apache.org&/url&
&description&ant的收藏模块Dubbo服务接口包,提供相关的Dubbo服务入口&/description&
&properties&
&project.build.sourceEncoding&UTF-8&/project.build.sourceEncoding&
&/properties&
&dependencies&
本文主要介绍了使用hive时的12个注意事项,当然,我们越来越需要从hive转移到impala的阵营。
本节中,我们以今日头条为例来尝试通过分析Ajax请求来抓取网页数据的方法。这次要抓取的目标是今日头条的街拍美图,抓取完成之后,将每组图片分文件夹下载到本地并保存下来。 1. 准备工作 在本节开始之前,请确保已经安装好requests库。 2.实战演练
首先,实现方法get_page()来加载单个Ajax请求的结果。其中唯一变化的参数就是offset,所以我们将它当作参数传递,实现如下: import requests
from urllib.parse import urlencode
def get_page(offset):
params = {
'offset': offset,
'format': 'json',
'keyword': '街拍',
'autoload': 'true',
'count': '20',
'cur_tab': '1',
url = 'http://www.toutiao.com/search_content/?' + urlencode(params)
response = requests.get(url)
if response.status_code == 200:
return response.json()
except requests.ConnectionError:
return None 这里我们用urlencode()方法构造请求的GET参数,然后用requests请求这个链接,如果返回状态码为200,则调用response的json()方法将结果转为JSON格式,然后返回。...
用AES加密时出现"java.security.InvalidKeyException: Illegal key size"异常。 如果密钥大于128, 会抛出上述异常。因为密钥长度是受限制的, java运行时环境读到的是受限的policy文件,文件位于/jre/lib/security下, 这种限制是因为美国对软件出口的控制。
解决办法也很简单: 将下面jar包下载下来,替换jdk 与jre下两个jar包:local_policy.jar和US_export_policy.jar即可。 jdk对应jar包的路径:D:\Java\jdk1.7.0_25\jre\lib\security jre对应jar包的路径:D:\Java\jre7\lib\security
1.构造方法参数 对应 配置文件 &constructor-arg& 元素 可以index|name|type 三选一 、三选二
; ref|value 二选一 2. setter方法注入(开发推荐) 为需要注入属性提供setter方法 配置 每个注入属性, 对应&property& 元素 3. p名称空间的使用 spring2.5以后,为了简化setter方法属性注入,引用p名称空间的概念,可以将&property& 子元素,简化为&bean&元素属性配置 !! a.在applicationContext.xml 引入p 名称空间 &beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"& b.
简化注入的配置 4. 集合类型的属性注入(了解) Spring 对每个常用集合对象,提供单独元素完成注入
List 对象 ---- &list& 元素
Set 对象 ---- &set& 元素
Map对象 ----&map&元素
Properties 对象 ---- &props& 元素 集合属性的注...
XSS攻击和防御详解
今天在系统定时任务中发现了一个问题,一旦修改系统时间,把系统时间调到当前时间之后(即大于当前时间T1)T2,Timer线程正常执行;如果再将系统时间修改到当前时间之前T3(即T3小于T2),那么Timer线程就会挂起,或者假死,此时不会再执行定时任务,好像线程已经死掉一样。
我们可以从Timer的实现源码中找下原因,从schedule方法进去,一直追踪调试下去,可以找到: public void run() {
mainLoop();
} finally {
// Someone killed this Thread, behave as if Timer cancelled
synchronized(queue) {
newTasksMayBeScheduled =
queue.clear();
// Eliminate obsolete references
} Timer的实现原理原来就是在一个线程中执行mainLoop()函数,再看下mainLoop()函数源码: /**
* The main timer loop.
(See class comment.)
private void mainLoop() {
while (true) {
boolean taskF
synchronized(queue) {
// Wait for queue to become non-empty
while (queue.isEmpty() ...
1.总体业务流程 2.子业务流程 3.页面流程 4.原型 5.UI
tar命令   解包:tar zxvf FileName.tar   打包:tar czvf FileName.tar DirName
gz命令   解压1:gunzip FileName.gz   解压2:gzip -d FileName.gz   压缩:gzip FileName   .tar.gz 和 .tgz   解压:tar zxvf FileName.tar.gz   压缩:tar zcvf FileName.tar.gz DirName
压缩多个文件:tar zcvf FileName.tar.gz DirName1 DirName2 DirName3 ...
bz2命令   解压1:bzip2 -d FileName.bz2   解压2:bunzip2 FileName.bz2   压缩: bzip2 -z FileName   .tar.bz2   解压:tar jxvf FileName.tar.bz2   压缩:tar jcvf FileName.tar.bz2 DirName
bz命令   解压1:bzip2 -d FileName.bz   解压2:bunzip2 FileName.bz   压缩:未知   .tar.bz   解压:tar jxvf FileName.tar.bz
Z命令   解压:uncompress FileName.Z   压缩:compress FileName   .tar.Z   解压:tar Zxvf FileName.tar.Z   压缩:tar Zcvf FileName.tar.Z DirName
zip命令   解压:unzip FileName.zip   压缩:zip FileName.zip DirName...
Groovy运行于JVM之上,然而其对**动态语言**、**函数式编程范式**以及**元编程功能**的加持所带来的表现力和简洁性可以说甩了Java几条街。我们可以利用Groovy的所有动态功能构建高性能的JVM应用、将开发效率提高几个数量级! 这就是我们为什么要学它!
打开ie浏览器的internet选项: 打开高级选项卡; 点击还原高级设置; 点击重置-&删除个人设置-&重置,等待ie重置。
# -*- coding:utf-8 -*-
from selenium import webdriver
from PythonHTTP调用示例.YDMHTTP import YDMHttp
#引用显示等待
from selenium.webdriver.support.ui import WebDriverWait
from PIL import Image
driver = webdriver.Firefox()
driver.get("https://ics.autohome.com.cn/passport/account/login")
# 找到用户名输入
username = WebDriverWait(driver,10).until(lambda driver: driver.find_element_by_id("UserNameDealer"))
username.send_keys("元信汽车")
# 找到密码框输入
password = WebDriverWait(driver, 10).until(lambda driver:driver.find_element_by_id("PasswordDealer"))
password.send_keys("123456")
# 找到验证码标签
captcha = WebDriverWait(driver, 10).until(lambda driver:driver.find_element_by_id("imgValidCodeDealer"))
captcha.screenshot(filename="captcha.png")
# 截图保存的另一个函数
# driver.save_screenshot("page.png")
# left = captcha.location["x"]
# top = captcha.location["y"]
# right = captcha.location["x"] + captcha.size["width"]
# bottom = captcha.location["y"] + captcha.size["height"]
项目地址:http://www.javaz.cn 建站向导 为了方便用户创建站点,系统提供了建站向导功能。 从左侧管理菜单点击建站向导进入。 第一步:创建站点 可以直接设置所属的父站点,填写相关属性后点击保存按钮。 第二步:选择模板 选择模板提供两种方式: 1.选择现有模板,可直接选择现有的模板。 2.创建新模板,如果合适的现有模板,可以直接创建新的模板。 第三步:站点初始化 如果是选择现有模板,并且模板带有初始化数据,系统则会提示是否对此站点进行初始化,推荐进行初始化操作。 第四步:完成
生产销售链条跟踪涉及环节,农产品的供应链是一个非常复杂的过程,涉及多方,农业局、卫生局、药监局、工商局、环保局等多个部门交织其中。
本文简要介绍了操作系统级虚拟化的概念,并简要阐述了实现操作系统虚拟化所用到的技术Namespace及cgroups的原理及使用方法。
简介: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。 摘自官网。。 为什么要使用mybatis,相信看这篇文章的童鞋都有所了解,俺这里就多废话几句。在orm框架中,有轻量级的dbutils与mybatis,重量级的有hibernate。 为什么要选择mybatis呢?原因如下: 1.简单,这个无需我多废话。肯定的啊,使用过的童鞋都知道,在dao层定义一个接口,然后定义一个对应的xml(xml中namespace的值对应接口的全限定名就ok。因为mybatis是通过namespaceid去和接口类进行映射,然后使用动态代理创建接口类的实例方法,参见动态代理).
2.结果集映射,我认为这是mybatis做的最牛的一点,也是选择他最大的一个理由 3.完善的缓存机制(mybatis有1级缓存和2级缓存),1级缓存是基于会话的(Session),2级缓存是基于应用级别。这里不做过多阐述,有兴趣的可以参考文章 http://www.iteye.com/topic/.强大的插件机制。它可以在运行过程中动态...
前端性能优化是一个很宽泛的概念,本书前面的部分也多多少少提到一些前端优化方法,这也是我们一直在关注的一件重要事情。配合各种方式、手段、辅助系统,前端优化的最终目的都是提升用户体验,改善页面性能,我们常常竭尽全力进行前端页面优化,但却忽略了这样做的效果和意义。先不急于探究前端优化具体可以怎样去做,先看看什么是前端性能,应该怎样去了解和评价前端页面的性能。
在前文我们介绍了如何使用Redis或者Caffeine来做缓存。 - [Spring Boot缓存实战 Redis 设置有效时间和自动刷新缓存-2](http://www.jianshu.com/p/e53c1b60c6e1) - [Spring Boot缓存实战 Caffeine](http://www.jianshu.com/p/c72fb0c787fc) # 问题描述: 通过使用redis和Caffeine来做缓存,我们会发现一些问题。 - 如果只使用redis来做缓存我们会有大量的请求到redis,但是每次请求的数据都是一样的,假如这一部分数据就放在应用服务器本地,那么就省去了请求redis的网络开销,请求速度就会快很多。但是使用redis横向扩展很方便。 - 如果只使用Caffeine来做本地缓存,我们的应用服务器的内存是有限,并且单独为了缓存去扩展应用服务器是非常不划算。所以,只使用本地缓存也是有很大局限性的。 至此我们是不是有一个想法了,两个一起用。将热点数据放本地缓存(一级缓存),将非热点数据放redis缓存(二级缓存)。 # 缓存的选择 - 一级缓存:Caffeine是一个一个高性能的 Java 缓存库;使用 Window TinyLfu 回收策略,提供了一个近乎最佳的命中率。[Caffeine 缓存详解](http://www.jianshu.com/p/9a80c662dac4) - 二级缓存:redis是一高性能、高可用的key-value数据库,支持多...
由于众所周知的原因,至今仍有大量生产环境的代码跑在 Python 2.7 之上,在 Python 2 的世界里,并没有一个官方的类型系统实现。那么生产环境的类型系统是如何实现的呢,为什么一定要在在线服务上实现类型系统?下文将针对这两个问题进行深入讨论。
& 随着现在分布式架构越来越盛行,在很多场景下需要使用到分布式锁。分布式锁的实现有很多种,比如基于数据库、 _zookeeper_ 等,本文主要介绍使用 _Redis_ 做分布式锁的方式,并封装成spring boot starter,方便使用 #### 一. _Redis_ 分布式锁的实现以及存在的问题 锁是针对某个资源,保证其访问的互斥性,在实际使用当中,这个资源一般是一个字符串。使用 _Redis_ 实现锁,主要是将资源放到 _Redis_ 当中,利用其原子性,当其他线程访问时,如果 _Redis_ 中已经存在这个资源,就不允许之后的一些操作。spring boot使用 _Redis_ 的操作主要是通过 _RedisTemplate_ 来实现,一般步骤如下: 1. 将锁资源放入 _Redis_ (注意是当key不存在时才能放成功,所以使用 _setIfAbsent_ 方法): ``` redisTemplate.opsForValue().setIfAbsent("key", "value"); ``` 2. 设置过期时间 ``` redisTemplate.expire("key", 30000, TimeUnit.MILLISECONDS); ``` 3. 释放锁 ``` redisTemplate.delete("key"); ``` 一般情况下,这样的实现就能够满足锁的需求了,但是如果在调用 _setIfAbsent_ 方法之后线程挂掉了,即没有给锁定的资源设置过期时间,默认是永不过期,那么这个锁就会一直存在。...
# 前言 在第一章,我们谈到加强数据库的设计层面认知可以让SQL的跑得更快,这章我们就谈论下如何从语言层面来提供优化SQL。如果说有一把钥匙能打开SQL优化的大门,那么解释计划就是这样的一把钥匙。什么是解释计划--数据根据统计信息生成的代码执行计划,了解释计划,理解解释计划就能帮助我们理解代码的瓶颈,问题的所在,有的放矢进行优化。Oracle提供了多种解释计划,hive,mongodb,mysql等数据库都提供相似的工具。在第一章的时候,举例子的时候也用到解释计划,刚好借这个机会也来说说解释计划。 # 如何获取解释计划 ## 方式一:explain plan for 用法) 步骤1:explain plan for "你的SQL" 步骤2:select * from table(dbms_xplan.display()); 例子) ``` explain plan for SELECT * FROM t1, t2 WHERE t1.id = t2.t1_id AND t1.n in(18,19); select * from table(dbms_xplan.display()); PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------- Plan hash value:
------------------------------------------------------------------------------------------- | Id | Operation | Name | ...
当你想快速共享一个目录的时候,这是特别有用的,只需要1行代码即可实现。
根据[JavaScript 2017前端库状况调查](https://stateofjs.com/2017/front-end/results/) **Vue.js**是开发者最想学的前端库。我在这里说明一下我为什么认为这也是和你一起通过使用Vue构建一个简单的App应用程序的原因。 我最近曾与Evan You,Chris Fritz,Sarah Drasner,和Adam Jahr做了一个介绍视频,而现在你可以在http://vuejs.org首页找到它。以下是该视频的文字版本。 # 伟大的JavaScript迁移 如你所知,**JavaScript**在过去的10年中已经成熟了很多,而且服务器端正常运行的大部分代码已经迁移到浏览器中了。随着这变得越来越复杂,框架也变得越来越有组织性。 ![为什么43%前端开发者想学Vue.js](http://upload-images.jianshu.io/upload_images/adf719c305dab3?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 我不打算告诉你为什么一个比另一个更好的,虽然在官方网站有一个详细的比较。 **Vue.js**旨在成为一个平易近人,多功能,高性能,可维护性,可测试的JavaScript框架。Vue的目也是为了进步,意思就是如果你有一个现有的应用程序存在只占一个部分的前端,你需要更多的互动体验那么就可以使用Vue。 或者,您也可以从一开始就在前端构建更多的...
十个实用MySQL函数,你要不要进来领走...
环境搭建: 1.环境准备 1.开发工具: Eclipse IDE(建议使用高一点的版本) 2.JDK版本:JDK1.7 3.项目管理: Maven3.1.1 2.安装步骤 1.安装jdk1.7并配置环境变量(相信大家都会做,这里不再做重复的说明) 2.安装maven:maven安装过程就是解压缩的过程(我已经帮大家解压了, 目录:E:\myprj\jeesz-maven\apache-maven-3.1.1),为了方便大家,这边已经提供了相关的安装包,会在打包的目录下共享。
OCR技术浅探:特征提取(1) 研究背景 关于光学字符识别(Optical Character Recognition, 下面都简称OCR),是指将图像上的文字转化为计算机可编辑的文字内容,众多的研究人员对相关的技术研究已久,也有不少成熟的OCR技术和产品产生,比如汉王OCR、ABBYY FineReader、Tesseract OCR等. 值得一提的是,ABBYY FineReader不仅正确率高(包括对中文的识别),而且还能保留大部分的排版效果,是一个非常强大的OCR商业软件. 然而,在诸多的OCR成品中,除了Tesseract OCR外,其他的都是闭源的、甚至是商业的软件,我们既无法将它们嵌入到我们自己的程序中,也无法对其进行改进. 开源的唯一选择是Google的Tesseract OCR,但它的识别效果不算很好,而且中文识别正确率偏低,有待进一步改进. 综上所述,不管是为了学术研究还是实际应用,都有必要对OCR技术进行探究和改进. 我们队伍将完整的OCR系统分为“特征提取”、“文字定位”、“光学识别”、“语言模型”四个方面,逐步进行解决,最终完成了一个可用的、完整的、用于印刷文字的OCR系统. 该系统可以初步用于电商、微信等平台的图片文字识别,以判断上面信息的真伪. 研究假设 在本文中,我们假设图像的文字部分有以下的特征: 1. 假设...
1.Mysql的连接方式 要了解Mysql的通讯协议,首先需要知道是以哪种连接方式去连接Mysql服务器的;Mysql的主要连接方式包括:Unix套接字,内存共享,命名管道,TCP/IP套接字等。 1.1Unix套接字 在Linux和Unix环境下,可以使用Unix套接字进行Mysql服务器的连接;Unix套接字其实不是一个网络协议,只能在客户端和Mysql服务器在同一台电脑上才可以使用,使用方式也很简单: root@root ~]# mysql -uroot -proot
mysql& show variables like 'socket';
+---------------+---------------------------+
| Variable_name | Value
+---------------+---------------------------+
| /var/lib/mysql/mysql.sock |
+---------------+---------------------------+
1 row in set (0.00 sec) 以上命令查询Unix套接字文件的位置; 1.2命名管道和内存共享 在window系统中客户端和Mysql服务器在同一台电脑上,可以使用命名管道和共享内存的方式, 命名管道开启:–enable-named-pipe=on/ 共享内存开启:–shared-memory=on/off; 1.3TCP/IP套接字 在任何系统下都可以使用的方式,也是使用最多的连接方式,本文要介绍的通讯协议也是基于此连接方式...
字数:1568 阅读时间:10分钟
前言 前面,我们以一个实战案例来详细说明了如何在实际开发中使用JSDuck工具。但是,并不是所有的时候,代码的封装方式都受我们控制的。例如,如果我们使用了现在的几个主流框架AngularJS、React或者Vue的时候,代码的封装方式就必须按照框架定义的方式来构建。当我们的代码中出现了模块、控制器、服务、指令等JSDuck完全不认识的组成部分时,我们该如何使用JSDuck来正确描述我们的代码呢? 那么,下面,笔者就以 AngularJS 为例,来说一说笔者自己的解决方案。
融合思路 解决这个问题,有两种思路。第一种,可以将JSDuck不识别的代码部分映射到工具识别的标签来进行描述。第二种,既然没有现成的标签来描述这些新成员,那我们可以自定义一套标签来描述它们。 第一种方法更方便,不需要额外编码;第二种方法更优雅,但是需要自定义一整套标签。 这里,由于笔者对文档的要求主要是实用,不需要那么完美,而且现在也没有过多的精力来研发一整套标签。所以,笔者选择了第一种解决方案。 第一种方案最核心的地方就是需要确定AngularJS框架给我们的代码带来了哪些新成员,而后如何将这些新成员映射到原有的标签中去。 AngularJS给我...
本文讲解了ThreadPoolExecutor的主要api,线程池调度方式,以及核心方法的实现原理
![](http://upload-images.jianshu.io/upload_images/ccbec67a1618829?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 在Vue.js中一个递归组件调用的是其本身,如: ``` Vue.component('recursive-component', {
template: `
` }); ``` 递归组件常用于在blog上显示注释、嵌套的菜单,或者基本上是父和子相同的类型,尽管具体内容不同。例如: ![](http://upload-images.jianshu.io/upload_images/b37fc10cb0e5186?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 现在给您演示一下如何有效地使用递归组件,我将通过建立一个可扩展/收缩的树形菜单的来一步步进行。 # 数据结构 一个树状UI的递归组件将是一些递归数据结构的可视化表达。在本教程中,我们将使用树状结构,其中每个节点都是一个对象: 1. 一个 **label** 属性。 2. 如果它有子节点,一个 **nodes** 属性,则它是一个或多个节点的数组属性。 与所有树结构一样,它必须有一个根节点,但可以无限深。 ``` let tree = {
label: 'root',
label: 'item1',
label: 'item1.1'
该框架的组成 MVP+Dagger2+RxJava+Retrofit+OkHttp+RxCache+单元测试(Junit+Mockito)
背景 前端世界变化太快,各种模板各种新的技术框架出现。 虽然如此,我们java后端也有模板三宝 jsp freemarker velocity 当然还有一些groovy的模板等等 我司目前仍然有老项目在使用jsp
问题 jsp存在一个比较麻烦的问题在于 无法写通用模板 通常我们会在一个jsp页面include各种header layout 如果当更改整体结构的时候会比较困难 比如现在 大量的js存放在公共reference中 导致js位置在上 而可能阻塞页面render【部分jsp中也有相关script可能对公共js依赖】 现状 用户抱怨前台页面出现太慢 白屏太久 原因 由于上古继承下来的jsp中有两个公共jsp 分别为reference和head 两个jsp都在每一个jsp都被引入 当有公共js时或者css开发都是直接加到reference或者jsp中【项目太久】 当js加载越来越多 由于没有使用现代化的前端开发方式 js的依赖关系太重 js同步加载阻塞html的渲染那么导致出现白屏太久! 方案 使用其他模板引擎 比如velocity或者freemarker===》不太现实 更换代价比较高 每一个页面增加foot.jsp的引用 把大部分的js引入挪到最后 尽量不导致渲染被阻塞
===》cost比较高,以后更改新的前端layout代价也很高 万一某天产品经理抽风想要所有的页面中增加右边栏 增加foo...
序言 以前写过两篇吐槽@红薯 的文章,吐槽一下J2Cache和扒掉红薯的内裤-深入剖析J2Cache,应该说受到了广大Oscer们的一致认同,作为一个站长不好好的搞网站非要搞程序,说什么要做站长里面代码写得最好的,写代码里面网站办的最好的。好吧,这些我都忍了,但是,居然赤果果的点名叫嚣: 作为一个程序员,作为一个连续扒过两次红薯内裤的喷子,为了维护程序员的尊严,为了广大OSCER们不要掉到红薯的坑里,为了世界和平,必须狠狠的砍他。 正文 槽点一:目录结构不规范 上眼首先来找test目录想看看这么测试和使用的,居然找不到,再仔细看居然有个Java类叫 CacheTester 再看resource和src居然不在main目录下,是我已经out了吗? 修改方式,完全按照Java&Maven的开发和代码组织规范老老实实的执行。 槽点二:测试方式不规范 下面就是所谓的测试代码了 /**
package net.oschina.j2
import java.io.BufferedR
import java.io.InputStreamR
* 缓存测试入口
* @author Winter Lau
public class CacheTester {
public static void main(String[] args) {
System.setProper

我要回帖

更多关于 最稳定的win7系统版本 的文章

 

随机推荐