- 博客(49)
- 资源 (5)
- 收藏
- 关注
原创 SQL将关系数据库表转Java对象
最近用SpringBoot重构一个PHP项目,用JPA操作MySQL数据库,由于要维持原来的表结构,应用中要把许多表转化为Java类,一般的ORM框架可以很方便地把Java类映射为关系数据库表,但这里显然是它的逆过程,这个好像没有现成的工具和框架,难道要对着表一个字段一个字段地写?要知道,数据库有几十张表,每张表都有很多字段,一个个写还真得花不少精力,而且手写还很容易出错。最好的办法当然是用程序实现自动转换了,这里我们用SQL来实现这种转换。SQL实现表转Java基本思路就是根据表名查询出列名,用c
2020-06-29 18:33:39 1571 1
原创 RESTful API使用JWT做无状态的身份认证
JWT设计RESTful架构的前后端,天然要求API是无状态的,JWT(JSON Web Token)简单易用,适合在分布式系统中做API无状态的身份认证。jwt由Header、Payload、Signature三部分组成,使用 . 分割开,一个JWT形式:Header.Payload.Signature这三部分分别对应的是加密算法、携带的用户信息、加密后的字符串(签名)。jwt自带签名,能够防止伪
2017-12-30 22:00:44 7734
原创 Nginx代理的多端口实例负载均衡
Nginx作为高性能服务器,除了搭建普通的web服务,也经常用作反向代理或微服务网关。为了实现服务高可用,通常会启动多个服务实例,这样某个实例挂掉并不影响整体的可用性,Nginx可以在多个实例中实现负载均衡,并提供了多种负载均衡策略。本人手头只有一台服务器,所以就在本机多端口开启多个实例,并在这些实例中实现负载均衡。在http配置:upstream backser { server loca
2017-12-30 21:58:33 5607 1
原创 Spring Cloud Zuul微服务网关的API限流
API限流微服务开发中有时需要对API做限流保护,防止网络攻击,比如做一个短信验证码API,限制客户端的请求速率能在一定程度上抵御短信轰炸攻击,降低损失。微服务网关是每个请求的必经入口,非常适合做一些API限流、认证之类的操作,这里有一个基于zuul微服务网关的API限流库: https://github.com/marcosbarbero/spring-cloud-zuul-ratelimit使
2017-09-14 19:32:40 13300 2
原创 Android与服务端使用Https加密通信
Https证书现在网络安全越来越受重视,通用做法是采用https加密通信,使用https需要数字证书,只有合法的证书才能被浏览器、操作系统默认支持,而所谓的合法证书是在CA公司那购买的(原来我们的合法性是花钱从别人那买来的,不得不吐槽这种互联网安全设计真是坑爹),虽然现在也有一些免费CA证书,但申请还是挺麻烦,这里我们使用自己生成的https证书。服务端使用https生成https证书JDK自带的k
2017-09-14 19:27:23 2629
原创 Android APP中卸载其他APP的三种方法
方法一直接使用Intent卸载Uri uri = Uri.fromParts("package", "com.whty.wicity.china", null);Intent intent = new Intent(Intent.ACTION_DELETE, uri);startActivity(intent);这是最简单的方式,调用卸载方法系统会弹出卸载APP对话框,点击确定就会立即卸载,不需
2017-09-12 20:35:12 19674
原创 互联网行业的多样性思考
前不久谷歌有个工程师因为发文涉嫌性别歧视而被解雇,忽然发现硅谷科技公司最近都开始重视员工多样性建设,谷歌还专门任命了多样性副总裁,苹果最近在其总部举行员工多样性庆祝活动(当然不知道他们为什么庆祝)。我认为这确实是一个值得重视的问题,随着互联网的发展,技术人员群体越来越同质化,男性越来越多,女性比例越来越少,大家在一起的话题寥寥无几,人与人之间的交流越发枯燥乏味,技术给人带来便利和财富,但却让人感觉更
2017-09-11 17:25:44 758
原创 JPA使用乐观锁应对高并发
高并发系统的挑战在部署分布式系统时,我们通常把多个微服务部署在内网集群中,再用API网关聚合起来对外提供。为了做负载均衡,通常会对每个微服务都启动多个运行实例,通过注册中心去调用。那么问题来了,因为有多个实例运行都是同一个应用,虽然微服务网关会把每一个请求只转发给一个实例,但当面对高并发时,但它们仍然可能同时操作同一个数据库表,这会不会引发什么问题呢?悲观锁的问题比如电商中常见的商品秒杀系统,在用户
2017-09-10 10:19:59 7873
原创 Spring Cloud与Consul服务发现
Consul服务发现Consul是一个开源的服务注册发现工具,采用Go语言开发,支持多数据中心分布式高可用的服务发现和配置共享,广泛应用在大规模分布式系统中。Spring Cloud原生支持使用Consul做服务注册发现,类似Eureka、ZooKeeper。下载 Consul 软件,对其运行consul agent -dev,启动开发模式在项目中添加依赖compile('org.springfra
2017-09-10 10:06:46 2968
原创 React Native 解决 Could not get BatchedBridge
Windows下做React Native开发,执行react-native run-android后,手机出现红屏提示: Could not get BatchedBridge, make sure your bundle is packaged correctly出现这种情况通常是电脑8081端口被占用导致的,因为React Native会在8081端口启动nodejs服务,手机端调试依赖此服
2017-09-10 10:04:07 1431
原创 浏览器的“核动力”
2013年 8月22日,百度在2013年百度世界大会上推出Web App开发框架Clouda,同时提出了“轻应用”的概念,个人理解,轻应用本质上还是Web App,只是外面加了一层本地应用框架来增强Web App的调用能力,百度推轻应用强调自己的搜索、LBS和语音识别等云服务,轻应用是本地应用向Web App转变的过渡者,更是应用商店分发向应用搜索分发转变的标志。 的确,当应用的数
2013-09-27 16:57:56 748
原创 智能家居与Android@home
智能家居行业具有广阔的市场前景,现在市面上的智能家居产品,大多是通过智能手机控制电动窗帘、家庭音响、灯光控制、安防报警之类的,这些产品需要在Android手机或iPhone上装一个客户端,然后手机通过wifi局域网或3G互联网连接控制端,通过控制端来控制电器的开与关,控制端与电器之间通常采用Zigbee、Z-wave和Bluetooth Low Energy(低功耗蓝牙技术)无线互联,也有采用有线
2013-06-08 13:21:20 1462
原创 自主指令集思考
处理器技术是通信行业的基础,因为涉及国家信息安全战略,政府高度重视发展自主通用处理器,但是在自主处理器指令集ISA体系架构上,我们面临着一个艰难的选择,是采用国外的现有指令集还是发展一套自主的指令集呢? 龙芯选择了现有的MIPS指令集,因为这样就不用花大力气重新构建软硬件生态系统。但事实也并非那么简单,龙芯生态系统依然脆弱,MIPS也并不代表最终的选择。
2013-06-05 23:02:05 1277 1
原创 云端与终端
Android凭借其开放性占领智能手机绝对主导地位,可以看到现在Android的发展正快速走向“云”化,谷歌正利用云计算、物联网和大数据这三大法宝,全面渗透和接管人们的生活。一个 Android设备的激活就带来谷歌一条龙的服务,从浏览器、地图到邮箱、社交,谷歌从云到端全面掌控,用户手机上的信息列表、个性设置都会同步到云端,这样无论是刷机还是换了手机,只要还在 Android平台,一切都能迅速恢
2013-05-29 16:29:51 2829
原创 云端的畅想
我喜欢描绘愿景,云端的未来是一幅美好的愿景,把生活交给云端,以智能手机和可穿戴移动设备为中心,把信息辐射到周围所有的人与物,我们与周围融为一体,这就是物联网、云计算和大数据三者结合所代表的未来方向。 现在我们正处在一个关键的过渡时期,云计算正在加速改变传统的互联网格局,计算和存储资源正在迅速廉价化,市场重心不断的地向云端的在线应用服务转移,平台入口的地位越来越突显。大量的传感器正在
2013-05-26 21:33:29 698
原创 论分布式计算与线程并行
分布式计算与线程并行两者是相差很远的概念,只不过个人觉得它们在设计思想上有几分相似,所以把他们联系起来讨论。 线程并行要依赖于程序员的并行编程思想和并行编程工具,进行并行编程时程序员要处理好线程间的负载均衡和数据同步的问题,这类问题在组建分布式集群中也会遇到。 在多线程并行中,程序员通过编译器把一个程序分割成多个线程,各个线程去匹配多核中的某一个核,让多个核并行
2013-05-16 23:07:02 857
原创 漫谈Android与Chrome OS
谷歌是云计算的先驱和倡导者,从开发Chrome OS就可以看到一个理想主义者的影子。但互联网不是一天就可以“云”化的,于是谷歌就拿Android来作一个过渡品,用来暂时抗衡iOS,现在这个过渡品实在太火了,而谷歌似乎更多的把希望寄托在未来云计算平台Chrome OS上。 现在Android生态圈十分繁盛,这是谷歌的一笔巨大的财富,我想谷歌要做的是想办法
2013-05-15 14:13:25 874
原创 处理器的并行设计思想
并行执行是提升处理器性能的基本思想。 VLIW处理器实现并行依赖于编译器的优化功力,比起 Superscalar,VLIW处理器结构更简单。指令的并行化需要特定的编译器来分析程序的语法树结构,通过代码的行为分析指令的相关性,实现指令的乱序调度。处理器要对循环结构进行展开,软件流水执行。 从底层来看,采用SIMD技术是让数据实现并行,通过让一条指令处理多组数据,减
2013-05-12 23:12:17 986
原创 康宁的玻璃愿景
光纤光学老师对康宁这家公司总是赞不绝口,康宁的确是全球先进玻璃技术的领导者,40多年前康宁生产出世界第一根光纤,直到今天,康宁光纤依然世界领先,但给人印象最深的是康宁对玻璃技术的追求和宏伟的愿景。 对一般人来说,康宁这家公司也并不陌生,现在智能手机这么火爆,广告满天飞,手机广告中随处可见“康宁大猩猩玻璃”字样,即使不太懂也能猜到配备这种玻璃的手机屏幕既光洁又耐用。康宁大猩猩玻璃是
2013-05-11 20:10:38 2796
原创 浅谈云计算客户端
移动互联网将极大推动跨平台WebApp的发展,但WebApp更需要一款强大的云计算客户端才能最大程度地释放潜能。 凭个人理解来下个定义吧,云计算客户端是主要运行在瘦终端上的云计算应用框架,它本身类似于一个轻量级操作系统,为云计算应用创造通用的运行环境。云计算客户端本身是凌驾在ISA之上的,可以直接在任何一套硬件平台上运行,同时它要比现在的操作系统精简许多,它能够让应用通过WebAP
2013-05-09 13:05:24 1138
原创 外行谈“码农”
在中国,程序员被称为“码农”,字面意思就是写代码的农民。 个人理解,码农者,以鼠标键盘为锄,代码为籽,日夜耕作于编译器的一亩三分田里,披星戴月熬红了眼圈,实为辛苦! 因此有人说,程序员是拿命来工作的。听说在国外,程序员工作并非这么辛苦,而且他们是很受尊重的,这可能与一些观念有关。国内对程序员工作量要求很高,而国外软件开发则更注重质量,据说国外一个程序员每月大概写三百行代码,而国
2013-05-06 13:09:44 4651
原创 云计算客户端与操作系统
相信云计算时代的操作系统的角色会越来越轻微,但也并不会被完全移除,未来的操作系统很可能就是一个云计算客户端。 操作系统只是一个客户端程序,跨平台应用才是重头戏。移动互联网的兴起把PC、上网本、平板电脑、智能手机之间的界限变得模糊。其实无论是桌面设备,还是移动便携设备,在互联网面前都应该有着公平的待遇和相同的表现,我们都希望它们统一起来,同一个应用程序可以不加修改地在所有平台、所有设备上流
2013-05-05 21:38:05 867
原创 WPS与金山的开源之路
ISA作为一种天然的壁垒构建并统治着自己的软硬件生态系统,让人想到微软的office和金山WPS的故事。文件格式本身也是一种天然的壁垒。 当年WPS占据中国绝大部分办公软件市场,微软的office进不来是因为有WPS格式的壁垒将其牢牢挡在外面,但微软是一个非常精明的公司,很早就意识到文件格式的作用和自身的优势所在,金山大概没有意识到这点,于是就有了金山与微软的一纸协议。
2013-05-04 23:30:13 4086
原创 处理器微架构学习总结
ISA指令集架构定义了处理器最基本的硬件设计标准,而微架构micro architecture则是ISA在晶体管集成电路的中的具体实现方案。 常见的指令集就那么几种,微架构设计使处理器具有多样性,不同半导体公司有自己的微架构设计。微架构的设计对处理器的性能提升至关重要。高通有自己Krait微架构的骁龙处理器,苹果有自己的A5处理器,三星有自己的Exynos处理器,NVIDA有自己的T
2013-05-02 22:00:40 1150
原创 ISA指令集体系架构
ISA(Instruction Set Architecture)指令集体系架构,是在最底层把硬件结构抽象出来供软件编程控制的,指令集解决了最基本的软件兼容性问题。指令集类型主要分为CISC和RISC两类,Intel的x86是很古老的CISC指令集,虽然有很多弊端但今天依然广泛使用;RISC类型的指令集主要有ARM、MIPS、Power等。 每种广泛采用的指令集背后都有一个强大的生
2013-04-30 22:47:31 6034 1
原创 移动互联网的跨平台时代
“在互联网的光芒下,操作系统只是一套漏洞重重的设备驱动器”,互联网的世界里最讨厌平台间的隔阂,因为在网络面前,一切都应该是平等的,而指令集、操作系统往往制造着平台间的隔阂:x86平台上的软件不能在ARM处理器上运行,windows应用程序也不能直接在Linux平台上运行…… 正是这种平台的壁垒,wintel联盟一统PC江湖N多年,很多公司一直想方设法打破这种平台间的隔离,Sun公司提
2013-04-29 22:51:37 780
原创 多屏互动解决方案
有了多屏互动,以后我们无论在家里还是在教室,办公室及公共场所,都可以对着一群人在大屏幕上分享你手机上的精彩,想想在手机上操控着大屏幕上的内容将有完全不一样的体验。 目前多屏互动技术标准有很多,很多大公司也有针对自家产品线的多屏互动标准,苹果有Airplay,三星有Allshare cast,HTC也有Media Link HD。苹果Airplay
2013-04-27 23:14:47 3254
原创 云计算应用之Dropcam HD
我没用过苹果手机,不过我倒知道在apple store排行榜前列有一个应用叫dropcam HD,现在这个应用也移植到了android平台。 Dropcam HD是一家初创公司开发的一款wifi无线网络摄像头,我为什么要把它和云计算扯上关系呢? 不仅仅是因为它相比传统的IP摄像头更强大更小巧,更容易配置,而是因为它把云计算的潜力很好地发挥到了摄像头里,是很好的云计算应用实例。
2013-04-20 16:03:06 1195
原创 Miracast Wifi Display Standard
This is my first blog written in english,error is inevitable If you are an iPhone or iPad user, probably you know the airplay, apple 's screen streaming and mirroring standard, which allows you
2013-04-19 22:10:50 1299
原创 miracast前景分析
airplay技术虽好,却是苹果封闭的技术,android用户享受不到,但就多屏互动而言,miracast技术与airplay类似,但miracast开放多了,miracast是wifi联盟开放的wifi display技术标准,通过这个标准认证的产品通过wifi直连就可以实现多屏互动。 去年google发布android4.2,这是首个在系统底层支持miracast的androi
2013-04-08 20:27:54 1741
原创 W17pro平板电脑升级心得
W17pro升级到android4.1 W17pro是个刷不死的小强,怎么刷机都没问题,官方升级文件夹里有5个文件,其中factory_update_param.xml 文件里面有四条指令, --update_package=/sdcard/update.zip --wipe_data --wipe_cache --wipe_media
2013-04-01 22:43:49 923
原创 多屏互动技术标准DLNA与Airplay
多屏互动技术从早期的DLNA发展开始, DLNA(Digital Living Network Alliance) 是一个由微软、诺基亚等众多公司组成联盟共同开发的,旨在把移动设备、PC上的多媒体通过wifi无线网分享到电视大屏幕上去的技术标准。 苹果公司一开始也加入DLNA联盟,但后来又退出了, 我想大概是因为苹果是一家追求完美的公司,DLNA技术只支持视频、音乐、照片的分享,却不
2013-03-27 23:23:02 2811
原创 谁是电视的救星
多年前电视机一直是普及率最极高的家电产品,但近些年随着液晶显示技术的进步,传统电视行业经历了极速更新。据艾瑞咨询调查显示,北京地区电视开机率从三年前的70%下降至30%,而且电视观众也开始“老龄化”,年轻人转向个人PC、平板电脑、智能手机等视听平台。近些年随着智能手机、平板电脑的兴起,人们把目光都集中在自己手上的方寸小屏幕上,客厅里的电视机倍受冷落。 电视制造商们当然不希望电视从此
2013-03-25 22:19:46 623
原创 分布式计算
通过把一个任务分割成若干个子任务分发给集群中各个计算节点,各自独立乱序执行,再顺序提交,然后综合得到结果。个人理解,分布式计算是一种宏观的并行计算。 分布式计算实现把众多低性能服务器整合成高性能计算集群,使多个任务并发执行。我个人认为,分布式计算有以下几个关键点: 1、对节点的高度容错能力。 大规模集群的众多节点难免会有个别出现故障,但不能影响整个集群,否则集群无法工作。
2013-03-24 21:35:40 865
原创 一切皆可计算(4)——机器人会比人更聪明吗
1997年在国际象棋“人机大战”最后一局较量中,IBM的超级计算机“深蓝”用了一个小时战胜了国际象棋特级大师卡斯帕罗夫,“深蓝”的下棋程序是很多象棋高手共同设计出来的,虽说这些人的棋艺都不如卡斯帕罗夫,但集中到计算机中就可以达到“智力叠加”的效果。 的确如此,现如今计算机凭借其后台庞大的数据库系统和强大的运算能力,已经变得越来越聪明了。计算机控制的机器人越来越多的取代工业上人的工作
2013-03-21 19:16:02 1013
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人