聚合文章列表
24 浏览

一个BAT中高级Java开发工程师,架构师需要了解的知识

近三年,其实都是在做一个项目,项目是一个大型的多节点部署的项目,做了好几个版本,中间用到了很多技术和框架,也用了一些管理工具和敏捷实践。我这里不是来说项目的,因为最近看了一些招聘信息,结合项目中用到的一些知识和管理措施,作为一个程序员,需要去实时评估下自己当前的能力是否能跟上时代的步伐,所以,总结了下作为一个中高级Java开发人员或架构师,到底需要掌握哪些技能。当然,下述所列都是自己的看法,有兴趣的参考下,没兴趣的,就当看笑话了吧。1、对于Java基础技术体系(包括JVM、类装载机制、多线程并发、IO、网络)有一定的掌握和应用经验。JVM内存分配、JVM垃圾回收;类装载机制;性能优化:反射机制;多线程;IO/NIO;http://developer.51cto.com/ar...网络编程;常用数据结构和相关算法:2、对面向对象的软件开发思想有清晰的认识、熟悉掌握常用的设计模式;设计模式:单例模式;工厂模式;代理模式;模板方法模式;责任链模式等3、熟练掌握目前流行开源框架(spr

软件架构 2018-01-03 发布
28 浏览

随想录(我从ftk学到的)

【声明:版权所有,欢迎转载,请勿用于商业用途。联系信箱:feixiaoxing@163.com】ftk代码最早是由李先静同学开发的,很多地方都可以下载的到,比如这。作为一个gui库,ftk本身有很多值得我们学习的地方。以下就是我自己的一些想法和体会。1、单线程架构之前看minigui的时候,很多地方看不懂。但是ftk阅读起来却比较容易,因为ftk是单线程机制。这种单线程代码一般都是这种模式,while(True){event=Select();process_event();}2、最简单的底层依赖看过ftk代码的同学可能觉得有点奇怪,为什么ftk能支持那么多系统、那么多平台,这其实因为ftk对底层要求很低,一般只需要做到这两点就可以了,a、支持外部事件读取b、支持bitmap更新3、引入事件源机制gui作为基础软件,它的输入一般有这么几个地方:鼠标、键盘、定时器、自定义事件源,其中自定义事件源可以作为pubsub机制由其他线程调用,改进work线程和gui线程的同步策略。ftk下面所有的事件源都是可以动态添加

软件架构 2018-01-03 发布
14 浏览

phpMyAdmin现CSRF漏洞,用户点击链接就会删除数据库表

CSRF(跨站请求伪造)是常见的web漏洞之一,位列2013年OWASPTOP10。之前,研究人员发现并报告了Intel网站的CSRF漏洞,攻击者利用该漏洞可以从已认证用户的购物车中移除商品。在phpMyAdmin中,攻击者利用CSRF可以诱使数据库管理员和开发者执行DROPTABLE这样的数据库操作。该漏洞使攻击者发送一个伪造的URL给受害者,如果认证的用户(受害者)点击了该URL,用户就可能在数据库中执行DROPTABLE这样危险的操作。phpMyAdminphpMyAdmin是一款免费的MySQL和MariaDB数据库管理工具,是PHP中最流行的MySQL数据库管理软件。用于管理WordPress,Joomla和其他CMS的数据库。CSRF漏洞CSRF(跨站伪造请求)是一种挟制用户在当前已登录的web应用程序上执行非本意的操作的攻击方法。攻击者可以创建一个伪造的URL,并诱导登录用户执行一些危险的操作。phpMyAdmin的一个特征是可以用Get请求执行数据库操作,比如DROPTABLEtable_nam

MySQL 1900-01-01 发布
AD 友情赞助
43 浏览

Amoeba实现MySQL数据库读写分离

一环境以及软件版本:系统:CentOSLinuxrelease7.2.1511(Core)mysql:Serverversion:5.6.33Amoeba:amoeba-mysql-3.0.5-RC-distributionJDK:1.7.0_80-b15(Amoeba的运行需要jdk)二安装Amoeba:1下载好所需软件:#lsamoeba-mysql-3.0.5-RC-distribution.zipjdk-7u80-linux-x64.rpm2安装jdk#yum-yinstalljdk-7u80-linux-x64.rpm#java-versionjavaversion"1.7.0_80"Java(TM)SERuntimeEnvironment(build1.7.0_80-b15)JavaHotSpot(TM)64-BitServerVM(build24.80-b11,mixedmode)3解压Amoeba#unzipam

MySQL 2018-01-03 发布
14 浏览

MySQL 5.6.33 主从复制与主主复制

1实验环境#cat/etc/RedHat-releaseCentOSLinuxrelease7.2.1511(Core)A主机:masterIP:192.168.1.138MYSQL:#mysql-VmysqlVer14.14Distrib5.6.33B主机:slaveIP:192.168.1.9MYSQL:#mysql-VmysqlVer14.14Distrib5.6.33注意:mysql数据库的版本,两个数据库版本要相同,或者slave比master版本低!2mysql5.6.33安装:1下载mysql的rpm安装包[root@localhostmysql]#lsMySQL-server-5.6.33-1.el6.x86_64.rpmMySQL-client-5.6.33-1.el6.x86_64.rpmMySQL-devel-5.6.33-1.el6.x86_64.rpm2检查MySQL及相关RPM包,是否安装,如果有安装,

MySQL 2018-01-03 发布
17 浏览

Mysql 索引优化分析

MySQL索引优化分析为什么你写的sql查询慢?为什么你建的索引常失效?通过本章内容,你将学会MySQL性能下降的原因,索引的简介,索引创建的原则,explain命令的使用,以及explain输出字段的意义。助你了解索引,分析索引,使用索引,从而写出更高性能的sql语句。还在等啥子?撸起袖子就是干!案例分析我们先简单了解一下非关系型数据库和关系型数据库的区别。MongoDB是NoSQL中的一种。NoSQL的全称是NotonlySQL,非关系型数据库。它的特点是性能高,扩张性强,模式灵活,在高并发场景表现得尤为突出。但目前它还只是关系型数据库的补充,它在数据的一致性,数据的安全性,查询的复杂性问题上和关系型数据库还存在一定差距。MySQL是关系性数据库中的一种,查询功能强,数据一致性高,数据安全性高,支持二级索引。但性能方面稍逊与MongoDB,特别是百万级别以上的数据,很容易出现查询慢的现象。这时候需要分析查询慢的原因,一般情况下是程序员sql写的烂,或者是没有键索引,或者是索引失效等原因导致的。公司ERP系统数据库主要是Mo

MySQL 2017-08-18 发布
AD 友情赞助
28 浏览
20 浏览

现在做 Web 全景合适吗?

Web全景在以前带宽有限的条件下常常用来作为街景和360°全景图片的查看。它可以给用户一种self-immersive的体验,通过简单的操作,自由的查看周围的物体。随着一些运营商推出大王卡等免流服务,以及4G环境的普及,大流量的应用也逐渐得到推广。比如,我们是否可以将静态低流量的全景图片,变为动态直播的全景视频呢?在一定网速带宽下,是可以实现的。后面,我们来了解一下,如何在Web端实现全景视频。先看一下实例gif:tl;dr;使用three.js实现全景技术UV映射原理简介3D坐标原理和移动控制Web陀螺仪简介iv-panorama简单库介绍基于Three.js全景视频是基于3D空间,而在Web中,能够非常方便触摸到3D空间的技术,就是WebGL。为了简化,这里就直接采用Three.js库。具体的工作原理就是将正在播放的video元素,映射到纹理(texture)空间中,通过UV映射,直接贴到一个球面上。精简代码为:letcamera=newTHREE.Perspe

JavaScript 2018-01-03 发布
17 浏览

初级前端项目加载速度优化

mta2018.01.02早上的页面响应速度数据,目前国内各省份平均加载速度在0.99~2s(虽然没有达到1s内加载,但是以目前业务量级,这样的速度是可以被接受的):前者这是Google的一个评分工具,最开始做优化时用它测了一些页面的分数。后来发现了后面这些Chrome插件。让我困惑的是同样的页面这几个工具给出的结果分数都不一样。手淘的首屏加载速度挺快的,但是跑出来的分数也不高。最终我只是选择性的参考一下工具给出来的建议,忽视了其给出的评分。丁香医生小程序对于小程序,做了优化后得到部门同学的反馈是这样的:具体的数据指标如何呢?虽然目前没有特别好用的性能检测方式(包括官方提供的性能检测工具在内),最终我们组的舒哲同学还是利用官方提供的工具做了一下简单的数据对比,数据如下:在不影响产品需求正常迭代的前提下,两个项目的优化断断续续持续了两周。整体上来说,本次优化的性价比还是较高的。为什么做加载速度优化?直接原因很简单:慢。虽然说页面加载速度并没有达到慢的让人无法忍受,但至少没办法让人说加载很快。既然明知道加载

JavaScript 2018-01-03 发布
16 浏览

AJAX请求真的不安全么?谈谈Web安全与AJAX的关系。

维护人:戴荔春开篇三问AJAX请求真的不安全么?AJAX请求哪里不安全?怎么样让AJAX请求更安全?前言本文包含的内容较多,包括AJAX,CORS,XSS,CSRF等内容,要完整的看完并理解需要付出一定的时间。正文开始…从入坑前端开始,一直到现在,AJAX请求都是以极高的频率重复出现,也解决过不少AJAX中遇到的问题,如跨域调试,错误调试等等。从这种,发现了一个共通现象:那就是每次和后台人员对接时,他们都会提到AJAX请求不安全,请用普通http请求!虽然很多时候,都是经过多翻口舌之争后,最终后台那边妥协,允许部分符合条件的AJAX请求。但是,我却很纠结一个问题:AJAX请求真的不安全么?为什么我自己写后台时并没有发现这个问题?于是,开始准备搜集资料,结合自己已有的认知,整理成一份解决方案,分析AJAX请求真的不安全么?哪里不安全?,后续遇到类似的问题就直接向对方抛出一篇文章大纲AJAX请求真的不安全么AJAX不安全的说法从何而来常见的几种Web前端安全问题CSRF简介CSR

JavaScript 2018-01-03 发布
AD 友情赞助
21 浏览

摘自RisingStack:用Nightwatch.js做Node.js平台端到端测试

用Nightwatch.js做Node.js平台端到端测试什么是Node.js平台的端到端测试?先不要急着看码例。首先我们有必要探讨一下端到端测试到底是什么,然后才能学习如何为Node.js平台项目进行测试。第一,端到端测试是黑箱测试的工具之一。这就意味着写测试的人只审查软件功能,不知道软件内部如何实现,即不看源代码。第二,端到端测试也可以用作用户验收测试(UAT)。用户验收测试是验证这个解决方案对用户来说确实可用的过程,关注的不是拼写之类的小错误,而是那些会使系统瘫痪、或使系统功能无法满足用户需求的问题。“端到端测试也可以用作用户验收测试(UAT)”,见RisingStack点击发推进入Nightwatch.jsNightwatch.js让大家能“在Node.js平台上省时省力地编写运行于Selenium/WebDriver服务器上的端到端测试”。Nightwatch带有以下功能:内置测试运行程序,能控制selenium服务器,支持由供应商提供并运行的selenium主机,比如BrowserStack或Sa

JavaScript 1900-01-01 发布
19 浏览

Three.js 再探 - 写一个跳一跳极简版游戏

最近在离职的空窗期,感觉大把的时间不能用来浪费,就试着仿照微信跳一跳写了一个极简版的游戏那么这个游戏到底是简单到什么程度,差不多就是到下面这个程度吧源码地址:github.com/luosijie/th…由于是第一次尝试写游戏,也不知道套路对不对,大家看着玩就好,不要太认真,不推荐在手机上预览,坑还没有填好下面是实现过程游戏分析首先分析一下一个这样的游戏需要什么元素Three.js必备元素:场景,灯光,摄像机一块又一块的方块会跳的那个,或者叫游戏者以上游戏过程初始一个场景,场景中有一个会跳的那个和2个方块鼠标按下储存能量值鼠标放开,会跳的那个根据能量值和第2个方块的方向跳出去会跳的那个落到方块的上平面时,根据位置判断这一跳是成功还是失败成功后进入下一步,失败就根据位置执行不同的摔倒方式

JavaScript 2018-01-03 发布
21 浏览

Webpack原理-输出文件分析

虽然在前面的章节中你学会了如何使用Webpack,也大致知道其工作原理,可是你想过Webpack输出的bundle.js是什么样子的吗?为什么原来一个个的模块文件被合并成了一个单独的文件?为什么bundle.js能直接运行在浏览器中?本节将解释清楚以上问题。先来看看由1-3安装与使用中最简单的项目构建出的bundle.js文件内容,代码如下:(//webpackBootstrap启动函数//modules即为存放所有模块的数组,数组中的每一个元素都是一个函数function(modules){//安装过的模块都存放在这里面//作用是把已经加载过的模块缓存在内存中,提升性能varinstalledModules={};//去数组中加载一个模块,moduleId为要加载模块在数组中的index//作用和Node.js中require语句相似function__webpack_require__(moduleId){//如果需要加载的模块已经被加载过,就直接从内存缓

JavaScript 2018-01-03 发布
26 浏览

函数计算-处理容器中的网络访问日志

摘要:本文主要介绍如何使用函数计算处理容器服务收集上来的web服务器日志,分析出日志后存入新的日志库。进阶篇介绍了如何基于云市场API解析日志中的IP字段,并将结果作为API对接到API网关当中处理容器日志我的web应用是使用docker进行部署的,容器的日志由fluentd收集到阿里云的SLS,但容器收集到的日志是这样的:可以看到,日志的真正内容都放在了log字段里,不是很便于索引和查看,但有了函数计算,我们就可以把这些日志读出来,然后把log字段提取并处理好,然后写入新的logstore即可。原理见下图(也可以参考阿里云官方文档):首先我们需要在函数计算控制台里面,建立一个函数计算的服务,注意需要和SLSlogstore在同一个地域:建议在这里直接配置高级配置,设置对应的RAM角色,可以在这里直接新建角色,比较方便。为了简单,我们这里的策略模板,授予该角色日志的所有访问权限,待会儿我们可以在RAM控制台重新修改这个权限,对这个角色做更细粒度的权限控制。

JavaScript 2018-01-03 发布
19 浏览

浅谈React Native Flexbox布局

Flex是FlexibleBox的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。基本概念采用Flex布局的元素,称为Flex容器(flexcontainer),简称”容器”。它的所有子元素自动成为容器成员,称为Flex项目(flexitem),简称”项目”。容器默认存在两根轴:水平的主轴(mainaxis)和垂直的交叉轴(crossaxis)。主轴的开始位置(与边框的交叉点)叫做mainstart,结束位置叫做mainend;交叉轴的开始位置叫做crossstart,结束位置叫做crossend。项目默认沿主轴排列。单个项目占据的主轴空间叫做mainsize,占据的交叉轴空间叫做crosssize。容器的属性以下6个属性设置在容器上。flex-directionflex-wrapflex-flowjustify-contentalign-itemsalign-contentflex-direction属性flex-direction属性决定主轴的方向(即项目的排列方向)。{

CSS 2018-01-03 发布
29 浏览

WEEX-EROS | 或许不用 RN ,我们也能开发一个 APP

与其一堆原理,倒不如先直接介绍eros到底能干什么?eros是基于weex的,他可以让前端同学通过vue的语法和api来写出iOS/Android原生应用。学习weex或者eros之前,请您一定要熟练使用vue2进行开发。vue官方文档eros文档(求star)本文会通过eros由来,优缺点评估,开发现状,环境搭建,调试等方面来介绍eros,并会在文章后半部分与开发者一起写一个HelloWorld,来更好的评估eros。eros现状目前eros已有数十个app在开发中和上线的状态,其中有正在开发中的国外应用starLife(100+页面),也有国内正在开发的蜂觅(60+页面),还有已上线的应用都在0-50+页面不等,行业分布于资讯,医疗,招商,购物,政府,办公等。而本木医疗(京医通)技术团队本身也基于weex开发了三个已上线的app,均可在苹果商店和应用宝下载:健康首都(京医通app版,100+页面,很多功能还未开放)本木医疗助手(30+页

vue.js 2018-01-03 发布
17 浏览

vuex 闲置状态重置方案

前言大型单页应用(后面都是指spa),我们往往会通过使用状态管理器vuex去解决组件间状态共享与状态传递等问题。这种应用少则几十个单页,多则上百个单页。随着路由的频繁切换,每个路由对应的vuex中的状态将越来越多。为了做到页面的极致优化,我们需要将那些闲置的状态重置,以减小占用的内存空间。什么状态可以重置vuex强调采用集中式存储管理应用的所有组件的状态,但是我们真把所有的状态都放到store中去处理,你会发现开发起来非常痛苦。这里如果想很好的把控哪些数据需要放到store中去管理,首先要理解vuex是用来解决什么问题的。vuex官网指出是为了解决多个组件共享状态的,那么我们就可以把多个组件的共享状态放到store中去管理,这里的多组件共享对于单页应用很多情况是跨路由的组件。如果store只存储多组件共享的状态,那么我们就没必要去清理vuex中的状态了,因为这些状态随时会被用到。而随着业务场景越来越复杂,很多与后台交互的逻辑也都放到了组件中,这样代码就变得很凌乱,vuex也没有被充分利用。这时我们可以把

vue.js 2018-01-03 发布
17 浏览

基于Vue2.x开发的JSON树

由于项目需要一个解析JSON字符串并生成JSON树的功能,在GitHub上也没有找到合适的组件,因此基于Vue2.X自己写了一个JSON树组件,主要原理是利用Vue的递归组件,进行深度优先的先序遍历。该组件不仅可以将一段不可读的JSON字符串转化为可读的树形结构,同时可用于抓取某一子树的数据。Github源码Github-Page组件在它的模板内可以递归地调用自己。不过,只有当它有name选项时才可以这么做字符串数据美化功能:特定层级数据抓取功能:<tree:parent-data="data":data="item":path="path+(Array.isArray(data)?`[${index}]`:`.${index}`)":path-checked="pathChecked":path-selectable="pathSelectable":selectable-type="selectableType":index="i

vue.js 2018-01-03 发布
AD 友情赞助